Name: series-workflowksjr8 Phase: Failed StartedAt: 2026-07-13 11:22:29 +0000 UTC FinishedAt: 2026-07-13 11:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksjr8[0] Phase: Succeeded StartedAt: 2026-07-13 11:22:29 +0000 UTC FinishedAt: 2026-07-13 11:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksjr8[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 11:22:29 +0000 UTC FinishedAt: 2026-07-13 11:44:20 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc4YTM0ODk4OTVlNjEzY2VkOWQ4ZjQ4MGE3M2I3ZjdmZmFhNWZmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmNcbmluZGV4IGU4YjZlMTU2MDI3OGJjLi5mODQyNGVjMzczNGIyOCAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wtdjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5jXG5AQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIGludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbiBcdFx0bW9kZSA9IHJldDtcbiBcdH1cbiBcbi1cdGV2ID0ga3phbGxvY19vYmooKmV2KTtcbiYjNDM7XHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZXYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgdGhlIEdGUF9LRVJORUxfQUNDT1VOVCBmbGFnIHRvIGEgbWVtb3J5IGFsbG9jYXRpb24gaW4gdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudCgpLiBUaGlzIGlzIGEgbWlub3IgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3OGEzNDg5ODk1ZTYxM2NlZDlkOGY0ODBhNzNiN2Y3ZmZhYTVmZmRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDM6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmMKaW5kZXggZThiNmUxNTYwMjc4YmMuLmY4NDI0ZWMzNzM0YjI4IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLXYxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5jCkBAIC0xNzIxLDcgJiM0MzsxNzIxLDcgQEAgaW50IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAogCQltb2RlID0gcmV0OwogCX0KIAotCWV2ID0ga3phbGxvY19vYmooKmV2KTsKJiM0MzsJZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFldikgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21lbWNvbnRyb2wtdjEuY2AuIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgc3dhcHBpbmcgYGt6YWxsb2Nfb2JqKCpldilgIGZvciBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gTXkgZmlyc3QgdGhvdWdodCBpcyAmIzM0O0htbSwgYGt6YWxsb2Nfb2JqYC4uLiBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBmYW1pbGlhciB3aXRoIHRoYXQgb25lLCBpcyBpdCBqdXN0IGEgd3JhcHBlciBhcm91bmQgYGt6YWxsb2NgPyYjMzQ7LiBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgaW5zaWRlIG9mIGBtbS9tZW1jb250cm9sLXYxLmNgIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBga3phbGxvY19vYmpgIGZ1bmN0aW9uLiBNeSBTcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmcgc2luY2UgdGhlIHJlZ3VsYXIgYGt6YWxsb2NgIGZ1bmN0aW9uIHVzZXMgdGhlIGZvcm0gYGt6YWxsb2Moc2l6ZSwgZmxhZ3MpYCwgc28gSSYjMzk7bSBjdXJpb3VzIGlmIHRoaXMgYF9vYmpgIHZhcmlhdGlvbiBhbHRlcnMgdGhlIGZsYWdzIGluIHNvbWUgd2F5LgoKTm93IHRoYXQgSSYjMzk7bSBoZXJlIGluIGBtbS9tZW1jb250cm9sLXYxLmNgLCBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IG9yaWVudCBteXNlbGYgd2l0aCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgYHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnRgIHRvIGdldCBzb21lIGNvbnRleHQsIHNpbmNlIEkgYXNzdW1lIHRoYXQmIzM5O3Mgd2hlcmUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBldmAgaXMgYW5kIHdoYXQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSB0byB0aGUgYWxsb2NhdGlvbiBmbGFncyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC12MS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYz0xMDk2PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMTkyLVx0XHRcdCAgICAgXCYjMzQ7aWYgeW91IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uYWxpdHkuXFxuXCYjMzQ7KTtcbm1tL21lbWNvbnRyb2wtdjEuYzoxMTkzOlx0XHRldmVudC1cdTAwM2VyZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQ7XG5tbS9tZW1jb250cm9sLXYxLmMtMTE5NC1cdFx0ZXZlbnQtXHUwMDNldW5yZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfdW5yZWdpc3Rlcl9ldmVudDtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTY1ND12b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHByaW8pXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTE2NzUtLyoqXG5tbS9tZW1jb250cm9sLXYxLmM6MTY3NjogKiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkgLSBCaW5kIHZtcHJlc3N1cmUgbm90aWZpY2F0aW9ucyB0byBhbiBldmVudGZkXG5tbS9tZW1jb250cm9sLXYxLmMtMTY3Ny0gKiBAbWVtY2c6XHRtZW1jZyB0aGF0IGlzIGludGVyZXN0ZWQgaW4gdm1wcmVzc3VyZSBub3RpZmljYXRpb25zXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTE2OTItICovXG5tbS9tZW1jb250cm9sLXYxLmM6MTY5MzppbnQgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS9tZW1jb250cm9sLXYxLmMtMTY5NC1cdFx0XHQgICAgICBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQsIGNvbnN0IGNoYXIgKmFyZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIE15c3Rlcnkgb2Yga3phbGxvY19vYmoqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBremFsbG9jX29iamAgaXMgYWxsIGFib3V0LiBJdCYjMzk7cyBub3QgcmluZ2luZyBhbnkgYmVsbHMgZnJvbSB0aGUgc3RhbmRhcmQga2VybmVsIHJvdXRpbmVzLCB3aGljaCBpcyBhbHdheXMgdGhlIGZpcnN0IHBsYWNlIHRvIGNoZWNrLiBNeSBpbnR1aXRpb24gc2F5cyB0aGlzIGlzIGEgY3VzdG9tIG9yIHNwZWNpYWxpemVkIGZ1bmN0aW9uLiBPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGVyZSBpcyB0aGlzIHVzZWQgaW4gb3VyIGtlcm5lbCwgaXQgbXVzdCBiZSBzb21ld2hlcmUuIExpbmUgMTcyMSBvZiBgbW0vbWVtY29udHJvbC12MS5jYCBpcyB3aGVyZSB0aGUgY2x1ZSBsaWVzLiAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcxMDpcdFx0cmV0ID0gbWF0Y2hfc3RyaW5nKHZtcHJlc3N1cmVfc3RyX2xldmVscywgVk1QUkVTU1VSRV9OVU1fTEVWRUxTLCB0b2tlbik7XG4xNzExOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTcxMjpcdFx0XHRnb3RvIG91dDtcbjE3MTM6XHRcdGxldmVsID0gcmV0O1xuMTcxNDpcdFxuMTcxNTpcdFx0LyogRmluZCBvcHRpb25hbCBtb2RlICovXG4xNzE2Olx0XHR0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGVjLCBcJiMzNDssXCYjMzQ7KTtcbjE3MTc6XHRcdGlmICh0b2tlbikge1xuMTcxODpcdFx0XHRyZXQgPSBtYXRjaF9zdHJpbmcodm1wcmVzc3VyZV9zdHJfbW9kZXMsIFZNUFJFU1NVUkVfTlVNX01PREVTLCB0b2tlbik7XG4xNzE5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xNzIwOlx0XHRcdFx0Z290byBvdXQ7XG4xNzIxOlx0XHRcdG1vZGUgPSByZXQ7XG4xNzIyOlx0XHR9XG4xNzIzOlx0XG4xNzI0Olx0XHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbjE3MjU6XHRcdGlmICghZXYpIHtcbjE3MjY6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE3Mjc6XHRcdFx0Z290byBvdXQ7XG4xNzI4Olx0XHR9XG4xNzI5Olx0XG4xNzMwOlx0XHRldi1cdTAwM2VlZmQgPSBldmVudGZkO1xuMTczMTpcdFx0ZXYtXHUwMDNlbGV2ZWwgPSBsZXZlbDtcbjE3MzI6XHRcdGV2LVx1MDAzZW1vZGUgPSBtb2RlO1xuMTczMzpcdFxuMTczNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2bXByLVx1MDAzZWV2ZW50c19sb2NrKTtcbjE3MzU6XHRcdGxpc3RfYWRkKFx1MDAyNmV2LVx1MDAzZW5vZGUsIFx1MDAyNnZtcHItXHUwMDNlZXZlbnRzKTtcbjE3MzY6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2bXByLVx1MDAzZWV2ZW50c19sb2NrKTtcbjE3Mzc6XHRcdHJldCA9IDA7XG4xNzM4Olx0b3V0OlxuMTczOTpcdFx0a2ZyZWUoc3BlY19vcmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBremFsbG9jX29iamAgRW5pZ21hKioKCk9rYXksIHNvIEkmIzM5O3ZlIHN0dW1ibGVkIGFjcm9zcyBga3phbGxvY19vYmpgLiBJdCYjMzk7cyBjbGVhcmx5IG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uIG5hbWUsIGFuZCBteSBndXQgc2F5cyBpdCYjMzk7cyBsaWtlbHkgc29tZSBraW5kIG9mIG1hY3JvIGRlZmluaXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGl0cyBjb250ZXh0LiBMZXQmIzM5O3MgZmlyZSB1cCBhIGBncmVwYCDigJMgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgdGFyZ2V0IHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBga3phbGxvY19vYmpgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIG1hY3JvJiMzOTtzIGV4cGFuc2lvbiwgaXRzIHVzYWdlIHBhdHRlcm5zLCBhbmQgaG9wZWZ1bGx5LCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBUaGUgZ29hbCBoZXJlIGlzbiYjMzk7dCBqdXN0IHRvIHNlZSB3aGVyZSBpdCAqaXMqIHVzZWQsIGJ1dCB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBob3cgaXQmIzM5O3MgZGVmaW5lZCwgYW5kIHdoYXQgYWJzdHJhY3Rpb25zIGl0JiMzOTtzIGludHJvZHVjaW5nLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIGBremFsbG9jX29iamAgd2lsbCBiZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIGNvZGUgc2VnbWVudC4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCB1bmNvdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtremFsbG9jX29iaiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzkxMjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q9MTAzPWxpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjExNTogICAgICAgICAgZ3JvY2sgPSBremFsbG9jX29iaigqZ3JvY2spO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdC04OS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcdFx0ZGNfc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19zeW5jKTtcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcdFx0ZGNfYXN5bmMgPSBremFsbG9jX29iaigqZGNfYXN5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdD0yNj1FeGFtcGxlOlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdDo0NTpcdFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTM5OmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgYW5kXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2ND1UaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYSB6ZXJvZWQgYXJyYXkgaXMgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njg6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDAtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XHRwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMzpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVx0cHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI3MC0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC02MzItXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc1MS0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpIHtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNy0gICAgICAgICAgLi4uLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0LTgwMS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XHRteV9maCA9IGt6YWxsb2Nfb2JqKCpteV9maCk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAzLVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jPTY0PW1vZHVsZV9mcm9iX2FyY2hfc2VjdGlvbnMoRWxmNjRfRWhkciAqaGRyLCBFbGY2NF9TaGRyICpzZWNoZHJzLFxuLS1cbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVx0bnN5bXMgPSBzeW10YWItXHUwMDNlc2hfc2l6ZSAvIHNpemVvZihFbGY2NF9TeW0pO1xuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XHRjaGFpbnMgPSBremFsbG9jX29ianMoc3RydWN0IGdvdF9lbnRyeSwgbnN5bXMpO1xuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTctXHRpZiAoIWNoYWlucykge1xuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM9MzkwPXJlZ2lzdGVyX2NwdXModm9pZClcbi0tXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jLTM5NC1cdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7XG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcdFx0c3RydWN0IGNwdSAqcCA9IGt6YWxsb2Nfb2JqKCpwKTtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVx0XHRpZiAoIXApXG4tLVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jPTExMjA9c3RhdGljIGludCBqaXRfcHJlcGFyZV9maW5hbF9tZW1fYWxsb2Moc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXHRpZiAoY3R4LVx1MDAzZW5lZWRfZXh0cmFfcGFzcykge1xuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XHRcdGN0eC1cdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXHUwMDNlaml0X2RhdGEpO1xuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzMtXHRcdGlmICghY3R4LVx1MDAzZWppdF9kYXRhKVxuLS1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYz0yMjA9bG9jb21vX2luaXRfb25lX2NoaWxkKHN0cnVjdCBsb2NvbW8gKmxjaGlwLCBzdHJ1Y3QgbG9jb21vX2Rldl9pbmZvICppbmZvKVxuLS1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM6MjI1Olx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tb19kZXYpO1xuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2Mi1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XHRsY2hpcCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb2NvbW8pO1xuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2NC1cdGlmICghbGNoaXApXG4tLVxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jPTczMz1zYTExMTFfaW5pdF9vbmVfY2hpbGQoc3RydWN0IHNhMTExMSAqc2FjaGlwLCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCxcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzM5LVxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jOjc0MDpcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03NDEtXHRpZiAoIWRldikge1xuLS1cbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jPTE3OD1zdGF0aWMgaW50IHNjb29wX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM6MTg4Olx0ZGV2cHRyID0ga3phbGxvY19vYmooc3RydWN0IHNjb29wX2Rldik7XG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXHRpZiAoIWRldnB0cilcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXG4tLVxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMC1cdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxuYXJjaC9hcm0va2VybmVsL3NtcC5jOjExMTpcdFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEyLVxuLS1cbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgxLVx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xuYXJjaC9hcm0va2VybmVsL3Zkc28uYzoxODI6XHR2ZHNvX3RleHRfcGFnZWxpc3QgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdGV4dF9wYWdlcyk7XG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cdGlmICh2ZHNvX3RleHRfcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjQtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcdHJlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcmVzb3VyY2UsIDIpO1xuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjYtXHRpZiAoIXJlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmM9Njk9c3RhdGljIGludCBfX2luaXQgZWJzYTI4NV9sZWRzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg2LVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYzo4NzpcdFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg4LVx0XHRpZiAoIWxlZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzI5LVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcdFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVx0XHRpZiAoIWxlZClcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NDgwOlx0cG11X21tZGMgPSBremFsbG9jX29iaigqcG11X21tZGMpO1xuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cdGlmICghcG11X21tZGMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTI5LVxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcdFx0bmV3X2NvbXBhdCA9IGt6YWxsb2Nfb2JqKCpuZXdfY29tcGF0KTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYz0xNjM9c3RhdGljIHZvaWQgX19pbml0IGFybWFkYV8zNzVfMzgwX2NvaGVyZW5jeV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODctXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jOjE4ODpcdFx0cCA9IGt6YWxsb2Nfb2JqKCpwKTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg5LVx0XHRwLVx1MDAzZW5hbWUgPSBrc3RyZHVwKFwmIzM0O2FybSxpby1jb2hlcmVudFwmIzM0OywgR0ZQX0tFUk5FTCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU2LVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU4LVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zODA9c3RhdGljIHZvaWQgX19pbml0IG14c19tYWNoaW5lX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM4OS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzkwOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM5MS1cdGlmICghc29jX2Rldl9hdHRyKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM9Mjk0PXN0YXRpYyBpbnQgX19pbml0IG9tYXAxX3N5c3RlbV9kbWFfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYzozMjI6XHRkID0ga3phbGxvY19vYmooKmQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXHRpZiAoIWQpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTYtXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3Olx0b21hcF9tY2JzcF9kZXZpY2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKiwgc2l6ZSk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmMtMjk4LVx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM9NTE9c3RhdGljIGludCBfX2luaXQgb21hcDFfZG1fdGltZXJfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjctXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM6MTI4Olx0XHRwZGF0YSA9IGt6YWxsb2Nfb2JqKCpwZGF0YSk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI5LVx0XHRpZiAoIXBkYXRhKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTIzOS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTI0MS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jPTc4Nj12b2lkIF9faW5pdCBvbWFwX3NvY19kZXZpY2VfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTAtXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM6NzkxOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jPTEzMT1zdGF0aWMgaW50IG9tYXBfZGV2aWNlX2J1aWxkX2Zyb21fZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jOjE1OTpcdGh3bW9kcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgb21hcF9od21vZCAqLCBvaF9jbnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cdGlmICghaHdtb2RzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTMzOTQtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1Olx0c3lzYyA9IGt6YWxsb2Nfb2JqKCpzeXNjKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTMzOTYtXHRpZiAoIXN5c2MpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNC1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNm9oLVx1MDAzZXNsYXZlX3BvcnRzKSkge1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcdFx0b2kgPSBremFsbG9jX29iaigqb2kpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cdFx0aWYgKCFvaSlcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zNTEzPWludCBvbWFwX2h3bW9kX2luaXRfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVx0aWYgKCFvaCkge1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUyODpcdFx0b2ggPSBremFsbG9jX29iaigqb2gpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUyOS1cdFx0aWYgKCFvaClcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUzOTpcdFx0b2gtXHUwMDNlY2xhc3MgPSBremFsbG9jX29iaigqb2gtXHUwMDNlY2xhc3MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cdFx0aWYgKCFvaC1cdTAwM2VjbGFzcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYz0zNzk9c3RhdGljIGludCBfX2luaXQgYW14M19pZGxlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZSwgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDEyLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jOjQxMzpcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxNC1cdGlmICghaWRsZV9zdGF0ZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgc3Jfc2V0X252YWx1ZXMoc3RydWN0IG9tYXBfdm9sdF9kYXRhICp2b2x0X2RhdGEsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM6NDI6XHRudmFsdWVfdGFibGUgPSBremFsbG9jX29ianMoKm52YWx1ZV90YWJsZSwgY291bnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cdGlmICghbnZhbHVlX3RhYmxlKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3MS1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjE3MjpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTItXHQgKi9cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzo0OTM6XHRyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cdGlmICghcmVzKVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcbi0tXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jLTY5NC1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1Olx0ZWMgPSBremFsbG9jX29iaihlY2FyZF90KTtcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk2LVx0aWYgKCFlYykge1xuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM9OTM9aW50IF9faW5pdCBzYTExeHhfY2xrX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEwOS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM6MTEwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMTEtXHRpZiAoIWh3KVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMxLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMzI6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMy1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jPTMxNz1pbnQgX19pbml0IHNhMTF4MF9yZWdpc3Rlcl9maXhlZF9yZWd1bGF0b3IoaW50IG4sXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYzozMjQ6XHRjZmctXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVx1MDAzZWluaXRfZGF0YSk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzI1LVx0aWYgKCFjZmctXHUwMDNlaW5pdF9kYXRhKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmMtMjc4LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XHRkID0ga3phbGxvY19vYmooKmQpO1xuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yODAtXHRpZiAoIWQpIHtcbi0tXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYz0xNDE9c3RhdGljIGludCBfX2luaXQgcmNhcl9nZW4yX3JlZ3VsYXRvcl9xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jLTE2Ni1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jOjE2NzpcdFx0cXVpcmsgPSBremFsbG9jX29iaigqcXVpcmspO1xuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY4LVx0XHRpZiAoIXF1aXJrKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3Rlcilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XHRvcHBzID0ga3phbGxvY19vYmpzKCpvcHBzLCBNQVhfT1BQUyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTktXHRpZiAoIW9wcHMpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NDQyPWludCBfX2luaXQgdmVfc3BjX2luaXQodm9pZCBfX2lvbWVtICpiYXNlYWRkciwgdTMyIGExNV9jbHVzaWQsIGludCBpcnEpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNDQ0LVx0aW50IHJldDtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcdGluZm8gPSBremFsbG9jX29iaigqaW5mbyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDYtXHRpZiAoIWluZm8pXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NTIzPXN0YXRpYyBzdHJ1Y3QgY2xrICp2ZV9zcGNfY2xrX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmNwdV9kZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI3LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NTI4Olx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjktXHRpZiAoIXNwYylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYz0xMjM9c3RhdGljIHZvaWQgX19pbml0IHZlcnNhdGlsZV9kdF9wY2lfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jOjE0NTpcdG5ld3Byb3AgPSBremFsbG9jX29iaigqbmV3cHJvcCk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXHRpZiAoIW5ld3Byb3ApXG4tLVxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEwLVxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jLTExMi1cdGlmICghc29jX2Rldl9hdHRyKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM9NTAzPXN0YXRpYyBfX2luaXQgaW50IGwyeDBfcG11X2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUwOS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM6NTEwOlx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MTEtXHRpZiAoIWwyeDBfcG11KSB7XG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYz0zMTU9c3RhdGljIGludCBfX2luaXQgX191bmlwaGllcl9jYWNoZV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jOjM0NTpcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cdGlmICghZGF0YSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtNTYwLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XHRidWYgPSBremFsbG9jX29iaigqYnVmLFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjItXHRcdFx0ICBnZnAgXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz0xNDg3PWFybV9pb21tdV9jcmVhdGVfbWFwcGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgYmFzZSwgdTY0IHNpemUpXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA2LVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzoxNTA3Olx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDgtXHRpZiAoIW1hcHBpbmcpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jPTMxNj1pbnQgX19pbml0IGFyY2hfeGVuX3VucG9wdWxhdGVkX2luaXQoc3RydWN0IHJlc291cmNlICoqcmVzKVxuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6MzQ0Olx0cmVncyA9IGt6YWxsb2Nfb2JqcygqcmVncywgbnJfcmVnKTtcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXHRpZiAoIXJlZ3MpIHtcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM4ODpcdFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODktXHRcdGlmICghdG1wX3Jlcykge1xuLS1cbmFyY2gvYXJtL3hlbi9wMm0uYz0xNTA9Ym9vbCBfX3NldF9waHlzX3RvX21hY2hpbmVfbXVsdGkodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxuYXJjaC9hcm0veGVuL3AybS5jLTE3OC1cbmFyY2gvYXJtL3hlbi9wMm0uYzoxNzk6XHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcbmFyY2gvYXJtL3hlbi9wMm0uYy0xODAtXHRpZiAoIXAybV9lbnRyeSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM9Njg9c3RhdGljIGludCBfX2luaXQgX192ZHNvX2luaXQoZW51bSB2ZHNvX2FiaSBhYmkpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jOjg0Olx0dmRzb19wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm9bYWJpXS52ZHNvX3BhZ2VzKTtcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cdGlmICh2ZHNvX3BhZ2VsaXN0ID09IE5VTEwpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5Mi1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcdHRoaXMgPSBremFsbG9jX29iaigqdGhpcyk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy00OTQtXHRpZiAoIXRoaXMpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz05ODE9aW50IGt2bV9pbml0X3N0YWdlMl9tbXUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11LCB1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTAwNy1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjEwMDg6XHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vbW11LmMtMTAwOS1cdGlmICghcGd0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTExODA9aW50IHRvcHVwX2h5cF9tZW1jYWNoZShzdHJ1Y3Qga3ZtX2h5cF9tZW1jYWNoZSAqbWMsIHVuc2lnbmVkIGxvbmcgbWluX3BhZ2VzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXHRpZiAoIW1jLVx1MDAzZW1hcHBpbmcpIHtcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XHRcdG1jLVx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4Ny1cdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTI1MTA9aW50IF9faW5pdCBrdm1fbW11X2luaXQodTMyIGh5cF92YV9iaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDMtXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoyNTQ0Olx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0NS1cdGlmICghaHlwX3BndGFibGUpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xMzI3PWludCBrdm1fdmNwdV9hbGxvY2F0ZV92bmNyX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cdGlmICghdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiKSB7XG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlx0XHRzdHJ1Y3Qgdm5jcl90bGIgKnZ0ID0ga3phbGxvY19vYmooKnZjcHUtXHUwMDNlYXJjaC52bmNyX3RsYixcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTEzMzQtXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDAtXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlx0a3ZtLVx1MDAzZWFyY2guc3lzcmVnX21hc2tzID0ga3phbGxvY19vYmooKihrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMi1cdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jPTExNj1zdGF0aWMgc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUgKmt2bV9wdGR1bXBfcGFyc2VyX2NyZWF0ZShzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jOjEyMjpcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjMtXHRpZiAoIXN0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MjA3PXN0YXRpYyBpbnQga3ZtX3ZnaWNfZGlzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IG5yX3NwaXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXHRkaXN0LVx1MDAzZWFjdGl2ZV9zcGlzID0gKGF0b21pY190KUFUT01JQ19JTklUKDApO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XHRkaXN0LVx1MDAzZXNwaXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLCBucl9zcGlzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXHRpZiAoIWRpc3QtXHUwMDNlc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTMxNj1zdGF0aWMgaW50IHZnaWNfYWxsb2NhdGVfcHJpdmF0ZV9pcnFzX2xvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB0eXBlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzozMzI6XHR2Z2ljX2NwdS1cdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzMtXHRcdFx0XHRcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTQyPWludCBrdm1fdmdpY19zZXR1cF9kZWZhdWx0X2lycV9yb3V0aW5nKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNDgtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxNDk6XHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE1MC1cdGlmICghZW50cmllcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NzY9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19hZGRfbHBpKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4ODpcdGlycSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2lycSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy05NjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2Olx0Y29sbGVjdGlvbiA9IGt6YWxsb2Nfb2JqKCpjb2xsZWN0aW9uLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2Ny1cdGlmICghY29sbGVjdGlvbilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTAwND1zdGF0aWMgc3RydWN0IGl0c19pdGUgKnZnaWNfaXRzX2FsbG9jX2l0ZShzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDA5LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwMTA6XHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMTEtXHRpZiAoIWl0ZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEzMT1zdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKnZnaWNfaXRzX2FsbG9jX2RldmljZShzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMTM3Olx0ZGV2aWNlID0ga3phbGxvY19vYmooKmRldmljZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVx0aWYgKCFkZXZpY2UpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcdGl0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2l0cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODUzLVx0aWYgKCFpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz04ODY9c3RhdGljIGludCB2Z2ljX3YzX2FsbG9jX3JlZGlzdF9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCB1aW50MzJfdCBpbmRleCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTkzMS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6OTMyOlx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTkzMy1cdGlmICghcmRyZWcpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9MjQyPWludCB2Z2ljX3Y0X2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jOjI1OTpcdGRpc3QtXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXHUwMDNlaXRzX3ZtLnZwZXMsIG5yX3ZjcHVzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjYwLVx0XHRcdFx0XHQgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjEwMS1cdGlmICghaml0X2RhdGEpIHtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIxMDI6XHRcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxMDMtXHRcdGlmICghaml0X2RhdGEpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM9MTc9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmMtMjItXHR2ZHNvX3BhZ2VsaXN0ID1cbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlx0XHRremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdmRzb19wYWdlcyk7XG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cdGlmICh1bmxpa2VseSh2ZHNvX3BhZ2VsaXN0ID09IE5VTEwpKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNDcyLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlx0cmFuZ2UgPSBremFsbG9jX29iaigqcmFuZ2UsIEdGUF9BVE9NSUMpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNDc0LVx0aWYgKCFyYW5nZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jPTQ1PXN0YXRpYyBpbnQgX19pbml0IGluaXRfdmRzbyh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMtNTUtXHR2ZHNvX2luZm8uY29kZV9tYXBwaW5nLnBhZ2VzID1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XHRcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm8uc2l6ZSAvIFBBR0VfU0laRSk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02MTQ9c3RhdGljIGludCBrdm1fZWlvaW50Y19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyNC1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MjU6XHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjYtXHRpZiAoIXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9Mzk0PXN0YXRpYyBpbnQga3ZtX2lwaV9jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM6NDEyOlx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfaXBpKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cdGlmICghcylcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDI3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBDb2RlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgJiMzNDtremFsbG9jX29iaiYjMzQ7IGNhdGNoZXMgbXkgZXllLiBUaGlzIGxvb2tzIGxpa2UgYSBtYWNybyB0aGF0JiMzOTtzIGJlZW4gaW50cm9kdWNlZCBpbiBhIHJlY2VudCB1cGRhdGUuIFRoZSBvcmlnaW5hbCBjb2RlIGhhcyBgZXYgPSBremFsbG9jX29iaigqZXYpO2AgYnV0IHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBpdCB0byBgZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7YC4gU29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodCBoZXJlLiBUaGUgb3JpZ2luYWwgY29kZSBvbmx5IHBhc3NlcyAqb25lKiBhcmd1bWVudCB0byBga3phbGxvY19vYmpgLCByaWdodD8KCkxldCBtZSBqdW1wIG92ZXIgdG8gYG1tL21lbWNvbnRyb2wtdjEuY2AgYW5kIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCBsaW5lIDE3MjQuIFllcCwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY2hhbmdlIGlzLiBJIGNhbiBzZWUgdGhlIGRpZmY6CgpgYGBkaWZmCi0JZXYgPSBremFsbG9jX29iaigqZXYpOwomIzQzOwlldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKYGBgCgpTdHJhbmdlLiBJIGNvdWxkIHN3ZWFyIGBremFsbG9jX29iamAgKnNob3VsZG4mIzM5O3QqIGhhdmUgYmVlbiB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQgb3JpZ2luYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgYGt6YWxsb2Nfb2JqYCBtYWNybywgYW5kIHdoYXQgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBiZSBkb2luZy4gQmVzdCB0byBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBsaWtlIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGBremFsbG9jX29iamAgaXMgZGVmaW5lZCBhcy4gSSBiZXQgdGhlcmUmIzM5O3MgYmVlbiBhIHN1YnRsZSBjaGFuZ2UgdG8gdGhlIG1hY3JvJiMzOTtzIHNpZ25hdHVyZSBzb21ld2hlcmUgYWxvbmcgdGhlIGxpbmUsIGFuZCB0aGlzIHBhdGNoIGlzIGNvcnJlY3RpbmcgYSBwb3RlbnRpYWwgYnVnLiBHb3R0YSB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIGt6YWxsb2Nfb2JqJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2xhYi5oPTEwNTE9dm9pZCAqa21hbGxvY19ub2xvY2soc2l6ZV90IHNpemUsIGdmcF90IGdmcF9mbGFncywgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzItLyogQWxsIGt6YWxsb2MgYWxpYXNlcyBmb3Iga21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTMzOiNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzNC1cdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzU6I2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtXHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMC1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oOjIxMTojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMi1cdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNzcKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA2NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZG9pbmcgc29tZXRoaW5nIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYEdGUGAgZmxhZ3MuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIGFsbG9jYXRpb24gZnJvbSB1c2luZyB0aGUgZGVmYXVsdCBmbGFncyAobGlrZWx5IGBHRlBfS0VSTkVMYCkgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoaXMgbWVhbnMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZSBjaGFyZ2VkIHRvIHRoZSBtZW1vcnkgY2dyb3VwIChtZW1jZykuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMganVzdCBtb2RpZmllcyBtZW1vcnkgYWNjb3VudGluZyBhbmQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBwcm9ncmFtJiMzOTtzIGFjdHVhbCBjb250cm9sIGZsb3cuCgpOb3csIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFR5cGljYWxseSwgSSB3b3VsZG4mIzM5O3QgYm90aGVyIGZ1enppbmcgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlcyB1bmxlc3MgdGhleSBpbXBhY3QgdGhlIGFjY291bnRpbmcgbG9naWMgaXRzZWxmLiBIZXJlLCBpdCYjMzk7cyBhIHNpbXBsZSBmbGFnIGFkZGl0aW9uIHRvIGBremFsbG9jX29iamAsIHNvIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudGAgaXMgY2FsbGVkIHdoZW4gYSB1c2VyIHdyaXRlcyB0byBgY2dyb3VwLmV2ZW50X2NvbnRyb2xgIGluIGEgY2dyb3VwIHYxIG1lbWNnLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGVmZmVjdHMuIEdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgaXQgaGFzIHNvbWUgc3BlY2lmaWMgY3JpdGVyaWEuIFRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBleGNlcHQgZm9yIHRoZSBhY2NvdW50aW5nIHNpZGUgZWZmZWN0LiBUaGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBremFsbG9jX29iaigqZXYpYCB0byBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gVGhpcyBpc24mIzM5O3QgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgdGhhdCBhIGNoYW5nZSBjb3VsZCBsZWFkIHRvIGEgbWVtY2cgT09NLiBCdXQgZXZlbiBpbiB0aGF0IGNhc2UsIHRoZSBhbGxvY2F0aW9uIHdvdWxkIGxpa2VseSBmYWlsLCB3aXRob3V0IGFueSBzaWRlIGVmZmVjdHMgb3RoZXIgdGhhbiBhIGZhaWxlZCBhbGxvY2F0aW9uLgoKUmV2aXNpdGluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhLCAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LCBhbmQgYEdGUF9LRVJORUxfQUNDT1VOVGAgaXMgYSBtYWNyby4gSXQmIzM5O3MganVzdCBhIGNoYW5nZSB0byBtZW1vcnkgYWNjb3VudGluZy4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBpcyBhIHRyaXZpYWwgY2hhbmdlIHRvIGFsbG9jYXRpb24gZmxhZ3MgZm9yIG1lbW9yeSBhY2NvdW50aW5nLCBzbyBpdCBkb2VzIG5vdCBhbHRlciBleGVjdXRpb24gZmxvdyBpbiBhIG1lYW5pbmdmdWwgd2F5IHRvIHdhcnJhbnQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjI5LjY2Nzg0MzY2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDg5NTA0MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjI5LjY2Nzg0ODk3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NzIxMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzhhMzQ4OTg5NWU2MTNjZWQ5ZDhmNDgwYTczYjdmN2ZmYWE1ZmZkZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmNcXG5pbmRleCBlOGI2ZTE1NjAyNzhiYy4uZjg0MjRlYzM3MzRiMjggMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5jXFxuKysrIGIvbW0vbWVtY29udHJvbC12MS5jXFxuQEAgLTE3MjEsNyArMTcyMSw3IEBAIGludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4gXFx0XFx0bW9kZSA9IHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0ZXYgPSBremFsbG9jX29iaigqZXYpO1xcbitcXHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFldikge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDM6MzAuMTY3NTg4Mjc4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4OTc1MTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgdGhlIEdGUF9LRVJORUxfQUNDT1VOVCBmbGFnIHRvIGEgbWVtb3J5IGFsbG9jYXRpb24gaW4gdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudCgpLiBUaGlzIGlzIGEgbWlub3IgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc4YTM0ODk4OTVlNjEzY2VkOWQ4ZjQ4MGE3M2I3ZjdmZmFhNWZmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wtdjEuYyBiL21tL21lbWNvbnRyb2wtdjEuY1xuaW5kZXggZThiNmUxNTYwMjc4YmMuLmY4NDI0ZWMzNzM0YjI4IDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5jXG4rKysgYi9tbS9tZW1jb250cm9sLXYxLmNcbkBAIC0xNzIxLDcgKzE3MjEsNyBAQCBpbnQgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4gXHRcdG1vZGUgPSByZXQ7XG4gXHR9XG4gXG4tXHRldiA9IGt6YWxsb2Nfb2JqKCpldik7XG4rXHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZXYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0MzozMC4xNjc1ODk4MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTcxMzg1Nzc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS9tZW1jb250cm9sLXYxLmNgLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIGBremFsbG9jX29iaigqZXYpYCBmb3IgYGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKWAuIE15IGZpcnN0IHRob3VnaHQgaXMgXCJIbW0sIGBremFsbG9jX29iamAuLi4gSSdtIG5vdCBpbW1lZGlhdGVseSBmYW1pbGlhciB3aXRoIHRoYXQgb25lLCBpcyBpdCBqdXN0IGEgd3JhcHBlciBhcm91bmQgYGt6YWxsb2NgP1wiLiBMZXQncyB0YWtlIGEgcXVpY2sgbG9vayBpbnNpZGUgb2YgYG1tL21lbWNvbnRyb2wtdjEuY2AgdG8gc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgYGt6YWxsb2Nfb2JqYCBmdW5jdGlvbi4gTXkgU3BpZGV5IHNlbnNlIGlzIHRpbmdsaW5nIHNpbmNlIHRoZSByZWd1bGFyIGBremFsbG9jYCBmdW5jdGlvbiB1c2VzIHRoZSBmb3JtIGBremFsbG9jKHNpemUsIGZsYWdzKWAsIHNvIEknbSBjdXJpb3VzIGlmIHRoaXMgYF9vYmpgIHZhcmlhdGlvbiBhbHRlcnMgdGhlIGZsYWdzIGluIHNvbWUgd2F5LlxuXG5Ob3cgdGhhdCBJJ20gaGVyZSBpbiBgbW0vbWVtY29udHJvbC12MS5jYCwgSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSBvcmllbnQgbXlzZWxmIHdpdGggdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgYXJvdW5kIGB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50YCB0byBnZXQgc29tZSBjb250ZXh0LCBzaW5jZSBJIGFzc3VtZSB0aGF0J3Mgd2hlcmUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBldmAgaXMgYW5kIHdoYXQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSB0byB0aGUgYWxsb2NhdGlvbiBmbGFncyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQxLjg4MTQ0OTI1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDE1NTcxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9tZW1jb250cm9sLXYxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC12MS5jPTEwOTY9c3RhdGljIHNzaXplX3QgbWVtY2dfd3JpdGVfZXZlbnRfY29udHJvbChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTE5Mi1cXHRcXHRcXHQgICAgIFxcXCJpZiB5b3UgZGVwZW5kIG9uIHRoaXMgZnVuY3Rpb25hbGl0eS5cXFxcblxcXCIpO1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxMTkzOlxcdFxcdGV2ZW50LVxcdTAwM2VyZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQ7XFxubW0vbWVtY29udHJvbC12MS5jLTExOTQtXFx0XFx0ZXZlbnQtXFx1MDAzZXVucmVnaXN0ZXJfZXZlbnQgPSB2bXByZXNzdXJlX3VucmVnaXN0ZXJfZXZlbnQ7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmM9MTY1ND12b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHByaW8pXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTY3NS0vKipcXG5tbS9tZW1jb250cm9sLXYxLmM6MTY3NjogKiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkgLSBCaW5kIHZtcHJlc3N1cmUgbm90aWZpY2F0aW9ucyB0byBhbiBldmVudGZkXFxubW0vbWVtY29udHJvbC12MS5jLTE2NzctICogQG1lbWNnOlxcdG1lbWNnIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiB2bXByZXNzdXJlIG5vdGlmaWNhdGlvbnNcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xNjkyLSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxNjkzOmludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9tZW1jb250cm9sLXYxLmMtMTY5NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQsIGNvbnN0IGNoYXIgKmFyZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQyLjE4MzAxMDk0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTU4NDIyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE15c3Rlcnkgb2Yga3phbGxvY19vYmoqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGt6YWxsb2Nfb2JqYCBpcyBhbGwgYWJvdXQuIEl0J3Mgbm90IHJpbmdpbmcgYW55IGJlbGxzIGZyb20gdGhlIHN0YW5kYXJkIGtlcm5lbCByb3V0aW5lcywgd2hpY2ggaXMgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSB0byBjaGVjay4gTXkgaW50dWl0aW9uIHNheXMgdGhpcyBpcyBhIGN1c3RvbSBvciBzcGVjaWFsaXplZCBmdW5jdGlvbi4gT2theSwgbGV0J3Mgc2VlLCB3aGVyZSBpcyB0aGlzIHVzZWQgaW4gb3VyIGtlcm5lbCwgaXQgbXVzdCBiZSBzb21ld2hlcmUuIExpbmUgMTcyMSBvZiBgbW0vbWVtY29udHJvbC12MS5jYCBpcyB3aGVyZSB0aGUgY2x1ZSBsaWVzLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQ1LjI3ODg1NDk1MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tZW1jb250cm9sLXYxLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcxMDpcXHRcXHRyZXQgPSBtYXRjaF9zdHJpbmcodm1wcmVzc3VyZV9zdHJfbGV2ZWxzLCBWTVBSRVNTVVJFX05VTV9MRVZFTFMsIHRva2VuKTtcXG4xNzExOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3MTI6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTcxMzpcXHRcXHRsZXZlbCA9IHJldDtcXG4xNzE0OlxcdFxcbjE3MTU6XFx0XFx0LyogRmluZCBvcHRpb25hbCBtb2RlICovXFxuMTcxNjpcXHRcXHR0b2tlbiA9IHN0cnNlcChcXHUwMDI2c3BlYywgXFxcIixcXFwiKTtcXG4xNzE3OlxcdFxcdGlmICh0b2tlbikge1xcbjE3MTg6XFx0XFx0XFx0cmV0ID0gbWF0Y2hfc3RyaW5nKHZtcHJlc3N1cmVfc3RyX21vZGVzLCBWTVBSRVNTVVJFX05VTV9NT0RFUywgdG9rZW4pO1xcbjE3MTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTcyMDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4xNzIxOlxcdFxcdFxcdG1vZGUgPSByZXQ7XFxuMTcyMjpcXHRcXHR9XFxuMTcyMzpcXHRcXG4xNzI0OlxcdFxcdGV2ID0ga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbjE3MjU6XFx0XFx0aWYgKCFldikge1xcbjE3MjY6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNzI3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE3Mjg6XFx0XFx0fVxcbjE3Mjk6XFx0XFxuMTczMDpcXHRcXHRldi1cXHUwMDNlZWZkID0gZXZlbnRmZDtcXG4xNzMxOlxcdFxcdGV2LVxcdTAwM2VsZXZlbCA9IGxldmVsO1xcbjE3MzI6XFx0XFx0ZXYtXFx1MDAzZW1vZGUgPSBtb2RlO1xcbjE3MzM6XFx0XFxuMTczNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHNfbG9jayk7XFxuMTczNTpcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZXYtXFx1MDAzZW5vZGUsIFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHMpO1xcbjE3MzY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHNfbG9jayk7XFxuMTczNzpcXHRcXHRyZXQgPSAwO1xcbjE3Mzg6XFx0b3V0OlxcbjE3Mzk6XFx0XFx0a2ZyZWUoc3BlY19vcmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDM6NDUuMjc5MDI3NDAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNzI0MTE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBremFsbG9jX29iamAgRW5pZ21hKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCBhY3Jvc3MgYGt6YWxsb2Nfb2JqYC4gSXQncyBjbGVhcmx5IG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uIG5hbWUsIGFuZCBteSBndXQgc2F5cyBpdCdzIGxpa2VseSBzb21lIGtpbmQgb2YgbWFjcm8gZGVmaW5pdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaXRzIGNvbnRleHQuIExldCdzIGZpcmUgdXAgYSBgZ3JlcGAg4oCTIHNwZWNpZmljYWxseSwgbGV0J3MgdGFyZ2V0IHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBga3phbGxvY19vYmpgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIG1hY3JvJ3MgZXhwYW5zaW9uLCBpdHMgdXNhZ2UgcGF0dGVybnMsIGFuZCBob3BlZnVsbHksIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2Ugd2l0aGluIHRoaXMgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXNuJ3QganVzdCB0byBzZWUgd2hlcmUgaXQgKmlzKiB1c2VkLCBidXQgdG8gcXVpY2tseSBncmFzcCBpdHMgcm9sZSwgaG93IGl0J3MgZGVmaW5lZCwgYW5kIHdoYXQgYWJzdHJhY3Rpb25zIGl0J3MgaW50cm9kdWNpbmcuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgYGt6YWxsb2Nfb2JqYCB3aWxsIGJlIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgY29kZSBzZWdtZW50LiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgdW5jb3ZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQ4LjMwNjI3MDk0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUxNjI5MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt6YWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc5MTI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0PTEwMz1saXN0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdDoxMTU6ICAgICAgICAgIGdyb2NrID0ga3phbGxvY19vYmooKmdyb2NrKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtODktXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlxcdFxcdGRjX3N5bmMgPSBremFsbG9jX29iaigqZGNfc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlxcdFxcdGRjX2FzeW5jID0ga3phbGxvY19vYmooKmRjX2FzeW5jKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q9MjY9RXhhbXBsZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q6NDU6XFx0XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0OjkzOTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGFuZFxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NjQ9VGhlIHByZWZlcnJlZCBmb3JtIGZvciBhbGxvY2F0aW5nIGEgemVyb2VkIGFycmF5IGlzIHRoZSBmb2xsb3dpbmc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY4OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDAwLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XFx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDM6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVxcdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0yNzAtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC03NTEtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKSB7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5OjpcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTM4MzctICAgICAgICAgIC4uLi5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYz02ND1tb2R1bGVfZnJvYl9hcmNoX3NlY3Rpb25zKEVsZjY0X0VoZHIgKmhkciwgRWxmNjRfU2hkciAqc2VjaGRycyxcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVxcdG5zeW1zID0gc3ltdGFiLVxcdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XFx0Y2hhaW5zID0ga3phbGxvY19vYmpzKHN0cnVjdCBnb3RfZW50cnksIG5zeW1zKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cXHRpZiAoIWNoYWlucykge1xcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTQtXFx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcXHRcXHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVxcdFxcdGlmICghcClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYz0xMTIwPXN0YXRpYyBpbnQgaml0X3ByZXBhcmVfZmluYWxfbWVtX2FsbG9jKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXFx0aWYgKGN0eC1cXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XFx0XFx0Y3R4LVxcdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXFx1MDAzZWppdF9kYXRhKTtcXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cXHRcXHRpZiAoIWN0eC1cXHUwMDNlaml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MjIwPWxvY29tb19pbml0X29uZV9jaGlsZChzdHJ1Y3QgbG9jb21vICpsY2hpcCwgc3RydWN0IGxvY29tb19kZXZfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjIyNTpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XFx0bGNoaXAgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vKTtcXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVxcdGlmICghbGNoaXApXFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTczOS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzQxLVxcdGlmICghZGV2KSB7XFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYz0xNzg9c3RhdGljIGludCBzY29vcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jOjE4ODpcXHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXFx0aWYgKCFkZXZwdHIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVxcdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYzoxMTE6XFx0XFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMi1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXFx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM6MTgyOlxcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cXHRpZiAodmRzb190ZXh0X3BhZ2VsaXN0ID09IE5VTEwpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcXHRyZXMgPSBremFsbG9jX29ianMoc3RydWN0IHJlc291cmNlLCAyKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cXHRpZiAoIXJlcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYy04Ni1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3OlxcdFxcdGxlZCA9IGt6YWxsb2Nfb2JqKCpsZWQpO1xcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXFx0XFx0aWYgKCFsZWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjQ4MDpcXHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cXHRpZiAoIXBtdV9tbWRjKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcXHRcXHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg3LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4OlxcdFxcdHAgPSBremFsbG9jX29iaigqcCk7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXFx0XFx0cC1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoXFxcImFybSxpby1jb2hlcmVudFxcXCIsIEdGUF9LRVJORUwpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zODktXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zOTEtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jPTI5ND1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9zeXN0ZW1fZG1hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM6MzIyOlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3OlxcdG9tYXBfbWNic3BfZGV2aWNlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHNpemUpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXFx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI3LVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XFx0XFx0cGRhdGEgPSBremFsbG9jX29iaigqcGRhdGEpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXFx0XFx0aWYgKCFwZGF0YSkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkwLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5Mi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYz0xMzE9c3RhdGljIGludCBvbWFwX2RldmljZV9idWlsZF9mcm9tX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYzoxNTk6XFx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cXHRpZiAoIWh3bW9kcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1OlxcdHN5c2MgPSBremFsbG9jX29iaigqc3lzYyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cXHRpZiAoIXN5c2MpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZvaC1cXHUwMDNlc2xhdmVfcG9ydHMpKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcXHRcXHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cXHRcXHRpZiAoIW9pKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzUxMz1pbnQgb21hcF9od21vZF9pbml0X21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVxcdGlmICghb2gpIHtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4OlxcdFxcdG9oID0ga3phbGxvY19vYmooKm9oKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVxcdFxcdGlmICghb2gpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM1Mzk6XFx0XFx0b2gtXFx1MDAzZWNsYXNzID0ga3phbGxvY19vYmooKm9oLVxcdTAwM2VjbGFzcyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cXHRcXHRpZiAoIW9oLVxcdTAwM2VjbGFzcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxMi1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlxcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTQtXFx0aWYgKCFpZGxlX3N0YXRlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IHNyX3NldF9udmFsdWVzKHN0cnVjdCBvbWFwX3ZvbHRfZGF0YSAqdm9sdF9kYXRhLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jOjQyOlxcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cXHRpZiAoIW52YWx1ZV90YWJsZSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVxcdCAqL1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzoxNzI6XFx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVxcdGlmICghcmVzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6NDkzOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1OlxcdGVjID0ga3phbGxvY19vYmooZWNhcmRfdCk7XFxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXFx0aWYgKCFlYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMDktXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTExLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzMtXFx0aWYgKCFodylcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYz0zMTc9aW50IF9faW5pdCBzYTExeDBfcmVnaXN0ZXJfZml4ZWRfcmVndWxhdG9yKGludCBuLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM6MzI0OlxcdGNmZy1cXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVxcdTAwM2Vpbml0X2RhdGEpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXFx0aWYgKCFjZmctXFx1MDAzZWluaXRfZGF0YSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XFx0ZCA9IGt6YWxsb2Nfb2JqKCpkKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cXHRpZiAoIWQpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjYtXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3OlxcdFxcdHF1aXJrID0ga3phbGxvY19vYmooKnF1aXJrKTtcXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXFx0XFx0aWYgKCFxdWlyaykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3RlcilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XFx0b3BwcyA9IGt6YWxsb2Nfb2Jqcygqb3BwcywgTUFYX09QUFMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cXHRpZiAoIW9wcHMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0NC1cXHRpbnQgcmV0O1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2RldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyNy1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XFx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI5LVxcdGlmICghc3BjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM9MTIzPXN0YXRpYyB2b2lkIF9faW5pdCB2ZXJzYXRpbGVfZHRfcGNpX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYzoxNDU6XFx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXFx0aWYgKCFuZXdwcm9wKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcXHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MDktXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XFx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTExLVxcdGlmICghbDJ4MF9wbXUpIHtcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM9MzE1PXN0YXRpYyBpbnQgX19pbml0IF9fdW5pcGhpZXJfY2FjaGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYzozNDU6XFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cXHRpZiAoIWRhdGEpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XFx0YnVmID0ga3phbGxvY19vYmooKmJ1ZixcXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cXHRcXHRcXHQgIGdmcCBcXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwNi1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XFx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA4LVxcdGlmICghbWFwcGluZylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYz0zMTY9aW50IF9faW5pdCBhcmNoX3hlbl91bnBvcHVsYXRlZF9pbml0KHN0cnVjdCByZXNvdXJjZSAqKnJlcylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM0NDpcXHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXFx0aWYgKCFyZWdzKSB7XFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozODg6XFx0XFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg5LVxcdFxcdGlmICghdG1wX3Jlcykge1xcbi0tXFxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYy0xNzgtXFxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcXHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcXG5hcmNoL2FybS94ZW4vcDJtLmMtMTgwLVxcdGlmICghcDJtX2VudHJ5KVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jPTY4PXN0YXRpYyBpbnQgX19pbml0IF9fdmRzb19pbml0KGVudW0gdmRzb19hYmkgYWJpKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYzo4NDpcXHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cXHRpZiAodmRzb19wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcXHR0aGlzID0ga3phbGxvY19vYmooKnRoaXMpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cXHRpZiAoIXRoaXMpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDctXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcXHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDktXFx0aWYgKCFwZ3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xMTgwPWludCB0b3B1cF9oeXBfbWVtY2FjaGUoc3RydWN0IGt2bV9oeXBfbWVtY2FjaGUgKm1jLCB1bnNpZ25lZCBsb25nIG1pbl9wYWdlcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXFx0aWYgKCFtYy1cXHUwMDNlbWFwcGluZykge1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XFx0XFx0bWMtXFx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODctXFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQzLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XFx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDUtXFx0aWYgKCFoeXBfcGd0YWJsZSkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTMyNz1pbnQga3ZtX3ZjcHVfYWxsb2NhdGVfdm5jcl90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIpIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlxcdFxcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cXHUwMDNlYXJjaC52bmNyX3RsYixcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlxcdGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDItXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjEtXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlxcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIzLVxcdGlmICghc3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTIwNz1zdGF0aWMgaW50IGt2bV92Z2ljX2Rpc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBucl9zcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXFx0ZGlzdC1cXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XFx0ZGlzdC1cXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXFx0aWYgKCFkaXN0LVxcdTAwM2VzcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0zMTY9c3RhdGljIGludCB2Z2ljX2FsbG9jYXRlX3ByaXZhdGVfaXJxc19sb2NrZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MzMyOlxcdHZnaWNfY3B1LVxcdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcXHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNTAtXFx0aWYgKCFlbnRyaWVzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6ODg6XFx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2OlxcdGNvbGxlY3Rpb24gPSBremFsbG9jX29iaigqY29sbGVjdGlvbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVxcdGlmICghY29sbGVjdGlvbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAwOS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcXHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDExLVxcdGlmICghaXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMzE9c3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICp2Z2ljX2l0c19hbGxvY19kZXZpY2Uoc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzNzpcXHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVxcdGlmICghZGV2aWNlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcXHRpdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgdmdpY19pdHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXFx0aWYgKCFpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XFx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzMtXFx0aWYgKCFyZHJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jPTI0Mj1pbnQgdmdpY192NF9pbml0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYzoyNTk6XFx0ZGlzdC1cXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXFx1MDAzZWl0c192bS52cGVzLCBucl92Y3B1cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVxcdGlmICghaml0X2RhdGEpIHtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMTAyOlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAzLVxcdFxcdGlmICghaml0X2RhdGEpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTIyLVxcdHZkc29fcGFnZWxpc3QgPVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlxcdFxcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cXHRpZiAodW5saWtlbHkodmRzb19wYWdlbGlzdCA9PSBOVUxMKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlxcdHJhbmdlID0ga3phbGxvY19vYmooKnJhbmdlLCBHRlBfQVRPTUlDKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXFx0aWYgKCFyYW5nZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU1LVxcdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XFx0XFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcdGlmICghcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTM5ND1zdGF0aWMgaW50IGt2bV9pcGlfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQxMjpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cXHRpZiAoIXMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjUxLjE1NzkwODQyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzcxOTE5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgXCJremFsbG9jX29ialwiIGNhdGNoZXMgbXkgZXllLiBUaGlzIGxvb2tzIGxpa2UgYSBtYWNybyB0aGF0J3MgYmVlbiBpbnRyb2R1Y2VkIGluIGEgcmVjZW50IHVwZGF0ZS4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIGBldiA9IGt6YWxsb2Nfb2JqKCpldik7YCBidXQgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGl0IHRvIGBldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtgLiBTb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQgaGVyZS4gVGhlIG9yaWdpbmFsIGNvZGUgb25seSBwYXNzZXMgKm9uZSogYXJndW1lbnQgdG8gYGt6YWxsb2Nfb2JqYCwgcmlnaHQ/XG5cbkxldCBtZSBqdW1wIG92ZXIgdG8gYG1tL21lbWNvbnRyb2wtdjEuY2AgYW5kIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCBsaW5lIDE3MjQuIFllcCwgdGhhdCdzIHdoZXJlIHRoZSBjaGFuZ2UgaXMuIEkgY2FuIHNlZSB0aGUgZGlmZjpcblxuYGBgZGlmZlxuLVx0ZXYgPSBremFsbG9jX29iaigqZXYpO1xuK1x0ZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5gYGBcblxuU3RyYW5nZS4gSSBjb3VsZCBzd2VhciBga3phbGxvY19vYmpgICpzaG91bGRuJ3QqIGhhdmUgYmVlbiB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQgb3JpZ2luYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBga3phbGxvY19vYmpgIG1hY3JvLCBhbmQgd2hhdCBpdCdzICpzdXBwb3NlZCogdG8gYmUgZG9pbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcywgbGlrZSBgaW5jbHVkZS9saW51eC9zbGFiLmhgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB0byBzZWUgd2hhdCBga3phbGxvY19vYmpgIGlzIGRlZmluZWQgYXMuIEkgYmV0IHRoZXJlJ3MgYmVlbiBhIHN1YnRsZSBjaGFuZ2UgdG8gdGhlIG1hY3JvJ3Mgc2lnbmF0dXJlIHNvbWV3aGVyZSBhbG9uZyB0aGUgbGluZSwgYW5kIHRoaXMgcGF0Y2ggaXMgY29ycmVjdGluZyBhIHBvdGVudGlhbCBidWcuIEdvdHRhIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0Mzo1Ni4yMzUxMDMyMzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODYyMDExMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmaW5lIGt6YWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NsYWIuaD0xMDUxPXZvaWQgKmttYWxsb2Nfbm9sb2NrKHNpemVfdCBzaXplLCBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzItLyogQWxsIGt6YWxsb2MgYWxpYXNlcyBmb3Iga21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEzMzojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzQtXFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzU6I2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtXFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMjEwLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oOjIxMTojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMi1cXHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjU4LjkyMTMxNDMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM1OTkwMDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZG9pbmcgc29tZXRoaW5nIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYEdGUGAgZmxhZ3MuIFNwZWNpZmljYWxseSwgaXQncyBjaGFuZ2luZyB0aGUgYWxsb2NhdGlvbiBmcm9tIHVzaW5nIHRoZSBkZWZhdWx0IGZsYWdzIChsaWtlbHkgYEdGUF9LRVJORUxgKSB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhpcyBtZWFucyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlIGNoYXJnZWQgdG8gdGhlIG1lbW9yeSBjZ3JvdXAgKG1lbWNnKS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBqdXN0IG1vZGlmaWVzIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBkb2Vzbid0IGNoYW5nZSB0aGUgcHJvZ3JhbSdzIGFjdHVhbCBjb250cm9sIGZsb3cuXG5cbk5vdywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBJIHdvdWxkbid0IGJvdGhlciBmdXp6aW5nIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZXMgdW5sZXNzIHRoZXkgaW1wYWN0IHRoZSBhY2NvdW50aW5nIGxvZ2ljIGl0c2VsZi4gSGVyZSwgaXQncyBhIHNpbXBsZSBmbGFnIGFkZGl0aW9uIHRvIGBremFsbG9jX29iamAsIHNvIEknbSBsZWFuaW5nIHRvd2FyZHMgbm8uIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuYHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnRgIGlzIGNhbGxlZCB3aGVuIGEgdXNlciB3cml0ZXMgdG8gYGNncm91cC5ldmVudF9jb250cm9sYCBpbiBhIGNncm91cCB2MSBtZW1jZywgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBlZmZlY3RzLiBHb2luZyBiYWNrIHRvIHRoZSBwcm9tcHQsIGl0IGhhcyBzb21lIHNwZWNpZmljIGNyaXRlcmlhLiBUaGlzIGNoYW5nZSBkb2Vzbid0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBleGNlcHQgZm9yIHRoZSBhY2NvdW50aW5nIHNpZGUgZWZmZWN0LiBUaGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBremFsbG9jX29iaigqZXYpYCB0byBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gVGhpcyBpc24ndCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYSBjaGFuZ2UgY291bGQgbGVhZCB0byBhIG1lbWNnIE9PTS4gQnV0IGV2ZW4gaW4gdGhhdCBjYXNlLCB0aGUgYWxsb2NhdGlvbiB3b3VsZCBsaWtlbHkgZmFpbCwgd2l0aG91dCBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gYSBmYWlsZWQgYWxsb2NhdGlvbi5cblxuUmV2aXNpdGluZyB0aGUgcHJvbXB0J3MgY3JpdGVyaWEsIFwiQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93XCIsIGFuZCBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpcyBhIG1hY3JvLiBJdCdzIGp1c3QgYSBjaGFuZ2UgdG8gbWVtb3J5IGFjY291bnRpbmcuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIGlzIGEgdHJpdmlhbCBjaGFuZ2UgdG8gYWxsb2NhdGlvbiBmbGFncyBmb3IgbWVtb3J5IGFjY291bnRpbmcsIHNvIGl0IGRvZXMgbm90IGFsdGVyIGV4ZWN1dGlvbiBmbG93IGluIGEgbWVhbmluZ2Z1bCB3YXkgdG8gd2FycmFudCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI3NywiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NDowOC43NTczMDY2MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksjr8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 11:22:29 +0000 UTC FinishedAt: 2026-07-13 11:44:10 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc4YTM0ODk4OTVlNjEzY2VkOWQ4ZjQ4MGE3M2I3ZjdmZmFhNWZmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmNcbmluZGV4IGU4YjZlMTU2MDI3OGJjLi5mODQyNGVjMzczNGIyOCAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wtdjEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5jXG5AQCAtMTcyMSw3ICYjNDM7MTcyMSw3IEBAIGludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbiBcdFx0bW9kZSA9IHJldDtcbiBcdH1cbiBcbi1cdGV2ID0ga3phbGxvY19vYmooKmV2KTtcbiYjNDM7XHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZXYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgdGhlIEdGUF9LRVJORUxfQUNDT1VOVCBmbGFnIHRvIGEgbWVtb3J5IGFsbG9jYXRpb24gaW4gdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudCgpLiBUaGlzIGlzIGEgbWlub3IgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3OGEzNDg5ODk1ZTYxM2NlZDlkOGY0ODBhNzNiN2Y3ZmZhYTVmZmRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTE6NDM6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmMKaW5kZXggZThiNmUxNTYwMjc4YmMuLmY4NDI0ZWMzNzM0YjI4IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLXYxLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5jCkBAIC0xNzIxLDcgJiM0MzsxNzIxLDcgQEAgaW50IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAogCQltb2RlID0gcmV0OwogCX0KIAotCWV2ID0ga3phbGxvY19vYmooKmV2KTsKJiM0MzsJZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFldikgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgQ29udHJvbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21lbWNvbnRyb2wtdjEuY2AuIEl0IHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgc3dhcHBpbmcgYGt6YWxsb2Nfb2JqKCpldilgIGZvciBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gTXkgZmlyc3QgdGhvdWdodCBpcyAmIzM0O0htbSwgYGt6YWxsb2Nfb2JqYC4uLiBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBmYW1pbGlhciB3aXRoIHRoYXQgb25lLCBpcyBpdCBqdXN0IGEgd3JhcHBlciBhcm91bmQgYGt6YWxsb2NgPyYjMzQ7LiBMZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgaW5zaWRlIG9mIGBtbS9tZW1jb250cm9sLXYxLmNgIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBga3phbGxvY19vYmpgIGZ1bmN0aW9uLiBNeSBTcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmcgc2luY2UgdGhlIHJlZ3VsYXIgYGt6YWxsb2NgIGZ1bmN0aW9uIHVzZXMgdGhlIGZvcm0gYGt6YWxsb2Moc2l6ZSwgZmxhZ3MpYCwgc28gSSYjMzk7bSBjdXJpb3VzIGlmIHRoaXMgYF9vYmpgIHZhcmlhdGlvbiBhbHRlcnMgdGhlIGZsYWdzIGluIHNvbWUgd2F5LgoKTm93IHRoYXQgSSYjMzk7bSBoZXJlIGluIGBtbS9tZW1jb250cm9sLXYxLmNgLCBJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IG9yaWVudCBteXNlbGYgd2l0aCB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgYHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnRgIHRvIGdldCBzb21lIGNvbnRleHQsIHNpbmNlIEkgYXNzdW1lIHRoYXQmIzM5O3Mgd2hlcmUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBldmAgaXMgYW5kIHdoYXQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSB0byB0aGUgYWxsb2NhdGlvbiBmbGFncyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC12MS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYz0xMDk2PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMTkyLVx0XHRcdCAgICAgXCYjMzQ7aWYgeW91IGRlcGVuZCBvbiB0aGlzIGZ1bmN0aW9uYWxpdHkuXFxuXCYjMzQ7KTtcbm1tL21lbWNvbnRyb2wtdjEuYzoxMTkzOlx0XHRldmVudC1cdTAwM2VyZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQ7XG5tbS9tZW1jb250cm9sLXYxLmMtMTE5NC1cdFx0ZXZlbnQtXHUwMDNldW5yZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfdW5yZWdpc3Rlcl9ldmVudDtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTY1ND12b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHByaW8pXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTE2NzUtLyoqXG5tbS9tZW1jb250cm9sLXYxLmM6MTY3NjogKiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkgLSBCaW5kIHZtcHJlc3N1cmUgbm90aWZpY2F0aW9ucyB0byBhbiBldmVudGZkXG5tbS9tZW1jb250cm9sLXYxLmMtMTY3Ny0gKiBAbWVtY2c6XHRtZW1jZyB0aGF0IGlzIGludGVyZXN0ZWQgaW4gdm1wcmVzc3VyZSBub3RpZmljYXRpb25zXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTE2OTItICovXG5tbS9tZW1jb250cm9sLXYxLmM6MTY5MzppbnQgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5tbS9tZW1jb250cm9sLXYxLmMtMTY5NC1cdFx0XHQgICAgICBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQsIGNvbnN0IGNoYXIgKmFyZ3MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIE15c3Rlcnkgb2Yga3phbGxvY19vYmoqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBremFsbG9jX29iamAgaXMgYWxsIGFib3V0LiBJdCYjMzk7cyBub3QgcmluZ2luZyBhbnkgYmVsbHMgZnJvbSB0aGUgc3RhbmRhcmQga2VybmVsIHJvdXRpbmVzLCB3aGljaCBpcyBhbHdheXMgdGhlIGZpcnN0IHBsYWNlIHRvIGNoZWNrLiBNeSBpbnR1aXRpb24gc2F5cyB0aGlzIGlzIGEgY3VzdG9tIG9yIHNwZWNpYWxpemVkIGZ1bmN0aW9uLiBPa2F5LCBsZXQmIzM5O3Mgc2VlLCB3aGVyZSBpcyB0aGlzIHVzZWQgaW4gb3VyIGtlcm5lbCwgaXQgbXVzdCBiZSBzb21ld2hlcmUuIExpbmUgMTcyMSBvZiBgbW0vbWVtY29udHJvbC12MS5jYCBpcyB3aGVyZSB0aGUgY2x1ZSBsaWVzLiAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcxMDpcdFx0cmV0ID0gbWF0Y2hfc3RyaW5nKHZtcHJlc3N1cmVfc3RyX2xldmVscywgVk1QUkVTU1VSRV9OVU1fTEVWRUxTLCB0b2tlbik7XG4xNzExOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTcxMjpcdFx0XHRnb3RvIG91dDtcbjE3MTM6XHRcdGxldmVsID0gcmV0O1xuMTcxNDpcdFxuMTcxNTpcdFx0LyogRmluZCBvcHRpb25hbCBtb2RlICovXG4xNzE2Olx0XHR0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGVjLCBcJiMzNDssXCYjMzQ7KTtcbjE3MTc6XHRcdGlmICh0b2tlbikge1xuMTcxODpcdFx0XHRyZXQgPSBtYXRjaF9zdHJpbmcodm1wcmVzc3VyZV9zdHJfbW9kZXMsIFZNUFJFU1NVUkVfTlVNX01PREVTLCB0b2tlbik7XG4xNzE5Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xNzIwOlx0XHRcdFx0Z290byBvdXQ7XG4xNzIxOlx0XHRcdG1vZGUgPSByZXQ7XG4xNzIyOlx0XHR9XG4xNzIzOlx0XG4xNzI0Olx0XHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbjE3MjU6XHRcdGlmICghZXYpIHtcbjE3MjY6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE3Mjc6XHRcdFx0Z290byBvdXQ7XG4xNzI4Olx0XHR9XG4xNzI5Olx0XG4xNzMwOlx0XHRldi1cdTAwM2VlZmQgPSBldmVudGZkO1xuMTczMTpcdFx0ZXYtXHUwMDNlbGV2ZWwgPSBsZXZlbDtcbjE3MzI6XHRcdGV2LVx1MDAzZW1vZGUgPSBtb2RlO1xuMTczMzpcdFxuMTczNDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZ2bXByLVx1MDAzZWV2ZW50c19sb2NrKTtcbjE3MzU6XHRcdGxpc3RfYWRkKFx1MDAyNmV2LVx1MDAzZW5vZGUsIFx1MDAyNnZtcHItXHUwMDNlZXZlbnRzKTtcbjE3MzY6XHRcdG11dGV4X3VubG9jayhcdTAwMjZ2bXByLVx1MDAzZWV2ZW50c19sb2NrKTtcbjE3Mzc6XHRcdHJldCA9IDA7XG4xNzM4Olx0b3V0OlxuMTczOTpcdFx0a2ZyZWUoc3BlY19vcmlnKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBremFsbG9jX29iamAgRW5pZ21hKioKCk9rYXksIHNvIEkmIzM5O3ZlIHN0dW1ibGVkIGFjcm9zcyBga3phbGxvY19vYmpgLiBJdCYjMzk7cyBjbGVhcmx5IG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uIG5hbWUsIGFuZCBteSBndXQgc2F5cyBpdCYjMzk7cyBsaWtlbHkgc29tZSBraW5kIG9mIG1hY3JvIGRlZmluaXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGl0cyBjb250ZXh0LiBMZXQmIzM5O3MgZmlyZSB1cCBhIGBncmVwYCDigJMgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgdGFyZ2V0IHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBga3phbGxvY19vYmpgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIG1hY3JvJiMzOTtzIGV4cGFuc2lvbiwgaXRzIHVzYWdlIHBhdHRlcm5zLCBhbmQgaG9wZWZ1bGx5LCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBUaGUgZ29hbCBoZXJlIGlzbiYjMzk7dCBqdXN0IHRvIHNlZSB3aGVyZSBpdCAqaXMqIHVzZWQsIGJ1dCB0byBxdWlja2x5IGdyYXNwIGl0cyByb2xlLCBob3cgaXQmIzM5O3MgZGVmaW5lZCwgYW5kIHdoYXQgYWJzdHJhY3Rpb25zIGl0JiMzOTtzIGludHJvZHVjaW5nLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIGBremFsbG9jX29iamAgd2lsbCBiZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIGNvZGUgc2VnbWVudC4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCB1bmNvdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtremFsbG9jX29iaiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzkxMjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q9MTAzPWxpc3Q6XG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjExNTogICAgICAgICAgZ3JvY2sgPSBremFsbG9jX29iaigqZ3JvY2spO1xuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTYtICAgICAgICAgIGlmICghZ3JvY2spXG4tLVxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMjUtXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0OjEyNjogICAgICAgICAgZGltaXRyaSA9IGt6YWxsb2Nfb2JqKCpkaW1pdHJpKTtcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0PTQ1PWEgbWVzc2FnZSBhbmQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgQVBJIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkpLlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdC04OS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MDpcdFx0ZGNfc3luYyA9IGt6YWxsb2Nfb2JqKCpkY19zeW5jKTtcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tYWlsYm94LnJzdDo5MTpcdFx0ZGNfYXN5bmMgPSBremFsbG9jX29iaigqZGNfYXN5bmMpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0LTkyLVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdD0yNj1FeGFtcGxlOlxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdDo0NTpcdFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL3Y0bDItZmgucnN0LTQ2LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTM5OmttYWxsb2MoKSwga3phbGxvYygpLCBrbWFsbG9jX29ianMoKSwga3phbGxvY19vYmpzKCksIHZtYWxsb2MoKSwgYW5kXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NDAtdnphbGxvYygpLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvblxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTk2ND1UaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYSB6ZXJvZWQgYXJyYXkgaXMgdGhlIGZvbGxvd2luZzpcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdDo5Njg6XHRwID0ga3phbGxvY19vYmpzKCpwLCBuLCAuLi4pO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdD0zOTg9YmVjb21lLCByZXNwZWN0aXZlbHk6OlxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDAtXHRwdHIgPSBrbWFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XHRwdHIgPSBremFsbG9jX29iaigqcHRyIFssIGdmcF0gKTtcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdC00MDItXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0OjQwMzpcdHB0ciA9IGt6YWxsb2Nfb2JqcygqcHRyLCBjb3VudCBbLCBnZnBdICk7XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVx0cHRyID0ga21hbGxvY19mbGV4KCpwdHIsIGZsZXhfbWVtYmVyLCBjb3VudCBbLCBnZnBdICk7XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI2OC0gICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi9cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTI3MC0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTYzMC0gIC4uLi4uXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC02MzItXG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XG4tLVxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc0OS1cbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTc1MS0gICAgICAgICAgICAgIGlmIChjaGlwID09IE5VTEwpIHtcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5Ojpcbi0tXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNS0gICAgICAgICAgLi4uLlxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMzgzNy0gICAgICAgICAgLi4uLlxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0LTgwMS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XHRteV9maCA9IGt6YWxsb2Nfb2JqKCpteV9maCk7XG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAzLVxuLS1cbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jPTY0PW1vZHVsZV9mcm9iX2FyY2hfc2VjdGlvbnMoRWxmNjRfRWhkciAqaGRyLCBFbGY2NF9TaGRyICpzZWNoZHJzLFxuLS1cbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVx0bnN5bXMgPSBzeW10YWItXHUwMDNlc2hfc2l6ZSAvIHNpemVvZihFbGY2NF9TeW0pO1xuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XHRjaGFpbnMgPSBremFsbG9jX29ianMoc3RydWN0IGdvdF9lbnRyeSwgbnN5bXMpO1xuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmMtOTctXHRpZiAoIWNoYWlucykge1xuLS1cbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmM9MzkwPXJlZ2lzdGVyX2NwdXModm9pZClcbi0tXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jLTM5NC1cdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShpKSB7XG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcdFx0c3RydWN0IGNwdSAqcCA9IGt6YWxsb2Nfb2JqKCpwKTtcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVx0XHRpZiAoIXApXG4tLVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jPTExMjA9c3RhdGljIGludCBqaXRfcHJlcGFyZV9maW5hbF9tZW1fYWxsb2Moc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXHRpZiAoY3R4LVx1MDAzZW5lZWRfZXh0cmFfcGFzcykge1xuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XHRcdGN0eC1cdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXHUwMDNlaml0X2RhdGEpO1xuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzMtXHRcdGlmICghY3R4LVx1MDAzZWppdF9kYXRhKVxuLS1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYz0yMjA9bG9jb21vX2luaXRfb25lX2NoaWxkKHN0cnVjdCBsb2NvbW8gKmxjaGlwLCBzdHJ1Y3QgbG9jb21vX2Rldl9pbmZvICppbmZvKVxuLS1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM6MjI1Olx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGxvY29tb19kZXYpO1xuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cdGlmICghZGV2KSB7XG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXG4tLVxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2Mi1cbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XHRsY2hpcCA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb2NvbW8pO1xuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTM2NC1cdGlmICghbGNoaXApXG4tLVxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jPTczMz1zYTExMTFfaW5pdF9vbmVfY2hpbGQoc3RydWN0IHNhMTExMSAqc2FjaGlwLCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCxcbi0tXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzM5LVxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jOjc0MDpcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcbmFyY2gvYXJtL2NvbW1vbi9zYTExMTEuYy03NDEtXHRpZiAoIWRldikge1xuLS1cbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jPTE3OD1zdGF0aWMgaW50IHNjb29wX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmM6MTg4Olx0ZGV2cHRyID0ga3phbGxvY19vYmooc3RydWN0IHNjb29wX2Rldik7XG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXHRpZiAoIWRldnB0cilcbi0tXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXG4tLVxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMC1cdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxuYXJjaC9hcm0va2VybmVsL3NtcC5jOjExMTpcdFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEyLVxuLS1cbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmMtMTgxLVx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xuYXJjaC9hcm0va2VybmVsL3Zkc28uYzoxODI6XHR2ZHNvX3RleHRfcGFnZWxpc3QgPSBremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdGV4dF9wYWdlcyk7XG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cdGlmICh2ZHNvX3RleHRfcGFnZWxpc3QgPT0gTlVMTClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjQtXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcdHJlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcmVzb3VyY2UsIDIpO1xuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2RjMjEyODUuYy0yNjYtXHRpZiAoIXJlcykge1xuLS1cbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmM9Njk9c3RhdGljIGludCBfX2luaXQgZWJzYTI4NV9sZWRzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg2LVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYzo4NzpcdFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jLTg4LVx0XHRpZiAoIWxlZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzI5LVxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcdFx0bGVkID0ga3phbGxvY19vYmooKmxlZCk7XG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVx0XHRpZiAoIWxlZClcbi0tXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NDgwOlx0cG11X21tZGMgPSBremFsbG9jX29iaigqcG11X21tZGMpO1xuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cdGlmICghcG11X21tZGMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmMtMTI5LVxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcdFx0bmV3X2NvbXBhdCA9IGt6YWxsb2Nfb2JqKCpuZXdfY29tcGF0KTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYz0xNjM9c3RhdGljIHZvaWQgX19pbml0IGFybWFkYV8zNzVfMzgwX2NvaGVyZW5jeV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODctXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jOjE4ODpcdFx0cCA9IGt6YWxsb2Nfb2JqKCpwKTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg5LVx0XHRwLVx1MDAzZW5hbWUgPSBrc3RyZHVwKFwmIzM0O2FybSxpby1jb2hlcmVudFwmIzM0OywgR0ZQX0tFUk5FTCk7XG4tLVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU2LVxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcbmFyY2gvYXJtL21hY2gtbXZlYnUvbXZlYnUtc29jLWlkLmMtMTU4LVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYz0zODA9c3RhdGljIHZvaWQgX19pbml0IG14c19tYWNoaW5lX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM4OS1cbmFyY2gvYXJtL21hY2gtbXhzL21hY2gtbXhzLmM6MzkwOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jLTM5MS1cdGlmICghc29jX2Rldl9hdHRyKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM9Mjk0PXN0YXRpYyBpbnQgX19pbml0IG9tYXAxX3N5c3RlbV9kbWFfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYzozMjI6XHRkID0ga3phbGxvY19vYmooKmQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXHRpZiAoIWQpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTYtXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3Olx0b21hcF9tY2JzcF9kZXZpY2VzID0ga3phbGxvY19vYmpzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKiwgc2l6ZSk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmMtMjk4LVx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM9NTE9c3RhdGljIGludCBfX2luaXQgb21hcDFfZG1fdGltZXJfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjctXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmM6MTI4Olx0XHRwZGF0YSA9IGt6YWxsb2Nfb2JqKCpwZGF0YSk7XG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI5LVx0XHRpZiAoIXBkYXRhKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTIzOS1cbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcdGh3ID0ga3phbGxvY19vYmooKmh3KTtcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jLTI0MS1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jPTc4Nj12b2lkIF9faW5pdCBvbWFwX3NvY19kZXZpY2VfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYy03OTAtXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM6NzkxOlx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkyLVx0aWYgKCFzb2NfZGV2X2F0dHIpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jPTEzMT1zdGF0aWMgaW50IG9tYXBfZGV2aWNlX2J1aWxkX2Zyb21fZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jOjE1OTpcdGh3bW9kcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgb21hcF9od21vZCAqLCBvaF9jbnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cdGlmICghaHdtb2RzKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTMzOTQtXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1Olx0c3lzYyA9IGt6YWxsb2Nfb2JqKCpzeXNjKTtcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jLTMzOTYtXHRpZiAoIXN5c2MpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNC1cdGlmIChsaXN0X2VtcHR5KFx1MDAyNm9oLVx1MDAzZXNsYXZlX3BvcnRzKSkge1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcdFx0b2kgPSBremFsbG9jX29iaigqb2kpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cdFx0aWYgKCFvaSlcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYz0zNTEzPWludCBvbWFwX2h3bW9kX2luaXRfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVx0aWYgKCFvaCkge1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUyODpcdFx0b2ggPSBremFsbG9jX29iaigqb2gpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzUyOS1cdFx0aWYgKCFvaClcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzUzOTpcdFx0b2gtXHUwMDNlY2xhc3MgPSBremFsbG9jX29iaigqb2gtXHUwMDNlY2xhc3MpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cdFx0aWYgKCFvaC1cdTAwM2VjbGFzcykge1xuLS1cbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYz0zNzk9c3RhdGljIGludCBfX2luaXQgYW14M19pZGxlX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZSwgaW50IGNwdSlcbi0tXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmMtNDEyLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jOjQxMzpcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxNC1cdGlmICghaWRsZV9zdGF0ZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYz0zMD1zdGF0aWMgdm9pZCBfX2luaXQgc3Jfc2V0X252YWx1ZXMoc3RydWN0IG9tYXBfdm9sdF9kYXRhICp2b2x0X2RhdGEsXG4tLVxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM6NDI6XHRudmFsdWVfdGFibGUgPSBremFsbG9jX29ianMoKm52YWx1ZV90YWJsZSwgY291bnQpO1xuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cdGlmICghbnZhbHVlX3RhYmxlKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTE3MS1cdCAqL1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jOjE3MjpcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVx0aWYgKCFyZXMpXG4tLVxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxuLS1cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYy00OTItXHQgKi9cbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzo0OTM6XHRyZXMgPSBremFsbG9jX29iaihzdHJ1Y3QgcmVzb3VyY2UpO1xuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cdGlmICghcmVzKVxuLS1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcbi0tXG5hcmNoL2FybS9tYWNoLXJwYy9lY2FyZC5jLTY5NC1cbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1Olx0ZWMgPSBremFsbG9jX29iaihlY2FyZF90KTtcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk2LVx0aWYgKCFlYykge1xuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM9OTM9aW50IF9faW5pdCBzYTExeHhfY2xrX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEwOS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmM6MTEwOlx0aHcgPSBremFsbG9jX29iaigqaHcpO1xuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMTEtXHRpZiAoIWh3KVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTMxLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMzI6XHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMy1cdGlmICghaHcpXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jPTMxNz1pbnQgX19pbml0IHNhMTF4MF9yZWdpc3Rlcl9maXhlZF9yZWd1bGF0b3IoaW50IG4sXG4tLVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYzozMjQ6XHRjZmctXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVx1MDAzZWluaXRfZGF0YSk7XG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmMtMzI1LVx0aWYgKCFjZmctXHUwMDNlaW5pdF9kYXRhKVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmMtMjc4LVxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XHRkID0ga3phbGxvY19vYmooKmQpO1xuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yODAtXHRpZiAoIWQpIHtcbi0tXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYz0xNDE9c3RhdGljIGludCBfX2luaXQgcmNhcl9nZW4yX3JlZ3VsYXRvcl9xdWlyayh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jLTE2Ni1cbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jOjE2NzpcdFx0cXVpcmsgPSBremFsbG9jX29iaigqcXVpcmspO1xuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmMtMTY4LVx0XHRpZiAoIXF1aXJrKSB7XG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3Rlcilcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTctXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XHRvcHBzID0ga3phbGxvY19vYmpzKCpvcHBzLCBNQVhfT1BQUyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy0zOTktXHRpZiAoIW9wcHMpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NDQyPWludCBfX2luaXQgdmVfc3BjX2luaXQodm9pZCBfX2lvbWVtICpiYXNlYWRkciwgdTMyIGExNV9jbHVzaWQsIGludCBpcnEpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNDQ0LVx0aW50IHJldDtcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcdGluZm8gPSBremFsbG9jX29iaigqaW5mbyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy00NDYtXHRpZiAoIWluZm8pXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9NTIzPXN0YXRpYyBzdHJ1Y3QgY2xrICp2ZV9zcGNfY2xrX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmNwdV9kZXYpXG4tLVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI3LVxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM6NTI4Olx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYy01MjktXHRpZiAoIXNwYylcbi0tXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYz0xMjM9c3RhdGljIHZvaWQgX19pbml0IHZlcnNhdGlsZV9kdF9wY2lfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jOjE0NTpcdG5ld3Byb3AgPSBremFsbG9jX29iaigqbmV3cHJvcCk7XG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXHRpZiAoIW5ld3Byb3ApXG4tLVxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcbi0tXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEwLVxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcdHNvY19kZXZfYXR0ciA9IGt6YWxsb2Nfb2JqKCpzb2NfZGV2X2F0dHIpO1xuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jLTExMi1cdGlmICghc29jX2Rldl9hdHRyKVxuLS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM9NTAzPXN0YXRpYyBfX2luaXQgaW50IGwyeDBfcG11X2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9tbS9jYWNoZS1sMngwLXBtdS5jLTUwOS1cbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmM6NTEwOlx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MTEtXHRpZiAoIWwyeDBfcG11KSB7XG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYz0zMTU9c3RhdGljIGludCBfX2luaXQgX191bmlwaGllcl9jYWNoZV9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4tLVxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jOjM0NTpcdGRhdGEgPSBremFsbG9jX29iaigqZGF0YSk7XG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cdGlmICghZGF0YSlcbi0tXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxuLS1cbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtNTYwLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XHRidWYgPSBremFsbG9jX29iaigqYnVmLFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjItXHRcdFx0ICBnZnAgXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYz0xNDg3PWFybV9pb21tdV9jcmVhdGVfbWFwcGluZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgYmFzZSwgdTY0IHNpemUpXG4tLVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA2LVxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzoxNTA3Olx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTE1MDgtXHRpZiAoIW1hcHBpbmcpXG4tLVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jPTMxNj1pbnQgX19pbml0IGFyY2hfeGVuX3VucG9wdWxhdGVkX2luaXQoc3RydWN0IHJlc291cmNlICoqcmVzKVxuLS1cbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmM6MzQ0Olx0cmVncyA9IGt6YWxsb2Nfb2JqcygqcmVncywgbnJfcmVnKTtcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXHRpZiAoIXJlZ3MpIHtcbi0tXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM4ODpcdFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zODktXHRcdGlmICghdG1wX3Jlcykge1xuLS1cbmFyY2gvYXJtL3hlbi9wMm0uYz0xNTA9Ym9vbCBfX3NldF9waHlzX3RvX21hY2hpbmVfbXVsdGkodW5zaWduZWQgbG9uZyBwZm4sXG4tLVxuYXJjaC9hcm0veGVuL3AybS5jLTE3OC1cbmFyY2gvYXJtL3hlbi9wMm0uYzoxNzk6XHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcbmFyY2gvYXJtL3hlbi9wMm0uYy0xODAtXHRpZiAoIXAybV9lbnRyeSlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvLmM9Njg9c3RhdGljIGludCBfX2luaXQgX192ZHNvX2luaXQoZW51bSB2ZHNvX2FiaSBhYmkpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jOjg0Olx0dmRzb19wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm9bYWJpXS52ZHNvX3BhZ2VzKTtcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cdGlmICh2ZHNvX3BhZ2VsaXN0ID09IE5VTEwpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5Mi1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcdHRoaXMgPSBremFsbG9jX29iaigqdGhpcyk7XG5hcmNoL2FybTY0L2t2bS9tbXUuYy00OTQtXHRpZiAoIXRoaXMpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz05ODE9aW50IGt2bV9pbml0X3N0YWdlMl9tbXUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11LCB1bnNpZ25lZCBsb25nIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTAwNy1cbmFyY2gvYXJtNjQva3ZtL21tdS5jOjEwMDg6XHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vbW11LmMtMTAwOS1cdGlmICghcGd0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTExODA9aW50IHRvcHVwX2h5cF9tZW1jYWNoZShzdHJ1Y3Qga3ZtX2h5cF9tZW1jYWNoZSAqbWMsIHVuc2lnbmVkIGxvbmcgbWluX3BhZ2VzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXHRpZiAoIW1jLVx1MDAzZW1hcHBpbmcpIHtcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XHRcdG1jLVx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTE4Ny1cdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jPTI1MTA9aW50IF9faW5pdCBrdm1fbW11X2luaXQodTMyIGh5cF92YV9iaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDMtXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoyNTQ0Olx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xuYXJjaC9hcm02NC9rdm0vbW11LmMtMjU0NS1cdGlmICghaHlwX3BndGFibGUpIHtcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xMzI3PWludCBrdm1fdmNwdV9hbGxvY2F0ZV92bmNyX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cdGlmICghdmNwdS1cdTAwM2VhcmNoLnZuY3JfdGxiKSB7XG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlx0XHRzdHJ1Y3Qgdm5jcl90bGIgKnZ0ID0ga3phbGxvY19vYmooKnZjcHUtXHUwMDNlYXJjaC52bmNyX3RsYixcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTEzMzQtXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDAtXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlx0a3ZtLVx1MDAzZWFyY2guc3lzcmVnX21hc2tzID0ga3phbGxvY19vYmooKihrdm0tXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMi1cdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuLS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jPTExNj1zdGF0aWMgc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUgKmt2bV9wdGR1bXBfcGFyc2VyX2NyZWF0ZShzdHJ1Y3Qga3ZtX3MyX21tdSAqbW11KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jLTEyMS1cbmFyY2gvYXJtNjQva3ZtL3B0ZHVtcC5jOjEyMjpcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjMtXHRpZiAoIXN0KVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM9MjA3PXN0YXRpYyBpbnQga3ZtX3ZnaWNfZGlzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IG5yX3NwaXMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXHRkaXN0LVx1MDAzZWFjdGl2ZV9zcGlzID0gKGF0b21pY190KUFUT01JQ19JTklUKDApO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XHRkaXN0LVx1MDAzZXNwaXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLCBucl9zcGlzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXHRpZiAoIWRpc3QtXHUwMDNlc3Bpcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTMxNj1zdGF0aWMgaW50IHZnaWNfYWxsb2NhdGVfcHJpdmF0ZV9pcnFzX2xvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiB0eXBlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzozMzI6XHR2Z2ljX2NwdS1cdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0zMzMtXHRcdFx0XHRcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTQyPWludCBrdm1fdmdpY19zZXR1cF9kZWZhdWx0X2lycV9yb3V0aW5nKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNDgtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxNDk6XHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTE1MC1cdGlmICghZW50cmllcylcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NzY9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19hZGRfbHBpKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGludGlkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo4ODpcdGlycSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2lycSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy05NjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2Olx0Y29sbGVjdGlvbiA9IGt6YWxsb2Nfb2JqKCpjb2xsZWN0aW9uLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2Ny1cdGlmICghY29sbGVjdGlvbilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTAwND1zdGF0aWMgc3RydWN0IGl0c19pdGUgKnZnaWNfaXRzX2FsbG9jX2l0ZShzdHJ1Y3QgaXRzX2RldmljZSAqZGV2aWNlLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDA5LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjEwMTA6XHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTEwMTEtXHRpZiAoIWl0ZSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9MTEzMT1zdGF0aWMgc3RydWN0IGl0c19kZXZpY2UgKnZnaWNfaXRzX2FsbG9jX2RldmljZShzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzoxMTM3Olx0ZGV2aWNlID0ga3phbGxvY19vYmooKmRldmljZSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVx0aWYgKCFkZXZpY2UpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTEtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcdGl0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB2Z2ljX2l0cywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xODUzLVx0aWYgKCFpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYz04ODY9c3RhdGljIGludCB2Z2ljX3YzX2FsbG9jX3JlZGlzdF9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCB1aW50MzJfdCBpbmRleCxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTkzMS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1tbWlvLXYzLmM6OTMyOlx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jLTkzMy1cdGlmICghcmRyZWcpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9MjQyPWludCB2Z2ljX3Y0X2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jOjI1OTpcdGRpc3QtXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXHUwMDNlaXRzX3ZtLnZwZXMsIG5yX3ZjcHVzLFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtMjYwLVx0XHRcdFx0XHQgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjEwMS1cdGlmICghaml0X2RhdGEpIHtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIxMDI6XHRcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxMDMtXHRcdGlmICghaml0X2RhdGEpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmM9MTc9c3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC92ZHNvLmMtMjItXHR2ZHNvX3BhZ2VsaXN0ID1cbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlx0XHRremFsbG9jX29ianMoc3RydWN0IHBhZ2UgKiwgdmRzb19wYWdlcyk7XG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cdGlmICh1bmxpa2VseSh2ZHNvX3BhZ2VsaXN0ID09IE5VTEwpKSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNDcyLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlx0cmFuZ2UgPSBremFsbG9jX29iaigqcmFuZ2UsIEdGUF9BVE9NSUMpO1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmMtNDc0LVx0aWYgKCFyYW5nZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jPTQ1PXN0YXRpYyBpbnQgX19pbml0IGluaXRfdmRzbyh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMtNTUtXHR2ZHNvX2luZm8uY29kZV9tYXBwaW5nLnBhZ2VzID1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XHRcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX2luZm8uc2l6ZSAvIFBBR0VfU0laRSk7XG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYz02MTQ9c3RhdGljIGludCBrdm1fZWlvaW50Y19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jLTYyNC1cbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYzo2MjU6XHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjYtXHRpZiAoIXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM9Mzk0PXN0YXRpYyBpbnQga3ZtX2lwaV9jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmM6NDEyOlx0cyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBsb29uZ2FyY2hfaXBpKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cdGlmICghcylcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDExOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDI3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBDb2RlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgJiMzNDtremFsbG9jX29iaiYjMzQ7IGNhdGNoZXMgbXkgZXllLiBUaGlzIGxvb2tzIGxpa2UgYSBtYWNybyB0aGF0JiMzOTtzIGJlZW4gaW50cm9kdWNlZCBpbiBhIHJlY2VudCB1cGRhdGUuIFRoZSBvcmlnaW5hbCBjb2RlIGhhcyBgZXYgPSBremFsbG9jX29iaigqZXYpO2AgYnV0IHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBpdCB0byBgZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7YC4gU29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodCBoZXJlLiBUaGUgb3JpZ2luYWwgY29kZSBvbmx5IHBhc3NlcyAqb25lKiBhcmd1bWVudCB0byBga3phbGxvY19vYmpgLCByaWdodD8KCkxldCBtZSBqdW1wIG92ZXIgdG8gYG1tL21lbWNvbnRyb2wtdjEuY2AgYW5kIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCBsaW5lIDE3MjQuIFllcCwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY2hhbmdlIGlzLiBJIGNhbiBzZWUgdGhlIGRpZmY6CgpgYGBkaWZmCi0JZXYgPSBremFsbG9jX29iaigqZXYpOwomIzQzOwlldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKYGBgCgpTdHJhbmdlLiBJIGNvdWxkIHN3ZWFyIGBremFsbG9jX29iamAgKnNob3VsZG4mIzM5O3QqIGhhdmUgYmVlbiB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQgb3JpZ2luYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoaXMgYGt6YWxsb2Nfb2JqYCBtYWNybywgYW5kIHdoYXQgaXQmIzM5O3MgKnN1cHBvc2VkKiB0byBiZSBkb2luZy4gQmVzdCB0byBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBsaWtlIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSB3aGF0IGBremFsbG9jX29iamAgaXMgZGVmaW5lZCBhcy4gSSBiZXQgdGhlcmUmIzM5O3MgYmVlbiBhIHN1YnRsZSBjaGFuZ2UgdG8gdGhlIG1hY3JvJiMzOTtzIHNpZ25hdHVyZSBzb21ld2hlcmUgYWxvbmcgdGhlIGxpbmUsIGFuZCB0aGlzIHBhdGNoIGlzIGNvcnJlY3RpbmcgYSBwb3RlbnRpYWwgYnVnLiBHb3R0YSB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIGt6YWxsb2Nfb2JqJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2xhYi5oPTEwNTE9dm9pZCAqa21hbGxvY19ub2xvY2soc2l6ZV90IHNpemUsIGdmcF90IGdmcF9mbGFncywgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzItLyogQWxsIGt6YWxsb2MgYWxpYXNlcyBmb3Iga21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTMzOiNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzNC1cdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzU6I2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtXHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxuLS1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMC1cbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oOjIxMTojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMi1cdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNzcKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiA2NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZG9pbmcgc29tZXRoaW5nIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYEdGUGAgZmxhZ3MuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIGFsbG9jYXRpb24gZnJvbSB1c2luZyB0aGUgZGVmYXVsdCBmbGFncyAobGlrZWx5IGBHRlBfS0VSTkVMYCkgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoaXMgbWVhbnMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZSBjaGFyZ2VkIHRvIHRoZSBtZW1vcnkgY2dyb3VwIChtZW1jZykuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMganVzdCBtb2RpZmllcyBtZW1vcnkgYWNjb3VudGluZyBhbmQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBwcm9ncmFtJiMzOTtzIGFjdHVhbCBjb250cm9sIGZsb3cuCgpOb3csIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFR5cGljYWxseSwgSSB3b3VsZG4mIzM5O3QgYm90aGVyIGZ1enppbmcgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlcyB1bmxlc3MgdGhleSBpbXBhY3QgdGhlIGFjY291bnRpbmcgbG9naWMgaXRzZWxmLiBIZXJlLCBpdCYjMzk7cyBhIHNpbXBsZSBmbGFnIGFkZGl0aW9uIHRvIGBremFsbG9jX29iamAsIHNvIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vLiBIb3dldmVyLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudGAgaXMgY2FsbGVkIHdoZW4gYSB1c2VyIHdyaXRlcyB0byBgY2dyb3VwLmV2ZW50X2NvbnRyb2xgIGluIGEgY2dyb3VwIHYxIG1lbWNnLCBzbyBJIHNob3VsZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGVmZmVjdHMuIEdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgaXQgaGFzIHNvbWUgc3BlY2lmaWMgY3JpdGVyaWEuIFRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBleGNlcHQgZm9yIHRoZSBhY2NvdW50aW5nIHNpZGUgZWZmZWN0LiBUaGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBremFsbG9jX29iaigqZXYpYCB0byBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gVGhpcyBpc24mIzM5O3QgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgdGhhdCBhIGNoYW5nZSBjb3VsZCBsZWFkIHRvIGEgbWVtY2cgT09NLiBCdXQgZXZlbiBpbiB0aGF0IGNhc2UsIHRoZSBhbGxvY2F0aW9uIHdvdWxkIGxpa2VseSBmYWlsLCB3aXRob3V0IGFueSBzaWRlIGVmZmVjdHMgb3RoZXIgdGhhbiBhIGZhaWxlZCBhbGxvY2F0aW9uLgoKUmV2aXNpdGluZyB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhLCAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LCBhbmQgYEdGUF9LRVJORUxfQUNDT1VOVGAgaXMgYSBtYWNyby4gSXQmIzM5O3MganVzdCBhIGNoYW5nZSB0byBtZW1vcnkgYWNjb3VudGluZy4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBpcyBhIHRyaXZpYWwgY2hhbmdlIHRvIGFsbG9jYXRpb24gZmxhZ3MgZm9yIG1lbW9yeSBhY2NvdW50aW5nLCBzbyBpdCBkb2VzIG5vdCBhbHRlciBleGVjdXRpb24gZmxvdyBpbiBhIG1lYW5pbmdmdWwgd2F5IHRvIHdhcnJhbnQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjI5LjY2Nzg0MzY2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDg5NTA0MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjI5LjY2Nzg0ODk3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NzIxMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzhhMzQ4OTg5NWU2MTNjZWQ5ZDhmNDgwYTczYjdmN2ZmYWE1ZmZkZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmMgYi9tbS9tZW1jb250cm9sLXYxLmNcXG5pbmRleCBlOGI2ZTE1NjAyNzhiYy4uZjg0MjRlYzM3MzRiMjggMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5jXFxuKysrIGIvbW0vbWVtY29udHJvbC12MS5jXFxuQEAgLTE3MjEsNyArMTcyMSw3IEBAIGludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG4gXFx0XFx0bW9kZSA9IHJldDtcXG4gXFx0fVxcbiBcXG4tXFx0ZXYgPSBremFsbG9jX29iaigqZXYpO1xcbitcXHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0aWYgKCFldikge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDM6MzAuMTY3NTg4Mjc4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4OTc1MTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgdGhlIEdGUF9LRVJORUxfQUNDT1VOVCBmbGFnIHRvIGEgbWVtb3J5IGFsbG9jYXRpb24gaW4gdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudCgpLiBUaGlzIGlzIGEgbWlub3IgbWVtb3J5IGFjY291bnRpbmcgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc4YTM0ODk4OTVlNjEzY2VkOWQ4ZjQ4MGE3M2I3ZjdmZmFhNWZmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMTo0MzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wtdjEuYyBiL21tL21lbWNvbnRyb2wtdjEuY1xuaW5kZXggZThiNmUxNTYwMjc4YmMuLmY4NDI0ZWMzNzM0YjI4IDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5jXG4rKysgYi9tbS9tZW1jb250cm9sLXYxLmNcbkBAIC0xNzIxLDcgKzE3MjEsNyBAQCBpbnQgdm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4gXHRcdG1vZGUgPSByZXQ7XG4gXHR9XG4gXG4tXHRldiA9IGt6YWxsb2Nfb2JqKCpldik7XG4rXHRldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZXYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0MzozMC4xNjc1ODk4MzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTcxMzg1Nzc2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNZW1vcnkgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS9tZW1jb250cm9sLXYxLmNgLiBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIGBremFsbG9jX29iaigqZXYpYCBmb3IgYGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKWAuIE15IGZpcnN0IHRob3VnaHQgaXMgXCJIbW0sIGBremFsbG9jX29iamAuLi4gSSdtIG5vdCBpbW1lZGlhdGVseSBmYW1pbGlhciB3aXRoIHRoYXQgb25lLCBpcyBpdCBqdXN0IGEgd3JhcHBlciBhcm91bmQgYGt6YWxsb2NgP1wiLiBMZXQncyB0YWtlIGEgcXVpY2sgbG9vayBpbnNpZGUgb2YgYG1tL21lbWNvbnRyb2wtdjEuY2AgdG8gc2VlIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgYGt6YWxsb2Nfb2JqYCBmdW5jdGlvbi4gTXkgU3BpZGV5IHNlbnNlIGlzIHRpbmdsaW5nIHNpbmNlIHRoZSByZWd1bGFyIGBremFsbG9jYCBmdW5jdGlvbiB1c2VzIHRoZSBmb3JtIGBremFsbG9jKHNpemUsIGZsYWdzKWAsIHNvIEknbSBjdXJpb3VzIGlmIHRoaXMgYF9vYmpgIHZhcmlhdGlvbiBhbHRlcnMgdGhlIGZsYWdzIGluIHNvbWUgd2F5LlxuXG5Ob3cgdGhhdCBJJ20gaGVyZSBpbiBgbW0vbWVtY29udHJvbC12MS5jYCwgSSBzaG91bGQgcHJvYmFibHkgcXVpY2tseSBvcmllbnQgbXlzZWxmIHdpdGggdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgYXJvdW5kIGB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50YCB0byBnZXQgc29tZSBjb250ZXh0LCBzaW5jZSBJIGFzc3VtZSB0aGF0J3Mgd2hlcmUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBldmAgaXMgYW5kIHdoYXQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSB0byB0aGUgYWxsb2NhdGlvbiBmbGFncyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQxLjg4MTQ0OTI1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDE1NTcxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1wcmVzc3VyZV9yZWdpc3Rlcl9ldmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9tZW1jb250cm9sLXYxLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC12MS5jPTEwOTY9c3RhdGljIHNzaXplX3QgbWVtY2dfd3JpdGVfZXZlbnRfY29udHJvbChzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTE5Mi1cXHRcXHRcXHQgICAgIFxcXCJpZiB5b3UgZGVwZW5kIG9uIHRoaXMgZnVuY3Rpb25hbGl0eS5cXFxcblxcXCIpO1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxMTkzOlxcdFxcdGV2ZW50LVxcdTAwM2VyZWdpc3Rlcl9ldmVudCA9IHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQ7XFxubW0vbWVtY29udHJvbC12MS5jLTExOTQtXFx0XFx0ZXZlbnQtXFx1MDAzZXVucmVnaXN0ZXJfZXZlbnQgPSB2bXByZXNzdXJlX3VucmVnaXN0ZXJfZXZlbnQ7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmM9MTY1ND12b2lkIHZtcHJlc3N1cmVfcHJpbyhnZnBfdCBnZnAsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHByaW8pXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTY3NS0vKipcXG5tbS9tZW1jb250cm9sLXYxLmM6MTY3NjogKiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkgLSBCaW5kIHZtcHJlc3N1cmUgbm90aWZpY2F0aW9ucyB0byBhbiBldmVudGZkXFxubW0vbWVtY29udHJvbC12MS5jLTE2NzctICogQG1lbWNnOlxcdG1lbWNnIHRoYXQgaXMgaW50ZXJlc3RlZCBpbiB2bXByZXNzdXJlIG5vdGlmaWNhdGlvbnNcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xNjkyLSAqL1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxNjkzOmludCB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcXG5tbS9tZW1jb250cm9sLXYxLmMtMTY5NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQsIGNvbnN0IGNoYXIgKmFyZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQyLjE4MzAxMDk0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTU4NDIyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE15c3Rlcnkgb2Yga3phbGxvY19vYmoqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGt6YWxsb2Nfb2JqYCBpcyBhbGwgYWJvdXQuIEl0J3Mgbm90IHJpbmdpbmcgYW55IGJlbGxzIGZyb20gdGhlIHN0YW5kYXJkIGtlcm5lbCByb3V0aW5lcywgd2hpY2ggaXMgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSB0byBjaGVjay4gTXkgaW50dWl0aW9uIHNheXMgdGhpcyBpcyBhIGN1c3RvbSBvciBzcGVjaWFsaXplZCBmdW5jdGlvbi4gT2theSwgbGV0J3Mgc2VlLCB3aGVyZSBpcyB0aGlzIHVzZWQgaW4gb3VyIGtlcm5lbCwgaXQgbXVzdCBiZSBzb21ld2hlcmUuIExpbmUgMTcyMSBvZiBgbW0vbWVtY29udHJvbC12MS5jYCBpcyB3aGVyZSB0aGUgY2x1ZSBsaWVzLiBcblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQ1LjI3ODg1NDk1MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tZW1jb250cm9sLXYxLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcxMDpcXHRcXHRyZXQgPSBtYXRjaF9zdHJpbmcodm1wcmVzc3VyZV9zdHJfbGV2ZWxzLCBWTVBSRVNTVVJFX05VTV9MRVZFTFMsIHRva2VuKTtcXG4xNzExOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE3MTI6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTcxMzpcXHRcXHRsZXZlbCA9IHJldDtcXG4xNzE0OlxcdFxcbjE3MTU6XFx0XFx0LyogRmluZCBvcHRpb25hbCBtb2RlICovXFxuMTcxNjpcXHRcXHR0b2tlbiA9IHN0cnNlcChcXHUwMDI2c3BlYywgXFxcIixcXFwiKTtcXG4xNzE3OlxcdFxcdGlmICh0b2tlbikge1xcbjE3MTg6XFx0XFx0XFx0cmV0ID0gbWF0Y2hfc3RyaW5nKHZtcHJlc3N1cmVfc3RyX21vZGVzLCBWTVBSRVNTVVJFX05VTV9NT0RFUywgdG9rZW4pO1xcbjE3MTk6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTcyMDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4xNzIxOlxcdFxcdFxcdG1vZGUgPSByZXQ7XFxuMTcyMjpcXHRcXHR9XFxuMTcyMzpcXHRcXG4xNzI0OlxcdFxcdGV2ID0ga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbjE3MjU6XFx0XFx0aWYgKCFldikge1xcbjE3MjY6XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4xNzI3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE3Mjg6XFx0XFx0fVxcbjE3Mjk6XFx0XFxuMTczMDpcXHRcXHRldi1cXHUwMDNlZWZkID0gZXZlbnRmZDtcXG4xNzMxOlxcdFxcdGV2LVxcdTAwM2VsZXZlbCA9IGxldmVsO1xcbjE3MzI6XFx0XFx0ZXYtXFx1MDAzZW1vZGUgPSBtb2RlO1xcbjE3MzM6XFx0XFxuMTczNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHNfbG9jayk7XFxuMTczNTpcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZXYtXFx1MDAzZW5vZGUsIFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHMpO1xcbjE3MzY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2bXByLVxcdTAwM2VldmVudHNfbG9jayk7XFxuMTczNzpcXHRcXHRyZXQgPSAwO1xcbjE3Mzg6XFx0b3V0OlxcbjE3Mzk6XFx0XFx0a2ZyZWUoc3BlY19vcmlnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTE6NDM6NDUuMjc5MDI3NDAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNzI0MTE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBremFsbG9jX29iamAgRW5pZ21hKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCBhY3Jvc3MgYGt6YWxsb2Nfb2JqYC4gSXQncyBjbGVhcmx5IG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uIG5hbWUsIGFuZCBteSBndXQgc2F5cyBpdCdzIGxpa2VseSBzb21lIGtpbmQgb2YgbWFjcm8gZGVmaW5pdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaXRzIGNvbnRleHQuIExldCdzIGZpcmUgdXAgYSBgZ3JlcGAg4oCTIHNwZWNpZmljYWxseSwgbGV0J3MgdGFyZ2V0IHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBga3phbGxvY19vYmpgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIG1hY3JvJ3MgZXhwYW5zaW9uLCBpdHMgdXNhZ2UgcGF0dGVybnMsIGFuZCBob3BlZnVsbHksIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2Ugd2l0aGluIHRoaXMgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXNuJ3QganVzdCB0byBzZWUgd2hlcmUgaXQgKmlzKiB1c2VkLCBidXQgdG8gcXVpY2tseSBncmFzcCBpdHMgcm9sZSwgaG93IGl0J3MgZGVmaW5lZCwgYW5kIHdoYXQgYWJzdHJhY3Rpb25zIGl0J3MgaW50cm9kdWNpbmcuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgYGt6YWxsb2Nfb2JqYCB3aWxsIGJlIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgY29kZSBzZWdtZW50LiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgdW5jb3ZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjQ4LjMwNjI3MDk0OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUxNjI5MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt6YWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDc5MTI1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0PTEwMz1saXN0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdC0xMTQtXFxuRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9saXN0LnJzdDoxMTU6ICAgICAgICAgIGdyb2NrID0ga3phbGxvY19vYmooKmdyb2NrKTtcXG5Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2xpc3QucnN0LTExNi0gICAgICAgICAgaWYgKCFncm9jaylcXG4tLVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI1LVxcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3Q6MTI2OiAgICAgICAgICBkaW1pdHJpID0ga3phbGxvY19vYmooKmRpbWl0cmkpO1xcbkRvY3VtZW50YXRpb24vY29yZS1hcGkvbGlzdC5yc3QtMTI3LSAgICAgICAgICBpZiAoIWRpbWl0cmkpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3Q9NDU9YSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtODktXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkwOlxcdFxcdGRjX3N5bmMgPSBremFsbG9jX29iaigqZGNfc3luYyk7XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21haWxib3gucnN0OjkxOlxcdFxcdGRjX2FzeW5jID0ga3phbGxvY19vYmooKmRjX2FzeW5jKTtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWFpbGJveC5yc3QtOTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q9MjY9RXhhbXBsZTpcXG4tLVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00NC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdjRsMi1maC5yc3Q6NDU6XFx0XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS92NGwyLWZoLnJzdC00Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0PTkzOD1UaGUga2VybmVsIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhbCBwdXJwb3NlIG1lbW9yeSBhbGxvY2F0b3JzOlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0OjkzOTprbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19vYmpzKCksIGt6YWxsb2Nfb2JqcygpLCB2bWFsbG9jKCksIGFuZFxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jb2Rpbmctc3R5bGUucnN0LTk0MC12emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdD05NjQ9VGhlIHByZWZlcnJlZCBmb3JtIGZvciBhbGxvY2F0aW5nIGEgemVyb2VkIGFycmF5IGlzIHRoZSBmb2xsb3dpbmc6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY29kaW5nLXN0eWxlLnJzdC05NjctXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3Q6OTY4OlxcdHAgPSBremFsbG9jX29ianMoKnAsIG4sIC4uLik7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NvZGluZy1zdHlsZS5yc3QtOTY5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0PTM5OD1iZWNvbWUsIHJlc3BlY3RpdmVseTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDAwLVxcdHB0ciA9IGttYWxsb2Nfb2JqKCpwdHIgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDE6XFx0cHRyID0ga3phbGxvY19vYmooKnB0ciBbLCBnZnBdICk7XFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlcHJlY2F0ZWQucnN0LTQwMi1cXHRwdHIgPSBrbWFsbG9jX29ianMoKnB0ciwgY291bnQgWywgZ2ZwXSApO1xcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZXByZWNhdGVkLnJzdDo0MDM6XFx0cHRyID0ga3phbGxvY19vYmpzKCpwdHIsIGNvdW50IFssIGdmcF0gKTtcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVwcmVjYXRlZC5yc3QtNDA0LVxcdHB0ciA9IGttYWxsb2NfZmxleCgqcHRyLCBmbGV4X21lbWJlciwgY291bnQgWywgZ2ZwXSApO1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTIwOD10byBkZXRhaWxzIGV4cGxhaW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtMjY4LSAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSBjaGlwLXNwZWNpZmljIGRhdGEgd2l0aCB6ZXJvIGZpbGxlZCAqL1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDoyNjk6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0yNzAtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTYyMz1BZnRlciBhbGxvY2F0aW5nIGEgY2FyZCBpbnN0YW5jZSB2aWEgOmM6ZnVuYzpgc25kX2NhcmRfbmV3KClgXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMwLSAgLi4uLi5cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q6NjMxOiAgY2hpcCA9IGt6YWxsb2Nfb2JqKCpjaGlwKTtcXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNjMyLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0PTY5OD1kZXN0cnVjdG9yIGFuZCBQQ0kgZW50cmllcy4gRXhhbXBsZSBjb2RlIGlzIHNob3duIGZpcnN0LCBiZWxvdzo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3QtNzQ5LVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdDo3NTA6ICAgICAgICAgICAgICBjaGlwID0ga3phbGxvY19vYmooKmNoaXApO1xcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC03NTEtICAgICAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKSB7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NvdW5kL2tlcm5lbC1hcGkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci5yc3Q9MzgyMz1jaGlwIGRhdGEgaW5kaXZpZHVhbGx5OjpcXG4tLVxcbkRvY3VtZW50YXRpb24vc291bmQva2VybmVsLWFwaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnJzdC0zODM1LSAgICAgICAgICAuLi4uXFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0OjM4MzY6ICAgICAgICAgIGNoaXAgPSBremFsbG9jX29iaigqY2hpcCk7XFxuRG9jdW1lbnRhdGlvbi9zb3VuZC9rZXJuZWwtYXBpL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIucnN0LTM4MzctICAgICAgICAgIC4uLi5cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dD03OTQ9aW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQtODAxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dDo4MDI6XFx0bXlfZmggPSBremFsbG9jX29iaigqbXlfZmgpO1xcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dC04MDMtXFxuLS1cXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYz02ND1tb2R1bGVfZnJvYl9hcmNoX3NlY3Rpb25zKEVsZjY0X0VoZHIgKmhkciwgRWxmNjRfU2hkciAqc2VjaGRycyxcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL21vZHVsZS5jLTk1LVxcdG5zeW1zID0gc3ltdGFiLVxcdTAwM2VzaF9zaXplIC8gc2l6ZW9mKEVsZjY0X1N5bSk7XFxuYXJjaC9hbHBoYS9rZXJuZWwvbW9kdWxlLmM6OTY6XFx0Y2hhaW5zID0ga3phbGxvY19vYmpzKHN0cnVjdCBnb3RfZW50cnksIG5zeW1zKTtcXG5hcmNoL2FscGhhL2tlcm5lbC9tb2R1bGUuYy05Ny1cXHRpZiAoIWNoYWlucykge1xcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYz0zOTA9cmVnaXN0ZXJfY3B1cyh2b2lkKVxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc2V0dXAuYy0zOTQtXFx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHtcXG5hcmNoL2FscGhhL2tlcm5lbC9zZXR1cC5jOjM5NTpcXHRcXHRzdHJ1Y3QgY3B1ICpwID0ga3phbGxvY19vYmooKnApO1xcbmFyY2gvYWxwaGEva2VybmVsL3NldHVwLmMtMzk2LVxcdFxcdGlmICghcClcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYz0xMTIwPXN0YXRpYyBpbnQgaml0X3ByZXBhcmVfZmluYWxfbWVtX2FsbG9jKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTExMzEtXFx0aWYgKGN0eC1cXHUwMDNlbmVlZF9leHRyYV9wYXNzKSB7XFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjExMzI6XFx0XFx0Y3R4LVxcdTAwM2VqaXRfZGF0YSA9IGt6YWxsb2Nfb2JqKCpjdHgtXFx1MDAzZWppdF9kYXRhKTtcXG5hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMtMTEzMy1cXHRcXHRpZiAoIWN0eC1cXHUwMDNlaml0X2RhdGEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmM9MjIwPWxvY29tb19pbml0X29uZV9jaGlsZChzdHJ1Y3QgbG9jb21vICpsY2hpcCwgc3RydWN0IGxvY29tb19kZXZfaW5mbyAqaW5mbylcXG4tLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYy0yMjQtXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jOjIyNTpcXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vX2Rldik7XFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jLTIyNi1cXHRpZiAoIWRldikge1xcbi0tXFxuYXJjaC9hcm0vY29tbW9uL2xvY29tby5jPTM1Nj1fX2xvY29tb19wcm9iZShzdHJ1Y3QgZGV2aWNlICptZSwgc3RydWN0IHJlc291cmNlICptZW0sIGludCBpcnEpXFxuLS1cXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzYyLVxcbmFyY2gvYXJtL2NvbW1vbi9sb2NvbW8uYzozNjM6XFx0bGNoaXAgPSBremFsbG9jX29iaihzdHJ1Y3QgbG9jb21vKTtcXG5hcmNoL2FybS9jb21tb24vbG9jb21vLmMtMzY0LVxcdGlmICghbGNoaXApXFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM9NzMzPXNhMTExMV9pbml0X29uZV9jaGlsZChzdHJ1Y3Qgc2ExMTExICpzYWNoaXAsIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3NhMTExMS5jLTczOS1cXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmM6NzQwOlxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBzYTExMTFfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2ExMTExLmMtNzQxLVxcdGlmICghZGV2KSB7XFxuLS1cXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYz0xNzg9c3RhdGljIGludCBzY29vcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuYXJjaC9hcm0vY29tbW9uL3Njb29wLmMtMTg3LVxcbmFyY2gvYXJtL2NvbW1vbi9zY29vcC5jOjE4ODpcXHRkZXZwdHIgPSBremFsbG9jX29iaihzdHJ1Y3Qgc2Nvb3BfZGV2KTtcXG5hcmNoL2FybS9jb21tb24vc2Nvb3AuYy0xODktXFx0aWYgKCFkZXZwdHIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmM9MTA4PXN0YXRpYyBpbnQgc2Vjb25kYXJ5X2JpZ2xpdHRsZV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvc21wLmMtMTEwLVxcdGlmICghY3B1X3Z0YWJsZVtjcHVdKVxcbmFyY2gvYXJtL2tlcm5lbC9zbXAuYzoxMTE6XFx0XFx0Y3B1X3Z0YWJsZVtjcHVdID0ga3phbGxvY19vYmooKmNwdV92dGFibGVbY3B1XSk7XFxuYXJjaC9hcm0va2VybmVsL3NtcC5jLTExMi1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM9MTY5PXN0YXRpYyBpbnQgX19pbml0IHZkc29faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3Zkc28uYy0xODEtXFx0LyogQWxsb2NhdGUgdGhlIFZEU08gdGV4dCBwYWdlbGlzdCAqL1xcbmFyY2gvYXJtL2tlcm5lbC92ZHNvLmM6MTgyOlxcdHZkc29fdGV4dF9wYWdlbGlzdCA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB0ZXh0X3BhZ2VzKTtcXG5hcmNoL2FybS9rZXJuZWwvdmRzby5jLTE4My1cXHRpZiAodmRzb190ZXh0X3BhZ2VsaXN0ID09IE5VTEwpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jPTI2MT1pbnQgX19pbml0IGRjMjEyODVfc2V0dXAoaW50IG5yLCBzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2NC1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jOjI2NTpcXHRyZXMgPSBremFsbG9jX29ianMoc3RydWN0IHJlc291cmNlLCAyKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZGMyMTI4NS5jLTI2Ni1cXHRpZiAoIXJlcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYz02OT1zdGF0aWMgaW50IF9faW5pdCBlYnNhMjg1X2xlZHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL2Vic2EyODUuYy04Ni1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvZWJzYTI4NS5jOjg3OlxcdFxcdGxlZCA9IGt6YWxsb2Nfb2JqKCpsZWQpO1xcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9lYnNhMjg1LmMtODgtXFx0XFx0aWYgKCFsZWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmM9NzIwPXN0YXRpYyBpbnQgX19pbml0IG5ldHdpbmRlcl9sZWRzX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9uZXR3aW5kZXItaHcuYy03MjktXFxuYXJjaC9hcm0vbWFjaC1mb290YnJpZGdlL25ldHdpbmRlci1ody5jOjczMDpcXHRcXHRsZWQgPSBremFsbG9jX29iaigqbGVkKTtcXG5hcmNoL2FybS9tYWNoLWZvb3RicmlkZ2UvbmV0d2luZGVyLWh3LmMtNzMxLVxcdFxcdGlmICghbGVkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy00NzktXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjQ4MDpcXHRwbXVfbW1kYyA9IGt6YWxsb2Nfb2JqKCpwbXVfbW1kYyk7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTQ4MS1cXHRpZiAoIXBtdV9tbWRjKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2JvYXJkLXY3LmM9MTE0PXN0YXRpYyB2b2lkIF9faW5pdCBpMmNfcXVpcmsodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMjktXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9ib2FyZC12Ny5jOjEzMDpcXHRcXHRuZXdfY29tcGF0ID0ga3phbGxvY19vYmooKm5ld19jb21wYXQpO1xcbmFyY2gvYXJtL21hY2gtbXZlYnUvYm9hcmQtdjcuYy0xMzEtXFxuLS1cXG5hcmNoL2FybS9tYWNoLW12ZWJ1L2NvaGVyZW5jeS5jPTE2Mz1zdGF0aWMgdm9pZCBfX2luaXQgYXJtYWRhXzM3NV8zODBfY29oZXJlbmN5X2luaXQoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmMtMTg3LVxcbmFyY2gvYXJtL21hY2gtbXZlYnUvY29oZXJlbmN5LmM6MTg4OlxcdFxcdHAgPSBremFsbG9jX29iaigqcCk7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9jb2hlcmVuY3kuYy0xODktXFx0XFx0cC1cXHUwMDNlbmFtZSA9IGtzdHJkdXAoXFxcImFybSxpby1jb2hlcmVudFxcXCIsIEdGUF9LRVJORUwpO1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYz0xNDg9c3RhdGljIGludCBfX2luaXQgbXZlYnVfc29jX2RldmljZSh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTYtXFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYzoxNTc6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1tdmVidS9tdmVidS1zb2MtaWQuYy0xNTgtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW14cy9tYWNoLW14cy5jPTM4MD1zdGF0aWMgdm9pZCBfX2luaXQgbXhzX21hY2hpbmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zODktXFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYzozOTA6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1teHMvbWFjaC1teHMuYy0zOTEtXFx0aWYgKCFzb2NfZGV2X2F0dHIpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL2RtYS5jPTI5ND1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9zeXN0ZW1fZG1hX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmMtMzIxLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvZG1hLmM6MzIyOlxcdGQgPSBremFsbG9jX29iaigqZCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9kbWEuYy0zMjMtXFx0aWYgKCFkKSB7XFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM9MjkyPXN0YXRpYyB2b2lkIG9tYXBfbWNic3BfcmVnaXN0ZXJfYm9hcmRfY2ZnKHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgcmVzX2NvdW50LFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMS9tY2JzcC5jLTI5Ni1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL21jYnNwLmM6Mjk3OlxcdG9tYXBfbWNic3BfZGV2aWNlcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHNpemUpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvbWNic3AuYy0yOTgtXFx0aWYgKCFvbWFwX21jYnNwX2RldmljZXMpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYz01MT1zdGF0aWMgaW50IF9faW5pdCBvbWFwMV9kbV90aW1lcl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAxL3RpbWVyLmMtMTI3LVxcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYzoxMjg6XFx0XFx0cGRhdGEgPSBremFsbG9jX29iaigqcGRhdGEpO1xcbmFyY2gvYXJtL21hY2gtb21hcDEvdGltZXIuYy0xMjktXFx0XFx0aWYgKCFwZGF0YSkge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmM9MjMwPXZvaWQgb21hcDJ4eHhfY2xrdF92cHNfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjM5LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvY2xrdDJ4eHhfdmlydF9wcmNtX3NldC5jOjI0MDpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9jbGt0Mnh4eF92aXJ0X3ByY21fc2V0LmMtMjQxLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmM9Nzg2PXZvaWQgX19pbml0IG9tYXBfc29jX2RldmljZV9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL2lkLmMtNzkwLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvaWQuYzo3OTE6XFx0c29jX2Rldl9hdHRyID0ga3phbGxvY19vYmooKnNvY19kZXZfYXR0cik7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9pZC5jLTc5Mi1cXHRpZiAoIXNvY19kZXZfYXR0cilcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYz0xMzE9c3RhdGljIGludCBvbWFwX2RldmljZV9idWlsZF9mcm9tX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfZGV2aWNlLmMtMTU4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9kZXZpY2UuYzoxNTk6XFx0aHdtb2RzID0ga3phbGxvY19vYmpzKHN0cnVjdCBvbWFwX2h3bW9kICosIG9oX2NudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jLTE2MC1cXHRpZiAoIWh3bW9kcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzM4MT1zdGF0aWMgaW50IG9tYXBfaHdtb2RfYWxsb2NhdGVfbW9kdWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9tYXBfaHdtb2QgKm9oLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5NC1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozMzk1OlxcdHN5c2MgPSBremFsbG9jX29iaigqc3lzYyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzM5Ni1cXHRpZiAoIXN5c2MpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNDI0LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZvaC1cXHUwMDNlc2xhdmVfcG9ydHMpKSB7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM6MzQyNTpcXHRcXHRvaSA9IGt6YWxsb2Nfb2JqKCpvaSk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzQyNi1cXHRcXHRpZiAoIW9pKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmM9MzUxMz1pbnQgb21hcF9od21vZF9pbml0X21vZHVsZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI3LVxcdGlmICghb2gpIHtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYzozNTI4OlxcdFxcdG9oID0ga3phbGxvY19vYmooKm9oKTtcXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTI5LVxcdFxcdGlmICghb2gpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2QuYy0zNTM4LVxcbmFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jOjM1Mzk6XFx0XFx0b2gtXFx1MDAzZWNsYXNzID0ga3phbGxvY19vYmooKm9oLVxcdTAwM2VjbGFzcyk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMtMzU0MC1cXHRcXHRpZiAoIW9oLVxcdTAwM2VjbGFzcykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jPTM3OT1zdGF0aWMgaW50IF9faW5pdCBhbXgzX2lkbGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9wbTMzeHgtY29yZS5jLTQxMi1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3BtMzN4eC1jb3JlLmM6NDEzOlxcdGlkbGVfc3RhdGVzID0ga3phbGxvY19vYmpzKCppZGxlX3N0YXRlcywgc3RhdGVfY291bnQpO1xcbmFyY2gvYXJtL21hY2gtb21hcDIvcG0zM3h4LWNvcmUuYy00MTQtXFx0aWYgKCFpZGxlX3N0YXRlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtb21hcDIvc3JfZGV2aWNlLmM9MzA9c3RhdGljIHZvaWQgX19pbml0IHNyX3NldF9udmFsdWVzKHN0cnVjdCBvbWFwX3ZvbHRfZGF0YSAqdm9sdF9kYXRhLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00MS1cXG5hcmNoL2FybS9tYWNoLW9tYXAyL3NyX2RldmljZS5jOjQyOlxcdG52YWx1ZV90YWJsZSA9IGt6YWxsb2Nfb2JqcygqbnZhbHVlX3RhYmxlLCBjb3VudCk7XFxuYXJjaC9hcm0vbWFjaC1vbWFwMi9zcl9kZXZpY2UuYy00My1cXHRpZiAoIW52YWx1ZV90YWJsZSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYz0xMzk9c3RhdGljIGludCBfX2luaXQgcGNpZV9zZXR1cChzdHJ1Y3QgcGNpX3N5c19kYXRhICpzeXMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTcxLVxcdCAqL1xcbmFyY2gvYXJtL21hY2gtb3Jpb241eC9wY2kuYzoxNzI6XFx0cmVzID0ga3phbGxvY19vYmooc3RydWN0IHJlc291cmNlKTtcXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmMtMTczLVxcdGlmICghcmVzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jPTQ2Nj1zdGF0aWMgaW50IF9faW5pdCBwY2lfc2V0dXAoc3RydWN0IHBjaV9zeXNfZGF0YSAqc3lzKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5Mi1cXHQgKi9cXG5hcmNoL2FybS9tYWNoLW9yaW9uNXgvcGNpLmM6NDkzOlxcdHJlcyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCByZXNvdXJjZSk7XFxuYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3BjaS5jLTQ5NC1cXHRpZiAoIXJlcylcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM9Njg5PXN0YXRpYyBzdHJ1Y3QgZXhwYW5zaW9uX2NhcmQgKl9faW5pdCBlY2FyZF9hbGxvY19jYXJkKGludCB0eXBlLCBpbnQgc2xvdClcXG4tLVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmMtNjk0LVxcbmFyY2gvYXJtL21hY2gtcnBjL2VjYXJkLmM6Njk1OlxcdGVjID0ga3phbGxvY19vYmooZWNhcmRfdCk7XFxuYXJjaC9hcm0vbWFjaC1ycGMvZWNhcmQuYy02OTYtXFx0aWYgKCFlYykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYz05Mz1pbnQgX19pbml0IHNhMTF4eF9jbGtfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMDktXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYzoxMTA6XFx0aHcgPSBremFsbG9jX29iaigqaHcpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2Nsb2NrLmMtMTExLVxcdGlmICghaHcpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jLTEzMS1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9jbG9jay5jOjEzMjpcXHRodyA9IGt6YWxsb2Nfb2JqKCpodyk7XFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvY2xvY2suYy0xMzMtXFx0aWYgKCFodylcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYz0zMTc9aW50IF9faW5pdCBzYTExeDBfcmVnaXN0ZXJfZml4ZWRfcmVndWxhdG9yKGludCBuLFxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvZ2VuZXJpYy5jLTMyMy1cXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9nZW5lcmljLmM6MzI0OlxcdGNmZy1cXHUwMDNlaW5pdF9kYXRhID0gaWQgPSBremFsbG9jX29iaigqY2ZnLVxcdTAwM2Vpbml0X2RhdGEpO1xcbmFyY2gvYXJtL21hY2gtc2ExMTAwL2dlbmVyaWMuYy0zMjUtXFx0aWYgKCFjZmctXFx1MDAzZWluaXRfZGF0YSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2ExMTAwL25lcG9uc2V0LmM9MjI1PXN0YXRpYyBpbnQgbmVwb25zZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYy0yNzgtXFxuYXJjaC9hcm0vbWFjaC1zYTExMDAvbmVwb25zZXQuYzoyNzk6XFx0ZCA9IGt6YWxsb2Nfb2JqKCpkKTtcXG5hcmNoL2FybS9tYWNoLXNhMTEwMC9uZXBvbnNldC5jLTI4MC1cXHRpZiAoIWQpIHtcXG4tLVxcbmFyY2gvYXJtL21hY2gtc2htb2JpbGUvcmVndWxhdG9yLXF1aXJrLXJjYXItZ2VuMi5jPTE0MT1zdGF0aWMgaW50IF9faW5pdCByY2FyX2dlbjJfcmVndWxhdG9yX3F1aXJrKHZvaWQpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjYtXFxuYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9yZWd1bGF0b3ItcXVpcmstcmNhci1nZW4yLmM6MTY3OlxcdFxcdHF1aXJrID0ga3phbGxvY19vYmooKnF1aXJrKTtcXG5hcmNoL2FybS9tYWNoLXNobW9iaWxlL3JlZ3VsYXRvci1xdWlyay1yY2FyLWdlbjIuYy0xNjgtXFx0XFx0aWYgKCFxdWlyaykge1xcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmM9MzkzPXN0YXRpYyBpbnQgdmVfc3BjX3BvcHVsYXRlX29wcHModWludDMyX3QgY2x1c3RlcilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5Ny1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzozOTg6XFx0b3BwcyA9IGt6YWxsb2Nfb2Jqcygqb3BwcywgTUFYX09QUFMpO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTM5OS1cXHRpZiAoIW9wcHMpXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz00NDI9aW50IF9faW5pdCB2ZV9zcGNfaW5pdCh2b2lkIF9faW9tZW0gKmJhc2VhZGRyLCB1MzIgYTE1X2NsdXNpZCwgaW50IGlycSlcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0NC1cXHRpbnQgcmV0O1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jOjQ0NTpcXHRpbmZvID0ga3phbGxvY19vYmooKmluZm8pO1xcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTQ0Ni1cXHRpZiAoIWluZm8pXFxuLS1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYz01MjM9c3RhdGljIHN0cnVjdCBjbGsgKnZlX3NwY19jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqY3B1X2RldilcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3NwYy5jLTUyNy1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS9zcGMuYzo1Mjg6XFx0c3BjID0ga3phbGxvY19vYmooKnNwYyk7XFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvc3BjLmMtNTI5LVxcdGlmICghc3BjKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUvdmVyc2F0aWxlLmM9MTIzPXN0YXRpYyB2b2lkIF9faW5pdCB2ZXJzYXRpbGVfZHRfcGNpX2luaXQodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtdmVyc2F0aWxlL3ZlcnNhdGlsZS5jLTE0NC1cXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYzoxNDU6XFx0bmV3cHJvcCA9IGt6YWxsb2Nfb2JqKCpuZXdwcm9wKTtcXG5hcmNoL2FybS9tYWNoLXZlcnNhdGlsZS92ZXJzYXRpbGUuYy0xNDYtXFx0aWYgKCFuZXdwcm9wKVxcbi0tXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jPTEwNT1zdGF0aWMgdm9pZCBfX2luaXQgenlucV9pbml0X21hY2hpbmUodm9pZClcXG4tLVxcbmFyY2gvYXJtL21hY2gtenlucS9jb21tb24uYy0xMTAtXFxuYXJjaC9hcm0vbWFjaC16eW5xL2NvbW1vbi5jOjExMTpcXHRzb2NfZGV2X2F0dHIgPSBremFsbG9jX29iaigqc29jX2Rldl9hdHRyKTtcXG5hcmNoL2FybS9tYWNoLXp5bnEvY29tbW9uLmMtMTEyLVxcdGlmICghc29jX2Rldl9hdHRyKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYz01MDM9c3RhdGljIF9faW5pdCBpbnQgbDJ4MF9wbXVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYy01MDktXFxuYXJjaC9hcm0vbW0vY2FjaGUtbDJ4MC1wbXUuYzo1MTA6XFx0bDJ4MF9wbXUgPSBremFsbG9jX29iaigqbDJ4MF9wbXUpO1xcbmFyY2gvYXJtL21tL2NhY2hlLWwyeDAtcG11LmMtNTExLVxcdGlmICghbDJ4MF9wbXUpIHtcXG4tLVxcbmFyY2gvYXJtL21tL2NhY2hlLXVuaXBoaWVyLmM9MzE1PXN0YXRpYyBpbnQgX19pbml0IF9fdW5pcGhpZXJfY2FjaGVfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYy0zNDQtXFxuYXJjaC9hcm0vbW0vY2FjaGUtdW5pcGhpZXIuYzozNDU6XFx0ZGF0YSA9IGt6YWxsb2Nfb2JqKCpkYXRhKTtcXG5hcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jLTM0Ni1cXHRpZiAoIWRhdGEpXFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTUzMz1zdGF0aWMgdm9pZCAqX19kbWFfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqaGFuZGxlLFxcbi0tXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy01NjAtXFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYzo1NjE6XFx0YnVmID0ga3phbGxvY19vYmooKmJ1ZixcXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jLTU2Mi1cXHRcXHRcXHQgIGdmcCBcXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSk7XFxuLS1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jPTE0ODc9YXJtX2lvbW11X2NyZWF0ZV9tYXBwaW5nKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBiYXNlLCB1NjQgc2l6ZSlcXG4tLVxcbmFyY2gvYXJtL21tL2RtYS1tYXBwaW5nLmMtMTUwNi1cXG5hcmNoL2FybS9tbS9kbWEtbWFwcGluZy5jOjE1MDc6XFx0bWFwcGluZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyk7XFxuYXJjaC9hcm0vbW0vZG1hLW1hcHBpbmcuYy0xNTA4LVxcdGlmICghbWFwcGluZylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYz0zMTY9aW50IF9faW5pdCBhcmNoX3hlbl91bnBvcHVsYXRlZF9pbml0KHN0cnVjdCByZXNvdXJjZSAqKnJlcylcXG4tLVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDMtXFxuYXJjaC9hcm0veGVuL2VubGlnaHRlbi5jOjM0NDpcXHRyZWdzID0ga3phbGxvY19vYmpzKCpyZWdzLCBucl9yZWcpO1xcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYy0zNDUtXFx0aWYgKCFyZWdzKSB7XFxuLS1cXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg3LVxcbmFyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYzozODg6XFx0XFx0dG1wX3JlcyA9IGt6YWxsb2Nfb2JqKCp0bXBfcmVzKTtcXG5hcmNoL2FybS94ZW4vZW5saWdodGVuLmMtMzg5LVxcdFxcdGlmICghdG1wX3Jlcykge1xcbi0tXFxuYXJjaC9hcm0veGVuL3AybS5jPTE1MD1ib29sIF9fc2V0X3BoeXNfdG9fbWFjaGluZV9tdWx0aSh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbmFyY2gvYXJtL3hlbi9wMm0uYy0xNzgtXFxuYXJjaC9hcm0veGVuL3AybS5jOjE3OTpcXHRwMm1fZW50cnkgPSBremFsbG9jX29iaigqcDJtX2VudHJ5LCBHRlBfTk9XQUlUKTtcXG5hcmNoL2FybS94ZW4vcDJtLmMtMTgwLVxcdGlmICghcDJtX2VudHJ5KVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jPTY4PXN0YXRpYyBpbnQgX19pbml0IF9fdmRzb19pbml0KGVudW0gdmRzb19hYmkgYWJpKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby5jLTgzLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYzo4NDpcXHR2ZHNvX3BhZ2VsaXN0ID0ga3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mb1thYmldLnZkc29fcGFnZXMpO1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28uYy04NS1cXHRpZiAodmRzb19wYWdlbGlzdCA9PSBOVUxMKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9NDgwPXN0YXRpYyBpbnQgc2hhcmVfcGZuX2h5cCh1NjQgcGZuKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtNDkyLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjQ5MzpcXHR0aGlzID0ga3phbGxvY19vYmooKnRoaXMpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTQ5NC1cXHRpZiAoIXRoaXMpIHtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jPTk4MT1pbnQga3ZtX2luaXRfc3RhZ2UyX21tdShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczJfbW11ICptbXUsIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDctXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTAwODpcXHRwZ3QgPSBremFsbG9jX29iaigqcGd0LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTEwMDktXFx0aWYgKCFwZ3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xMTgwPWludCB0b3B1cF9oeXBfbWVtY2FjaGUoc3RydWN0IGt2bV9oeXBfbWVtY2FjaGUgKm1jLCB1bnNpZ25lZCBsb25nIG1pbl9wYWdlcylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODUtXFx0aWYgKCFtYy1cXHUwMDNlbWFwcGluZykge1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjExODY6XFx0XFx0bWMtXFx1MDAzZW1hcHBpbmcgPSBremFsbG9jX29iaihzdHJ1Y3QgcGt2bV9tYXBwaW5nLFxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTExODctXFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MjUxMD1pbnQgX19pbml0IGt2bV9tbXVfaW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0yNTQzLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjI1NDQ6XFx0aHlwX3BndGFibGUgPSBremFsbG9jX29iaigqaHlwX3BndGFibGUpO1xcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTI1NDUtXFx0aWYgKCFoeXBfcGd0YWJsZSkge1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTMyNz1pbnQga3ZtX3ZjcHVfYWxsb2NhdGVfdm5jcl90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTMzMi1cXHRpZiAoIXZjcHUtXFx1MDAzZWFyY2gudm5jcl90bGIpIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxMzMzOlxcdFxcdHN0cnVjdCB2bmNyX3RsYiAqdnQgPSBremFsbG9jX29iaigqdmNwdS1cXHUwMDNlYXJjaC52bmNyX3RsYixcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jPTE3OTE9aW50IGt2bV9pbml0X252X3N5c3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTgwMC1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxODAxOlxcdGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MgPSBremFsbG9jX29iaigqKGt2bS1cXHUwMDNlYXJjaC5zeXNyZWdfbWFza3MpLFxcbmFyY2gvYXJtNjQva3ZtL25lc3RlZC5jLTE4MDItXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM9MTE2PXN0YXRpYyBzdHJ1Y3Qga3ZtX3B0ZHVtcF9ndWVzdF9zdGF0ZSAqa3ZtX3B0ZHVtcF9wYXJzZXJfY3JlYXRlKHN0cnVjdCBrdm1fczJfbW11ICptbXUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9wdGR1bXAuYy0xMjEtXFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmM6MTIyOlxcdHN0ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9wdGR1bXBfZ3Vlc3Rfc3RhdGUsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vcHRkdW1wLmMtMTIzLVxcdGlmICghc3QpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaW5pdC5jPTIwNz1zdGF0aWMgaW50IGt2bV92Z2ljX2Rpc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBucl9zcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTMtXFx0ZGlzdC1cXHUwMDNlYWN0aXZlX3NwaXMgPSAoYXRvbWljX3QpQVRPTUlDX0lOSVQoMCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYzoyMTQ6XFx0ZGlzdC1cXHUwMDNlc3BpcyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmdpY19pcnEsIG5yX3NwaXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYy0yMTUtXFx0aWYgKCFkaXN0LVxcdTAwM2VzcGlzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWluaXQuYz0zMTY9c3RhdGljIGludCB2Z2ljX2FsbG9jYXRlX3ByaXZhdGVfaXJxc19sb2NrZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMxLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmM6MzMyOlxcdHZnaWNfY3B1LVxcdTAwM2Vwcml2YXRlX2lycXMgPSBremFsbG9jX29ianMoc3RydWN0IHZnaWNfaXJxLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pbml0LmMtMzMzLVxcdFxcdFxcdFxcdFxcdCAgICAgIG51bV9wcml2YXRlX2lycXMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz0xNDI9aW50IGt2bV92Z2ljX3NldHVwX2RlZmF1bHRfaXJxX3JvdXRpbmcoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjE0OTpcXHRlbnRyaWVzID0ga3phbGxvY19vYmpzKCplbnRyaWVzLCBuciwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xNTAtXFx0aWYgKCFlbnRyaWVzKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTc2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfYWRkX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHUzMiBpbnRpZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04Ny1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6ODg6XFx0aXJxID0ga3phbGxvY19vYmooc3RydWN0IHZnaWNfaXJxLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy04OS1cXHRpZiAoIWlycSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz05NjA9c3RhdGljIGludCB2Z2ljX2l0c19hbGxvY19jb2xsZWN0aW9uKHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTk2NS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6OTY2OlxcdGNvbGxlY3Rpb24gPSBremFsbG9jX29iaigqY29sbGVjdGlvbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtOTY3LVxcdGlmICghY29sbGVjdGlvbilcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz0xMDA0PXN0YXRpYyBzdHJ1Y3QgaXRzX2l0ZSAqdmdpY19pdHNfYWxsb2NfaXRlKHN0cnVjdCBpdHNfZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTAwOS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTAxMDpcXHRpdGUgPSBremFsbG9jX29iaigqaXRlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMDExLVxcdGlmICghaXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTExMzE9c3RhdGljIHN0cnVjdCBpdHNfZGV2aWNlICp2Z2ljX2l0c19hbGxvY19kZXZpY2Uoc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTEzNi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTEzNzpcXHRkZXZpY2UgPSBremFsbG9jX29iaigqZGV2aWNlLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy0xMTM4LVxcdGlmICghZGV2aWNlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTE4NDQ9c3RhdGljIGludCB2Z2ljX2l0c19jcmVhdGUoc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgdTMyIHR5cGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtMTg1MS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6MTg1MjpcXHRpdHMgPSBremFsbG9jX29iaihzdHJ1Y3QgdmdpY19pdHMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTE4NTMtXFx0aWYgKCFpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtbW1pby12My5jPTg4Nj1zdGF0aWMgaW50IHZnaWNfdjNfYWxsb2NfcmVkaXN0X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIHVpbnQzMl90IGluZGV4LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzEtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYzo5MzI6XFx0cmRyZWcgPSBremFsbG9jX29iaigqcmRyZWcsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLW1taW8tdjMuYy05MzMtXFx0aWYgKCFyZHJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jPTI0Mj1pbnQgdmdpY192NF9pbml0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy12NC5jLTI1OC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYzoyNTk6XFx0ZGlzdC1cXHUwMDNlaXRzX3ZtLnZwZXMgPSBremFsbG9jX29ianMoKmRpc3QtXFx1MDAzZWl0c192bS52cGVzLCBucl92Y3B1cyxcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy0yNjAtXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDgwPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAxLVxcdGlmICghaml0X2RhdGEpIHtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMTAyOlxcdFxcdGppdF9kYXRhID0ga3phbGxvY19vYmooKmppdF9kYXRhKTtcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMTAzLVxcdFxcdGlmICghaml0X2RhdGEpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYz0xNz1zdGF0aWMgaW50IF9faW5pdCB2ZHNvX2luaXQodm9pZClcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jLTIyLVxcdHZkc29fcGFnZWxpc3QgPVxcbmFyY2gvY3NreS9rZXJuZWwvdmRzby5jOjIzOlxcdFxcdGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgcGFnZSAqLCB2ZHNvX3BhZ2VzKTtcXG5hcmNoL2Nza3kva2VybmVsL3Zkc28uYy0yNC1cXHRpZiAodW5saWtlbHkodmRzb19wYWdlbGlzdCA9PSBOVUxMKSkge1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX2lvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzItXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3NldHVwLmM6NDczOlxcdHJhbmdlID0ga3phbGxvY19vYmooKnJhbmdlLCBHRlBfQVRPTUlDKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvc2V0dXAuYy00NzQtXFx0aWYgKCFyYW5nZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM9NDU9c3RhdGljIGludCBfX2luaXQgaW5pdF92ZHNvKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU1LVxcdHZkc29faW5mby5jb2RlX21hcHBpbmcucGFnZXMgPVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmM6NTY6XFx0XFx0a3phbGxvY19vYmpzKHN0cnVjdCBwYWdlICosIHZkc29faW5mby5zaXplIC8gUEFHRV9TSVpFKTtcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jLTU3LVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jPTYxND1zdGF0aWMgaW50IGt2bV9laW9pbnRjX2NyZWF0ZShzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCB1MzIgdHlwZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2Vpb2ludGMuYy02MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvZWlvaW50Yy5jOjYyNTpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9laW9pbnRjKTtcXG5hcmNoL2xvb25nYXJjaC9rdm0vaW50Yy9laW9pbnRjLmMtNjI2LVxcdGlmICghcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jPTM5ND1zdGF0aWMgaW50IGt2bV9pcGlfY3JlYXRlKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHUzMiB0eXBlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL2ludGMvaXBpLmMtNDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jOjQxMjpcXHRzID0ga3phbGxvY19vYmooc3RydWN0IGxvb25nYXJjaF9pcGkpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9pbnRjL2lwaS5jLTQxMy1cXHRpZiAoIXMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjUxLjE1NzkwODQyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzcxOTE5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgXCJremFsbG9jX29ialwiIGNhdGNoZXMgbXkgZXllLiBUaGlzIGxvb2tzIGxpa2UgYSBtYWNybyB0aGF0J3MgYmVlbiBpbnRyb2R1Y2VkIGluIGEgcmVjZW50IHVwZGF0ZS4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIGBldiA9IGt6YWxsb2Nfb2JqKCpldik7YCBidXQgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGl0IHRvIGBldiA9IGt6YWxsb2Nfb2JqKCpldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtgLiBTb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQgaGVyZS4gVGhlIG9yaWdpbmFsIGNvZGUgb25seSBwYXNzZXMgKm9uZSogYXJndW1lbnQgdG8gYGt6YWxsb2Nfb2JqYCwgcmlnaHQ/XG5cbkxldCBtZSBqdW1wIG92ZXIgdG8gYG1tL21lbWNvbnRyb2wtdjEuY2AgYW5kIHRha2UgYSBxdWljayBsb29rIGFyb3VuZCBsaW5lIDE3MjQuIFllcCwgdGhhdCdzIHdoZXJlIHRoZSBjaGFuZ2UgaXMuIEkgY2FuIHNlZSB0aGUgZGlmZjpcblxuYGBgZGlmZlxuLVx0ZXYgPSBremFsbG9jX29iaigqZXYpO1xuK1x0ZXYgPSBremFsbG9jX29iaigqZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG5gYGBcblxuU3RyYW5nZS4gSSBjb3VsZCBzd2VhciBga3phbGxvY19vYmpgICpzaG91bGRuJ3QqIGhhdmUgYmVlbiB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQgb3JpZ2luYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBga3phbGxvY19vYmpgIG1hY3JvLCBhbmQgd2hhdCBpdCdzICpzdXBwb3NlZCogdG8gYmUgZG9pbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcywgbGlrZSBgaW5jbHVkZS9saW51eC9zbGFiLmhgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB0byBzZWUgd2hhdCBga3phbGxvY19vYmpgIGlzIGRlZmluZWQgYXMuIEkgYmV0IHRoZXJlJ3MgYmVlbiBhIHN1YnRsZSBjaGFuZ2UgdG8gdGhlIG1hY3JvJ3Mgc2lnbmF0dXJlIHNvbWV3aGVyZSBhbG9uZyB0aGUgbGluZSwgYW5kIHRoaXMgcGF0Y2ggaXMgY29ycmVjdGluZyBhIHBvdGVudGlhbCBidWcuIEdvdHRhIHRyYWNlIHRoaXMgYmFjayB0byB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0Mzo1Ni4yMzUxMDMyMzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODYyMDExMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmaW5lIGt6YWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NsYWIuaD0xMDUxPXZvaWQgKmttYWxsb2Nfbm9sb2NrKHNpemVfdCBzaXplLCBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzItLyogQWxsIGt6YWxsb2MgYWxpYXNlcyBmb3Iga21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEzMzojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzQtXFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzU6I2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtXFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMjEwLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oOjIxMTojZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oLTIxMi1cXHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDExOjQzOjU4LjkyMTMxNDMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM1OTkwMDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZG9pbmcgc29tZXRoaW5nIHdpdGggYGt6YWxsb2Nfb2JqYCBhbmQgYEdGUGAgZmxhZ3MuIFNwZWNpZmljYWxseSwgaXQncyBjaGFuZ2luZyB0aGUgYWxsb2NhdGlvbiBmcm9tIHVzaW5nIHRoZSBkZWZhdWx0IGZsYWdzIChsaWtlbHkgYEdGUF9LRVJORUxgKSB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhpcyBtZWFucyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlIGNoYXJnZWQgdG8gdGhlIG1lbW9yeSBjZ3JvdXAgKG1lbWNnKS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBqdXN0IG1vZGlmaWVzIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBkb2Vzbid0IGNoYW5nZSB0aGUgcHJvZ3JhbSdzIGFjdHVhbCBjb250cm9sIGZsb3cuXG5cbk5vdywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gVHlwaWNhbGx5LCBJIHdvdWxkbid0IGJvdGhlciBmdXp6aW5nIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZXMgdW5sZXNzIHRoZXkgaW1wYWN0IHRoZSBhY2NvdW50aW5nIGxvZ2ljIGl0c2VsZi4gSGVyZSwgaXQncyBhIHNpbXBsZSBmbGFnIGFkZGl0aW9uIHRvIGBremFsbG9jX29iamAsIHNvIEknbSBsZWFuaW5nIHRvd2FyZHMgbm8uIEhvd2V2ZXIsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuYHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnRgIGlzIGNhbGxlZCB3aGVuIGEgdXNlciB3cml0ZXMgdG8gYGNncm91cC5ldmVudF9jb250cm9sYCBpbiBhIGNncm91cCB2MSBtZW1jZywgc28gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBlZmZlY3RzLiBHb2luZyBiYWNrIHRvIHRoZSBwcm9tcHQsIGl0IGhhcyBzb21lIHNwZWNpZmljIGNyaXRlcmlhLiBUaGlzIGNoYW5nZSBkb2Vzbid0IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBleGNlcHQgZm9yIHRoZSBhY2NvdW50aW5nIHNpZGUgZWZmZWN0LiBUaGUgcGF0Y2ggb25seSBjaGFuZ2VzIGBremFsbG9jX29iaigqZXYpYCB0byBga3phbGxvY19vYmooKmV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4gVGhpcyBpc24ndCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgYSBjaGFuZ2UgY291bGQgbGVhZCB0byBhIG1lbWNnIE9PTS4gQnV0IGV2ZW4gaW4gdGhhdCBjYXNlLCB0aGUgYWxsb2NhdGlvbiB3b3VsZCBsaWtlbHkgZmFpbCwgd2l0aG91dCBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gYSBmYWlsZWQgYWxsb2NhdGlvbi5cblxuUmV2aXNpdGluZyB0aGUgcHJvbXB0J3MgY3JpdGVyaWEsIFwiQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93XCIsIGFuZCBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpcyBhIG1hY3JvLiBJdCdzIGp1c3QgYSBjaGFuZ2UgdG8gbWVtb3J5IGFjY291bnRpbmcuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIGlzIGEgdHJpdmlhbCBjaGFuZ2UgdG8gYWxsb2NhdGlvbiBmbGFncyBmb3IgbWVtb3J5IGFjY291bnRpbmcsIHNvIGl0IGRvZXMgbm90IGFsdGVyIGV4ZWN1dGlvbiBmbG93IGluIGEgbWVhbmluZ2Z1bCB3YXkgdG8gd2FycmFudCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI3NywiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMTo0NDowOC43NTczMDY2MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzaW1wbHkgYWRkcyB0aGUgR0ZQX0tFUk5FTF9BQ0NPVU5UIGZsYWcgdG8gYSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB2bXByZXNzdXJlX3JlZ2lzdGVyX2V2ZW50KCkuIFRoaXMgaXMgYSBtaW5vciBtZW1vcnkgYWNjb3VudGluZyBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIHRoZSBHRlBfS0VSTkVMX0FDQ09VTlQgZmxhZyB0byBhIG1lbW9yeSBhbGxvY2F0aW9uIGluIHZtcHJlc3N1cmVfcmVnaXN0ZXJfZXZlbnQoKS4gVGhpcyBpcyBhIG1pbm9yIG1lbW9yeSBhY2NvdW50aW5nIGNoYW5nZSB0aGF0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowksjr8[1] Phase: Running StartedAt: 2026-07-13 11:44:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowksjr8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 11:44:20 +0000 UTC FinishedAt: 2026-07-13 11:44:27 +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,}