Name: series-workflow5czn2 Phase: Failed StartedAt: 2026-07-03 00:46:08 +0000 UTC FinishedAt: 2026-07-03 01:07:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5czn2[0] Phase: Succeeded StartedAt: 2026-07-03 00:46:08 +0000 UTC FinishedAt: 2026-07-03 01:06:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5czn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 00:46:08 +0000 UTC FinishedAt: 2026-07-03 01:06:07 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2ZjOWM3MTZkODhmZWQ3NDk3YzY3MWNlZDRlZDJmNzQxMDc3NGI2YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtcmVtYXAuYyBiL21tL21lbXJlbWFwLmNcbmluZGV4IDgxNzY2ZDgyMjQwMDk2Li5hY2NiYTIzYWVmMjhjYyAxMDA2NDRcbi0tLSBhL21tL21lbXJlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbXJlbWFwLmNcbkBAIC00MjUsNiAmIzQzOzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0bWVtX2Nncm91cF91bmNoYXJnZShmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xuJiM0MztcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRfX0NsZWFyUGFnZUFub25FeGNsdXNpdmUoZm9saW9fcGFnZShmb2xpbywgaSkpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLjlmZDUwZWEyNWQyZDQ2IDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlLmNcbkBAIC01OTAsNyAmIzQzOzU5MCw4IEBAIHN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdC8qIE5vIHR1cm5pbmcgYmFjayBmcm9tIGhlcmUgKi9cbiBcdFx0bmV3Zm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdFx0bmV3Zm9saW8tXHUwMDNlbWFwcGluZyA9IGZvbGlvLVx1MDAzZW1hcHBpbmc7XG4tXHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSlcbiYjNDM7XHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbiBcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiBcdFx0XHRfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTtcbkBAIC02MjMsNyAmIzQzOzYyNCw4IEBAIHN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHQgKi9cbiBcdG5ld2ZvbGlvLVx1MDAzZWluZGV4ID0gZm9saW8tXHUwMDNlaW5kZXg7XG4gXHRuZXdmb2xpby1cdTAwM2VtYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbi1cdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSlcbiYjNDM7XHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxuIFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXG4gXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ZjOWM3MTZkODhmZWQ3NDk3YzY3MWNlZDRlZDJmNzQxMDc3NGI2YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1yZW1hcC5jIGIvbW0vbWVtcmVtYXAuYwppbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0Ci0tLSBhL21tL21lbXJlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtcmVtYXAuYwpAQCAtNDI1LDYgJiM0Mzs0MjUsNyBAQCB2b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbykKIAltZW1fY2dyb3VwX3VuY2hhcmdlKGZvbGlvKTsKIAogCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7CiYjNDM7CQltb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IG5yOyBpJiM0MzsmIzQzOykKIAkJCV9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShmb2xpb19wYWdlKGZvbGlvLCBpKSk7CiAJfQpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IGQ5YjIzOTA5ZDcxNmM2Li45ZmQ1MGVhMjVkMmQ0NiAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGUuYwpAQCAtNTkwLDcgJiM0Mzs1OTAsOCBAQCBzdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkvKiBObyB0dXJuaW5nIGJhY2sgZnJvbSBoZXJlICovCiAJCW5ld2ZvbGlvLSZndDtpbmRleCA9IGZvbGlvLSZndDtpbmRleDsKIAkJbmV3Zm9saW8tJmd0O21hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKLQkJaWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSkKJiM0MzsJCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pICZhbXA7JmFtcDsgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgJmFtcDsmYW1wOwomIzQzOwkJICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKQogCQkJbW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTsKIAkJaWYgKGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykpCiAJCQlfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTsKQEAgLTYyMyw3ICYjNDM7NjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkgKi8KIAluZXdmb2xpby0mZ3Q7aW5kZXggPSBmb2xpby0mZ3Q7aW5kZXg7CiAJbmV3Zm9saW8tJmd0O21hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKLQlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKQomIzQzOwlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pICZhbXA7JmFtcDsKJiM0MzsJICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKQogCQltb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpOwogCWZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqLwogCWlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtVEhQIEFub24gUGFnZSBTdGF0aXN0aWNzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbW0vbWVtcmVtYXAuY2AgYW5kIGBtbS9taWdyYXRlLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGFib3V0IG1USFAgKG11bHRpLXNpemUgVEhQKSBhbm9uIHBhZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZml4aW5nIGEgc3RhdGlzdGljcyBpc3N1ZS4gTGV0IG1lIHNlZS4uLgoKSW4gYGZyZWVfem9uZV9kZXZpY2VfZm9saW9gIHdpdGhpbiBgbW0vbWVtcmVtYXAuY2AsIHRoZSBwYXRjaCBhZGRzIGBtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtgLiBBbHJpZ2h0LCBzbyB3aGVuIGZyZWVpbmcgYSB6b25lIGRldmljZSBmb2xpbywgd2UmIzM5O3JlIGRlY3JlbWVudGluZyB0aGUgbVRIUCBhbm9uIHBhZ2UgY291bnQuIFRoYXQgbWFrZXMgc2Vuc2UsIHdlJiMzOTtyZSBkZWFsbG9jYXRpbmcgdGhlIHBhZ2UuCgpOb3csIGluIGBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZ2AgKHdpdGhpbiBgbW0vbWlncmF0ZS5jYCksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCB0byBhIGNvbmRpdGlvbmFsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29uZGl0aW9uYWwgY2hlY2tlZCBpZiBhIGZvbGlvIHdhcyBhbm9ueW1vdXMgYW5kIGxhcmdlIChpbXBseWluZyBtVEhQKS4gVGhlIGFkZGVkIGNvbmRpdGlvbiwgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCBzcGVjaWZpY2FsbHkgKmV4Y2x1ZGVzKiBodWdldGxiIHBhZ2VzIGZyb20gYmVpbmcgY291bnRlZCBhcyBtVEhQLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBodWdldGxiIHBhZ2VzIGFyZSB0aGVpciBvd24gc3BlY2lhbCBiZWFzdCwgYW5kIHdlIGRvbiYjMzk7dCB3YW50IHRoZW0gbWVzc2luZyB1cCB0aGUgbVRIUCBzdGF0cy4gV2UgYXJlIGluY3JlbWVudGluZyBgTVRIUF9TVEFUX05SX0FOT05gIHdoZW4gbWlncmF0aW5nIHRoZSBmb2xpby4KClNvLCB0aGlzIHBhdGNoIGlzIGFib3V0IGNvcnJlY3RpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIG1USFAgYW5vbiBwYWdlcy4gQm90aCB3aGVuIGRlYWxsb2NhdGluZyBhbmQgbWlncmF0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHRoYXQgdGhlIG1USFAgYW5vbiBzdGF0aXN0aWNzIHdlcmUgYmVpbmcgaW5mbGF0ZWQsIG9yIGRlZmxhdGVkLCBkdWUgdG8gZWl0aGVyIGh1Z2V0bGIgcGFnZXMgYmVpbmcgaW5jb3JyZWN0bHkgY291bnRlZCwgb3IgcGFnZXMgd2VyZSBiZWluZyBtaXNzY291bnRlZCBiZWNhdXNlIHRoZXkgd2VyZSBub3QgZGVhbGxvY2F0ZWQgY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhdGlzdGljYWwgY29ycmVjdGlvbiwgYnV0IEkgd2lsbCBuZWVkIHRvIHZlcmlmeSB0aGUgY29kZSBmb3IgYG1vZF9tdGhwX3N0YXRgIHRvIGVuc3VyZSB0aGlzIGlzIHRydWx5IHdoYXQgaXMgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZF9tdGhwX3N0YXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE1OS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjE2MDpzdGF0aWMgaW5saW5lIHZvaWQgbW9kX210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSwgaW50IGRlbHRhKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0xNjg9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2OS17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzA6XHRtb2RfbXRocF9zdGF0KG9yZGVyLCBpdGVtLCAxKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3MS19XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3NS17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNjc3PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNS1cdFx0aWYgKGlzX2Fub24pIHtcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNjpcdFx0XHRtb2RfbXRocF9zdGF0KG9sZF9vcmRlciwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcdFx0XHRtb2RfbXRocF9zdGF0KHNwbGl0X29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgbnJfbmV3X2ZvbGlvcyk7XG5tbS9odWdlX21lbW9yeS5jLTM3MjgtXHRcdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTM4MDQ9c3RhdGljIGludCBfX2ZvbGlvX2ZyZWV6ZV9hbmRfc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM4NDItXHRcdFx0XHRmb2xpb19jbGVhcl9wYXJ0aWFsbHlfbWFwcGVkKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MzpcdFx0XHRcdG1vZF9tdGhwX3N0YXQob2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zODQ0LVx0XHRcdFx0XHRNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00MzI1PWJvb2wgX19mb2xpb191bnF1ZXVlX2RlZmVycmVkX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MzQxLVx0XHRcdGZvbGlvX2NsZWFyX3BhcnRpYWxseV9tYXBwZWQoZm9saW8pO1xubW0vaHVnZV9tZW1vcnkuYzo0MzQyOlx0XHRcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxubW0vaHVnZV9tZW1vcnkuYy00MzQzLVx0XHRcdFx0ICAgICAgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDM1ND12b2lkIGRlZmVycmVkX3NwbGl0X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcGFydGlhbGx5X21hcHBlZClcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXHRcdFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1NQTElUX0RFRkVSUkVEKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgMSk7XG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXHRcdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0Mzk9c3RhdGljIGVudW0gbHJ1X3N0YXR1cyBkZWZlcnJlZF9zcGxpdF9pc29sYXRlKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00NDU3LVx0XHRmb2xpb19jbGVhcl9wYXJ0aWFsbHlfbWFwcGVkKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQ1ODpcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksXG5tbS9odWdlX21lbW9yeS5jLTQ0NTktXHRcdFx0ICAgICAgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xuLS1cbm1tL21lbXJlbWFwLmM9NDE2PXZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL21lbXJlbWFwLmMtNDI3LVx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbm1tL21lbXJlbWFwLmM6NDI4Olx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL21lbXJlbWFwLmMtNDI5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucjsgaSYjNDM7JiM0MzspXG4tLVxubW0vbWlncmF0ZS5jPTU3MT1zdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbm1tL21pZ3JhdGUuYy01OTQtXHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbm1tL21pZ3JhdGUuYzo1OTU6XHRcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcbm1tL21pZ3JhdGUuYy01OTYtXHRcdGlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKVxuLS1cbm1tL21pZ3JhdGUuYy02MjgtXHQgICAgIWZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG5tbS9taWdyYXRlLmM6NjI5Olx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xubW0vbWlncmF0ZS5jLTYzMC1cdGZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqL1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM5MC1cdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XG5tbS9wYWdlX2FsbG9jLmM6MTM5MTpcdFx0bW9kX210aHBfc3RhdChvcmRlciwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL3BhZ2VfYWxsb2MuYy0xMzkyLVx0XHRmb2xpby1cdTAwM2VtYXBwaW5nID0gTlVMTDtcbi0tXG5tbS9ybWFwLmM9MTY0Mj12b2lkIGZvbGlvX2FkZF9uZXdfYW5vbl9ybWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL3JtYXAuYy0xNjk2LVx0X19mb2xpb19tb2Rfc3RhdChmb2xpbywgbnIsIG5yX3BtZG1hcHBlZCk7XG5tbS9ybWFwLmM6MTY5NzpcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgMSk7XG5tbS9ybWFwLmMtMTY5OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGlzdGljYWwgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIHJlcG9ydCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgKm9ubHkqIHRvdWNoaW5nIHN0YXRpc3RpY3MsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGBtb2RfbXRocF9zdGF0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHRob3VnaHQgaXMgaW1tZWRpYXRlbHkgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiBgbW9kX210aHBfc3RhdGAuIElmIGl0JiMzOTtzIGEgcGVyLUNQVSBzdGF0cyB1cGRhdGUsIHRoYXQgZGljdGF0ZXMgaG93IEkgYXBwcm9hY2ggdGhlIGNvZGUgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciBkYXRhIHN0cnVjdHVyZSBhbGlnbm1lbnQgYW5kIG1lbW9yeSBjb250ZW50aW9uIGltcGxpY2F0aW9ucywgZXNwZWNpYWxseSBpZiB0aGVzZSB1cGRhdGVzIGFyZSBmcmVxdWVudGx5IGFjY2Vzc2VkIG9yIGFyZSBwYXJ0IG9mIGEgY3JpdGljYWwgcGF0aC4gR2l2ZW4gdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBzdGF0cywgSSBzaG91bGQgYmUgbG9va2luZyBhdCBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyB1c2VkIHRvIHByb3RlY3QgdGhlIGRhdGEsIGlmIGFueSwgYW5kIGFueSBwb3RlbnRpYWwgZm9yIGNhY2hlIGxpbmUgYm91bmNpbmcuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBnbyBhbmQgbG9vayB0byB0aGUgaW5jbHVkZSBmaWxlcyB0byBpbnZlc3RpZ2F0ZSBgbW9kX210aHBfc3RhdGAuIFNwZWNpZmljYWxseSwgYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYCBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgcGxhY2UgZm9yIHRoZSBkZWZpbml0aW9uLCBzbyBJJiMzOTtsbCBnbyBjaGVjayB0aGF0IGFuZCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE1OD1ERUNMQVJFX1BFUl9DUFUoc3RydWN0IG10aHBfc3RhdCwgbXRocF9zdGF0cyk7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNjA6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2MS17XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTY4PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0pXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gSHVnZSBQYWdlIE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAgcmlnaHQgYXJvdW5kIGxpbmUgMTYwLiBUaGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgcGVyaGFwcyBrZXkgZGVmaW5pdGlvbnMgYXJvdW5kIHRoZSBtYW5hZ2VtZW50IG9mIEh1Z2UgUGFnZXMgYXJlIGxvY2F0ZWQuIFRoaXMgbGlrZWx5IHRvdWNoZXMgb24gaG93IHRoZSBrZXJuZWwgdHJhY2tzIGFuZCBkZXNjcmliZXMgdGhlc2UgbGFyZ2UgbWVtb3J5IHJlZ2lvbnMuIEkmIzM5O20gaG9waW5nIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZywgb3IgcG9zc2libHkgaG9uZSBpbiBvbiBhIHNwZWNpZmljIHN0cnVjdHVyZSBvciBkZWZpbml0aW9uIEkmIzM5O20gbG9va2luZyBmb3IgLSBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTlVNQSBwb2xpY2llcyBmb3IgSHVnZSBQYWdlcywgdGhlIGJvb2trZWVwaW5nIG9mIGZyZWUgaHVnZSBwYWdlcywgb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzaGFyZWQgbWFwcGluZ3MuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBvciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0X19NVEhQX1NUQVRfQ09VTlRcbiAxNTE6XHR9O1xuIDE1MjpcdFxuIDE1MzpcdCNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NZU0ZTKVxuIDE1NDpcdHN0cnVjdCBtdGhwX3N0YXQge1xuIDE1NTpcdFx0dW5zaWduZWQgbG9uZyBzdGF0c1tpbG9nMihNQVhfUFRSU19QRVJfUFRFKSAmIzQzOyAxXVtfX01USFBfU1RBVF9DT1VOVF07XG4gMTU2Olx0fTtcbiAxNTc6XHRcbiAxNTg6XHRERUNMQVJFX1BFUl9DUFUoc3RydWN0IG10aHBfc3RhdCwgbXRocF9zdGF0cyk7XG4gMTU5Olx0XG4gMTYwOlx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbiAxNjE6XHR7XG4gMTYyOlx0XHRpZiAob3JkZXIgXHUwMDNjPSAwIHx8IG9yZGVyIFx1MDAzZSBQTURfT1JERVIpXG4gMTYzOlx0XHRcdHJldHVybjtcbiAxNjQ6XHRcbiAxNjU6XHRcdHRoaXNfY3B1X2FkZChtdGhwX3N0YXRzLnN0YXRzW29yZGVyXVtpdGVtXSwgZGVsdGEpO1xuIDE2NjpcdH1cbiAxNjc6XHRcbiAxNjg6XHRzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxuIDE2OTpcdHtcbiAxNzA6XHRcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xuIDE3MTpcdH1cbiAxNzI6XHRcbiAxNzM6XHQjZWxzZVxuIDE3NDpcdHN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXG4gMTc1Olx0e1xuIDE3NjpcdH1cbiAxNzc6XHRcbiAxNzg6XHRzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxuIDE3OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA1CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tc3RhcnRlciBmb3IgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiwgYG1vZF9tdGhwX3N0YXRgLCBpcyB0aGUgZ2l2ZWF3YXkuIEl0JiMzOTtzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gbW9kaWZ5IHBlci1DUFUgY291bnRlcnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHN0YXRpc3RpY2FsIHVwZGF0ZTsgaXQmIzM5O3Mgbm90IGNoYW5naW5nIHRoZSBmdW5kYW1lbnRhbCBsb2dpYyBvciBjb250cm9sIGZsb3cuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGJvb2trZWVwaW5nLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbXByZXNzaW9uLiBUaGUgZmlyc3QgYWRkaXRpb24sIGluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCwgZGVjcmVtZW50cyB0aGUgYE1USFBfU1RBVF9OUl9BTk9OYCBjb3VudGVyLiBUaGUgb3RoZXIgdHdvLCB3aXRoaW4gYF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nYCwgKmNvbmRpdGlvbmFsbHkqIGluY3JlbWVudCB0aGUgc2FtZSBjb3VudGVyLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKWAuIFRoaXMgZW5zdXJlcyB3ZSBkb24mIzM5O3QgY291bnQgaHVnZSBwYWdlIHN0YXRzLgoKVGhlcmVmb3JlLCBzaW5jZSB0aGVzZSBjaGFuZ2VzIG9ubHkgcGVydGFpbiB0byBzdGF0aXN0aWNzIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHRvIGZ1enppbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTm8gZnVydGhlciBhbmFseXNpcyBpcyByZXF1aXJlZDsgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc3RhdGlzdGljYWwgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjEzLjk2Mzk4ODIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjM0MTkyNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MTMuOTYzOTk0Nzk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgwNjQxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZmM5YzcxNmQ4OGZlZDc0OTdjNjcxY2VkNGVkMmY3NDEwNzc0YjZhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWVtcmVtYXAuYyBiL21tL21lbXJlbWFwLmNcXG5pbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtcmVtYXAuY1xcbisrKyBiL21tL21lbXJlbWFwLmNcXG5AQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRtZW1fY2dyb3VwX3VuY2hhcmdlKGZvbGlvKTtcXG4gXFxuIFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XFxuK1xcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnI7IGkrKylcXG4gXFx0XFx0XFx0X19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKGZvbGlvX3BhZ2UoZm9saW8sIGkpKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcXG5pbmRleCBkOWIyMzkwOWQ3MTZjNi4uOWZkNTBlYTI1ZDJkNDYgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZS5jXFxuKysrIGIvbW0vbWlncmF0ZS5jXFxuQEAgLTU5MCw3ICs1OTAsOCBAQCBzdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRcXHQvKiBObyB0dXJuaW5nIGJhY2sgZnJvbSBoZXJlICovXFxuIFxcdFxcdG5ld2ZvbGlvLVxcdTAwM2VpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0XFx0bmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgPSBmb2xpby1cXHUwMDNlbWFwcGluZztcXG4tXFx0XFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykpXFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG4gXFx0XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG4gXFx0XFx0aWYgKGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykpXFxuIFxcdFxcdFxcdF9fZm9saW9fc2V0X3N3YXBiYWNrZWQobmV3Zm9saW8pO1xcbkBAIC02MjMsNyArNjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0ICovXFxuIFxcdG5ld2ZvbGlvLVxcdTAwM2VpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0bmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgPSBmb2xpby1cXHUwMDNlbWFwcGluZztcXG4tXFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykpXFxuK1xcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG4gXFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG4gXFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXFxuIFxcdGlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMTowNToxNC40NjMzOTY0ODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTM0Nzc4MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZmM5YzcxNmQ4OGZlZDc0OTdjNjcxY2VkNGVkMmY3NDEwNzc0YjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwMTowNToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbXJlbWFwLmMgYi9tbS9tZW1yZW1hcC5jXG5pbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0XG4tLS0gYS9tbS9tZW1yZW1hcC5jXG4rKysgYi9tbS9tZW1yZW1hcC5jXG5AQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0bWVtX2Nncm91cF91bmNoYXJnZShmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xuK1x0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnI7IGkrKylcbiBcdFx0XHRfX0NsZWFyUGFnZUFub25FeGNsdXNpdmUoZm9saW9fcGFnZShmb2xpbywgaSkpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLjlmZDUwZWEyNWQyZDQ2IDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4rKysgYi9tbS9taWdyYXRlLmNcbkBAIC01OTAsNyArNTkwLDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0LyogTm8gdHVybmluZyBiYWNrIGZyb20gaGVyZSAqL1xuIFx0XHRuZXdmb2xpby1cdTAwM2VpbmRleCA9IGZvbGlvLVx1MDAzZWluZGV4O1xuIFx0XHRuZXdmb2xpby1cdTAwM2VtYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbi1cdFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0XHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbiBcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiBcdFx0XHRfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTtcbkBAIC02MjMsNyArNjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdCAqL1xuIFx0bmV3Zm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuLVx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxuIFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXG4gXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjE0LjQ2MzQwMTAzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MzU5MTU0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIG1USFAgQW5vbiBQYWdlIFN0YXRpc3RpY3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbW0vbWVtcmVtYXAuY2AgYW5kIGBtbS9taWdyYXRlLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGFib3V0IG1USFAgKG11bHRpLXNpemUgVEhQKSBhbm9uIHBhZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB3ZSdyZSBmaXhpbmcgYSBzdGF0aXN0aWNzIGlzc3VlLiBMZXQgbWUgc2VlLi4uXG5cbkluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCB3aXRoaW4gYG1tL21lbXJlbWFwLmNgLCB0aGUgcGF0Y2ggYWRkcyBgbW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7YC4gQWxyaWdodCwgc28gd2hlbiBmcmVlaW5nIGEgem9uZSBkZXZpY2UgZm9saW8sIHdlJ3JlIGRlY3JlbWVudGluZyB0aGUgbVRIUCBhbm9uIHBhZ2UgY291bnQuIFRoYXQgbWFrZXMgc2Vuc2UsIHdlJ3JlIGRlYWxsb2NhdGluZyB0aGUgcGFnZS5cblxuTm93LCBpbiBgX19mb2xpb19taWdyYXRlX21hcHBpbmdgICh3aXRoaW4gYG1tL21pZ3JhdGUuY2ApLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCB0byBhIGNvbmRpdGlvbmFsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29uZGl0aW9uYWwgY2hlY2tlZCBpZiBhIGZvbGlvIHdhcyBhbm9ueW1vdXMgYW5kIGxhcmdlIChpbXBseWluZyBtVEhQKS4gVGhlIGFkZGVkIGNvbmRpdGlvbiwgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCBzcGVjaWZpY2FsbHkgKmV4Y2x1ZGVzKiBodWdldGxiIHBhZ2VzIGZyb20gYmVpbmcgY291bnRlZCBhcyBtVEhQLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBodWdldGxiIHBhZ2VzIGFyZSB0aGVpciBvd24gc3BlY2lhbCBiZWFzdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhlbSBtZXNzaW5nIHVwIHRoZSBtVEhQIHN0YXRzLiBXZSBhcmUgaW5jcmVtZW50aW5nIGBNVEhQX1NUQVRfTlJfQU5PTmAgd2hlbiBtaWdyYXRpbmcgdGhlIGZvbGlvLlxuXG5TbywgdGhpcyBwYXRjaCBpcyBhYm91dCBjb3JyZWN0aW5nIHRoZSBzdGF0aXN0aWNzIGZvciBtVEhQIGFub24gcGFnZXMuIEJvdGggd2hlbiBkZWFsbG9jYXRpbmcgYW5kIG1pZ3JhdGluZy4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSB0aGF0IHRoZSBtVEhQIGFub24gc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluZmxhdGVkLCBvciBkZWZsYXRlZCwgZHVlIHRvIGVpdGhlciBodWdldGxiIHBhZ2VzIGJlaW5nIGluY29ycmVjdGx5IGNvdW50ZWQsIG9yIHBhZ2VzIHdlcmUgYmVpbmcgbWlzc2NvdW50ZWQgYmVjYXVzZSB0aGV5IHdlcmUgbm90IGRlYWxsb2NhdGVkIGNvcnJlY3RseS4gVGhpcyBpcyBqdXN0IHN0YXRpc3RpY2FsIGNvcnJlY3Rpb24sIGJ1dCBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhlIGNvZGUgZm9yIGBtb2RfbXRocF9zdGF0YCB0byBlbnN1cmUgdGhpcyBpcyB0cnVseSB3aGF0IGlzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjIyLjA5OTMxODM4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDU0NzAyNjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZF9tdGhwX3N0YXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTYwOnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE2OD1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2OS17XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTcwOlxcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3MS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNzMtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNzUte1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNjc3PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNzI1LVxcdFxcdGlmIChpc19hbm9uKSB7XFxubW0vaHVnZV9tZW1vcnkuYzozNzI2OlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQob2xkX29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcXHRcXHRcXHRtb2RfbXRocF9zdGF0KHNwbGl0X29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgbnJfbmV3X2ZvbGlvcyk7XFxubW0vaHVnZV9tZW1vcnkuYy0zNzI4LVxcdFxcdH1cXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzgwND1zdGF0aWMgaW50IF9fZm9saW9fZnJlZXplX2FuZF9zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zODQyLVxcdFxcdFxcdFxcdGZvbGlvX2NsZWFyX3BhcnRpYWxseV9tYXBwZWQoZm9saW8pO1xcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MzpcXHRcXHRcXHRcXHRtb2RfbXRocF9zdGF0KG9sZF9vcmRlcixcXG5tbS9odWdlX21lbW9yeS5jLTM4NDQtXFx0XFx0XFx0XFx0XFx0TVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00MzI1PWJvb2wgX19mb2xpb191bnF1ZXVlX2RlZmVycmVkX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzNDEtXFx0XFx0XFx0Zm9saW9fY2xlYXJfcGFydGlhbGx5X21hcHBlZChmb2xpbyk7XFxubW0vaHVnZV9tZW1vcnkuYzo0MzQyOlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDM0My1cXHRcXHRcXHRcXHQgICAgICBNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzNTQ9dm9pZCBkZWZlcnJlZF9zcGxpdF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHBhcnRpYWxseV9tYXBwZWQpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXFx0XFx0XFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1NQTElUX0RFRkVSUkVEKTtcXG5tbS9odWdlX21lbW9yeS5jOjQzOTI6XFx0XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OX1BBUlRJQUxMWV9NQVBQRUQsIDEpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDM5My1cXHRcXHR9XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ0Mzk9c3RhdGljIGVudW0gbHJ1X3N0YXR1cyBkZWZlcnJlZF9zcGxpdF9pc29sYXRlKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ0NTctXFx0XFx0Zm9saW9fY2xlYXJfcGFydGlhbGx5X21hcHBlZChmb2xpbyk7XFxubW0vaHVnZV9tZW1vcnkuYzo0NDU4OlxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1OS1cXHRcXHRcXHQgICAgICBNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XFxuLS1cXG5tbS9tZW1yZW1hcC5jPTQxNj12b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21lbXJlbWFwLmMtNDI3LVxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XFxubW0vbWVtcmVtYXAuYzo0Mjg6XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7XFxubW0vbWVtcmVtYXAuYy00MjktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yOyBpKyspXFxuLS1cXG5tbS9taWdyYXRlLmM9NTcxPXN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9taWdyYXRlLmMtNTk0LVxcdFxcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG5tbS9taWdyYXRlLmM6NTk1OlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgMSk7XFxubW0vbWlncmF0ZS5jLTU5Ni1cXHRcXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcXG4tLVxcbm1tL21pZ3JhdGUuYy02MjgtXFx0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxcbm1tL21pZ3JhdGUuYzo2Mjk6XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG5tbS9taWdyYXRlLmMtNjMwLVxcdGZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEzOTAtXFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcXG5tbS9wYWdlX2FsbG9jLmM6MTM5MTpcXHRcXHRtb2RfbXRocF9zdGF0KG9yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzkyLVxcdFxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gTlVMTDtcXG4tLVxcbm1tL3JtYXAuYz0xNjQyPXZvaWQgZm9saW9fYWRkX25ld19hbm9uX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9ybWFwLmMtMTY5Ni1cXHRfX2ZvbGlvX21vZF9zdGF0KGZvbGlvLCBuciwgbnJfcG1kbWFwcGVkKTtcXG5tbS9ybWFwLmM6MTY5NzpcXHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xcbm1tL3JtYXAuYy0xNjk4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MjUuNTU0MDI3NTU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzMTExNjAxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGlzdGljYWwgTW9kaWZpY2F0aW9uKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcmVwb3J0IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyAqb25seSogdG91Y2hpbmcgc3RhdGlzdGljcywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYG1vZF9tdGhwX3N0YXRgLiBUaGF0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludC4gTXkgbmV4dCB0aG91Z2h0IGlzIGltbWVkaWF0ZWx5IHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgYG1vZF9tdGhwX3N0YXRgLiBJZiBpdCdzIGEgcGVyLUNQVSBzdGF0cyB1cGRhdGUsIHRoYXQgZGljdGF0ZXMgaG93IEkgYXBwcm9hY2ggdGhlIGNvZGUgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknZCBuZWVkIHRvIGNvbnNpZGVyIGRhdGEgc3RydWN0dXJlIGFsaWdubWVudCBhbmQgbWVtb3J5IGNvbnRlbnRpb24gaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXNlIHVwZGF0ZXMgYXJlIGZyZXF1ZW50bHkgYWNjZXNzZWQgb3IgYXJlIHBhcnQgb2YgYSBjcml0aWNhbCBwYXRoLiBHaXZlbiB0aGF0IEknbSBkZWFsaW5nIHdpdGggc3RhdHMsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgdXNlZCB0byBwcm90ZWN0IHRoZSBkYXRhLCBpZiBhbnksIGFuZCBhbnkgcG90ZW50aWFsIGZvciBjYWNoZSBsaW5lIGJvdW5jaW5nLiBHaXZlbiB0aGlzLCBJIHNob3VsZCBub3cgZ28gYW5kIGxvb2sgdG8gdGhlIGluY2x1ZGUgZmlsZXMgdG8gaW52ZXN0aWdhdGUgYG1vZF9tdGhwX3N0YXRgLiBTcGVjaWZpY2FsbHksIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAgc2VlbXMgbGlrZSB0aGUgbGlrZWx5IHBsYWNlIGZvciB0aGUgZGVmaW5pdGlvbiwgc28gSSdsbCBnbyBjaGVjayB0aGF0IGFuZCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MzkuODY1MTkwODUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTQ0ODEwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTYwOnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE2OD1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTc0OnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTc1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDIuNTE5NjgwMzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1NjE2MTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBIdWdlIFBhZ2UgTWFuYWdlbWVudCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZm9jdXNpbmcgb24gYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYCByaWdodCBhcm91bmQgbGluZSAxNjAuIFRoYXQgcGFydGljdWxhciBzZWN0aW9uIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIGtleSBkZWZpbml0aW9ucyBhcm91bmQgdGhlIG1hbmFnZW1lbnQgb2YgSHVnZSBQYWdlcyBhcmUgbG9jYXRlZC4gVGhpcyBsaWtlbHkgdG91Y2hlcyBvbiBob3cgdGhlIGtlcm5lbCB0cmFja3MgYW5kIGRlc2NyaWJlcyB0aGVzZSBsYXJnZSBtZW1vcnkgcmVnaW9ucy4gSSdtIGhvcGluZyB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcsIG9yIHBvc3NpYmx5IGhvbmUgaW4gb24gYSBzcGVjaWZpYyBzdHJ1Y3R1cmUgb3IgZGVmaW5pdGlvbiBJJ20gbG9va2luZyBmb3IgLSBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTlVNQSBwb2xpY2llcyBmb3IgSHVnZSBQYWdlcywgdGhlIGJvb2trZWVwaW5nIG9mIGZyZWUgaHVnZSBwYWdlcywgb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzaGFyZWQgbWFwcGluZ3MuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBvciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDguOTc1ODQ1OTI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvaHVnZV9tbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXHRfX01USFBfU1RBVF9DT1VOVFxcbiAxNTE6XFx0fTtcXG4gMTUyOlxcdFxcbiAxNTM6XFx0I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TWVNGUylcXG4gMTU0OlxcdHN0cnVjdCBtdGhwX3N0YXQge1xcbiAxNTU6XFx0XFx0dW5zaWduZWQgbG9uZyBzdGF0c1tpbG9nMihNQVhfUFRSU19QRVJfUFRFKSArIDFdW19fTVRIUF9TVEFUX0NPVU5UXTtcXG4gMTU2OlxcdH07XFxuIDE1NzpcXHRcXG4gMTU4OlxcdERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG4gMTU5OlxcdFxcbiAxNjA6XFx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG4gMTYxOlxcdHtcXG4gMTYyOlxcdFxcdGlmIChvcmRlciBcXHUwMDNjPSAwIHx8IG9yZGVyIFxcdTAwM2UgUE1EX09SREVSKVxcbiAxNjM6XFx0XFx0XFx0cmV0dXJuO1xcbiAxNjQ6XFx0XFxuIDE2NTpcXHRcXHR0aGlzX2NwdV9hZGQobXRocF9zdGF0cy5zdGF0c1tvcmRlcl1baXRlbV0sIGRlbHRhKTtcXG4gMTY2OlxcdH1cXG4gMTY3OlxcdFxcbiAxNjg6XFx0c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcXG4gMTY5OlxcdHtcXG4gMTcwOlxcdFxcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xcbiAxNzE6XFx0fVxcbiAxNzI6XFx0XFxuIDE3MzpcXHQjZWxzZVxcbiAxNzQ6XFx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG4gMTc1OlxcdHtcXG4gMTc2OlxcdH1cXG4gMTc3OlxcdFxcbiAxNzg6XFx0c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcXG4gMTc5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDguOTc1OTc5MTU0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYyMjE2OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIG5vbi1zdGFydGVyIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uLCBgbW9kX210aHBfc3RhdGAsIGlzIHRoZSBnaXZlYXdheS4gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIG1vZGlmeSBwZXItQ1BVIGNvdW50ZXJzLiBUaGF0J3MgYSBjbGFzc2ljIHN0YXRpc3RpY2FsIHVwZGF0ZTsgaXQncyBub3QgY2hhbmdpbmcgdGhlIGZ1bmRhbWVudGFsIGxvZ2ljIG9yIGNvbnRyb2wgZmxvdy4gSXQncyBlc3NlbnRpYWxseSBib29ra2VlcGluZy5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbXByZXNzaW9uLiBUaGUgZmlyc3QgYWRkaXRpb24sIGluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCwgZGVjcmVtZW50cyB0aGUgYE1USFBfU1RBVF9OUl9BTk9OYCBjb3VudGVyLiBUaGUgb3RoZXIgdHdvLCB3aXRoaW4gYF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nYCwgKmNvbmRpdGlvbmFsbHkqIGluY3JlbWVudCB0aGUgc2FtZSBjb3VudGVyLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKWAuIFRoaXMgZW5zdXJlcyB3ZSBkb24ndCBjb3VudCBodWdlIHBhZ2Ugc3RhdHMuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlc2UgY2hhbmdlcyBvbmx5IHBlcnRhaW4gdG8gc3RhdGlzdGljcyBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHRvIGZ1enppbmcsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBObyBmdXJ0aGVyIGFuYWx5c2lzIGlzIHJlcXVpcmVkOyBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIHN0YXRpc3RpY2FsIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjU2LjU5ODE1MDYzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5czn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 00:46:08 +0000 UTC FinishedAt: 2026-07-03 01:05:57 +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+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2ZjOWM3MTZkODhmZWQ3NDk3YzY3MWNlZDRlZDJmNzQxMDc3NGI2YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtcmVtYXAuYyBiL21tL21lbXJlbWFwLmNcbmluZGV4IDgxNzY2ZDgyMjQwMDk2Li5hY2NiYTIzYWVmMjhjYyAxMDA2NDRcbi0tLSBhL21tL21lbXJlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbXJlbWFwLmNcbkBAIC00MjUsNiAmIzQzOzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0bWVtX2Nncm91cF91bmNoYXJnZShmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xuJiM0MztcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yOyBpJiM0MzsmIzQzOylcbiBcdFx0XHRfX0NsZWFyUGFnZUFub25FeGNsdXNpdmUoZm9saW9fcGFnZShmb2xpbywgaSkpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLjlmZDUwZWEyNWQyZDQ2IDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlLmNcbkBAIC01OTAsNyAmIzQzOzU5MCw4IEBAIHN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHRcdC8qIE5vIHR1cm5pbmcgYmFjayBmcm9tIGhlcmUgKi9cbiBcdFx0bmV3Zm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdFx0bmV3Zm9saW8tXHUwMDNlbWFwcGluZyA9IGZvbGlvLVx1MDAzZW1hcHBpbmc7XG4tXHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSlcbiYjNDM7XHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbiBcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiBcdFx0XHRfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTtcbkBAIC02MjMsNyAmIzQzOzYyNCw4IEBAIHN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXHQgKi9cbiBcdG5ld2ZvbGlvLVx1MDAzZWluZGV4ID0gZm9saW8tXHUwMDNlaW5kZXg7XG4gXHRuZXdmb2xpby1cdTAwM2VtYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbi1cdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSlcbiYjNDM7XHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxuIFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXG4gXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ZjOWM3MTZkODhmZWQ3NDk3YzY3MWNlZDRlZDJmNzQxMDc3NGI2YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1yZW1hcC5jIGIvbW0vbWVtcmVtYXAuYwppbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0Ci0tLSBhL21tL21lbXJlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtcmVtYXAuYwpAQCAtNDI1LDYgJiM0Mzs0MjUsNyBAQCB2b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbykKIAltZW1fY2dyb3VwX3VuY2hhcmdlKGZvbGlvKTsKIAogCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7CiYjNDM7CQltb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IG5yOyBpJiM0MzsmIzQzOykKIAkJCV9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShmb2xpb19wYWdlKGZvbGlvLCBpKSk7CiAJfQpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IGQ5YjIzOTA5ZDcxNmM2Li45ZmQ1MGVhMjVkMmQ0NiAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGUuYwpAQCAtNTkwLDcgJiM0Mzs1OTAsOCBAQCBzdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkvKiBObyB0dXJuaW5nIGJhY2sgZnJvbSBoZXJlICovCiAJCW5ld2ZvbGlvLSZndDtpbmRleCA9IGZvbGlvLSZndDtpbmRleDsKIAkJbmV3Zm9saW8tJmd0O21hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKLQkJaWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSkKJiM0MzsJCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pICZhbXA7JmFtcDsgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgJmFtcDsmYW1wOwomIzQzOwkJICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKQogCQkJbW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTsKIAkJaWYgKGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykpCiAJCQlfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTsKQEAgLTYyMyw3ICYjNDM7NjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkgKi8KIAluZXdmb2xpby0mZ3Q7aW5kZXggPSBmb2xpby0mZ3Q7aW5kZXg7CiAJbmV3Zm9saW8tJmd0O21hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKLQlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKQomIzQzOwlpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSAmYW1wOyZhbXA7IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pICZhbXA7JmFtcDsKJiM0MzsJICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKQogCQltb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpOwogCWZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqLwogCWlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtVEhQIEFub24gUGFnZSBTdGF0aXN0aWNzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbW0vbWVtcmVtYXAuY2AgYW5kIGBtbS9taWdyYXRlLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGFib3V0IG1USFAgKG11bHRpLXNpemUgVEhQKSBhbm9uIHBhZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZml4aW5nIGEgc3RhdGlzdGljcyBpc3N1ZS4gTGV0IG1lIHNlZS4uLgoKSW4gYGZyZWVfem9uZV9kZXZpY2VfZm9saW9gIHdpdGhpbiBgbW0vbWVtcmVtYXAuY2AsIHRoZSBwYXRjaCBhZGRzIGBtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtgLiBBbHJpZ2h0LCBzbyB3aGVuIGZyZWVpbmcgYSB6b25lIGRldmljZSBmb2xpbywgd2UmIzM5O3JlIGRlY3JlbWVudGluZyB0aGUgbVRIUCBhbm9uIHBhZ2UgY291bnQuIFRoYXQgbWFrZXMgc2Vuc2UsIHdlJiMzOTtyZSBkZWFsbG9jYXRpbmcgdGhlIHBhZ2UuCgpOb3csIGluIGBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZ2AgKHdpdGhpbiBgbW0vbWlncmF0ZS5jYCksIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCB0byBhIGNvbmRpdGlvbmFsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29uZGl0aW9uYWwgY2hlY2tlZCBpZiBhIGZvbGlvIHdhcyBhbm9ueW1vdXMgYW5kIGxhcmdlIChpbXBseWluZyBtVEhQKS4gVGhlIGFkZGVkIGNvbmRpdGlvbiwgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCBzcGVjaWZpY2FsbHkgKmV4Y2x1ZGVzKiBodWdldGxiIHBhZ2VzIGZyb20gYmVpbmcgY291bnRlZCBhcyBtVEhQLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBodWdldGxiIHBhZ2VzIGFyZSB0aGVpciBvd24gc3BlY2lhbCBiZWFzdCwgYW5kIHdlIGRvbiYjMzk7dCB3YW50IHRoZW0gbWVzc2luZyB1cCB0aGUgbVRIUCBzdGF0cy4gV2UgYXJlIGluY3JlbWVudGluZyBgTVRIUF9TVEFUX05SX0FOT05gIHdoZW4gbWlncmF0aW5nIHRoZSBmb2xpby4KClNvLCB0aGlzIHBhdGNoIGlzIGFib3V0IGNvcnJlY3RpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIG1USFAgYW5vbiBwYWdlcy4gQm90aCB3aGVuIGRlYWxsb2NhdGluZyBhbmQgbWlncmF0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHRoYXQgdGhlIG1USFAgYW5vbiBzdGF0aXN0aWNzIHdlcmUgYmVpbmcgaW5mbGF0ZWQsIG9yIGRlZmxhdGVkLCBkdWUgdG8gZWl0aGVyIGh1Z2V0bGIgcGFnZXMgYmVpbmcgaW5jb3JyZWN0bHkgY291bnRlZCwgb3IgcGFnZXMgd2VyZSBiZWluZyBtaXNzY291bnRlZCBiZWNhdXNlIHRoZXkgd2VyZSBub3QgZGVhbGxvY2F0ZWQgY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhdGlzdGljYWwgY29ycmVjdGlvbiwgYnV0IEkgd2lsbCBuZWVkIHRvIHZlcmlmeSB0aGUgY29kZSBmb3IgYG1vZF9tdGhwX3N0YXRgIHRvIGVuc3VyZSB0aGlzIGlzIHRydWx5IHdoYXQgaXMgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZF9tdGhwX3N0YXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE1OS1cbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oOjE2MDpzdGF0aWMgaW5saW5lIHZvaWQgbW9kX210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSwgaW50IGRlbHRhKVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaD0xNjg9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2OS17XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzA6XHRtb2RfbXRocF9zdGF0KG9yZGVyLCBpdGVtLCAxKTtcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3MS19XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3NS17XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNjc3PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNS1cdFx0aWYgKGlzX2Fub24pIHtcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNjpcdFx0XHRtb2RfbXRocF9zdGF0KG9sZF9vcmRlciwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcdFx0XHRtb2RfbXRocF9zdGF0KHNwbGl0X29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgbnJfbmV3X2ZvbGlvcyk7XG5tbS9odWdlX21lbW9yeS5jLTM3MjgtXHRcdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTM4MDQ9c3RhdGljIGludCBfX2ZvbGlvX2ZyZWV6ZV9hbmRfc3BsaXRfdW5tYXBwZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM4NDItXHRcdFx0XHRmb2xpb19jbGVhcl9wYXJ0aWFsbHlfbWFwcGVkKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MzpcdFx0XHRcdG1vZF9tdGhwX3N0YXQob2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zODQ0LVx0XHRcdFx0XHRNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYz00MzI1PWJvb2wgX19mb2xpb191bnF1ZXVlX2RlZmVycmVkX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00MzQxLVx0XHRcdGZvbGlvX2NsZWFyX3BhcnRpYWxseV9tYXBwZWQoZm9saW8pO1xubW0vaHVnZV9tZW1vcnkuYzo0MzQyOlx0XHRcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxubW0vaHVnZV9tZW1vcnkuYy00MzQzLVx0XHRcdFx0ICAgICAgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmM9NDM1ND12b2lkIGRlZmVycmVkX3NwbGl0X2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcGFydGlhbGx5X21hcHBlZClcbi0tXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXHRcdFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1NQTElUX0RFRkVSUkVEKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDM5MjpcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgMSk7XG5tbS9odWdlX21lbW9yeS5jLTQzOTMtXHRcdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTQ0Mzk9c3RhdGljIGVudW0gbHJ1X3N0YXR1cyBkZWZlcnJlZF9zcGxpdF9pc29sYXRlKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sXG4tLVxubW0vaHVnZV9tZW1vcnkuYy00NDU3LVx0XHRmb2xpb19jbGVhcl9wYXJ0aWFsbHlfbWFwcGVkKGZvbGlvKTtcbm1tL2h1Z2VfbWVtb3J5LmM6NDQ1ODpcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksXG5tbS9odWdlX21lbW9yeS5jLTQ0NTktXHRcdFx0ICAgICAgTVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xuLS1cbm1tL21lbXJlbWFwLmM9NDE2PXZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL21lbXJlbWFwLmMtNDI3LVx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcbm1tL21lbXJlbWFwLmM6NDI4Olx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL21lbXJlbWFwLmMtNDI5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucjsgaSYjNDM7JiM0MzspXG4tLVxubW0vbWlncmF0ZS5jPTU3MT1zdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbm1tL21pZ3JhdGUuYy01OTQtXHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbm1tL21pZ3JhdGUuYzo1OTU6XHRcdFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcbm1tL21pZ3JhdGUuYy01OTYtXHRcdGlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKVxuLS1cbm1tL21pZ3JhdGUuYy02MjgtXHQgICAgIWZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpXG5tbS9taWdyYXRlLmM6NjI5Olx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xubW0vbWlncmF0ZS5jLTYzMC1cdGZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqL1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMzE0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBfX2ZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTM5MC1cdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XG5tbS9wYWdlX2FsbG9jLmM6MTM5MTpcdFx0bW9kX210aHBfc3RhdChvcmRlciwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbm1tL3BhZ2VfYWxsb2MuYy0xMzkyLVx0XHRmb2xpby1cdTAwM2VtYXBwaW5nID0gTlVMTDtcbi0tXG5tbS9ybWFwLmM9MTY0Mj12b2lkIGZvbGlvX2FkZF9uZXdfYW5vbl9ybWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbm1tL3JtYXAuYy0xNjk2LVx0X19mb2xpb19tb2Rfc3RhdChmb2xpbywgbnIsIG5yX3BtZG1hcHBlZCk7XG5tbS9ybWFwLmM6MTY5NzpcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgMSk7XG5tbS9ybWFwLmMtMTY5OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGlzdGljYWwgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIHJlcG9ydCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgKm9ubHkqIHRvdWNoaW5nIHN0YXRpc3RpY3MsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGBtb2RfbXRocF9zdGF0YC4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHRob3VnaHQgaXMgaW1tZWRpYXRlbHkgdG8gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiBgbW9kX210aHBfc3RhdGAuIElmIGl0JiMzOTtzIGEgcGVyLUNQVSBzdGF0cyB1cGRhdGUsIHRoYXQgZGljdGF0ZXMgaG93IEkgYXBwcm9hY2ggdGhlIGNvZGUgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEkmIzM5O2QgbmVlZCB0byBjb25zaWRlciBkYXRhIHN0cnVjdHVyZSBhbGlnbm1lbnQgYW5kIG1lbW9yeSBjb250ZW50aW9uIGltcGxpY2F0aW9ucywgZXNwZWNpYWxseSBpZiB0aGVzZSB1cGRhdGVzIGFyZSBmcmVxdWVudGx5IGFjY2Vzc2VkIG9yIGFyZSBwYXJ0IG9mIGEgY3JpdGljYWwgcGF0aC4gR2l2ZW4gdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBzdGF0cywgSSBzaG91bGQgYmUgbG9va2luZyBhdCBsb2NraW5nIGFuZCBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyB1c2VkIHRvIHByb3RlY3QgdGhlIGRhdGEsIGlmIGFueSwgYW5kIGFueSBwb3RlbnRpYWwgZm9yIGNhY2hlIGxpbmUgYm91bmNpbmcuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBnbyBhbmQgbG9vayB0byB0aGUgaW5jbHVkZSBmaWxlcyB0byBpbnZlc3RpZ2F0ZSBgbW9kX210aHBfc3RhdGAuIFNwZWNpZmljYWxseSwgYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYCBzZWVtcyBsaWtlIHRoZSBsaWtlbHkgcGxhY2UgZm9yIHRoZSBkZWZpbml0aW9uLCBzbyBJJiMzOTtsbCBnbyBjaGVjayB0aGF0IGFuZCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE1OD1ERUNMQVJFX1BFUl9DUFUoc3RydWN0IG10aHBfc3RhdCwgbXRocF9zdGF0cyk7XG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNjA6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2MS17XG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTY4PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0pXG4tLVxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3NS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gSHVnZSBQYWdlIE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAgcmlnaHQgYXJvdW5kIGxpbmUgMTYwLiBUaGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBpcyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlcyBhbmQgcGVyaGFwcyBrZXkgZGVmaW5pdGlvbnMgYXJvdW5kIHRoZSBtYW5hZ2VtZW50IG9mIEh1Z2UgUGFnZXMgYXJlIGxvY2F0ZWQuIFRoaXMgbGlrZWx5IHRvdWNoZXMgb24gaG93IHRoZSBrZXJuZWwgdHJhY2tzIGFuZCBkZXNjcmliZXMgdGhlc2UgbGFyZ2UgbWVtb3J5IHJlZ2lvbnMuIEkmIzM5O20gaG9waW5nIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZywgb3IgcG9zc2libHkgaG9uZSBpbiBvbiBhIHNwZWNpZmljIHN0cnVjdHVyZSBvciBkZWZpbml0aW9uIEkmIzM5O20gbG9va2luZyBmb3IgLSBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTlVNQSBwb2xpY2llcyBmb3IgSHVnZSBQYWdlcywgdGhlIGJvb2trZWVwaW5nIG9mIGZyZWUgaHVnZSBwYWdlcywgb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzaGFyZWQgbWFwcGluZ3MuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBvciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdlX21tLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0X19NVEhQX1NUQVRfQ09VTlRcbiAxNTE6XHR9O1xuIDE1MjpcdFxuIDE1MzpcdCNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1NZU0ZTKVxuIDE1NDpcdHN0cnVjdCBtdGhwX3N0YXQge1xuIDE1NTpcdFx0dW5zaWduZWQgbG9uZyBzdGF0c1tpbG9nMihNQVhfUFRSU19QRVJfUFRFKSAmIzQzOyAxXVtfX01USFBfU1RBVF9DT1VOVF07XG4gMTU2Olx0fTtcbiAxNTc6XHRcbiAxNTg6XHRERUNMQVJFX1BFUl9DUFUoc3RydWN0IG10aHBfc3RhdCwgbXRocF9zdGF0cyk7XG4gMTU5Olx0XG4gMTYwOlx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcbiAxNjE6XHR7XG4gMTYyOlx0XHRpZiAob3JkZXIgXHUwMDNjPSAwIHx8IG9yZGVyIFx1MDAzZSBQTURfT1JERVIpXG4gMTYzOlx0XHRcdHJldHVybjtcbiAxNjQ6XHRcbiAxNjU6XHRcdHRoaXNfY3B1X2FkZChtdGhwX3N0YXRzLnN0YXRzW29yZGVyXVtpdGVtXSwgZGVsdGEpO1xuIDE2NjpcdH1cbiAxNjc6XHRcbiAxNjg6XHRzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxuIDE2OTpcdHtcbiAxNzA6XHRcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xuIDE3MTpcdH1cbiAxNzI6XHRcbiAxNzM6XHQjZWxzZVxuIDE3NDpcdHN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXG4gMTc1Olx0e1xuIDE3NjpcdH1cbiAxNzc6XHRcbiAxNzg6XHRzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxuIDE3OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA1CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tc3RhcnRlciBmb3IgZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbiwgYG1vZF9tdGhwX3N0YXRgLCBpcyB0aGUgZ2l2ZWF3YXkuIEl0JiMzOTtzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gbW9kaWZ5IHBlci1DUFUgY291bnRlcnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHN0YXRpc3RpY2FsIHVwZGF0ZTsgaXQmIzM5O3Mgbm90IGNoYW5naW5nIHRoZSBmdW5kYW1lbnRhbCBsb2dpYyBvciBjb250cm9sIGZsb3cuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGJvb2trZWVwaW5nLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbXByZXNzaW9uLiBUaGUgZmlyc3QgYWRkaXRpb24sIGluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCwgZGVjcmVtZW50cyB0aGUgYE1USFBfU1RBVF9OUl9BTk9OYCBjb3VudGVyLiBUaGUgb3RoZXIgdHdvLCB3aXRoaW4gYF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nYCwgKmNvbmRpdGlvbmFsbHkqIGluY3JlbWVudCB0aGUgc2FtZSBjb3VudGVyLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKWAuIFRoaXMgZW5zdXJlcyB3ZSBkb24mIzM5O3QgY291bnQgaHVnZSBwYWdlIHN0YXRzLgoKVGhlcmVmb3JlLCBzaW5jZSB0aGVzZSBjaGFuZ2VzIG9ubHkgcGVydGFpbiB0byBzdGF0aXN0aWNzIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHRvIGZ1enppbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTm8gZnVydGhlciBhbmFseXNpcyBpcyByZXF1aXJlZDsgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc3RhdGlzdGljYWwgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjEzLjk2Mzk4ODIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjM0MTkyNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MTMuOTYzOTk0Nzk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTgwNjQxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZmM5YzcxNmQ4OGZlZDc0OTdjNjcxY2VkNGVkMmY3NDEwNzc0YjZhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMDE6MDU6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWVtcmVtYXAuYyBiL21tL21lbXJlbWFwLmNcXG5pbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtcmVtYXAuY1xcbisrKyBiL21tL21lbXJlbWFwLmNcXG5AQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRtZW1fY2dyb3VwX3VuY2hhcmdlKGZvbGlvKTtcXG4gXFxuIFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XFxuK1xcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnI7IGkrKylcXG4gXFx0XFx0XFx0X19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKGZvbGlvX3BhZ2UoZm9saW8sIGkpKTtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmNcXG5pbmRleCBkOWIyMzkwOWQ3MTZjNi4uOWZkNTBlYTI1ZDJkNDYgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZS5jXFxuKysrIGIvbW0vbWlncmF0ZS5jXFxuQEAgLTU5MCw3ICs1OTAsOCBAQCBzdGF0aWMgaW50IF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRcXHQvKiBObyB0dXJuaW5nIGJhY2sgZnJvbSBoZXJlICovXFxuIFxcdFxcdG5ld2ZvbGlvLVxcdTAwM2VpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0XFx0bmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgPSBmb2xpby1cXHUwMDNlbWFwcGluZztcXG4tXFx0XFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykpXFxuK1xcdFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG4gXFx0XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG4gXFx0XFx0aWYgKGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykpXFxuIFxcdFxcdFxcdF9fZm9saW9fc2V0X3N3YXBiYWNrZWQobmV3Zm9saW8pO1xcbkBAIC02MjMsNyArNjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4gXFx0ICovXFxuIFxcdG5ld2ZvbGlvLVxcdTAwM2VpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0bmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgPSBmb2xpby1cXHUwMDNlbWFwcGluZztcXG4tXFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykpXFxuK1xcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG4gXFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG4gXFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXFxuIFxcdGlmIChmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMTowNToxNC40NjMzOTY0ODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTM0Nzc4MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZmM5YzcxNmQ4OGZlZDc0OTdjNjcxY2VkNGVkMmY3NDEwNzc0YjZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwMTowNToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbXJlbWFwLmMgYi9tbS9tZW1yZW1hcC5jXG5pbmRleCA4MTc2NmQ4MjI0MDA5Ni4uYWNjYmEyM2FlZjI4Y2MgMTAwNjQ0XG4tLS0gYS9tbS9tZW1yZW1hcC5jXG4rKysgYi9tbS9tZW1yZW1hcC5jXG5AQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQgZnJlZV96b25lX2RldmljZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0bWVtX2Nncm91cF91bmNoYXJnZShmb2xpbyk7XG4gXG4gXHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSkge1xuK1x0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIC0xKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnI7IGkrKylcbiBcdFx0XHRfX0NsZWFyUGFnZUFub25FeGNsdXNpdmUoZm9saW9fcGFnZShmb2xpbywgaSkpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuY1xuaW5kZXggZDliMjM5MDlkNzE2YzYuLjlmZDUwZWEyNWQyZDQ2IDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZS5jXG4rKysgYi9tbS9taWdyYXRlLmNcbkBAIC01OTAsNyArNTkwLDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdFx0LyogTm8gdHVybmluZyBiYWNrIGZyb20gaGVyZSAqL1xuIFx0XHRuZXdmb2xpby1cdTAwM2VpbmRleCA9IGZvbGlvLVx1MDAzZWluZGV4O1xuIFx0XHRuZXdmb2xpby1cdTAwM2VtYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbi1cdFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0XHRpZiAoZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcbiBcdFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0XHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiBcdFx0XHRfX2ZvbGlvX3NldF9zd2FwYmFja2VkKG5ld2ZvbGlvKTtcbkBAIC02MjMsNyArNjI0LDggQEAgc3RhdGljIGludCBfX2ZvbGlvX21pZ3JhdGVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdCAqL1xuIFx0bmV3Zm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuLVx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxuIFx0XHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xuIFx0Zm9saW9fcmVmX2FkZChuZXdmb2xpbywgbnIpOyAvKiBhZGQgY2FjaGUgcmVmZXJlbmNlICovXG4gXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjE0LjQ2MzQwMTAzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2MzU5MTU0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIG1USFAgQW5vbiBQYWdlIFN0YXRpc3RpY3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbW0vbWVtcmVtYXAuY2AgYW5kIGBtbS9taWdyYXRlLmNgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGFib3V0IG1USFAgKG11bHRpLXNpemUgVEhQKSBhbm9uIHBhZ2VzLCBhbmQgaXQgbG9va3MgbGlrZSB3ZSdyZSBmaXhpbmcgYSBzdGF0aXN0aWNzIGlzc3VlLiBMZXQgbWUgc2VlLi4uXG5cbkluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCB3aXRoaW4gYG1tL21lbXJlbWFwLmNgLCB0aGUgcGF0Y2ggYWRkcyBgbW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7YC4gQWxyaWdodCwgc28gd2hlbiBmcmVlaW5nIGEgem9uZSBkZXZpY2UgZm9saW8sIHdlJ3JlIGRlY3JlbWVudGluZyB0aGUgbVRIUCBhbm9uIHBhZ2UgY291bnQuIFRoYXQgbWFrZXMgc2Vuc2UsIHdlJ3JlIGRlYWxsb2NhdGluZyB0aGUgcGFnZS5cblxuTm93LCBpbiBgX19mb2xpb19taWdyYXRlX21hcHBpbmdgICh3aXRoaW4gYG1tL21pZ3JhdGUuY2ApLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCB0byBhIGNvbmRpdGlvbmFsLiBUaGlzIGlzIGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29uZGl0aW9uYWwgY2hlY2tlZCBpZiBhIGZvbGlvIHdhcyBhbm9ueW1vdXMgYW5kIGxhcmdlIChpbXBseWluZyBtVEhQKS4gVGhlIGFkZGVkIGNvbmRpdGlvbiwgYCFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pYCBzcGVjaWZpY2FsbHkgKmV4Y2x1ZGVzKiBodWdldGxiIHBhZ2VzIGZyb20gYmVpbmcgY291bnRlZCBhcyBtVEhQLiBUaGlzIGlzIGdvb2QgYmVjYXVzZSBodWdldGxiIHBhZ2VzIGFyZSB0aGVpciBvd24gc3BlY2lhbCBiZWFzdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhlbSBtZXNzaW5nIHVwIHRoZSBtVEhQIHN0YXRzLiBXZSBhcmUgaW5jcmVtZW50aW5nIGBNVEhQX1NUQVRfTlJfQU5PTmAgd2hlbiBtaWdyYXRpbmcgdGhlIGZvbGlvLlxuXG5TbywgdGhpcyBwYXRjaCBpcyBhYm91dCBjb3JyZWN0aW5nIHRoZSBzdGF0aXN0aWNzIGZvciBtVEhQIGFub24gcGFnZXMuIEJvdGggd2hlbiBkZWFsbG9jYXRpbmcgYW5kIG1pZ3JhdGluZy4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSB0aGF0IHRoZSBtVEhQIGFub24gc3RhdGlzdGljcyB3ZXJlIGJlaW5nIGluZmxhdGVkLCBvciBkZWZsYXRlZCwgZHVlIHRvIGVpdGhlciBodWdldGxiIHBhZ2VzIGJlaW5nIGluY29ycmVjdGx5IGNvdW50ZWQsIG9yIHBhZ2VzIHdlcmUgYmVpbmcgbWlzc2NvdW50ZWQgYmVjYXVzZSB0aGV5IHdlcmUgbm90IGRlYWxsb2NhdGVkIGNvcnJlY3RseS4gVGhpcyBpcyBqdXN0IHN0YXRpc3RpY2FsIGNvcnJlY3Rpb24sIGJ1dCBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhlIGNvZGUgZm9yIGBtb2RfbXRocF9zdGF0YCB0byBlbnN1cmUgdGhpcyBpcyB0cnVseSB3aGF0IGlzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjIyLjA5OTMxODM4MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDU0NzAyNjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZF9tdGhwX3N0YXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTYwOnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE2OD1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE2OS17XFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTcwOlxcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oLTE3MS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNzMtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaDoxNzQ6c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNzUte1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zNjc3PXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNzI1LVxcdFxcdGlmIChpc19hbm9uKSB7XFxubW0vaHVnZV9tZW1vcnkuYzozNzI2OlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQob2xkX29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcXHRcXHRcXHRtb2RfbXRocF9zdGF0KHNwbGl0X29yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgbnJfbmV3X2ZvbGlvcyk7XFxubW0vaHVnZV9tZW1vcnkuYy0zNzI4LVxcdFxcdH1cXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzgwND1zdGF0aWMgaW50IF9fZm9saW9fZnJlZXplX2FuZF9zcGxpdF91bm1hcHBlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zODQyLVxcdFxcdFxcdFxcdGZvbGlvX2NsZWFyX3BhcnRpYWxseV9tYXBwZWQoZm9saW8pO1xcbm1tL2h1Z2VfbWVtb3J5LmM6Mzg0MzpcXHRcXHRcXHRcXHRtb2RfbXRocF9zdGF0KG9sZF9vcmRlcixcXG5tbS9odWdlX21lbW9yeS5jLTM4NDQtXFx0XFx0XFx0XFx0XFx0TVRIUF9TVEFUX05SX0FOT05fUEFSVElBTExZX01BUFBFRCwgLTEpO1xcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz00MzI1PWJvb2wgX19mb2xpb191bnF1ZXVlX2RlZmVycmVkX3NwbGl0KHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzNDEtXFx0XFx0XFx0Zm9saW9fY2xlYXJfcGFydGlhbGx5X21hcHBlZChmb2xpbyk7XFxubW0vaHVnZV9tZW1vcnkuYzo0MzQyOlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDM0My1cXHRcXHRcXHRcXHQgICAgICBNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQzNTQ9dm9pZCBkZWZlcnJlZF9zcGxpdF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHBhcnRpYWxseV9tYXBwZWQpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQzOTEtXFx0XFx0XFx0Y291bnRfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX1NQTElUX0RFRkVSUkVEKTtcXG5tbS9odWdlX21lbW9yeS5jOjQzOTI6XFx0XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OX1BBUlRJQUxMWV9NQVBQRUQsIDEpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtNDM5My1cXHRcXHR9XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTQ0Mzk9c3RhdGljIGVudW0gbHJ1X3N0YXR1cyBkZWZlcnJlZF9zcGxpdF9pc29sYXRlKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTQ0NTctXFx0XFx0Zm9saW9fY2xlYXJfcGFydGlhbGx5X21hcHBlZChmb2xpbyk7XFxubW0vaHVnZV9tZW1vcnkuYzo0NDU4OlxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLFxcbm1tL2h1Z2VfbWVtb3J5LmMtNDQ1OS1cXHRcXHRcXHQgICAgICBNVEhQX1NUQVRfTlJfQU5PTl9QQVJUSUFMTFlfTUFQUEVELCAtMSk7XFxuLS1cXG5tbS9tZW1yZW1hcC5jPTQxNj12b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21lbXJlbWFwLmMtNDI3LVxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pKSB7XFxubW0vbWVtcmVtYXAuYzo0Mjg6XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAtMSk7XFxubW0vbWVtcmVtYXAuYy00MjktXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yOyBpKyspXFxuLS1cXG5tbS9taWdyYXRlLmM9NTcxPXN0YXRpYyBpbnQgX19mb2xpb19taWdyYXRlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9taWdyYXRlLmMtNTk0LVxcdFxcdCAgICAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSlcXG5tbS9taWdyYXRlLmM6NTk1OlxcdFxcdFxcdG1vZF9tdGhwX3N0YXQoZm9saW9fb3JkZXIoZm9saW8pLCBNVEhQX1NUQVRfTlJfQU5PTiwgMSk7XFxubW0vbWlncmF0ZS5jLTU5Ni1cXHRcXHRpZiAoZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSlcXG4tLVxcbm1tL21pZ3JhdGUuYy02MjgtXFx0ICAgICFmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKVxcbm1tL21pZ3JhdGUuYzo2Mjk6XFx0XFx0bW9kX210aHBfc3RhdChmb2xpb19vcmRlcihmb2xpbyksIE1USFBfU1RBVF9OUl9BTk9OLCAxKTtcXG5tbS9taWdyYXRlLmMtNjMwLVxcdGZvbGlvX3JlZl9hZGQobmV3Zm9saW8sIG5yKTsgLyogYWRkIGNhY2hlIHJlZmVyZW5jZSAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEzMTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTEzOTAtXFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHtcXG5tbS9wYWdlX2FsbG9jLmM6MTM5MTpcXHRcXHRtb2RfbXRocF9zdGF0KG9yZGVyLCBNVEhQX1NUQVRfTlJfQU5PTiwgLTEpO1xcbm1tL3BhZ2VfYWxsb2MuYy0xMzkyLVxcdFxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gTlVMTDtcXG4tLVxcbm1tL3JtYXAuYz0xNjQyPXZvaWQgZm9saW9fYWRkX25ld19hbm9uX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9ybWFwLmMtMTY5Ni1cXHRfX2ZvbGlvX21vZF9zdGF0KGZvbGlvLCBuciwgbnJfcG1kbWFwcGVkKTtcXG5tbS9ybWFwLmM6MTY5NzpcXHRtb2RfbXRocF9zdGF0KGZvbGlvX29yZGVyKGZvbGlvKSwgTVRIUF9TVEFUX05SX0FOT04sIDEpO1xcbm1tL3JtYXAuYy0xNjk4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MjUuNTU0MDI3NTU0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzMTExNjAxNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGlzdGljYWwgTW9kaWZpY2F0aW9uKipcblxuQWxyaWdodCwgdGhlIGluaXRpYWwgcmVwb3J0IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyAqb25seSogdG91Y2hpbmcgc3RhdGlzdGljcywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYG1vZF9tdGhwX3N0YXRgLiBUaGF0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludC4gTXkgbmV4dCB0aG91Z2h0IGlzIGltbWVkaWF0ZWx5IHRvIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgYG1vZF9tdGhwX3N0YXRgLiBJZiBpdCdzIGEgcGVyLUNQVSBzdGF0cyB1cGRhdGUsIHRoYXQgZGljdGF0ZXMgaG93IEkgYXBwcm9hY2ggdGhlIGNvZGUgYW5kIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknZCBuZWVkIHRvIGNvbnNpZGVyIGRhdGEgc3RydWN0dXJlIGFsaWdubWVudCBhbmQgbWVtb3J5IGNvbnRlbnRpb24gaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IGlmIHRoZXNlIHVwZGF0ZXMgYXJlIGZyZXF1ZW50bHkgYWNjZXNzZWQgb3IgYXJlIHBhcnQgb2YgYSBjcml0aWNhbCBwYXRoLiBHaXZlbiB0aGF0IEknbSBkZWFsaW5nIHdpdGggc3RhdHMsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgbG9ja2luZyBhbmQgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgdXNlZCB0byBwcm90ZWN0IHRoZSBkYXRhLCBpZiBhbnksIGFuZCBhbnkgcG90ZW50aWFsIGZvciBjYWNoZSBsaW5lIGJvdW5jaW5nLiBHaXZlbiB0aGlzLCBJIHNob3VsZCBub3cgZ28gYW5kIGxvb2sgdG8gdGhlIGluY2x1ZGUgZmlsZXMgdG8gaW52ZXN0aWdhdGUgYG1vZF9tdGhwX3N0YXRgLiBTcGVjaWZpY2FsbHksIGBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaGAgc2VlbXMgbGlrZSB0aGUgbGlrZWx5IHBsYWNlIGZvciB0aGUgZGVmaW5pdGlvbiwgc28gSSdsbCBnbyBjaGVjayB0aGF0IGFuZCByZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6MzkuODY1MTkwODUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTQ0ODEwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdlX21tLmg9MTU4PURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaC0xNTktXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTYwOnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTYxLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZV9tbS5oPTE2OD1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTczLSNlbHNlXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmg6MTc0OnN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbXRocF9zdGF0KGludCBvcmRlciwgZW51bSBtdGhwX3N0YXRfaXRlbSBpdGVtLCBpbnQgZGVsdGEpXFxuaW5jbHVkZS9saW51eC9odWdlX21tLmgtMTc1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDIuNTE5NjgwMzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1NjE2MTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBIdWdlIFBhZ2UgTWFuYWdlbWVudCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZm9jdXNpbmcgb24gYGluY2x1ZGUvbGludXgvaHVnZV9tbS5oYCByaWdodCBhcm91bmQgbGluZSAxNjAuIFRoYXQgcGFydGljdWxhciBzZWN0aW9uIGlzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJoYXBzIGtleSBkZWZpbml0aW9ucyBhcm91bmQgdGhlIG1hbmFnZW1lbnQgb2YgSHVnZSBQYWdlcyBhcmUgbG9jYXRlZC4gVGhpcyBsaWtlbHkgdG91Y2hlcyBvbiBob3cgdGhlIGtlcm5lbCB0cmFja3MgYW5kIGRlc2NyaWJlcyB0aGVzZSBsYXJnZSBtZW1vcnkgcmVnaW9ucy4gSSdtIGhvcGluZyB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcsIG9yIHBvc3NpYmx5IGhvbmUgaW4gb24gYSBzcGVjaWZpYyBzdHJ1Y3R1cmUgb3IgZGVmaW5pdGlvbiBJJ20gbG9va2luZyBmb3IgLSBtYXliZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTlVNQSBwb2xpY2llcyBmb3IgSHVnZSBQYWdlcywgdGhlIGJvb2trZWVwaW5nIG9mIGZyZWUgaHVnZSBwYWdlcywgb3IgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBzaGFyZWQgbWFwcGluZ3MuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgZmluZCB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBvciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDguOTc1ODQ1OTI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvaHVnZV9tbS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXHRfX01USFBfU1RBVF9DT1VOVFxcbiAxNTE6XFx0fTtcXG4gMTUyOlxcdFxcbiAxNTM6XFx0I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19TWVNGUylcXG4gMTU0OlxcdHN0cnVjdCBtdGhwX3N0YXQge1xcbiAxNTU6XFx0XFx0dW5zaWduZWQgbG9uZyBzdGF0c1tpbG9nMihNQVhfUFRSU19QRVJfUFRFKSArIDFdW19fTVRIUF9TVEFUX0NPVU5UXTtcXG4gMTU2OlxcdH07XFxuIDE1NzpcXHRcXG4gMTU4OlxcdERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbXRocF9zdGF0LCBtdGhwX3N0YXRzKTtcXG4gMTU5OlxcdFxcbiAxNjA6XFx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG4gMTYxOlxcdHtcXG4gMTYyOlxcdFxcdGlmIChvcmRlciBcXHUwMDNjPSAwIHx8IG9yZGVyIFxcdTAwM2UgUE1EX09SREVSKVxcbiAxNjM6XFx0XFx0XFx0cmV0dXJuO1xcbiAxNjQ6XFx0XFxuIDE2NTpcXHRcXHR0aGlzX2NwdV9hZGQobXRocF9zdGF0cy5zdGF0c1tvcmRlcl1baXRlbV0sIGRlbHRhKTtcXG4gMTY2OlxcdH1cXG4gMTY3OlxcdFxcbiAxNjg6XFx0c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcXG4gMTY5OlxcdHtcXG4gMTcwOlxcdFxcdG1vZF9tdGhwX3N0YXQob3JkZXIsIGl0ZW0sIDEpO1xcbiAxNzE6XFx0fVxcbiAxNzI6XFx0XFxuIDE3MzpcXHQjZWxzZVxcbiAxNzQ6XFx0c3RhdGljIGlubGluZSB2b2lkIG1vZF9tdGhwX3N0YXQoaW50IG9yZGVyLCBlbnVtIG10aHBfc3RhdF9pdGVtIGl0ZW0sIGludCBkZWx0YSlcXG4gMTc1OlxcdHtcXG4gMTc2OlxcdH1cXG4gMTc3OlxcdFxcbiAxNzg6XFx0c3RhdGljIGlubGluZSB2b2lkIGNvdW50X210aHBfc3RhdChpbnQgb3JkZXIsIGVudW0gbXRocF9zdGF0X2l0ZW0gaXRlbSlcXG4gMTc5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDE6MDU6NDguOTc1OTc5MTU0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYyMjE2OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBhIG5vbi1zdGFydGVyIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uLCBgbW9kX210aHBfc3RhdGAsIGlzIHRoZSBnaXZlYXdheS4gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIG1vZGlmeSBwZXItQ1BVIGNvdW50ZXJzLiBUaGF0J3MgYSBjbGFzc2ljIHN0YXRpc3RpY2FsIHVwZGF0ZTsgaXQncyBub3QgY2hhbmdpbmcgdGhlIGZ1bmRhbWVudGFsIGxvZ2ljIG9yIGNvbnRyb2wgZmxvdy4gSXQncyBlc3NlbnRpYWxseSBib29ra2VlcGluZy5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbXByZXNzaW9uLiBUaGUgZmlyc3QgYWRkaXRpb24sIGluIGBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvYCwgZGVjcmVtZW50cyB0aGUgYE1USFBfU1RBVF9OUl9BTk9OYCBjb3VudGVyLiBUaGUgb3RoZXIgdHdvLCB3aXRoaW4gYF9fZm9saW9fbWlncmF0ZV9tYXBwaW5nYCwgKmNvbmRpdGlvbmFsbHkqIGluY3JlbWVudCB0aGUgc2FtZSBjb3VudGVyLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGAhZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKWAuIFRoaXMgZW5zdXJlcyB3ZSBkb24ndCBjb3VudCBodWdlIHBhZ2Ugc3RhdHMuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlc2UgY2hhbmdlcyBvbmx5IHBlcnRhaW4gdG8gc3RhdGlzdGljcyBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSBuZXcgZXhlY3V0aW9uIHBhdGhzIG9yIGFsdGVyIGV4aXN0aW5nIG9uZXMgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHRvIGZ1enppbmcsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBObyBmdXJ0aGVyIGFuYWx5c2lzIGlzIHJlcXVpcmVkOyBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIHN0YXRpc3RpY2FsIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNSwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAxOjA1OjU2LjU5ODE1MDYzMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGFjY291bnRpbmcgb2YgbXVsdGktc2l6ZSBUSFAgKG1USFApIHN0YXRpc3RpY3MgYnkgYWRkaW5nL3VwZGF0aW5nIGNhbGxzIHRvIGBtb2RfbXRocF9zdGF0KClgLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvciBjb3JlIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBhY2NvdW50aW5nIG9mIG11bHRpLXNpemUgVEhQIChtVEhQKSBzdGF0aXN0aWNzIGJ5IGFkZGluZy91cGRhdGluZyBjYWxscyB0byBgbW9kX210aHBfc3RhdCgpYC4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5czn2[1] Phase: Running StartedAt: 2026-07-03 01:06:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5czn2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-03 01:06:07 +0000 UTC FinishedAt: 2026-07-03 01:07:17 +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,}