Name: series-workflowzs6lq Phase: Failed StartedAt: 2026-07-02 22:44:05 +0000 UTC FinishedAt: 2026-07-02 23:00:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzs6lq[0] Phase: Succeeded StartedAt: 2026-07-02 22:44:05 +0000 UTC FinishedAt: 2026-07-02 23:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzs6lq[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 22:44:05 +0000 UTC FinishedAt: 2026-07-02 23:00:29 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMyMTVmZmNmZGRhODc1NjUzM2YzNmIxYzUxZjA2YjE1NmExNWIzYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIyOjU3OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNcbkBAIC0xNzUsNiAmIzQzOzE3NSw3IEBAIGludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuIFxuIFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZpZHhfZGF0YS1cdTAwM2V1c2Vjb3VudCkpIHtcbiBcdFx0eGFfZXJhc2UoXHUwMDI2c3QtXHUwMDNlaWR4X3hhLCBzdF9pbmRleCk7XG4mIzQzO1x0XHRrZnJlZShpZHhfZGF0YSk7XG4gXHRcdC8qIFdlIGxlYXZlIFBDSSBjb25maWcgc3BhY2UgYXMgd2FzIGJlZm9yZSwgbm8gbWtleSB3aWxsIHJlZmVyIHRvIGl0ICovXG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMjo1NzowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYwppbmRleCA5OTdiZTkxZjBhMTM1YS4uN2NlZGMzNDg3OTBkYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMKQEAgLTE3NSw2ICYjNDM7MTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpCiAKIAlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7aWR4X2RhdGEtJmd0O3VzZWNvdW50KSkgewogCQl4YV9lcmFzZSgmYW1wO3N0LSZndDtpZHhfeGEsIHN0X2luZGV4KTsKJiM0MzsJCWtmcmVlKGlkeF9kYXRhKTsKIAkJLyogV2UgbGVhdmUgUENJIGNvbmZpZyBzcGFjZSBhcyB3YXMgYmVmb3JlLCBubyBta2V5IHdpbGwgcmVmZXIgdG8gaXQgKi8KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTGVhayBGaXggaW4gbWx4NSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNgLCBhbmQgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBmaXg6IGFkZGluZyBhIGBrZnJlZShpZHhfZGF0YSk7YCB0byBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YC4gTWVtb3J5IGxlYWssIGdvb2QgY2F0Y2guIE15IGZpcnN0IHRob3VnaHQsIHRob3VnaCwgaXMgaG93ICphY2Nlc3NpYmxlKiBpcyB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBNZWxsYW5veCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyLCByaWdodD8gU28gdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPwoKR2VuZXJhbGx5LCBJJiMzOTtkIHNheSBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhcmUgYSBwYWluIHRvIGZ1enouIEl0IHVzdWFsbHkgbWVhbnMgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEJ1dCwgSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuLi4gbWF5YmUgdGhhdCBjb3VsZCB3b3JrPyBPciBpcyB0aGVyZSBzb21lIHdheSB0aGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB0aHJvdWdoIGEgdmlydHVhbGl6ZWQgZGV2aWNlPyBUaGUgbWx4NSBjb2RlIGJhc2UgaXMgcHJldHR5IHNpZ25pZmljYW50LCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0ICpjYW4qIGJlIHJlYWNoZWQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBtbHg1IGRyaXZlciBjYW4gYmUgZnV6emVkLCBnaXZlbiBpdHMgY3VycmVudCBzdGF0ZS4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhpcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBmdW5jdGlvbiBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9zdF9kZWFsbG9jX2luZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE4NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkFuYWx5emluZyB0aGUgbWx4NV9zdF9kZWFsbG9jX2luZGV4IEZ1bmN0aW9uIENhbGxzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2Ygd2hhdGV2ZXIgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgbWFuYWdlcy4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGZpbmQgZXZlcnl3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBUaGF0IHdpbGwgdGVsbCBtZSB3aG8mIzM5O3MgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgd2hhdGV2ZXIgcmVzb3VyY2VzIHRoaXMgaW5kZXggcmVwcmVzZW50cywgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgZGVidWdnaW5nIG9yIG9wdGltaXphdGlvbiBsYXRlciBvbi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9zdF9kZWFsbG9jX2luZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ1LVx0aWYgKGliZG1haC1cdTAwM2V2YWxpZF9maWVsZHMgXHUwMDI2IEJJVChJQl9ETUFIX0NQVV9JRF9FWElTVFMpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjQ2Olx0XHRyZXR1cm4gbWx4NV9zdF9kZWFsbG9jX2luZGV4KG1kZXYsIGRtYWgtXHUwMDNlc3RfaW5kZXgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz0xNTU9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9hbGxvY19pbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE1NzppbnQgbWx4NV9zdF9kZWFsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBzdF9pbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xODUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2RlYWxsb2NfaW5kZXgpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg1PWludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExODYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpO1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExODgtI2Vsc2VcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg5PXN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5NC19XG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE5NTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVhbGxvY2F0aW5nIERNQUggaW4gYSBWaXJ0dWFsaXplZCBJbmZpbmliYW5kIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgZXZlbiAqaGFwcGVuKiBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyYjMzQ7IFRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciBpcyBub3RvcmlvdXNseSBoYXJkd2FyZS1kZXBlbmRlbnQuIEl0IG5lZWRzIHRoZSByZWFsIHNpbGljb24gdG8gaW5pdGlhbGl6ZS4gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZnVsbCBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgbWx4NSDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyByb2FkYmxvY2suCgpCdXQgdGhlbiBJIHJlY2FsbCDigJMgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHZpcnR1YWwgZGV2aWNlIGNhcGFiaWxpdGllcyEgVVNCIHdpdGggdmhjaSwgd2lmaSB2aWEgbWFjODAyMTFfaHdzaW0sIHZjYW4gZm9yIENBTi4uLiBzbyB3aGF0IGFib3V0IG1seDU/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBub3RoaW5nIHNwZWNpZmljIHRvIG1seDUsIHdoaWNoIGlzIGEgbGV0ZG93bi4KCldhaXQsIHRoZXJlICppcyogYSBQQ0kgZnV6emVyIGluIHN5emthbGxlci4gSG1tLCBidXQgaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgc2hhbGxvdy4gSXQgZ2VuZXJhbGx5IHdvbiYjMzk7dCBkaWcgZG93biBpbnRvIGRldmljZS1zcGVjaWZpYyBjb2RlIHVubGVzcyBpdCYjMzk7cyBiZWVuIGV4cGxpY2l0bHkgdGFyZ2V0ZWQuIFRoaXMgaXMgdW5saWtlbHkgdG8gZ2V0IHVzIGZhci4KCkFoLCByaWdodCEgYG1seDVfaWJfZGVhbGxvY19kbWFoYCBpcyBwYXJ0IG9mIHRoZSBJbmZpbmliYW5kIHN0YWNrLiBPa2F5LCBzbyB0aGF0IGNoYW5nZXMgdGhpbmdzLiBDYW4gd2UgaW50ZXJhY3Qgd2l0aCBJbmZpbmliYW5kIHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcz8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBuZWVkIHRvIGV4cGxvcmUgdGhlIHBvc3NpYmlsaXR5IG9mIG1vY2tpbmcgb3Igc2ltdWxhdGluZyB0aGUgbWx4NSBjb21wb25lbnRzIHN1ZmZpY2llbnRseSB0byByZWFjaCB0aGlzIGZ1bmN0aW9uIGFuZCB0cmlnZ2VyIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYSBmZWFzaWJsZSB3YXkgdG8gbW9jayBtbHg1IGZvciBvdXIgcHVycG9zZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjMyMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTg9c3RydWN0IG1seDVfZG1hX3Bvb2wge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYxLVx0c3RydWN0IGxpc3RfaGVhZCBwYWdlX2xpc3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02My1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTc5PXN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjkwOnN0YXRpYyB2b2lkICptbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTEtXHRcdFx0XHRcdCAgIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTEwOT1zdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2Rlc3Ryb3koc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE1OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqbWx4NV9kbWFfcG9vbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNi1cdFx0XHRcdFx0XHQgIGludCBub2RlLCB1OCBibG9ja19zaGlmdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0xMzM9bWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2MzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY0LVx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MjgzPXN0YXRpYyBzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDc9bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMDk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzEwLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzM2PURFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzODp2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTk6aW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzYwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4OS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyNT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI3OnZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ0NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDQ3OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ4LVx0XHRcdFx0XHRcdCBpbnQgbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00NzY9c3RhdGljIGludCBtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIoc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMTppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUyOD1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI4Mz1zdGF0aWMgdm9pZCBwb2xsX3RpbWVvdXQoc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjg0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyODU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gY29udGFpbmVyX29mKGVudC1cdTAwM2VjbWQsIHN0cnVjdCBtbHg1X2NvcmVfZGV2LCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI4Ni1cdHU2NCBjbWRfdG9fbXMgPSBtbHg1X3RvdXRfbXMoZGV2LCBDTUQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0zMzE9c3RhdGljIHZvaWQgZHVtcF9idWYodm9pZCAqYnVmLCBpbnQgc2l6ZSwgaW50IGRhdGFfb25seSwgaW50IG9mZnNldCwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjM0NzpzdGF0aWMgaW50IG1seDVfaW50ZXJuYWxfZXJyX3JldF92YWx1ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3AsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ4LVx0XHRcdFx0ICAgICAgIHUzMiAqc3luZCwgdTggKnN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9NzkzPXN0YXRpYyBpbnQgY21kX3N0YXR1c190b19lcnIodTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODE3OnZvaWQgbWx4NV9jbWRfb3V0X2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9ODI3PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfb3V0X2Vycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjgyOTpzdGF0aWMgdm9pZCBjbWRfc3RhdHVzX3ByaW50KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg0NTppbnQgbWx4NV9jbWRfY2hlY2soc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGVyciwgdm9pZCAqaW4sIHZvaWQgKm91dClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz04NzI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9jaGVjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg3NDpzdGF0aWMgdm9pZCBkdW1wX2NvbW1hbmQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NzUtXHRcdFx0IHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50LCBpbnQgaW5wdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTkzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5MzI6c3RhdGljIHZvaWQgbWx4NV9jbWRfY29tcF9oYW5kbGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU2NCB2ZWMsIGJvb2wgZm9yY2VkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTM0PXN0YXRpYyB2b2lkIGNiX3RpbWVvdXRfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTkzOS1cdFx0XHRcdFx0XHQgICAgIGNiX3RpbWVvdXRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTQwOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihlbnQtXHUwMDNlY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NDEtXHRcdFx0XHRcdFx0IGNtZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjE6c3RhdGljIHZvaWQgZnJlZV9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY21kX21zZyAqbXNnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NjMtXHRcdFx0ICAgICAgc3RydWN0IG1seDVfY21kX21zZyAqbXNnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTY1PXN0YXRpYyBib29sIG9wY29kZV9hbGxvd2VkKHN0cnVjdCBtbHg1X2NtZCAqY21kLCB1MTYgb3Bjb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTczOmJvb2wgbWx4NV9jbWRfaXNfZG93bihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTk4MD1zdGF0aWMgdm9pZCBjbWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg1LVx0c3RydWN0IG1seDVfY21kX2xheW91dCAqbGF5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk4NjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg3LVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTk0Olx0ZGV2ID0gY29udGFpbmVyX29mKGNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTk1LVx0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMobWx4NV90b3V0X21zKGRldiwgQ01EKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTExNDA9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE0NDpzdGF0aWMgdm9pZCB3YWl0X2Z1bmNfaGFuZGxlX2V4ZWNfdGltZW91dChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNDUtXHRcdFx0XHRcdCAgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE2OTpzdGF0aWMgaW50IHdhaXRfZnVuYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTcwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE2OnN0YXRpYyBib29sIG1seDVfY21kX2FsbF9zdGFsbGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEyNTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTI1OTpzdGF0aWMgaW50IG1seDVfY21kX2ludm9rZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICppbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjYwLVx0XHRcdCAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTMzNz1zdGF0aWMgc3NpemVfdCBkYmdfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEzMzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEzNDA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTM0MS1cdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXHUwMDI2ZGV2LVx1MDAzZWNtZC5kYmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE0MDQ9c3RhdGljIGludCBtbHg1X2NvcHlfZnJvbV9tc2codm9pZCAqdG8sIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmZyb20sIGludCBzaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0Mzc6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tYWlsYm94ICphbGxvY19jbWRfYm94KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQzOC1cdFx0XHRcdFx0ICAgICAgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTQ1ODpzdGF0aWMgdm9pZCBmcmVlX2NtZF9ib3goc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDU5LVx0XHRcdCBzdHJ1Y3QgbWx4NV9jbWRfbWFpbGJveCAqbWFpbGJveClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDY1OnN0YXRpYyBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptbHg1X2FsbG9jX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDY2LVx0XHRcdFx0XHQgICAgICAgZ2ZwX3QgZmxhZ3MsIGludCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1MTI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTEzLVx0XHRcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTUyNj1zdGF0aWMgc3NpemVfdCBkYXRhX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTI4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTI5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MzAtXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTUwPXN0YXRpYyBzc2l6ZV90IGRhdGFfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTUzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1NTQtXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTcwPXN0YXRpYyBzc2l6ZV90IG91dGxlbl9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1NzM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3NC1cdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXHUwMDI2ZGV2LVx1MDAzZWNtZC5kYmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE1ODU9c3RhdGljIHNzaXplX3Qgb3V0bGVuX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTg3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTg4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1ODktXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNjIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG9sZm9wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjI4OnN0YXRpYyB2b2lkIHNldF93cW5hbWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjM2OnN0YXRpYyB2b2lkIGNsZWFuX2RlYnVnX2ZpbGVzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY0NjpzdGF0aWMgdm9pZCBjcmVhdGVfZGVidWdmc19maWxlcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2NTk6dm9pZCBtbHg1X2NtZF9hbGxvd2VkX29wY29kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2NzU6c3RhdGljIHZvaWQgbWx4NV9jbWRfY2hhbmdlX21vZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTY5MT1zdGF0aWMgaW50IGNtZF9jb21wX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2OTQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTUtXHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY5OC1cdGNtZCA9IG1seDVfbmJfY29mKG5iLCBzdHJ1Y3QgbWx4NV9jbWQsIG5iKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjk5Olx0ZGV2ID0gY29udGFpbmVyX29mKGNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcwMC1cdGVxZSA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MDgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MDk6dm9pZCBtbHg1X2NtZF91c2VfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTcxNjp2b2lkIG1seDVfY21kX3VzZV9wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTcyMjpzdGF0aWMgdm9pZCBmcmVlX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTczNTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jb21wX2hhbmRsZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTY0IHZlYywgYm9vbCBmb3JjZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTczNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTgzOTpzdGF0aWMgdm9pZCBtbHg1X2NtZF90cmlnZ2VyX2NvbXBsZXRpb25zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg3NDp2b2lkIG1seDVfY21kX2ZsdXNoKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg5NzpzdGF0aWMgc3RydWN0IG1seDVfY21kX21zZyAqYWxsb2NfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBpbl9zaXplLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4OTgtXHRcdFx0XHQgICAgICBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE5MzU9c3RhdGljIGludCBpc19tYW5hZ2VfcGFnZXModm9pZCAqaW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk0MDpzdGF0aWMgYm9vbCBtbHg1X2hhc19wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NDU6c3RhdGljIGJvb2wgbWx4NV9jbWRfaXNfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ2LVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk1NTpzdGF0aWMgaW50IGNtZF9leGVjKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTYtXHRcdCAgICBpbnQgb3V0X3NpemUsIG1seDVfY21kX2Nia190IGNhbGxiYWNrLCB2b2lkICpjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwMzY6c3RhdGljIHZvaWQgbWx4NV9jbWRfZXJyX3RyYWNlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcGNvZGUsIHUxNiBvcF9tb2QsIHZvaWQgKm91dClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMDQ2OnN0YXRpYyB2b2lkIGNtZF9zdGF0dXNfbG9nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcGNvZGUsIHU4IHN0YXR1cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDQ3LVx0XHRcdCAgIHUzMiBzeW5kcm9tZSwgaW50IGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA3MS0vKiBwcmVzZXJ2ZSAtRVJFTU9URUlPIGZvciBvdXRib3guc3RhdHVzICE9IE9LLCBvdGhlcndpc2UgcmV0dXJuIGVyciBhcyBpcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNzI6c3RhdGljIGludCBjbWRfc3RhdHVzX2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgZXJyLCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjEwNzppbnQgbWx4NV9jbWRfZG8oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqaW4sIGludCBpbl9zaXplLCB2b2lkICpvdXQsIGludCBvdXRfc2l6ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTA4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjExNT1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2RvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTI5OmludCBtbHg1X2NtZF9leGVjKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMzAtXHRcdCAgaW50IG91dF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTM2PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfZXhlYyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE1MjppbnQgbWx4NV9jbWRfZXhlY19wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTUzLVx0XHRcdCAgdm9pZCAqb3V0LCBpbnQgb3V0X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE2NDp2b2lkIG1seDVfY21kX2luaXRfYXN5bmNfY3R4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTg5PXN0YXRpYyB2b2lkIG1seDVfY21kX2V4ZWNfY2JfaGFuZGxlcihpbnQgc3RhdHVzLCB2b2lkICpfd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5Mi1cdHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxOTM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxOTQtXHRib29sIHRocm90dGxlX2xvY2tlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjIxND1pbnQgbWx4NV9jbWRfZXhlY19jYihzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCwgdm9pZCAqaW4sIGludCBpbl9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMjE4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGN0eC1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjIxOS1cdHUxNiB1aWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIyNjg9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX2NiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIyNzA6aW50IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjI3MS1cdFx0XHRcdCAgICAgc3RydWN0IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzX2F0dHIgKmF0dHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIyODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjI5MDppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIyOTEtXHRcdFx0ICAgICAgc3RydWN0IG1seDVfY21kX2FsaWFzX29ial9jcmVhdGVfYXR0ciAqYWxpYXNfYXR0cixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzI2OmludCBtbHg1X2NtZF9hbGlhc19vYmpfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgb2JqX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzMjctXHRcdFx0ICAgICAgIHUxNiBvYmpfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzM5OnN0YXRpYyB2b2lkIGRlc3Ryb3lfbXNnX2NhY2hlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIzNTk9c3RhdGljIHVuc2lnbmVkIGNtZF9jYWNoZV9lbnRfc2l6ZVtNTFg1X05VTV9DT01NQU5EX0NBQ0hFU10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM2NzpzdGF0aWMgdm9pZCBjcmVhdGVfbXNnX2NhY2hlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5MzpzdGF0aWMgaW50IGFsbG9jX2NtZF9wYWdlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZCAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MjI6c3RhdGljIHZvaWQgZnJlZV9jbWRfcGFnZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWQgKmNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDI4OnN0YXRpYyB1MTYgY21kaWZfcmV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQzMzppbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0NTQ6dm9pZCBtbHg1X2NtZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQ2MjppbnQgbWx4NV9jbWRfZW5hYmxlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU0ODp2b2lkIG1seDVfY21kX2Rpc2FibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNTYwOnZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2MS1cdFx0XHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU2NjppbnQgbWx4NV9jbWRfYWRkX3ByaXZpbGVnZWRfdWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiB1aWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI1NzE9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9hZGRfcHJpdmlsZWdlZF91aWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU3Mzp2b2lkIG1seDVfY21kX3JlbW92ZV9wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgdWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTEwMD1zdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwNy0vKiBDYWxsZXJzIG11c3QgdmVyaWZ5IG91dGJveCBzdGF0dXMgaW4gY2FzZSBvZiBlcnIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwODppbnQgbWx4NV9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xMDktXHRcdCAgIHUzMiAqaW4sIGludCBpbmxlbiwgdTMyICpvdXQsIGludCBvdXRsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTc4PUVYUE9SVF9TWU1CT0wobWx4NV9jcmVhdGVfY3EpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4MC0vKiBvdWJveCBpcyBjaGVja2VkIGFuZCBlcnIgdmFsIGlzIG5vcm1hbGl6ZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjE4MTppbnQgbWx4NV9jb3JlX2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4Mi1cdFx0XHR1MzIgKmluLCBpbnQgaW5sZW4sIHUzMiAqb3V0LCBpbnQgb3V0bGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTE4OD1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9jcmVhdGVfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTkwOmludCBtbHg1X2NvcmVfZGVzdHJveV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MjEzPUVYUE9SVF9TWU1CT0wobWx4NV9jb3JlX2Rlc3Ryb3lfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MjE1OmludCBtbHg1X2NvcmVfcXVlcnlfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0yMTYtXHRcdCAgICAgICB1MzIgKm91dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMjQ9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfcXVlcnlfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MjI2OmludCBtbHg1X2NvcmVfbW9kaWZ5X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI3LVx0XHRcdHUzMiAqaW4sIGludCBpbmxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMzU9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfbW9kaWZ5X2NxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjIzNzppbnQgbWx4NV9jb3JlX21vZGlmeV9jcV9tb2RlcmF0aW9uKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0yMzgtXHRcdFx0XHQgICBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTk2PXZvaWQgbWx4NV91bnJlZ2lzdGVyX2RlYnVnZnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTAxOnN0cnVjdCBkZW50cnkgKm1seDVfZGVidWdmc19nZXRfZGV2X3Jvb3Qoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTAyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTEwNT1FWFBPUlRfU1lNQk9MKG1seDVfZGVidWdmc19nZXRfZGV2X3Jvb3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjEwNzp2b2lkIG1seDVfcXBfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTEwOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz0xMTE9RVhQT1JUX1NZTUJPTChtbHg1X3FwX2RlYnVnZnNfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTEzOnZvaWQgbWx4NV9xcF9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTExNz1FWFBPUlRfU1lNQk9MKG1seDVfcXBfZGVidWdmc19jbGVhbnVwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMTk6dm9pZCBtbHg1X2VxX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMjQ6dm9pZCBtbHg1X2VxX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MjAyPW1seDVfY21kaWZfYWxsb2Nfc3RhdHMoc3RydWN0IHhhcnJheSAqc3RhdHNfeGEsIGludCBvcGNvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjIxOTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTIyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI1OTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3MDp2b2lkIG1seDVfY3FfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3NTp2b2lkIG1seDVfY3FfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI4MDp2b2lkIG1seDVfcGFnZXNfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5NDp2b2lkIG1seDVfcGFnZXNfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5OTp2b2lkIG1seDVfcGFnZXNfYnlfZnVuY190eXBlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzozMjM6dm9pZCBtbHg1X3BhZ2VzX2J5X2Z1bmNfdHlwZV9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MzM3OnN0YXRpYyB1NjQgcXBfcmVhZF9maWVsZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX3FwICpxcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzM4LVx0XHRcdCBpbnQgaW5kZXgsIGludCAqaXNfc3RyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0MTc6c3RhdGljIHU2NCBlcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDE4LVx0XHRcdCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjQ1NzpzdGF0aWMgdTY0IGNxX3JlYWRfZmllbGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTQ1OC1cdFx0XHQgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjUzODpzdGF0aWMgaW50IGFkZF9yZXNfdHJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIGRiZ19yc2NfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzktXHRcdFx0c3RydWN0IGRlbnRyeSAqcm9vdCwgc3RydWN0IG1seDVfcnNjX2RlYnVnICoqZGJnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTY2PXN0YXRpYyB2b2lkIHJlbV9yZXNfdHJlZShzdHJ1Y3QgbWx4NV9yc2NfZGVidWcgKmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjU3MjppbnQgbWx4NV9kZWJ1Z19xcF9hZGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01ODc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX2FkZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTg5OnZvaWQgbWx4NV9kZWJ1Z19xcF9yZW1vdmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01OTc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX3JlbW92ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTk5OmludCBtbHg1X2RlYnVnX2VxX2FkZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lcSAqZXEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEyMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRGV2aWNlIERyaXZlciBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiB0aGUgYG1seDVfY29yZV9kZXZgIHN0cnVjdHVyZSDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWx4NSBkZXZpY2UsIHJpZ2h0PyBOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGRyaXZlciBoYXZlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24/IE5vLCBpdCYjMzk7cyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gT2theSwgbmV4dCBJIHRoaW5rLCBTeXprYWxsZXIsIHRoZSBzeXN0ZW0gY2FsbCBmdXp6ZXIsIGhhcyBhIFBDSSBmdXp6ZXIuLi4gaW50cmlndWluZy4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgUENJIGZ1enplciB0byByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seDVfc3RfZGVhbGxvY19pbmRleGA/IEl0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuCgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGEgcGF0aCBmcm9tIFBDSSBwcm9iZSBvciBzaW1pbGFyIHRvIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgdGhhdCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBpcyBjYWxsZWQgZnJvbSBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgLiBBaGEsIGFuZCBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGxpdmVzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmNgLi4uIEdvb2QsIHdlJiMzOTtyZSBnZXR0aW5nIHdhcm1lciEgTm93IGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24gaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2liX2RlYWxsb2NfZG1haCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9MTM9c3RhdGljIGludCBtbHg1X2liX2FsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6Mzk6c3RhdGljIGludCBtbHg1X2liX2RlYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQwLVx0XHRcdFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTUxPWNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG1seDVfaWJfZGV2X2RtYWhfb3BzID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVx0LmFsbG9jX2RtYWggPSBtbHg1X2liX2FsbG9jX2RtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NTM6XHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNTQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MDUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJQiBEZXZpY2UgRGVhbGxvY2F0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkZWFsbG9jX2RtYWhgLCBhbiBJQiBkZXZpY2Ugb3BlcmF0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBmYWN0IHRoYXQgSW5maW5pYmFuZCBoYXMgdGhpbmdzIGxpa2UgYHJkbWFfcnhlYCAoYSBSb0NFIHYyIHNvZnR3YXJlIGVtdWxhdG9yKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIHdheS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBtbHg1X2liYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBNZWxsYW5veCBDb25uZWN0WC00JiM0MzsgaGFyZHdhcmUuCgpUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIGBtbHg1X2liYCBkcml2ZXIgKndvbiYjMzk7dCogaW5pdGlhbGl6ZSwgYW5kIGNvbnNlcXVlbnRseSwgaXRzIElCIGRldmljZSBvcGVyYXRpb25zLCBpbmNsdWRpbmcgYGRlYWxsb2NfZG1haGAsIHdvbiYjMzk7dCBnZXQgcmVnaXN0ZXJlZC4gU28sIHRoZSBkaXJlY3QgcGF0aCBzZWVtcyBibG9ja2VkLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIENvdWxkIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMsIGJlIGxldmVyYWdlZCBoZXJlPyBDb3VsZCBpdCBzaW11bGF0ZSAqZW5vdWdoKiBvZiB0aGUgbWx4NSBoYXJkd2FyZSB0byB0cmljayB0aGUgc3lzdGVtIGludG8gcmVnaXN0ZXJpbmcgdGhlIElCIGRldmljZT8KCkhvd2V2ZXIsIHRoZSBtbHg1IGRyaXZlciBpcyBub3RvcmlvdXNseSBjb21wbGV4LiBJdCB0YWxrcyB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kIHF1ZXVlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS4gU2ltdWxhdGluZyB0aGUgcmVxdWlyZWQgZmlybXdhcmUgcmVzcG9uc2VzIGZvciBgbWx4NWAgdG8gc3VjY2Vzc2Z1bGx5IHByb2JlIGFuZCByZWdpc3RlciB0aGUgSUIgZGV2aWNlIGlzIHByYWN0aWNhbGx5IGltcG9zc2libGUgd2l0aCBhIGdlbmVyaWMgUENJIGZ1enplci4gSXQmIzM5O3MganVzdCB0b28gbXVjaCBkZXRhaWwuCgpTbywgcmVhbGlzdGljYWxseSwgYSBnZW5lcmljIGFwcHJvYWNoIGlzIGEgZGVhZCBlbmQuIEkgbmVlZCB0byBwaXZvdC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc3BlY2lhbGl6ZWQgbWx4NSBmdXp6ZXIgb3IgbW9jayBmcmFtZXdvcmsgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBrZXJuZWwuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyB0ZXN0IHNldHVwIG9yIGluc3RydW1lbnRhdGlvbiBJIGNhbiBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3RpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weT0zNT1CYW5kd2lkdGggRGlzdHJpYnV0aW9uOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00MS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTo0MjpIYXJkd2FyZS1TcGVjaWZpYyBCZWhhdmlvciAobWx4NSk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTo0NDptbHg1IGhhcmR3YXJlIGVuZm9yY2VzIHRyYWZmaWMgY2xhc3Mgc2VwYXJhdGlvbiBieSBlbnN1cmluZyB0aGF0IGVhY2ggdHJhbnNtaXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00NS1xdWV1ZSAoU1EpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBUQy4gSWYgYSBwYWNrZXQgaXMgc2VudCBvbiBhIHF1ZXVlIHRoYXRcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk9Mzg4PWRlZiB0ZXN0X25vX3RjX21hcHBpbmdfYmFuZHdpZHRoKGNmZyk6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5My0gICAgZmFpbF9id19tc2cgPSBcJiMzNDtCYW5kd2lkdGggbWF0Y2hlZCAyMC84MCBzcGxpdCB3aXRob3V0IFRDIG1hcHBpbmdcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTQ6ICAgIGlzX21seDUgPSBcJiMzNDtkcml2ZXI6IG1seDVcJiMzNDsgaW4gZXRodG9vbChmXCYjMzQ7LWkge2NmZy5pZm5hbWV9XCYjMzQ7KS5zdGRvdXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS0zOTUtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk2LSAgICBpZiBydW5fYmFuZHdpZHRoX2Rpc3RyaWJ1dGlvbl90ZXN0KGNmZywgc2V0X3RjX21hcHBpbmc9RmFsc2UpOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjM5NzogICAgICAgIGlmIGlzX21seDU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk4LSAgICAgICAgICAgIHJhaXNlIEtzZnRYZmFpbEV4KGZhaWxfYndfbXNnKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5OS0gICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoZmFpbF9id19tc2cpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDAwOiAgICBpZiBpc19tbHg1OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQwMTogICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoXCYjMzQ7bWx4NSBiZWhhdmlvciBjaGFuZ2VkOlwmIzM0OyAmIzQzOyBwYXNzX2J3X21zZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00MDItICAgIGtzZnRfcHIocGFzc19id19tc2cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjMwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIG5vIGltbWVkaWF0ZSBsZWFkcyBmcm9tIHRoZSBleGlzdGluZyBtb2Nrcy4gQnV0IHdhaXQsIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlOiBzeXprYWxsZXIgb2ZmZXJzIGBzeXpfbW91bnRfaW1hZ2VgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIGZvciBtb3VudGluZyBmaWxlc3lzdGVtcyBhbmQgbWFuaXB1bGF0aW5nIFVTQiBkZXZpY2VzLCByZXNwZWN0aXZlbHkuIEZvciBQQ0kgaW50ZXJhY3Rpb25zLCBJJiMzOTttIGFscmVhZHkgZmFtaWxpYXIgd2l0aCBgc3l6X3BjaV9kZXZpY2VgIG9yIHNpbWlsYXIgZ2VuZXJpYyBjYWxscyB3aXRoaW4gc3l6a2FsbGVyLCBidXQgdGhleSYjMzk7cmUgbm90IGFsd2F5cyBzcGVjaWZpYyBlbm91Z2guCgpTbywgdGhlIGJ1cm5pbmcgcXVlc3Rpb24gaXM6IGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFjdHVhbGx5IHJlYWNoYWJsZT8gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhhbWluZSBgbWx4NV9zdF9hbGxvY19pbmRleGAuIElmIEkgY2FuIHRyYWNlIHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyB1c2VkLCBpdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGhvdyB3ZSBjYW4gdHJpZ2dlciBgZGVhbGxvY19pbmRleGAgb3IgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgcG90ZW50aWFsIGJ1Zy4gVGhpcyBpcyBhIGNsYXNzaWMgZGVwZW5kZW5jeSBhbmFseXNpcyBhcHByb2FjaC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfYWxsb2NfaW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTI5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlx0XHRlcnIgPSBtbHg1X3N0X2FsbG9jX2luZGV4KG1kZXYsIGliZG1haC1cdTAwM2VtZW1fdHlwZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zMS1cdFx0XHRcdFx0ICBpYmRtYWgtXHUwMDNlY3B1X2lkLCBcdTAwMjZkbWFoLVx1MDAzZXN0X2luZGV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9ODM9dm9pZCBtbHg1X3N0X2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6OTU6aW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSB0cGhfbWVtX3R5cGUgbWVtX3R5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4NC0jaWZkZWYgQ09ORklHX1BDSUVfVFBIXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg3PWludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4OTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5MC1cdFx0XHRcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMxNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgVW5yZWFjaGFibGU6IEEgU3l6a2FsbGVyIE15c3RlcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRtYWguY2AgZmlsZSBpbiB0aGUgSW5maW5pYmFuZCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBtbHg1YCBoYXJkd2FyZSBkaXJlY3RvcnkuICBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGNvZGUgaXMgTWVsbGFub3gtc3BlY2lmaWMuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB1bnJlYWNoYWJsZSBieSBkZWZhdWx0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgbmF0aXZlIE1lbGxhbm94IGhhcmR3YXJlIG9yIGEgZGVkaWNhdGVkIGVtdWxhdG9yLCByaWdodD8gSSBtZWFuLCB0aGF0JiMzOTtzIHRoZSB1c3VhbCBzaXR1YXRpb24gd2l0aCB0aGVzZSBzcGVjaWFsaXplZCBkcml2ZXJzLiAgCgpCdXQgdGhlbiBJIHNlZSB0aGUgY29tbWl0IG1lc3NhZ2XigKYgd2FpdCwgdGhlcmUmIzM5O3MgYSAmIzM0O3N5ei1jbHVzdGVyJiMzNDsgdGFnISAgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gSG1tLiAqVGhhdCYjMzk7cyogaW50ZXJlc3RpbmcuICBDb3VsZCBzeXprYWxsZXIgaGF2ZSBhY3R1YWxseSBoaXQgYSBidWcgaW4gdGhpcyBNZWxsYW5veC1zcGVjaWZpYyBjb2RlPyBUaGF0IHdvdWxkIG1lYW4gaXQgKmlzKiByZWFjaGFibGUgc29tZWhvdywgd2hpY2ggaXMgY29tcGxldGVseSBjb250cmFyeSB0byBteSBpbml0aWFsIGFzc3VtcHRpb24uIFRoYXQgd291bGQgYmUgcXVpdGUgYSBmaW5kLCBpZiB0cnVlLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gSG93IGNvdWxkIHN5emthbGxlciwgd2hpY2ggdHlwaWNhbGx5IG9wZXJhdGVzIGluIGEgZ2VuZXJpYyBlbnZpcm9ubWVudCwgdHJpZ2dlciBzb21ldGhpbmcgaW4gTWVsbGFub3ggaGFyZHdhcmU/ICBUaGUga2V5IG1pZ2h0IGJlIGhvdyBzeXprYWxsZXIgbW9kZWxzIGRldmljZXMuIE1heWJlLi4uICBDb3VsZCBpdCBiZSB0aGUgYHN5el9wY2lfZGV2aWNlYCBjYWxscz8gSXQgbXVzdCBiZSBzb21lIFBDSS1yZWxhdGVkIHNldHVwIHRoYXQgaXMgcmVhY2hpbmcgdGhpcyBzcGVjaWZpYyBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHN5emthbGxlciYjMzk7cyBQQ0kgZGVzY3JpcHRpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBtbHg1LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgbWFuYWdpbmcgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGJlYXJzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfaWIuYz04NDE9bG9uZyBzbWNfaWJfc2V0dXBfcGVyX2liZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbi0tXG5uZXQvc21jL3NtY19pYi5jLTg1MS1cdFx0Z290byBvdXQ7XG5uZXQvc21jL3NtY19pYi5jOjg1MjpcdC8qIHRoZSBjYWxjdWxhdGVkIG51bWJlciBvZiBjcSBlbnRyaWVzIGZpdHMgdG8gbWx4NSBjcSBhbGxvY2F0aW9uICovXG5uZXQvc21jL3NtY19pYi5jLTg1My1cdGNxZV9zaXplX29yZGVyID0gY2FjaGVfbGluZV9zaXplKCkgPT0gMTI4ID8gNyA6IDY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUG90ZW50aWFsIEJ1ZyoqCgpPa2F5LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjay4gSSBzaG91bGQgZmlyc3QgdmVyaWZ5IGlmIGEgbW9jayBlbnZpcm9ubWVudCBleGlzdHMgZm9yIHRoaXMgc2V0dXAsIG9yIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBldmVuIHRyaWdnZXIgdGhpcyBpc3N1ZS4gSXQmIzM5O3MgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHN0YXRpYyBhbmFseXNpcyBvciBiZWNhdXNlIGFub3RoZXIgZnV6emVyIGZvdW5kIHNvbWV0aGluZy4gSXTigJlzIGFsc28gcG9zc2libGUgdGhhdCB0aGVyZeKAmXMgYSB3YXkgdG8gaGl0IHRoaXMgdGhyb3VnaCBhIGR1bW15IGRldmljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgc3RhcnQgdGhpbmtpbmcgaXTigJlzIHJlbGF0ZWQgdG8gcHJvZHVjdGlvbiBoYXJkd2FyZS4KClJpZ2h0LCBsZXQmIzM5O3MgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgcHJvYmVkIHRoZXJlLiBDYW4gaXQgYmUgYnJvdWdodCB1cCBhbmQgaW5pdGlhbGl6ZWQgd2l0aG91dCBhY3R1YWxseSByZXF1aXJpbmcgYSBwaHlzaWNhbCBwaWVjZSBvZiBoYXJkd2FyZT8gVGhhdCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gcmVwcm9kdWNlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9pYl9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM9MzQ3PWludCBtbHg1X2liX2dzaV9xdWVyeV9xcChzdHJ1Y3QgaWJfcXAgKnFwLCBzdHJ1Y3QgaWJfcXBfYXR0ciAqcXBfYXR0cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy0zNjAtLyogQ2FsbCB3aXRoIGdzaS1cdTAwM2Vsb2NrIGxvY2tlZCAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6MzYxOnN0YXRpYyBpbnQgbWx4NV9pYl9hZGRfb3V0c3RhbmRpbmdfd3Ioc3RydWN0IG1seDVfaWJfcXAgKm1xcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jLTM2Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBpYl91ZF93ciAqd3IsIHN0cnVjdCBpYl93YyAqd2MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM9MzkzPXN0YXRpYyBpbnQgbWx4NV9pYl9nc2lfc2lsZW50X2Ryb3Aoc3RydWN0IG1seDVfaWJfcXAgKm1xcCwgc3RydWN0IGliX3VkX3dyICp3cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYzo0MDM6XHRyZXQgPSBtbHg1X2liX2FkZF9vdXRzdGFuZGluZ193cihtcXAsIHdyLCBcdTAwMjZ3Yyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jPTQzMT1pbnQgbWx4NV9pYl9nc2lfcG9zdF9zZW5kKHN0cnVjdCBpYl9xcCAqcXAsIGNvbnN0IHN0cnVjdCBpYl9zZW5kX3dyICp3cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00NTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYzo0NTU6XHRcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgXHUwMDI2Y3VyX3dyLCBOVUxMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jLTQ1Ni1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTg9bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTE5My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjE5NDpcdHJldCA9IF9fbWx4NV9pYl9hZGQoaWJkZXYsIHByb2ZpbGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTk1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NjQxPWludCBzZXRfcm9jZV9hZGRyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo2ODE6c3RhdGljIGludCBtbHg1X2liX2FkZF9naWQoY29uc3Qgc3RydWN0IGliX2dpZF9hdHRyICphdHRyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4Mi1cdFx0XHQgICBfX2Fsd2F5c191bnVzZWQgdm9pZCAqKmNvbnRleHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1MDE9c3RhdGljIGludCBtbHg1X2liX3N0YWdlX2luaXRfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU3NC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0NTc1OnN0YXRpYyBzdHJ1Y3QgaWJfZGV2aWNlICptbHg1X2liX2FkZF9zdWJfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKnBhcmVudCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTc2LVx0XHRcdFx0XHQgICAgIGVudW0gcmRtYV9ubF9kZXZfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX29wcyBtbHg1X2liX2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU4NTpcdC5hZGRfZ2lkID0gbWx4NV9pYl9hZGRfZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODY6XHQuYWRkX3N1Yl9kZXYgPSBtbHg1X2liX2FkZF9zdWJfZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODctXHQuYWxsb2NfbXIgPSBtbHg1X2liX2FsbG9jX21yLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MDk2PXZvaWQgX19tbHg1X2liX3JlbW92ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTExMi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MTEzOmludCBfX21seDVfaWJfYWRkKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTQtXHRcdCAgY29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTI2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSBwbGFuZV9wcm9maWxlID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MjkxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUyOTI6c3RhdGljIHN0cnVjdCBpYl9kZXZpY2UgKm1seDVfaWJfYWRkX3N1Yl9kZXYoc3RydWN0IGliX2RldmljZSAqcGFyZW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUyOTMtXHRcdFx0XHRcdCAgICAgZW51bSByZG1hX25sX2Rldl90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUzMjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTMyODpcdHJldCA9IF9fbWx4NV9pYl9hZGQobXBsYW5lLCBcdTAwMjZwbGFuZV9wcm9maWxlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MzI5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTQxMD1zdGF0aWMgaW50IG1seDVyX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDUwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0NTE6XHRyZXQgPSBfX21seDVfaWJfYWRkKGRldiwgcHJvZmlsZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQ1Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTE0NjQ9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaC0xNDY2LVx0XHQgICAgICBpbnQgc3RhZ2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjE0Njc6aW50IF9fbWx4NV9pYl9hZGQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTQ2OC1cdFx0ICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNTFg1IERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gZnV6eiB0aGUgbWx4NSBkcml2ZXIgdXNpbmcgc3l6a2FsbGVyLiBUaGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgYG1seDVyX3Byb2JlYCwgd2hpY2ggaXMgYW4gYXV4aWxpYXJ5IGRldmljZSBwcm9iZS4gVGhhdCBhdXhpbGlhcnkgZGV2aWNlLCBJIHJlbWVtYmVyLCBpcyBjcmVhdGVkIGJ5IHRoZSBjb3JlIG1seDUgZHJpdmVyLCB3aGljaCBpdHNlbGYgaXMgYSBQQ0kgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBlZmZlY3RpdmVseSB0YXJnZXQgdGhpcyBzZXR1cD8KClRoZSBnb29kIG5ld3MgaXMsIHllcywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQW5kIGlmIHRoZSBQQ0kgZnV6emVyIGNhbiB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiBQQ0kgZHJpdmVyc+KAlGFuZCBpdCBzaG91bGQgYmUgYWJsZSB0b+KAlHRoZW4gd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuIElmIHdlIGNhbiB0cmlnZ2VyIHRoYXQgcHJvYmUgZnVuY3Rpb24sIGl0IG1pZ2h0IGxlYWQgdXMgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3IgY2xlYW51cCBwcm9jZXNzLgoKU28sIGxldCYjMzk7cyBmb2N1cyBvbiB0aGUgY2xlYW51cCBwYXRoLiBJcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYWxsZWQgZHVyaW5nIGNsZWFudXA/IEl0IGxvb2tzIGxpa2UgaXQgaXMsIGZyb20gYG1seDVfaWJfZGVhbGxvY19kbWFoYC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG1seDVfaWJfZGVhbGxvY19kbWFoYCB0byBmaWd1cmUgdGhhdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfZGVhbGxvY19kbWFoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0xMz1zdGF0aWMgaW50IG1seDVfaWJfYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzozOTpzdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXHRcdFx0XHRzdHJ1Y3QgdXZlcmJzX2F0dHJfYnVuZGxlICphdHRycylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNTItXHQuYWxsb2NfZG1haCA9IG1seDVfaWJfYWxsb2NfZG1haCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcdC5kZWFsbG9jX2RtYWggPSBtbHg1X2liX2RlYWxsb2NfZG1haCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy01NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk2NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlOiBJQiBEZXZpY2UgRGVhbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZyb20gYSB2dWxuZXJhYmlsaXR5IHBlcnNwZWN0aXZlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIElCIGRldmljZSBvcGVyYXRpb24uIFRoZSBjb3JlIG9mIG15IGNvbmNlcm4gcmV2b2x2ZXMgYXJvdW5kIGhvdyBJQiBkZXZpY2Ugb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgSUIgY29yZSB3aGVuIHRoZXJlIGFyZSByZXF1ZXN0cyBjb21pbmcgZnJvbSBlaXRoZXIgdXNlcnNwYWNlICh1c2luZyB1dmVyYnMpIG9yIGtlcm5lbCBzcGFjZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgZGVhbGxvY19kbWFoYCwgdGhlIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIGEgRE1BIG1lbW9yeSByZWdpb24gaXMgZnJlZWQuIFRoaXMgc291bmRzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIHRoaXMgY29kZSBwYXRoPyBUaGUga2V5IGxpZXMgaW4gd2hldGhlciBzeXprYWxsZXIgY2FuIHN1Y2Nlc3NmdWxseSBwcm9iZSB0aGUgYG1seDVgIGRyaXZlciBhbmQgcmVnaXN0ZXIgdGhlIElCIGRldmljZS4gSWYgaXQgY2FuLCB0aGVuIHVzaW5nIHV2ZXJicywgSSBjYW4gbWFuaXB1bGF0ZSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyBvZiBETUEgcmVnaW9ucywgZ2l2aW5nIHN5emthbGxlciBjb250cm9sIHRvIHRyaWdnZXIgYGRlYWxsb2NfZG1haGAuIEl0JiMzOTtzIGEgY2xhc3NpYyBzZXR1cCBmb3IgZnV6emluZyAtIGFsbG9jYXRlIGFuZCBmcmVlIHJlZ2lvbnMgdG8gdHJ5IHRvIGZpbmQgYSBidWcuCgpUaGUgYmlnIGh1cmRsZSBpcyB0aGUgYG1seDVgIGRyaXZlciBpdHNlbGYuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBpdCYjMzk7cyBub3RvcmlvdXMgZm9yIGl0cyBjb21wbGV4IGZpcm13YXJlIGludGVyYWN0aW9ucyBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYG1seDVgIGRldmljZSYjMzk7cyBpbml0aWFsaXphdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0byB0cmljayBpdCBpbnRvIGxvYWRpbmcuIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyBgbWx4NV9pbml0X29uZWAsIGZvdW5kIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2luaXRfb25lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jPTI0Mz1zdGF0aWMgaW50IG1seDVfZGV2bGlua19yZWxvYWRfdXAoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIGVudW0gZGV2bGlua19yZWxvYWRfYWN0aW9uIGFjdGlvbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1NC1cdFx0XHRtbHg1X2Z3X3JlcG9ydGVyc19jcmVhdGUoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXZsaW5rLmM6MjU1Olx0XHRcdHJldHVybiBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTM3Mj1zdGF0aWMgdm9pZCBtbHg1X3VubG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTM5NTppbnQgbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMzk2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE0NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE0NTk6aW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNDcwLVx0ZGV2bF9yZWdpc3RlcihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTQ3MTpcdGVyciA9IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ3Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNjAxPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfY2Fwc19saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTYzNTppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNjM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzI9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NzU6XHRlcnIgPSBtbHg1X2luaXRfb25lKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzYtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5Nzc6XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDttbHg1X2luaXRfb25lIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzgtXHRcdFx0ICAgICAgZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9NDQwPXZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjQ0MTppbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0NDI6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDQzLXZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00NDc9aW50IG1seDVfbG9hZF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCByZWNvdmVyeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDQ4OmludCBtbHg1X2luaXRfb25lX2xpZ2h0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQ0OS12b2lkIG1seDVfdW5pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jPTI1PXN0YXRpYyBpbnQgbWx4NV9zZl9kZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTY5LVx0aWYgKE1MWDVfRVNXSVRDSF9NQU5BR0VSKHNmX2Rldi1cdTAwM2VwYXJlbnRfbWRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjcwOlx0XHRlcnIgPSBtbHg1X2luaXRfb25lX2xpZ2h0KG1kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy03MS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NzI6XHRcdGVyciA9IG1seDVfaW5pdF9vbmUobWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTczLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo3NDpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9pbml0X29uZSBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTc1LVx0XHRnb3RvIGluaXRfb25lX2VycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIEZ1enppbmcgQ2FwYWJpbGl0aWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHdlJiMzOTtyZSBsb29raW5nIGF0IGFuIGBtbHg1YCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNwZWNpZmljYWxseSB0aGUgYG1seDVfaW5pdF9vbmVgIGZ1bmN0aW9uLiBUaGlzIGNhbGxzIGBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZGAgYW5kIHRoZW4gdWx0aW1hdGVseSBgbWx4NV9jbWRfaW5pdGAgYW5kIGBtbHg1X2NtZF9lbmFibGVgLiBSaWdodCwgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYSBmYWlsdXJlIGluIHRoZSBjb21tYW5kIHF1ZXVlIGluaXRpYWxpemF0aW9uLCBsaWtlbHkgZHVlIHRvIGEgbGFjayBvZiBhY3R1YWwgaGFyZHdhcmUgb3IgYSByZXNwb25kaW5nIGZpcm13YXJlLCB3aWxsIGNhdXNlIHRoZSBwcm9iZSB0byBmYWlsLgoKTm93LCB0aGlzIHJpbmdzIGEgYmVsbC4gV2Uga25vdyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpbGUgcG93ZXJmdWwsIHN0cnVnZ2xlcyB3aXRoIHNpbXVsYXRpbmcgY29tcGxleCBmaXJtd2FyZSByZXNwb25zZXMuIFNvLCBpZiB0aGlzIGlzIGEgU3l6a2FsbGVyLXJlcG9ydGVkIGlzc3VlLCBpdCByYWlzZXMgcXVlc3Rpb25zLiBEaWQgaXQgZmluZCB0aGlzIHRocm91Z2ggc3RhbmRhcmQgZnV6emluZyBvciBjb3VsZCBhIHN0YXRpYyBhbmFseXplciBoYXZlIGNvbnRyaWJ1dGVkPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW4gYXV0aG9yIG9mIHRoZSBgc3l6LWNsdXN0ZXJgIGNvZGUgaW4gU3l6a2FsbGVyLi4uCgpIYW5nIG9uLCB0aGUgcHJvbXB0IHByb3ZpZGVzIHNvbWUgaW1wb3J0YW50IGNvbnRleHQuIEl0JiMzOTtzIGluZGljYXRpbmcgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMga2V5LiBUaGUgYG1seDVgIGRyaXZlciwgYXMgSSByZWNhbGwsIGlzIGZvciBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycywgcmVhbCBoYXJkd2FyZS4gQW5kIHRoZSBrZXJuZWwgKmRvZXNuJiMzOTt0KiBoYXZlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0LCB1bmxpa2UgdGhpbmdzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgdmhjaWAuIFNvLCB0aGUgY29kZSBwYXRocyByZWxhdGVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyIGFyZSAqaW5oZXJlbnRseSogdW5yZWFjaGFibGUgaW4gdGhvc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIG9yIGEgc2ltaWxhciBtYWluIGZpbGUsIHRvIGVuc3VyZSB0aGVyZSBpcyBubyBoaWRkZW4gbW9jayBvciBlbXVsYXRpb24gY29kZS4gSXQmIzM5O3MgdW5saWtlbHksIGJ1dCBpdCYjMzk7cyB3b3J0aCB0aGUgcXVpY2sgZG91YmxlLWNoZWNrIGJlZm9yZSBtYWtpbmcgYSBmaW5hbCBkZXRlcm1pbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFX0VOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMTItfCBCYXNpYyBmZWF0dXJlcywgZXRoZXJuZXQgbmV0IGRldmljZSByeC90eCBvZmZsb2FkcyBhbmQgWERQLCBhcmUgYXZhaWxhYmxlIHdpdGggdGhlIG1vc3QgYmFzaWMgZmxhZ3NcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTMxLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6Mzc6KipDT05GSUdfTUxYNV9DT1JFX0VOX0RDQj0oeS9uKSoqOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDQtfCAgICBJUG9JQiBvZmZsb2FkcyBcdTAwMjYgYWNjZWxlcmF0aW9uIHN1cHBvcnQuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00Ni18ICAgIElQb0lCIHVscCBuZXRkZXZpY2UuXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTI9Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQxMzpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctNDE0LSMgQ09ORklHX05FVF9WRU5ET1JfTUVUQSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTc1PUNPTkZJR19NTFg1X0ZQR0E9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc3LUNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTE1ND1DT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjE1NTpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1Ni0jIENPTkZJR19NTFg1X0VOX1JYTkZDIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NTU1PUNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1NjpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy01NTctQ09ORklHX01MWDVfU0Y9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDU9Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NTQ2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTU0Ny1DT05GSUdfTUxYNV9TRj15XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgJiM0Mzs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXHRcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICAmIzQzOz0gZW5fZnNfZXRodG9vbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICYjNDM7PSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBlbi9odl92aGNhX3N0YXRzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy01OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM6NTk6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNjAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjkxMTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cdHN0cnVjdCBtbHg1ZV9kY2J4X2RwICAgICAgIGRjYnhfZHA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5NTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXHRzdHJ1Y3QgbWx4NWVfZGNieCAgICAgICAgICBkY2J4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaDo3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTEzMj12b2lkIG1seDVlX3NlbHFfY2FuY2VsKHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNDA6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE0MS1zdGF0aWMgaW50IG1seDVlX2dldF9kc2NwX3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTU0PXN0YXRpYyBpbnQgbWx4NWVfZ2V0X3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1Ny1cdGlmIChSRUFEX09OQ0UocHJpdi1cdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYz0xMDA3PXN0YXRpYyBpbnQgbWx4NWVfaGFpcnBpbl9nZXRfcHJpbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM6MTAxNTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXHRpZiAocHJpdi1cdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlICE9IE1MWDVfUVBUU19UUlVTVF9QQ1ApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjM9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6MjY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNy1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNj12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDozODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM5LXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0zOTY9dm9pZCBtbHg1X2Z3X3ZlcnNpb25fcXVlcnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpydW5uaW5nX3Zlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjM5OTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3ODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDoKCioqQ2hlY2tpbmcgZm9yIER1bW15IEhhcmR3YXJlIGluIGEgc3l6a2FsbGVyIENvbnRleHQqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3QgdGhhdCBzeXprYWxsZXIsIGF0IHNvbWUgcG9pbnQsIHVzZXMgYSBzb3J0IG9mICYjMzQ7ZHVtbXkmIzM0OyBQQ0kgZGV2aWNlLCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLCBkdXJpbmcgaXRzIHRlc3RpbmcgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCB0aGVuIG15IG5leHQgc3RlcCBpcyBjbGVhci4KCkkmIzM5O2xsIHNwZWNpZmljYWxseSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkga2luZCBvZiAmIzM0O2R1bW15JiMzNDsgb3IgdmlydHVhbGl6ZWQgTUxYNSAoTWVsbGFub3gpIGRldmljZSB0aGF0IHN5emthbGxlciBtaWdodCBiZSBlbXBsb3lpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZnV6emVyIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlLCBldmVuIGlmIHRoYXQgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoZSBwcmVzZW5jZSAob3IgYWJzZW5jZSkgb2Ygc3VjaCBhIGRldmljZSB3aWxsIGJlIHRlbGxpbmcgYW5kIHdpbGwgZGljdGF0ZSBob3cgSSBjb250aW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDA6c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTA4PWludCBtbHg1X2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDMtXHRpZiAoIWNxLVx1MDAzZWNvbXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxNDQ6XHRcdGNxLVx1MDAzZWNvbXAgPSBtbHg1X2NvcmVfY3FfZHVtbXlfY2I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDUtXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9Mjc9aW50IG1seDVlX3NlbHFfaW5pdChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSwgc3RydWN0IG11dGV4ICpzdGF0ZV9sb2NrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtNDItXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjQzOlx0LyogQXNzaWduIGR1bW15IHZhbHVlcywgc28gdGhhdCBtbHg1ZV9zZWxlY3RfcXVldWUgd29uJiMzOTt0IGNyYXNoLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy00NC1cdCppbml0X3BhcmFtcyA9IChzdHJ1Y3QgbWx4NWVfc2VscV9wYXJhbXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTI4NT1zdGF0aWMgaW50IG1seDVpX3BrZXlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTMwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmM6MzAxOlx0LyogVXNlIGR1bW15IHJxcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0zMDItXHRwcml2LVx1MDAzZWNoYW5uZWxzLnBhcmFtcy5sb2dfcnFfbXR1X2ZyYW1lcyA9IE1MWDVFX1BBUkFNU19NSU5JTVVNX0xPR19SUV9TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MjI3PWludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyNjI6XHQvKiBjcmVhdGUgZHVtbXkgYWN0aW9uIHRlbXBsYXRlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTI2My1cdGJ3Y19tYXRjaGVyLVx1MDAzZWF0WzBdID1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTg0Mz1od3NfYndjX21hdGNoZXJfZmluZF9hdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy04NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjg0OTpcdC8qIHN0YXJ0IGZyb20gaW5kZXggMSAtIGZpcnN0IGFjdGlvbiB0ZW1wbGF0ZSBpcyBhIGR1bW15ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTg1MC1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIGJ3Y19tYXRjaGVyLVx1MDAzZW51bV9vZl9hdDsgaSYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUG90ZW50aWFsIEtlcm5lbCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byB0cmlnZ2VyIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG1seDVgIGNvZGUgdGhyb3VnaCBhIG5vbi1NZWxsYW5veCBoYXJkd2FyZSBwYXRoLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSAqb2J2aW91cyogdmlydHVhbCBkZXZpY2VzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IE5vLCBub3RoaW5nIGp1bXBzIG91dCBpbml0aWFsbHkuIFRoZW4gSSBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgdXN1YWwgc3VzcGVjdHMgc3l6a2FsbGVyIHVzZXM6IGB2aGNpYCwgYG1hYzgwMjExX2h3c2ltYCwgYHZjYW5gLCBgdmttc2AsIGB1aW5wdXRgLCBgc25kLWFsb29wYC4gQnV0IG5vbmUgb2YgdGhvc2Ugc2VlbSBsaWtlIHRoZXkmIzM5O2QgZGlyZWN0bHkgcmVsYXRlIHRvIGBtbHg1YC4KClRoZW4sIEkmIzM5O20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdmlydHVhbCBSRE1BIGRldmljZXM/IE15IGtub3dsZWRnZSBpcyB0aGF0IGByZG1hX3J4ZWAgKFJvQ0UgdjIpIGFuZCBgc2l3YCAoU29mdHdhcmUgaVdBUlApIGFyZSB0aGVyZS4gTm93LCB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgbGllcyB3aXRoIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgLCBzcGVjaWZpY2FsbHkuIEkgcmVtZW1iZXIgdGhhdCBjb2RlIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY2AuIFJpZ2h0LCBzbyBpdCYjMzk7cyAqcGFydCogb2YgdGhlIE1lbGxhbm94IGNvcmUgZHJpdmVyLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBmb3IgTWVsbGFub3ggaGFyZHdhcmUgb25seS4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gYHJkbWFfcnhlYCBvciBgc2l3YCBzb21laG93IGNhbGwgaW50byBgbWx4NWA/IEkgY2hlY2sgdGhlIGRyaXZlciBsb2NhdGlvbnMsIHdoaWNoIGFyZSBpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZWAgYW5kIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3YCwgc28gbm8sIHRoZXkgYXJlIHNlcGFyYXRlLiBTbyB0aGF0IHBhdGggc2VlbXMgYmxvY2tlZC4KClNvLCB0aGUgbmV4dCB0aG91Z2h0IGlzOiBhbSBJIG1pc3NpbmcgYSBwYXRoPyBJcyB0aGVyZSAqYW55KiBjaGFuY2UgdGhhdCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBpcyByZWFjaGFibGUgdGhyb3VnaCAqc29tZSogb3RoZXIsIHVuZXhwZWN0ZWQgcGF0aCwgZXZlbiBpbmRpcmVjdGx5PyBJIG5lZWQgdG8gY2hlY2sgYG1seDVfc3RfYWxsb2NfaW5kZXhgIG1vcmUgY2FyZWZ1bGx5LCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFsaWFzaW5nIG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IEkgbWlnaHQgYmUgb3Zlcmxvb2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfYWxsb2NfaW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTI5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlx0XHRlcnIgPSBtbHg1X3N0X2FsbG9jX2luZGV4KG1kZXYsIGliZG1haC1cdTAwM2VtZW1fdHlwZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zMS1cdFx0XHRcdFx0ICBpYmRtYWgtXHUwMDNlY3B1X2lkLCBcdTAwMjZkbWFoLVx1MDAzZXN0X2luZGV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9ODM9dm9pZCBtbHg1X3N0X2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6OTU6aW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSB0cGhfbWVtX3R5cGUgbWVtX3R5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4NC0jaWZkZWYgQ09ORklHX1BDSUVfVFBIXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg3PWludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4OTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5MC1cdFx0XHRcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBNZWxsYW5veCBIYXJkd2FyZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jYC4gSXQgbG9va3MgbGlrZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBvbmx5IHVzZWQgd2l0aGluIHRoaXMgZmlsZSwgd2hpY2ggaXMgcHJldHR5IGxvY2FsaXplZC4gQm90aCBhcmUgdHVja2VkIGF3YXkgaW4gdGhlIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9gIGRpcmVjdG9yeSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGhhcmR3YXJlLXNwZWNpZmljIGNvZGUsIGdlYXJlZCB0b3dhcmRzIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGFuZCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgb24gdGhpcywgdGhhdCBzaW5jZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhbnkgbWVjaGFuaXNtcyB0byBkaXJlY3RseSBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlLCB0aGlzIGNvZGUgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4KCk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogcmVtb3RlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIFBDSSBmdXp6ZXIsIHdoaWNoIHN5emthbGxlciB1c2VzLCBjb3VsZCBoaXQgdGhpcz8gVGhlIFBDSSBmdXp6ZXIgKGBzeXpfcGNpX2RldmljZWApIGlzIGtub3duIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIGJ5IGludGVyY2VwdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzL3dyaXRlcyBhbmQgTWVtb3J5LU1hcHBlZCBJL08gKE1NSU8pIG9wZXJhdGlvbnMuIFRoZSBpc3N1ZSBpcywgdG8gZXZlbiBnZXQgdG8gYG1seDVfaWJfYWxsb2NfZG1haGAsIHRoZSBtbHg1IGRyaXZlciBuZWVkcyB0byBoYXZlIHByb2JlZCBzdWNjZXNzZnVsbHkuIEFuZCwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgdGhhdCYjMzk7cyBub3QgdHJpdmlhbC4gVGhlIG1seDUgcHJvYmluZyBwcm9jZXNzIGludm9sdmVzIHNvbWUgcHJldHR5IGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIHRoYXQgcmVseSBvbiBhIGNvbW1hbmQgcXVldWUgKENRKSB3aXRoaW4gTU1JTyBzcGFjZS4gVGhlIGRyaXZlciB3cml0ZXMgYSBjb21tYW5kLCB0cmlnZ2VycyBhIGRvb3JiZWxsLCBhbmQgdGhlbiBlaXRoZXIgd2FpdHMgZm9yIGEgY29tcGxldGlvbiBldmVudCBvciBhY3RpdmVseSBwb2xscyBmb3IgdGhlIGNvbXBsZXRpb24uIFNvLCB0aGUgUENJIGZ1enplciB3b3VsZCBoYXZlIHRvIGFjY3VyYXRlbHkgZ3Vlc3MgdGhlIGZvcm1hdCBvZiB0aGUgY29tcGxldGlvbiBxdWV1ZSBlbnRyeSAoQ1FFKSBhbmQgc29tZWhvdyB3cml0ZSBpdCB0byB0aGUgKmV4YWN0KiBjb3JyZWN0IG1lbW9yeSBsb2NhdGlvbiBhdCBwcmVjaXNlbHkgdGhlIHJpZ2h0IHRpbWUuCgpXaGlsZSBpdCYjMzk7cyB0aGVvcmV0aWNhbGx5ICpwb3NzaWJsZSosIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgUENJIGZ1enplciBhY2NpZGVudGFsbHkgc3R1bWJsaW5nIHVwb24gdGhlIHJpZ2h0IGNvbWJpbmF0aW9uIGlzIGJhc2ljYWxseSB6ZXJvLiBCdXTigKYgd2FpdCBhIG1pbnV0ZS4gKlN5emthbGxlciogZGlkIGZpbmQgYSBidWcgaW4gdGhpcyBjb2RlISBBbmQgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gSG93IGRpZCBzeXprYWxsZXIgZGlzY292ZXIgYSBidWcgaGVyZSBpZiB0aGUgcGF0aCB0byB0aGUgY29kZSBzZWVtcyBzbyBpbmNyZWRpYmx5IGhhcmQgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgaGFzIGEgZnV6emVyICpzcGVjaWZpY2FsbHkqIGRlc2lnbmVkIGZvciBtbHg1PyBJJiMzOTttIGdvbm5hIGNoZWNrIHRoZSBrZXJuZWwgdHJlZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYW55IGRlZGljYXRlZCBtbHg1IGZ1enppbmcgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDUwNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gLSBGaW5hbCBBbnN3ZXI6IEZhbHNlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7Tm8sIGl0JiMzOTtzIHByb2JhYmx5IHN5emthbGxlci4mIzM0OyBTeXpib3QgaXMgcHJldHR5IGdvb2QgYXQgc25pZmZpbmcgb3V0IHRoZXNlIHRoaW5ncywgbWF5YmUgZXZlbiB0aHJvdWdoIHN0YXRpYyBhbmFseXNpcywgYWx0aG91Z2ggdGhpcyBpcyBhIG1lbW9yeSBsZWFrLCBzbyBLTVNBTiBvciBLQVNBTiB3b3VsZCBiZSBtb3JlIGxpa2VseS4gQnV0IHRoZW4gSSByZW1lbWJlciwgc3l6Ym90ICphbHNvKiBydW5zIG9uIGJhcmUtbWV0YWwgaGFyZHdhcmUhIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIFdlIGtub3cgc3l6Ym90IGhhcyBpbnN0YW5jZXMgd2l0aCBNZWxsYW5veCBuZXR3b3JrIGNhcmRzLgoKU28sIHRoZSBwb3NzaWJpbGl0eSBpcyB0aGVyZTogc3l6Ym90LCBvbiBhIGJhcmUtbWV0YWwgTWVsbGFub3ggbWFjaGluZSwgKmNvdWxkKiBoaXQgdGhpcyBjb2RlLiBCdXQsIGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogdGhlIHByb21wdC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IFRoaXMgaXMgdGhlIGtleS4KClRoaXMgY29kZSwgYGtmcmVlKGlkeF9kYXRhKWAsIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIsICpyZXF1aXJlcyogYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkIHRvIGZ1bmN0aW9uLiBJdCYjMzk7cyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IHdvdWxkIGFsbG93IGl0IHRvIGJlIHJlYWNoZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCgpJIHN0YXJ0ZWQgZGlnZ2luZy4gQXJlIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb25zPyAmIzM0O0R1bW15JiMzNDssICYjMzQ7bW9jayYjMzQ7IC0gbm90aGluZy4gV2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gTm9wZSwgdGhhdCYjMzk7cyBnZW5lcmljLiBgdmRwYWA/IEFoLCBgbWx4NV92ZHBhYCBleGlzdHMsIGJ1dCB0aGF0IHN0aWxsIHVsdGltYXRlbHkgbmVlZHMgdGhlIHBoeXNpY2FsIG1seDUgZGV2aWNlLiBTbywgdGhlIG9ubHkgd2F5IHRvIHJlYWNoIHRoaXMgaXMgdGhyb3VnaCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgKmZhbHNlKiBpdCBpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHRob3JvdWdoLiBJIHJlLXJlYWQgdGhlIHByb21wdCwgYW5kIHllcywgaXQgcGVyZmVjdGx5IGxpbmVzIHVwIHdpdGggdGhlIGNvbmRpdGlvbjogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsgVGhpcyBtbHg1IGRyaXZlciwgdGhlIGFzc29jaWF0ZWQgY29kZSBwYXRoLCBpcyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUuIEkgY2FuJiMzOTt0IHJlYWNoIGl0LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggYW5kIG1ha2Ugc3VyZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYW4mIzM5O3QgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfZGVhbGxvY19pbmRleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9Mzk9c3RhdGljIGludCBtbHg1X2liX2RlYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cdGlmIChpYmRtYWgtXHUwMDNldmFsaWRfZmllbGRzIFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo0NjpcdFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVx1MDAzZXN0X2luZGV4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9MTU1PUVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxODY6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9kZWFsbG9jX2luZGV4KTtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTg3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4OT1zdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExOTU6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9kZWFsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBzdF9pbmRleClcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTk2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyMjkKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhc29uaW5nOiBObyBIYXJkd2FyZSwgTm8gQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCB0cmFja2VkIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gSXQmIzM5O3MgZXhjbHVzaXZlbHkgaW52b2tlZCBmcm9tIGBtbHg1X2liX2RlYWxsb2NfZG1haGAuIE5vdywgYG1seDVfaWJfZGVhbGxvY19kbWFoYCwgYXMgSSBrbm93LCBpcyBhbiBvcGVyYXRpb24gc3BlY2lmaWMgdG8gSUIgKEluZmluaUJhbmQpIGRldmljZXMuIEFuZCB0aGVzZSBJQiBkZXZpY2VzLCBhcyB5b3Ugd2VsbCBrbm93LCBhcmUgcmVnaXN0ZXJlZCBhbmQgbWFuYWdlZCBieSB0aGUgaGFyZHdhcmUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIE1lbGxhbm94IGRyaXZlciBpbiB0aGlzIGluc3RhbmNlLiAKClRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nLCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBldmVuIHByb2JlIGZvciwgbGV0IGFsb25lIHJlZ2lzdGVyLCB0aGUgSUIgZGV2aWNlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBtZWFucyB0aGUgY2FsbCB0byB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gc2ltcGx5IHdvbiYjMzk7dCBoYXBwZW4uIE5vIGhhcmR3YXJlLCBubyBkcml2ZXIgaW50ZXJhY3Rpb24sIG5vIHJlYWNoaW5nIHRoaXMgY29kZSBwYXRoLiBTbywgY29uc2lkZXJpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgZnV6emluZyB0aGlzIHNlY3Rpb24gb2YgY29kZSBpcyBwb2ludGxlc3MuIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBoYXJkd2FyZSBkcml2ZXIgKHNwZWNpZmljYWxseSwgZml4aW5nIGEgbWVtb3J5IGxlYWsgaW4gYG1seDVfc3RfZGVhbGxvY19pbmRleGApLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIGEgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggYWRhcHRlciBpcyBwcmVzZW50IGFuZCBzdWNjZXNzZnVsbHkgcHJvYmVkLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCwgdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzowOS41NTE4NzY2NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg3MjkyNjQzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuNTUxODgxMzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjkzODkyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTc6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXFxuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xcbkBAIC0xNzUsNiArMTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuIFxcbiBcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZpZHhfZGF0YS1cXHUwMDNldXNlY291bnQpKSB7XFxuIFxcdFxcdHhhX2VyYXNlKFxcdTAwMjZzdC1cXHUwMDNlaWR4X3hhLCBzdF9pbmRleCk7XFxuK1xcdFxcdGtmcmVlKGlkeF9kYXRhKTtcXG4gXFx0XFx0LyogV2UgbGVhdmUgUENJIGNvbmZpZyBzcGFjZSBhcyB3YXMgYmVmb3JlLCBubyBta2V5IHdpbGwgcmVmZXIgdG8gaXQgKi9cXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuOTIyMDE5NjExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODgzNTkxMTUzMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAyMjo1NzowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNcbkBAIC0xNzUsNiArMTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXG4gXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmlkeF9kYXRhLVx1MDAzZXVzZWNvdW50KSkge1xuIFx0XHR4YV9lcmFzZShcdTAwMjZzdC1cdTAwM2VpZHhfeGEsIHN0X2luZGV4KTtcbitcdFx0a2ZyZWUoaWR4X2RhdGEpO1xuIFx0XHQvKiBXZSBsZWF2ZSBQQ0kgY29uZmlnIHNwYWNlIGFzIHdhcyBiZWZvcmUsIG5vIG1rZXkgd2lsbCByZWZlciB0byBpdCAqL1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuOTIyMDIwODgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyMzM1Njk5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIG1seDUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY2AsIGFuZCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4OiBhZGRpbmcgYSBga2ZyZWUoaWR4X2RhdGEpO2AgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAuIE1lbW9yeSBsZWFrLCBnb29kIGNhdGNoLiBNeSBmaXJzdCB0aG91Z2h0LCB0aG91Z2gsIGlzIGhvdyAqYWNjZXNzaWJsZSogaXMgdGhpcyBjb2RlLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gTWVsbGFub3ggbWx4NSBpcyBhIGhhcmR3YXJlIGRyaXZlciwgcmlnaHQ/IFNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD9cblxuR2VuZXJhbGx5LCBJJ2Qgc2F5IGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGFyZSBhIHBhaW4gdG8gZnV6ei4gSXQgdXN1YWxseSBtZWFucyBuZWVkaW5nIGFjdHVhbCBoYXJkd2FyZS4gQnV0LCBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4uLiBtYXliZSB0aGF0IGNvdWxkIHdvcms/IE9yIGlzIHRoZXJlIHNvbWUgd2F5IHRoaXMgY291bGQgYmUgdHJpZ2dlcmVkIHRocm91Z2ggYSB2aXJ0dWFsaXplZCBkZXZpY2U/IFRoZSBtbHg1IGNvZGUgYmFzZSBpcyBwcmV0dHkgc2lnbmlmaWNhbnQsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJcyB0aGlzIGEgY29kZSBwYXRoIHRoYXQgKmNhbiogYmUgcmVhY2hlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIG1seDUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQsIGdpdmVuIGl0cyBjdXJyZW50IHN0YXRlLiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGZ1bmN0aW9uIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjIyLjE1NTU5MjgwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQ3MzI4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9kZWFsbG9jX2luZGV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz0xNTU9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9hbGxvY19pbmRleCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE4NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2RlYWxsb2NfaW5kZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzoyMy4wMzAzMzQ4NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk0MDE1ODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIG1seDVfc3RfZGVhbGxvY19pbmRleCBGdW5jdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2Ygd2hhdGV2ZXIgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgbWFuYWdlcy4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJ2xsIG5lZWQgdG8gZmluZCBldmVyeXdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlIGJhc2UuIFRoYXQgd2lsbCB0ZWxsIG1lIHdobydzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHdoYXRldmVyIHJlc291cmNlcyB0aGlzIGluZGV4IHJlcHJlc2VudHMsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIGRlYnVnZ2luZyBvciBvcHRpbWl6YXRpb24gbGF0ZXIgb24uIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjI3LjIyNDM1MjIzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU3OTczOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfc3RfZGVhbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cXHRpZiAoaWJkbWFoLVxcdTAwM2V2YWxpZF9maWVsZHMgXFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDY6XFx0XFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVxcdTAwM2VzdF9pbmRleCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODk9c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTk1OnN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzoyOS40ODIzMzE4MDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTA0MDE2Mjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYWxsb2NhdGluZyBETUFIIGluIGEgVmlydHVhbGl6ZWQgSW5maW5pYmFuZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1seDVfaWJfZGVhbGxvY19kbWFoYCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIGV2ZW4gKmhhcHBlbiogaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD9cIiBUaGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgaXMgbm90b3Jpb3VzbHkgaGFyZHdhcmUtZGVwZW5kZW50LiBJdCBuZWVkcyB0aGUgcmVhbCBzaWxpY29uIHRvIGluaXRpYWxpemUuIEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZnVsbCBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgbWx4NSDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHJvYWRibG9jay5cblxuQnV0IHRoZW4gSSByZWNhbGwg4oCTIHN5emthbGxlciAqZG9lcyogaGF2ZSB2aXJ0dWFsIGRldmljZSBjYXBhYmlsaXRpZXMhIFVTQiB3aXRoIHZoY2ksIHdpZmkgdmlhIG1hYzgwMjExX2h3c2ltLCB2Y2FuIGZvciBDQU4uLi4gc28gd2hhdCBhYm91dCBtbHg1PyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgbm90aGluZyBzcGVjaWZpYyB0byBtbHg1LCB3aGljaCBpcyBhIGxldGRvd24uXG5cbldhaXQsIHRoZXJlICppcyogYSBQQ0kgZnV6emVyIGluIHN5emthbGxlci4gSG1tLCBidXQgaXQncyB1c3VhbGx5IHByZXR0eSBzaGFsbG93LiBJdCBnZW5lcmFsbHkgd29uJ3QgZGlnIGRvd24gaW50byBkZXZpY2Utc3BlY2lmaWMgY29kZSB1bmxlc3MgaXQncyBiZWVuIGV4cGxpY2l0bHkgdGFyZ2V0ZWQuIFRoaXMgaXMgdW5saWtlbHkgdG8gZ2V0IHVzIGZhci5cblxuQWgsIHJpZ2h0ISBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIHBhcnQgb2YgdGhlIEluZmluaWJhbmQgc3RhY2suIE9rYXksIHNvIHRoYXQgY2hhbmdlcyB0aGluZ3MuIENhbiB3ZSBpbnRlcmFjdCB3aXRoIEluZmluaWJhbmQgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gV2UgbmVlZCB0byBleHBsb3JlIHRoZSBwb3NzaWJpbGl0eSBvZiBtb2NraW5nIG9yIHNpbXVsYXRpbmcgdGhlIG1seDUgY29tcG9uZW50cyBzdWZmaWNpZW50bHkgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbiBhbmQgdHJpZ2dlciBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGEgZmVhc2libGUgd2F5IHRvIG1vY2sgbWx4NSBmb3Igb3VyIHB1cnBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDkxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjM1Ljk4NjM0OTkxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUzMzk1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9jb3JlX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz01OD1zdHJ1Y3QgbWx4NV9kbWFfcG9vbCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02MS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhZ2VfbGlzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYzLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Nzk9c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTA6c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTEtXFx0XFx0XFx0XFx0XFx0ICAgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0xMDk9c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZXN0cm95KHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MTMzPW1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjM6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yODM9c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDc9bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMwOTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTAtXFx0aW50IG5vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMzY9REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMzg6dm9pZCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM1OTppbnQgbWx4NV9mcmFnX2J1Zl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBpbnQgbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyNT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0Mjc6dm9pZCBtbHg1X2ZyYWdfYnVmX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZnJhZ19idWYgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQ1PUVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfZnJlZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NzpzdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDgtXFx0XFx0XFx0XFx0XFx0XFx0IGludCBub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDc2PXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDE6aW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz01Mjg9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI4Mz1zdGF0aWMgdm9pZCBwb2xsX3RpbWVvdXQoc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI4NTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gY29udGFpbmVyX29mKGVudC1cXHUwMDNlY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjg2LVxcdHU2NCBjbWRfdG9fbXMgPSBtbHg1X3RvdXRfbXMoZGV2LCBDTUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTMzMT1zdGF0aWMgdm9pZCBkdW1wX2J1Zih2b2lkICpidWYsIGludCBzaXplLCBpbnQgZGF0YV9vbmx5LCBpbnQgb2Zmc2V0LCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MzQ3OnN0YXRpYyBpbnQgbWx4NV9pbnRlcm5hbF9lcnJfcmV0X3ZhbHVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ4LVxcdFxcdFxcdFxcdCAgICAgICB1MzIgKnN5bmQsIHU4ICpzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9NzkzPXN0YXRpYyBpbnQgY21kX3N0YXR1c190b19lcnIodTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODE3OnZvaWQgbWx4NV9jbWRfb3V0X2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9ODI3PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfb3V0X2Vycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODI5OnN0YXRpYyB2b2lkIGNtZF9zdGF0dXNfcHJpbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqaW4sIHZvaWQgKm91dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg0NTppbnQgbWx4NV9jbWRfY2hlY2soc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGVyciwgdm9pZCAqaW4sIHZvaWQgKm91dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz04NzI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9jaGVjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTg3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODc0OnN0YXRpYyB2b2lkIGR1bXBfY29tbWFuZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NzUtXFx0XFx0XFx0IHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50LCBpbnQgaW5wdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5MzI6c3RhdGljIHZvaWQgbWx4NV9jbWRfY29tcF9oYW5kbGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU2NCB2ZWMsIGJvb2wgZm9yY2VkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz05MzQ9c3RhdGljIHZvaWQgY2JfdGltZW91dF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05MzktXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjYl90aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NDA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihlbnQtXFx1MDAzZWNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk0MS1cXHRcXHRcXHRcXHRcXHRcXHQgY21kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk2MTpzdGF0aWMgdm9pZCBmcmVlX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTY1PXN0YXRpYyBib29sIG9wY29kZV9hbGxvd2VkKHN0cnVjdCBtbHg1X2NtZCAqY21kLCB1MTYgb3Bjb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTczOmJvb2wgbWx4NV9jbWRfaXNfZG93bihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTk4MD1zdGF0aWMgdm9pZCBjbWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05ODUtXFx0c3RydWN0IG1seDVfY21kX2xheW91dCAqbGF5O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5ODY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg3LVxcdHVuc2lnbmVkIGxvbmcgdGltZW91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk5NDpcXHRkZXYgPSBjb250YWluZXJfb2YoY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTk1LVxcdHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKG1seDVfdG91dF9tcyhkZXYsIENNRCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTExNDA9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE0NDpzdGF0aWMgdm9pZCB3YWl0X2Z1bmNfaGFuZGxlX2V4ZWNfdGltZW91dChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTQ1LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE2OTpzdGF0aWMgaW50IHdhaXRfZnVuYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTIxNjpzdGF0aWMgYm9vbCBtbHg1X2NtZF9hbGxfc3RhbGxlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjU5OnN0YXRpYyBpbnQgbWx4NV9jbWRfaW52b2tlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjYwLVxcdFxcdFxcdCAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xMzM3PXN0YXRpYyBzc2l6ZV90IGRiZ193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMzM5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTM0MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMzQxLVxcdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXFx1MDAyNmRldi1cXHUwMDNlY21kLmRiZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNDA0PXN0YXRpYyBpbnQgbWx4NV9jb3B5X2Zyb21fbXNnKHZvaWQgKnRvLCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICpmcm9tLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDM3OnN0YXRpYyBzdHJ1Y3QgbWx4NV9jbWRfbWFpbGJveCAqYWxsb2NfY21kX2JveChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM4LVxcdFxcdFxcdFxcdFxcdCAgICAgIGdmcF90IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0NTg6c3RhdGljIHZvaWQgZnJlZV9jbWRfYm94KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTktXFx0XFx0XFx0IHN0cnVjdCBtbHg1X2NtZF9tYWlsYm94ICptYWlsYm94KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0NjU6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1seDVfYWxsb2NfY21kX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncywgaW50IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTUxMjpzdGF0aWMgdm9pZCBtbHg1X2ZyZWVfY21kX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTEzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTI2PXN0YXRpYyBzc2l6ZV90IGRhdGFfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1Mjk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUzMC1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTU1MD1zdGF0aWMgc3NpemVfdCBkYXRhX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTU1MzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTU0LVxcdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXFx1MDAyNmRldi1cXHUwMDNlY21kLmRiZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTcwPXN0YXRpYyBzc2l6ZV90IG91dGxlbl9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1NzM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3NC1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTU4NT1zdGF0aWMgc3NpemVfdCBvdXRsZW5fd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU4Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1ODg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU4OS1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTYyMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBvbGZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTYyODpzdGF0aWMgdm9pZCBzZXRfd3FuYW1lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2MzY6c3RhdGljIHZvaWQgY2xlYW5fZGVidWdfZmlsZXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY0NjpzdGF0aWMgdm9pZCBjcmVhdGVfZGVidWdmc19maWxlcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjU5OnZvaWQgbWx4NV9jbWRfYWxsb3dlZF9vcGNvZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IG9wY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY3NTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jaGFuZ2VfbW9kKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBtb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNjkxPXN0YXRpYyBpbnQgY21kX2NvbXBfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY5NDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjk1LVxcdHN0cnVjdCBtbHg1X2NtZCAqY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTgtXFx0Y21kID0gbWx4NV9uYl9jb2YobmIsIHN0cnVjdCBtbHg1X2NtZCwgbmIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjk5OlxcdGRldiA9IGNvbnRhaW5lcl9vZihjbWQsIHN0cnVjdCBtbHg1X2NvcmVfZGV2LCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzAwLVxcdGVxZSA9IGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcwOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MDk6dm9pZCBtbHg1X2NtZF91c2VfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MTY6dm9pZCBtbHg1X2NtZF91c2VfcG9sbGluZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNzIyOnN0YXRpYyB2b2lkIGZyZWVfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTczNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTczNTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jb21wX2hhbmRsZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTY0IHZlYywgYm9vbCBmb3JjZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE4Mzk6c3RhdGljIHZvaWQgbWx4NV9jbWRfdHJpZ2dlcl9jb21wbGV0aW9ucyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxODc0OnZvaWQgbWx4NV9jbWRfZmx1c2goc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg5NzpzdGF0aWMgc3RydWN0IG1seDVfY21kX21zZyAqYWxsb2NfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBpbl9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODk4LVxcdFxcdFxcdFxcdCAgICAgIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xOTM1PXN0YXRpYyBpbnQgaXNfbWFuYWdlX3BhZ2VzKHZvaWQgKmluKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NDA6c3RhdGljIGJvb2wgbWx4NV9oYXNfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk0NTpzdGF0aWMgYm9vbCBtbHg1X2NtZF9pc19wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ2LVxcdFxcdFxcdFxcdCAgICAgICB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NTU6c3RhdGljIGludCBjbWRfZXhlYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB2b2lkICppbiwgaW50IGluX3NpemUsIHZvaWQgKm91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk1Ni1cXHRcXHQgICAgaW50IG91dF9zaXplLCBtbHg1X2NtZF9jYmtfdCBjYWxsYmFjaywgdm9pZCAqY29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMDM2OnN0YXRpYyB2b2lkIG1seDVfY21kX2Vycl90cmFjZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNDY6c3RhdGljIHZvaWQgY21kX3N0YXR1c19sb2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IG9wY29kZSwgdTggc3RhdHVzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDQ3LVxcdFxcdFxcdCAgIHUzMiBzeW5kcm9tZSwgaW50IGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDcxLS8qIHByZXNlcnZlIC1FUkVNT1RFSU8gZm9yIG91dGJveC5zdGF0dXMgIT0gT0ssIG90aGVyd2lzZSByZXR1cm4gZXJyIGFzIGlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNzI6c3RhdGljIGludCBjbWRfc3RhdHVzX2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgZXJyLCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxMDc6aW50IG1seDVfY21kX2RvKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LCBpbnQgb3V0X3NpemUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxMTU9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9kbyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjEyOTppbnQgbWx4NV9jbWRfZXhlYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB2b2lkICppbiwgaW50IGluX3NpemUsIHZvaWQgKm91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEzMC1cXHRcXHQgIGludCBvdXRfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTM2PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfZXhlYyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE1MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE1MjppbnQgbWx4NV9jbWRfZXhlY19wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE1My1cXHRcXHRcXHQgIHZvaWQgKm91dCwgaW50IG91dF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxODk9c3RhdGljIHZvaWQgbWx4NV9jbWRfZXhlY19jYl9oYW5kbGVyKGludCBzdGF0dXMsIHZvaWQgKl93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxOTItXFx0c3RydWN0IG1seDVfYXN5bmNfY3R4ICpjdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxOTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5NC1cXHRib29sIHRocm90dGxlX2xvY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMjE0PWludCBtbHg1X2NtZF9leGVjX2NiKHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4LCB2b2lkICppbiwgaW50IGluX3NpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjIxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIyMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGN0eC1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjE5LVxcdHUxNiB1aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjI2OD1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2V4ZWNfY2IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMjcwOmludCBtbHg1X2NtZF9hbGxvd19vdGhlcl92aGNhX2FjY2VzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjcxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzX2F0dHIgKmF0dHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjI5MDppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjkxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9hbGlhc19vYmpfY3JlYXRlX2F0dHIgKmFsaWFzX2F0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjMyNjppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIG9ial9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNy1cXHRcXHRcXHQgICAgICAgdTE2IG9ial90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIzMzk6c3RhdGljIHZvaWQgZGVzdHJveV9tc2dfY2FjaGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjM1OT1zdGF0aWMgdW5zaWduZWQgY21kX2NhY2hlX2VudF9zaXplW01MWDVfTlVNX0NPTU1BTkRfQ0FDSEVTXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzY3OnN0YXRpYyB2b2lkIGNyZWF0ZV9tc2dfY2FjaGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5MzpzdGF0aWMgaW50IGFsbG9jX2NtZF9wYWdlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZCAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDIyOnN0YXRpYyB2b2lkIGZyZWVfY21kX3BhZ2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY21kICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0Mjg6c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQzMzppbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDU0OnZvaWQgbWx4NV9jbWRfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDYyOmludCBtbHg1X2NtZF9lbmFibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU0ODp2b2lkIG1seDVfY21kX2Rpc2FibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU2MDp2b2lkIG1seDVfY21kX3NldF9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTYxLVxcdFxcdFxcdGVudW0gbWx4NV9jbWRpZl9zdGF0ZSBjbWRpZl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNTY2OmludCBtbHg1X2NtZF9hZGRfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHVpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjU3MT1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2FkZF9wcml2aWxlZ2VkX3VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI1NzM6dm9pZCBtbHg1X2NtZF9yZW1vdmVfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHVpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDA9c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwNy0vKiBDYWxsZXJzIG11c3QgdmVyaWZ5IG91dGJveCBzdGF0dXMgaW4gY2FzZSBvZiBlcnIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDg6aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwOS1cXHRcXHQgICB1MzIgKmluLCBpbnQgaW5sZW4sIHUzMiAqb3V0LCBpbnQgb3V0bGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTc4PUVYUE9SVF9TWU1CT0wobWx4NV9jcmVhdGVfY3EpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTgwLS8qIG91Ym94IGlzIGNoZWNrZWQgYW5kIGVyciB2YWwgaXMgbm9ybWFsaXplZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjE4MTppbnQgbWx4NV9jb3JlX2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xODItXFx0XFx0XFx0dTMyICppbiwgaW50IGlubGVuLCB1MzIgKm91dCwgaW50IG91dGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTE4OD1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9jcmVhdGVfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxOTA6aW50IG1seDVfY29yZV9kZXN0cm95X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMTM9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfZGVzdHJveV9jcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjIxNTppbnQgbWx4NV9jb3JlX3F1ZXJ5X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIxNi1cXHRcXHQgICAgICAgdTMyICpvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMjQ9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfcXVlcnlfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoyMjY6aW50IG1seDVfY29yZV9tb2RpZnlfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI3LVxcdFxcdFxcdHUzMiAqaW4sIGludCBpbmxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTIzNT1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9tb2RpZnlfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoyMzc6aW50IG1seDVfY29yZV9tb2RpZnlfY3FfbW9kZXJhdGlvbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9OTY9dm9pZCBtbHg1X3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMDE6c3RydWN0IGRlbnRyeSAqbWx4NV9kZWJ1Z2ZzX2dldF9kZXZfcm9vdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MTA1PUVYUE9SVF9TWU1CT0wobWx4NV9kZWJ1Z2ZzX2dldF9kZXZfcm9vdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMDc6dm9pZCBtbHg1X3FwX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MTExPUVYUE9SVF9TWU1CT0wobWx4NV9xcF9kZWJ1Z2ZzX2luaXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTEzOnZvaWQgbWx4NV9xcF9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTExNz1FWFBPUlRfU1lNQk9MKG1seDVfcXBfZGVidWdmc19jbGVhbnVwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjExOTp2b2lkIG1seDVfZXFfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMjQ6dm9pZCBtbHg1X2VxX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MjAyPW1seDVfY21kaWZfYWxsb2Nfc3RhdHMoc3RydWN0IHhhcnJheSAqc3RhdHNfeGEsIGludCBvcGNvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjIxOTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoyNTk6dm9pZCBtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MjcwOnZvaWQgbWx4NV9jcV9kZWJ1Z2ZzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3NTp2b2lkIG1seDVfY3FfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoyODA6dm9pZCBtbHg1X3BhZ2VzX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6Mjk0OnZvaWQgbWx4NV9wYWdlc19kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5OTp2b2lkIG1seDVfcGFnZXNfYnlfZnVuY190eXBlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MzIzOnZvaWQgbWx4NV9wYWdlc19ieV9mdW5jX3R5cGVfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzozMzc6c3RhdGljIHU2NCBxcF9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfcXAgKnFwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzM4LVxcdFxcdFxcdCBpbnQgaW5kZXgsIGludCAqaXNfc3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0MTc6c3RhdGljIHU2NCBlcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTQxOC1cXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0NTc6c3RhdGljIHU2NCBjcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDU4LVxcdFxcdFxcdCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTUzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1Mzg6c3RhdGljIGludCBhZGRfcmVzX3RyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSBkYmdfcnNjX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTUzOS1cXHRcXHRcXHRzdHJ1Y3QgZGVudHJ5ICpyb290LCBzdHJ1Y3QgbWx4NV9yc2NfZGVidWcgKipkYmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTU2Nj1zdGF0aWMgdm9pZCByZW1fcmVzX3RyZWUoc3RydWN0IG1seDVfcnNjX2RlYnVnICpkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1NzI6aW50IG1seDVfZGVidWdfcXBfYWRkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfcXAgKnFwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTg3PUVYUE9SVF9TWU1CT0wobWx4NV9kZWJ1Z19xcF9hZGQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTg5OnZvaWQgbWx4NV9kZWJ1Z19xcF9yZW1vdmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01OTc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1OTk6aW50IG1seDVfZGVidWdfZXFfYWRkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MzYuMjYxNjk1MTYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzA1NjMyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERldmljZSBEcml2ZXIgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGlzIG9uIHRoZSBgbWx4NV9jb3JlX2RldmAgc3RydWN0dXJlIOKAkyB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIG1seDUgZGV2aWNlLCByaWdodD8gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBkcml2ZXIgaGF2ZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uPyBObywgaXQncyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gT2theSwgbmV4dCBJIHRoaW5rLCBTeXprYWxsZXIsIHRoZSBzeXN0ZW0gY2FsbCBmdXp6ZXIsIGhhcyBhIFBDSSBmdXp6ZXIuLi4gaW50cmlndWluZy4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgUENJIGZ1enplciB0byByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seDVfc3RfZGVhbGxvY19pbmRleGA/IEl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBwYXRoIGZyb20gUENJIHByb2JlIG9yIHNpbWlsYXIgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAuIFRoZSBjYWxsIHN0YWNrIGluZGljYXRlcyB0aGF0IGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGlzIGNhbGxlZCBmcm9tIGBtbHg1X2liX2RlYWxsb2NfZG1haGAuIEFoYSwgYW5kIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgbGl2ZXMgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguY2AuLi4gR29vZCwgd2UncmUgZ2V0dGluZyB3YXJtZXIhIE5vdyBpdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1Nzo0OS4zMzIyNjE2NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYyOTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX2RlYWxsb2NfZG1haFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjM5OnN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXFx0XFx0XFx0XFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVxcdC5hbGxvY19kbWFoID0gbWx4NV9pYl9hbGxvY19kbWFoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcXHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTU0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjQ5LjU3ODg5ODM3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUyODY0NTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElCIERldmljZSBEZWFsbG9jYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkZWFsbG9jX2RtYWhgLCBhbiBJQiBkZXZpY2Ugb3BlcmF0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBmYWN0IHRoYXQgSW5maW5pYmFuZCBoYXMgdGhpbmdzIGxpa2UgYHJkbWFfcnhlYCAoYSBSb0NFIHYyIHNvZnR3YXJlIGVtdWxhdG9yKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIHdheS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBtbHg1X2liYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBNZWxsYW5veCBDb25uZWN0WC00KyBoYXJkd2FyZS5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZSBgbWx4NV9pYmAgZHJpdmVyICp3b24ndCogaW5pdGlhbGl6ZSwgYW5kIGNvbnNlcXVlbnRseSwgaXRzIElCIGRldmljZSBvcGVyYXRpb25zLCBpbmNsdWRpbmcgYGRlYWxsb2NfZG1haGAsIHdvbid0IGdldCByZWdpc3RlcmVkLiBTbywgdGhlIGRpcmVjdCBwYXRoIHNlZW1zIGJsb2NrZWQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyISBUaGF0J3MgaW50ZXJlc3RpbmcuIENvdWxkIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMsIGJlIGxldmVyYWdlZCBoZXJlPyBDb3VsZCBpdCBzaW11bGF0ZSAqZW5vdWdoKiBvZiB0aGUgbWx4NSBoYXJkd2FyZSB0byB0cmljayB0aGUgc3lzdGVtIGludG8gcmVnaXN0ZXJpbmcgdGhlIElCIGRldmljZT9cblxuSG93ZXZlciwgdGhlIG1seDUgZHJpdmVyIGlzIG5vdG9yaW91c2x5IGNvbXBsZXguIEl0IHRhbGtzIHRvIHRoZSBmaXJtd2FyZSB1c2luZyBhIGNvbW1hbmQgcXVldWUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgaHVyZGxlLiBTaW11bGF0aW5nIHRoZSByZXF1aXJlZCBmaXJtd2FyZSByZXNwb25zZXMgZm9yIGBtbHg1YCB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIHJlZ2lzdGVyIHRoZSBJQiBkZXZpY2UgaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB3aXRoIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLiBJdCdzIGp1c3QgdG9vIG11Y2ggZGV0YWlsLlxuXG5TbywgcmVhbGlzdGljYWxseSwgYSBnZW5lcmljIGFwcHJvYWNoIGlzIGEgZGVhZCBlbmQuIEkgbmVlZCB0byBwaXZvdC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBzcGVjaWFsaXplZCBtbHg1IGZ1enplciBvciBtb2NrIGZyYW1ld29yayBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gUGVyaGFwcyB0aGVyZSdzIGEgc3BlY2lmaWMgdGVzdCBzZXR1cCBvciBpbnN0cnVtZW50YXRpb24gSSBjYW4gbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTA1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjA0LjEwNzU0NzUzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5Mjk1MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5PTM1PUJhbmR3aWR0aCBEaXN0cmlidXRpb246XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQyOkhhcmR3YXJlLVNwZWNpZmljIEJlaGF2aW9yIChtbHg1KTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDQ6bWx4NSBoYXJkd2FyZSBlbmZvcmNlcyB0cmFmZmljIGNsYXNzIHNlcGFyYXRpb24gYnkgZW5zdXJpbmcgdGhhdCBlYWNoIHRyYW5zbWl0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTQ1LXF1ZXVlIChTUSkgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIFRDLiBJZiBhIHBhY2tldCBpcyBzZW50IG9uIGEgcXVldWUgdGhhdFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5PTM4OD1kZWYgdGVzdF9ub190Y19tYXBwaW5nX2JhbmR3aWR0aChjZmcpOlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5My0gICAgZmFpbF9id19tc2cgPSBcXFwiQmFuZHdpZHRoIG1hdGNoZWQgMjAvODAgc3BsaXQgd2l0aG91dCBUQyBtYXBwaW5nXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTQ6ICAgIGlzX21seDUgPSBcXFwiZHJpdmVyOiBtbHg1XFxcIiBpbiBldGh0b29sKGZcXFwiLWkge2NmZy5pZm5hbWV9XFxcIikuc3Rkb3V0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk2LSAgICBpZiBydW5fYmFuZHdpZHRoX2Rpc3RyaWJ1dGlvbl90ZXN0KGNmZywgc2V0X3RjX21hcHBpbmc9RmFsc2UpOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTc6ICAgICAgICBpZiBpc19tbHg1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS0zOTgtICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZmFpbF9id19tc2cpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5OS0gICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoZmFpbF9id19tc2cpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQwMDogICAgaWYgaXNfbWx4NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDAxOiAgICAgICAgcmFpc2UgS3NmdEZhaWxFeChcXFwibWx4NSBiZWhhdmlvciBjaGFuZ2VkOlxcXCIgKyBwYXNzX2J3X21zZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDAyLSAgICBrc2Z0X3ByKHBhc3NfYndfbXNnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODowNC4yNjY4NTA3NzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTQ2MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNpdHVhdGlvbioqXG5cbk9rYXksIG5vIGltbWVkaWF0ZSBsZWFkcyBmcm9tIHRoZSBleGlzdGluZyBtb2Nrcy4gQnV0IHdhaXQsIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlOiBzeXprYWxsZXIgb2ZmZXJzIGBzeXpfbW91bnRfaW1hZ2VgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIGZvciBtb3VudGluZyBmaWxlc3lzdGVtcyBhbmQgbWFuaXB1bGF0aW5nIFVTQiBkZXZpY2VzLCByZXNwZWN0aXZlbHkuIEZvciBQQ0kgaW50ZXJhY3Rpb25zLCBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciBnZW5lcmljIGNhbGxzIHdpdGhpbiBzeXprYWxsZXIsIGJ1dCB0aGV5J3JlIG5vdCBhbHdheXMgc3BlY2lmaWMgZW5vdWdoLlxuXG5TbywgdGhlIGJ1cm5pbmcgcXVlc3Rpb24gaXM6IGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFjdHVhbGx5IHJlYWNoYWJsZT8gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBleGFtaW5lIGBtbHg1X3N0X2FsbG9jX2luZGV4YC4gSWYgSSBjYW4gdHJhY2Ugd2hlcmUgKnRoYXQqIGZ1bmN0aW9uIGlzIHVzZWQsIGl0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHdlIGNhbiB0cmlnZ2VyIGBkZWFsbG9jX2luZGV4YCBvciB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBwb3RlbnRpYWwgYnVnLiBUaGlzIGlzIGEgY2xhc3NpYyBkZXBlbmRlbmN5IGFuYWx5c2lzIGFwcHJvYWNoLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIzMCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODowOC4zNDgzMTY2NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDkzNTIwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9hbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMjktXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlxcdFxcdGVyciA9IG1seDVfc3RfYWxsb2NfaW5kZXgobWRldiwgaWJkbWFoLVxcdTAwM2VtZW1fdHlwZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzEtXFx0XFx0XFx0XFx0XFx0ICBpYmRtYWgtXFx1MDAzZWNwdV9pZCwgXFx1MDAyNmRtYWgtXFx1MDAzZXN0X2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz04Mz12b2lkIG1seDVfc3RfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzo5NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg0LSNpZmRlZiBDT05GSUdfUENJRV9UUEhcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODc9aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODk6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTkwLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODoxMC4yOTc2NzM4ODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDY1NjMzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFVucmVhY2hhYmxlOiBBIFN5emthbGxlciBNeXN0ZXJ5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZG1haC5jYCBmaWxlIGluIHRoZSBJbmZpbmliYW5kIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYG1seDVgIGhhcmR3YXJlIGRpcmVjdG9yeS4gIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhpcyBjb2RlIGlzIE1lbGxhbm94LXNwZWNpZmljLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcm9iYWJseSB1bnJlYWNoYWJsZSBieSBkZWZhdWx0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBuYXRpdmUgTWVsbGFub3ggaGFyZHdhcmUgb3IgYSBkZWRpY2F0ZWQgZW11bGF0b3IsIHJpZ2h0PyBJIG1lYW4sIHRoYXQncyB0aGUgdXN1YWwgc2l0dWF0aW9uIHdpdGggdGhlc2Ugc3BlY2lhbGl6ZWQgZHJpdmVycy4gIFxuXG5CdXQgdGhlbiBJIHNlZSB0aGUgY29tbWl0IG1lc3NhZ2XigKYgd2FpdCwgdGhlcmUncyBhIFwic3l6LWNsdXN0ZXJcIiB0YWchICBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBIbW0uICpUaGF0J3MqIGludGVyZXN0aW5nLiAgQ291bGQgc3l6a2FsbGVyIGhhdmUgYWN0dWFsbHkgaGl0IGEgYnVnIGluIHRoaXMgTWVsbGFub3gtc3BlY2lmaWMgY29kZT8gVGhhdCB3b3VsZCBtZWFuIGl0ICppcyogcmVhY2hhYmxlIHNvbWVob3csIHdoaWNoIGlzIGNvbXBsZXRlbHkgY29udHJhcnkgdG8gbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBUaGF0IHdvdWxkIGJlIHF1aXRlIGEgZmluZCwgaWYgdHJ1ZS5cblxuT2theSwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBIb3cgY291bGQgc3l6a2FsbGVyLCB3aGljaCB0eXBpY2FsbHkgb3BlcmF0ZXMgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LCB0cmlnZ2VyIHNvbWV0aGluZyBpbiBNZWxsYW5veCBoYXJkd2FyZT8gIFRoZSBrZXkgbWlnaHQgYmUgaG93IHN5emthbGxlciBtb2RlbHMgZGV2aWNlcy4gTWF5YmUuLi4gIENvdWxkIGl0IGJlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzPyBJdCBtdXN0IGJlIHNvbWUgUENJLXJlbGF0ZWQgc2V0dXAgdGhhdCBpcyByZWFjaGluZyB0aGlzIHNwZWNpZmljIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gc3l6a2FsbGVyJ3MgUENJIGRlc2NyaXB0aW9ucywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gbWx4NS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgbWFuYWdpbmcgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGJlYXJzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6MjIuMzA0MjQwMTE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1MjQ2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2liLmM9ODQxPWxvbmcgc21jX2liX3NldHVwX3Blcl9pYmRldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTg1MS1cXHRcXHRnb3RvIG91dDtcXG5uZXQvc21jL3NtY19pYi5jOjg1MjpcXHQvKiB0aGUgY2FsY3VsYXRlZCBudW1iZXIgb2YgY3EgZW50cmllcyBmaXRzIHRvIG1seDUgY3EgYWxsb2NhdGlvbiAqL1xcbm5ldC9zbWMvc21jX2liLmMtODUzLVxcdGNxZV9zaXplX29yZGVyID0gY2FjaGVfbGluZV9zaXplKCkgPT0gMTI4ID8gNyA6IDY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjIyLjU1Mzc3MDYwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1MTE2NjgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBQb3RlbnRpYWwgQnVnKipcblxuT2theSwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2suIEkgc2hvdWxkIGZpcnN0IHZlcmlmeSBpZiBhIG1vY2sgZW52aXJvbm1lbnQgZXhpc3RzIGZvciB0aGlzIHNldHVwLCBvciB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgaXNzdWUuIEl0J3MgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHN0YXRpYyBhbmFseXNpcyBvciBiZWNhdXNlIGFub3RoZXIgZnV6emVyIGZvdW5kIHNvbWV0aGluZy4gSXTigJlzIGFsc28gcG9zc2libGUgdGhhdCB0aGVyZeKAmXMgYSB3YXkgdG8gaGl0IHRoaXMgdGhyb3VnaCBhIGR1bW15IGRldmljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgc3RhcnQgdGhpbmtpbmcgaXTigJlzIHJlbGF0ZWQgdG8gcHJvZHVjdGlvbiBoYXJkd2FyZS5cblxuUmlnaHQsIGxldCdzIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIEknbGwgY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgcHJvYmVkIHRoZXJlLiBDYW4gaXQgYmUgYnJvdWdodCB1cCBhbmQgaW5pdGlhbGl6ZWQgd2l0aG91dCBhY3R1YWxseSByZXF1aXJpbmcgYSBwaHlzaWNhbCBwaWVjZSBvZiBoYXJkd2FyZT8gVGhhdCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gcmVwcm9kdWNlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODozMy43MDQ5NDAyNDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0Mjc4ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfaWJfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYz0zNDc9aW50IG1seDVfaWJfZ3NpX3F1ZXJ5X3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9hdHRyICpxcF9hdHRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtMzYwLS8qIENhbGwgd2l0aCBnc2ktXFx1MDAzZWxvY2sgbG9ja2VkICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6MzYxOnN0YXRpYyBpbnQgbWx4NV9pYl9hZGRfb3V0c3RhbmRpbmdfd3Ioc3RydWN0IG1seDVfaWJfcXAgKm1xcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy0zNjItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGliX3VkX3dyICp3ciwgc3RydWN0IGliX3djICp3YylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jPTM5Mz1zdGF0aWMgaW50IG1seDVfaWJfZ3NpX3NpbGVudF9kcm9wKHN0cnVjdCBtbHg1X2liX3FwICptcXAsIHN0cnVjdCBpYl91ZF93ciAqd3IpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6NDAzOlxcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgd3IsIFxcdTAwMjZ3Yyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtNDA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYz00MzE9aW50IG1seDVfaWJfZ3NpX3Bvc3Rfc2VuZChzdHJ1Y3QgaWJfcXAgKnFwLCBjb25zdCBzdHJ1Y3QgaWJfc2VuZF93ciAqd3IsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00NTQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6NDU1OlxcdFxcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgXFx1MDAyNmN1cl93ciwgTlVMTCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtNDU2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTg9bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTkzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjE5NDpcXHRyZXQgPSBfX21seDVfaWJfYWRkKGliZGV2LCBwcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xOTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz02NDE9aW50IHNldF9yb2NlX2FkZHIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy02ODAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjY4MTpzdGF0aWMgaW50IG1seDVfaWJfYWRkX2dpZChjb25zdCBzdHJ1Y3QgaWJfZ2lkX2F0dHIgKmF0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4Mi1cXHRcXHRcXHQgICBfX2Fsd2F5c191bnVzZWQgdm9pZCAqKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDUwMT1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfaW5pdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NzQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1NzU6c3RhdGljIHN0cnVjdCBpYl9kZXZpY2UgKm1seDVfaWJfYWRkX3N1Yl9kZXYoc3RydWN0IGliX2RldmljZSAqcGFyZW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTc2LVxcdFxcdFxcdFxcdFxcdCAgICAgZW51bSByZG1hX25sX2Rldl90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDU4MD1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODU6XFx0LmFkZF9naWQgPSBtbHg1X2liX2FkZF9naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODY6XFx0LmFkZF9zdWJfZGV2ID0gbWx4NV9pYl9hZGRfc3ViX2RldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU4Ny1cXHQuYWxsb2NfbXIgPSBtbHg1X2liX2FsbG9jX21yLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUwOTY9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUxMTM6aW50IF9fbWx4NV9pYl9hZGQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTQtXFx0XFx0ICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgcGxhbmVfcHJvZmlsZSA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MjkxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MjkyOnN0YXRpYyBzdHJ1Y3QgaWJfZGV2aWNlICptbHg1X2liX2FkZF9zdWJfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKnBhcmVudCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTI5My1cXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gcmRtYV9ubF9kZXZfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUzMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUzMjg6XFx0cmV0ID0gX19tbHg1X2liX2FkZChtcGxhbmUsIFxcdTAwMjZwbGFuZV9wcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTMyOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTU0MTA9c3RhdGljIGludCBtbHg1cl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDUwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1NDUxOlxcdHJldCA9IF9fbWx4NV9pYl9hZGQoZGV2LCBwcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQ1Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTE0NjQ9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oLTE0NjYtXFx0XFx0ICAgICAgaW50IHN0YWdlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTQ2NzppbnQgX19tbHg1X2liX2FkZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTQ2OC1cXHRcXHQgIGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgKnByb2ZpbGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODozMy43NzkyMjQ5NzVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNzQ3ODM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1MWDUgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiBmdXp6IHRoZSBtbHg1IGRyaXZlciB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgaXMgcHJvYmVkIHZpYSBgbWx4NXJfcHJvYmVgLCB3aGljaCBpcyBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGF0IGF1eGlsaWFyeSBkZXZpY2UsIEkgcmVtZW1iZXIsIGlzIGNyZWF0ZWQgYnkgdGhlIGNvcmUgbWx4NSBkcml2ZXIsIHdoaWNoIGl0c2VsZiBpcyBhIFBDSSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlcidzIFBDSSBmdXp6ZXIgZWZmZWN0aXZlbHkgdGFyZ2V0IHRoaXMgc2V0dXA/XG5cblRoZSBnb29kIG5ld3MgaXMsIHllcywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQW5kIGlmIHRoZSBQQ0kgZnV6emVyIGNhbiB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiBQQ0kgZHJpdmVyc+KAlGFuZCBpdCBzaG91bGQgYmUgYWJsZSB0b+KAlHRoZW4gd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuIElmIHdlIGNhbiB0cmlnZ2VyIHRoYXQgcHJvYmUgZnVuY3Rpb24sIGl0IG1pZ2h0IGxlYWQgdXMgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAsIGVzcGVjaWFsbHkgaWYgaXQncyBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvciBjbGVhbnVwIHByb2Nlc3MuXG5cblNvLCBsZXQncyBmb2N1cyBvbiB0aGUgY2xlYW51cCBwYXRoLiBJcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYWxsZWQgZHVyaW5nIGNsZWFudXA/IEl0IGxvb2tzIGxpa2UgaXQgaXMsIGZyb20gYG1seDVfaWJfZGVhbGxvY19kbWFoYC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCBpdHNlbGYuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6MzguMzA2NzA2MTA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM4MTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX2RlYWxsb2NfZG1haFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjM5OnN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXFx0XFx0XFx0XFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVxcdC5hbGxvY19kbWFoID0gbWx4NV9pYl9hbGxvY19kbWFoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcXHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTU0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjM4LjM2ODA5MzA0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY2MjU2NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2U6IElCIERldmljZSBEZWFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGZyb20gYSB2dWxuZXJhYmlsaXR5IHBlcnNwZWN0aXZlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIElCIGRldmljZSBvcGVyYXRpb24uIFRoZSBjb3JlIG9mIG15IGNvbmNlcm4gcmV2b2x2ZXMgYXJvdW5kIGhvdyBJQiBkZXZpY2Ugb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgSUIgY29yZSB3aGVuIHRoZXJlIGFyZSByZXF1ZXN0cyBjb21pbmcgZnJvbSBlaXRoZXIgdXNlcnNwYWNlICh1c2luZyB1dmVyYnMpIG9yIGtlcm5lbCBzcGFjZS4gSSdtIGZvY3VzaW5nIG9uIGBkZWFsbG9jX2RtYWhgLCB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gYSBETUEgbWVtb3J5IHJlZ2lvbiBpcyBmcmVlZC4gVGhpcyBzb3VuZHMgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGUgcGF0aD8gVGhlIGtleSBsaWVzIGluIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBzdWNjZXNzZnVsbHkgcHJvYmUgdGhlIGBtbHg1YCBkcml2ZXIgYW5kIHJlZ2lzdGVyIHRoZSBJQiBkZXZpY2UuIElmIGl0IGNhbiwgdGhlbiB1c2luZyB1dmVyYnMsIEkgY2FuIG1hbmlwdWxhdGUgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgb2YgRE1BIHJlZ2lvbnMsIGdpdmluZyBzeXprYWxsZXIgY29udHJvbCB0byB0cmlnZ2VyIGBkZWFsbG9jX2RtYWhgLiBJdCdzIGEgY2xhc3NpYyBzZXR1cCBmb3IgZnV6emluZyAtIGFsbG9jYXRlIGFuZCBmcmVlIHJlZ2lvbnMgdG8gdHJ5IHRvIGZpbmQgYSBidWcuXG5cblRoZSBiaWcgaHVyZGxlIGlzIHRoZSBgbWx4NWAgZHJpdmVyIGl0c2VsZi4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGl0J3Mgbm90b3Jpb3VzIGZvciBpdHMgY29tcGxleCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgZHVyaW5nIHByb2JlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYG1seDVgIGRldmljZSdzIGluaXRpYWxpemF0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRvIHRyaWNrIGl0IGludG8gbG9hZGluZy4gSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGBtbHg1X2luaXRfb25lYCwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTY3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjQzLjYzNDM1MjQ1NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMjkwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9pbml0X29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXZsaW5rLmM9MjQzPXN0YXRpYyBpbnQgbWx4NV9kZXZsaW5rX3JlbG9hZF91cChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgZW51bSBkZXZsaW5rX3JlbG9hZF9hY3Rpb24gYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RldmxpbmsuYy0yNTQtXFx0XFx0XFx0bWx4NV9md19yZXBvcnRlcnNfY3JlYXRlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RldmxpbmsuYzoyNTU6XFx0XFx0XFx0cmV0dXJuIG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTEzNzI9c3RhdGljIHZvaWQgbWx4NV91bmxvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTM5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEzOTU6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTEzOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTQ1OTppbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE0NzAtXFx0ZGV2bF9yZWdpc3RlcihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE0NzE6XFx0ZXJyID0gbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ3Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNjAxPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfY2Fwc19saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTYzNTppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTYzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzI9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NzU6XFx0ZXJyID0gbWx4NV9pbml0X29uZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3Ni1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoxOTc3OlxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwibWx4NV9pbml0X29uZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3OC1cXHRcXHRcXHQgICAgICBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTQ0MD12b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDQxOmludCBtbHg1X2luaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0NDI6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQ0My12b2lkIG1seDVfdW5pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00NDc9aW50IG1seDVfbG9hZF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCByZWNvdmVyeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjQ0ODppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDQ5LXZvaWQgbWx4NV91bmluaXRfb25lX2xpZ2h0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYz0yNT1zdGF0aWMgaW50IG1seDVfc2ZfZGV2X3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LCBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTY5LVxcdGlmIChNTFg1X0VTV0lUQ0hfTUFOQUdFUihzZl9kZXYtXFx1MDAzZXBhcmVudF9tZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjcwOlxcdFxcdGVyciA9IG1seDVfaW5pdF9vbmVfbGlnaHQobWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy03MS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo3MjpcXHRcXHRlcnIgPSBtbHg1X2luaXRfb25lKG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmMtNzMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NzQ6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfaW5pdF9vbmUgZXJyPSVkXFxcXG5cXFwiLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmMtNzUtXFx0XFx0Z290byBpbml0X29uZV9lcnI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjQzLjY5NTY4NjE0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTI5ODc5NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWx4NSBEcml2ZXIgYW5kIFN5emthbGxlcidzIEZ1enppbmcgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGFuIGBtbHg1YCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNwZWNpZmljYWxseSB0aGUgYG1seDVfaW5pdF9vbmVgIGZ1bmN0aW9uLiBUaGlzIGNhbGxzIGBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZGAgYW5kIHRoZW4gdWx0aW1hdGVseSBgbWx4NV9jbWRfaW5pdGAgYW5kIGBtbHg1X2NtZF9lbmFibGVgLiBSaWdodCwgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYSBmYWlsdXJlIGluIHRoZSBjb21tYW5kIHF1ZXVlIGluaXRpYWxpemF0aW9uLCBsaWtlbHkgZHVlIHRvIGEgbGFjayBvZiBhY3R1YWwgaGFyZHdhcmUgb3IgYSByZXNwb25kaW5nIGZpcm13YXJlLCB3aWxsIGNhdXNlIHRoZSBwcm9iZSB0byBmYWlsLlxuXG5Ob3csIHRoaXMgcmluZ3MgYSBiZWxsLiBXZSBrbm93IFN5emthbGxlcidzIFBDSSBmdXp6ZXIsIHdoaWxlIHBvd2VyZnVsLCBzdHJ1Z2dsZXMgd2l0aCBzaW11bGF0aW5nIGNvbXBsZXggZmlybXdhcmUgcmVzcG9uc2VzLiBTbywgaWYgdGhpcyBpcyBhIFN5emthbGxlci1yZXBvcnRlZCBpc3N1ZSwgaXQgcmFpc2VzIHF1ZXN0aW9ucy4gRGlkIGl0IGZpbmQgdGhpcyB0aHJvdWdoIHN0YW5kYXJkIGZ1enppbmcgb3IgY291bGQgYSBzdGF0aWMgYW5hbHl6ZXIgaGF2ZSBjb250cmlidXRlZD8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGF1dGhvciBvZiB0aGUgYHN5ei1jbHVzdGVyYCBjb2RlIGluIFN5emthbGxlci4uLlxuXG5IYW5nIG9uLCB0aGUgcHJvbXB0IHByb3ZpZGVzIHNvbWUgaW1wb3J0YW50IGNvbnRleHQuIEl0J3MgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyBrZXkuIFRoZSBgbWx4NWAgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXJzLCByZWFsIGhhcmR3YXJlLiBBbmQgdGhlIGtlcm5lbCAqZG9lc24ndCogaGF2ZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCwgdW5saWtlIHRoaW5ncyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBTbywgdGhlIGNvZGUgcGF0aHMgcmVsYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlciBhcmUgKmluaGVyZW50bHkqIHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2Agb3IgYSBzaW1pbGFyIG1haW4gZmlsZSwgdG8gZW5zdXJlIHRoZXJlIGlzIG5vIGhpZGRlbiBtb2NrIG9yIGVtdWxhdGlvbiBjb2RlLiBJdCdzIHVubGlrZWx5LCBidXQgaXQncyB3b3J0aCB0aGUgcXVpY2sgZG91YmxlLWNoZWNrIGJlZm9yZSBtYWtpbmcgYSBmaW5hbCBkZXRlcm1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzEzMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODo1MC44MjU1Njk5NDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzc0NTUwMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01MWDVfQ09SRV9FTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q9NT1FbmFibGluZyB0aGUgZHJpdmVyIGFuZCBrY29uZmlnIG9wdGlvbnNcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTEyLXwgQmFzaWMgZmVhdHVyZXMsIGV0aGVybmV0IG5ldCBkZXZpY2UgcngvdHggb2ZmbG9hZHMgYW5kIFhEUCwgYXJlIGF2YWlsYWJsZSB3aXRoIHRoZSBtb3N0IGJhc2ljIGZsYWdzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MTM6fCBDT05GSUdfTUxYNV9DT1JFPXkvbSBhbmQgQ09ORklHX01MWDVfQ09SRV9FTj15LlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjktXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zMS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjM3OioqQ09ORklHX01MWDVfQ09SRV9FTl9EQ0I9KHkvbikqKjpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ0LXwgICAgSVBvSUIgb2ZmbG9hZHMgXFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDYtfCAgICBJUG9JQiB1bHAgbmV0ZGV2aWNlLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTI9Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0MTM6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00MTQtIyBDT05GSUdfTkVUX1ZFTkRPUl9NRVRBIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTE3NT1DT05GSUdfTUxYNV9GUEdBPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoxNzY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc3LUNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc9MTU0PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjE1NTpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0xNTYtIyBDT05GSUdfTUxYNV9FTl9SWE5GQyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NTU1PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo1NTY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTU1Ny1DT05GSUdfTUxYNV9TRj15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9NTQ1PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTU0Ny1DT05GSUdfTUxYNV9TRj15XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cXHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjUtI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSArPSBlbi9ycXQubyBlbi90aXIubyBlbi9yc3MubyBlbi9yeF9yZXMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI3LVxcdFxcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT0zOT1tbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgKz0gZW5fZnNfZXRodG9vbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSArPSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDEtbWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBlbi9odl92aGNhX3N0YXRzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYz01Nz1ib29sIG1seDVfZXRoX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy01OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUxYNV9DT1JFX0VOKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNjAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEyLVxcdHN0cnVjdCBtbHg1ZV9kY2J4X2RwICAgICAgIGRjYnhfZHA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTctXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OS1cXHRzdHJ1Y3QgbWx4NWVfZGNieCAgICAgICAgICBkY2J4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaDo3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTEzMj12b2lkIG1seDVlX3NlbHFfY2FuY2VsKHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNDA6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTU0PXN0YXRpYyBpbnQgbWx4NWVfZ2V0X3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE1NjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1Ny1cXHRpZiAoUkVBRF9PTkNFKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUpID09IE1MWDVfUVBUU19UUlVTVF9EU0NQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNi1cXHRpZiAocHJpdi1cXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjM9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6MjY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjctYm9vbCBtbHg1X3NkX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNj12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM5LXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6NTIuNjYzMDMwNDA3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NTExMzI0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDpcblxuKipDaGVja2luZyBmb3IgRHVtbXkgSGFyZHdhcmUgaW4gYSBzeXprYWxsZXIgQ29udGV4dCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgbXkgdW5kZXJzdGFuZGluZyBjb3JyZWN0IHRoYXQgc3l6a2FsbGVyLCBhdCBzb21lIHBvaW50LCB1c2VzIGEgc29ydCBvZiBcImR1bW15XCIgUENJIGRldmljZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgZHVyaW5nIGl0cyB0ZXN0aW5nIHByb2Nlc3M/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgdGhhdCdzIHRoZSBjYXNlLCB0aGVuIG15IG5leHQgc3RlcCBpcyBjbGVhci5cblxuSSdsbCBzcGVjaWZpY2FsbHkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGtpbmQgb2YgXCJkdW1teVwiIG9yIHZpcnR1YWxpemVkIE1MWDUgKE1lbGxhbm94KSBkZXZpY2UgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgZW1wbG95aW5nLiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGZ1enplciBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSwgZXZlbiBpZiB0aGF0IGhhcmR3YXJlIGlzIGVtdWxhdGVkLiBUaGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHN1Y2ggYSBkZXZpY2Ugd2lsbCBiZSB0ZWxsaW5nIGFuZCB3aWxsIGRpY3RhdGUgaG93IEkgY29udGludWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzgxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTk6MDAuMjE0MTY2NTg0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE5MjE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwMDpzdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDg9aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTQzLVxcdGlmICghY3EtXFx1MDAzZWNvbXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTQ0OlxcdFxcdGNxLVxcdTAwM2Vjb21wID0gbWx4NV9jb3JlX2NxX2R1bW15X2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE0NS1cXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0yNz1pbnQgbWx4NWVfc2VscV9pbml0KHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxLCBzdHJ1Y3QgbXV0ZXggKnN0YXRlX2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTQyLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjQzOlxcdC8qIEFzc2lnbiBkdW1teSB2YWx1ZXMsIHNvIHRoYXQgbWx4NWVfc2VsZWN0X3F1ZXVlIHdvbid0IGNyYXNoLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtNDQtXFx0KmluaXRfcGFyYW1zID0gKHN0cnVjdCBtbHg1ZV9zZWxxX3BhcmFtcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYz0yODU9c3RhdGljIGludCBtbHg1aV9wa2V5X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jOjMwMTpcXHQvKiBVc2UgZHVtbXkgcnFzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0zMDItXFx0cHJpdi1cXHUwMDNlY2hhbm5lbHMucGFyYW1zLmxvZ19ycV9tdHVfZnJhbWVzID0gTUxYNUVfUEFSQU1TX01JTklNVU1fTE9HX1JRX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTIyNz1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MjYyOlxcdC8qIGNyZWF0ZSBkdW1teSBhY3Rpb24gdGVtcGxhdGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTI2My1cXHRid2NfbWF0Y2hlci1cXHUwMDNlYXRbMF0gPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz04NDM9aHdzX2J3Y19tYXRjaGVyX2ZpbmRfYXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy04NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo4NDk6XFx0Lyogc3RhcnQgZnJvbSBpbmRleCAxIC0gZmlyc3QgYWN0aW9uIHRlbXBsYXRlIGlzIGEgZHVtbXkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTg1MC1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgYndjX21hdGNoZXItXFx1MDAzZW51bV9vZl9hdDsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU5OjAwLjI3ODM2Njg3MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTMwODMxODUyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQb3RlbnRpYWwgS2VybmVsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgd2F5IHRvIHRyaWdnZXIgYSB2dWxuZXJhYmlsaXR5IGluIHRoZSBgbWx4NWAgY29kZSB0aHJvdWdoIGEgbm9uLU1lbGxhbm94IGhhcmR3YXJlIHBhdGguIEZpcnN0LCBJJ20gdGhpbmtpbmcsIGFyZSB0aGVyZSBhbnkgKm9idmlvdXMqIHZpcnR1YWwgZGV2aWNlcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBObywgbm90aGluZyBqdW1wcyBvdXQgaW5pdGlhbGx5LiBUaGVuIEkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzIHN5emthbGxlciB1c2VzOiBgdmhjaWAsIGBtYWM4MDIxMV9od3NpbWAsIGB2Y2FuYCwgYHZrbXNgLCBgdWlucHV0YCwgYHNuZC1hbG9vcGAuIEJ1dCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSB0aGV5J2QgZGlyZWN0bHkgcmVsYXRlIHRvIGBtbHg1YC5cblxuVGhlbiwgSSdtIHRoaW5raW5nLCB3aGF0IGFib3V0IHZpcnR1YWwgUkRNQSBkZXZpY2VzPyBNeSBrbm93bGVkZ2UgaXMgdGhhdCBgcmRtYV9yeGVgIChSb0NFIHYyKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBhcmUgdGhlcmUuIE5vdywgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGxpZXMgd2l0aCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCwgc3BlY2lmaWNhbGx5LiBJIHJlbWVtYmVyIHRoYXQgY29kZSBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNgLiBSaWdodCwgc28gaXQncyAqcGFydCogb2YgdGhlIE1lbGxhbm94IGNvcmUgZHJpdmVyLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBmb3IgTWVsbGFub3ggaGFyZHdhcmUgb25seS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsIGNhbiBgcmRtYV9yeGVgIG9yIGBzaXdgIHNvbWVob3cgY2FsbCBpbnRvIGBtbHg1YD8gSSBjaGVjayB0aGUgZHJpdmVyIGxvY2F0aW9ucywgd2hpY2ggYXJlIGluIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlYCBhbmQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXdgLCBzbyBubywgdGhleSBhcmUgc2VwYXJhdGUuIFNvIHRoYXQgcGF0aCBzZWVtcyBibG9ja2VkLlxuXG5TbywgdGhlIG5leHQgdGhvdWdodCBpczogYW0gSSBtaXNzaW5nIGEgcGF0aD8gSXMgdGhlcmUgKmFueSogY2hhbmNlIHRoYXQgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggKnNvbWUqIG90aGVyLCB1bmV4cGVjdGVkIHBhdGgsIGV2ZW4gaW5kaXJlY3RseT8gSSBuZWVkIHRvIGNoZWNrIGBtbHg1X3N0X2FsbG9jX2luZGV4YCBtb3JlIGNhcmVmdWxseSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBhbGlhc2luZyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBJIG1pZ2h0IGJlIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1OToxOS41ODY2ODkwNDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzgyNjA5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9hbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMjktXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlxcdFxcdGVyciA9IG1seDVfc3RfYWxsb2NfaW5kZXgobWRldiwgaWJkbWFoLVxcdTAwM2VtZW1fdHlwZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzEtXFx0XFx0XFx0XFx0XFx0ICBpYmRtYWgtXFx1MDAzZWNwdV9pZCwgXFx1MDAyNmRtYWgtXFx1MDAzZXN0X2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz04Mz12b2lkIG1seDVfc3RfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzo5NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg0LSNpZmRlZiBDT05GSUdfUENJRV9UUEhcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODc9aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODk6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTkwLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1OToyMS41MjQ5NTU3ODVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMjczMDI4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgTWVsbGFub3ggSGFyZHdhcmUgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmNgLiBJdCBsb29rcyBsaWtlIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFuZCB0aGUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBmaWxlLCB3aGljaCBpcyBwcmV0dHkgbG9jYWxpemVkLiBCb3RoIGFyZSB0dWNrZWQgYXdheSBpbiB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2AgZGlyZWN0b3J5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgaGFyZHdhcmUtc3BlY2lmaWMgY29kZSwgZ2VhcmVkIHRvd2FyZHMgTWVsbGFub3ggaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYW5kIEknbSBwcmV0dHkgY29uZmlkZW50IG9uIHRoaXMsIHRoYXQgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhbnkgbWVjaGFuaXNtcyB0byBkaXJlY3RseSBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlLCB0aGlzIGNvZGUgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC5cblxuTm93LCBob2xkIG9uLiBJcyB0aGVyZSAqYW55KiByZW1vdGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgUENJIGZ1enplciwgd2hpY2ggc3l6a2FsbGVyIHVzZXMsIGNvdWxkIGhpdCB0aGlzPyBUaGUgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCkgaXMga25vd24gdG8gc2ltdWxhdGUgUENJIGRldmljZXMgYnkgaW50ZXJjZXB0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMvd3JpdGVzIGFuZCBNZW1vcnktTWFwcGVkIEkvTyAoTU1JTykgb3BlcmF0aW9ucy4gVGhlIGlzc3VlIGlzLCB0byBldmVuIGdldCB0byBgbWx4NV9pYl9hbGxvY19kbWFoYCwgdGhlIG1seDUgZHJpdmVyIG5lZWRzIHRvIGhhdmUgcHJvYmVkIHN1Y2Nlc3NmdWxseS4gQW5kLCBsZXQncyBiZSBob25lc3QsIHRoYXQncyBub3QgdHJpdmlhbC4gVGhlIG1seDUgcHJvYmluZyBwcm9jZXNzIGludm9sdmVzIHNvbWUgcHJldHR5IGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIHRoYXQgcmVseSBvbiBhIGNvbW1hbmQgcXVldWUgKENRKSB3aXRoaW4gTU1JTyBzcGFjZS4gVGhlIGRyaXZlciB3cml0ZXMgYSBjb21tYW5kLCB0cmlnZ2VycyBhIGRvb3JiZWxsLCBhbmQgdGhlbiBlaXRoZXIgd2FpdHMgZm9yIGEgY29tcGxldGlvbiBldmVudCBvciBhY3RpdmVseSBwb2xscyBmb3IgdGhlIGNvbXBsZXRpb24uIFNvLCB0aGUgUENJIGZ1enplciB3b3VsZCBoYXZlIHRvIGFjY3VyYXRlbHkgZ3Vlc3MgdGhlIGZvcm1hdCBvZiB0aGUgY29tcGxldGlvbiBxdWV1ZSBlbnRyeSAoQ1FFKSBhbmQgc29tZWhvdyB3cml0ZSBpdCB0byB0aGUgKmV4YWN0KiBjb3JyZWN0IG1lbW9yeSBsb2NhdGlvbiBhdCBwcmVjaXNlbHkgdGhlIHJpZ2h0IHRpbWUuXG5cbldoaWxlIGl0J3MgdGhlb3JldGljYWxseSAqcG9zc2libGUqLCB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIFBDSSBmdXp6ZXIgYWNjaWRlbnRhbGx5IHN0dW1ibGluZyB1cG9uIHRoZSByaWdodCBjb21iaW5hdGlvbiBpcyBiYXNpY2FsbHkgemVyby4gQnV04oCmIHdhaXQgYSBtaW51dGUuICpTeXprYWxsZXIqIGRpZCBmaW5kIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBIb3cgZGlkIHN5emthbGxlciBkaXNjb3ZlciBhIGJ1ZyBoZXJlIGlmIHRoZSBwYXRoIHRvIHRoZSBjb2RlIHNlZW1zIHNvIGluY3JlZGlibHkgaGFyZCB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyBpdCBwb3NzaWJsZSB0aGF0IHN5emthbGxlciBoYXMgYSBmdXp6ZXIgKnNwZWNpZmljYWxseSogZGVzaWduZWQgZm9yIG1seDU/IEknbSBnb25uYSBjaGVjayB0aGUga2VybmVsIHRyZWUgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGFueSBkZWRpY2F0ZWQgbWx4NSBmdXp6aW5nIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTY0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjAwOjAwLjg1MjI2MTEyOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjU2OTM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXp6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzowMDowMC45NjI1MjcxMDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2ODYzNjg4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIC0gRmluYWwgQW5zd2VyOiBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJObywgaXQncyBwcm9iYWJseSBzeXprYWxsZXIuXCIgU3l6Ym90IGlzIHByZXR0eSBnb29kIGF0IHNuaWZmaW5nIG91dCB0aGVzZSB0aGluZ3MsIG1heWJlIGV2ZW4gdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMsIGFsdGhvdWdoIHRoaXMgaXMgYSBtZW1vcnkgbGVhaywgc28gS01TQU4gb3IgS0FTQU4gd291bGQgYmUgbW9yZSBsaWtlbHkuIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHN5emJvdCAqYWxzbyogcnVucyBvbiBiYXJlLW1ldGFsIGhhcmR3YXJlISBUaGF0J3MgdGhlIGNydWNpYWwgcG9pbnQuIFdlIGtub3cgc3l6Ym90IGhhcyBpbnN0YW5jZXMgd2l0aCBNZWxsYW5veCBuZXR3b3JrIGNhcmRzLlxuXG5TbywgdGhlIHBvc3NpYmlsaXR5IGlzIHRoZXJlOiBzeXpib3QsIG9uIGEgYmFyZS1tZXRhbCBNZWxsYW5veCBtYWNoaW5lLCAqY291bGQqIGhpdCB0aGlzIGNvZGUuIEJ1dCwgaGVyZSdzIHRoZSBraWNrZXI6IHRoZSBwcm9tcHQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBUaGlzIGlzIHRoZSBrZXkuXG5cblRoaXMgY29kZSwgYGtmcmVlKGlkeF9kYXRhKWAsIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIsICpyZXF1aXJlcyogYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkIHRvIGZ1bmN0aW9uLiBJdCdzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgd291bGQgYWxsb3cgaXQgdG8gYmUgcmVhY2hlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC5cblxuSSBzdGFydGVkIGRpZ2dpbmcuIEFyZSB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9ucz8gXCJEdW1teVwiLCBcIm1vY2tcIiAtIG5vdGhpbmcuIFdoYXQgYWJvdXQgYG5ldGRldnNpbWA/IE5vcGUsIHRoYXQncyBnZW5lcmljLiBgdmRwYWA/IEFoLCBgbWx4NV92ZHBhYCBleGlzdHMsIGJ1dCB0aGF0IHN0aWxsIHVsdGltYXRlbHkgbmVlZHMgdGhlIHBoeXNpY2FsIG1seDUgZGV2aWNlLiBTbywgdGhlIG9ubHkgd2F5IHRvIHJlYWNoIHRoaXMgaXMgdGhyb3VnaCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cblNvLCAqZmFsc2UqIGl0IGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhvcm91Z2guIEkgcmUtcmVhZCB0aGUgcHJvbXB0LCBhbmQgeWVzLCBpdCBwZXJmZWN0bHkgbGluZXMgdXAgd2l0aCB0aGUgY29uZGl0aW9uOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBUaGlzIG1seDUgZHJpdmVyLCB0aGUgYXNzb2NpYXRlZCBjb2RlIHBhdGgsIGlzIGZ1bmRhbWVudGFsbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4ndCByZWFjaCBpdC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggYW5kIG1ha2Ugc3VyZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MDQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MDA6MTEuNjQ4ODk4MjI0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY5MTA4OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfc3RfZGVhbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cXHRpZiAoaWJkbWFoLVxcdTAwM2V2YWxpZF9maWVsZHMgXFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDY6XFx0XFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVxcdTAwM2VzdF9pbmRleCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODk9c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTk1OnN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzowMDoxMy41MTgwMTI0MjVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MzA4NDY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFzb25pbmc6IE5vIEhhcmR3YXJlLCBObyBDYWxsKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCB0cmFja2VkIHdoZXJlIGl0J3MgY2FsbGVkLiBJdCdzIGV4Y2x1c2l2ZWx5IGludm9rZWQgZnJvbSBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgLiBOb3csIGBtbHg1X2liX2RlYWxsb2NfZG1haGAsIGFzIEkga25vdywgaXMgYW4gb3BlcmF0aW9uIHNwZWNpZmljIHRvIElCIChJbmZpbmlCYW5kKSBkZXZpY2VzLiBBbmQgdGhlc2UgSUIgZGV2aWNlcywgYXMgeW91IHdlbGwga25vdywgYXJlIHJlZ2lzdGVyZWQgYW5kIG1hbmFnZWQgYnkgdGhlIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBNZWxsYW5veCBkcml2ZXIgaW4gdGhpcyBpbnN0YW5jZS4gXG5cblRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nLCB0aGUgZHJpdmVyIHdvbid0IGV2ZW4gcHJvYmUgZm9yLCBsZXQgYWxvbmUgcmVnaXN0ZXIsIHRoZSBJQiBkZXZpY2UgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIG1lYW5zIHRoZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBzaW1wbHkgd29uJ3QgaGFwcGVuLiBObyBoYXJkd2FyZSwgbm8gZHJpdmVyIGludGVyYWN0aW9uLCBubyByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC4gU28sIGNvbnNpZGVyaW5nIHRoaXMgZGVwZW5kZW5jeSBvbiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGZ1enppbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUgaXMgcG9pbnRsZXNzLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjI5LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjAwOjE4LjI4MTA5OTk0NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzs6lq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 22:44:05 +0000 UTC FinishedAt: 2026-07-02 23:00:19 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMyMTVmZmNmZGRhODc1NjUzM2YzNmIxYzUxZjA2YjE1NmExNWIzYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIyOjU3OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNcbkBAIC0xNzUsNiAmIzQzOzE3NSw3IEBAIGludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuIFxuIFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZpZHhfZGF0YS1cdTAwM2V1c2Vjb3VudCkpIHtcbiBcdFx0eGFfZXJhc2UoXHUwMDI2c3QtXHUwMDNlaWR4X3hhLCBzdF9pbmRleCk7XG4mIzQzO1x0XHRrZnJlZShpZHhfZGF0YSk7XG4gXHRcdC8qIFdlIGxlYXZlIFBDSSBjb25maWcgc3BhY2UgYXMgd2FzIGJlZm9yZSwgbm8gbWtleSB3aWxsIHJlZmVyIHRvIGl0ICovXG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMjo1NzowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYwppbmRleCA5OTdiZTkxZjBhMTM1YS4uN2NlZGMzNDg3OTBkYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMKQEAgLTE3NSw2ICYjNDM7MTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpCiAKIAlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7aWR4X2RhdGEtJmd0O3VzZWNvdW50KSkgewogCQl4YV9lcmFzZSgmYW1wO3N0LSZndDtpZHhfeGEsIHN0X2luZGV4KTsKJiM0MzsJCWtmcmVlKGlkeF9kYXRhKTsKIAkJLyogV2UgbGVhdmUgUENJIGNvbmZpZyBzcGFjZSBhcyB3YXMgYmVmb3JlLCBubyBta2V5IHdpbGwgcmVmZXIgdG8gaXQgKi8KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgTGVhayBGaXggaW4gbWx4NSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNgLCBhbmQgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBmaXg6IGFkZGluZyBhIGBrZnJlZShpZHhfZGF0YSk7YCB0byBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YC4gTWVtb3J5IGxlYWssIGdvb2QgY2F0Y2guIE15IGZpcnN0IHRob3VnaHQsIHRob3VnaCwgaXMgaG93ICphY2Nlc3NpYmxlKiBpcyB0aGlzIGNvZGUsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBNZWxsYW5veCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyLCByaWdodD8gU28gdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkPwoKR2VuZXJhbGx5LCBJJiMzOTtkIHNheSBoYXJkd2FyZSBkcml2ZXJzIHdpdGhvdXQgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhcmUgYSBwYWluIHRvIGZ1enouIEl0IHVzdWFsbHkgbWVhbnMgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEJ1dCwgSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuLi4gbWF5YmUgdGhhdCBjb3VsZCB3b3JrPyBPciBpcyB0aGVyZSBzb21lIHdheSB0aGlzIGNvdWxkIGJlIHRyaWdnZXJlZCB0aHJvdWdoIGEgdmlydHVhbGl6ZWQgZGV2aWNlPyBUaGUgbWx4NSBjb2RlIGJhc2UgaXMgcHJldHR5IHNpZ25pZmljYW50LCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0ICpjYW4qIGJlIHJlYWNoZWQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBtbHg1IGRyaXZlciBjYW4gYmUgZnV6emVkLCBnaXZlbiBpdHMgY3VycmVudCBzdGF0ZS4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gdGhpcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBmdW5jdGlvbiBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9zdF9kZWFsbG9jX2luZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE4NS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyMAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6CgoqKkFuYWx5emluZyB0aGUgbWx4NV9zdF9kZWFsbG9jX2luZGV4IEZ1bmN0aW9uIENhbGxzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2Ygd2hhdGV2ZXIgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgbWFuYWdlcy4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGZpbmQgZXZlcnl3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBUaGF0IHdpbGwgdGVsbCBtZSB3aG8mIzM5O3MgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgd2hhdGV2ZXIgcmVzb3VyY2VzIHRoaXMgaW5kZXggcmVwcmVzZW50cywgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgZGVidWdnaW5nIG9yIG9wdGltaXphdGlvbiBsYXRlciBvbi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9zdF9kZWFsbG9jX2luZGV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0zOT1zdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ1LVx0aWYgKGliZG1haC1cdTAwM2V2YWxpZF9maWVsZHMgXHUwMDI2IEJJVChJQl9ETUFIX0NQVV9JRF9FWElTVFMpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjQ2Olx0XHRyZXR1cm4gbWx4NV9zdF9kZWFsbG9jX2luZGV4KG1kZXYsIGRtYWgtXHUwMDNlc3RfaW5kZXgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz0xNTU9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9hbGxvY19pbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE1NzppbnQgbWx4NV9zdF9kZWFsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBzdF9pbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xODUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2RlYWxsb2NfaW5kZXgpO1xuLS1cbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg1PWludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExODYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpO1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExODgtI2Vsc2VcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg5PXN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5NC19XG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE5NTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVhbGxvY2F0aW5nIERNQUggaW4gYSBWaXJ0dWFsaXplZCBJbmZpbmliYW5kIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgZXZlbiAqaGFwcGVuKiBpbiBhIHZpcnR1YWxpemVkIHNldHVwPyYjMzQ7IFRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciBpcyBub3RvcmlvdXNseSBoYXJkd2FyZS1kZXBlbmRlbnQuIEl0IG5lZWRzIHRoZSByZWFsIHNpbGljb24gdG8gaW5pdGlhbGl6ZS4gSSBrbm93IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgZnVsbCBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgbWx4NSDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyByb2FkYmxvY2suCgpCdXQgdGhlbiBJIHJlY2FsbCDigJMgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHZpcnR1YWwgZGV2aWNlIGNhcGFiaWxpdGllcyEgVVNCIHdpdGggdmhjaSwgd2lmaSB2aWEgbWFjODAyMTFfaHdzaW0sIHZjYW4gZm9yIENBTi4uLiBzbyB3aGF0IGFib3V0IG1seDU/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBub3RoaW5nIHNwZWNpZmljIHRvIG1seDUsIHdoaWNoIGlzIGEgbGV0ZG93bi4KCldhaXQsIHRoZXJlICppcyogYSBQQ0kgZnV6emVyIGluIHN5emthbGxlci4gSG1tLCBidXQgaXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgc2hhbGxvdy4gSXQgZ2VuZXJhbGx5IHdvbiYjMzk7dCBkaWcgZG93biBpbnRvIGRldmljZS1zcGVjaWZpYyBjb2RlIHVubGVzcyBpdCYjMzk7cyBiZWVuIGV4cGxpY2l0bHkgdGFyZ2V0ZWQuIFRoaXMgaXMgdW5saWtlbHkgdG8gZ2V0IHVzIGZhci4KCkFoLCByaWdodCEgYG1seDVfaWJfZGVhbGxvY19kbWFoYCBpcyBwYXJ0IG9mIHRoZSBJbmZpbmliYW5kIHN0YWNrLiBPa2F5LCBzbyB0aGF0IGNoYW5nZXMgdGhpbmdzLiBDYW4gd2UgaW50ZXJhY3Qgd2l0aCBJbmZpbmliYW5kIHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcz8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBuZWVkIHRvIGV4cGxvcmUgdGhlIHBvc3NpYmlsaXR5IG9mIG1vY2tpbmcgb3Igc2ltdWxhdGluZyB0aGUgbWx4NSBjb21wb25lbnRzIHN1ZmZpY2llbnRseSB0byByZWFjaCB0aGlzIGZ1bmN0aW9uIGFuZCB0cmlnZ2VyIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYSBmZWFzaWJsZSB3YXkgdG8gbW9jayBtbHg1IGZvciBvdXIgcHVycG9zZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjMyMyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NTg9c3RydWN0IG1seDVfZG1hX3Bvb2wge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYxLVx0c3RydWN0IGxpc3RfaGVhZCBwYWdlX2xpc3Q7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02My1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTc5PXN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjkwOnN0YXRpYyB2b2lkICptbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTEtXHRcdFx0XHRcdCAgIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTEwOT1zdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2Rlc3Ryb3koc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE1OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqbWx4NV9kbWFfcG9vbF9jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNi1cdFx0XHRcdFx0XHQgIGludCBub2RlLCB1OCBibG9ja19zaGlmdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0xMzM9bWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2MzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY0LVx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MjgzPXN0YXRpYyBzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDc9bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMDk6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzEwLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MzM2PURFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzODp2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTk6aW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzYwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4OS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyNT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI3OnZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQ0NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDQ3OnN0YXRpYyBzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqbWx4NV9hbGxvY19kYl9wZ2RpcihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ4LVx0XHRcdFx0XHRcdCBpbnQgbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz00NzY9c3RhdGljIGludCBtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIoc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMTppbnQgbWx4NV9kYl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTUyOD1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2RiX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI4Mz1zdGF0aWMgdm9pZCBwb2xsX3RpbWVvdXQoc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjg0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyODU6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gY29udGFpbmVyX29mKGVudC1cdTAwM2VjbWQsIHN0cnVjdCBtbHg1X2NvcmVfZGV2LCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI4Ni1cdHU2NCBjbWRfdG9fbXMgPSBtbHg1X3RvdXRfbXMoZGV2LCBDTUQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0zMzE9c3RhdGljIHZvaWQgZHVtcF9idWYodm9pZCAqYnVmLCBpbnQgc2l6ZSwgaW50IGRhdGFfb25seSwgaW50IG9mZnNldCwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjM0NzpzdGF0aWMgaW50IG1seDVfaW50ZXJuYWxfZXJyX3JldF92YWx1ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3AsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ4LVx0XHRcdFx0ICAgICAgIHUzMiAqc3luZCwgdTggKnN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9NzkzPXN0YXRpYyBpbnQgY21kX3N0YXR1c190b19lcnIodTggc3RhdHVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODE3OnZvaWQgbWx4NV9jbWRfb3V0X2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9ODI3PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfb3V0X2Vycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjgyOTpzdGF0aWMgdm9pZCBjbWRfc3RhdHVzX3ByaW50KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg0NTppbnQgbWx4NV9jbWRfY2hlY2soc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGVyciwgdm9pZCAqaW4sIHZvaWQgKm91dClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz04NzI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9jaGVjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg3NDpzdGF0aWMgdm9pZCBkdW1wX2NvbW1hbmQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NzUtXHRcdFx0IHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50LCBpbnQgaW5wdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTkzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5MzI6c3RhdGljIHZvaWQgbWx4NV9jbWRfY29tcF9oYW5kbGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU2NCB2ZWMsIGJvb2wgZm9yY2VkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTM0PXN0YXRpYyB2b2lkIGNiX3RpbWVvdXRfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTkzOS1cdFx0XHRcdFx0XHQgICAgIGNiX3RpbWVvdXRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTQwOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihlbnQtXHUwMDNlY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NDEtXHRcdFx0XHRcdFx0IGNtZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjE6c3RhdGljIHZvaWQgZnJlZV9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY21kX21zZyAqbXNnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NjMtXHRcdFx0ICAgICAgc3RydWN0IG1seDVfY21kX21zZyAqbXNnKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTY1PXN0YXRpYyBib29sIG9wY29kZV9hbGxvd2VkKHN0cnVjdCBtbHg1X2NtZCAqY21kLCB1MTYgb3Bjb2RlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTczOmJvb2wgbWx4NV9jbWRfaXNfZG93bihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTk4MD1zdGF0aWMgdm9pZCBjbWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg1LVx0c3RydWN0IG1seDVfY21kX2xheW91dCAqbGF5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk4NjpcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg3LVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTk0Olx0ZGV2ID0gY29udGFpbmVyX29mKGNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTk1LVx0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMobWx4NV90b3V0X21zKGRldiwgQ01EKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTExNDA9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE0NDpzdGF0aWMgdm9pZCB3YWl0X2Z1bmNfaGFuZGxlX2V4ZWNfdGltZW91dChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNDUtXHRcdFx0XHRcdCAgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE2OTpzdGF0aWMgaW50IHdhaXRfZnVuYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTcwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE2OnN0YXRpYyBib29sIG1seDVfY21kX2FsbF9zdGFsbGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEyNTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTI1OTpzdGF0aWMgaW50IG1seDVfY21kX2ludm9rZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICppbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjYwLVx0XHRcdCAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTMzNz1zdGF0aWMgc3NpemVfdCBkYmdfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEzMzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEzNDA6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTM0MS1cdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXHUwMDI2ZGV2LVx1MDAzZWNtZC5kYmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE0MDQ9c3RhdGljIGludCBtbHg1X2NvcHlfZnJvbV9tc2codm9pZCAqdG8sIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmZyb20sIGludCBzaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0Mzc6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tYWlsYm94ICphbGxvY19jbWRfYm94KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQzOC1cdFx0XHRcdFx0ICAgICAgZ2ZwX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTQ1ODpzdGF0aWMgdm9pZCBmcmVlX2NtZF9ib3goc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDU5LVx0XHRcdCBzdHJ1Y3QgbWx4NV9jbWRfbWFpbGJveCAqbWFpbGJveClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQ2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDY1OnN0YXRpYyBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptbHg1X2FsbG9jX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDY2LVx0XHRcdFx0XHQgICAgICAgZ2ZwX3QgZmxhZ3MsIGludCBzaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1MTI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTEzLVx0XHRcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTUyNj1zdGF0aWMgc3NpemVfdCBkYXRhX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTI4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTI5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MzAtXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTUwPXN0YXRpYyBzc2l6ZV90IGRhdGFfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTUzOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1NTQtXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTcwPXN0YXRpYyBzc2l6ZV90IG91dGxlbl9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1NzM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3NC1cdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXHUwMDI2ZGV2LVx1MDAzZWNtZC5kYmc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE1ODU9c3RhdGljIHNzaXplX3Qgb3V0bGVuX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTg3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTg4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1ODktXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFx1MDAyNmRldi1cdTAwM2VjbWQuZGJnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNjIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG9sZm9wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjI4OnN0YXRpYyB2b2lkIHNldF93cW5hbWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjM2OnN0YXRpYyB2b2lkIGNsZWFuX2RlYnVnX2ZpbGVzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY0NjpzdGF0aWMgdm9pZCBjcmVhdGVfZGVidWdmc19maWxlcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2NTk6dm9pZCBtbHg1X2NtZF9hbGxvd2VkX29wY29kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2NzU6c3RhdGljIHZvaWQgbWx4NV9jbWRfY2hhbmdlX21vZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTY5MT1zdGF0aWMgaW50IGNtZF9jb21wX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2OTQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTUtXHRzdHJ1Y3QgbWx4NV9jbWQgKmNtZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY5OC1cdGNtZCA9IG1seDVfbmJfY29mKG5iLCBzdHJ1Y3QgbWx4NV9jbWQsIG5iKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjk5Olx0ZGV2ID0gY29udGFpbmVyX29mKGNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcwMC1cdGVxZSA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MDgtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MDk6dm9pZCBtbHg1X2NtZF91c2VfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTcxNjp2b2lkIG1seDVfY21kX3VzZV9wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTcyMjpzdGF0aWMgdm9pZCBmcmVlX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTczNTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jb21wX2hhbmRsZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTY0IHZlYywgYm9vbCBmb3JjZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTczNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTgzOTpzdGF0aWMgdm9pZCBtbHg1X2NtZF90cmlnZ2VyX2NvbXBsZXRpb25zKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg3NDp2b2lkIG1seDVfY21kX2ZsdXNoKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg5NzpzdGF0aWMgc3RydWN0IG1seDVfY21kX21zZyAqYWxsb2NfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBpbl9zaXplLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4OTgtXHRcdFx0XHQgICAgICBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTE5MzU9c3RhdGljIGludCBpc19tYW5hZ2VfcGFnZXModm9pZCAqaW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk0MDpzdGF0aWMgYm9vbCBtbHg1X2hhc19wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NDU6c3RhdGljIGJvb2wgbWx4NV9jbWRfaXNfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ2LVx0XHRcdFx0ICAgICAgIHUxNiB1aWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk1NTpzdGF0aWMgaW50IGNtZF9leGVjKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTYtXHRcdCAgICBpbnQgb3V0X3NpemUsIG1seDVfY21kX2Nia190IGNhbGxiYWNrLCB2b2lkICpjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwMzY6c3RhdGljIHZvaWQgbWx4NV9jbWRfZXJyX3RyYWNlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcGNvZGUsIHUxNiBvcF9tb2QsIHZvaWQgKm91dClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMDQ2OnN0YXRpYyB2b2lkIGNtZF9zdGF0dXNfbG9nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcGNvZGUsIHU4IHN0YXR1cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDQ3LVx0XHRcdCAgIHUzMiBzeW5kcm9tZSwgaW50IGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA3MS0vKiBwcmVzZXJ2ZSAtRVJFTU9URUlPIGZvciBvdXRib3guc3RhdHVzICE9IE9LLCBvdGhlcndpc2UgcmV0dXJuIGVyciBhcyBpcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNzI6c3RhdGljIGludCBjbWRfc3RhdHVzX2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgZXJyLCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjA3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjEwNzppbnQgbWx4NV9jbWRfZG8oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqaW4sIGludCBpbl9zaXplLCB2b2lkICpvdXQsIGludCBvdXRfc2l6ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTA4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjExNT1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2RvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTI5OmludCBtbHg1X2NtZF9leGVjKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMzAtXHRcdCAgaW50IG91dF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTM2PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfZXhlYyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE1MjppbnQgbWx4NV9jbWRfZXhlY19wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTUzLVx0XHRcdCAgdm9pZCAqb3V0LCBpbnQgb3V0X3NpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE2NDp2b2lkIG1seDVfY21kX2luaXRfYXN5bmNfY3R4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cdFx0XHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTg5PXN0YXRpYyB2b2lkIG1seDVfY21kX2V4ZWNfY2JfaGFuZGxlcihpbnQgc3RhdHVzLCB2b2lkICpfd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5Mi1cdHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxOTM6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxOTQtXHRib29sIHRocm90dGxlX2xvY2tlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjIxND1pbnQgbWx4NV9jbWRfZXhlY19jYihzdHJ1Y3QgbWx4NV9hc3luY19jdHggKmN0eCwgdm9pZCAqaW4sIGludCBpbl9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMjE4Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGN0eC1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjIxOS1cdHUxNiB1aWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIyNjg9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX2NiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIyNzA6aW50IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjI3MS1cdFx0XHRcdCAgICAgc3RydWN0IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzX2F0dHIgKmF0dHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIyODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjI5MDppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIyOTEtXHRcdFx0ICAgICAgc3RydWN0IG1seDVfY21kX2FsaWFzX29ial9jcmVhdGVfYXR0ciAqYWxpYXNfYXR0cixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzI2OmludCBtbHg1X2NtZF9hbGlhc19vYmpfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgb2JqX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzMjctXHRcdFx0ICAgICAgIHUxNiBvYmpfdHlwZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzM5OnN0YXRpYyB2b2lkIGRlc3Ryb3lfbXNnX2NhY2hlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIzNTk9c3RhdGljIHVuc2lnbmVkIGNtZF9jYWNoZV9lbnRfc2l6ZVtNTFg1X05VTV9DT01NQU5EX0NBQ0hFU10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM2NzpzdGF0aWMgdm9pZCBjcmVhdGVfbXNnX2NhY2hlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5MzpzdGF0aWMgaW50IGFsbG9jX2NtZF9wYWdlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZCAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MjI6c3RhdGljIHZvaWQgZnJlZV9jbWRfcGFnZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWQgKmNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDI4OnN0YXRpYyB1MTYgY21kaWZfcmV2KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQzMzppbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0NTQ6dm9pZCBtbHg1X2NtZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQ2MjppbnQgbWx4NV9jbWRfZW5hYmxlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ2My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU0ODp2b2lkIG1seDVfY21kX2Rpc2FibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNTYwOnZvaWQgbWx4NV9jbWRfc2V0X3N0YXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2MS1cdFx0XHRlbnVtIG1seDVfY21kaWZfc3RhdGUgY21kaWZfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU2NjppbnQgbWx4NV9jbWRfYWRkX3ByaXZpbGVnZWRfdWlkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiB1aWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI1NzE9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9hZGRfcHJpdmlsZWdlZF91aWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU3Mzp2b2lkIG1seDVfY21kX3JlbW92ZV9wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgdWlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTEwMD1zdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwNy0vKiBDYWxsZXJzIG11c3QgdmVyaWZ5IG91dGJveCBzdGF0dXMgaW4gY2FzZSBvZiBlcnIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwODppbnQgbWx4NV9jcmVhdGVfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xMDktXHRcdCAgIHUzMiAqaW4sIGludCBpbmxlbiwgdTMyICpvdXQsIGludCBvdXRsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTc4PUVYUE9SVF9TWU1CT0wobWx4NV9jcmVhdGVfY3EpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4MC0vKiBvdWJveCBpcyBjaGVja2VkIGFuZCBlcnIgdmFsIGlzIG5vcm1hbGl6ZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjE4MTppbnQgbWx4NV9jb3JlX2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4Mi1cdFx0XHR1MzIgKmluLCBpbnQgaW5sZW4sIHUzMiAqb3V0LCBpbnQgb3V0bGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTE4OD1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9jcmVhdGVfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTkwOmludCBtbHg1X2NvcmVfZGVzdHJveV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE5MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MjEzPUVYUE9SVF9TWU1CT0wobWx4NV9jb3JlX2Rlc3Ryb3lfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MjE1OmludCBtbHg1X2NvcmVfcXVlcnlfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0yMTYtXHRcdCAgICAgICB1MzIgKm91dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMjQ9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfcXVlcnlfY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MjI2OmludCBtbHg1X2NvcmVfbW9kaWZ5X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI3LVx0XHRcdHUzMiAqaW4sIGludCBpbmxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMzU9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfbW9kaWZ5X2NxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjIzNzppbnQgbWx4NV9jb3JlX21vZGlmeV9jcV9tb2RlcmF0aW9uKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0yMzgtXHRcdFx0XHQgICBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTk2PXZvaWQgbWx4NV91bnJlZ2lzdGVyX2RlYnVnZnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTEwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTAxOnN0cnVjdCBkZW50cnkgKm1seDVfZGVidWdmc19nZXRfZGV2X3Jvb3Qoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTAyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTEwNT1FWFBPUlRfU1lNQk9MKG1seDVfZGVidWdmc19nZXRfZGV2X3Jvb3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjEwNzp2b2lkIG1seDVfcXBfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTEwOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz0xMTE9RVhQT1JUX1NZTUJPTChtbHg1X3FwX2RlYnVnZnNfaW5pdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTEzOnZvaWQgbWx4NV9xcF9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTExNz1FWFBPUlRfU1lNQk9MKG1seDVfcXBfZGVidWdmc19jbGVhbnVwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMTk6dm9pZCBtbHg1X2VxX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMjQ6dm9pZCBtbHg1X2VxX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MjAyPW1seDVfY21kaWZfYWxsb2Nfc3RhdHMoc3RydWN0IHhhcnJheSAqc3RhdHNfeGEsIGludCBvcGNvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjIxOTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTIyMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI1OTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3MDp2b2lkIG1seDVfY3FfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3NTp2b2lkIG1seDVfY3FfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI4MDp2b2lkIG1seDVfcGFnZXNfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI4MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5NDp2b2lkIG1seDVfcGFnZXNfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5OTp2b2lkIG1seDVfcGFnZXNfYnlfZnVuY190eXBlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzozMjM6dm9pZCBtbHg1X3BhZ2VzX2J5X2Z1bmNfdHlwZV9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MzM3OnN0YXRpYyB1NjQgcXBfcmVhZF9maWVsZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX3FwICpxcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzM4LVx0XHRcdCBpbnQgaW5kZXgsIGludCAqaXNfc3RyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0MTc6c3RhdGljIHU2NCBlcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDE4LVx0XHRcdCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjQ1NzpzdGF0aWMgdTY0IGNxX3JlYWRfZmllbGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTQ1OC1cdFx0XHQgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjUzODpzdGF0aWMgaW50IGFkZF9yZXNfdHJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIGRiZ19yc2NfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzktXHRcdFx0c3RydWN0IGRlbnRyeSAqcm9vdCwgc3RydWN0IG1seDVfcnNjX2RlYnVnICoqZGJnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTY2PXN0YXRpYyB2b2lkIHJlbV9yZXNfdHJlZShzdHJ1Y3QgbWx4NV9yc2NfZGVidWcgKmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjU3MjppbnQgbWx4NV9kZWJ1Z19xcF9hZGQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01ODc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX2FkZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTg5OnZvaWQgbWx4NV9kZWJ1Z19xcF9yZW1vdmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01OTc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX3JlbW92ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTU5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTk5OmludCBtbHg1X2RlYnVnX2VxX2FkZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lcSAqZXEpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODEyMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRGV2aWNlIERyaXZlciBhbmQgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiB0aGUgYG1seDVfY29yZV9kZXZgIHN0cnVjdHVyZSDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWx4NSBkZXZpY2UsIHJpZ2h0PyBOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGRyaXZlciBoYXZlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24/IE5vLCBpdCYjMzk7cyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gT2theSwgbmV4dCBJIHRoaW5rLCBTeXprYWxsZXIsIHRoZSBzeXN0ZW0gY2FsbCBmdXp6ZXIsIGhhcyBhIFBDSSBmdXp6ZXIuLi4gaW50cmlndWluZy4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgUENJIGZ1enplciB0byByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seDVfc3RfZGVhbGxvY19pbmRleGA/IEl0JiMzOTtzIHdvcnRoIGludmVzdGlnYXRpbmcuCgpMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGEgcGF0aCBmcm9tIFBDSSBwcm9iZSBvciBzaW1pbGFyIHRvIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgLiBUaGUgY2FsbCBzdGFjayBpbmRpY2F0ZXMgdGhhdCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBpcyBjYWxsZWQgZnJvbSBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgLiBBaGEsIGFuZCBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGxpdmVzIGluIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmNgLi4uIEdvb2QsIHdlJiMzOTtyZSBnZXR0aW5nIHdhcm1lciEgTm93IGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24gaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2liX2RlYWxsb2NfZG1haCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9MTM9c3RhdGljIGludCBtbHg1X2liX2FsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6Mzk6c3RhdGljIGludCBtbHg1X2liX2RlYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQwLVx0XHRcdFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTUxPWNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG1seDVfaWJfZGV2X2RtYWhfb3BzID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVx0LmFsbG9jX2RtYWggPSBtbHg1X2liX2FsbG9jX2RtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NTM6XHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNTQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MDUKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJQiBEZXZpY2UgRGVhbGxvY2F0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkZWFsbG9jX2RtYWhgLCBhbiBJQiBkZXZpY2Ugb3BlcmF0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBmYWN0IHRoYXQgSW5maW5pYmFuZCBoYXMgdGhpbmdzIGxpa2UgYHJkbWFfcnhlYCAoYSBSb0NFIHYyIHNvZnR3YXJlIGVtdWxhdG9yKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIHdheS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBtbHg1X2liYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBNZWxsYW5veCBDb25uZWN0WC00JiM0MzsgaGFyZHdhcmUuCgpUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIGBtbHg1X2liYCBkcml2ZXIgKndvbiYjMzk7dCogaW5pdGlhbGl6ZSwgYW5kIGNvbnNlcXVlbnRseSwgaXRzIElCIGRldmljZSBvcGVyYXRpb25zLCBpbmNsdWRpbmcgYGRlYWxsb2NfZG1haGAsIHdvbiYjMzk7dCBnZXQgcmVnaXN0ZXJlZC4gU28sIHRoZSBkaXJlY3QgcGF0aCBzZWVtcyBibG9ja2VkLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIENvdWxkIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMsIGJlIGxldmVyYWdlZCBoZXJlPyBDb3VsZCBpdCBzaW11bGF0ZSAqZW5vdWdoKiBvZiB0aGUgbWx4NSBoYXJkd2FyZSB0byB0cmljayB0aGUgc3lzdGVtIGludG8gcmVnaXN0ZXJpbmcgdGhlIElCIGRldmljZT8KCkhvd2V2ZXIsIHRoZSBtbHg1IGRyaXZlciBpcyBub3RvcmlvdXNseSBjb21wbGV4LiBJdCB0YWxrcyB0byB0aGUgZmlybXdhcmUgdXNpbmcgYSBjb21tYW5kIHF1ZXVlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGh1cmRsZS4gU2ltdWxhdGluZyB0aGUgcmVxdWlyZWQgZmlybXdhcmUgcmVzcG9uc2VzIGZvciBgbWx4NWAgdG8gc3VjY2Vzc2Z1bGx5IHByb2JlIGFuZCByZWdpc3RlciB0aGUgSUIgZGV2aWNlIGlzIHByYWN0aWNhbGx5IGltcG9zc2libGUgd2l0aCBhIGdlbmVyaWMgUENJIGZ1enplci4gSXQmIzM5O3MganVzdCB0b28gbXVjaCBkZXRhaWwuCgpTbywgcmVhbGlzdGljYWxseSwgYSBnZW5lcmljIGFwcHJvYWNoIGlzIGEgZGVhZCBlbmQuIEkgbmVlZCB0byBwaXZvdC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc3BlY2lhbGl6ZWQgbWx4NSBmdXp6ZXIgb3IgbW9jayBmcmFtZXdvcmsgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBrZXJuZWwuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyB0ZXN0IHNldHVwIG9yIGluc3RydW1lbnRhdGlvbiBJIGNhbiBsZXZlcmFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3RpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weT0zNT1CYW5kd2lkdGggRGlzdHJpYnV0aW9uOlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00MS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTo0MjpIYXJkd2FyZS1TcGVjaWZpYyBCZWhhdmlvciAobWx4NSk6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTo0NDptbHg1IGhhcmR3YXJlIGVuZm9yY2VzIHRyYWZmaWMgY2xhc3Mgc2VwYXJhdGlvbiBieSBlbnN1cmluZyB0aGF0IGVhY2ggdHJhbnNtaXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00NS1xdWV1ZSAoU1EpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBUQy4gSWYgYSBwYWNrZXQgaXMgc2VudCBvbiBhIHF1ZXVlIHRoYXRcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk9Mzg4PWRlZiB0ZXN0X25vX3RjX21hcHBpbmdfYmFuZHdpZHRoKGNmZyk6XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5My0gICAgZmFpbF9id19tc2cgPSBcJiMzNDtCYW5kd2lkdGggbWF0Y2hlZCAyMC84MCBzcGxpdCB3aXRob3V0IFRDIG1hcHBpbmdcJiMzNDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTQ6ICAgIGlzX21seDUgPSBcJiMzNDtkcml2ZXI6IG1seDVcJiMzNDsgaW4gZXRodG9vbChmXCYjMzQ7LWkge2NmZy5pZm5hbWV9XCYjMzQ7KS5zdGRvdXRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS0zOTUtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk2LSAgICBpZiBydW5fYmFuZHdpZHRoX2Rpc3RyaWJ1dGlvbl90ZXN0KGNmZywgc2V0X3RjX21hcHBpbmc9RmFsc2UpOlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjM5NzogICAgICAgIGlmIGlzX21seDU6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk4LSAgICAgICAgICAgIHJhaXNlIEtzZnRYZmFpbEV4KGZhaWxfYndfbXNnKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5OS0gICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoZmFpbF9id19tc2cpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDAwOiAgICBpZiBpc19tbHg1OlxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQwMTogICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoXCYjMzQ7bWx4NSBiZWhhdmlvciBjaGFuZ2VkOlwmIzM0OyAmIzQzOyBwYXNzX2J3X21zZylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS00MDItICAgIGtzZnRfcHIocGFzc19id19tc2cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjMwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIG5vIGltbWVkaWF0ZSBsZWFkcyBmcm9tIHRoZSBleGlzdGluZyBtb2Nrcy4gQnV0IHdhaXQsIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlOiBzeXprYWxsZXIgb2ZmZXJzIGBzeXpfbW91bnRfaW1hZ2VgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIGZvciBtb3VudGluZyBmaWxlc3lzdGVtcyBhbmQgbWFuaXB1bGF0aW5nIFVTQiBkZXZpY2VzLCByZXNwZWN0aXZlbHkuIEZvciBQQ0kgaW50ZXJhY3Rpb25zLCBJJiMzOTttIGFscmVhZHkgZmFtaWxpYXIgd2l0aCBgc3l6X3BjaV9kZXZpY2VgIG9yIHNpbWlsYXIgZ2VuZXJpYyBjYWxscyB3aXRoaW4gc3l6a2FsbGVyLCBidXQgdGhleSYjMzk7cmUgbm90IGFsd2F5cyBzcGVjaWZpYyBlbm91Z2guCgpTbywgdGhlIGJ1cm5pbmcgcXVlc3Rpb24gaXM6IGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFjdHVhbGx5IHJlYWNoYWJsZT8gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZS4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZXhhbWluZSBgbWx4NV9zdF9hbGxvY19pbmRleGAuIElmIEkgY2FuIHRyYWNlIHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyB1c2VkLCBpdCBtaWdodCBzaGVkIGxpZ2h0IG9uIGhvdyB3ZSBjYW4gdHJpZ2dlciBgZGVhbGxvY19pbmRleGAgb3IgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgcG90ZW50aWFsIGJ1Zy4gVGhpcyBpcyBhIGNsYXNzaWMgZGVwZW5kZW5jeSBhbmFseXNpcyBhcHByb2FjaC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfYWxsb2NfaW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTI5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlx0XHRlcnIgPSBtbHg1X3N0X2FsbG9jX2luZGV4KG1kZXYsIGliZG1haC1cdTAwM2VtZW1fdHlwZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zMS1cdFx0XHRcdFx0ICBpYmRtYWgtXHUwMDNlY3B1X2lkLCBcdTAwMjZkbWFoLVx1MDAzZXN0X2luZGV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9ODM9dm9pZCBtbHg1X3N0X2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6OTU6aW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSB0cGhfbWVtX3R5cGUgbWVtX3R5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4NC0jaWZkZWYgQ09ORklHX1BDSUVfVFBIXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg3PWludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4OTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5MC1cdFx0XHRcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTMxNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgVW5yZWFjaGFibGU6IEEgU3l6a2FsbGVyIE15c3RlcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRtYWguY2AgZmlsZSBpbiB0aGUgSW5maW5pYmFuZCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBtbHg1YCBoYXJkd2FyZSBkaXJlY3RvcnkuICBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIGNvZGUgaXMgTWVsbGFub3gtc3BlY2lmaWMuICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB1bnJlYWNoYWJsZSBieSBkZWZhdWx0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgbmF0aXZlIE1lbGxhbm94IGhhcmR3YXJlIG9yIGEgZGVkaWNhdGVkIGVtdWxhdG9yLCByaWdodD8gSSBtZWFuLCB0aGF0JiMzOTtzIHRoZSB1c3VhbCBzaXR1YXRpb24gd2l0aCB0aGVzZSBzcGVjaWFsaXplZCBkcml2ZXJzLiAgCgpCdXQgdGhlbiBJIHNlZSB0aGUgY29tbWl0IG1lc3NhZ2XigKYgd2FpdCwgdGhlcmUmIzM5O3MgYSAmIzM0O3N5ei1jbHVzdGVyJiMzNDsgdGFnISAgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gSG1tLiAqVGhhdCYjMzk7cyogaW50ZXJlc3RpbmcuICBDb3VsZCBzeXprYWxsZXIgaGF2ZSBhY3R1YWxseSBoaXQgYSBidWcgaW4gdGhpcyBNZWxsYW5veC1zcGVjaWZpYyBjb2RlPyBUaGF0IHdvdWxkIG1lYW4gaXQgKmlzKiByZWFjaGFibGUgc29tZWhvdywgd2hpY2ggaXMgY29tcGxldGVseSBjb250cmFyeSB0byBteSBpbml0aWFsIGFzc3VtcHRpb24uIFRoYXQgd291bGQgYmUgcXVpdGUgYSBmaW5kLCBpZiB0cnVlLgoKT2theSwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gSG93IGNvdWxkIHN5emthbGxlciwgd2hpY2ggdHlwaWNhbGx5IG9wZXJhdGVzIGluIGEgZ2VuZXJpYyBlbnZpcm9ubWVudCwgdHJpZ2dlciBzb21ldGhpbmcgaW4gTWVsbGFub3ggaGFyZHdhcmU/ICBUaGUga2V5IG1pZ2h0IGJlIGhvdyBzeXprYWxsZXIgbW9kZWxzIGRldmljZXMuIE1heWJlLi4uICBDb3VsZCBpdCBiZSB0aGUgYHN5el9wY2lfZGV2aWNlYCBjYWxscz8gSXQgbXVzdCBiZSBzb21lIFBDSS1yZWxhdGVkIHNldHVwIHRoYXQgaXMgcmVhY2hpbmcgdGhpcyBzcGVjaWZpYyBjb2RlLiBUaW1lIHRvIGRpZyBpbnRvIHN5emthbGxlciYjMzk7cyBQQ0kgZGVzY3JpcHRpb25zLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBtbHg1LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgbWFuYWdpbmcgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGJlYXJzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfaWIuYz04NDE9bG9uZyBzbWNfaWJfc2V0dXBfcGVyX2liZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbi0tXG5uZXQvc21jL3NtY19pYi5jLTg1MS1cdFx0Z290byBvdXQ7XG5uZXQvc21jL3NtY19pYi5jOjg1MjpcdC8qIHRoZSBjYWxjdWxhdGVkIG51bWJlciBvZiBjcSBlbnRyaWVzIGZpdHMgdG8gbWx4NSBjcSBhbGxvY2F0aW9uICovXG5uZXQvc21jL3NtY19pYi5jLTg1My1cdGNxZV9zaXplX29yZGVyID0gY2FjaGVfbGluZV9zaXplKCkgPT0gMTI4ID8gNyA6IDY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgUG90ZW50aWFsIEJ1ZyoqCgpPa2F5LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjay4gSSBzaG91bGQgZmlyc3QgdmVyaWZ5IGlmIGEgbW9jayBlbnZpcm9ubWVudCBleGlzdHMgZm9yIHRoaXMgc2V0dXAsIG9yIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBldmVuIHRyaWdnZXIgdGhpcyBpc3N1ZS4gSXQmIzM5O3MgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHN0YXRpYyBhbmFseXNpcyBvciBiZWNhdXNlIGFub3RoZXIgZnV6emVyIGZvdW5kIHNvbWV0aGluZy4gSXTigJlzIGFsc28gcG9zc2libGUgdGhhdCB0aGVyZeKAmXMgYSB3YXkgdG8gaGl0IHRoaXMgdGhyb3VnaCBhIGR1bW15IGRldmljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgc3RhcnQgdGhpbmtpbmcgaXTigJlzIHJlbGF0ZWQgdG8gcHJvZHVjdGlvbiBoYXJkd2FyZS4KClJpZ2h0LCBsZXQmIzM5O3MgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uY2AuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQgbG9va2luZy4gSSYjMzk7bGwgY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgcHJvYmVkIHRoZXJlLiBDYW4gaXQgYmUgYnJvdWdodCB1cCBhbmQgaW5pdGlhbGl6ZWQgd2l0aG91dCBhY3R1YWxseSByZXF1aXJpbmcgYSBwaHlzaWNhbCBwaWVjZSBvZiBoYXJkd2FyZT8gVGhhdCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gcmVwcm9kdWNlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9pYl9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM9MzQ3PWludCBtbHg1X2liX2dzaV9xdWVyeV9xcChzdHJ1Y3QgaWJfcXAgKnFwLCBzdHJ1Y3QgaWJfcXBfYXR0ciAqcXBfYXR0cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy0zNjAtLyogQ2FsbCB3aXRoIGdzaS1cdTAwM2Vsb2NrIGxvY2tlZCAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6MzYxOnN0YXRpYyBpbnQgbWx4NV9pYl9hZGRfb3V0c3RhbmRpbmdfd3Ioc3RydWN0IG1seDVfaWJfcXAgKm1xcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jLTM2Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBpYl91ZF93ciAqd3IsIHN0cnVjdCBpYl93YyAqd2MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM9MzkzPXN0YXRpYyBpbnQgbWx4NV9pYl9nc2lfc2lsZW50X2Ryb3Aoc3RydWN0IG1seDVfaWJfcXAgKm1xcCwgc3RydWN0IGliX3VkX3dyICp3cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYzo0MDM6XHRyZXQgPSBtbHg1X2liX2FkZF9vdXRzdGFuZGluZ193cihtcXAsIHdyLCBcdTAwMjZ3Yyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jPTQzMT1pbnQgbWx4NV9pYl9nc2lfcG9zdF9zZW5kKHN0cnVjdCBpYl9xcCAqcXAsIGNvbnN0IHN0cnVjdCBpYl9zZW5kX3dyICp3cixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00NTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYzo0NTU6XHRcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgXHUwMDI2Y3VyX3dyLCBOVUxMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jLTQ1Ni1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTg9bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jLTE5My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjE5NDpcdHJldCA9IF9fbWx4NV9pYl9hZGQoaWJkZXYsIHByb2ZpbGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTk1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NjQxPWludCBzZXRfcm9jZV9hZGRyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCB1MzIgcG9ydF9udW0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo2ODE6c3RhdGljIGludCBtbHg1X2liX2FkZF9naWQoY29uc3Qgc3RydWN0IGliX2dpZF9hdHRyICphdHRyLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4Mi1cdFx0XHQgICBfX2Fsd2F5c191bnVzZWQgdm9pZCAqKmNvbnRleHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTQ1MDE9c3RhdGljIGludCBtbHg1X2liX3N0YWdlX2luaXRfaW5pdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU3NC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0NTc1OnN0YXRpYyBzdHJ1Y3QgaWJfZGV2aWNlICptbHg1X2liX2FkZF9zdWJfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKnBhcmVudCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTc2LVx0XHRcdFx0XHQgICAgIGVudW0gcmRtYV9ubF9kZXZfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX29wcyBtbHg1X2liX2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDU4NTpcdC5hZGRfZ2lkID0gbWx4NV9pYl9hZGRfZ2lkLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODY6XHQuYWRkX3N1Yl9kZXYgPSBtbHg1X2liX2FkZF9zdWJfZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODctXHQuYWxsb2NfbXIgPSBtbHg1X2liX2FsbG9jX21yLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz01MDk2PXZvaWQgX19tbHg1X2liX3JlbW92ZShzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTExMi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MTEzOmludCBfX21seDVfaWJfYWRkKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTQtXHRcdCAgY29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSAqcHJvZmlsZSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTI2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG1seDVfaWJfcHJvZmlsZSBwbGFuZV9wcm9maWxlID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MjkxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUyOTI6c3RhdGljIHN0cnVjdCBpYl9kZXZpY2UgKm1seDVfaWJfYWRkX3N1Yl9kZXYoc3RydWN0IGliX2RldmljZSAqcGFyZW50LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUyOTMtXHRcdFx0XHRcdCAgICAgZW51bSByZG1hX25sX2Rldl90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUzMjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NTMyODpcdHJldCA9IF9fbWx4NV9pYl9hZGQobXBsYW5lLCBcdTAwMjZwbGFuZV9wcm9maWxlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MzI5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NTQxMD1zdGF0aWMgaW50IG1seDVyX3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDUwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjU0NTE6XHRyZXQgPSBfX21seDVfaWJfYWRkKGRldiwgcHJvZmlsZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQ1Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTE0NjQ9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaC0xNDY2LVx0XHQgICAgICBpbnQgc3RhZ2UpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oOjE0Njc6aW50IF9fbWx4NV9pYl9hZGQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTQ2OC1cdFx0ICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxMzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNTFg1IERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gZnV6eiB0aGUgbWx4NSBkcml2ZXIgdXNpbmcgc3l6a2FsbGVyLiBUaGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgYG1seDVyX3Byb2JlYCwgd2hpY2ggaXMgYW4gYXV4aWxpYXJ5IGRldmljZSBwcm9iZS4gVGhhdCBhdXhpbGlhcnkgZGV2aWNlLCBJIHJlbWVtYmVyLCBpcyBjcmVhdGVkIGJ5IHRoZSBjb3JlIG1seDUgZHJpdmVyLCB3aGljaCBpdHNlbGYgaXMgYSBQQ0kgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBlZmZlY3RpdmVseSB0YXJnZXQgdGhpcyBzZXR1cD8KClRoZSBnb29kIG5ld3MgaXMsIHllcywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQW5kIGlmIHRoZSBQQ0kgZnV6emVyIGNhbiB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiBQQ0kgZHJpdmVyc+KAlGFuZCBpdCBzaG91bGQgYmUgYWJsZSB0b+KAlHRoZW4gd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuIElmIHdlIGNhbiB0cmlnZ2VyIHRoYXQgcHJvYmUgZnVuY3Rpb24sIGl0IG1pZ2h0IGxlYWQgdXMgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3IgY2xlYW51cCBwcm9jZXNzLgoKU28sIGxldCYjMzk7cyBmb2N1cyBvbiB0aGUgY2xlYW51cCBwYXRoLiBJcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYWxsZWQgZHVyaW5nIGNsZWFudXA/IEl0IGxvb2tzIGxpa2UgaXQgaXMsIGZyb20gYG1seDVfaWJfZGVhbGxvY19kbWFoYC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG1seDVfaWJfZGVhbGxvY19kbWFoYCB0byBmaWd1cmUgdGhhdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfZGVhbGxvY19kbWFoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYz0xMz1zdGF0aWMgaW50IG1seDVfaWJfYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzozOTpzdGF0aWMgaW50IG1seDVfaWJfZGVhbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXHRcdFx0XHRzdHJ1Y3QgdXZlcmJzX2F0dHJfYnVuZGxlICphdHRycylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNTItXHQuYWxsb2NfZG1haCA9IG1seDVfaWJfYWxsb2NfZG1haCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcdC5kZWFsbG9jX2RtYWggPSBtbHg1X2liX2RlYWxsb2NfZG1haCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy01NC19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk2NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlOiBJQiBEZXZpY2UgRGVhbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZyb20gYSB2dWxuZXJhYmlsaXR5IHBlcnNwZWN0aXZlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIElCIGRldmljZSBvcGVyYXRpb24uIFRoZSBjb3JlIG9mIG15IGNvbmNlcm4gcmV2b2x2ZXMgYXJvdW5kIGhvdyBJQiBkZXZpY2Ugb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgSUIgY29yZSB3aGVuIHRoZXJlIGFyZSByZXF1ZXN0cyBjb21pbmcgZnJvbSBlaXRoZXIgdXNlcnNwYWNlICh1c2luZyB1dmVyYnMpIG9yIGtlcm5lbCBzcGFjZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgZGVhbGxvY19kbWFoYCwgdGhlIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIGEgRE1BIG1lbW9yeSByZWdpb24gaXMgZnJlZWQuIFRoaXMgc291bmRzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGFjdHVhbGx5IHJlYWNoIHRoaXMgY29kZSBwYXRoPyBUaGUga2V5IGxpZXMgaW4gd2hldGhlciBzeXprYWxsZXIgY2FuIHN1Y2Nlc3NmdWxseSBwcm9iZSB0aGUgYG1seDVgIGRyaXZlciBhbmQgcmVnaXN0ZXIgdGhlIElCIGRldmljZS4gSWYgaXQgY2FuLCB0aGVuIHVzaW5nIHV2ZXJicywgSSBjYW4gbWFuaXB1bGF0ZSBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyBvZiBETUEgcmVnaW9ucywgZ2l2aW5nIHN5emthbGxlciBjb250cm9sIHRvIHRyaWdnZXIgYGRlYWxsb2NfZG1haGAuIEl0JiMzOTtzIGEgY2xhc3NpYyBzZXR1cCBmb3IgZnV6emluZyAtIGFsbG9jYXRlIGFuZCBmcmVlIHJlZ2lvbnMgdG8gdHJ5IHRvIGZpbmQgYSBidWcuCgpUaGUgYmlnIGh1cmRsZSBpcyB0aGUgYG1seDVgIGRyaXZlciBpdHNlbGYuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBpdCYjMzk7cyBub3RvcmlvdXMgZm9yIGl0cyBjb21wbGV4IGZpcm13YXJlIGludGVyYWN0aW9ucyBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYG1seDVgIGRldmljZSYjMzk7cyBpbml0aWFsaXphdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0byB0cmljayBpdCBpbnRvIGxvYWRpbmcuIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyBgbWx4NV9pbml0X29uZWAsIGZvdW5kIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2luaXRfb25lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jPTI0Mz1zdGF0aWMgaW50IG1seDVfZGV2bGlua19yZWxvYWRfdXAoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIGVudW0gZGV2bGlua19yZWxvYWRfYWN0aW9uIGFjdGlvbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1NC1cdFx0XHRtbHg1X2Z3X3JlcG9ydGVyc19jcmVhdGUoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXZsaW5rLmM6MjU1Olx0XHRcdHJldHVybiBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1Ni1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MTM3Mj1zdGF0aWMgdm9pZCBtbHg1X3VubG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTM5NTppbnQgbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xMzk2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE0NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE0NTk6aW50IG1seDVfaW5pdF9vbmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNDcwLVx0ZGV2bF9yZWdpc3RlcihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTQ3MTpcdGVyciA9IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ3Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNjAxPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfY2Fwc19saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTYzNTppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNjM2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzI9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NzU6XHRlcnIgPSBtbHg1X2luaXRfb25lKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzYtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5Nzc6XHRcdG1seDVfY29yZV9lcnIoZGV2LCBcJiMzNDttbHg1X2luaXRfb25lIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE5NzgtXHRcdFx0ICAgICAgZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9NDQwPXZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjQ0MTppbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0NDI6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDQzLXZvaWQgbWx4NV91bmluaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00NDc9aW50IG1seDVfbG9hZF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCByZWNvdmVyeSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDQ4OmludCBtbHg1X2luaXRfb25lX2xpZ2h0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQ0OS12b2lkIG1seDVfdW5pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jPTI1PXN0YXRpYyBpbnQgbWx4NV9zZl9kZXZfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTY5LVx0aWYgKE1MWDVfRVNXSVRDSF9NQU5BR0VSKHNmX2Rldi1cdTAwM2VwYXJlbnRfbWRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjcwOlx0XHRlcnIgPSBtbHg1X2luaXRfb25lX2xpZ2h0KG1kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy03MS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NzI6XHRcdGVyciA9IG1seDVfaW5pdF9vbmUobWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTczLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo3NDpcdFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXCYjMzQ7bWx4NV9pbml0X29uZSBlcnI9JWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTc1LVx0XHRnb3RvIGluaXRfb25lX2VycjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxMzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIEZ1enppbmcgQ2FwYWJpbGl0aWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHdlJiMzOTtyZSBsb29raW5nIGF0IGFuIGBtbHg1YCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNwZWNpZmljYWxseSB0aGUgYG1seDVfaW5pdF9vbmVgIGZ1bmN0aW9uLiBUaGlzIGNhbGxzIGBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZGAgYW5kIHRoZW4gdWx0aW1hdGVseSBgbWx4NV9jbWRfaW5pdGAgYW5kIGBtbHg1X2NtZF9lbmFibGVgLiBSaWdodCwgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYSBmYWlsdXJlIGluIHRoZSBjb21tYW5kIHF1ZXVlIGluaXRpYWxpemF0aW9uLCBsaWtlbHkgZHVlIHRvIGEgbGFjayBvZiBhY3R1YWwgaGFyZHdhcmUgb3IgYSByZXNwb25kaW5nIGZpcm13YXJlLCB3aWxsIGNhdXNlIHRoZSBwcm9iZSB0byBmYWlsLgoKTm93LCB0aGlzIHJpbmdzIGEgYmVsbC4gV2Uga25vdyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpbGUgcG93ZXJmdWwsIHN0cnVnZ2xlcyB3aXRoIHNpbXVsYXRpbmcgY29tcGxleCBmaXJtd2FyZSByZXNwb25zZXMuIFNvLCBpZiB0aGlzIGlzIGEgU3l6a2FsbGVyLXJlcG9ydGVkIGlzc3VlLCBpdCByYWlzZXMgcXVlc3Rpb25zLiBEaWQgaXQgZmluZCB0aGlzIHRocm91Z2ggc3RhbmRhcmQgZnV6emluZyBvciBjb3VsZCBhIHN0YXRpYyBhbmFseXplciBoYXZlIGNvbnRyaWJ1dGVkPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYW4gYXV0aG9yIG9mIHRoZSBgc3l6LWNsdXN0ZXJgIGNvZGUgaW4gU3l6a2FsbGVyLi4uCgpIYW5nIG9uLCB0aGUgcHJvbXB0IHByb3ZpZGVzIHNvbWUgaW1wb3J0YW50IGNvbnRleHQuIEl0JiMzOTtzIGluZGljYXRpbmcgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMga2V5LiBUaGUgYG1seDVgIGRyaXZlciwgYXMgSSByZWNhbGwsIGlzIGZvciBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVycywgcmVhbCBoYXJkd2FyZS4gQW5kIHRoZSBrZXJuZWwgKmRvZXNuJiMzOTt0KiBoYXZlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGl0LCB1bmxpa2UgdGhpbmdzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgdmhjaWAuIFNvLCB0aGUgY29kZSBwYXRocyByZWxhdGVkIHRvIHRoZSBgbWx4NWAgZHJpdmVyIGFyZSAqaW5oZXJlbnRseSogdW5yZWFjaGFibGUgaW4gdGhvc2UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIG9yIGEgc2ltaWxhciBtYWluIGZpbGUsIHRvIGVuc3VyZSB0aGVyZSBpcyBubyBoaWRkZW4gbW9jayBvciBlbXVsYXRpb24gY29kZS4gSXQmIzM5O3MgdW5saWtlbHksIGJ1dCBpdCYjMzk7cyB3b3J0aCB0aGUgcXVpY2sgZG91YmxlLWNoZWNrIGJlZm9yZSBtYWtpbmcgYSBmaW5hbCBkZXRlcm1pbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFX0VOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMTItfCBCYXNpYyBmZWF0dXJlcywgZXRoZXJuZXQgbmV0IGRldmljZSByeC90eCBvZmZsb2FkcyBhbmQgWERQLCBhcmUgYXZhaWxhYmxlIHdpdGggdGhlIG1vc3QgYmFzaWMgZmxhZ3NcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTMxLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6Mzc6KipDT05GSUdfTUxYNV9DT1JFX0VOX0RDQj0oeS9uKSoqOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDQtfCAgICBJUG9JQiBvZmZsb2FkcyBcdTAwMjYgYWNjZWxlcmF0aW9uIHN1cHBvcnQuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00Ni18ICAgIElQb0lCIHVscCBuZXRkZXZpY2UuXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTI9Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQxMzpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctNDE0LSMgQ09ORklHX05FVF9WRU5ET1JfTUVUQSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9MTc1PUNPTkZJR19NTFg1X0ZQR0E9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc3LUNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTE1ND1DT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjE1NTpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1Ni0jIENPTkZJR19NTFg1X0VOX1JYTkZDIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NTU1PUNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1NjpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy01NTctQ09ORklHX01MWDVfU0Y9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDU9Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6NTQ2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTU0Ny1DT05GSUdfTUxYNV9TRj15XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgJiM0Mzs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXHRcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICAmIzQzOz0gZW5fZnNfZXRodG9vbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICYjNDM7PSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBlbi9odl92aGNhX3N0YXRzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy01OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM6NTk6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNjAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjkxMTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cdHN0cnVjdCBtbHg1ZV9kY2J4X2RwICAgICAgIGRjYnhfZHA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5NTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXHRzdHJ1Y3QgbWx4NWVfZGNieCAgICAgICAgICBkY2J4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaDo3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTEzMj12b2lkIG1seDVlX3NlbHFfY2FuY2VsKHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNDA6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE0MS1zdGF0aWMgaW50IG1seDVlX2dldF9kc2NwX3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTU0PXN0YXRpYyBpbnQgbWx4NWVfZ2V0X3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1Ny1cdGlmIChSRUFEX09OQ0UocHJpdi1cdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYz0xMDA3PXN0YXRpYyBpbnQgbWx4NWVfaGFpcnBpbl9nZXRfcHJpbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM6MTAxNTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXHRpZiAocHJpdi1cdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlICE9IE1MWDVfUVBUU19UUlVTVF9QQ1ApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjM9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6MjY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNy1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNj12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDozODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM5LXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0zOTY9dm9pZCBtbHg1X2Z3X3ZlcnNpb25fcXVlcnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpydW5uaW5nX3Zlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjM5OTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3ODEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDoKCioqQ2hlY2tpbmcgZm9yIER1bW15IEhhcmR3YXJlIGluIGEgc3l6a2FsbGVyIENvbnRleHQqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3QgdGhhdCBzeXprYWxsZXIsIGF0IHNvbWUgcG9pbnQsIHVzZXMgYSBzb3J0IG9mICYjMzQ7ZHVtbXkmIzM0OyBQQ0kgZGV2aWNlLCBvciBzb21ldGhpbmcgYW5hbG9nb3VzLCBkdXJpbmcgaXRzIHRlc3RpbmcgcHJvY2Vzcz8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCB0aGVuIG15IG5leHQgc3RlcCBpcyBjbGVhci4KCkkmIzM5O2xsIHNwZWNpZmljYWxseSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkga2luZCBvZiAmIzM0O2R1bW15JiMzNDsgb3IgdmlydHVhbGl6ZWQgTUxYNSAoTWVsbGFub3gpIGRldmljZSB0aGF0IHN5emthbGxlciBtaWdodCBiZSBlbXBsb3lpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZnV6emVyIGludGVyYWN0cyB3aXRoIGhhcmR3YXJlLCBldmVuIGlmIHRoYXQgaGFyZHdhcmUgaXMgZW11bGF0ZWQuIFRoZSBwcmVzZW5jZSAob3IgYWJzZW5jZSkgb2Ygc3VjaCBhIGRldmljZSB3aWxsIGJlIHRlbGxpbmcgYW5kIHdpbGwgZGljdGF0ZSBob3cgSSBjb250aW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDA6c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTA4PWludCBtbHg1X2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDMtXHRpZiAoIWNxLVx1MDAzZWNvbXApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxNDQ6XHRcdGNxLVx1MDAzZWNvbXAgPSBtbHg1X2NvcmVfY3FfZHVtbXlfY2I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xNDUtXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9Mjc9aW50IG1seDVlX3NlbHFfaW5pdChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSwgc3RydWN0IG11dGV4ICpzdGF0ZV9sb2NrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtNDItXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjQzOlx0LyogQXNzaWduIGR1bW15IHZhbHVlcywgc28gdGhhdCBtbHg1ZV9zZWxlY3RfcXVldWUgd29uJiMzOTt0IGNyYXNoLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy00NC1cdCppbml0X3BhcmFtcyA9IChzdHJ1Y3QgbWx4NWVfc2VscV9wYXJhbXMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jPTI4NT1zdGF0aWMgaW50IG1seDVpX3BrZXlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTMwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYl92bGFuLmM6MzAxOlx0LyogVXNlIGR1bW15IHJxcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0zMDItXHRwcml2LVx1MDAzZWNoYW5uZWxzLnBhcmFtcy5sb2dfcnFfbXR1X2ZyYW1lcyA9IE1MWDVFX1BBUkFNU19NSU5JTVVNX0xPR19SUV9TSVpFO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM9MjI3PWludCBtbHg1aHdzX2J3Y19tYXRjaGVyX2NyZWF0ZV9zaW1wbGUoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzoyNjI6XHQvKiBjcmVhdGUgZHVtbXkgYWN0aW9uIHRlbXBsYXRlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTI2My1cdGJ3Y19tYXRjaGVyLVx1MDAzZWF0WzBdID1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTg0Mz1od3NfYndjX21hdGNoZXJfZmluZF9hdChzdHJ1Y3QgbWx4NWh3c19id2NfbWF0Y2hlciAqYndjX21hdGNoZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy04NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jOjg0OTpcdC8qIHN0YXJ0IGZyb20gaW5kZXggMSAtIGZpcnN0IGFjdGlvbiB0ZW1wbGF0ZSBpcyBhIGR1bW15ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTg1MC1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIGJ3Y19tYXRjaGVyLVx1MDAzZW51bV9vZl9hdDsgaSYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwOTIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUG90ZW50aWFsIEtlcm5lbCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byB0cmlnZ2VyIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYG1seDVgIGNvZGUgdGhyb3VnaCBhIG5vbi1NZWxsYW5veCBoYXJkd2FyZSBwYXRoLiBGaXJzdCwgSSYjMzk7bSB0aGlua2luZywgYXJlIHRoZXJlIGFueSAqb2J2aW91cyogdmlydHVhbCBkZXZpY2VzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IE5vLCBub3RoaW5nIGp1bXBzIG91dCBpbml0aWFsbHkuIFRoZW4gSSBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgdXN1YWwgc3VzcGVjdHMgc3l6a2FsbGVyIHVzZXM6IGB2aGNpYCwgYG1hYzgwMjExX2h3c2ltYCwgYHZjYW5gLCBgdmttc2AsIGB1aW5wdXRgLCBgc25kLWFsb29wYC4gQnV0IG5vbmUgb2YgdGhvc2Ugc2VlbSBsaWtlIHRoZXkmIzM5O2QgZGlyZWN0bHkgcmVsYXRlIHRvIGBtbHg1YC4KClRoZW4sIEkmIzM5O20gdGhpbmtpbmcsIHdoYXQgYWJvdXQgdmlydHVhbCBSRE1BIGRldmljZXM/IE15IGtub3dsZWRnZSBpcyB0aGF0IGByZG1hX3J4ZWAgKFJvQ0UgdjIpIGFuZCBgc2l3YCAoU29mdHdhcmUgaVdBUlApIGFyZSB0aGVyZS4gTm93LCB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgbGllcyB3aXRoIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgLCBzcGVjaWZpY2FsbHkuIEkgcmVtZW1iZXIgdGhhdCBjb2RlIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY2AuIFJpZ2h0LCBzbyBpdCYjMzk7cyAqcGFydCogb2YgdGhlIE1lbGxhbm94IGNvcmUgZHJpdmVyLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBmb3IgTWVsbGFub3ggaGFyZHdhcmUgb25seS4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gYHJkbWFfcnhlYCBvciBgc2l3YCBzb21laG93IGNhbGwgaW50byBgbWx4NWA/IEkgY2hlY2sgdGhlIGRyaXZlciBsb2NhdGlvbnMsIHdoaWNoIGFyZSBpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZWAgYW5kIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3YCwgc28gbm8sIHRoZXkgYXJlIHNlcGFyYXRlLiBTbyB0aGF0IHBhdGggc2VlbXMgYmxvY2tlZC4KClNvLCB0aGUgbmV4dCB0aG91Z2h0IGlzOiBhbSBJIG1pc3NpbmcgYSBwYXRoPyBJcyB0aGVyZSAqYW55KiBjaGFuY2UgdGhhdCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBpcyByZWFjaGFibGUgdGhyb3VnaCAqc29tZSogb3RoZXIsIHVuZXhwZWN0ZWQgcGF0aCwgZXZlbiBpbmRpcmVjdGx5PyBJIG5lZWQgdG8gY2hlY2sgYG1seDVfc3RfYWxsb2NfaW5kZXhgIG1vcmUgY2FyZWZ1bGx5LCBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFsaWFzaW5nIG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aGF0IEkgbWlnaHQgYmUgb3Zlcmxvb2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfYWxsb2NfaW5kZXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTI5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlx0XHRlcnIgPSBtbHg1X3N0X2FsbG9jX2luZGV4KG1kZXYsIGliZG1haC1cdTAwM2VtZW1fdHlwZSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy0zMS1cdFx0XHRcdFx0ICBpYmRtYWgtXHUwMDNlY3B1X2lkLCBcdTAwMjZkbWFoLVx1MDAzZXN0X2luZGV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9ODM9dm9pZCBtbHg1X3N0X2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6OTU6aW50IG1seDVfc3RfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSB0cGhfbWVtX3R5cGUgbWVtX3R5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXHRcdFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4NC0jaWZkZWYgQ09ORklHX1BDSUVfVFBIXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaD0xMTg3PWludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4OTpzdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE5MC1cdFx0XHRcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBNZWxsYW5veCBIYXJkd2FyZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jYC4gSXQgbG9va3MgbGlrZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBvbmx5IHVzZWQgd2l0aGluIHRoaXMgZmlsZSwgd2hpY2ggaXMgcHJldHR5IGxvY2FsaXplZC4gQm90aCBhcmUgdHVja2VkIGF3YXkgaW4gdGhlIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9gIGRpcmVjdG9yeSwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGhhcmR3YXJlLXNwZWNpZmljIGNvZGUsIGdlYXJlZCB0b3dhcmRzIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGFuZCBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgb24gdGhpcywgdGhhdCBzaW5jZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhbnkgbWVjaGFuaXNtcyB0byBkaXJlY3RseSBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlLCB0aGlzIGNvZGUgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4KCk5vdywgaG9sZCBvbi4gSXMgdGhlcmUgKmFueSogcmVtb3RlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIFBDSSBmdXp6ZXIsIHdoaWNoIHN5emthbGxlciB1c2VzLCBjb3VsZCBoaXQgdGhpcz8gVGhlIFBDSSBmdXp6ZXIgKGBzeXpfcGNpX2RldmljZWApIGlzIGtub3duIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIGJ5IGludGVyY2VwdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzL3dyaXRlcyBhbmQgTWVtb3J5LU1hcHBlZCBJL08gKE1NSU8pIG9wZXJhdGlvbnMuIFRoZSBpc3N1ZSBpcywgdG8gZXZlbiBnZXQgdG8gYG1seDVfaWJfYWxsb2NfZG1haGAsIHRoZSBtbHg1IGRyaXZlciBuZWVkcyB0byBoYXZlIHByb2JlZCBzdWNjZXNzZnVsbHkuIEFuZCwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgdGhhdCYjMzk7cyBub3QgdHJpdmlhbC4gVGhlIG1seDUgcHJvYmluZyBwcm9jZXNzIGludm9sdmVzIHNvbWUgcHJldHR5IGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIHRoYXQgcmVseSBvbiBhIGNvbW1hbmQgcXVldWUgKENRKSB3aXRoaW4gTU1JTyBzcGFjZS4gVGhlIGRyaXZlciB3cml0ZXMgYSBjb21tYW5kLCB0cmlnZ2VycyBhIGRvb3JiZWxsLCBhbmQgdGhlbiBlaXRoZXIgd2FpdHMgZm9yIGEgY29tcGxldGlvbiBldmVudCBvciBhY3RpdmVseSBwb2xscyBmb3IgdGhlIGNvbXBsZXRpb24uIFNvLCB0aGUgUENJIGZ1enplciB3b3VsZCBoYXZlIHRvIGFjY3VyYXRlbHkgZ3Vlc3MgdGhlIGZvcm1hdCBvZiB0aGUgY29tcGxldGlvbiBxdWV1ZSBlbnRyeSAoQ1FFKSBhbmQgc29tZWhvdyB3cml0ZSBpdCB0byB0aGUgKmV4YWN0KiBjb3JyZWN0IG1lbW9yeSBsb2NhdGlvbiBhdCBwcmVjaXNlbHkgdGhlIHJpZ2h0IHRpbWUuCgpXaGlsZSBpdCYjMzk7cyB0aGVvcmV0aWNhbGx5ICpwb3NzaWJsZSosIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgUENJIGZ1enplciBhY2NpZGVudGFsbHkgc3R1bWJsaW5nIHVwb24gdGhlIHJpZ2h0IGNvbWJpbmF0aW9uIGlzIGJhc2ljYWxseSB6ZXJvLiBCdXTigKYgd2FpdCBhIG1pbnV0ZS4gKlN5emthbGxlciogZGlkIGZpbmQgYSBidWcgaW4gdGhpcyBjb2RlISBBbmQgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gSG93IGRpZCBzeXprYWxsZXIgZGlzY292ZXIgYSBidWcgaGVyZSBpZiB0aGUgcGF0aCB0byB0aGUgY29kZSBzZWVtcyBzbyBpbmNyZWRpYmx5IGhhcmQgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgaGFzIGEgZnV6emVyICpzcGVjaWZpY2FsbHkqIGRlc2lnbmVkIGZvciBtbHg1PyBJJiMzOTttIGdvbm5hIGNoZWNrIHRoZSBrZXJuZWwgdHJlZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgYW55IGRlZGljYXRlZCBtbHg1IGZ1enppbmcgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXp6JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDUwNAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDU2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gLSBGaW5hbCBBbnN3ZXI6IEZhbHNlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7Tm8sIGl0JiMzOTtzIHByb2JhYmx5IHN5emthbGxlci4mIzM0OyBTeXpib3QgaXMgcHJldHR5IGdvb2QgYXQgc25pZmZpbmcgb3V0IHRoZXNlIHRoaW5ncywgbWF5YmUgZXZlbiB0aHJvdWdoIHN0YXRpYyBhbmFseXNpcywgYWx0aG91Z2ggdGhpcyBpcyBhIG1lbW9yeSBsZWFrLCBzbyBLTVNBTiBvciBLQVNBTiB3b3VsZCBiZSBtb3JlIGxpa2VseS4gQnV0IHRoZW4gSSByZW1lbWJlciwgc3l6Ym90ICphbHNvKiBydW5zIG9uIGJhcmUtbWV0YWwgaGFyZHdhcmUhIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIFdlIGtub3cgc3l6Ym90IGhhcyBpbnN0YW5jZXMgd2l0aCBNZWxsYW5veCBuZXR3b3JrIGNhcmRzLgoKU28sIHRoZSBwb3NzaWJpbGl0eSBpcyB0aGVyZTogc3l6Ym90LCBvbiBhIGJhcmUtbWV0YWwgTWVsbGFub3ggbWFjaGluZSwgKmNvdWxkKiBoaXQgdGhpcyBjb2RlLiBCdXQsIGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogdGhlIHByb21wdC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7IFRoaXMgaXMgdGhlIGtleS4KClRoaXMgY29kZSwgYGtmcmVlKGlkeF9kYXRhKWAsIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIsICpyZXF1aXJlcyogYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkIHRvIGZ1bmN0aW9uLiBJdCYjMzk7cyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyB0aGF0IHdvdWxkIGFsbG93IGl0IHRvIGJlIHJlYWNoZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCgpJIHN0YXJ0ZWQgZGlnZ2luZy4gQXJlIHRoZXJlIGFueSBzb2Z0d2FyZSBlbXVsYXRpb25zPyAmIzM0O0R1bW15JiMzNDssICYjMzQ7bW9jayYjMzQ7IC0gbm90aGluZy4gV2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gTm9wZSwgdGhhdCYjMzk7cyBnZW5lcmljLiBgdmRwYWA/IEFoLCBgbWx4NV92ZHBhYCBleGlzdHMsIGJ1dCB0aGF0IHN0aWxsIHVsdGltYXRlbHkgbmVlZHMgdGhlIHBoeXNpY2FsIG1seDUgZGV2aWNlLiBTbywgdGhlIG9ubHkgd2F5IHRvIHJlYWNoIHRoaXMgaXMgdGhyb3VnaCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgKmZhbHNlKiBpdCBpcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHRob3JvdWdoLiBJIHJlLXJlYWQgdGhlIHByb21wdCwgYW5kIHllcywgaXQgcGVyZmVjdGx5IGxpbmVzIHVwIHdpdGggdGhlIGNvbmRpdGlvbjogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsgVGhpcyBtbHg1IGRyaXZlciwgdGhlIGFzc29jaWF0ZWQgY29kZSBwYXRoLCBpcyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUuIEkgY2FuJiMzOTt0IHJlYWNoIGl0LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggYW5kIG1ha2Ugc3VyZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYW4mIzM5O3QgYmUgY2FsbGVkIGZyb20gc29tZXdoZXJlIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfc3RfZGVhbGxvY19pbmRleCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9Mzk9c3RhdGljIGludCBtbHg1X2liX2RlYWxsb2NfZG1haChzdHJ1Y3QgaWJfZG1haCAqaWJkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cdGlmIChpYmRtYWgtXHUwMDNldmFsaWRfZmllbGRzIFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo0NjpcdFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVx1MDAzZXN0X2luZGV4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM9MTU1PUVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxODY6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9kZWFsbG9jX2luZGV4KTtcbi0tXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg2LVx0XHRcdHVuc2lnbmVkIGludCBjcHVfdWlkLCB1MTYgKnN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTg3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KTtcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4OT1zdGF0aWMgaW5saW5lIGludCBtbHg1X3N0X2FsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExOTU6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9kZWFsbG9jX2luZGV4KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBzdF9pbmRleClcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTk2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYyMjkKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhc29uaW5nOiBObyBIYXJkd2FyZSwgTm8gQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCB0cmFja2VkIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gSXQmIzM5O3MgZXhjbHVzaXZlbHkgaW52b2tlZCBmcm9tIGBtbHg1X2liX2RlYWxsb2NfZG1haGAuIE5vdywgYG1seDVfaWJfZGVhbGxvY19kbWFoYCwgYXMgSSBrbm93LCBpcyBhbiBvcGVyYXRpb24gc3BlY2lmaWMgdG8gSUIgKEluZmluaUJhbmQpIGRldmljZXMuIEFuZCB0aGVzZSBJQiBkZXZpY2VzLCBhcyB5b3Ugd2VsbCBrbm93LCBhcmUgcmVnaXN0ZXJlZCBhbmQgbWFuYWdlZCBieSB0aGUgaGFyZHdhcmUgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIE1lbGxhbm94IGRyaXZlciBpbiB0aGlzIGluc3RhbmNlLiAKClRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nLCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBldmVuIHByb2JlIGZvciwgbGV0IGFsb25lIHJlZ2lzdGVyLCB0aGUgSUIgZGV2aWNlIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhpcyBtZWFucyB0aGUgY2FsbCB0byB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gc2ltcGx5IHdvbiYjMzk7dCBoYXBwZW4uIE5vIGhhcmR3YXJlLCBubyBkcml2ZXIgaW50ZXJhY3Rpb24sIG5vIHJlYWNoaW5nIHRoaXMgY29kZSBwYXRoLiBTbywgY29uc2lkZXJpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSwgZnV6emluZyB0aGlzIHNlY3Rpb24gb2YgY29kZSBpcyBwb2ludGxlc3MuIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBoYXJkd2FyZSBkcml2ZXIgKHNwZWNpZmljYWxseSwgZml4aW5nIGEgbWVtb3J5IGxlYWsgaW4gYG1seDVfc3RfZGVhbGxvY19pbmRleGApLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIGEgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggYWRhcHRlciBpcyBwcmVzZW50IGFuZCBzdWNjZXNzZnVsbHkgcHJvYmVkLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIG1seDUgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCwgdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzowOS41NTE4NzY2NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg3MjkyNjQzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuNTUxODgxMzU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjkzODkyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTc6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXFxuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xcbkBAIC0xNzUsNiArMTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuIFxcbiBcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZpZHhfZGF0YS1cXHUwMDNldXNlY291bnQpKSB7XFxuIFxcdFxcdHhhX2VyYXNlKFxcdTAwMjZzdC1cXHUwMDNlaWR4X3hhLCBzdF9pbmRleCk7XFxuK1xcdFxcdGtmcmVlKGlkeF9kYXRhKTtcXG4gXFx0XFx0LyogV2UgbGVhdmUgUENJIGNvbmZpZyBzcGFjZSBhcyB3YXMgYmVmb3JlLCBubyBta2V5IHdpbGwgcmVmZXIgdG8gaXQgKi9cXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuOTIyMDE5NjExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODgzNTkxMTUzMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMjE1ZmZjZmRkYTg3NTY1MzNmMzZiMWM1MWYwNmIxNTZhMTViM2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAyMjo1NzowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY1xuaW5kZXggOTk3YmU5MWYwYTEzNWEuLjdjZWRjMzQ4NzkwZGJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNcbkBAIC0xNzUsNiArMTc1LDcgQEAgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXG4gXG4gXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmlkeF9kYXRhLVx1MDAzZXVzZWNvdW50KSkge1xuIFx0XHR4YV9lcmFzZShcdTAwMjZzdC1cdTAwM2VpZHhfeGEsIHN0X2luZGV4KTtcbitcdFx0a2ZyZWUoaWR4X2RhdGEpO1xuIFx0XHQvKiBXZSBsZWF2ZSBQQ0kgY29uZmlnIHNwYWNlIGFzIHdhcyBiZWZvcmUsIG5vIG1rZXkgd2lsbCByZWZlciB0byBpdCAqL1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MDkuOTIyMDIwODgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyMzM1Njk5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIG1seDUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuY2AsIGFuZCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4OiBhZGRpbmcgYSBga2ZyZWUoaWR4X2RhdGEpO2AgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAuIE1lbW9yeSBsZWFrLCBnb29kIGNhdGNoLiBNeSBmaXJzdCB0aG91Z2h0LCB0aG91Z2gsIGlzIGhvdyAqYWNjZXNzaWJsZSogaXMgdGhpcyBjb2RlLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gTWVsbGFub3ggbWx4NSBpcyBhIGhhcmR3YXJlIGRyaXZlciwgcmlnaHQ/IFNvIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGZ1enplZD9cblxuR2VuZXJhbGx5LCBJJ2Qgc2F5IGhhcmR3YXJlIGRyaXZlcnMgd2l0aG91dCBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGFyZSBhIHBhaW4gdG8gZnV6ei4gSXQgdXN1YWxseSBtZWFucyBuZWVkaW5nIGFjdHVhbCBoYXJkd2FyZS4gQnV0LCBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4uLiBtYXliZSB0aGF0IGNvdWxkIHdvcms/IE9yIGlzIHRoZXJlIHNvbWUgd2F5IHRoaXMgY291bGQgYmUgdHJpZ2dlcmVkIHRocm91Z2ggYSB2aXJ0dWFsaXplZCBkZXZpY2U/IFRoZSBtbHg1IGNvZGUgYmFzZSBpcyBwcmV0dHkgc2lnbmlmaWNhbnQsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJcyB0aGlzIGEgY29kZSBwYXRoIHRoYXQgKmNhbiogYmUgcmVhY2hlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIG1seDUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQsIGdpdmVuIGl0cyBjdXJyZW50IHN0YXRlLiBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGZ1bmN0aW9uIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjIyLjE1NTU5MjgwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzQ3MzI4MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9kZWFsbG9jX2luZGV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz0xNTU9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9zdF9hbGxvY19pbmRleCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU3OmludCBtbHg1X3N0X2RlYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHN0X2luZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE4NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2RlYWxsb2NfaW5kZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzoyMy4wMzAzMzQ4NDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk0MDE1ODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIG1seDVfc3RfZGVhbGxvY19pbmRleCBGdW5jdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2Ygd2hhdGV2ZXIgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgbWFuYWdlcy4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJJ2xsIG5lZWQgdG8gZmluZCBldmVyeXdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlIGJhc2UuIFRoYXQgd2lsbCB0ZWxsIG1lIHdobydzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHdoYXRldmVyIHJlc291cmNlcyB0aGlzIGluZGV4IHJlcHJlc2VudHMsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIGRlYnVnZ2luZyBvciBvcHRpbWl6YXRpb24gbGF0ZXIgb24uIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjI3LjIyNDM1MjIzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU3OTczOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfc3RfZGVhbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cXHRpZiAoaWJkbWFoLVxcdTAwM2V2YWxpZF9maWVsZHMgXFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDY6XFx0XFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVxcdTAwM2VzdF9pbmRleCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODk9c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTk1OnN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NzoyOS40ODIzMzE4MDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTA0MDE2Mjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYWxsb2NhdGluZyBETUFIIGluIGEgVmlydHVhbGl6ZWQgSW5maW5pYmFuZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG1seDVfaWJfZGVhbGxvY19kbWFoYCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIGV2ZW4gKmhhcHBlbiogaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD9cIiBUaGUgTWVsbGFub3ggbWx4NSBkcml2ZXIgaXMgbm90b3Jpb3VzbHkgaGFyZHdhcmUtZGVwZW5kZW50LiBJdCBuZWVkcyB0aGUgcmVhbCBzaWxpY29uIHRvIGluaXRpYWxpemUuIEkga25vdyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgZnVsbCBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgbWx4NSDigJMgdGhhdCdzIHRoZSBvYnZpb3VzIHJvYWRibG9jay5cblxuQnV0IHRoZW4gSSByZWNhbGwg4oCTIHN5emthbGxlciAqZG9lcyogaGF2ZSB2aXJ0dWFsIGRldmljZSBjYXBhYmlsaXRpZXMhIFVTQiB3aXRoIHZoY2ksIHdpZmkgdmlhIG1hYzgwMjExX2h3c2ltLCB2Y2FuIGZvciBDQU4uLi4gc28gd2hhdCBhYm91dCBtbHg1PyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgbm90aGluZyBzcGVjaWZpYyB0byBtbHg1LCB3aGljaCBpcyBhIGxldGRvd24uXG5cbldhaXQsIHRoZXJlICppcyogYSBQQ0kgZnV6emVyIGluIHN5emthbGxlci4gSG1tLCBidXQgaXQncyB1c3VhbGx5IHByZXR0eSBzaGFsbG93LiBJdCBnZW5lcmFsbHkgd29uJ3QgZGlnIGRvd24gaW50byBkZXZpY2Utc3BlY2lmaWMgY29kZSB1bmxlc3MgaXQncyBiZWVuIGV4cGxpY2l0bHkgdGFyZ2V0ZWQuIFRoaXMgaXMgdW5saWtlbHkgdG8gZ2V0IHVzIGZhci5cblxuQWgsIHJpZ2h0ISBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIHBhcnQgb2YgdGhlIEluZmluaWJhbmQgc3RhY2suIE9rYXksIHNvIHRoYXQgY2hhbmdlcyB0aGluZ3MuIENhbiB3ZSBpbnRlcmFjdCB3aXRoIEluZmluaWJhbmQgd2l0aG91dCBkaXJlY3QgaGFyZHdhcmUgYWNjZXNzPyBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gV2UgbmVlZCB0byBleHBsb3JlIHRoZSBwb3NzaWJpbGl0eSBvZiBtb2NraW5nIG9yIHNpbXVsYXRpbmcgdGhlIG1seDUgY29tcG9uZW50cyBzdWZmaWNpZW50bHkgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbiBhbmQgdHJpZ2dlciBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGEgZmVhc2libGUgd2F5IHRvIG1vY2sgbWx4NSBmb3Igb3VyIHB1cnBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDkxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjM1Ljk4NjM0OTkxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUzMzk1MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9jb3JlX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzIzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz01OD1zdHJ1Y3QgbWx4NV9kbWFfcG9vbCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02MS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhZ2VfbGlzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2MjpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYzLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Nzk9c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTA6c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTEtXFx0XFx0XFx0XFx0XFx0ICAgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0xMDk9c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZXN0cm95KHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9MTMzPW1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjM6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9wYWdlX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0yODM9c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDc9bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMwOTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTAtXFx0aW50IG5vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMzY9REVGSU5FX1NIT1dfQVRUUklCVVRFKG1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMzg6dm9pZCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM1OTppbnQgbWx4NV9mcmFnX2J1Zl9wb29sc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBpbnQgbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTQyNT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0Mjc6dm9pZCBtbHg1X2ZyYWdfYnVmX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZnJhZ19idWYgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDQ1PUVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfZnJlZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NzpzdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDgtXFx0XFx0XFx0XFx0XFx0XFx0IGludCBub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9NDc2PXN0YXRpYyBpbnQgbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDE6aW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz01Mjg9RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTI4Mz1zdGF0aWMgdm9pZCBwb2xsX3RpbWVvdXQoc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI4NTpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gY29udGFpbmVyX29mKGVudC1cXHUwMDNlY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjg2LVxcdHU2NCBjbWRfdG9fbXMgPSBtbHg1X3RvdXRfbXMoZGV2LCBDTUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTMzMT1zdGF0aWMgdm9pZCBkdW1wX2J1Zih2b2lkICpidWYsIGludCBzaXplLCBpbnQgZGF0YV9vbmx5LCBpbnQgb2Zmc2V0LCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MzQ3OnN0YXRpYyBpbnQgbWx4NV9pbnRlcm5hbF9lcnJfcmV0X3ZhbHVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzQ4LVxcdFxcdFxcdFxcdCAgICAgICB1MzIgKnN5bmQsIHU4ICpzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9NzkzPXN0YXRpYyBpbnQgY21kX3N0YXR1c190b19lcnIodTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODE3OnZvaWQgbWx4NV9jbWRfb3V0X2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9ODI3PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfb3V0X2Vycik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTgyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODI5OnN0YXRpYyB2b2lkIGNtZF9zdGF0dXNfcHJpbnQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdm9pZCAqaW4sIHZvaWQgKm91dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODMwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjg0NTppbnQgbWx4NV9jbWRfY2hlY2soc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IGVyciwgdm9pZCAqaW4sIHZvaWQgKm91dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtODQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz04NzI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9jaGVjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTg3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6ODc0OnN0YXRpYyB2b2lkIGR1bXBfY29tbWFuZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy04NzUtXFx0XFx0XFx0IHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50LCBpbnQgaW5wdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5MzI6c3RhdGljIHZvaWQgbWx4NV9jbWRfY29tcF9oYW5kbGVyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHU2NCB2ZWMsIGJvb2wgZm9yY2VkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz05MzQ9c3RhdGljIHZvaWQgY2JfdGltZW91dF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05MzktXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjYl90aW1lb3V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NDA6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihlbnQtXFx1MDAzZWNtZCwgc3RydWN0IG1seDVfY29yZV9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk0MS1cXHRcXHRcXHRcXHRcXHRcXHQgY21kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk2MTpzdGF0aWMgdm9pZCBmcmVlX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5NjI6c3RhdGljIHZvaWQgbWx4NV9mcmVlX2NtZF9tc2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTY1PXN0YXRpYyBib29sIG9wY29kZV9hbGxvd2VkKHN0cnVjdCBtbHg1X2NtZCAqY21kLCB1MTYgb3Bjb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTk3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6OTczOmJvb2wgbWx4NV9jbWRfaXNfZG93bihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTk4MD1zdGF0aWMgdm9pZCBjbWRfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05ODUtXFx0c3RydWN0IG1seDVfY21kX2xheW91dCAqbGF5O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo5ODY6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTg3LVxcdHVuc2lnbmVkIGxvbmcgdGltZW91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy05OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjk5NDpcXHRkZXYgPSBjb250YWluZXJfb2YoY21kLCBzdHJ1Y3QgbWx4NV9jb3JlX2RldiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtOTk1LVxcdHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKG1seDVfdG91dF9tcyhkZXYsIENNRCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTExNDA9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE0NDpzdGF0aWMgdm9pZCB3YWl0X2Z1bmNfaGFuZGxlX2V4ZWNfdGltZW91dChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTQ1LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE2OTpzdGF0aWMgaW50IHdhaXRfZnVuYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIxNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTIxNjpzdGF0aWMgYm9vbCBtbHg1X2NtZF9hbGxfc3RhbGxlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjU5OnN0YXRpYyBpbnQgbWx4NV9jbWRfaW52b2tlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjYwLVxcdFxcdFxcdCAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xMzM3PXN0YXRpYyBzc2l6ZV90IGRiZ193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMzM5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTM0MDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMzQxLVxcdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXFx1MDAyNmRldi1cXHUwMDNlY21kLmRiZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNDA0PXN0YXRpYyBpbnQgbWx4NV9jb3B5X2Zyb21fbXNnKHZvaWQgKnRvLCBzdHJ1Y3QgbWx4NV9jbWRfbXNnICpmcm9tLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDM3OnN0YXRpYyBzdHJ1Y3QgbWx4NV9jbWRfbWFpbGJveCAqYWxsb2NfY21kX2JveChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDM4LVxcdFxcdFxcdFxcdFxcdCAgICAgIGdmcF90IGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0NTg6c3RhdGljIHZvaWQgZnJlZV9jbWRfYm94KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NTktXFx0XFx0XFx0IHN0cnVjdCBtbHg1X2NtZF9tYWlsYm94ICptYWlsYm94KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE0NjU6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1seDVfYWxsb2NfY21kX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDY2LVxcdFxcdFxcdFxcdFxcdCAgICAgICBnZnBfdCBmbGFncywgaW50IHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTUxMjpzdGF0aWMgdm9pZCBtbHg1X2ZyZWVfY21kX21zZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTEzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTI2PXN0YXRpYyBzc2l6ZV90IGRhdGFfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1Mjk6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTUzMC1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTU1MD1zdGF0aWMgc3NpemVfdCBkYXRhX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTU1MzpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2ID0gZmlscC1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNTU0LVxcdHN0cnVjdCBtbHg1X2NtZF9kZWJ1ZyAqZGJnID0gXFx1MDAyNmRldi1cXHUwMDNlY21kLmRiZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNTcwPXN0YXRpYyBzc2l6ZV90IG91dGxlbl9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1NzM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU3NC1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTU4NT1zdGF0aWMgc3NpemVfdCBvdXRsZW5fd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU4Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1ODg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbHAtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTU4OS1cXHRzdHJ1Y3QgbWx4NV9jbWRfZGVidWcgKmRiZyA9IFxcdTAwMjZkZXYtXFx1MDAzZWNtZC5kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MTYyMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBvbGZvcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTYyODpzdGF0aWMgdm9pZCBzZXRfd3FuYW1lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE2MzY6c3RhdGljIHZvaWQgY2xlYW5fZGVidWdfZmlsZXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY0NjpzdGF0aWMgdm9pZCBjcmVhdGVfZGVidWdmc19maWxlcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjU5OnZvaWQgbWx4NV9jbWRfYWxsb3dlZF9vcGNvZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IG9wY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTY3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY3NTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jaGFuZ2VfbW9kKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBtb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xNjkxPXN0YXRpYyBpbnQgY21kX2NvbXBfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTY5NDpcXHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjk1LVxcdHN0cnVjdCBtbHg1X2NtZCAqY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2OTgtXFx0Y21kID0gbWx4NV9uYl9jb2YobmIsIHN0cnVjdCBtbHg1X2NtZCwgbmIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjk5OlxcdGRldiA9IGNvbnRhaW5lcl9vZihjbWQsIHN0cnVjdCBtbHg1X2NvcmVfZGV2LCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzAwLVxcdGVxZSA9IGRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcwOC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MDk6dm9pZCBtbHg1X2NtZF91c2VfZXZlbnRzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE3MTY6dm9pZCBtbHg1X2NtZF91c2VfcG9sbGluZyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNzIyOnN0YXRpYyB2b2lkIGZyZWVfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm1zZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTcyMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTczNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTczNTpzdGF0aWMgdm9pZCBtbHg1X2NtZF9jb21wX2hhbmRsZXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTY0IHZlYywgYm9vbCBmb3JjZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE3MzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE4Mzk6c3RhdGljIHZvaWQgbWx4NV9jbWRfdHJpZ2dlcl9jb21wbGV0aW9ucyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxODc0OnZvaWQgbWx4NV9jbWRfZmx1c2goc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg5NzpzdGF0aWMgc3RydWN0IG1seDVfY21kX21zZyAqYWxsb2NfbXNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBpbl9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODk4LVxcdFxcdFxcdFxcdCAgICAgIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0xOTM1PXN0YXRpYyBpbnQgaXNfbWFuYWdlX3BhZ2VzKHZvaWQgKmluKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NDA6c3RhdGljIGJvb2wgbWx4NV9oYXNfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk0NTpzdGF0aWMgYm9vbCBtbHg1X2NtZF9pc19wcml2aWxlZ2VkX3VpZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQ2LVxcdFxcdFxcdFxcdCAgICAgICB1MTYgdWlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE5NTU6c3RhdGljIGludCBjbWRfZXhlYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB2b2lkICppbiwgaW50IGluX3NpemUsIHZvaWQgKm91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk1Ni1cXHRcXHQgICAgaW50IG91dF9zaXplLCBtbHg1X2NtZF9jYmtfdCBjYWxsYmFjaywgdm9pZCAqY29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMDM2OnN0YXRpYyB2b2lkIG1seDVfY21kX2Vycl90cmFjZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNDY6c3RhdGljIHZvaWQgY21kX3N0YXR1c19sb2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IG9wY29kZSwgdTggc3RhdHVzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDQ3LVxcdFxcdFxcdCAgIHUzMiBzeW5kcm9tZSwgaW50IGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMDcxLS8qIHByZXNlcnZlIC1FUkVNT1RFSU8gZm9yIG91dGJveC5zdGF0dXMgIT0gT0ssIG90aGVyd2lzZSByZXR1cm4gZXJyIGFzIGlzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIwNzI6c3RhdGljIGludCBjbWRfc3RhdHVzX2VycihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgZXJyLCB1MTYgb3Bjb2RlLCB1MTYgb3BfbW9kLCB2b2lkICpvdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIwNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxMDc6aW50IG1seDVfY21kX2RvKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSwgdm9pZCAqb3V0LCBpbnQgb3V0X3NpemUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxMTU9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9kbyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjEyOTppbnQgbWx4NV9jbWRfZXhlYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB2b2lkICppbiwgaW50IGluX3NpemUsIHZvaWQgKm91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEzMC1cXHRcXHQgIGludCBvdXRfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMTM2PUVYUE9SVF9TWU1CT0wobWx4NV9jbWRfZXhlYyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE1MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE1MjppbnQgbWx4NV9jbWRfZXhlY19wb2xsaW5nKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHZvaWQgKmluLCBpbnQgaW5fc2l6ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE1My1cXHRcXHRcXHQgIHZvaWQgKm91dCwgaW50IG91dF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxNjI9RVhQT1JUX1NZTUJPTChtbHg1X2NtZF9leGVjX3BvbGxpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTY0OnZvaWQgbWx4NV9jbWRfaW5pdF9hc3luY19jdHgoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE2NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIxODk9c3RhdGljIHZvaWQgbWx4NV9jbWRfZXhlY19jYl9oYW5kbGVyKGludCBzdGF0dXMsIHZvaWQgKl93b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxOTItXFx0c3RydWN0IG1seDVfYXN5bmNfY3R4ICpjdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIxOTM6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5NC1cXHRib29sIHRocm90dGxlX2xvY2tlZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz0yMjE0PWludCBtbHg1X2NtZF9leGVjX2NiKHN0cnVjdCBtbHg1X2FzeW5jX2N0eCAqY3R4LCB2b2lkICppbiwgaW50IGluX3NpemUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjIxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIyMTg6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGN0eC1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjE5LVxcdHUxNiB1aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjI2OD1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2V4ZWNfY2IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMjcwOmludCBtbHg1X2NtZF9hbGxvd19vdGhlcl92aGNhX2FjY2VzcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjcxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1seDVfY21kX2FsbG93X290aGVyX3ZoY2FfYWNjZXNzX2F0dHIgKmF0dHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjI5MDppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2NyZWF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMjkxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9hbGlhc19vYmpfY3JlYXRlX2F0dHIgKmFsaWFzX2F0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjMyNjppbnQgbWx4NV9jbWRfYWxpYXNfb2JqX2Rlc3Ryb3koc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyIG9ial9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjMyNy1cXHRcXHRcXHQgICAgICAgdTE2IG9ial90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjIzMzk6c3RhdGljIHZvaWQgZGVzdHJveV9tc2dfY2FjaGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjM1OT1zdGF0aWMgdW5zaWduZWQgY21kX2NhY2hlX2VudF9zaXplW01MWDVfTlVNX0NPTU1BTkRfQ0FDSEVTXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzY3OnN0YXRpYyB2b2lkIGNyZWF0ZV9tc2dfY2FjaGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5MzpzdGF0aWMgaW50IGFsbG9jX2NtZF9wYWdlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NtZCAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDIyOnN0YXRpYyB2b2lkIGZyZWVfY21kX3BhZ2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY21kICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0Mjg6c3RhdGljIHUxNiBjbWRpZl9yZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjQzMzppbnQgbWx4NV9jbWRfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDU0OnZvaWQgbWx4NV9jbWRfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNDYyOmludCBtbHg1X2NtZF9lbmFibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQ2My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU0ODp2b2lkIG1seDVfY21kX2Rpc2FibGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjU2MDp2b2lkIG1seDVfY21kX3NldF9zdGF0ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTYxLVxcdFxcdFxcdGVudW0gbWx4NV9jbWRpZl9zdGF0ZSBjbWRpZl9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyNTY2OmludCBtbHg1X2NtZF9hZGRfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHVpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjU3MT1FWFBPUlRfU1lNQk9MKG1seDVfY21kX2FkZF9wcml2aWxlZ2VkX3VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI1NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI1NzM6dm9pZCBtbHg1X2NtZF9yZW1vdmVfcHJpdmlsZWdlZF91aWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTE2IHVpZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjU3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDA9c3RhdGljIHZvaWQgbWx4NV9jb3JlX2NxX2R1bW15X2NiKHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLCBzdHJ1Y3QgbWx4NV9lcWUgKmVxZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwNy0vKiBDYWxsZXJzIG11c3QgdmVyaWZ5IG91dGJveCBzdGF0dXMgaW4gY2FzZSBvZiBlcnIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxMDg6aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwOS1cXHRcXHQgICB1MzIgKmluLCBpbnQgaW5sZW4sIHUzMiAqb3V0LCBpbnQgb3V0bGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM9MTc4PUVYUE9SVF9TWU1CT0wobWx4NV9jcmVhdGVfY3EpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTgwLS8qIG91Ym94IGlzIGNoZWNrZWQgYW5kIGVyciB2YWwgaXMgbm9ybWFsaXplZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjE4MTppbnQgbWx4NV9jb3JlX2NyZWF0ZV9jcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYy0xODItXFx0XFx0XFx0dTMyICppbiwgaW50IGlubGVuLCB1MzIgKm91dCwgaW50IG91dGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTE4OD1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9jcmVhdGVfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoxOTA6aW50IG1seDVfY29yZV9kZXN0cm95X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMTM9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfZGVzdHJveV9jcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjIxNTppbnQgbWx4NV9jb3JlX3F1ZXJ5X2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIxNi1cXHRcXHQgICAgICAgdTMyICpvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0yMjQ9RVhQT1JUX1NZTUJPTChtbHg1X2NvcmVfcXVlcnlfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoyMjY6aW50IG1seDVfY29yZV9tb2RpZnlfY3Eoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9jcSAqY3EsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMjI3LVxcdFxcdFxcdHUzMiAqaW4sIGludCBpbmxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jPTIzNT1FWFBPUlRfU1lNQk9MKG1seDVfY29yZV9tb2RpZnlfY3EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYzoyMzc6aW50IG1seDVfY29yZV9tb2RpZnlfY3FfbW9kZXJhdGlvbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTIzOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbWx4NV9jb3JlX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9OTY9dm9pZCBtbHg1X3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMDE6c3RydWN0IGRlbnRyeSAqbWx4NV9kZWJ1Z2ZzX2dldF9kZXZfcm9vdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MTA1PUVYUE9SVF9TWU1CT0wobWx4NV9kZWJ1Z2ZzX2dldF9kZXZfcm9vdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMDc6dm9pZCBtbHg1X3FwX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MTExPUVYUE9SVF9TWU1CT0wobWx4NV9xcF9kZWJ1Z2ZzX2luaXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MTEzOnZvaWQgbWx4NV9xcF9kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTExNz1FWFBPUlRfU1lNQk9MKG1seDVfcXBfZGVidWdmc19jbGVhbnVwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjExOTp2b2lkIG1seDVfZXFfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0xMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoxMjQ6dm9pZCBtbHg1X2VxX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9MjAyPW1seDVfY21kaWZfYWxsb2Nfc3RhdHMoc3RydWN0IHhhcnJheSAqc3RhdHNfeGEsIGludCBvcGNvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjIxOTp2b2lkIG1seDVfY21kaWZfZGVidWdmc19pbml0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoyNTk6dm9pZCBtbHg1X2NtZGlmX2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MjcwOnZvaWQgbWx4NV9jcV9kZWJ1Z2ZzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI3NTp2b2lkIG1seDVfY3FfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzoyODA6dm9pZCBtbHg1X3BhZ2VzX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMjkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6Mjk0OnZvaWQgbWx4NV9wYWdlc19kZWJ1Z2ZzX2NsZWFudXAoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTI5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jOjI5OTp2b2lkIG1seDVfcGFnZXNfYnlfZnVuY190eXBlX2RlYnVnZnNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6MzIzOnZvaWQgbWx4NV9wYWdlc19ieV9mdW5jX3R5cGVfZGVidWdmc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy0zMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzozMzc6c3RhdGljIHU2NCBxcF9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfcXAgKnFwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtMzM4LVxcdFxcdFxcdCBpbnQgaW5kZXgsIGludCAqaXNfc3RyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0MTc6c3RhdGljIHU2NCBlcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTQxOC1cXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy00NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo0NTc6c3RhdGljIHU2NCBjcV9yZWFkX2ZpZWxkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNDU4LVxcdFxcdFxcdCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTUzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1Mzg6c3RhdGljIGludCBhZGRfcmVzX3RyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgZW51bSBkYmdfcnNjX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jLTUzOS1cXHRcXHRcXHRzdHJ1Y3QgZGVudHJ5ICpyb290LCBzdHJ1Y3QgbWx4NV9yc2NfZGVidWcgKipkYmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGVidWdmcy5jPTU2Nj1zdGF0aWMgdm9pZCByZW1fcmVzX3RyZWUoc3RydWN0IG1seDVfcnNjX2RlYnVnICpkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1NzI6aW50IG1seDVfZGVidWdfcXBfYWRkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfcXAgKnFwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM9NTg3PUVYUE9SVF9TWU1CT0wobWx4NV9kZWJ1Z19xcF9hZGQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZWJ1Z2ZzLmM6NTg5OnZvaWQgbWx4NV9kZWJ1Z19xcF9yZW1vdmUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfY29yZV9xcCAqcXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYz01OTc9RVhQT1JUX1NZTUJPTChtbHg1X2RlYnVnX3FwX3JlbW92ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYy01OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RlYnVnZnMuYzo1OTk6aW50IG1seDVfZGVidWdfZXFfYWRkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTc6MzYuMjYxNjk1MTYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzA1NjMyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERldmljZSBEcml2ZXIgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGlzIG9uIHRoZSBgbWx4NV9jb3JlX2RldmAgc3RydWN0dXJlIOKAkyB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIG1seDUgZGV2aWNlLCByaWdodD8gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBkcml2ZXIgaGF2ZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uPyBObywgaXQncyBhICpwaHlzaWNhbCogZGV2aWNlIGRyaXZlci4gT2theSwgbmV4dCBJIHRoaW5rLCBTeXprYWxsZXIsIHRoZSBzeXN0ZW0gY2FsbCBmdXp6ZXIsIGhhcyBhIFBDSSBmdXp6ZXIuLi4gaW50cmlndWluZy4gQ2FuIHdlIGxldmVyYWdlIHRoYXQgUENJIGZ1enplciB0byByZWFjaCBhIGZ1bmN0aW9uIGxpa2UgYG1seDVfc3RfZGVhbGxvY19pbmRleGA/IEl0J3Mgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBwYXRoIGZyb20gUENJIHByb2JlIG9yIHNpbWlsYXIgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAuIFRoZSBjYWxsIHN0YWNrIGluZGljYXRlcyB0aGF0IGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGlzIGNhbGxlZCBmcm9tIGBtbHg1X2liX2RlYWxsb2NfZG1haGAuIEFoYSwgYW5kIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgbGl2ZXMgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguY2AuLi4gR29vZCwgd2UncmUgZ2V0dGluZyB3YXJtZXIhIE5vdyBpdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGBtbHg1X2liX2RlYWxsb2NfZG1haGAgZnVuY3Rpb24gaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1Nzo0OS4zMzIyNjE2NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYyOTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX2RlYWxsb2NfZG1haFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjM5OnN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXFx0XFx0XFx0XFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVxcdC5hbGxvY19kbWFoID0gbWx4NV9pYl9hbGxvY19kbWFoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcXHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTU0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU3OjQ5LjU3ODg5ODM3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUyODY0NTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElCIERldmljZSBEZWFsbG9jYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBkZWFsbG9jX2RtYWhgLCBhbiBJQiBkZXZpY2Ugb3BlcmF0aW9uLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBmYWN0IHRoYXQgSW5maW5pYmFuZCBoYXMgdGhpbmdzIGxpa2UgYHJkbWFfcnhlYCAoYSBSb0NFIHYyIHNvZnR3YXJlIGVtdWxhdG9yKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBtYWtlcyBtZSB0aGluayB0aGVyZSBtaWdodCBiZSBhIHdheS4gQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBtbHg1X2liYCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBNZWxsYW5veCBDb25uZWN0WC00KyBoYXJkd2FyZS5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB3aXRob3V0IHRoYXQgc3BlY2lmaWMgaGFyZHdhcmUsIHRoZSBgbWx4NV9pYmAgZHJpdmVyICp3b24ndCogaW5pdGlhbGl6ZSwgYW5kIGNvbnNlcXVlbnRseSwgaXRzIElCIGRldmljZSBvcGVyYXRpb25zLCBpbmNsdWRpbmcgYGRlYWxsb2NfZG1haGAsIHdvbid0IGdldCByZWdpc3RlcmVkLiBTbywgdGhlIGRpcmVjdCBwYXRoIHNlZW1zIGJsb2NrZWQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyISBUaGF0J3MgaW50ZXJlc3RpbmcuIENvdWxkIHRoZSBQQ0kgZnV6emVyLCB3aGljaCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMsIGJlIGxldmVyYWdlZCBoZXJlPyBDb3VsZCBpdCBzaW11bGF0ZSAqZW5vdWdoKiBvZiB0aGUgbWx4NSBoYXJkd2FyZSB0byB0cmljayB0aGUgc3lzdGVtIGludG8gcmVnaXN0ZXJpbmcgdGhlIElCIGRldmljZT9cblxuSG93ZXZlciwgdGhlIG1seDUgZHJpdmVyIGlzIG5vdG9yaW91c2x5IGNvbXBsZXguIEl0IHRhbGtzIHRvIHRoZSBmaXJtd2FyZSB1c2luZyBhIGNvbW1hbmQgcXVldWUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgaHVyZGxlLiBTaW11bGF0aW5nIHRoZSByZXF1aXJlZCBmaXJtd2FyZSByZXNwb25zZXMgZm9yIGBtbHg1YCB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIHJlZ2lzdGVyIHRoZSBJQiBkZXZpY2UgaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZSB3aXRoIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLiBJdCdzIGp1c3QgdG9vIG11Y2ggZGV0YWlsLlxuXG5TbywgcmVhbGlzdGljYWxseSwgYSBnZW5lcmljIGFwcHJvYWNoIGlzIGEgZGVhZCBlbmQuIEkgbmVlZCB0byBwaXZvdC4gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBzcGVjaWFsaXplZCBtbHg1IGZ1enplciBvciBtb2NrIGZyYW1ld29yayBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gUGVyaGFwcyB0aGVyZSdzIGEgc3BlY2lmaWMgdGVzdCBzZXR1cCBvciBpbnN0cnVtZW50YXRpb24gSSBjYW4gbGV2ZXJhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTA1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjA0LjEwNzU0NzUzOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5Mjk1MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5PTM1PUJhbmR3aWR0aCBEaXN0cmlidXRpb246XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDEtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQyOkhhcmR3YXJlLVNwZWNpZmljIEJlaGF2aW9yIChtbHg1KTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDQ6bWx4NSBoYXJkd2FyZSBlbmZvcmNlcyB0cmFmZmljIGNsYXNzIHNlcGFyYXRpb24gYnkgZW5zdXJpbmcgdGhhdCBlYWNoIHRyYW5zbWl0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTQ1LXF1ZXVlIChTUSkgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIFRDLiBJZiBhIHBhY2tldCBpcyBzZW50IG9uIGEgcXVldWUgdGhhdFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5PTM4OD1kZWYgdGVzdF9ub190Y19tYXBwaW5nX2JhbmR3aWR0aChjZmcpOlxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5My0gICAgZmFpbF9id19tc2cgPSBcXFwiQmFuZHdpZHRoIG1hdGNoZWQgMjAvODAgc3BsaXQgd2l0aG91dCBUQyBtYXBwaW5nXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTQ6ICAgIGlzX21seDUgPSBcXFwiZHJpdmVyOiBtbHg1XFxcIiBpbiBldGh0b29sKGZcXFwiLWkge2NmZy5pZm5hbWV9XFxcIikuc3Rkb3V0XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5NS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktMzk2LSAgICBpZiBydW5fYmFuZHdpZHRoX2Rpc3RyaWJ1dGlvbl90ZXN0KGNmZywgc2V0X3RjX21hcHBpbmc9RmFsc2UpOlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weTozOTc6ICAgICAgICBpZiBpc19tbHg1OlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2RldmxpbmtfcmF0ZV90Y19idy5weS0zOTgtICAgICAgICAgICAgcmFpc2UgS3NmdFhmYWlsRXgoZmFpbF9id19tc2cpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5LTM5OS0gICAgICAgIHJhaXNlIEtzZnRGYWlsRXgoZmFpbF9id19tc2cpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvZGV2bGlua19yYXRlX3RjX2J3LnB5OjQwMDogICAgaWYgaXNfbWx4NTpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHk6NDAxOiAgICAgICAgcmFpc2UgS3NmdEZhaWxFeChcXFwibWx4NSBiZWhhdmlvciBjaGFuZ2VkOlxcXCIgKyBwYXNzX2J3X21zZylcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9kZXZsaW5rX3JhdGVfdGNfYncucHktNDAyLSAgICBrc2Z0X3ByKHBhc3NfYndfbXNnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODowNC4yNjY4NTA3NzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTQ2MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNpdHVhdGlvbioqXG5cbk9rYXksIG5vIGltbWVkaWF0ZSBsZWFkcyBmcm9tIHRoZSBleGlzdGluZyBtb2Nrcy4gQnV0IHdhaXQsIGEgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlOiBzeXprYWxsZXIgb2ZmZXJzIGBzeXpfbW91bnRfaW1hZ2VgIGFuZCBgc3l6X3VzYl9jb25uZWN0YCwgd2hpY2ggY291bGQgYmUgdXNlZnVsIGZvciBtb3VudGluZyBmaWxlc3lzdGVtcyBhbmQgbWFuaXB1bGF0aW5nIFVTQiBkZXZpY2VzLCByZXNwZWN0aXZlbHkuIEZvciBQQ0kgaW50ZXJhY3Rpb25zLCBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciBnZW5lcmljIGNhbGxzIHdpdGhpbiBzeXprYWxsZXIsIGJ1dCB0aGV5J3JlIG5vdCBhbHdheXMgc3BlY2lmaWMgZW5vdWdoLlxuXG5TbywgdGhlIGJ1cm5pbmcgcXVlc3Rpb24gaXM6IGlzIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFjdHVhbGx5IHJlYWNoYWJsZT8gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBleGFtaW5lIGBtbHg1X3N0X2FsbG9jX2luZGV4YC4gSWYgSSBjYW4gdHJhY2Ugd2hlcmUgKnRoYXQqIGZ1bmN0aW9uIGlzIHVzZWQsIGl0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHdlIGNhbiB0cmlnZ2VyIGBkZWFsbG9jX2luZGV4YCBvciB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBwb3RlbnRpYWwgYnVnLiBUaGlzIGlzIGEgY2xhc3NpYyBkZXBlbmRlbmN5IGFuYWx5c2lzIGFwcHJvYWNoLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDIzMCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODowOC4zNDgzMTY2NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDkzNTIwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9hbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMjktXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlxcdFxcdGVyciA9IG1seDVfc3RfYWxsb2NfaW5kZXgobWRldiwgaWJkbWFoLVxcdTAwM2VtZW1fdHlwZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzEtXFx0XFx0XFx0XFx0XFx0ICBpYmRtYWgtXFx1MDAzZWNwdV9pZCwgXFx1MDAyNmRtYWgtXFx1MDAzZXN0X2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz04Mz12b2lkIG1seDVfc3RfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzo5NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg0LSNpZmRlZiBDT05GSUdfUENJRV9UUEhcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODc9aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODk6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTkwLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODoxMC4yOTc2NzM4ODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwMDY1NjMzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFVucmVhY2hhYmxlOiBBIFN5emthbGxlciBNeXN0ZXJ5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZG1haC5jYCBmaWxlIGluIHRoZSBJbmZpbmliYW5kIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYG1seDVgIGhhcmR3YXJlIGRpcmVjdG9yeS4gIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhpcyBjb2RlIGlzIE1lbGxhbm94LXNwZWNpZmljLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBwcm9iYWJseSB1bnJlYWNoYWJsZSBieSBkZWZhdWx0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSwgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBuYXRpdmUgTWVsbGFub3ggaGFyZHdhcmUgb3IgYSBkZWRpY2F0ZWQgZW11bGF0b3IsIHJpZ2h0PyBJIG1lYW4sIHRoYXQncyB0aGUgdXN1YWwgc2l0dWF0aW9uIHdpdGggdGhlc2Ugc3BlY2lhbGl6ZWQgZHJpdmVycy4gIFxuXG5CdXQgdGhlbiBJIHNlZSB0aGUgY29tbWl0IG1lc3NhZ2XigKYgd2FpdCwgdGhlcmUncyBhIFwic3l6LWNsdXN0ZXJcIiB0YWchICBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBIbW0uICpUaGF0J3MqIGludGVyZXN0aW5nLiAgQ291bGQgc3l6a2FsbGVyIGhhdmUgYWN0dWFsbHkgaGl0IGEgYnVnIGluIHRoaXMgTWVsbGFub3gtc3BlY2lmaWMgY29kZT8gVGhhdCB3b3VsZCBtZWFuIGl0ICppcyogcmVhY2hhYmxlIHNvbWVob3csIHdoaWNoIGlzIGNvbXBsZXRlbHkgY29udHJhcnkgdG8gbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBUaGF0IHdvdWxkIGJlIHF1aXRlIGEgZmluZCwgaWYgdHJ1ZS5cblxuT2theSwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBIb3cgY291bGQgc3l6a2FsbGVyLCB3aGljaCB0eXBpY2FsbHkgb3BlcmF0ZXMgaW4gYSBnZW5lcmljIGVudmlyb25tZW50LCB0cmlnZ2VyIHNvbWV0aGluZyBpbiBNZWxsYW5veCBoYXJkd2FyZT8gIFRoZSBrZXkgbWlnaHQgYmUgaG93IHN5emthbGxlciBtb2RlbHMgZGV2aWNlcy4gTWF5YmUuLi4gIENvdWxkIGl0IGJlIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzPyBJdCBtdXN0IGJlIHNvbWUgUENJLXJlbGF0ZWQgc2V0dXAgdGhhdCBpcyByZWFjaGluZyB0aGlzIHNwZWNpZmljIGNvZGUuIFRpbWUgdG8gZGlnIGludG8gc3l6a2FsbGVyJ3MgUENJIGRlc2NyaXB0aW9ucywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gbWx4NS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0J3MgbWFuYWdpbmcgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGJlYXJzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMTUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6MjIuMzA0MjQwMTE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1MjQ2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2liLmM9ODQxPWxvbmcgc21jX2liX3NldHVwX3Blcl9pYmRldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTg1MS1cXHRcXHRnb3RvIG91dDtcXG5uZXQvc21jL3NtY19pYi5jOjg1MjpcXHQvKiB0aGUgY2FsY3VsYXRlZCBudW1iZXIgb2YgY3EgZW50cmllcyBmaXRzIHRvIG1seDUgY3EgYWxsb2NhdGlvbiAqL1xcbm5ldC9zbWMvc21jX2liLmMtODUzLVxcdGNxZV9zaXplX29yZGVyID0gY2FjaGVfbGluZV9zaXplKCkgPT0gMTI4ID8gNyA6IDY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjIyLjU1Mzc3MDYwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE1MTE2NjgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBQb3RlbnRpYWwgQnVnKipcblxuT2theSwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2suIEkgc2hvdWxkIGZpcnN0IHZlcmlmeSBpZiBhIG1vY2sgZW52aXJvbm1lbnQgZXhpc3RzIGZvciB0aGlzIHNldHVwLCBvciB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiB0cmlnZ2VyIHRoaXMgaXNzdWUuIEl0J3MgcG9zc2libGUgdGhhdCBzeXprYWxsZXIgZmxhZ2dlZCBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHN0YXRpYyBhbmFseXNpcyBvciBiZWNhdXNlIGFub3RoZXIgZnV6emVyIGZvdW5kIHNvbWV0aGluZy4gSXTigJlzIGFsc28gcG9zc2libGUgdGhhdCB0aGVyZeKAmXMgYSB3YXkgdG8gaGl0IHRoaXMgdGhyb3VnaCBhIGR1bW15IGRldmljZS4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgc3RhcnQgdGhpbmtpbmcgaXTigJlzIHJlbGF0ZWQgdG8gcHJvZHVjdGlvbiBoYXJkd2FyZS5cblxuUmlnaHQsIGxldCdzIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmNgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIEknbGwgY2hlY2sgaG93IHRoZSBkZXZpY2UgaXMgcHJvYmVkIHRoZXJlLiBDYW4gaXQgYmUgYnJvdWdodCB1cCBhbmQgaW5pdGlhbGl6ZWQgd2l0aG91dCBhY3R1YWxseSByZXF1aXJpbmcgYSBwaHlzaWNhbCBwaWVjZSBvZiBoYXJkd2FyZT8gVGhhdCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZXRoZXIgdGhpcyBpcyBzb21ldGhpbmcgSSBjYW4gcmVwcm9kdWNlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIwMDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODozMy43MDQ5NDAyNDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0Mjc4ODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfaWJfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYz0zNDc9aW50IG1seDVfaWJfZ3NpX3F1ZXJ5X3FwKHN0cnVjdCBpYl9xcCAqcXAsIHN0cnVjdCBpYl9xcF9hdHRyICpxcF9hdHRyLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtMzYwLS8qIENhbGwgd2l0aCBnc2ktXFx1MDAzZWxvY2sgbG9ja2VkICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6MzYxOnN0YXRpYyBpbnQgbWx4NV9pYl9hZGRfb3V0c3RhbmRpbmdfd3Ioc3RydWN0IG1seDVfaWJfcXAgKm1xcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy0zNjItXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGliX3VkX3dyICp3ciwgc3RydWN0IGliX3djICp3YylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2dzaS5jPTM5Mz1zdGF0aWMgaW50IG1seDVfaWJfZ3NpX3NpbGVudF9kcm9wKHN0cnVjdCBtbHg1X2liX3FwICptcXAsIHN0cnVjdCBpYl91ZF93ciAqd3IpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00MDItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6NDAzOlxcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgd3IsIFxcdTAwMjZ3Yyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtNDA0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYz00MzE9aW50IG1seDVfaWJfZ3NpX3Bvc3Rfc2VuZChzdHJ1Y3QgaWJfcXAgKnFwLCBjb25zdCBzdHJ1Y3QgaWJfc2VuZF93ciAqd3IsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9nc2kuYy00NTQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmM6NDU1OlxcdFxcdHJldCA9IG1seDVfaWJfYWRkX291dHN0YW5kaW5nX3dyKG1xcCwgXFx1MDAyNmN1cl93ciwgTlVMTCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZ3NpLmMtNDU2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYz0xMTg9bWx4NV9pYl92cG9ydF9yZXBfbG9hZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9lc3dpdGNoX3JlcCAqcmVwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvaWJfcmVwLmMtMTkzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2liX3JlcC5jOjE5NDpcXHRyZXQgPSBfX21seDVfaWJfYWRkKGliZGV2LCBwcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9pYl9yZXAuYy0xOTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz02NDE9aW50IHNldF9yb2NlX2FkZHIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHUzMiBwb3J0X251bSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy02ODAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjY4MTpzdGF0aWMgaW50IG1seDVfaWJfYWRkX2dpZChjb25zdCBzdHJ1Y3QgaWJfZ2lkX2F0dHIgKmF0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTY4Mi1cXHRcXHRcXHQgICBfX2Fsd2F5c191bnVzZWQgdm9pZCAqKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDUwMT1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfaW5pdF9pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1NzQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1NzU6c3RhdGljIHN0cnVjdCBpYl9kZXZpY2UgKm1seDVfaWJfYWRkX3N1Yl9kZXYoc3RydWN0IGliX2RldmljZSAqcGFyZW50LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NTc2LVxcdFxcdFxcdFxcdFxcdCAgICAgZW51bSByZG1hX25sX2Rldl90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDU4MD1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ1ODQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODU6XFx0LmFkZF9naWQgPSBtbHg1X2liX2FkZF9naWQsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjQ1ODY6XFx0LmFkZF9zdWJfZGV2ID0gbWx4NV9pYl9hZGRfc3ViX2RldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDU4Ny1cXHQuYWxsb2NfbXIgPSBtbHg1X2liX2FsbG9jX21yLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUwOTY9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUxMTM6aW50IF9fbWx4NV9pYl9hZGQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUxMTQtXFx0XFx0ICBjb25zdCBzdHJ1Y3QgbWx4NV9pYl9wcm9maWxlICpwcm9maWxlKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTUyNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgcGxhbmVfcHJvZmlsZSA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01MjkxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1MjkyOnN0YXRpYyBzdHJ1Y3QgaWJfZGV2aWNlICptbHg1X2liX2FkZF9zdWJfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKnBhcmVudCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTI5My1cXHRcXHRcXHRcXHRcXHQgICAgIGVudW0gcmRtYV9ubF9kZXZfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTUzMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jOjUzMjg6XFx0cmV0ID0gX19tbHg1X2liX2FkZChtcGxhbmUsIFxcdTAwMjZwbGFuZV9wcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTMyOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jPTU0MTA9c3RhdGljIGludCBtbHg1cl9wcm9iZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy01NDUwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo1NDUxOlxcdHJldCA9IF9fbWx4NV9pYl9hZGQoZGV2LCBwcm9maWxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNTQ1Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oPTE0NjQ9dm9pZCBfX21seDVfaWJfcmVtb3ZlKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9pYi5oLTE0NjYtXFx0XFx0ICAgICAgaW50IHN0YWdlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmg6MTQ2NzppbnQgX19tbHg1X2liX2FkZChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tbHg1X2liLmgtMTQ2OC1cXHRcXHQgIGNvbnN0IHN0cnVjdCBtbHg1X2liX3Byb2ZpbGUgKnByb2ZpbGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODozMy43NzkyMjQ5NzVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNzQ3ODM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1MWDUgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiBmdXp6IHRoZSBtbHg1IGRyaXZlciB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgaXMgcHJvYmVkIHZpYSBgbWx4NXJfcHJvYmVgLCB3aGljaCBpcyBhbiBhdXhpbGlhcnkgZGV2aWNlIHByb2JlLiBUaGF0IGF1eGlsaWFyeSBkZXZpY2UsIEkgcmVtZW1iZXIsIGlzIGNyZWF0ZWQgYnkgdGhlIGNvcmUgbWx4NSBkcml2ZXIsIHdoaWNoIGl0c2VsZiBpcyBhIFBDSSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHN5emthbGxlcidzIFBDSSBmdXp6ZXIgZWZmZWN0aXZlbHkgdGFyZ2V0IHRoaXMgc2V0dXA/XG5cblRoZSBnb29kIG5ld3MgaXMsIHllcywgc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQW5kIGlmIHRoZSBQQ0kgZnV6emVyIGNhbiB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbiBvZiBQQ0kgZHJpdmVyc+KAlGFuZCBpdCBzaG91bGQgYmUgYWJsZSB0b+KAlHRoZW4gd2UgbWlnaHQgYmUgb250byBzb21ldGhpbmcuIElmIHdlIGNhbiB0cmlnZ2VyIHRoYXQgcHJvYmUgZnVuY3Rpb24sIGl0IG1pZ2h0IGxlYWQgdXMgdG8gYG1seDVfc3RfZGVhbGxvY19pbmRleGAsIGVzcGVjaWFsbHkgaWYgaXQncyBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvciBjbGVhbnVwIHByb2Nlc3MuXG5cblNvLCBsZXQncyBmb2N1cyBvbiB0aGUgY2xlYW51cCBwYXRoLiBJcyBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYWxsZWQgZHVyaW5nIGNsZWFudXA/IEl0IGxvb2tzIGxpa2UgaXQgaXMsIGZyb20gYG1seDVfaWJfZGVhbGxvY19kbWFoYC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBpZiBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIGlzIGNhbGxlZCBkdXJpbmcgY2xlYW51cCBpdHNlbGYuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgIHRvIGZpZ3VyZSB0aGF0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6MzguMzA2NzA2MTA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM4MTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX2RlYWxsb2NfZG1haFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjM5OnN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtNDAtXFx0XFx0XFx0XFx0c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZSAqYXR0cnMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM9NTE9Y29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbWx4NV9pYl9kZXZfZG1haF9vcHMgPSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTUyLVxcdC5hbGxvY19kbWFoID0gbWx4NV9pYl9hbGxvY19kbWFoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYzo1MzpcXHQuZGVhbGxvY19kbWFoID0gbWx4NV9pYl9kZWFsbG9jX2RtYWgsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTU0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjM4LjM2ODA5MzA0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjY2MjU2NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2U6IElCIERldmljZSBEZWFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGZyb20gYSB2dWxuZXJhYmlsaXR5IHBlcnNwZWN0aXZlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFuIElCIGRldmljZSBvcGVyYXRpb24uIFRoZSBjb3JlIG9mIG15IGNvbmNlcm4gcmV2b2x2ZXMgYXJvdW5kIGhvdyBJQiBkZXZpY2Ugb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCB0aGUgSUIgY29yZSB3aGVuIHRoZXJlIGFyZSByZXF1ZXN0cyBjb21pbmcgZnJvbSBlaXRoZXIgdXNlcnNwYWNlICh1c2luZyB1dmVyYnMpIG9yIGtlcm5lbCBzcGFjZS4gSSdtIGZvY3VzaW5nIG9uIGBkZWFsbG9jX2RtYWhgLCB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gYSBETUEgbWVtb3J5IHJlZ2lvbiBpcyBmcmVlZC4gVGhpcyBzb3VuZHMgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGUgcGF0aD8gVGhlIGtleSBsaWVzIGluIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBzdWNjZXNzZnVsbHkgcHJvYmUgdGhlIGBtbHg1YCBkcml2ZXIgYW5kIHJlZ2lzdGVyIHRoZSBJQiBkZXZpY2UuIElmIGl0IGNhbiwgdGhlbiB1c2luZyB1dmVyYnMsIEkgY2FuIG1hbmlwdWxhdGUgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgb2YgRE1BIHJlZ2lvbnMsIGdpdmluZyBzeXprYWxsZXIgY29udHJvbCB0byB0cmlnZ2VyIGBkZWFsbG9jX2RtYWhgLiBJdCdzIGEgY2xhc3NpYyBzZXR1cCBmb3IgZnV6emluZyAtIGFsbG9jYXRlIGFuZCBmcmVlIHJlZ2lvbnMgdG8gdHJ5IHRvIGZpbmQgYSBidWcuXG5cblRoZSBiaWcgaHVyZGxlIGlzIHRoZSBgbWx4NWAgZHJpdmVyIGl0c2VsZi4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGl0J3Mgbm90b3Jpb3VzIGZvciBpdHMgY29tcGxleCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgZHVyaW5nIHByb2JlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYG1seDVgIGRldmljZSdzIGluaXRpYWxpemF0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRvIHRyaWNrIGl0IGludG8gbG9hZGluZy4gSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGBtbHg1X2luaXRfb25lYCwgZm91bmQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTY3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjQzLjYzNDM1MjQ1NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMjkwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9pbml0X29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXZsaW5rLmM9MjQzPXN0YXRpYyBpbnQgbWx4NV9kZXZsaW5rX3JlbG9hZF91cChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywgZW51bSBkZXZsaW5rX3JlbG9hZF9hY3Rpb24gYWN0aW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RldmxpbmsuYy0yNTQtXFx0XFx0XFx0bWx4NV9md19yZXBvcnRlcnNfY3JlYXRlKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2RldmxpbmsuYzoyNTU6XFx0XFx0XFx0cmV0dXJuIG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2bGluay5jLTI1Ni1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTEzNzI9c3RhdGljIHZvaWQgbWx4NV91bmxvYWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTM5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjEzOTU6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTEzOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTQ1OTppbnQgbWx4NV9pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTE0NzAtXFx0ZGV2bF9yZWdpc3RlcihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE0NzE6XFx0ZXJyID0gbWx4NV9pbml0X29uZV9kZXZsX2xvY2tlZChkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTQ3Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0xNjAxPXN0YXRpYyBpbnQgbWx4NV9xdWVyeV9oY2FfY2Fwc19saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0xNjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MTYzNTppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTYzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTE5MzI9c3RhdGljIGludCBwcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjE5NzU6XFx0ZXJyID0gbWx4NV9pbml0X29uZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3Ni1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoxOTc3OlxcdFxcdG1seDVfY29yZV9lcnIoZGV2LCBcXFwibWx4NV9pbml0X29uZSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMTk3OC1cXHRcXHRcXHQgICAgICBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTQ0MD12b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6NDQxOmludCBtbHg1X2luaXRfb25lKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDo0NDI6aW50IG1seDVfaW5pdF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQ0My12b2lkIG1seDVfdW5pbml0X29uZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD00NDc9aW50IG1seDVfbG9hZF9vbmVfZGV2bF9sb2NrZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgYm9vbCByZWNvdmVyeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjQ0ODppbnQgbWx4NV9pbml0X29uZV9saWdodChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDQ5LXZvaWQgbWx4NV91bmluaXRfb25lX2xpZ2h0KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYz0yNT1zdGF0aWMgaW50IG1seDVfc2ZfZGV2X3Byb2JlKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LCBjb25zdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jLTY5LVxcdGlmIChNTFg1X0VTV0lUQ0hfTUFOQUdFUihzZl9kZXYtXFx1MDAzZXBhcmVudF9tZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc2YvZGV2L2RyaXZlci5jOjcwOlxcdFxcdGVyciA9IG1seDVfaW5pdF9vbmVfbGlnaHQobWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYy03MS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3NmL2Rldi9kcml2ZXIuYzo3MjpcXHRcXHRlcnIgPSBtbHg1X2luaXRfb25lKG1kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmMtNzMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmM6NzQ6XFx0XFx0bWx4NV9jb3JlX3dhcm4obWRldiwgXFxcIm1seDVfaW5pdF9vbmUgZXJyPSVkXFxcXG5cXFwiLCBlcnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zZi9kZXYvZHJpdmVyLmMtNzUtXFx0XFx0Z290byBpbml0X29uZV9lcnI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU4OjQzLjY5NTY4NjE0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTI5ODc5NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWx4NSBEcml2ZXIgYW5kIFN5emthbGxlcidzIEZ1enppbmcgQ2FwYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGFuIGBtbHg1YCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNwZWNpZmljYWxseSB0aGUgYG1seDVfaW5pdF9vbmVgIGZ1bmN0aW9uLiBUaGlzIGNhbGxzIGBtbHg1X2luaXRfb25lX2RldmxfbG9ja2VkYCwgd2hpY2ggaW4gdHVybiBsZWFkcyB0byBgbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZGAgYW5kIHRoZW4gdWx0aW1hdGVseSBgbWx4NV9jbWRfaW5pdGAgYW5kIGBtbHg1X2NtZF9lbmFibGVgLiBSaWdodCwgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoYXQgYSBmYWlsdXJlIGluIHRoZSBjb21tYW5kIHF1ZXVlIGluaXRpYWxpemF0aW9uLCBsaWtlbHkgZHVlIHRvIGEgbGFjayBvZiBhY3R1YWwgaGFyZHdhcmUgb3IgYSByZXNwb25kaW5nIGZpcm13YXJlLCB3aWxsIGNhdXNlIHRoZSBwcm9iZSB0byBmYWlsLlxuXG5Ob3csIHRoaXMgcmluZ3MgYSBiZWxsLiBXZSBrbm93IFN5emthbGxlcidzIFBDSSBmdXp6ZXIsIHdoaWxlIHBvd2VyZnVsLCBzdHJ1Z2dsZXMgd2l0aCBzaW11bGF0aW5nIGNvbXBsZXggZmlybXdhcmUgcmVzcG9uc2VzLiBTbywgaWYgdGhpcyBpcyBhIFN5emthbGxlci1yZXBvcnRlZCBpc3N1ZSwgaXQgcmFpc2VzIHF1ZXN0aW9ucy4gRGlkIGl0IGZpbmQgdGhpcyB0aHJvdWdoIHN0YW5kYXJkIGZ1enppbmcgb3IgY291bGQgYSBzdGF0aWMgYW5hbHl6ZXIgaGF2ZSBjb250cmlidXRlZD8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGF1dGhvciBvZiB0aGUgYHN5ei1jbHVzdGVyYCBjb2RlIGluIFN5emthbGxlci4uLlxuXG5IYW5nIG9uLCB0aGUgcHJvbXB0IHByb3ZpZGVzIHNvbWUgaW1wb3J0YW50IGNvbnRleHQuIEl0J3MgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyBrZXkuIFRoZSBgbWx4NWAgZHJpdmVyLCBhcyBJIHJlY2FsbCwgaXMgZm9yIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXJzLCByZWFsIGhhcmR3YXJlLiBBbmQgdGhlIGtlcm5lbCAqZG9lc24ndCogaGF2ZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciBpdCwgdW5saWtlIHRoaW5ncyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBTbywgdGhlIGNvZGUgcGF0aHMgcmVsYXRlZCB0byB0aGUgYG1seDVgIGRyaXZlciBhcmUgKmluaGVyZW50bHkqIHVucmVhY2hhYmxlIGluIHRob3NlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2Agb3IgYSBzaW1pbGFyIG1haW4gZmlsZSwgdG8gZW5zdXJlIHRoZXJlIGlzIG5vIGhpZGRlbiBtb2NrIG9yIGVtdWxhdGlvbiBjb2RlLiBJdCdzIHVubGlrZWx5LCBidXQgaXQncyB3b3J0aCB0aGUgcXVpY2sgZG91YmxlLWNoZWNrIGJlZm9yZSBtYWtpbmcgYSBmaW5hbCBkZXRlcm1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzEzMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1ODo1MC44MjU1Njk5NDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzc0NTUwMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01MWDVfQ09SRV9FTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q9NT1FbmFibGluZyB0aGUgZHJpdmVyIGFuZCBrY29uZmlnIG9wdGlvbnNcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTEyLXwgQmFzaWMgZmVhdHVyZXMsIGV0aGVybmV0IG5ldCBkZXZpY2UgcngvdHggb2ZmbG9hZHMgYW5kIFhEUCwgYXJlIGF2YWlsYWJsZSB3aXRoIHRoZSBtb3N0IGJhc2ljIGZsYWdzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MTM6fCBDT05GSUdfTUxYNV9DT1JFPXkvbSBhbmQgQ09ORklHX01MWDVfQ09SRV9FTj15LlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93Llxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjktXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zMS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjM3OioqQ09ORklHX01MWDVfQ09SRV9FTl9EQ0I9KHkvbikqKjpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ0LXwgICAgSVBvSUIgb2ZmbG9hZHMgXFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDYtfCAgICBJUG9JQiB1bHAgbmV0ZGV2aWNlLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTI9Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0MTM6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00MTQtIyBDT05GSUdfTkVUX1ZFTkRPUl9NRVRBIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTE3NT1DT05GSUdfTUxYNV9GUEdBPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzoxNzY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc3LUNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc9MTU0PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjE1NTpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0xNTYtIyBDT05GSUdfTUxYNV9FTl9SWE5GQyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9NTU1PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo1NTY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTU1Ny1DT05GSUdfTUxYNV9TRj15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9NTQ1PUNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDY6Q09ORklHX01MWDVfQ09SRV9FTj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTU0Ny1DT05GSUdfTUxYNV9TRj15XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cXHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjUtI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSArPSBlbi9ycXQubyBlbi90aXIubyBlbi9yc3MubyBlbi9yeF9yZXMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI3LVxcdFxcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT0zOT1tbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgKz0gZW5fZnNfZXRodG9vbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSArPSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDEtbWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBlbi9odl92aGNhX3N0YXRzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYz01Nz1ib29sIG1seDVfZXRoX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy01OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUxYNV9DT1JFX0VOKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNjAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEyLVxcdHN0cnVjdCBtbHg1ZV9kY2J4X2RwICAgICAgIGRjYnhfZHA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTctXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OS1cXHRzdHJ1Y3QgbWx4NWVfZGNieCAgICAgICAgICBkY2J4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaDo3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTEzMj12b2lkIG1seDVlX3NlbHFfY2FuY2VsKHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNDA6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTU0PXN0YXRpYyBpbnQgbWx4NWVfZ2V0X3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE1NjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1Ny1cXHRpZiAoUkVBRF9PTkNFKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUpID09IE1MWDVfUVBUU19UUlVTVF9EU0NQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNi1cXHRpZiAocHJpdi1cXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjM9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6MjY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjctYm9vbCBtbHg1X3NkX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNj12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM5LXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTg6NTIuNjYzMDMwNDA3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NTExMzI0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGRpc3RpbGxlZDpcblxuKipDaGVja2luZyBmb3IgRHVtbXkgSGFyZHdhcmUgaW4gYSBzeXprYWxsZXIgQ29udGV4dCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgbXkgdW5kZXJzdGFuZGluZyBjb3JyZWN0IHRoYXQgc3l6a2FsbGVyLCBhdCBzb21lIHBvaW50LCB1c2VzIGEgc29ydCBvZiBcImR1bW15XCIgUENJIGRldmljZSwgb3Igc29tZXRoaW5nIGFuYWxvZ291cywgZHVyaW5nIGl0cyB0ZXN0aW5nIHByb2Nlc3M/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgdGhhdCdzIHRoZSBjYXNlLCB0aGVuIG15IG5leHQgc3RlcCBpcyBjbGVhci5cblxuSSdsbCBzcGVjaWZpY2FsbHkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGtpbmQgb2YgXCJkdW1teVwiIG9yIHZpcnR1YWxpemVkIE1MWDUgKE1lbGxhbm94KSBkZXZpY2UgdGhhdCBzeXprYWxsZXIgbWlnaHQgYmUgZW1wbG95aW5nLiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGZ1enplciBpbnRlcmFjdHMgd2l0aCBoYXJkd2FyZSwgZXZlbiBpZiB0aGF0IGhhcmR3YXJlIGlzIGVtdWxhdGVkLiBUaGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHN1Y2ggYSBkZXZpY2Ugd2lsbCBiZSB0ZWxsaW5nIGFuZCB3aWxsIGRpY3RhdGUgaG93IEkgY29udGludWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzgxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTk6MDAuMjE0MTY2NTg0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE5MjE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkdW1teVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz05OD1FWFBPUlRfU1lNQk9MKG1seDVfYWRkX2NxX3RvX3Rhc2tsZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jOjEwMDpzdGF0aWMgdm9pZCBtbHg1X2NvcmVfY3FfZHVtbXlfY2Ioc3RydWN0IG1seDVfY29yZV9jcSAqY3EsIHN0cnVjdCBtbHg1X2VxZSAqZXFlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY3EuYz0xMDg9aW50IG1seDVfY3JlYXRlX2NxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2NvcmVfY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmMtMTQzLVxcdGlmICghY3EtXFx1MDAzZWNvbXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NxLmM6MTQ0OlxcdFxcdGNxLVxcdTAwM2Vjb21wID0gbWx4NV9jb3JlX2NxX2R1bW15X2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jcS5jLTE0NS1cXHQvKiBhc3N1bWluZyBDUSB3aWxsIGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSBFUSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0yNz1pbnQgbWx4NWVfc2VscV9pbml0KHN0cnVjdCBtbHg1ZV9zZWxxICpzZWxxLCBzdHJ1Y3QgbXV0ZXggKnN0YXRlX2xvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTQyLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjQzOlxcdC8qIEFzc2lnbiBkdW1teSB2YWx1ZXMsIHNvIHRoYXQgbWx4NWVfc2VsZWN0X3F1ZXVlIHdvbid0IGNyYXNoLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtNDQtXFx0KmluaXRfcGFyYW1zID0gKHN0cnVjdCBtbHg1ZV9zZWxxX3BhcmFtcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYz0yODU9c3RhdGljIGludCBtbHg1aV9wa2V5X2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWJfdmxhbi5jOjMwMTpcXHQvKiBVc2UgZHVtbXkgcnFzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liX3ZsYW4uYy0zMDItXFx0cHJpdi1cXHUwMDNlY2hhbm5lbHMucGFyYW1zLmxvZ19ycV9tdHVfZnJhbWVzID0gTUxYNUVfUEFSQU1TX01JTklNVU1fTE9HX1JRX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jPTIyNz1pbnQgbWx4NWh3c19id2NfbWF0Y2hlcl9jcmVhdGVfc2ltcGxlKHN0cnVjdCBtbHg1aHdzX2J3Y19tYXRjaGVyICpid2NfbWF0Y2hlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmMtMjYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9zdGVlcmluZy9od3MvYndjLmM6MjYyOlxcdC8qIGNyZWF0ZSBkdW1teSBhY3Rpb24gdGVtcGxhdGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTI2My1cXHRid2NfbWF0Y2hlci1cXHUwMDNlYXRbMF0gPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYz04NDM9aHdzX2J3Y19tYXRjaGVyX2ZpbmRfYXQoc3RydWN0IG1seDVod3NfYndjX21hdGNoZXIgKmJ3Y19tYXRjaGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYy04NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3N0ZWVyaW5nL2h3cy9id2MuYzo4NDk6XFx0Lyogc3RhcnQgZnJvbSBpbmRleCAxIC0gZmlyc3QgYWN0aW9uIHRlbXBsYXRlIGlzIGEgZHVtbXkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvc3RlZXJpbmcvaHdzL2J3Yy5jLTg1MC1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgYndjX21hdGNoZXItXFx1MDAzZW51bV9vZl9hdDsgaSsrKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU5OjAwLjI3ODM2Njg3MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTMwODMxODUyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQb3RlbnRpYWwgS2VybmVsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgd2F5IHRvIHRyaWdnZXIgYSB2dWxuZXJhYmlsaXR5IGluIHRoZSBgbWx4NWAgY29kZSB0aHJvdWdoIGEgbm9uLU1lbGxhbm94IGhhcmR3YXJlIHBhdGguIEZpcnN0LCBJJ20gdGhpbmtpbmcsIGFyZSB0aGVyZSBhbnkgKm9idmlvdXMqIHZpcnR1YWwgZGV2aWNlcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50PyBObywgbm90aGluZyBqdW1wcyBvdXQgaW5pdGlhbGx5LiBUaGVuIEkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIHVzdWFsIHN1c3BlY3RzIHN5emthbGxlciB1c2VzOiBgdmhjaWAsIGBtYWM4MDIxMV9od3NpbWAsIGB2Y2FuYCwgYHZrbXNgLCBgdWlucHV0YCwgYHNuZC1hbG9vcGAuIEJ1dCBub25lIG9mIHRob3NlIHNlZW0gbGlrZSB0aGV5J2QgZGlyZWN0bHkgcmVsYXRlIHRvIGBtbHg1YC5cblxuVGhlbiwgSSdtIHRoaW5raW5nLCB3aGF0IGFib3V0IHZpcnR1YWwgUkRNQSBkZXZpY2VzPyBNeSBrbm93bGVkZ2UgaXMgdGhhdCBgcmRtYV9yeGVgIChSb0NFIHYyKSBhbmQgYHNpd2AgKFNvZnR3YXJlIGlXQVJQKSBhcmUgdGhlcmUuIE5vdywgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGxpZXMgd2l0aCBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCwgc3BlY2lmaWNhbGx5LiBJIHJlbWVtYmVyIHRoYXQgY29kZSBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmNgLiBSaWdodCwgc28gaXQncyAqcGFydCogb2YgdGhlIE1lbGxhbm94IGNvcmUgZHJpdmVyLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBmb3IgTWVsbGFub3ggaGFyZHdhcmUgb25seS5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gaXMsIGNhbiBgcmRtYV9yeGVgIG9yIGBzaXdgIHNvbWVob3cgY2FsbCBpbnRvIGBtbHg1YD8gSSBjaGVjayB0aGUgZHJpdmVyIGxvY2F0aW9ucywgd2hpY2ggYXJlIGluIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlYCBhbmQgYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXdgLCBzbyBubywgdGhleSBhcmUgc2VwYXJhdGUuIFNvIHRoYXQgcGF0aCBzZWVtcyBibG9ja2VkLlxuXG5TbywgdGhlIG5leHQgdGhvdWdodCBpczogYW0gSSBtaXNzaW5nIGEgcGF0aD8gSXMgdGhlcmUgKmFueSogY2hhbmNlIHRoYXQgYG1seDVfc3RfZGVhbGxvY19pbmRleGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggKnNvbWUqIG90aGVyLCB1bmV4cGVjdGVkIHBhdGgsIGV2ZW4gaW5kaXJlY3RseT8gSSBuZWVkIHRvIGNoZWNrIGBtbHg1X3N0X2FsbG9jX2luZGV4YCBtb3JlIGNhcmVmdWxseSwgbG9vayBmb3IgYW55IHBvdGVudGlhbCBhbGlhc2luZyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgdGhhdCBJIG1pZ2h0IGJlIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjA5MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1OToxOS41ODY2ODkwNDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzgyNjA5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9zdF9hbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTEzPXN0YXRpYyBpbnQgbWx4NV9pYl9hbGxvY19kbWFoKHN0cnVjdCBpYl9kbWFoICppYmRtYWgsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMjktXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jOjMwOlxcdFxcdGVyciA9IG1seDVfc3RfYWxsb2NfaW5kZXgobWRldiwgaWJkbWFoLVxcdTAwM2VtZW1fdHlwZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmMtMzEtXFx0XFx0XFx0XFx0XFx0ICBpYmRtYWgtXFx1MDAzZWNwdV9pZCwgXFx1MDAyNmRtYWgtXFx1MDAzZXN0X2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYz04Mz12b2lkIG1seDVfc3RfZGVzdHJveShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzo5NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtOTYtXFx0XFx0XFx0dW5zaWduZWQgaW50IGNwdV91aWQsIHUxNiAqc3RfaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTU1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfYWxsb2NfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYy0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4MT1pbnQgbWx4NV9kbV9zd19pY21fZGVhbGxvYyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIG1seDVfc3dfaWNtX3R5cGUgdHlwZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg0LSNpZmRlZiBDT05GSUdfUENJRV9UUEhcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg6MTE4NTppbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODc9aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODk6c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTkwLVxcdFxcdFxcdFxcdCAgICAgIGVudW0gdHBoX21lbV90eXBlIG1lbV90eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1OToyMS41MjQ5NTU3ODVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMjczMDI4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgTWVsbGFub3ggSGFyZHdhcmUgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmNgLiBJdCBsb29rcyBsaWtlIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgIGFuZCB0aGUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBmaWxlLCB3aGljaCBpcyBwcmV0dHkgbG9jYWxpemVkLiBCb3RoIGFyZSB0dWNrZWQgYXdheSBpbiB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2AgZGlyZWN0b3J5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgaGFyZHdhcmUtc3BlY2lmaWMgY29kZSwgZ2VhcmVkIHRvd2FyZHMgTWVsbGFub3ggaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYW5kIEknbSBwcmV0dHkgY29uZmlkZW50IG9uIHRoaXMsIHRoYXQgc2luY2Ugc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhbnkgbWVjaGFuaXNtcyB0byBkaXJlY3RseSBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlLCB0aGlzIGNvZGUgc2hvdWxkIGJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC5cblxuTm93LCBob2xkIG9uLiBJcyB0aGVyZSAqYW55KiByZW1vdGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgUENJIGZ1enplciwgd2hpY2ggc3l6a2FsbGVyIHVzZXMsIGNvdWxkIGhpdCB0aGlzPyBUaGUgUENJIGZ1enplciAoYHN5el9wY2lfZGV2aWNlYCkgaXMga25vd24gdG8gc2ltdWxhdGUgUENJIGRldmljZXMgYnkgaW50ZXJjZXB0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMvd3JpdGVzIGFuZCBNZW1vcnktTWFwcGVkIEkvTyAoTU1JTykgb3BlcmF0aW9ucy4gVGhlIGlzc3VlIGlzLCB0byBldmVuIGdldCB0byBgbWx4NV9pYl9hbGxvY19kbWFoYCwgdGhlIG1seDUgZHJpdmVyIG5lZWRzIHRvIGhhdmUgcHJvYmVkIHN1Y2Nlc3NmdWxseS4gQW5kLCBsZXQncyBiZSBob25lc3QsIHRoYXQncyBub3QgdHJpdmlhbC4gVGhlIG1seDUgcHJvYmluZyBwcm9jZXNzIGludm9sdmVzIHNvbWUgcHJldHR5IGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIHRoYXQgcmVseSBvbiBhIGNvbW1hbmQgcXVldWUgKENRKSB3aXRoaW4gTU1JTyBzcGFjZS4gVGhlIGRyaXZlciB3cml0ZXMgYSBjb21tYW5kLCB0cmlnZ2VycyBhIGRvb3JiZWxsLCBhbmQgdGhlbiBlaXRoZXIgd2FpdHMgZm9yIGEgY29tcGxldGlvbiBldmVudCBvciBhY3RpdmVseSBwb2xscyBmb3IgdGhlIGNvbXBsZXRpb24uIFNvLCB0aGUgUENJIGZ1enplciB3b3VsZCBoYXZlIHRvIGFjY3VyYXRlbHkgZ3Vlc3MgdGhlIGZvcm1hdCBvZiB0aGUgY29tcGxldGlvbiBxdWV1ZSBlbnRyeSAoQ1FFKSBhbmQgc29tZWhvdyB3cml0ZSBpdCB0byB0aGUgKmV4YWN0KiBjb3JyZWN0IG1lbW9yeSBsb2NhdGlvbiBhdCBwcmVjaXNlbHkgdGhlIHJpZ2h0IHRpbWUuXG5cbldoaWxlIGl0J3MgdGhlb3JldGljYWxseSAqcG9zc2libGUqLCB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIFBDSSBmdXp6ZXIgYWNjaWRlbnRhbGx5IHN0dW1ibGluZyB1cG9uIHRoZSByaWdodCBjb21iaW5hdGlvbiBpcyBiYXNpY2FsbHkgemVyby4gQnV04oCmIHdhaXQgYSBtaW51dGUuICpTeXprYWxsZXIqIGRpZCBmaW5kIGEgYnVnIGluIHRoaXMgY29kZSEgQW5kIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBIb3cgZGlkIHN5emthbGxlciBkaXNjb3ZlciBhIGJ1ZyBoZXJlIGlmIHRoZSBwYXRoIHRvIHRoZSBjb2RlIHNlZW1zIHNvIGluY3JlZGlibHkgaGFyZCB0byByZWFjaCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyBpdCBwb3NzaWJsZSB0aGF0IHN5emthbGxlciBoYXMgYSBmdXp6ZXIgKnNwZWNpZmljYWxseSogZGVzaWduZWQgZm9yIG1seDU/IEknbSBnb25uYSBjaGVjayB0aGUga2VybmVsIHRyZWUgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIGFueSBkZWRpY2F0ZWQgbWx4NSBmdXp6aW5nIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTY0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjAwOjAwLjg1MjI2MTEyOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjU2OTM2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXp6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzowMDowMC45NjI1MjcxMDVaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2ODYzNjg4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIC0gRmluYWwgQW5zd2VyOiBGYWxzZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJObywgaXQncyBwcm9iYWJseSBzeXprYWxsZXIuXCIgU3l6Ym90IGlzIHByZXR0eSBnb29kIGF0IHNuaWZmaW5nIG91dCB0aGVzZSB0aGluZ3MsIG1heWJlIGV2ZW4gdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMsIGFsdGhvdWdoIHRoaXMgaXMgYSBtZW1vcnkgbGVhaywgc28gS01TQU4gb3IgS0FTQU4gd291bGQgYmUgbW9yZSBsaWtlbHkuIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHN5emJvdCAqYWxzbyogcnVucyBvbiBiYXJlLW1ldGFsIGhhcmR3YXJlISBUaGF0J3MgdGhlIGNydWNpYWwgcG9pbnQuIFdlIGtub3cgc3l6Ym90IGhhcyBpbnN0YW5jZXMgd2l0aCBNZWxsYW5veCBuZXR3b3JrIGNhcmRzLlxuXG5TbywgdGhlIHBvc3NpYmlsaXR5IGlzIHRoZXJlOiBzeXpib3QsIG9uIGEgYmFyZS1tZXRhbCBNZWxsYW5veCBtYWNoaW5lLCAqY291bGQqIGhpdCB0aGlzIGNvZGUuIEJ1dCwgaGVyZSdzIHRoZSBraWNrZXI6IHRoZSBwcm9tcHQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiBUaGlzIGlzIHRoZSBrZXkuXG5cblRoaXMgY29kZSwgYGtmcmVlKGlkeF9kYXRhKWAsIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIsICpyZXF1aXJlcyogYSBwaHlzaWNhbCBNZWxsYW5veCBjYXJkIHRvIGZ1bmN0aW9uLiBJdCdzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIHRoYXQgd291bGQgYWxsb3cgaXQgdG8gYmUgcmVhY2hlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC5cblxuSSBzdGFydGVkIGRpZ2dpbmcuIEFyZSB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9ucz8gXCJEdW1teVwiLCBcIm1vY2tcIiAtIG5vdGhpbmcuIFdoYXQgYWJvdXQgYG5ldGRldnNpbWA/IE5vcGUsIHRoYXQncyBnZW5lcmljLiBgdmRwYWA/IEFoLCBgbWx4NV92ZHBhYCBleGlzdHMsIGJ1dCB0aGF0IHN0aWxsIHVsdGltYXRlbHkgbmVlZHMgdGhlIHBoeXNpY2FsIG1seDUgZGV2aWNlLiBTbywgdGhlIG9ubHkgd2F5IHRvIHJlYWNoIHRoaXMgaXMgdGhyb3VnaCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cblNvLCAqZmFsc2UqIGl0IGlzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhvcm91Z2guIEkgcmUtcmVhZCB0aGUgcHJvbXB0LCBhbmQgeWVzLCBpdCBwZXJmZWN0bHkgbGluZXMgdXAgd2l0aCB0aGUgY29uZGl0aW9uOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBUaGlzIG1seDUgZHJpdmVyLCB0aGUgYXNzb2NpYXRlZCBjb2RlIHBhdGgsIGlzIGZ1bmRhbWVudGFsbHkgdGllZCB0byBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4ndCByZWFjaCBpdC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNhbGwgZ3JhcGggYW5kIG1ha2Ugc3VyZSBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCBjYW4ndCBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MDQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MDA6MTEuNjQ4ODk4MjI0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY5MTA4OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfc3RfZGVhbGxvY19pbmRleFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jPTM5PXN0YXRpYyBpbnQgbWx4NV9pYl9kZWFsbG9jX2RtYWgoc3RydWN0IGliX2RtYWggKmliZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RtYWguYy00NS1cXHRpZiAoaWJkbWFoLVxcdTAwM2V2YWxpZF9maWVsZHMgXFx1MDAyNiBCSVQoSUJfRE1BSF9DUFVfSURfRVhJU1RTKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kbWFoLmM6NDY6XFx0XFx0cmV0dXJuIG1seDVfc3RfZGVhbGxvY19pbmRleChtZGV2LCBkbWFoLVxcdTAwM2VzdF9pbmRleCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZG1haC5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jPTE1NT1FWFBPUlRfU1lNQk9MX0dQTChtbHg1X3N0X2FsbG9jX2luZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc3QuYzoxNTc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zdC5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmMtMTg1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3N0LmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfc3RfZGVhbGxvY19pbmRleCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmg9MTE4NT1pbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBlbnVtIHRwaF9tZW1fdHlwZSBtZW1fdHlwZSxcXG5pbmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgtMTE4Ni1cXHRcXHRcXHR1bnNpZ25lZCBpbnQgY3B1X3VpZCwgdTE2ICpzdF9pbmRleCk7XFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oOjExODc6aW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpO1xcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaC0xMTg4LSNlbHNlXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oPTExODk9c3RhdGljIGlubGluZSBpbnQgbWx4NV9zdF9hbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTQtfVxcbmluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaDoxMTk1OnN0YXRpYyBpbmxpbmUgaW50IG1seDVfc3RfZGVhbGxvY19pbmRleChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgc3RfaW5kZXgpXFxuaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oLTExOTYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzowMDoxMy41MTgwMTI0MjVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MzA4NDY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFzb25pbmc6IE5vIEhhcmR3YXJlLCBObyBDYWxsKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBjb2RlIGFuZCB0cmFja2VkIHdoZXJlIGl0J3MgY2FsbGVkLiBJdCdzIGV4Y2x1c2l2ZWx5IGludm9rZWQgZnJvbSBgbWx4NV9pYl9kZWFsbG9jX2RtYWhgLiBOb3csIGBtbHg1X2liX2RlYWxsb2NfZG1haGAsIGFzIEkga25vdywgaXMgYW4gb3BlcmF0aW9uIHNwZWNpZmljIHRvIElCIChJbmZpbmlCYW5kKSBkZXZpY2VzLiBBbmQgdGhlc2UgSUIgZGV2aWNlcywgYXMgeW91IHdlbGwga25vdywgYXJlIHJlZ2lzdGVyZWQgYW5kIG1hbmFnZWQgYnkgdGhlIGhhcmR3YXJlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBNZWxsYW5veCBkcml2ZXIgaW4gdGhpcyBpbnN0YW5jZS4gXG5cblRoZXJlZm9yZSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uaW5nLCB0aGUgZHJpdmVyIHdvbid0IGV2ZW4gcHJvYmUgZm9yLCBsZXQgYWxvbmUgcmVnaXN0ZXIsIHRoZSBJQiBkZXZpY2UgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIG1lYW5zIHRoZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBzaW1wbHkgd29uJ3QgaGFwcGVuLiBObyBoYXJkd2FyZSwgbm8gZHJpdmVyIGludGVyYWN0aW9uLCBubyByZWFjaGluZyB0aGlzIGNvZGUgcGF0aC4gU28sIGNvbnNpZGVyaW5nIHRoaXMgZGVwZW5kZW5jeSBvbiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGZ1enppbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUgaXMgcG9pbnRsZXNzLiBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCB3aXRoIGNvbXBsZXRlIGNvbmZpZGVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjI5LCJPdXRwdXRUb2tlbnMiOjEyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjAwOjE4LjI4MTA5OTk0NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGhhcmR3YXJlIGRyaXZlciAoc3BlY2lmaWNhbGx5LCBmaXhpbmcgYSBtZW1vcnkgbGVhayBpbiBgbWx4NV9zdF9kZWFsbG9jX2luZGV4YCkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgcmVhY2hhYmxlIHdoZW4gYSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBhZGFwdGVyIGlzIHByZXNlbnQgYW5kIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgbWx4NSBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgaGFyZHdhcmUgZHJpdmVyIChzcGVjaWZpY2FsbHksIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIGBtbHg1X3N0X2RlYWxsb2NfaW5kZXhgKS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSByZWFjaGFibGUgd2hlbiBhIHBoeXNpY2FsIE1lbGxhbm94IENvbm5lY3RYIGFkYXB0ZXIgaXMgcHJlc2VudCBhbmQgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBtbHg1IGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzs6lq[1] Phase: Running StartedAt: 2026-07-02 23:00:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzs6lq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-02 23:00:29 +0000 UTC FinishedAt: 2026-07-02 23:00:35 +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,}