Name: series-workflowrzdz4 Phase: Failed StartedAt: 2026-09-14 00:22:47 +0000 UTC FinishedAt: 2026-09-14 00:25:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzdz4[0] Phase: Succeeded StartedAt: 2026-09-14 00:22:47 +0000 UTC FinishedAt: 2026-09-14 00:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzdz4[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 00:22:47 +0000 UTC FinishedAt: 2026-09-14 00:25:14 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzE1YzEwM2E0Zjk2ZmEyZmFjNTEzMjg2NTliZjhlMzI5OWVlMjBjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDAwOjI0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuaW5kZXggMjRhZTU2YTNjOWVkNy4uODJkM2VjMjBiYTI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5AQCAtMjYwNCw3ICYjNDM7MjYwNCw3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9yeF9wcm9jZXNzX2J1ZmZlcihzdHJ1Y3QgbGFuNzQzeF9yeCAqcngpXG4gXHRcdFx0XHRcdFx0XHRyeC1cdTAwM2VhZGFwdGVyLVx1MDAzZW5ldGRldik7XG4gXHRcdGlmIChyeC1cdTAwM2VhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcbiBcdFx0XHRpZiAoIWlzX2ljZSBcdTAwMjZcdTAwMjYgIWlzX3RjZSBcdTAwMjZcdTAwMjYgIWlzX2ljc20pXG4tXHRcdFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4mIzQzO1x0XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQtXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4gXHRcdH1cbiBcdFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFwmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wmIzM0OyxcbiBcdFx0XHQgICByeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2VsZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJYIGJ1ZmZlciBwcm9jZXNzaW5nIGluIHRoZSBsYW43NDN4IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jKS4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIExBTjc0M3gvUENJMTF4MXggUENJZSBHaWdhYml0IEV0aGVybmV0IGRldmljZXMgKENPTkZJR19MQU43NDNYKSwgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNWMxMDNhNGY5NmZhMmZhYzUxMzI4NjU5YmY4ZTMyOTllZTIwYzMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYwppbmRleCAyNGFlNTZhM2M5ZWQ3Li44MmQzZWMyMGJhMjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jCkBAIC0yNjA0LDcgJiM0MzsyNjA0LDcgQEAgc3RhdGljIGludCBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyKHN0cnVjdCBsYW43NDN4X3J4ICpyeCkKIAkJCQkJCQlyeC0mZ3Q7YWRhcHRlci0mZ3Q7bmV0ZGV2KTsKIAkJaWYgKHJ4LSZndDthZGFwdGVyLSZndDtuZXRkZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhDU1VNKSB7CiAJCQlpZiAoIWlzX2ljZSAmYW1wOyZhbXA7ICFpc190Y2UgJmFtcDsmYW1wOyAhaXNfaWNzbSkKLQkJCQlza2ItJmd0O2lwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOwomIzQzOwkJCQlyeC0mZ3Q7c2tiX2hlYWQtJmd0O2lwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOwogCQl9CiAJCW5ldGRldl9kYmcobmV0ZGV2LCAmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPUyYjMzQ7LAogCQkJICAgcngtJmd0O3NrYl9oZWFkLSZndDtsZW4pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBhcHBlYXJzIHRvIGludm9sdmUgc2V0dGluZyB0aGUgYGlwX3N1bW1lZGAgZmllbGQgb2YgYSBgc2tiX2hlYWRgIHN0cnVjdHVyZSB0byBgQ0hFQ0tTVU1fVU5ORUNFU1NBUllgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB3aXRoaW4gYSBjaGVja3N1bS1yZWxhdGVkIGJsb2NrLiBJdCBhcHBlYXJzIHRoYXQgaXQgaXMgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBoYXJkd2FyZSBvZmZsb2FkIG9mIGNoZWNrc3VtIGNhbGN1bGF0aW9ucy4gVGhpcyB3b3VsZCBvY2N1ciBpZiB0aGUgaGFyZHdhcmUgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuCgpOb3csIEkgbmVlZCBhIGxpdHRsZSBtb3JlIGNvbnRleHQuIFdoYXQgZXhhY3RseSBpcyBgbGFuNzQzeGA/IElzIHRoaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBFdGhlcm5ldCBjYXJkPyBJcyBpdCBhIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLCBhcyB0aGUgZmlsZSBwYXRoIHN1Z2dlc3RzPyBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gYmUgc3VyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGJlaW5nIGFkZHJlc3NlZCB0byBmdWxseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIHRhcmdldCBoYXJkd2FyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBjaGVja3N1bW1pbmcgcGVyZm9ybWFuY2Ugd2l0aCBhIGxpdHRsZSBtb3JlIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtMQU43NDNYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2OTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTM2PWNvbmZpZyBFTkNYMjRKNjAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo0NTpjb25maWcgTEFONzQzWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtMQU43NDN4IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRU5DWDI0SjYwMCkgJiM0Mzs9IGVuY3gyNGo2MDAubyBlbmN4MjRqNjAwLXJlZ21hcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTEFONzQzWCkgJiM0Mzs9IGxhbjc0M3gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzLS8qIGVlcHJvbSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0OiNkZWZpbmUgTEFONzQzWF9FRVBST01fTUFHSUNcdFx0ICAgICgweDc0QTUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTU6I2RlZmluZSBMQU43NDNYX09UUF9NQUdJQ1x0XHQgICAgKDB4NzRGMylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNi0jZGVmaW5lIEVFUFJPTV9JTkRJQ0FUT1JfMVx0XHQgICAgKDB4QTUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNjI9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjY6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIEhTX09UUF9TVEFUVVMsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjctXHRcdFx0XHQgICEodmFsIFx1MDAyNiBPVFBfU1RBVFVTX0JVU1lfKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NDkxPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDk1Olx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIU19FMlBfQ01ELCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDk2LVx0XHRcdFx0ICAoISh2YWwgXHUwMDI2IEhTX0UyUF9DTURfRVBDX0JVU1lfKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02MTY9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyMDpcdGlmIChhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjIxLVx0XHRyZXR1cm4gYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeCA/IE1BWF9IU19PVFBfU0laRSA6IE1BWF9PVFBfU0laRTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NjI2PXN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzMjpcdGlmIChhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzMtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02NTE9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU3Olx0aWYgKGFkYXB0ZXItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfQURBUFRFUl9GTEFHX09UUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1OC1cdFx0LyogQmV3YXJlISAgT1RQIGlzIE9uZSBUaW1lIFByb2dyYW1taW5nIE9OTFkhICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU5Olx0XHRpZiAoZWUtXHUwMDNlbWFnaWMgPT0gTEFONzQzWF9PVFBfTUFHSUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY4Olx0XHRpZiAoZWUtXHUwMDNlbWFnaWMgPT0gTEFONzQzWF9FRVBST01fTUFHSUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTkzND1zdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfcnhfcmluZ19jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkzNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6OTM2Olx0cmV0dXJuIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MzctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0xMTk4PXN0YXRpYyB2b2lkIGxhbjc0M3hfY29tbW9uX3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMjAzOlx0bWVtc2V0KHAsIDAsIChNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1MgKiBzaXplb2YodTMyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTEzMTA9c3RhdGljIGludCBsYW43NDN4X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzEyLVx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMxMzpcdHUzMiBudW1fcmVncyA9IE1BWF9MQU43NDNYX0VUSF9DT01NT05fUkVHUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMTUtXHRpZiAoYWRhcHRlci1cdTAwM2Vpc19zZ21paV9lbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzE2Olx0XHRudW1fcmVncyAmIzQzOz0gTUFYX0xBTjc0M1hfRVRIX1NHTUlJX1JFR1M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTMyMT1zdGF0aWMgdm9pZCBsYW43NDN4X2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzMDpcdHJlZ3MtXHUwMDNldmVyc2lvbiA9IExBTjc0M1hfRVRIX1JFR19WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzEtXHRyZWdzLVx1MDAzZWxlbiA9IHJlZ3NfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzMzLVx0bGFuNzQzeF9jb21tb25fcmVncyhkZXYsIHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMzQ6XHRwID0gKHUzMiAqKXAgJiM0MzsgTUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzctXHRcdGxhbjc0M3hfc2dtaWlfcmVncyhkZXYsIHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMzg6XHRcdHAgPSAodTMyICopcCAmIzQzOyBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzM5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjQ6I2lmbmRlZiBfTEFONzQzWF9FVEhUT09MX0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo1OiNkZWZpbmUgX0xBTjc0M1hfRVRIVE9PTF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo5OiNkZWZpbmUgTEFONzQzWF9FVEhfUkVHX1ZFUlNJT04gICAgICAgICAxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MTE9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMxLVx0LyogQWRkIG5ldyByZWdpc3RlcnMgYWJvdmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDozMjpcdE1BWF9MQU43NDNYX0VUSF9DT01NT05fUkVHU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMzLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oPTM1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDAtXHQvKiBBZGQgbmV3IHJlZ2lzdGVycyBhYm92ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwMTpcdE1BWF9MQU43NDNYX0VUSF9TR01JSV9SRUdTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAyLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oPTEwND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwNjojZW5kaWYgLyogX0xBTjc0M1hfRVRIVE9PTF9IICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE0NT12b2lkIGxhbjc0M3hfY3NyX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNTE6I2RlZmluZSBMQU43NDNYX0NTUl9SRUFEX09QKG9mZnNldClcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNTM9c3RhdGljIGludCBsYW43NDN4X2Nzcl9saWdodF9yZXNldChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTYxOlx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIV19DRkcsIGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTYyLVx0XHRcdFx0ICAhKGRhdGEgXHUwMDI2IEhXX0NGR19MUlNUXyksIDEwMDAwMCwgMTAwMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNjU9c3RhdGljIGludCBsYW43NDN4X2Nzcl93YWl0X2Zvcl9iaXRfYXRvbWljKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNzI6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0X2F0b21pYyhMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTczLVx0XHRcdFx0XHQgdGFyZ2V0X3ZhbHVlID09ICEhKGRhdGEgXHUwMDI2IGJpdF9tYXNrKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbGFuNzQzeF9jc3Jfd2FpdF9mb3JfYml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxODQ6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIG9mZnNldCwgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xODUtXHRcdFx0XHQgIHRhcmdldF92YWx1ZSA9PSAhIShkYXRhIFx1MDAyNiBiaXRfbWFzayksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxMDpcdGNzci1cdTAwM2VmbGFncyA9IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjExLVx0c3dpdGNoIChjc3ItXHUwMDNlaWRfcmV2IFx1MDAyNiBJRF9SRVZfQ0hJUF9SRVZfTUFTS18pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTItXHRjYXNlIElEX1JFVl9DSElQX1JFVl9BMF86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEzOlx0XHRjc3ItXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19BMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMTQ6XHRcdGNzci1cdTAwM2VmbGFncyBcdTAwMjY9IH5MQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2LVx0Y2FzZSBJRF9SRVZfQ0hJUF9SRVZfQjBfOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxNzpcdFx0Y3NyLVx1MDAzZWZsYWdzIHw9IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjM0PXN0YXRpYyB2b2lkIGxhbjc0M3hfdHhfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0MC1cdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSU5UX0VOX1NFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjQxOlx0aWYgKGZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNDItXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNTE6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjUyLVx0XHRcdGRtYWNfaW50X3N0cyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjU0LVx0XHRcdGRtYWNfaW50X3N0cyA9IGlvY19iaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjU1Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTYtXHRcdFx0ZG1hY19pbnRfZW4gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBsYW43NDN4X3J4X2lzcih2b2lkICpjb250ZXh0LCB1MzIgaW50X3N0cywgdTMyIGZsYWdzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjgxOlx0aWYgKGZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODItXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyOTE6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjkyLVx0XHRcdGRtYWNfaW50X3N0cyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjk0LVx0XHRcdGRtYWNfaW50X3N0cyA9IHJ4X2ZyYW1lX2JpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyOTU6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5Ni1cdFx0XHRkbWFjX2ludF9lbiA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE2PXN0YXRpYyB2b2lkIGxhbjc0M3hfaW50cl9zaGFyZWRfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMS1cdGlmIChpbnRfc3RzIFx1MDAyNiBJTlRfQklUX0FMTF9SWF8pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjI6XHRcdGZvciAoY2hhbm5lbCA9IDA7IGNoYW5uZWwgXHUwMDNjIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjMtXHRcdFx0Y2hhbm5lbCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU5PXN0YXRpYyBpcnFyZXR1cm5fdCBsYW43NDN4X2ludHJfZW50cnlfaXNyKGludCBpcnEsIHZvaWQgKnB0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2NzpcdGlmICh2ZWN0b3ItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY4LVx0XHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjktXHR9IGVsc2UgaWYgKHZlY3Rvci1cdTAwM2VmbGFncyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA6XHRcdCAgIChMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzE6XHRcdCAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyLVx0XHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTX1IyQyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODE6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4Mi1cdFx0LyogZGlzYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODc6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzg4LVx0XHQvKiBkaXNhYmxlIG1hc3RlciBpbnRlcnJ1cHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM5MTpcdGlmICh2ZWN0b3ItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM5Mi1cdFx0aW50X2VuYWJsZXMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDEyOlx0aWYgKHZlY3Rvci1cdTAwM2VmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTMtXHRcdC8qIGVuYWJsZSBtYXN0ZXIgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MTY6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTctXHRcdC8qIGVuYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9yZWdpc3Rlcl9pc3Ioc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDY0LVx0XHRcdCAgbGFuNzQzeF9pbnRyX2VudHJ5X2lzcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0NjU6XHRcdFx0ICAoZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRCkgP1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQ2Ni1cdFx0XHQgIElSUUZfU0hBUkVEIDogMCwgRFJJVkVSX05BTUUsIHZlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTUzMD1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU1NC1cdFx0XHRcdCAgICAxICYjNDM7IHVzZWRfdHhfY2hhbm5lbHMgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo1NTU6XHRcdFx0XHQgICAgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU3MC1cdGlmICghaW50ci1cdTAwM2VudW1iZXJfb2ZfdmVjdG9ycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU3MTpcdFx0aWYgKCEoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTcyLVx0XHRcdGlmICghcGNpX2VuYWJsZV9tc2koYWRhcHRlci1cdTAwM2VwZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MDAtXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX01BUDIsIDB4MDAwMDAwMDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMTpcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMjpcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjAzOlx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNDpcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MDYtXHRpZiAoaW50ci1cdTAwM2V1c2luZ192ZWN0b3JzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjA3Olx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MDg6XHRcdFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwOS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjEwOlx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxMTpcdFx0XHQgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVCB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjEyOlx0XHRcdCBMQU43NDNYX1ZFQ1RPUl9GTEFHX0lSUV9TSEFSRUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjEzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTU6XHRpZiAoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTY6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxNzpcdFx0ZmxhZ3MgXHUwMDI2PSB+TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTg6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTk6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MjA6XHRcdGZsYWdzIHw9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SMkM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjIxOlx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfUjJDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYyMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzODpcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzOTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MjpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MzpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NjpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY0Ny1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDg6XHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0OTpcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjUwLVx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY2OS1cdFx0XHRudW1iZXJfb2ZfdHhfdmVjdG9ycyA9IHVzZWRfdHhfY2hhbm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcwOlx0XHRmbGFncyA9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NzE6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcyOlx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjczOlx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc0Olx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3NTpcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjc3LVx0XHRpZiAoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc4Olx0XHQgICBMQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc5Olx0XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2ODA6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19TRVQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MTpcdFx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2ODI6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02ODMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzAxLVx0XHRcdGlmICghKGZsYWdzIFx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcwMjpcdFx0XHQgICAgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MDMtXHRcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMTpcdFx0aWYgKG51bWJlcl9vZl9yeF92ZWN0b3JzIFx1MDAzZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzEyOlx0XHRcdG51bWJlcl9vZl9yeF92ZWN0b3JzID0gTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTQ6XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNTpcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTY6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTc6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTg6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0lTUl9DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzE5Olx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjEtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjI6XHRcdCAgICBMQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzIzOlx0XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyNDpcdFx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVCB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI1Olx0XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjY6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI3Olx0XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX0FVVE9fQ0xFQVI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzI4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczNi1cdFx0XHRpZiAoZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzM3Olx0XHRcdCAgICBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19DTEVBUikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczOC1cdFx0XHRcdGludF92ZWNfZW5fYXV0b19jbHIgfD0gSU5UX1ZFQ19FTl8odmVjdG9yKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9ODA4PXN0YXRpYyBpbnQgbGFuNzQzeF9tYWNfbWlpX3dhaXRfdGlsbF9ub3RfYnVzeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy04MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6ODEyOlx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBNQUNfTUlJX0FDQywgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy04MTMtXHRcdFx0XHQgICEoZGF0YSBcdTAwMjYgTUFDX01JSV9BQ0NfTUlJX0JVU1lfKSwgMCwgMTAwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTk0Mz1zdGF0aWMgaW50IGxhbjc0M3hfc2dtaWlfd2FpdF90aWxsX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTk0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo5NDg6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgU0dNSUlfQUNDLCBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTk0OS1cdFx0XHRcdCAhKGRhdGEgXHUwMDI2IFNHTUlJX0FDQ19TR01JSV9CWllfKSwgMTAwLCAxMDAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTM3OT1zdGF0aWMgaW50IGxhbjc0M3hfaHdfcmVzZXRfcGh5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTM4OTpcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgUE1UX0NUTCwgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xMzkwLVx0XHRcdFx0ICAoIShkYXRhIFx1MDAyNiBQTVRfQ1RMX0VUSF9QSFlfUlNUXykgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE1MTY9c3RhdGljIGludCBsYW43NDN4X2RtYWNfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTM4LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1Mzk6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTU0MC1cdFx0ZGF0YSB8PSBETUFDX0NGR19DT0FMX0VOXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTczND1zdGF0aWMgdm9pZCBsYW43NDN4X3J4X2NmZ19iX3RzdGFtcF9jb25maWcoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTc0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNzQxOlx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDItXHRcdGNoYW5uZWxfbnVtYmVyID0gYWRhcHRlci1cdTAwM2VyeFtpbmRleF0uY2hhbm5lbF9udW1iZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE5NTU9c3RhdGljIHZvaWQgbGFuNzQzeF90eF9mcmFtZV9lbmQoc3RydWN0IGxhbjc0M3hfdHggKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xOTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE5OTE6XHRpZiAodHgtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19TRVQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5Mi1cdFx0dHhfdGFpbF9mbGFncyB8PSBUWF9UQUlMX1NFVF9UT1BfSU5UX1ZFQ19FTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MzpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xOTk0LVx0XHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX0RNQUNfSU5UX0VOXyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTIwOTM9c3RhdGljIGludCBsYW43NDN4X3R4X25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCB3ZWlnaHQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxMDItXHRsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIERNQUNfSU5UX1NUUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEwMzpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjEwNC1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRE1BQ19JTlRfU1RTLCBpb2NfYml0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjE1OD1zdGF0aWMgaW50IGxhbjc0M3hfdHhfcmluZ19pbml0KHN0cnVjdCBsYW43NDN4X3R4ICp0eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMTY1Olx0dHgtXHUwMDNlcmluZ19zaXplID0gTEFONzQzWF9UWF9SSU5HX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2Ni1cdGlmICh0eC1cdTAwM2VyaW5nX3NpemUgXHUwMDI2IH5UWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yMjUxPXN0YXRpYyBpbnQgbGFuNzQzeF90eF9vcGVuKHN0cnVjdCBsYW43NDN4X3R4ICp0eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjI5MS1cdGRhdGEgfD0gKCh0eC1cdTAwM2VyaW5nX3NpemUpIFx1MDAyNiBUWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjI5MjpcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjkzLVx0XHRkYXRhIHw9IFRYX0NGR19CX1RETUFCTF81MTJfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk3LVx0ZGF0YSA9IFRYX0NGR19BX1RYX1RNUl9IUFdCX1NFTF9JT0NfIHwgVFhfQ0ZHX0FfVFhfSFBfV0JfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIyOTg6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk5LVx0XHRkYXRhIHw9IFRYX0NGR19BX1RYX0hQX1dCX09OX0lOVF9UTVJfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzI5LVx0ZGF0YSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMDpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzEtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfVE9QX0lOVF9FTl9BVVRPX0NMUl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMjpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzMtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfRE1BX0lOVF9TVFNfQVVUT19DTFJfO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzMzQ6XHRpZiAodHgtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzUtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfSU5UX1NUU19SMkNfTU9ERV9NQVNLXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMzM2Olx0aWYgKHR4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzM3LVx0XHRkYXRhIHw9IFRYX0NGR19DX1RYX0lOVF9FTl9SMkNfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzNDA6XHRpZiAoISh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjM0MS1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjYyND1zdGF0aWMgaW50IGxhbjc0M3hfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjMyOlx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzMtXHRcdC8qIGNsZWFyIGludCBzdGF0dXMgYml0IGJlZm9yZSByZWFkaW5nIHBhY2tldCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjQ5LVx0LyogcmUtYXJtIGludGVycnVwdHMsIG11c3Qgd3JpdGUgdG8gcnggdGFpbCBvbiBzb21lIGNoaXAgdmFyaWFudHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUwOlx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2NTEtXHRcdHJ4X3RhaWxfZmxhZ3MgfD0gUlhfVEFJTF9TRVRfVE9QX0lOVF9WRUNfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI2NTI6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19TRVQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjUzLVx0XHRyeF90YWlsX2ZsYWdzIHw9IFJYX1RBSUxfU0VUX1RPUF9JTlRfRU5fO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjk5PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI3MDc6XHRyeC1cdTAwM2VyaW5nX3NpemUgPSBMQU43NDNYX1JYX1JJTkdfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA4LVx0aWYgKHJ4LVx1MDAzZXJpbmdfc2l6ZSBcdTAwM2M9IDEpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjgwMD1zdGF0aWMgaW50IGxhbjc0M3hfcnhfb3BlbihzdHJ1Y3QgbGFuNzQzeF9yeCAqcngpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4MzQtXHRkYXRhID0gUlhfQ0ZHX0FfUlhfSFBfV0JfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4MzU6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODM2LVx0XHRkYXRhIHw9IChSWF9DRkdfQV9SWF9XQl9PTl9JTlRfVE1SXyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NTQtXHRkYXRhIHw9ICgocngtXHUwMDNlcmluZ19zaXplKSBcdTAwMjYgUlhfQ0ZHX0JfUlhfUklOR19MRU5fTUFTS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NTU6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg1Ni1cdFx0ZGF0YSB8PSBSWF9DRkdfQl9SRE1BQkxfNTEyXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg2NC1cdGRhdGEgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NjU6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY2LVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX1RPUF9JTlRfRU5fQVVUT19DTFJfO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4Njc6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY4LVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX0RNQV9JTlRfU1RTX0FVVE9fQ0xSXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY5Olx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1IyQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODcwLVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX0lOVF9TVFNfUjJDX01PREVfTUFTS187XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mjg3MTpcdGlmIChyeC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg3Mi1cdFx0ZGF0YSB8PSBSWF9DRkdfQ19SWF9JTlRfRU5fUjJDXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzI5Mj1zdGF0aWMgaW50IGxhbjc0M3hfbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMwMDpcdGZvciAoaW5kZXggPSAwOyBpbmRleCBcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzMwMS1cdFx0bGFuNzQzeF9yeF9jbG9zZShcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4W2luZGV4XSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMzMTQ9c3RhdGljIGludCBsYW43NDN4X25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMzODpcdGZvciAoaW5kZXggPSAwOyBpbmRleCBcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMzM5LVx0XHRyZXQgPSBsYW43NDN4X3J4X29wZW4oXHUwMDI2YWRhcHRlci1cdTAwM2VyeFtpbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMzcxLWNsb3NlX3J4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzNzI6XHRmb3IgKGluZGV4ID0gMDsgaW5kZXggXHUwMDNjIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUzsgaW5kZXgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzM3My1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlcnhbaW5kZXhdLnJpbmdfY3B1X3B0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU1MD1zdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNTgzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg0Olx0XHRhZGFwdGVyLVx1MDAzZW1heF90eF9jaGFubmVscyA9IExBTjc0M1hfTUFYX1RYX0NIQU5ORUxTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM1ODU6XHRcdGFkYXB0ZXItXHUwMDNldXNlZF90eF9jaGFubmVscyA9IExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg2Olx0XHRhZGFwdGVyLVx1MDAzZW1heF92ZWN0b3JfY291bnQgPSBMQU43NDNYX01BWF9WRUNUT1JfQ09VTlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzU4Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzYwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNjEwOlx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MTEtXHRcdGFkYXB0ZXItXHUwMDNlcnhbaW5kZXhdLmFkYXB0ZXIgPSBhZGFwdGVyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDItXHRcdFx0XHRcdFx0IFBDSTExWDFYX1VTRURfVFhfQ0hBTk5FTFMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcwMzpcdFx0XHRcdFx0XHQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzA0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcwNi1cdFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MDc6XHRcdFx0XHRcdFx0IExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMUyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA4Olx0XHRcdFx0XHRcdCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjAtXHRcdFx0ICAgICAgTkVUSUZfTVNHX0lGRE9XTiB8IE5FVElGX01TR19UWF9RVUVVRUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyMTpcdG5ldGRldi1cdTAwM2VtYXhfbXR1ID0gTEFONzQzWF9NQVhfRlJBTUVfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjQ6I2lmbmRlZiBfTEFONzQzWF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6NTojZGVmaW5lIF9MQU43NDNYX0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC02LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0xOS0jZGVmaW5lIElEX1JFVl9JRF9MQU43NDMxX1x0XHQoMHg3NDMxMDAwMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDoyMDojZGVmaW5lIElEX1JFVl9JRF9MQU43NDNYX1x0XHQoMHg3NDMwMDAwMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0yMS0jZGVmaW5lIElEX1JFVl9JRF9BMDExX1x0XHRcdCgweEEwMTEwMDAwKVx0Ly8gUENJMTEwMTBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtMjQtI2RlZmluZSBJRF9SRVZfSVNfVkFMSURfQ0hJUF9JRF8oaWRfcmV2KVx0ICAgIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6MjU6XHQoKCgoaWRfcmV2KSBcdTAwMjYgMHhGRkYwMDAwMCkgPT0gSURfUkVWX0lEX0xBTjc0M1hfKSB8fCBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTI2LVx0ICgoKGlkX3JldikgXHUwMDI2IDB4RkYwRjAwMDApID09IElEX1JFVl9JRF9BMFgxXykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NjI6I2RlZmluZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMU1x0XHQoNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NjM6I2RlZmluZSBMQU43NDNYX01BWF9UWF9DSEFOTkVMU1x0XHQoMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NjQtI2RlZmluZSBQQ0kxMVgxWF9NQVhfVFhfQ0hBTk5FTFNcdCg0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oPTg2NT1zdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4Njc6I2RlZmluZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcdCg0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg2ODojZGVmaW5lIExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMU1x0KDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY5LSNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1x0KDQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODcwOiNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXHQoNDAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzI6I2lmIChMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMgXHUwMDNlIExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3MzojZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NzQtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODc1OiNpZiAoTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTIFx1MDAzZSBMQU43NDNYX01BWF9UWF9DSEFOTkVMUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzY6I2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODc3LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODk1OiNkZWZpbmUgTEFONzQzWF9DU1JfRkxBR19JU19BMFx0XHRcdFx0QklUKDApXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgQ29udGV4dCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZGV2aWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnYC4gVGhhdCBLY29uZmlnIGZpbGUgaXMgdGhlIGxpbmNocGluIGZvciBjb25maWd1cmluZyB0aGUgTWljcm9jaGlwIEV0aGVybmV0IGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEl0IHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNsdWVzOiB0aGUgc3BlY2lmaWMgZGV2aWNlIHR5cGUgc3VwcG9ydGVkLCB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGZlYXR1cmVzIGxpa2UgRE1BLCBpbnRlcnJ1cHRzLCBsaW5rIHNwZWVkIG5lZ290aWF0aW9uKSwgYW5kLCBjcnVjaWFsbHksIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEtub3dpbmcgdGhlIGRldmljZSYjMzk7cyBleGFjdCBJRCwgb3IgYXQgbGVhc3QgdGhlIHJlbGV2YW50IEtjb25maWcgc3ltYm9scywgaXMgdGhlIGZpcnN0IHN0ZXAuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCBhbmQgd2hlcmUgdG8gbG9vayBuZXh0IGZvciBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbi4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0ICAgICAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBFTkM0MjRKNjAwLzYyNEo2MDAgZXRoZXJuZXQgY2hpcC5cbiAgNDE6XHRcbiAgNDI6XHQgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbiAgNDM6XHQgICAgICBjYWxsZWQgZW5jeDI0ajYwMC5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgTEFONzQzWFxuICA0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TEFONzQzeCBzdXBwb3J0XCYjMzQ7XG4gIDQ3Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA0OTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA1MDpcdFx0c2VsZWN0IENSQzE2XG4gIDUxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgNTI6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBhbmQgUENJMTF4MXggZmFtaWxpZXMgb2YgUENJXG4gIDU1Olx0XHQgIEV4cHJlc3MgRXRoZXJuZXQgZGV2aWNlc1xuICA1NjpcdFxuICA1NzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbiAgNTg6XHRcdCAgY2FsbGVkIGxhbjc0M3guXG4gIDU5Olx0XG4gIDYwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcJiMzNDtcbiAgNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wmIzM0O1xuICA2MjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWdcJiMzNDtcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZ1wmIzM0O1xuICA2NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZmRtYS9LY29uZmlnXCYjMzQ7XG4gIDY1Olx0XG4gIDY2Olx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzIyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFN1cHBvcnQgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcmVxdWVzdCB0byBhc3Nlc3MgZnV6emluZyBwb3RlbnRpYWwgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBhbmQgUENJMTF4MXggZmFtaWxpZXMgb2YgUENJIEV4cHJlc3MgRXRoZXJuZXQgZGV2aWNlcy4gVGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBldmVuIGJvdGhlciBmdXp6aW5nLCBhbmQgdGhlIGluc3RydWN0aW9uIHNldCBpcyBjbGVhcjogaWYgdGhlIGNvZGUgZmFsbHMgaW50byBhIHNwZWNpZmljIG5lZ2F0aXZlIGNhdGVnb3J5LCB3ZSBiYWlsIG91dCBlYXJseS4gVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggdG8gY29uc2VydmUgcmVzb3VyY2VzLgoKUmlnaHQsIHNvIHNlY3Rpb24gMiBnaXZlcyB1cyB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gVGhlIG1vc3QgcmVsZXZhbnQgb25lIGhlcmUgaXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6IFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJz4oCmIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gVGhpcyBpcyB0aGUgY3J1eC4KCkkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgTEFONzQzeCBpcyBlbXVsYXRlZC4gTGV0IG1lIHNlZS4uLiBJIGhhdmUgYSBsaXN0IG9mIHN0YW5kYXJkIFFFTVUgbmV0d29yayBkZXZpY2VzIGluIGZyb250IG9mIG1lOiBlMTAwMCwgZTEwMDBlLCBpZ2IsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdmlydGlvLW5ldC1wY2ksIHJvY2tlciwgdm14bmV0MywgdXNiLW5ldC4gTm9wZSwgbm90IHNlZWluZyBMQU43NDN4IGFueXdoZXJlIGluIHRoZXJlLiBUaGVzZSBkZXZpY2VzIGFyZSBwaHlzaWNhbCBQQ0llIGdpZ2FiaXQgZXRoZXJuZXQgY29udHJvbGxlcnMgKE1pY3JvY2hpcCBMQU43NDMwLCBMQU43NDMxLCBQQ0kxMTAxMCwgUENJMTE0MTQgZXRjKSwgc28gaXQgc3RhbmRzIHRvIHJlYXNvbiB0aGF0IHRoZXkgYXJlbiYjMzk7dCBlbXVsYXRlZC4gSSBjYW4gYmUgcHJldHR5IGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBpdCYjMzk7cyBOT1QgZW11bGF0ZWQgaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoLCBieSBpbXBsaWNhdGlvbiwgbWFrZXMgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UgY2hlY2sgdGhlIGNvbnRleHQgb2YgdGhlIExBTjc0M3ggZnVuY3Rpb24gaW4gdGhlIGBsYW43NDN4X21haW4uY2AgZmlsZSB0byBmdXJ0aGVyIGNlbWVudCBvdXIgY29uY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU4NTpcdFx0XHR1MzIgdHNfc2VjO1xuMjU4NjpcdFx0XHR1MzIgdHNfbnNlYztcbjI1ODc6XHRcbjI1ODg6XHRcdFx0dHNfc2VjID0gbGUzMl90b19jcHUoZGVzY19leHQtXHUwMDNlZGF0YTEpO1xuMjU4OTpcdFx0XHR0c19uc2VjID0gKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVx1MDAzZWRhdGEyKSBcdTAwMjZcbjI1OTA6XHRcdFx0XHQgIFJYX0RFU0NfREFUQTJfVFNfTlNfTUFTS18pO1xuMjU5MTpcdFx0XHRpZiAocngtXHUwMDNlc2tiX2hlYWQpXG4yNTkyOlx0XHRcdFx0c2tiX2h3dHN0YW1wcyhyeC1cdTAwM2Vza2JfaGVhZCktXHUwMDNlaHd0c3RhbXAgPVxuMjU5MzpcdFx0XHRcdFx0a3RpbWVfc2V0KHRzX3NlYywgdHNfbnNlYyk7XG4yNTk0Olx0XHRcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCBleHRlbnNpb25faW5kZXgpO1xuMjU5NTpcdFx0XHRyeC1cdTAwM2VsYXN0X2hlYWQgPSBleHRlbnNpb25faW5kZXg7XG4yNTk2Olx0XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDtwcm9jZXNzIGV4dGVuc2lvblwmIzM0Oyk7XG4yNTk3Olx0XHR9XG4yNTk4Olx0XG4yNTk5Olx0XHRpZiAoaXNfbGFzdCBcdTAwMjZcdTAwMjYgcngtXHUwMDNlc2tiX2hlYWQpXG4yNjAwOlx0XHRcdHJ4LVx1MDAzZXNrYl9oZWFkID0gbGFuNzQzeF9yeF90cmltX3NrYihyeC1cdTAwM2Vza2JfaGVhZCwgZnJhbWVfbGVuZ3RoKTtcbjI2MDE6XHRcbjI2MDI6XHRcdGlmIChpc19sYXN0IFx1MDAyNlx1MDAyNiByeC1cdTAwM2Vza2JfaGVhZCkge1xuMjYwMzpcdFx0XHRyeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHJ4LVx1MDAzZXNrYl9oZWFkLFxuMjYwNDpcdFx0XHRcdFx0XHRcdFx0cngtXHUwMDNlYWRhcHRlci1cdTAwM2VuZXRkZXYpO1xuMjYwNTpcdFx0XHRpZiAocngtXHUwMDNlYWRhcHRlci1cdTAwM2VuZXRkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNKSB7XG4yNjA2Olx0XHRcdFx0aWYgKCFpc19pY2UgXHUwMDI2XHUwMDI2ICFpc190Y2UgXHUwMDI2XHUwMDI2ICFpc19pY3NtKVxuMjYwNzpcdFx0XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQtXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4yNjA4Olx0XHRcdH1cbjI2MDk6XHRcdFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFwmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wmIzM0OyxcbjI2MTA6XHRcdFx0XHQgICByeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2VsZW4pO1xuMjYxMTpcdFx0XHRuYXBpX2dyb19yZWNlaXZlKFx1MDAyNnJ4LVx1MDAzZW5hcGksIHJ4LVx1MDAzZXNrYl9oZWFkKTtcbjI2MTI6XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQgPSBOVUxMO1xuMjYxMzpcdFx0fVxuMjYxNDpcdFxuMjYxNTpcdG1vdmVfZm9yd2FyZDpcbjI2MTY6XHRcdC8qIHB1c2ggdGFpbCBhbmQgaGVhZCBmb3J3YXJkICovXG4yNjE3Olx0XHRyeC1cdTAwM2VsYXN0X3RhaWwgPSByeC1cdTAwM2VsYXN0X2hlYWQ7XG4yNjE4Olx0XHRyeC1cdTAwM2VsYXN0X2hlYWQgPSBsYW43NDN4X3J4X25leHRfaW5kZXgocngsIHJ4LVx1MDAzZWxhc3RfaGVhZCk7XG4yNjE5Olx0XHRyZXN1bHQgPSBSWF9QUk9DRVNTX1JFU1VMVF9CVUZGRVJfUkVDRUlWRUQ7XG4yNjIwOlx0ZG9uZTpcbjI2MjE6XHRcdHJldHVybiByZXN1bHQ7XG4yNjIyOlx0fVxuMjYyMzpcdFxuMjYyNDpcdHN0YXRpYyBpbnQgbGFuNzQzeF9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgd2VpZ2h0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjMyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIEJ1Z2ZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBsYW43NDN4YCBQQ0llIE5JQyBkcml2ZXIsIGFuZCB0aGlzIHBhdGNoIGltbWVkaWF0ZWx5IGNhdWdodCBteSBleWUuIFRoZSBmdW5jdGlvbiBgbGFuNzQzeF9yeF9wcm9jZXNzX2J1ZmZlcmAgaXMgY2FsbGVkIHdpdGhpbiBgbGFuNzQzeF9yeF9uYXBpX3BvbGxgLCBzbyB3ZSYjMzk7cmUgc3F1YXJlbHkgaW4gdGhlIHJlY2VpdmUgcHJvY2Vzc2luZyBwYXRoLCB3aGljaCBpcyB3aGVyZSBJIHdhcyBleHBlY3RpbmcgdG8gYmUuIFRoZSBpc3N1ZSBmbGFnZ2VkIGlzIHRoYXQgYHNrYi0mZ3Q7aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7YCBpcyBiZWluZyBhcHBsaWVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgc3VidGxlIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gY2hlY2tzdW0gb2ZmbG9hZCBwcm9ibGVtcyBhbmQgcG90ZW50aWFsbHkgY29ycnVwdCBkYXRhIG9yIHVubmVjZXNzYXJ5IENQVSBsb2FkLiBUaGUgbGlrZWx5IHByb2JsZW0gaXMgdGhhdCB0aGUgd3JvbmcgYHNrYmAgaXMgYmVpbmcgbW9kaWZpZWQsIG1heWJlIGl0JiMzOTtzIGFuIGVhcmxpZXIgYnVmZmVyLCBvciBhbiB1bnVzZWQgdmFyaWFibGUgYnkgbWlzdGFrZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgd2hlcmUgdGhlIGBza2JgIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYC4gTGV0IG1lIGdvIGZpbmQgdGhhdCBkZWZpbml0aW9uIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQ5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDk1Olx0XG4yNDk2Olx0XHRpZiAocngtXHUwMDNlbGFzdF9oZWFkIFx1MDAzYyAwIHx8IHJ4LVx1MDAzZWxhc3RfaGVhZCBcdTAwM2U9IHJ4LVx1MDAzZXJpbmdfc2l6ZSlcbjI0OTc6XHRcdFx0Z290byBkb25lO1xuMjQ5ODpcdFxuMjQ5OTpcdFx0aWYgKHJ4LVx1MDAzZWxhc3RfaGVhZCA9PSBjdXJyZW50X2hlYWRfaW5kZXgpXG4yNTAwOlx0XHRcdGdvdG8gZG9uZTtcbjI1MDE6XHRcbjI1MDI6XHRcdGRlc2NyaXB0b3IgPSBcdTAwMjZyeC1cdTAwM2VyaW5nX2NwdV9wdHJbcngtXHUwMDNlbGFzdF9oZWFkXTtcbjI1MDM6XHRcdGlmIChsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxuMjUwNDpcdFx0XHRnb3RvIGRvbmU7XG4yNTA1Olx0XHRidWZmZXJfaW5mbyA9IFx1MDAyNnJ4LVx1MDAzZWJ1ZmZlcl9pbmZvW3J4LVx1MDAzZWxhc3RfaGVhZF07XG4yNTA2Olx0XG4yNTA3Olx0XHRpc19sYXN0ID0gbGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkgXHUwMDI2IFJYX0RFU0NfREFUQTBfTFNfO1xuMjUwODpcdFx0aXNfZmlyc3QgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9GU187XG4yNTA5Olx0XG4yNTEwOlx0XHRpZiAoaXNfbGFzdCBcdTAwMjZcdTAwMjYgbGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkgXHUwMDI2IFJYX0RFU0NfREFUQTBfRVhUXykge1xuMjUxMTpcdFx0XHQvKiBleHRlbnNpb24gaXMgZXhwZWN0ZWQgdG8gZm9sbG93ICovXG4yNTEyOlx0XHRcdGludCBpbmRleCA9IGxhbjc0M3hfcnhfbmV4dF9pbmRleChyeCwgcngtXHUwMDNlbGFzdF9oZWFkKTtcbjI1MTM6XHRcbjI1MTQ6XHRcdFx0aWYgKGluZGV4ID09IGN1cnJlbnRfaGVhZF9pbmRleClcbjI1MTU6XHRcdFx0XHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cbjI1MTY6XHRcdFx0XHRnb3RvIGRvbmU7XG4yNTE3Olx0XHRcdGRlc2NfZXh0ID0gXHUwMDI2cngtXHUwMDNlcmluZ19jcHVfcHRyW2luZGV4XTtcbjI1MTg6XHRcdFx0aWYgKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxuMjUxOTpcdFx0XHRcdC8qIGV4dGVuc2lvbiBub3QgeWV0IGF2YWlsYWJsZSAqL1xuMjUyMDpcdFx0XHRcdGdvdG8gZG9uZTtcbjI1MjE6XHRcdFx0aWYgKCEobGUzMl90b19jcHUoZGVzY19leHQtXHUwMDNlZGF0YTApIFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pKVxuMjUyMjpcdFx0XHRcdGdvdG8gbW92ZV9mb3J3YXJkO1xuMjUyMzpcdFx0XHRleHRlbnNpb25faW5kZXggPSBpbmRleDtcbjI1MjQ6XHRcdH1cbjI1MjU6XHRcbjI1MjY6XHRcdC8qIE9ubHkgdGhlIGxhc3QgYnVmZmVyIGluIGEgbXVsdGktYnVmZmVyIGZyYW1lIGNvbnRhaW5zIHRoZSB0b3RhbCBmcmFtZVxuMjUyNzpcdFx0ICogbGVuZ3RoLiBUaGUgY2hpcCBvY2Nhc2lvbmFsbHkgc2VuZHMgbW9yZSBidWZmZXJzIHRoYW4gc3RyaWN0bHlcbjI1Mjg6XHRcdCAqIHJlcXVpcmVkIHRvIHJlYWNoIHRoZSB0b3RhbCBmcmFtZSBsZW5ndGguXG4yNTI5Olx0XHQgKiBIYW5kbGUgdGhpcyBieSBhZGRpbmcgYWxsIGJ1ZmZlcnMgdG8gdGhlIHNrYiBpbiB0aGVpciBlbnRpcmV0eS5cbjI1MzA6XHRcdCAqIE9uY2UgdGhlIHJlYWwgZnJhbWUgbGVuZ3RoIGlzIGtub3duLCB0cmltIHRoZSBza2IuXG4yNTMxOlx0XHQgKi9cbjI1MzI6XHRcdGZyYW1lX2xlbmd0aCA9XG4yNTMzOlx0XHRcdFJYX0RFU0NfREFUQTBfRlJBTUVfTEVOR1RIX0dFVF8obGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkpO1xuMjUzNDpcdFx0YnVmZmVyX2xlbmd0aCA9IGJ1ZmZlcl9pbmZvLVx1MDAzZWJ1ZmZlcl9sZW5ndGg7XG4yNTM1Olx0XHRpc19pY2UgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGExKSBcdTAwMjYgUlhfREVTQ19EQVRBMV9TVEFUVVNfSUNFXztcbjI1MzY6XHRcdGlzX3RjZSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXHUwMDNlZGF0YTEpIFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19UQ0VfO1xuMjUzNzpcdFx0aXNfaWNzbSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXHUwMDNlZGF0YTEpIFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19JQ1NNXztcbjI1Mzg6XHRcbjI1Mzk6XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDslcyVzY2h1bms6ICVkLyVkXCYjMzQ7LFxuMjU0MDpcdFx0XHQgICBpc19maXJzdCA/IFwmIzM0O2ZpcnN0IFwmIzM0OyA6IFwmIzM0OyAgICAgIFwmIzM0OyxcbjI1NDE6XHRcdFx0ICAgaXNfbGFzdCAgPyBcJiMzNDtsYXN0ICBcJiMzNDsgOiBcJiMzNDsgICAgICBcJiMzNDssXG4yNTQyOlx0XHRcdCAgIGZyYW1lX2xlbmd0aCwgYnVmZmVyX2xlbmd0aCk7XG4yNTQzOlx0XG4yNTQ0Olx0XHQvKiBzYXZlIGV4aXN0aW5nIHNrYiwgYWxsb2NhdGUgbmV3IHNrYiBhbmQgbWFwIHRvIGRtYSAqL1xuMjU0NTpcdFx0c2tiID0gYnVmZmVyX2luZm8tXHUwMDNlc2tiO1xuMjU0NjpcdFx0aWYgKGxhbjc0M3hfcnhfaW5pdF9yaW5nX2VsZW1lbnQocngsIHJ4LVx1MDAzZWxhc3RfaGVhZCwgR0ZQX0FUT01JQykpIHtcbjI1NDc6XHRcdFx0LyogZmFpbGVkIHRvIGFsbG9jYXRlIG5leHQgc2tiLlxuMjU0ODpcdFx0XHQgKiBNZW1vcnkgaXMgdmVyeSBsb3cuXG4yNTQ5Olx0XHRcdCAqIERyb3AgdGhpcyBwYWNrZXQgYW5kIHJldXNlIGJ1ZmZlci5cbjI1NTA6XHRcdFx0ICovXG4yNTUxOlx0XHRcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCByeC1cdTAwM2VsYXN0X2hlYWQpO1xuMjU1MjpcdFx0XHQvKiBkcm9wIHBhY2tldCB0aGF0IHdhcyBiZWluZyBhc3NlbWJsZWQgKi9cbjI1NTM6XHRcdFx0ZGV2X2tmcmVlX3NrYl9pcnEocngtXHUwMDNlc2tiX2hlYWQpO1xuMjU1NDpcdFx0XHRyeC1cdTAwM2Vza2JfaGVhZCA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzg2CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDU0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMQU43NDN4IERyaXZlciBBbmFseXNpcyAtIE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldCwgZGVlcCB3aXRoaW4gYGxhbjc0M3hfbWFpbi5jYCwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Q2FuIHN5emthbGxlciBldmVuICpyZWFjaCogdGhpcz8mIzM0OyBJIG1lYW4sIHJlYWxpc3RpY2FsbHksIGlzIHRoaXMgaGFyZHdhcmUgYWNjZXNzaWJsZSBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPwoKSSBuZWVkIHRvIGFwcGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgdGV4dCBzdGF0ZXMgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQuCgpCaW5nby4gVGhlIExBTjc0M3ggaXMsIHdpdGhvdXQgcXVlc3Rpb24sIHZlbmRvci1zcGVjaWZpYyBQQ0llIGV0aGVybmV0IE5JQy4gTm93LCBRRU1VJiMzOTtzIGdvdCAqc29tZSogbmV0d29yayBlbXVsYXRpb24sIGJ1dCBJJiMzOTttIGNlcnRhaW4gaXQgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZm9yIHRoaXMgc3BlY2lmaWMgTWljcm9jaGlwIGNvbnRyb2xsZXIuIEkmIzM5O20gcHJhY3RpY2FsbHkgY2VydGFpbiBvZiBpdCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBpdCBjZXJ0YWluIGFuZCBjb25maXJtOiBObywgUUVNVSBkb2VzbiYjMzk7dCBoYXZlIExBTjc0M3ggZW11bGF0aW9uLiBUaGVyZWZvcmUsIHN5emthbGxlciAqY2Fubm90KiBmdXp6IGl0LiBTeXprYWxsZXIgcnVucyBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuCgpGdXJ0aGVybW9yZSwgbG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgcHJldHR5IG9idmlvdXMgdGhhdCB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLCB0aGUgYml0IHRoaXMgcGF0Y2ggdG91Y2hlcywgaXMgZ29pbmcgdG8gZ2V0IHRyaWdnZXJlZCAqb25seSogd2hlbiB0aGUgaGFyZHdhcmUgaGFzIGdvbmUgdGhyb3VnaCBpbml0aWFsaXphdGlvbiwgaW50ZXJydXB0cyBhcmUgZmlyaW5nLCBOQVBJIGhhcyBraWNrZWQgaW4sIGFuZCBwYWNrZXRzIGhhdmUgYXJyaXZlZCBmcm9tIHRoZSBoYXJkd2FyZSBETUEgZGVzY3JpcHRvciByaW5nLiBBbGwgdmVyeSBoYXJkd2FyZS1zcGVjaWZpYy4KClNvLCB0aGlzIGNsZWFybHkgZml0cyB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBkZXNjcmlwdGlvbjogYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgdGhhdCBuZWVkcyBpdHMgb3duIEFTSUMvUENJZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0JiMzOTtzIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBhIGRlYWQgZW5kIGZvciBzeXprYWxsZXIuCgpMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2ssIGRvdCBhbGwgdGhlIEkmIzM5O3MgYW5kIGNyb3NzIGFsbCB0aGUgVCYjMzk7cy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmb2N1cyBvbi4gYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYWxzbyBiZSBlbXB0eS4gQW5kIHRoZSBgUmVhc29uaW5nYCBzaG91bGQgYmUgYSBjb25jaXNlIHJlY2FwOiBUaGlzIHBhdGNoIG1vZGlmaWVzIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIGBsYW43NDN4X21haW4uY2AsIHBhcnQgb2YgdGhlIGBDT05GSUdfTEFONzQzWGAgZHJpdmVyIGZvciBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIGV0aGVybmV0IGNvbnRyb2xsZXJzLiBUaGlzIGhhcmR3YXJlIGRlbWFuZHMgcGh5c2ljYWwgQVNJQy9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBieSBzeXprYWxsZXIuCgpTYW5pdHkgY2hlY2ssIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGBGb2N1c1N5bWJvbHM6IFtdYCwgYEVuYWJsZUNvbmZpZ3M6IFtdYCwgYW5kIHRoZSBjb25jaXNlIGBSZWFzb25pbmdgLiBFdmVyeXRoaW5nIGxvb2tzIGNvcnJlY3QuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBEb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJYIGJ1ZmZlciBwcm9jZXNzaW5nIGluIHRoZSBsYW43NDN4IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jKS4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIExBTjc0M3gvUENJMTF4MXggUENJZSBHaWdhYml0IEV0aGVybmV0IGRldmljZXMgKENPTkZJR19MQU43NDNYKSwgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NDIuNDA4MzM5MjEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNzQ4MDI5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSWCBidWZmZXIgcHJvY2Vzc2luZyBpbiB0aGUgbGFuNzQzeCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYykuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBMQU43NDN4L1BDSTExeDF4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2VzIChDT05GSUdfTEFONzQzWCksIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDAwOjI0OjQyLjQwODM0MzUzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzNDk4MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzE1YzEwM2E0Zjk2ZmEyZmFjNTEzMjg2NTliZjhlMzI5OWVlMjBjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcXG5pbmRleCAyNGFlNTZhM2M5ZWQ3Li44MmQzZWMyMGJhMjU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXIoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlYWRhcHRlci1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0aWYgKHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcXG4gXFx0XFx0XFx0aWYgKCFpc19pY2UgXFx1MDAyNlxcdTAwMjYgIWlzX3RjZSBcXHUwMDI2XFx1MDAyNiAhaXNfaWNzbSlcXG4tXFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG4rXFx0XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcInNlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1xcXCIsXFxuIFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2Vza2JfaGVhZC1cXHUwMDNlbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NDIuOTAyNDg4MTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDY4MDY0MDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxNWMxMDNhNGY5NmZhMmZhYzUxMzI4NjU5YmY4ZTMyOTllZTIwYzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuaW5kZXggMjRhZTU2YTNjOWVkNy4uODJkM2VjMjBiYTI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5AQCAtMjYwNCw3ICsyNjA0LDcgQEAgc3RhdGljIGludCBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyKHN0cnVjdCBsYW43NDN4X3J4ICpyeClcbiBcdFx0XHRcdFx0XHRcdHJ4LVx1MDAzZWFkYXB0ZXItXHUwMDNlbmV0ZGV2KTtcbiBcdFx0aWYgKHJ4LVx1MDAzZWFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYQ1NVTSkge1xuIFx0XHRcdGlmICghaXNfaWNlIFx1MDAyNlx1MDAyNiAhaXNfdGNlIFx1MDAyNlx1MDAyNiAhaXNfaWNzbSlcbi1cdFx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbitcdFx0XHRcdHJ4LVx1MDAzZXNrYl9oZWFkLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xuIFx0XHR9XG4gXHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcInNlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wiLFxuIFx0XHRcdCAgIHJ4LVx1MDAzZXNrYl9oZWFkLVx1MDAzZWxlbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0Mi45MDI0OTAzNzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MzM1OTcwMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBhcHBlYXJzIHRvIGludm9sdmUgc2V0dGluZyB0aGUgYGlwX3N1bW1lZGAgZmllbGQgb2YgYSBgc2tiX2hlYWRgIHN0cnVjdHVyZSB0byBgQ0hFQ0tTVU1fVU5ORUNFU1NBUllgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB3aXRoaW4gYSBjaGVja3N1bS1yZWxhdGVkIGJsb2NrLiBJdCBhcHBlYXJzIHRoYXQgaXQgaXMgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBoYXJkd2FyZSBvZmZsb2FkIG9mIGNoZWNrc3VtIGNhbGN1bGF0aW9ucy4gVGhpcyB3b3VsZCBvY2N1ciBpZiB0aGUgaGFyZHdhcmUgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuXG5cbk5vdywgSSBuZWVkIGEgbGl0dGxlIG1vcmUgY29udGV4dC4gV2hhdCBleGFjdGx5IGlzIGBsYW43NDN4YD8gSXMgdGhpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEV0aGVybmV0IGNhcmQ/IElzIGl0IGEgTWljcm9jaGlwIExBTjc0M3ggUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIGFzIHRoZSBmaWxlIHBhdGggc3VnZ2VzdHM/IEknbGwgcXVpY2tseSB2ZXJpZnkgdXNpbmcgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGJlIHN1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBiZWluZyBhZGRyZXNzZWQgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgaGFyZHdhcmUsIEkgY2FuIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiB0aGUgY2hlY2tzdW1taW5nIHBlcmZvcm1hbmNlIHdpdGggYSBsaXR0bGUgbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0OC4yMzg0NjMxMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NDY4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTEFONzQzWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2OTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTM2PWNvbmZpZyBFTkNYMjRKNjAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo0NTpjb25maWcgTEFONzQzWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJMQU43NDN4IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRU5DWDI0SjYwMCkgKz0gZW5jeDI0ajYwMC5vIGVuY3gyNGo2MDAtcmVnbWFwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTEFONzQzWCkgKz0gbGFuNzQzeC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMtLyogZWVwcm9tICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0OiNkZWZpbmUgTEFONzQzWF9FRVBST01fTUFHSUNcXHRcXHQgICAgKDB4NzRBNSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTU6I2RlZmluZSBMQU43NDNYX09UUF9NQUdJQ1xcdFxcdCAgICAoMHg3NEYzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNi0jZGVmaW5lIEVFUFJPTV9JTkRJQ0FUT1JfMVxcdFxcdCAgICAoMHhBNSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjg6I2RlZmluZSBMQU43NDNYX0NTUl9SRUFEX09QKG9mZnNldClcXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNjI9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjY6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIU19PVFBfU1RBVFVTLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2Ny1cXHRcXHRcXHRcXHQgICEodmFsIFxcdTAwMjYgT1RQX1NUQVRVU19CVVNZXyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NDkxPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDk1OlxcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgSFNfRTJQX0NNRCwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTYtXFx0XFx0XFx0XFx0ICAoISh2YWwgXFx1MDAyNiBIU19FMlBfQ01EX0VQQ19CVVNZXykgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02MTY9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyMDpcXHRpZiAoYWRhcHRlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyMS1cXHRcXHRyZXR1cm4gYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXggPyBNQVhfSFNfT1RQX1NJWkUgOiBNQVhfT1RQX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NjI2PXN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzMjpcXHRpZiAoYWRhcHRlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMzLVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02NTE9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU3OlxcdGlmIChhZGFwdGVyLVxcdTAwM2VmbGFncyBcXHUwMDI2IExBTjc0M1hfQURBUFRFUl9GTEFHX09UUCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTgtXFx0XFx0LyogQmV3YXJlISAgT1RQIGlzIE9uZSBUaW1lIFByb2dyYW1taW5nIE9OTFkhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY1OTpcXHRcXHRpZiAoZWUtXFx1MDAzZW1hZ2ljID09IExBTjc0M1hfT1RQX01BR0lDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2MC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjY3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2ODpcXHRcXHRpZiAoZWUtXFx1MDAzZW1hZ2ljID09IExBTjc0M1hfRUVQUk9NX01BR0lDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2OS1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9OTM0PXN0YXRpYyB1MzIgbGFuNzQzeF9ldGh0b29sX2dldF9yeF9yaW5nX2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjkzNjpcXHRyZXR1cm4gTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTExOTg9c3RhdGljIHZvaWQgbGFuNzQzeF9jb21tb25fcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEyMDM6XFx0bWVtc2V0KHAsIDAsIChNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1MgKiBzaXplb2YodTMyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTEzMTA9c3RhdGljIGludCBsYW43NDN4X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMTItXFx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMTM6XFx0dTMyIG51bV9yZWdzID0gTUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE1LVxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19zZ21paV9lbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMxNjpcXHRcXHRudW1fcmVncyArPSBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0xMzIxPXN0YXRpYyB2b2lkIGxhbjc0M3hfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzMwOlxcdHJlZ3MtXFx1MDAzZXZlcnNpb24gPSBMQU43NDNYX0VUSF9SRUdfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzMS1cXHRyZWdzLVxcdTAwM2VsZW4gPSByZWdzX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzMzLVxcdGxhbjc0M3hfY29tbW9uX3JlZ3MoZGV2LCBwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzNDpcXHRwID0gKHUzMiAqKXAgKyBNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzNy1cXHRcXHRsYW43NDN4X3NnbWlpX3JlZ3MoZGV2LCBwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzODpcXHRcXHRwID0gKHUzMiAqKXAgKyBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6NDojaWZuZGVmIF9MQU43NDNYX0VUSFRPT0xfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo1OiNkZWZpbmUgX0xBTjc0M1hfRVRIVE9PTF9IXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6OTojZGVmaW5lIExBTjc0M1hfRVRIX1JFR19WRVJTSU9OICAgICAgICAgMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MTE9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMzEtXFx0LyogQWRkIG5ldyByZWdpc3RlcnMgYWJvdmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6MzI6XFx0TUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MzU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAwLVxcdC8qIEFkZCBuZXcgcmVnaXN0ZXJzIGFib3ZlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwMTpcXHRNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaD0xMDQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW43NDN4X2V0aHRvb2xfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwNjojZW5kaWYgLyogX0xBTjc0M1hfRVRIVE9PTF9IICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTQ1PXZvaWQgbGFuNzQzeF9jc3Jfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1MTojZGVmaW5lIExBTjc0M1hfQ1NSX1JFQURfT1Aob2Zmc2V0KVxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE1Mz1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2xpZ2h0X3Jlc2V0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNjE6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIV19DRkcsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE2Mi1cXHRcXHRcXHRcXHQgICEoZGF0YSBcXHUwMDI2IEhXX0NGR19MUlNUXyksIDEwMDAwMCwgMTAwMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE2NT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX3dhaXRfZm9yX2JpdF9hdG9taWMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE3MjpcXHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0X2F0b21pYyhMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3My1cXHRcXHRcXHRcXHRcXHQgdGFyZ2V0X3ZhbHVlID09ICEhKGRhdGEgXFx1MDAyNiBiaXRfbWFzayksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbGFuNzQzeF9jc3Jfd2FpdF9mb3JfYml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxODQ6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE4NS1cXHRcXHRcXHRcXHQgIHRhcmdldF92YWx1ZSA9PSAhIShkYXRhIFxcdTAwMjYgYml0X21hc2spLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxMDpcXHRjc3ItXFx1MDAzZWZsYWdzID0gTEFONzQzWF9DU1JfRkxBR19TVVBQT1JUU19JTlRSX0FVVE9fU0VUX0NMUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjExLVxcdHN3aXRjaCAoY3NyLVxcdTAwM2VpZF9yZXYgXFx1MDAyNiBJRF9SRVZfQ0hJUF9SRVZfTUFTS18pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjEyLVxcdGNhc2UgSURfUkVWX0NISVBfUkVWX0EwXzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEzOlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19BMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjE0OlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfkxBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2LVxcdGNhc2UgSURfUkVWX0NISVBfUkVWX0IwXzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjE3OlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19CMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTIzND1zdGF0aWMgdm9pZCBsYW43NDN4X3R4X2lzcih2b2lkICpjb250ZXh0LCB1MzIgaW50X3N0cywgdTMyIGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0MC1cXHRsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNDE6XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0Mi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfRU5fQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjUxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTItXFx0XFx0XFx0ZG1hY19pbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBETUFDX0lOVF9TVFMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1NC1cXHRcXHRcXHRkbWFjX2ludF9zdHMgPSBpb2NfYml0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNTU6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTYtXFx0XFx0XFx0ZG1hY19pbnRfZW4gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9Mjc1PXN0YXRpYyB2b2lkIGxhbjc0M3hfcnhfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODE6XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4Mi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfRU5fQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjkxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yOTItXFx0XFx0XFx0ZG1hY19pbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBETUFDX0lOVF9TVFMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5NC1cXHRcXHRcXHRkbWFjX2ludF9zdHMgPSByeF9mcmFtZV9iaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI5NTpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5Ni1cXHRcXHRcXHRkbWFjX2ludF9lbiA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTY9c3RhdGljIHZvaWQgbGFuNzQzeF9pbnRyX3NoYXJlZF9pc3Iodm9pZCAqY29udGV4dCwgdTMyIGludF9zdHMsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjEtXFx0aWYgKGludF9zdHMgXFx1MDAyNiBJTlRfQklUX0FMTF9SWF8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzIyOlxcdFxcdGZvciAoY2hhbm5lbCA9IDA7IGNoYW5uZWwgXFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMy1cXHRcXHRcXHRjaGFubmVsKyspIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNTk9c3RhdGljIGlycXJldHVybl90IGxhbjc0M3hfaW50cl9lbnRyeV9pc3IoaW50IGlycSwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzY3OlxcdGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY4LVxcdFxcdGludF9zdHMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9TVFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjktXFx0fSBlbHNlIGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcwOlxcdFxcdCAgIChMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcxOlxcdFxcdCAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3Mi1cXHRcXHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTX1IyQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODE6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zODItXFx0XFx0LyogZGlzYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODc6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4OC1cXHRcXHQvKiBkaXNhYmxlIG1hc3RlciBpbnRlcnJ1cHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM5MTpcXHRpZiAodmVjdG9yLVxcdTAwM2VmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zOTItXFx0XFx0aW50X2VuYWJsZXMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDEyOlxcdGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDEzLVxcdFxcdC8qIGVuYWJsZSBtYXN0ZXIgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MTY6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDE3LVxcdFxcdC8qIGVuYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9NDQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9pbnRyX3JlZ2lzdGVyX2lzcihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQ2NC1cXHRcXHRcXHQgIGxhbjc0M3hfaW50cl9lbnRyeV9pc3IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjQ2NTpcXHRcXHRcXHQgIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRCkgP1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00NjYtXFx0XFx0XFx0ICBJUlFGX1NIQVJFRCA6IDAsIERSSVZFUl9OQU1FLCB2ZWN0b3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTUzMD1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTU0LVxcdFxcdFxcdFxcdCAgICAxICsgdXNlZF90eF9jaGFubmVscyArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU1NTpcXHRcXHRcXHRcXHQgICAgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU3MC1cXHRpZiAoIWludHItXFx1MDAzZW51bWJlcl9vZl92ZWN0b3JzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU3MTpcXHRcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NzItXFx0XFx0XFx0aWYgKCFwY2lfZW5hYmxlX21zaShhZGFwdGVyLVxcdTAwM2VwZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwMC1cXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX01BUDIsIDB4MDAwMDAwMDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MDE6XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMjpcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjAzOlxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNDpcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjA2LVxcdGlmIChpbnRyLVxcdTAwM2V1c2luZ192ZWN0b3JzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNzpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjA4OlxcdFxcdFxcdCBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjA5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxMDpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTE6XFx0XFx0XFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfTUFTVEVSX0VOQUJMRV9TRVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTI6XFx0XFx0XFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjEzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTU6XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE2OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE3OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTg6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE5OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYyMDpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MjE6XFx0XFx0ZmxhZ3MgfD0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjIyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzODpcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2Mzk6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDA6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDE6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDI6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDM6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDY6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NDctXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlzX3BjaTExeDF4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0ODpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIExBTjc0M1hfSU5UX01PRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0OTpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY1MC1cXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX01BUDAsIDB4MDAwMDc2NTQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY2OS1cXHRcXHRcXHRudW1iZXJfb2ZfdHhfdmVjdG9ycyA9IHVzZWRfdHhfY2hhbm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3MDpcXHRcXHRmbGFncyA9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcxOlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NzI6XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjczOlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3NDpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc1OlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY3Ny1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc4OlxcdFxcdCAgIExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc5OlxcdFxcdFxcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjgwOlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MTpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MjpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjgzLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MDEtXFx0XFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MDI6XFx0XFx0XFx0ICAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcwMy1cXHRcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMTpcXHRcXHRpZiAobnVtYmVyX29mX3J4X3ZlY3RvcnMgXFx1MDAzZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMjpcXHRcXHRcXHRudW1iZXJfb2ZfcnhfdmVjdG9ycyA9IExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTQ6XFx0XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNTpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzE2OlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNzpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTg6XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0lTUl9DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxOTpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjEtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyMjpcXHRcXHQgICAgTEFONzQzWF9DU1JfRkxBR19TVVBQT1JUU19JTlRSX0FVVE9fU0VUX0NMUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjM6XFx0XFx0XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyNDpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19TRVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjU6XFx0XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI2OlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI3OlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczNi1cXHRcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3Mzc6XFx0XFx0XFx0ICAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczOC1cXHRcXHRcXHRcXHRpbnRfdmVjX2VuX2F1dG9fY2xyIHw9IElOVF9WRUNfRU5fKHZlY3Rvcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9ODA4PXN0YXRpYyBpbnQgbGFuNzQzeF9tYWNfbWlpX3dhaXRfdGlsbF9ub3RfYnVzeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTgxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6ODEyOlxcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgTUFDX01JSV9BQ0MsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTgxMy1cXHRcXHRcXHRcXHQgICEoZGF0YSBcXHUwMDI2IE1BQ19NSUlfQUNDX01JSV9CVVNZXyksIDAsIDEwMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTk0Mz1zdGF0aWMgaW50IGxhbjc0M3hfc2dtaWlfd2FpdF90aWxsX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtOTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo5NDg6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIFNHTUlJX0FDQywgZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtOTQ5LVxcdFxcdFxcdFxcdCAhKGRhdGEgXFx1MDAyNiBTR01JSV9BQ0NfU0dNSUlfQlpZXyksIDEwMCwgMTAwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTM3OT1zdGF0aWMgaW50IGxhbjc0M3hfaHdfcmVzZXRfcGh5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTM4OTpcXHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIFBNVF9DVEwsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzOTAtXFx0XFx0XFx0XFx0ICAoIShkYXRhIFxcdTAwMjYgUE1UX0NUTF9FVEhfUEhZX1JTVF8pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTUxNj1zdGF0aWMgaW50IGxhbjc0M3hfZG1hY19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTUzOC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1Mzk6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1NDAtXFx0XFx0ZGF0YSB8PSBETUFDX0NGR19DT0FMX0VOXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNzM0PXN0YXRpYyB2b2lkIGxhbjc0M3hfcnhfY2ZnX2JfdHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE3NDE6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDItXFx0XFx0Y2hhbm5lbF9udW1iZXIgPSBhZGFwdGVyLVxcdTAwM2VyeFtpbmRleF0uY2hhbm5lbF9udW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTk1NT1zdGF0aWMgdm9pZCBsYW43NDN4X3R4X2ZyYW1lX2VuZChzdHJ1Y3QgbGFuNzQzeF90eCAqdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MTpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5Mi1cXHRcXHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX1RPUF9JTlRfVkVDX0VOXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MzpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5NC1cXHRcXHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX0RNQUNfSU5UX0VOXyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjA5Mz1zdGF0aWMgaW50IGxhbjc0M3hfdHhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTAyLVxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEwMzpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxMDQtXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRE1BQ19JTlRfU1RTLCBpb2NfYml0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yMTU4PXN0YXRpYyBpbnQgbGFuNzQzeF90eF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfdHggKnR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxNjU6XFx0dHgtXFx1MDAzZXJpbmdfc2l6ZSA9IExBTjc0M1hfVFhfUklOR19TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTY2LVxcdGlmICh0eC1cXHUwMDNlcmluZ19zaXplIFxcdTAwMjYgflRYX0NGR19CX1RYX1JJTkdfTEVOX01BU0tfKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjI1MT1zdGF0aWMgaW50IGxhbjc0M3hfdHhfb3BlbihzdHJ1Y3QgbGFuNzQzeF90eCAqdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjI5MS1cXHRkYXRhIHw9ICgodHgtXFx1MDAzZXJpbmdfc2l6ZSkgXFx1MDAyNiBUWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIyOTI6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIyOTMtXFx0XFx0ZGF0YSB8PSBUWF9DRkdfQl9URE1BQkxfNTEyXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk3LVxcdGRhdGEgPSBUWF9DRkdfQV9UWF9UTVJfSFBXQl9TRUxfSU9DXyB8IFRYX0NGR19BX1RYX0hQX1dCX0VOXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjI5ODpcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk5LVxcdFxcdGRhdGEgfD0gVFhfQ0ZHX0FfVFhfSFBfV0JfT05fSU5UX1RNUl87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMyOS1cXHRkYXRhID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMDpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzMxLVxcdFxcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfVE9QX0lOVF9FTl9BVVRPX0NMUl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzMzI6XFx0aWYgKHR4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMzMy1cXHRcXHRkYXRhIHw9IFRYX0NGR19DX1RYX0RNQV9JTlRfU1RTX0FVVE9fQ0xSXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzNDpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SMkMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzUtXFx0XFx0ZGF0YSB8PSBUWF9DRkdfQ19UWF9JTlRfU1RTX1IyQ19NT0RFX01BU0tfO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMzM2OlxcdGlmICh0eC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMzNy1cXHRcXHRkYXRhIHw9IFRYX0NGR19DX1RYX0lOVF9FTl9SMkNfO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzNDA6XFx0aWYgKCEodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzNDEtXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX1NFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjI0PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgd2VpZ2h0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI2MzI6XFx0aWYgKHJ4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzMtXFx0XFx0LyogY2xlYXIgaW50IHN0YXR1cyBiaXQgYmVmb3JlIHJlYWRpbmcgcGFja2V0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjY0OS1cXHQvKiByZS1hcm0gaW50ZXJydXB0cywgbXVzdCB3cml0ZSB0byByeCB0YWlsIG9uIHNvbWUgY2hpcCB2YXJpYW50cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUwOlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjUxLVxcdFxcdHJ4X3RhaWxfZmxhZ3MgfD0gUlhfVEFJTF9TRVRfVE9QX0lOVF9WRUNfRU5fO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUyOlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2NTMtXFx0XFx0cnhfdGFpbF9mbGFncyB8PSBSWF9UQUlMX1NFVF9UT1BfSU5UX0VOXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjk5PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI3MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI3MDc6XFx0cngtXFx1MDAzZXJpbmdfc2l6ZSA9IExBTjc0M1hfUlhfUklOR19TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA4LVxcdGlmIChyeC1cXHUwMDNlcmluZ19zaXplIFxcdTAwM2M9IDEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yODAwPXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9vcGVuKHN0cnVjdCBsYW43NDN4X3J4ICpyeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODM0LVxcdGRhdGEgPSBSWF9DRkdfQV9SWF9IUF9XQl9FTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4MzU6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjgzNi1cXHRcXHRkYXRhIHw9IChSWF9DRkdfQV9SWF9XQl9PTl9JTlRfVE1SXyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg1NC1cXHRkYXRhIHw9ICgocngtXFx1MDAzZXJpbmdfc2l6ZSkgXFx1MDAyNiBSWF9DRkdfQl9SWF9SSU5HX0xFTl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NTU6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NTYtXFx0XFx0ZGF0YSB8PSBSWF9DRkdfQl9SRE1BQkxfNTEyXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY0LVxcdGRhdGEgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY1OlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fQ0xFQVIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NjYtXFx0XFx0ZGF0YSB8PSBSWF9DRkdfQ19SWF9UT1BfSU5UX0VOX0FVVE9fQ0xSXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mjg2NzpcXHRpZiAocngtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY4LVxcdFxcdGRhdGEgfD0gUlhfQ0ZHX0NfUlhfRE1BX0lOVF9TVFNfQVVUT19DTFJfO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY5OlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1IyQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg3MC1cXHRcXHRkYXRhIHw9IFJYX0NGR19DX1JYX0lOVF9TVFNfUjJDX01PREVfTUFTS187XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NzE6XFx0aWYgKHJ4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfUjJDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODcyLVxcdFxcdGRhdGEgfD0gUlhfQ0ZHX0NfUlhfSU5UX0VOX1IyQ187XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzI5Mj1zdGF0aWMgaW50IGxhbjc0M3hfbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzI5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMwMDpcXHRmb3IgKGluZGV4ID0gMDsgaW5kZXggXFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4KyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMDEtXFx0XFx0bGFuNzQzeF9yeF9jbG9zZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcnhbaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMzE0PXN0YXRpYyBpbnQgbGFuNzQzeF9uZXRkZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzMzg6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzktXFx0XFx0cmV0ID0gbGFuNzQzeF9yeF9vcGVuKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeFtpbmRleF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzNzEtY2xvc2Vfcng6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzNzI6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzNzMtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXJ4W2luZGV4XS5yaW5nX2NwdV9wdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU1MD1zdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1ODMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzU4NDpcXHRcXHRhZGFwdGVyLVxcdTAwM2VtYXhfdHhfY2hhbm5lbHMgPSBMQU43NDNYX01BWF9UWF9DSEFOTkVMUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzU4NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V1c2VkX3R4X2NoYW5uZWxzID0gTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1heF92ZWN0b3JfY291bnQgPSBMQU43NDNYX01BWF9WRUNUT1JfQ09VTlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1ODctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2MTA6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MTEtXFx0XFx0YWRhcHRlci1cXHUwMDNlcnhbaW5kZXhdLmFkYXB0ZXIgPSBhZGFwdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2OTE9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzAyLVxcdFxcdFxcdFxcdFxcdFxcdCBQQ0kxMVgxWF9VU0VEX1RYX0NIQU5ORUxTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzAzOlxcdFxcdFxcdFxcdFxcdFxcdCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzA0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcwNi1cXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA3OlxcdFxcdFxcdFxcdFxcdFxcdCBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MDg6XFx0XFx0XFx0XFx0XFx0XFx0IExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjAtXFx0XFx0XFx0ICAgICAgTkVUSUZfTVNHX0lGRE9XTiB8IE5FVElGX01TR19UWF9RVUVVRUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjE6XFx0bmV0ZGV2LVxcdTAwM2VtYXhfbXR1ID0gTEFONzQzWF9NQVhfRlJBTUVfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo0OiNpZm5kZWYgX0xBTjc0M1hfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo1OiNkZWZpbmUgX0xBTjc0M1hfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC02LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTE5LSNkZWZpbmUgSURfUkVWX0lEX0xBTjc0MzFfXFx0XFx0KDB4NzQzMTAwMDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjIwOiNkZWZpbmUgSURfUkVWX0lEX0xBTjc0M1hfXFx0XFx0KDB4NzQzMDAwMDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTIxLSNkZWZpbmUgSURfUkVWX0lEX0EwMTFfXFx0XFx0XFx0KDB4QTAxMTAwMDApXFx0Ly8gUENJMTEwMTBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0yNC0jZGVmaW5lIElEX1JFVl9JU19WQUxJRF9DSElQX0lEXyhpZF9yZXYpXFx0ICAgIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6MjU6XFx0KCgoKGlkX3JldikgXFx1MDAyNiAweEZGRjAwMDAwKSA9PSBJRF9SRVZfSURfTEFONzQzWF8pIHx8IFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtMjYtXFx0ICgoKGlkX3JldikgXFx1MDAyNiAweEZGMEYwMDAwKSA9PSBJRF9SRVZfSURfQTBYMV8pKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODYyOiNkZWZpbmUgTEFONzQzWF9NQVhfUlhfQ0hBTk5FTFNcXHRcXHQoNClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODYzOiNkZWZpbmUgTEFONzQzWF9NQVhfVFhfQ0hBTk5FTFNcXHRcXHQoMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY0LSNkZWZpbmUgUENJMTFYMVhfTUFYX1RYX0NIQU5ORUxTXFx0KDQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oPTg2NT1zdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg2NzojZGVmaW5lIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMU1xcdCg0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4Njg6I2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcXHQoMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY5LSNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1xcdCg0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzA6I2RlZmluZSBMQU43NDNYX0lOVF9NT0RcXHQoNDAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3MjojaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyBcXHUwMDNlIExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzM6I2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg3NC0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODc1OiNpZiAoTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTIFxcdTAwM2UgTEFONzQzWF9NQVhfVFhfQ0hBTk5FTFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3NjojZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODc3LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODk1OiNkZWZpbmUgTEFONzQzWF9DU1JfRkxBR19JU19BMFxcdFxcdFxcdFxcdEJJVCgwKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0OC4yOTI5MTQzMDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNzEwMjc3NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIERpdmUgZm9yIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZGV2aWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnYC4gVGhhdCBLY29uZmlnIGZpbGUgaXMgdGhlIGxpbmNocGluIGZvciBjb25maWd1cmluZyB0aGUgTWljcm9jaGlwIEV0aGVybmV0IGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEl0IHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNsdWVzOiB0aGUgc3BlY2lmaWMgZGV2aWNlIHR5cGUgc3VwcG9ydGVkLCB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGZlYXR1cmVzIGxpa2UgRE1BLCBpbnRlcnJ1cHRzLCBsaW5rIHNwZWVkIG5lZ290aWF0aW9uKSwgYW5kLCBjcnVjaWFsbHksIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEtub3dpbmcgdGhlIGRldmljZSdzIGV4YWN0IElELCBvciBhdCBsZWFzdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzLCBpcyB0aGUgZmlyc3Qgc3RlcC4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIGFuZCB3aGVyZSB0byBsb29rIG5leHQgZm9yIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgb3BlcmF0aW9uLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1MS4wMDMxOTM3NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHQgICAgICBTdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEVOQzQyNEo2MDAvNjI0SjYwMCBldGhlcm5ldCBjaGlwLlxcbiAgNDE6XFx0XFxuICA0MjpcXHQgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG4gIDQzOlxcdCAgICAgIGNhbGxlZCBlbmN4MjRqNjAwLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgTEFONzQzWFxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkxBTjc0M3ggc3VwcG9ydFxcXCJcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0OTpcXHRcXHRzZWxlY3QgRklYRURfUEhZXFxuICA1MDpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gIDUxOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNTI6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGFuZCBQQ0kxMXgxeCBmYW1pbGllcyBvZiBQQ0lcXG4gIDU1OlxcdFxcdCAgRXhwcmVzcyBFdGhlcm5ldCBkZXZpY2VzXFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuICA1ODpcXHRcXHQgIGNhbGxlZCBsYW43NDN4LlxcbiAgNTk6XFx0XFxuICA2MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcXFwiXFxuICA2MTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1xcXCJcXG4gIDYzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2ZkbWEvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdFxcbiAgNjY6XFx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1MS4wMDMyNTI0MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MDA5MTEwOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFN1cHBvcnQgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHJlcXVlc3QgdG8gYXNzZXNzIGZ1enppbmcgcG90ZW50aWFsIGZvciB0aGUgTWljcm9jaGlwIExBTjc0M3ggYW5kIFBDSTExeDF4IGZhbWlsaWVzIG9mIFBDSSBFeHByZXNzIEV0aGVybmV0IGRldmljZXMuIFRoZSBrZXkgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZywgYW5kIHRoZSBpbnN0cnVjdGlvbiBzZXQgaXMgY2xlYXI6IGlmIHRoZSBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBuZWdhdGl2ZSBjYXRlZ29yeSwgd2UgYmFpbCBvdXQgZWFybHkuIFRoYXQncyBhIGdvb2QgYXBwcm9hY2ggdG8gY29uc2VydmUgcmVzb3VyY2VzLlxuXG5SaWdodCwgc28gc2VjdGlvbiAyIGdpdmVzIHVzIHRoZSBcIldIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhLiBUaGUgbW9zdCByZWxldmFudCBvbmUgaGVyZSBpcyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnPigKYgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiBUaGlzIGlzIHRoZSBjcnV4LlxuXG5JIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIExBTjc0M3ggaXMgZW11bGF0ZWQuIExldCBtZSBzZWUuLi4gSSBoYXZlIGEgbGlzdCBvZiBzdGFuZGFyZCBRRU1VIG5ldHdvcmsgZGV2aWNlcyBpbiBmcm9udCBvZiBtZTogZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZpcnRpby1uZXQtcGNpLCByb2NrZXIsIHZteG5ldDMsIHVzYi1uZXQuIE5vcGUsIG5vdCBzZWVpbmcgTEFONzQzeCBhbnl3aGVyZSBpbiB0aGVyZS4gVGhlc2UgZGV2aWNlcyBhcmUgcGh5c2ljYWwgUENJZSBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXJzIChNaWNyb2NoaXAgTEFONzQzMCwgTEFONzQzMSwgUENJMTEwMTAsIFBDSTExNDE0IGV0YyksIHNvIGl0IHN0YW5kcyB0byByZWFzb24gdGhhdCB0aGV5IGFyZW4ndCBlbXVsYXRlZC4gSSBjYW4gYmUgcHJldHR5IGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBpdCdzIE5PVCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2gsIGJ5IGltcGxpY2F0aW9uLCBtYWtlcyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UgY2hlY2sgdGhlIGNvbnRleHQgb2YgdGhlIExBTjc0M3ggZnVuY3Rpb24gaW4gdGhlIGBsYW43NDN4X21haW4uY2AgZmlsZSB0byBmdXJ0aGVyIGNlbWVudCBvdXIgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MjIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1NS4wMTIzNjU2OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1ODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1ODU6XFx0XFx0XFx0dTMyIHRzX3NlYztcXG4yNTg2OlxcdFxcdFxcdHUzMiB0c19uc2VjO1xcbjI1ODc6XFx0XFxuMjU4ODpcXHRcXHRcXHR0c19zZWMgPSBsZTMyX3RvX2NwdShkZXNjX2V4dC1cXHUwMDNlZGF0YTEpO1xcbjI1ODk6XFx0XFx0XFx0dHNfbnNlYyA9IChsZTMyX3RvX2NwdShkZXNjX2V4dC1cXHUwMDNlZGF0YTIpIFxcdTAwMjZcXG4yNTkwOlxcdFxcdFxcdFxcdCAgUlhfREVTQ19EQVRBMl9UU19OU19NQVNLXyk7XFxuMjU5MTpcXHRcXHRcXHRpZiAocngtXFx1MDAzZXNrYl9oZWFkKVxcbjI1OTI6XFx0XFx0XFx0XFx0c2tiX2h3dHN0YW1wcyhyeC1cXHUwMDNlc2tiX2hlYWQpLVxcdTAwM2Vod3RzdGFtcCA9XFxuMjU5MzpcXHRcXHRcXHRcXHRcXHRrdGltZV9zZXQodHNfc2VjLCB0c19uc2VjKTtcXG4yNTk0OlxcdFxcdFxcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCBleHRlbnNpb25faW5kZXgpO1xcbjI1OTU6XFx0XFx0XFx0cngtXFx1MDAzZWxhc3RfaGVhZCA9IGV4dGVuc2lvbl9pbmRleDtcXG4yNTk2OlxcdFxcdFxcdG5ldGRldl9kYmcobmV0ZGV2LCBcXFwicHJvY2VzcyBleHRlbnNpb25cXFwiKTtcXG4yNTk3OlxcdFxcdH1cXG4yNTk4OlxcdFxcbjI1OTk6XFx0XFx0aWYgKGlzX2xhc3QgXFx1MDAyNlxcdTAwMjYgcngtXFx1MDAzZXNrYl9oZWFkKVxcbjI2MDA6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkID0gbGFuNzQzeF9yeF90cmltX3NrYihyeC1cXHUwMDNlc2tiX2hlYWQsIGZyYW1lX2xlbmd0aCk7XFxuMjYwMTpcXHRcXG4yNjAyOlxcdFxcdGlmIChpc19sYXN0IFxcdTAwMjZcXHUwMDI2IHJ4LVxcdTAwM2Vza2JfaGVhZCkge1xcbjI2MDM6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHJ4LVxcdTAwM2Vza2JfaGVhZCxcXG4yNjA0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYpO1xcbjI2MDU6XFx0XFx0XFx0aWYgKHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcXG4yNjA2OlxcdFxcdFxcdFxcdGlmICghaXNfaWNlIFxcdTAwMjZcXHUwMDI2ICFpc190Y2UgXFx1MDAyNlxcdTAwMjYgIWlzX2ljc20pXFxuMjYwNzpcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlc2tiX2hlYWQtXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xcbjI2MDg6XFx0XFx0XFx0fVxcbjI2MDk6XFx0XFx0XFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFxcXCJzZW5kaW5nICVkIGJ5dGUgZnJhbWUgdG8gT1NcXFwiLFxcbjI2MTA6XFx0XFx0XFx0XFx0ICAgcngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2VsZW4pO1xcbjI2MTE6XFx0XFx0XFx0bmFwaV9ncm9fcmVjZWl2ZShcXHUwMDI2cngtXFx1MDAzZW5hcGksIHJ4LVxcdTAwM2Vza2JfaGVhZCk7XFxuMjYxMjpcXHRcXHRcXHRyeC1cXHUwMDNlc2tiX2hlYWQgPSBOVUxMO1xcbjI2MTM6XFx0XFx0fVxcbjI2MTQ6XFx0XFxuMjYxNTpcXHRtb3ZlX2ZvcndhcmQ6XFxuMjYxNjpcXHRcXHQvKiBwdXNoIHRhaWwgYW5kIGhlYWQgZm9yd2FyZCAqL1xcbjI2MTc6XFx0XFx0cngtXFx1MDAzZWxhc3RfdGFpbCA9IHJ4LVxcdTAwM2VsYXN0X2hlYWQ7XFxuMjYxODpcXHRcXHRyeC1cXHUwMDNlbGFzdF9oZWFkID0gbGFuNzQzeF9yeF9uZXh0X2luZGV4KHJ4LCByeC1cXHUwMDNlbGFzdF9oZWFkKTtcXG4yNjE5OlxcdFxcdHJlc3VsdCA9IFJYX1BST0NFU1NfUkVTVUxUX0JVRkZFUl9SRUNFSVZFRDtcXG4yNjIwOlxcdGRvbmU6XFxuMjYyMTpcXHRcXHRyZXR1cm4gcmVzdWx0O1xcbjI2MjI6XFx0fVxcbjI2MjM6XFx0XFxuMjYyNDpcXHRzdGF0aWMgaW50IGxhbjc0M3hfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NTUuMDEyNTIxNzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjg5MzQyMDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBCdWdmaXgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGxhbjc0M3hgIFBDSWUgTklDIGRyaXZlciwgYW5kIHRoaXMgcGF0Y2ggaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gVGhlIGZ1bmN0aW9uIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYCBpcyBjYWxsZWQgd2l0aGluIGBsYW43NDN4X3J4X25hcGlfcG9sbGAsIHNvIHdlJ3JlIHNxdWFyZWx5IGluIHRoZSByZWNlaXZlIHByb2Nlc3NpbmcgcGF0aCwgd2hpY2ggaXMgd2hlcmUgSSB3YXMgZXhwZWN0aW5nIHRvIGJlLiBUaGUgaXNzdWUgZmxhZ2dlZCBpcyB0aGF0IGBza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7YCBpcyBiZWluZyBhcHBsaWVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgc3VidGxlIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gY2hlY2tzdW0gb2ZmbG9hZCBwcm9ibGVtcyBhbmQgcG90ZW50aWFsbHkgY29ycnVwdCBkYXRhIG9yIHVubmVjZXNzYXJ5IENQVSBsb2FkLiBUaGUgbGlrZWx5IHByb2JsZW0gaXMgdGhhdCB0aGUgd3JvbmcgYHNrYmAgaXMgYmVpbmcgbW9kaWZpZWQsIG1heWJlIGl0J3MgYW4gZWFybGllciBidWZmZXIsIG9yIGFuIHVudXNlZCB2YXJpYWJsZSBieSBtaXN0YWtlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGUgYHNrYmAgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgLiBMZXQgbWUgZ28gZmluZCB0aGF0IGRlZmluaXRpb24gYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMzIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1Ny45MDU5NDUwMzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDk1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDk1OlxcdFxcbjI0OTY6XFx0XFx0aWYgKHJ4LVxcdTAwM2VsYXN0X2hlYWQgXFx1MDAzYyAwIHx8IHJ4LVxcdTAwM2VsYXN0X2hlYWQgXFx1MDAzZT0gcngtXFx1MDAzZXJpbmdfc2l6ZSlcXG4yNDk3OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNDk4OlxcdFxcbjI0OTk6XFx0XFx0aWYgKHJ4LVxcdTAwM2VsYXN0X2hlYWQgPT0gY3VycmVudF9oZWFkX2luZGV4KVxcbjI1MDA6XFx0XFx0XFx0Z290byBkb25lO1xcbjI1MDE6XFx0XFxuMjUwMjpcXHRcXHRkZXNjcmlwdG9yID0gXFx1MDAyNnJ4LVxcdTAwM2VyaW5nX2NwdV9wdHJbcngtXFx1MDAzZWxhc3RfaGVhZF07XFxuMjUwMzpcXHRcXHRpZiAobGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApIFxcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxcbjI1MDQ6XFx0XFx0XFx0Z290byBkb25lO1xcbjI1MDU6XFx0XFx0YnVmZmVyX2luZm8gPSBcXHUwMDI2cngtXFx1MDAzZWJ1ZmZlcl9pbmZvW3J4LVxcdTAwM2VsYXN0X2hlYWRdO1xcbjI1MDY6XFx0XFxuMjUwNzpcXHRcXHRpc19sYXN0ID0gbGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApIFxcdTAwMjYgUlhfREVTQ19EQVRBMF9MU187XFxuMjUwODpcXHRcXHRpc19maXJzdCA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGEwKSBcXHUwMDI2IFJYX0RFU0NfREFUQTBfRlNfO1xcbjI1MDk6XFx0XFxuMjUxMDpcXHRcXHRpZiAoaXNfbGFzdCBcXHUwMDI2XFx1MDAyNiBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pIHtcXG4yNTExOlxcdFxcdFxcdC8qIGV4dGVuc2lvbiBpcyBleHBlY3RlZCB0byBmb2xsb3cgKi9cXG4yNTEyOlxcdFxcdFxcdGludCBpbmRleCA9IGxhbjc0M3hfcnhfbmV4dF9pbmRleChyeCwgcngtXFx1MDAzZWxhc3RfaGVhZCk7XFxuMjUxMzpcXHRcXG4yNTE0OlxcdFxcdFxcdGlmIChpbmRleCA9PSBjdXJyZW50X2hlYWRfaW5kZXgpXFxuMjUxNTpcXHRcXHRcXHRcXHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cXG4yNTE2OlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNTE3OlxcdFxcdFxcdGRlc2NfZXh0ID0gXFx1MDAyNnJ4LVxcdTAwM2VyaW5nX2NwdV9wdHJbaW5kZXhdO1xcbjI1MTg6XFx0XFx0XFx0aWYgKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX09XTl8pXFxuMjUxOTpcXHRcXHRcXHRcXHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cXG4yNTIwOlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNTIxOlxcdFxcdFxcdGlmICghKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pKVxcbjI1MjI6XFx0XFx0XFx0XFx0Z290byBtb3ZlX2ZvcndhcmQ7XFxuMjUyMzpcXHRcXHRcXHRleHRlbnNpb25faW5kZXggPSBpbmRleDtcXG4yNTI0OlxcdFxcdH1cXG4yNTI1OlxcdFxcbjI1MjY6XFx0XFx0LyogT25seSB0aGUgbGFzdCBidWZmZXIgaW4gYSBtdWx0aS1idWZmZXIgZnJhbWUgY29udGFpbnMgdGhlIHRvdGFsIGZyYW1lXFxuMjUyNzpcXHRcXHQgKiBsZW5ndGguIFRoZSBjaGlwIG9jY2FzaW9uYWxseSBzZW5kcyBtb3JlIGJ1ZmZlcnMgdGhhbiBzdHJpY3RseVxcbjI1Mjg6XFx0XFx0ICogcmVxdWlyZWQgdG8gcmVhY2ggdGhlIHRvdGFsIGZyYW1lIGxlbmd0aC5cXG4yNTI5OlxcdFxcdCAqIEhhbmRsZSB0aGlzIGJ5IGFkZGluZyBhbGwgYnVmZmVycyB0byB0aGUgc2tiIGluIHRoZWlyIGVudGlyZXR5LlxcbjI1MzA6XFx0XFx0ICogT25jZSB0aGUgcmVhbCBmcmFtZSBsZW5ndGggaXMga25vd24sIHRyaW0gdGhlIHNrYi5cXG4yNTMxOlxcdFxcdCAqL1xcbjI1MzI6XFx0XFx0ZnJhbWVfbGVuZ3RoID1cXG4yNTMzOlxcdFxcdFxcdFJYX0RFU0NfREFUQTBfRlJBTUVfTEVOR1RIX0dFVF8obGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApKTtcXG4yNTM0OlxcdFxcdGJ1ZmZlcl9sZW5ndGggPSBidWZmZXJfaW5mby1cXHUwMDNlYnVmZmVyX2xlbmd0aDtcXG4yNTM1OlxcdFxcdGlzX2ljZSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGExKSBcXHUwMDI2IFJYX0RFU0NfREFUQTFfU1RBVFVTX0lDRV87XFxuMjUzNjpcXHRcXHRpc190Y2UgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVxcdTAwM2VkYXRhMSkgXFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19UQ0VfO1xcbjI1Mzc6XFx0XFx0aXNfaWNzbSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGExKSBcXHUwMDI2IFJYX0RFU0NfREFUQTFfU1RBVFVTX0lDU01fO1xcbjI1Mzg6XFx0XFxuMjUzOTpcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcIiVzJXNjaHVuazogJWQvJWRcXFwiLFxcbjI1NDA6XFx0XFx0XFx0ICAgaXNfZmlyc3QgPyBcXFwiZmlyc3QgXFxcIiA6IFxcXCIgICAgICBcXFwiLFxcbjI1NDE6XFx0XFx0XFx0ICAgaXNfbGFzdCAgPyBcXFwibGFzdCAgXFxcIiA6IFxcXCIgICAgICBcXFwiLFxcbjI1NDI6XFx0XFx0XFx0ICAgZnJhbWVfbGVuZ3RoLCBidWZmZXJfbGVuZ3RoKTtcXG4yNTQzOlxcdFxcbjI1NDQ6XFx0XFx0Lyogc2F2ZSBleGlzdGluZyBza2IsIGFsbG9jYXRlIG5ldyBza2IgYW5kIG1hcCB0byBkbWEgKi9cXG4yNTQ1OlxcdFxcdHNrYiA9IGJ1ZmZlcl9pbmZvLVxcdTAwM2Vza2I7XFxuMjU0NjpcXHRcXHRpZiAobGFuNzQzeF9yeF9pbml0X3JpbmdfZWxlbWVudChyeCwgcngtXFx1MDAzZWxhc3RfaGVhZCwgR0ZQX0FUT01JQykpIHtcXG4yNTQ3OlxcdFxcdFxcdC8qIGZhaWxlZCB0byBhbGxvY2F0ZSBuZXh0IHNrYi5cXG4yNTQ4OlxcdFxcdFxcdCAqIE1lbW9yeSBpcyB2ZXJ5IGxvdy5cXG4yNTQ5OlxcdFxcdFxcdCAqIERyb3AgdGhpcyBwYWNrZXQgYW5kIHJldXNlIGJ1ZmZlci5cXG4yNTUwOlxcdFxcdFxcdCAqL1xcbjI1NTE6XFx0XFx0XFx0bGFuNzQzeF9yeF9yZXVzZV9yaW5nX2VsZW1lbnQocngsIHJ4LVxcdTAwM2VsYXN0X2hlYWQpO1xcbjI1NTI6XFx0XFx0XFx0LyogZHJvcCBwYWNrZXQgdGhhdCB3YXMgYmVpbmcgYXNzZW1ibGVkICovXFxuMjU1MzpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2lycShyeC1cXHUwMDNlc2tiX2hlYWQpO1xcbjI1NTQ6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NTcuOTA2MTY1NzE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2NzY5MzY0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTEFONzQzeCBEcml2ZXIgQW5hbHlzaXMgLSBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBzbmlwcGV0LCBkZWVwIHdpdGhpbiBgbGFuNzQzeF9tYWluLmNgLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIGV0aGVybmV0IGNvbnRyb2xsZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIkNhbiBzeXprYWxsZXIgZXZlbiAqcmVhY2gqIHRoaXM/XCIgSSBtZWFuLCByZWFsaXN0aWNhbGx5LCBpcyB0aGlzIGhhcmR3YXJlIGFjY2Vzc2libGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT9cblxuSSBuZWVkIHRvIGFwcGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gTGV0J3Mgc2VlLi4uIHRoZSB0ZXh0IHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCByZXF1aXJpbmcgYSBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZCB0aGF0J3Mgbm90IGVtdWxhdGVkLlxuXG5CaW5nby4gVGhlIExBTjc0M3ggaXMsIHdpdGhvdXQgcXVlc3Rpb24sIHZlbmRvci1zcGVjaWZpYyBQQ0llIGV0aGVybmV0IE5JQy4gTm93LCBRRU1VJ3MgZ290ICpzb21lKiBuZXR3b3JrIGVtdWxhdGlvbiwgYnV0IEknbSBjZXJ0YWluIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcgZm9yIHRoaXMgc3BlY2lmaWMgTWljcm9jaGlwIGNvbnRyb2xsZXIuIEknbSBwcmFjdGljYWxseSBjZXJ0YWluIG9mIGl0IGJ1dCBsZXQncyBqdXN0IG1ha2UgaXQgY2VydGFpbiBhbmQgY29uZmlybTogTm8sIFFFTVUgZG9lc24ndCBoYXZlIExBTjc0M3ggZW11bGF0aW9uLiBUaGVyZWZvcmUsIHN5emthbGxlciAqY2Fubm90KiBmdXp6IGl0LiBTeXprYWxsZXIgcnVucyBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbkZ1cnRoZXJtb3JlLCBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHByZXR0eSBvYnZpb3VzIHRoYXQgdGhlIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYCBmdW5jdGlvbiwgdGhlIGJpdCB0aGlzIHBhdGNoIHRvdWNoZXMsIGlzIGdvaW5nIHRvIGdldCB0cmlnZ2VyZWQgKm9ubHkqIHdoZW4gdGhlIGhhcmR3YXJlIGhhcyBnb25lIHRocm91Z2ggaW5pdGlhbGl6YXRpb24sIGludGVycnVwdHMgYXJlIGZpcmluZywgTkFQSSBoYXMga2lja2VkIGluLCBhbmQgcGFja2V0cyBoYXZlIGFycml2ZWQgZnJvbSB0aGUgaGFyZHdhcmUgRE1BIGRlc2NyaXB0b3IgcmluZy4gQWxsIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMuXG5cblNvLCB0aGlzIGNsZWFybHkgZml0cyB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBkZXNjcmlwdGlvbjogYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgdGhhdCBuZWVkcyBpdHMgb3duIEFTSUMvUENJZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0J3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZGVhZCBlbmQgZm9yIHN5emthbGxlci5cblxuTGV0J3MganVzdCBkb3VibGUtY2hlY2ssIGRvdCBhbGwgdGhlIEkncyBhbmQgY3Jvc3MgYWxsIHRoZSBUJ3MuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlcmUncyBub3RoaW5nIHRvIGZvY3VzIG9uLiBgRW5hYmxlQ29uZmlnc2Agd2lsbCBhbHNvIGJlIGVtcHR5LiBBbmQgdGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZSBhIGNvbmNpc2UgcmVjYXA6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gYGxhbjc0M3hfbWFpbi5jYCwgcGFydCBvZiB0aGUgYENPTkZJR19MQU43NDNYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgaGFyZHdhcmUgZGVtYW5kcyBwaHlzaWNhbCBBU0lDL1BDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGJ5IHN5emthbGxlci5cblxuU2FuaXR5IGNoZWNrLCB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYDogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgY29uY2lzZSBgUmVhc29uaW5nYC4gRXZlcnl0aGluZyBsb29rcyBjb3JyZWN0LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3ODYsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjU6MDMuNTgzMTA1MDU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSWCBidWZmZXIgcHJvY2Vzc2luZyBpbiB0aGUgbGFuNzQzeCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYykuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBMQU43NDN4L1BDSTExeDF4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2VzIChDT05GSUdfTEFONzQzWCksIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDAwOjI1OjAzLjU4MzEzMDM5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzdz4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 00:22:47 +0000 UTC FinishedAt: 2026-09-14 00:25:04 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzE1YzEwM2E0Zjk2ZmEyZmFjNTEzMjg2NTliZjhlMzI5OWVlMjBjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDE0IDAwOjI0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuaW5kZXggMjRhZTU2YTNjOWVkNy4uODJkM2VjMjBiYTI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5AQCAtMjYwNCw3ICYjNDM7MjYwNCw3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9yeF9wcm9jZXNzX2J1ZmZlcihzdHJ1Y3QgbGFuNzQzeF9yeCAqcngpXG4gXHRcdFx0XHRcdFx0XHRyeC1cdTAwM2VhZGFwdGVyLVx1MDAzZW5ldGRldik7XG4gXHRcdGlmIChyeC1cdTAwM2VhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcbiBcdFx0XHRpZiAoIWlzX2ljZSBcdTAwMjZcdTAwMjYgIWlzX3RjZSBcdTAwMjZcdTAwMjYgIWlzX2ljc20pXG4tXHRcdFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4mIzQzO1x0XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQtXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4gXHRcdH1cbiBcdFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFwmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wmIzM0OyxcbiBcdFx0XHQgICByeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2VsZW4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJYIGJ1ZmZlciBwcm9jZXNzaW5nIGluIHRoZSBsYW43NDN4IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jKS4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIExBTjc0M3gvUENJMTF4MXggUENJZSBHaWdhYml0IEV0aGVybmV0IGRldmljZXMgKENPTkZJR19MQU43NDNYKSwgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNWMxMDNhNGY5NmZhMmZhYzUxMzI4NjU5YmY4ZTMyOTllZTIwYzMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYwppbmRleCAyNGFlNTZhM2M5ZWQ3Li44MmQzZWMyMGJhMjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jCkBAIC0yNjA0LDcgJiM0MzsyNjA0LDcgQEAgc3RhdGljIGludCBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyKHN0cnVjdCBsYW43NDN4X3J4ICpyeCkKIAkJCQkJCQlyeC0mZ3Q7YWRhcHRlci0mZ3Q7bmV0ZGV2KTsKIAkJaWYgKHJ4LSZndDthZGFwdGVyLSZndDtuZXRkZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhDU1VNKSB7CiAJCQlpZiAoIWlzX2ljZSAmYW1wOyZhbXA7ICFpc190Y2UgJmFtcDsmYW1wOyAhaXNfaWNzbSkKLQkJCQlza2ItJmd0O2lwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOwomIzQzOwkJCQlyeC0mZ3Q7c2tiX2hlYWQtJmd0O2lwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOwogCQl9CiAJCW5ldGRldl9kYmcobmV0ZGV2LCAmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPUyYjMzQ7LAogCQkJICAgcngtJmd0O3NrYl9oZWFkLSZndDtsZW4pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBhcHBlYXJzIHRvIGludm9sdmUgc2V0dGluZyB0aGUgYGlwX3N1bW1lZGAgZmllbGQgb2YgYSBgc2tiX2hlYWRgIHN0cnVjdHVyZSB0byBgQ0hFQ0tTVU1fVU5ORUNFU1NBUllgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB3aXRoaW4gYSBjaGVja3N1bS1yZWxhdGVkIGJsb2NrLiBJdCBhcHBlYXJzIHRoYXQgaXQgaXMgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBoYXJkd2FyZSBvZmZsb2FkIG9mIGNoZWNrc3VtIGNhbGN1bGF0aW9ucy4gVGhpcyB3b3VsZCBvY2N1ciBpZiB0aGUgaGFyZHdhcmUgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuCgpOb3csIEkgbmVlZCBhIGxpdHRsZSBtb3JlIGNvbnRleHQuIFdoYXQgZXhhY3RseSBpcyBgbGFuNzQzeGA/IElzIHRoaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBFdGhlcm5ldCBjYXJkPyBJcyBpdCBhIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLCBhcyB0aGUgZmlsZSBwYXRoIHN1Z2dlc3RzPyBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gYmUgc3VyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGJlaW5nIGFkZHJlc3NlZCB0byBmdWxseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIHRhcmdldCBoYXJkd2FyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBjaGVja3N1bW1pbmcgcGVyZm9ybWFuY2Ugd2l0aCBhIGxpdHRsZSBtb3JlIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtMQU43NDNYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2OTcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTM2PWNvbmZpZyBFTkNYMjRKNjAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo0NTpjb25maWcgTEFONzQzWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtMQU43NDN4IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRU5DWDI0SjYwMCkgJiM0Mzs9IGVuY3gyNGo2MDAubyBlbmN4MjRqNjAwLXJlZ21hcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTEFONzQzWCkgJiM0Mzs9IGxhbjc0M3gub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzLS8qIGVlcHJvbSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0OiNkZWZpbmUgTEFONzQzWF9FRVBST01fTUFHSUNcdFx0ICAgICgweDc0QTUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTU6I2RlZmluZSBMQU43NDNYX09UUF9NQUdJQ1x0XHQgICAgKDB4NzRGMylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNi0jZGVmaW5lIEVFUFJPTV9JTkRJQ0FUT1JfMVx0XHQgICAgKDB4QTUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNjI9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjY6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIEhTX09UUF9TVEFUVVMsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjctXHRcdFx0XHQgICEodmFsIFx1MDAyNiBPVFBfU1RBVFVTX0JVU1lfKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NDkxPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDk1Olx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIU19FMlBfQ01ELCB2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDk2LVx0XHRcdFx0ICAoISh2YWwgXHUwMDI2IEhTX0UyUF9DTURfRVBDX0JVU1lfKSB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02MTY9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyMDpcdGlmIChhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjIxLVx0XHRyZXR1cm4gYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeCA/IE1BWF9IU19PVFBfU0laRSA6IE1BWF9PVFBfU0laRTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NjI2PXN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzMjpcdGlmIChhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzMtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02NTE9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU3Olx0aWYgKGFkYXB0ZXItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfQURBUFRFUl9GTEFHX09UUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1OC1cdFx0LyogQmV3YXJlISAgT1RQIGlzIE9uZSBUaW1lIFByb2dyYW1taW5nIE9OTFkhICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU5Olx0XHRpZiAoZWUtXHUwMDNlbWFnaWMgPT0gTEFONzQzWF9PVFBfTUFHSUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2Ny1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY4Olx0XHRpZiAoZWUtXHUwMDNlbWFnaWMgPT0gTEFONzQzWF9FRVBST01fTUFHSUMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTkzND1zdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfcnhfcmluZ19jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkzNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6OTM2Olx0cmV0dXJuIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MzctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0xMTk4PXN0YXRpYyB2b2lkIGxhbjc0M3hfY29tbW9uX3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMjAzOlx0bWVtc2V0KHAsIDAsIChNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1MgKiBzaXplb2YodTMyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTEzMTA9c3RhdGljIGludCBsYW43NDN4X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzEyLVx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMxMzpcdHUzMiBudW1fcmVncyA9IE1BWF9MQU43NDNYX0VUSF9DT01NT05fUkVHUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMTUtXHRpZiAoYWRhcHRlci1cdTAwM2Vpc19zZ21paV9lbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzE2Olx0XHRudW1fcmVncyAmIzQzOz0gTUFYX0xBTjc0M1hfRVRIX1NHTUlJX1JFR1M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9MTMyMT1zdGF0aWMgdm9pZCBsYW43NDN4X2dldF9yZWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzMDpcdHJlZ3MtXHUwMDNldmVyc2lvbiA9IExBTjc0M1hfRVRIX1JFR19WRVJTSU9OO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzEtXHRyZWdzLVx1MDAzZWxlbiA9IHJlZ3NfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzMzLVx0bGFuNzQzeF9jb21tb25fcmVncyhkZXYsIHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMzQ6XHRwID0gKHUzMiAqKXAgJiM0MzsgTUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzctXHRcdGxhbjc0M3hfc2dtaWlfcmVncyhkZXYsIHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMzg6XHRcdHAgPSAodTMyICopcCAmIzQzOyBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzM5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjQ6I2lmbmRlZiBfTEFONzQzWF9FVEhUT09MX0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo1OiNkZWZpbmUgX0xBTjc0M1hfRVRIVE9PTF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo5OiNkZWZpbmUgTEFONzQzWF9FVEhfUkVHX1ZFUlNJT04gICAgICAgICAxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MTE9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMxLVx0LyogQWRkIG5ldyByZWdpc3RlcnMgYWJvdmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDozMjpcdE1BWF9MQU43NDNYX0VUSF9DT01NT05fUkVHU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMzLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oPTM1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDAtXHQvKiBBZGQgbmV3IHJlZ2lzdGVycyBhYm92ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwMTpcdE1BWF9MQU43NDNYX0VUSF9TR01JSV9SRUdTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAyLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oPTEwND1leHRlcm4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwNjojZW5kaWYgLyogX0xBTjc0M1hfRVRIVE9PTF9IICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE0NT12b2lkIGxhbjc0M3hfY3NyX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNTE6I2RlZmluZSBMQU43NDNYX0NTUl9SRUFEX09QKG9mZnNldClcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNTM9c3RhdGljIGludCBsYW43NDN4X2Nzcl9saWdodF9yZXNldChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTYxOlx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIV19DRkcsIGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTYyLVx0XHRcdFx0ICAhKGRhdGEgXHUwMDI2IEhXX0NGR19MUlNUXyksIDEwMDAwMCwgMTAwMDAwMDApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNjU9c3RhdGljIGludCBsYW43NDN4X2Nzcl93YWl0X2Zvcl9iaXRfYXRvbWljKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNzI6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0X2F0b21pYyhMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTczLVx0XHRcdFx0XHQgdGFyZ2V0X3ZhbHVlID09ICEhKGRhdGEgXHUwMDI2IGJpdF9tYXNrKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbGFuNzQzeF9jc3Jfd2FpdF9mb3JfYml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxODQ6XHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIG9mZnNldCwgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xODUtXHRcdFx0XHQgIHRhcmdldF92YWx1ZSA9PSAhIShkYXRhIFx1MDAyNiBiaXRfbWFzayksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxMDpcdGNzci1cdTAwM2VmbGFncyA9IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjExLVx0c3dpdGNoIChjc3ItXHUwMDNlaWRfcmV2IFx1MDAyNiBJRF9SRVZfQ0hJUF9SRVZfTUFTS18pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTItXHRjYXNlIElEX1JFVl9DSElQX1JFVl9BMF86XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEzOlx0XHRjc3ItXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19BMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMTQ6XHRcdGNzci1cdTAwM2VmbGFncyBcdTAwMjY9IH5MQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2LVx0Y2FzZSBJRF9SRVZfQ0hJUF9SRVZfQjBfOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxNzpcdFx0Y3NyLVx1MDAzZWZsYWdzIHw9IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjM0PXN0YXRpYyB2b2lkIGxhbjc0M3hfdHhfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0MC1cdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSU5UX0VOX1NFVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjQxOlx0aWYgKGZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNDItXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNTE6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjUyLVx0XHRcdGRtYWNfaW50X3N0cyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjU0LVx0XHRcdGRtYWNfaW50X3N0cyA9IGlvY19iaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjU1Olx0XHRpZiAoZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTYtXHRcdFx0ZG1hY19pbnRfZW4gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBsYW43NDN4X3J4X2lzcih2b2lkICpjb250ZXh0LCB1MzIgaW50X3N0cywgdTMyIGZsYWdzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjgxOlx0aWYgKGZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODItXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyOTE6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjkyLVx0XHRcdGRtYWNfaW50X3N0cyA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjk0LVx0XHRcdGRtYWNfaW50X3N0cyA9IHJ4X2ZyYW1lX2JpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyOTU6XHRcdGlmIChmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5Ni1cdFx0XHRkbWFjX2ludF9lbiA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE2PXN0YXRpYyB2b2lkIGxhbjc0M3hfaW50cl9zaGFyZWRfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMS1cdGlmIChpbnRfc3RzIFx1MDAyNiBJTlRfQklUX0FMTF9SWF8pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjI6XHRcdGZvciAoY2hhbm5lbCA9IDA7IGNoYW5uZWwgXHUwMDNjIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjMtXHRcdFx0Y2hhbm5lbCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU5PXN0YXRpYyBpcnFyZXR1cm5fdCBsYW43NDN4X2ludHJfZW50cnlfaXNyKGludCBpcnEsIHZvaWQgKnB0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2NzpcdGlmICh2ZWN0b3ItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY4LVx0XHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjktXHR9IGVsc2UgaWYgKHZlY3Rvci1cdTAwM2VmbGFncyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA6XHRcdCAgIChMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzE6XHRcdCAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyLVx0XHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTX1IyQyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODE6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4Mi1cdFx0LyogZGlzYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODc6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzg4LVx0XHQvKiBkaXNhYmxlIG1hc3RlciBpbnRlcnJ1cHQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM5MTpcdGlmICh2ZWN0b3ItXHUwMDNlZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM5Mi1cdFx0aW50X2VuYWJsZXMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDEyOlx0aWYgKHZlY3Rvci1cdTAwM2VmbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTMtXHRcdC8qIGVuYWJsZSBtYXN0ZXIgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MTY6XHRpZiAodmVjdG9yLVx1MDAzZWZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MTctXHRcdC8qIGVuYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9yZWdpc3Rlcl9pc3Ioc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDY0LVx0XHRcdCAgbGFuNzQzeF9pbnRyX2VudHJ5X2lzcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0NjU6XHRcdFx0ICAoZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRCkgP1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQ2Ni1cdFx0XHQgIElSUUZfU0hBUkVEIDogMCwgRFJJVkVSX05BTUUsIHZlY3Rvcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTUzMD1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU1NC1cdFx0XHRcdCAgICAxICYjNDM7IHVzZWRfdHhfY2hhbm5lbHMgJiM0MztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo1NTU6XHRcdFx0XHQgICAgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU3MC1cdGlmICghaW50ci1cdTAwM2VudW1iZXJfb2ZfdmVjdG9ycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU3MTpcdFx0aWYgKCEoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTcyLVx0XHRcdGlmICghcGNpX2VuYWJsZV9tc2koYWRhcHRlci1cdTAwM2VwZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MDAtXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX01BUDIsIDB4MDAwMDAwMDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMTpcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMjpcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjAzOlx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNDpcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MDYtXHRpZiAoaW50ci1cdTAwM2V1c2luZ192ZWN0b3JzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjA3Olx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MDg6XHRcdFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwOS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjEwOlx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxMTpcdFx0XHQgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVCB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjEyOlx0XHRcdCBMQU43NDNYX1ZFQ1RPUl9GTEFHX0lSUV9TSEFSRUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjEzLVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTU6XHRpZiAoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTY6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxNzpcdFx0ZmxhZ3MgXHUwMDI2PSB+TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTg6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTk6XHRcdGZsYWdzIFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MjA6XHRcdGZsYWdzIHw9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SMkM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjIxOlx0XHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfUjJDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYyMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzODpcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzOTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MjpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0MzpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0NjpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY0Ny1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDg6XHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0OTpcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjUwLVx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY2OS1cdFx0XHRudW1iZXJfb2ZfdHhfdmVjdG9ycyA9IHVzZWRfdHhfY2hhbm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcwOlx0XHRmbGFncyA9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NzE6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcyOlx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjczOlx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc0Olx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3NTpcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjc3LVx0XHRpZiAoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc4Olx0XHQgICBMQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc5Olx0XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2ODA6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19TRVQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MTpcdFx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2ODI6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02ODMtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzAxLVx0XHRcdGlmICghKGZsYWdzIFx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcwMjpcdFx0XHQgICAgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MDMtXHRcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMTpcdFx0aWYgKG51bWJlcl9vZl9yeF92ZWN0b3JzIFx1MDAzZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzEyOlx0XHRcdG51bWJlcl9vZl9yeF92ZWN0b3JzID0gTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTQ6XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNTpcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTY6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTc6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTg6XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0lTUl9DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzE5Olx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjEtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjI6XHRcdCAgICBMQU43NDNYX0NTUl9GTEFHX1NVUFBPUlRTX0lOVFJfQVVUT19TRVRfQ0xSKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzIzOlx0XHRcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fQ0xFQVIgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyNDpcdFx0XHRcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVCB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI1Olx0XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjY6XHRcdFx0XHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUiB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI3Olx0XHRcdFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX0FVVE9fQ0xFQVI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzI4LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczNi1cdFx0XHRpZiAoZmxhZ3MgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzM3Olx0XHRcdCAgICBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19DTEVBUikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczOC1cdFx0XHRcdGludF92ZWNfZW5fYXV0b19jbHIgfD0gSU5UX1ZFQ19FTl8odmVjdG9yKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9ODA4PXN0YXRpYyBpbnQgbGFuNzQzeF9tYWNfbWlpX3dhaXRfdGlsbF9ub3RfYnVzeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy04MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6ODEyOlx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBNQUNfTUlJX0FDQywgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy04MTMtXHRcdFx0XHQgICEoZGF0YSBcdTAwMjYgTUFDX01JSV9BQ0NfTUlJX0JVU1lfKSwgMCwgMTAwMDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTk0Mz1zdGF0aWMgaW50IGxhbjc0M3hfc2dtaWlfd2FpdF90aWxsX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTk0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo5NDg6XHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgU0dNSUlfQUNDLCBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTk0OS1cdFx0XHRcdCAhKGRhdGEgXHUwMDI2IFNHTUlJX0FDQ19TR01JSV9CWllfKSwgMTAwLCAxMDAwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTM3OT1zdGF0aWMgaW50IGxhbjc0M3hfaHdfcmVzZXRfcGh5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTM4OTpcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgUE1UX0NUTCwgZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xMzkwLVx0XHRcdFx0ICAoIShkYXRhIFx1MDAyNiBQTVRfQ1RMX0VUSF9QSFlfUlNUXykgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE1MTY9c3RhdGljIGludCBsYW43NDN4X2RtYWNfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTM4LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1Mzk6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTU0MC1cdFx0ZGF0YSB8PSBETUFDX0NGR19DT0FMX0VOXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTczND1zdGF0aWMgdm9pZCBsYW43NDN4X3J4X2NmZ19iX3RzdGFtcF9jb25maWcoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTc0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNzQxOlx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDItXHRcdGNoYW5uZWxfbnVtYmVyID0gYWRhcHRlci1cdTAwM2VyeFtpbmRleF0uY2hhbm5lbF9udW1iZXI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE5NTU9c3RhdGljIHZvaWQgbGFuNzQzeF90eF9mcmFtZV9lbmQoc3RydWN0IGxhbjc0M3hfdHggKnR4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xOTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE5OTE6XHRpZiAodHgtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19TRVQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5Mi1cdFx0dHhfdGFpbF9mbGFncyB8PSBUWF9UQUlMX1NFVF9UT1BfSU5UX1ZFQ19FTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MzpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xOTk0LVx0XHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX0RNQUNfSU5UX0VOXyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTIwOTM9c3RhdGljIGludCBsYW43NDN4X3R4X25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCB3ZWlnaHQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxMDItXHRsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIERNQUNfSU5UX1NUUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEwMzpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjEwNC1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRE1BQ19JTlRfU1RTLCBpb2NfYml0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjE1OD1zdGF0aWMgaW50IGxhbjc0M3hfdHhfcmluZ19pbml0KHN0cnVjdCBsYW43NDN4X3R4ICp0eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMTY1Olx0dHgtXHUwMDNlcmluZ19zaXplID0gTEFONzQzWF9UWF9SSU5HX1NJWkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2Ni1cdGlmICh0eC1cdTAwM2VyaW5nX3NpemUgXHUwMDI2IH5UWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yMjUxPXN0YXRpYyBpbnQgbGFuNzQzeF90eF9vcGVuKHN0cnVjdCBsYW43NDN4X3R4ICp0eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjI5MS1cdGRhdGEgfD0gKCh0eC1cdTAwM2VyaW5nX3NpemUpIFx1MDAyNiBUWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjI5MjpcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjkzLVx0XHRkYXRhIHw9IFRYX0NGR19CX1RETUFCTF81MTJfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk3LVx0ZGF0YSA9IFRYX0NGR19BX1RYX1RNUl9IUFdCX1NFTF9JT0NfIHwgVFhfQ0ZHX0FfVFhfSFBfV0JfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIyOTg6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk5LVx0XHRkYXRhIHw9IFRYX0NGR19BX1RYX0hQX1dCX09OX0lOVF9UTVJfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzI5LVx0ZGF0YSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMDpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzEtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfVE9QX0lOVF9FTl9BVVRPX0NMUl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMjpcdGlmICh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzMtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfRE1BX0lOVF9TVFNfQVVUT19DTFJfO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzMzQ6XHRpZiAodHgtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzUtXHRcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfSU5UX1NUU19SMkNfTU9ERV9NQVNLXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMzM2Olx0aWYgKHR4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzM3LVx0XHRkYXRhIHw9IFRYX0NGR19DX1RYX0lOVF9FTl9SMkNfO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzNDA6XHRpZiAoISh0eC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjM0MS1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX1NFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjYyND1zdGF0aWMgaW50IGxhbjc0M3hfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjMyOlx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1cyQykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzMtXHRcdC8qIGNsZWFyIGludCBzdGF0dXMgYml0IGJlZm9yZSByZWFkaW5nIHBhY2tldCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjQ5LVx0LyogcmUtYXJtIGludGVycnVwdHMsIG11c3Qgd3JpdGUgdG8gcnggdGFpbCBvbiBzb21lIGNoaXAgdmFyaWFudHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUwOlx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2NTEtXHRcdHJ4X3RhaWxfZmxhZ3MgfD0gUlhfVEFJTF9TRVRfVE9QX0lOVF9WRUNfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI2NTI6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19TRVQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjUzLVx0XHRyeF90YWlsX2ZsYWdzIHw9IFJYX1RBSUxfU0VUX1RPUF9JTlRfRU5fO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjk5PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI3MDc6XHRyeC1cdTAwM2VyaW5nX3NpemUgPSBMQU43NDNYX1JYX1JJTkdfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA4LVx0aWYgKHJ4LVx1MDAzZXJpbmdfc2l6ZSBcdTAwM2M9IDEpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjgwMD1zdGF0aWMgaW50IGxhbjc0M3hfcnhfb3BlbihzdHJ1Y3QgbGFuNzQzeF9yeCAqcngpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4MzQtXHRkYXRhID0gUlhfQ0ZHX0FfUlhfSFBfV0JfRU5fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4MzU6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODM2LVx0XHRkYXRhIHw9IChSWF9DRkdfQV9SWF9XQl9PTl9JTlRfVE1SXyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NTQtXHRkYXRhIHw9ICgocngtXHUwMDNlcmluZ19zaXplKSBcdTAwMjYgUlhfQ0ZHX0JfUlhfUklOR19MRU5fTUFTS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NTU6XHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg1Ni1cdFx0ZGF0YSB8PSBSWF9DRkdfQl9SRE1BQkxfNTEyXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg2NC1cdGRhdGEgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NjU6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY2LVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX1RPUF9JTlRfRU5fQVVUT19DTFJfO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4Njc6XHRpZiAocngtXHUwMDNldmVjdG9yX2ZsYWdzIFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY4LVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX0RNQV9JTlRfU1RTX0FVVE9fQ0xSXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY5Olx0aWYgKHJ4LVx1MDAzZXZlY3Rvcl9mbGFncyBcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1IyQylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODcwLVx0XHRkYXRhIHw9IFJYX0NGR19DX1JYX0lOVF9TVFNfUjJDX01PREVfTUFTS187XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mjg3MTpcdGlmIChyeC1cdTAwM2V2ZWN0b3JfZmxhZ3MgXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg3Mi1cdFx0ZGF0YSB8PSBSWF9DRkdfQ19SWF9JTlRfRU5fUjJDXztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzI5Mj1zdGF0aWMgaW50IGxhbjc0M3hfbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMwMDpcdGZvciAoaW5kZXggPSAwOyBpbmRleCBcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzMwMS1cdFx0bGFuNzQzeF9yeF9jbG9zZShcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4W2luZGV4XSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMzMTQ9c3RhdGljIGludCBsYW43NDN4X25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMzODpcdGZvciAoaW5kZXggPSAwOyBpbmRleCBcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMzM5LVx0XHRyZXQgPSBsYW43NDN4X3J4X29wZW4oXHUwMDI2YWRhcHRlci1cdTAwM2VyeFtpbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMzcxLWNsb3NlX3J4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzNzI6XHRmb3IgKGluZGV4ID0gMDsgaW5kZXggXHUwMDNjIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUzsgaW5kZXgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzM3My1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlcnhbaW5kZXhdLnJpbmdfY3B1X3B0cilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU1MD1zdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNTgzLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg0Olx0XHRhZGFwdGVyLVx1MDAzZW1heF90eF9jaGFubmVscyA9IExBTjc0M1hfTUFYX1RYX0NIQU5ORUxTO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM1ODU6XHRcdGFkYXB0ZXItXHUwMDNldXNlZF90eF9jaGFubmVscyA9IExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMUztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg2Olx0XHRhZGFwdGVyLVx1MDAzZW1heF92ZWN0b3JfY291bnQgPSBMQU43NDNYX01BWF9WRUNUT1JfQ09VTlQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzU4Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzYwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNjEwOlx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MTEtXHRcdGFkYXB0ZXItXHUwMDNlcnhbaW5kZXhdLmFkYXB0ZXIgPSBhZGFwdGVyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDItXHRcdFx0XHRcdFx0IFBDSTExWDFYX1VTRURfVFhfQ0hBTk5FTFMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcwMzpcdFx0XHRcdFx0XHQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzA0LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcwNi1cdFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MDc6XHRcdFx0XHRcdFx0IExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMUyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA4Olx0XHRcdFx0XHRcdCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjAtXHRcdFx0ICAgICAgTkVUSUZfTVNHX0lGRE9XTiB8IE5FVElGX01TR19UWF9RVUVVRUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyMTpcdG5ldGRldi1cdTAwM2VtYXhfbXR1ID0gTEFONzQzWF9NQVhfRlJBTUVfU0laRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjQ6I2lmbmRlZiBfTEFONzQzWF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6NTojZGVmaW5lIF9MQU43NDNYX0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC02LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0xOS0jZGVmaW5lIElEX1JFVl9JRF9MQU43NDMxX1x0XHQoMHg3NDMxMDAwMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDoyMDojZGVmaW5lIElEX1JFVl9JRF9MQU43NDNYX1x0XHQoMHg3NDMwMDAwMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0yMS0jZGVmaW5lIElEX1JFVl9JRF9BMDExX1x0XHRcdCgweEEwMTEwMDAwKVx0Ly8gUENJMTEwMTBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtMjQtI2RlZmluZSBJRF9SRVZfSVNfVkFMSURfQ0hJUF9JRF8oaWRfcmV2KVx0ICAgIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6MjU6XHQoKCgoaWRfcmV2KSBcdTAwMjYgMHhGRkYwMDAwMCkgPT0gSURfUkVWX0lEX0xBTjc0M1hfKSB8fCBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTI2LVx0ICgoKGlkX3JldikgXHUwMDI2IDB4RkYwRjAwMDApID09IElEX1JFVl9JRF9BMFgxXykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NjI6I2RlZmluZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMU1x0XHQoNClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NjM6I2RlZmluZSBMQU43NDNYX01BWF9UWF9DSEFOTkVMU1x0XHQoMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NjQtI2RlZmluZSBQQ0kxMVgxWF9NQVhfVFhfQ0hBTk5FTFNcdCg0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oPTg2NT1zdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4Njc6I2RlZmluZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcdCg0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg2ODojZGVmaW5lIExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMU1x0KDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY5LSNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1x0KDQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODcwOiNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXHQoNDAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzI6I2lmIChMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMgXHUwMDNlIExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3MzojZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NzQtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODc1OiNpZiAoTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTIFx1MDAzZSBMQU43NDNYX01BWF9UWF9DSEFOTkVMUylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzY6I2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODc3LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODk1OiNkZWZpbmUgTEFONzQzWF9DU1JfRkxBR19JU19BMFx0XHRcdFx0QklUKDApXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgQ29udGV4dCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZGV2aWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnYC4gVGhhdCBLY29uZmlnIGZpbGUgaXMgdGhlIGxpbmNocGluIGZvciBjb25maWd1cmluZyB0aGUgTWljcm9jaGlwIEV0aGVybmV0IGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEl0IHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNsdWVzOiB0aGUgc3BlY2lmaWMgZGV2aWNlIHR5cGUgc3VwcG9ydGVkLCB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGZlYXR1cmVzIGxpa2UgRE1BLCBpbnRlcnJ1cHRzLCBsaW5rIHNwZWVkIG5lZ290aWF0aW9uKSwgYW5kLCBjcnVjaWFsbHksIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEtub3dpbmcgdGhlIGRldmljZSYjMzk7cyBleGFjdCBJRCwgb3IgYXQgbGVhc3QgdGhlIHJlbGV2YW50IEtjb25maWcgc3ltYm9scywgaXMgdGhlIGZpcnN0IHN0ZXAuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCBhbmQgd2hlcmUgdG8gbG9vayBuZXh0IGZvciBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIG9wZXJhdGlvbi4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0ICAgICAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBFTkM0MjRKNjAwLzYyNEo2MDAgZXRoZXJuZXQgY2hpcC5cbiAgNDE6XHRcbiAgNDI6XHQgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbiAgNDM6XHQgICAgICBjYWxsZWQgZW5jeDI0ajYwMC5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgTEFONzQzWFxuICA0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TEFONzQzeCBzdXBwb3J0XCYjMzQ7XG4gIDQ3Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA0OTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICA1MDpcdFx0c2VsZWN0IENSQzE2XG4gIDUxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgNTI6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDUzOlx0XHRoZWxwXG4gIDU0Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBhbmQgUENJMTF4MXggZmFtaWxpZXMgb2YgUENJXG4gIDU1Olx0XHQgIEV4cHJlc3MgRXRoZXJuZXQgZGV2aWNlc1xuICA1NjpcdFxuICA1NzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbiAgNTg6XHRcdCAgY2FsbGVkIGxhbjc0M3guXG4gIDU5Olx0XG4gIDYwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcJiMzNDtcbiAgNjE6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZ1wmIzM0O1xuICA2MjpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWdcJiMzNDtcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZ1wmIzM0O1xuICA2NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvZmRtYS9LY29uZmlnXCYjMzQ7XG4gIDY1Olx0XG4gIDY2Olx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzIyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFN1cHBvcnQgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcmVxdWVzdCB0byBhc3Nlc3MgZnV6emluZyBwb3RlbnRpYWwgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBhbmQgUENJMTF4MXggZmFtaWxpZXMgb2YgUENJIEV4cHJlc3MgRXRoZXJuZXQgZGV2aWNlcy4gVGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBldmVuIGJvdGhlciBmdXp6aW5nLCBhbmQgdGhlIGluc3RydWN0aW9uIHNldCBpcyBjbGVhcjogaWYgdGhlIGNvZGUgZmFsbHMgaW50byBhIHNwZWNpZmljIG5lZ2F0aXZlIGNhdGVnb3J5LCB3ZSBiYWlsIG91dCBlYXJseS4gVGhhdCYjMzk7cyBhIGdvb2QgYXBwcm9hY2ggdG8gY29uc2VydmUgcmVzb3VyY2VzLgoKUmlnaHQsIHNvIHNlY3Rpb24gMiBnaXZlcyB1cyB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBjcml0ZXJpYS4gVGhlIG1vc3QgcmVsZXZhbnQgb25lIGhlcmUgaXMgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6IFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJz4oCmIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUmIzM0Oy4gVGhpcyBpcyB0aGUgY3J1eC4KCkkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgTEFONzQzeCBpcyBlbXVsYXRlZC4gTGV0IG1lIHNlZS4uLiBJIGhhdmUgYSBsaXN0IG9mIHN0YW5kYXJkIFFFTVUgbmV0d29yayBkZXZpY2VzIGluIGZyb250IG9mIG1lOiBlMTAwMCwgZTEwMDBlLCBpZ2IsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdmlydGlvLW5ldC1wY2ksIHJvY2tlciwgdm14bmV0MywgdXNiLW5ldC4gTm9wZSwgbm90IHNlZWluZyBMQU43NDN4IGFueXdoZXJlIGluIHRoZXJlLiBUaGVzZSBkZXZpY2VzIGFyZSBwaHlzaWNhbCBQQ0llIGdpZ2FiaXQgZXRoZXJuZXQgY29udHJvbGxlcnMgKE1pY3JvY2hpcCBMQU43NDMwLCBMQU43NDMxLCBQQ0kxMTAxMCwgUENJMTE0MTQgZXRjKSwgc28gaXQgc3RhbmRzIHRvIHJlYXNvbiB0aGF0IHRoZXkgYXJlbiYjMzk7dCBlbXVsYXRlZC4gSSBjYW4gYmUgcHJldHR5IGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBpdCYjMzk7cyBOT1QgZW11bGF0ZWQgaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoLCBieSBpbXBsaWNhdGlvbiwgbWFrZXMgaXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgd2UgY2hlY2sgdGhlIGNvbnRleHQgb2YgdGhlIExBTjc0M3ggZnVuY3Rpb24gaW4gdGhlIGBsYW43NDN4X21haW4uY2AgZmlsZSB0byBmdXJ0aGVyIGNlbWVudCBvdXIgY29uY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU4NTpcdFx0XHR1MzIgdHNfc2VjO1xuMjU4NjpcdFx0XHR1MzIgdHNfbnNlYztcbjI1ODc6XHRcbjI1ODg6XHRcdFx0dHNfc2VjID0gbGUzMl90b19jcHUoZGVzY19leHQtXHUwMDNlZGF0YTEpO1xuMjU4OTpcdFx0XHR0c19uc2VjID0gKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVx1MDAzZWRhdGEyKSBcdTAwMjZcbjI1OTA6XHRcdFx0XHQgIFJYX0RFU0NfREFUQTJfVFNfTlNfTUFTS18pO1xuMjU5MTpcdFx0XHRpZiAocngtXHUwMDNlc2tiX2hlYWQpXG4yNTkyOlx0XHRcdFx0c2tiX2h3dHN0YW1wcyhyeC1cdTAwM2Vza2JfaGVhZCktXHUwMDNlaHd0c3RhbXAgPVxuMjU5MzpcdFx0XHRcdFx0a3RpbWVfc2V0KHRzX3NlYywgdHNfbnNlYyk7XG4yNTk0Olx0XHRcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCBleHRlbnNpb25faW5kZXgpO1xuMjU5NTpcdFx0XHRyeC1cdTAwM2VsYXN0X2hlYWQgPSBleHRlbnNpb25faW5kZXg7XG4yNTk2Olx0XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDtwcm9jZXNzIGV4dGVuc2lvblwmIzM0Oyk7XG4yNTk3Olx0XHR9XG4yNTk4Olx0XG4yNTk5Olx0XHRpZiAoaXNfbGFzdCBcdTAwMjZcdTAwMjYgcngtXHUwMDNlc2tiX2hlYWQpXG4yNjAwOlx0XHRcdHJ4LVx1MDAzZXNrYl9oZWFkID0gbGFuNzQzeF9yeF90cmltX3NrYihyeC1cdTAwM2Vza2JfaGVhZCwgZnJhbWVfbGVuZ3RoKTtcbjI2MDE6XHRcbjI2MDI6XHRcdGlmIChpc19sYXN0IFx1MDAyNlx1MDAyNiByeC1cdTAwM2Vza2JfaGVhZCkge1xuMjYwMzpcdFx0XHRyeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHJ4LVx1MDAzZXNrYl9oZWFkLFxuMjYwNDpcdFx0XHRcdFx0XHRcdFx0cngtXHUwMDNlYWRhcHRlci1cdTAwM2VuZXRkZXYpO1xuMjYwNTpcdFx0XHRpZiAocngtXHUwMDNlYWRhcHRlci1cdTAwM2VuZXRkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNKSB7XG4yNjA2Olx0XHRcdFx0aWYgKCFpc19pY2UgXHUwMDI2XHUwMDI2ICFpc190Y2UgXHUwMDI2XHUwMDI2ICFpc19pY3NtKVxuMjYwNzpcdFx0XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQtXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG4yNjA4Olx0XHRcdH1cbjI2MDk6XHRcdFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFwmIzM0O3NlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wmIzM0OyxcbjI2MTA6XHRcdFx0XHQgICByeC1cdTAwM2Vza2JfaGVhZC1cdTAwM2VsZW4pO1xuMjYxMTpcdFx0XHRuYXBpX2dyb19yZWNlaXZlKFx1MDAyNnJ4LVx1MDAzZW5hcGksIHJ4LVx1MDAzZXNrYl9oZWFkKTtcbjI2MTI6XHRcdFx0cngtXHUwMDNlc2tiX2hlYWQgPSBOVUxMO1xuMjYxMzpcdFx0fVxuMjYxNDpcdFxuMjYxNTpcdG1vdmVfZm9yd2FyZDpcbjI2MTY6XHRcdC8qIHB1c2ggdGFpbCBhbmQgaGVhZCBmb3J3YXJkICovXG4yNjE3Olx0XHRyeC1cdTAwM2VsYXN0X3RhaWwgPSByeC1cdTAwM2VsYXN0X2hlYWQ7XG4yNjE4Olx0XHRyeC1cdTAwM2VsYXN0X2hlYWQgPSBsYW43NDN4X3J4X25leHRfaW5kZXgocngsIHJ4LVx1MDAzZWxhc3RfaGVhZCk7XG4yNjE5Olx0XHRyZXN1bHQgPSBSWF9QUk9DRVNTX1JFU1VMVF9CVUZGRVJfUkVDRUlWRUQ7XG4yNjIwOlx0ZG9uZTpcbjI2MjE6XHRcdHJldHVybiByZXN1bHQ7XG4yNjIyOlx0fVxuMjYyMzpcdFxuMjYyNDpcdHN0YXRpYyBpbnQgbGFuNzQzeF9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgd2VpZ2h0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjMyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIEJ1Z2ZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBsYW43NDN4YCBQQ0llIE5JQyBkcml2ZXIsIGFuZCB0aGlzIHBhdGNoIGltbWVkaWF0ZWx5IGNhdWdodCBteSBleWUuIFRoZSBmdW5jdGlvbiBgbGFuNzQzeF9yeF9wcm9jZXNzX2J1ZmZlcmAgaXMgY2FsbGVkIHdpdGhpbiBgbGFuNzQzeF9yeF9uYXBpX3BvbGxgLCBzbyB3ZSYjMzk7cmUgc3F1YXJlbHkgaW4gdGhlIHJlY2VpdmUgcHJvY2Vzc2luZyBwYXRoLCB3aGljaCBpcyB3aGVyZSBJIHdhcyBleHBlY3RpbmcgdG8gYmUuIFRoZSBpc3N1ZSBmbGFnZ2VkIGlzIHRoYXQgYHNrYi0mZ3Q7aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7YCBpcyBiZWluZyBhcHBsaWVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgc3VidGxlIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gY2hlY2tzdW0gb2ZmbG9hZCBwcm9ibGVtcyBhbmQgcG90ZW50aWFsbHkgY29ycnVwdCBkYXRhIG9yIHVubmVjZXNzYXJ5IENQVSBsb2FkLiBUaGUgbGlrZWx5IHByb2JsZW0gaXMgdGhhdCB0aGUgd3JvbmcgYHNrYmAgaXMgYmVpbmcgbW9kaWZpZWQsIG1heWJlIGl0JiMzOTtzIGFuIGVhcmxpZXIgYnVmZmVyLCBvciBhbiB1bnVzZWQgdmFyaWFibGUgYnkgbWlzdGFrZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgd2hlcmUgdGhlIGBza2JgIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYC4gTGV0IG1lIGdvIGZpbmQgdGhhdCBkZWZpbml0aW9uIGFuZCB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjQ5NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNDk1Olx0XG4yNDk2Olx0XHRpZiAocngtXHUwMDNlbGFzdF9oZWFkIFx1MDAzYyAwIHx8IHJ4LVx1MDAzZWxhc3RfaGVhZCBcdTAwM2U9IHJ4LVx1MDAzZXJpbmdfc2l6ZSlcbjI0OTc6XHRcdFx0Z290byBkb25lO1xuMjQ5ODpcdFxuMjQ5OTpcdFx0aWYgKHJ4LVx1MDAzZWxhc3RfaGVhZCA9PSBjdXJyZW50X2hlYWRfaW5kZXgpXG4yNTAwOlx0XHRcdGdvdG8gZG9uZTtcbjI1MDE6XHRcbjI1MDI6XHRcdGRlc2NyaXB0b3IgPSBcdTAwMjZyeC1cdTAwM2VyaW5nX2NwdV9wdHJbcngtXHUwMDNlbGFzdF9oZWFkXTtcbjI1MDM6XHRcdGlmIChsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxuMjUwNDpcdFx0XHRnb3RvIGRvbmU7XG4yNTA1Olx0XHRidWZmZXJfaW5mbyA9IFx1MDAyNnJ4LVx1MDAzZWJ1ZmZlcl9pbmZvW3J4LVx1MDAzZWxhc3RfaGVhZF07XG4yNTA2Olx0XG4yNTA3Olx0XHRpc19sYXN0ID0gbGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkgXHUwMDI2IFJYX0RFU0NfREFUQTBfTFNfO1xuMjUwODpcdFx0aXNfZmlyc3QgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9GU187XG4yNTA5Olx0XG4yNTEwOlx0XHRpZiAoaXNfbGFzdCBcdTAwMjZcdTAwMjYgbGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkgXHUwMDI2IFJYX0RFU0NfREFUQTBfRVhUXykge1xuMjUxMTpcdFx0XHQvKiBleHRlbnNpb24gaXMgZXhwZWN0ZWQgdG8gZm9sbG93ICovXG4yNTEyOlx0XHRcdGludCBpbmRleCA9IGxhbjc0M3hfcnhfbmV4dF9pbmRleChyeCwgcngtXHUwMDNlbGFzdF9oZWFkKTtcbjI1MTM6XHRcbjI1MTQ6XHRcdFx0aWYgKGluZGV4ID09IGN1cnJlbnRfaGVhZF9pbmRleClcbjI1MTU6XHRcdFx0XHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cbjI1MTY6XHRcdFx0XHRnb3RvIGRvbmU7XG4yNTE3Olx0XHRcdGRlc2NfZXh0ID0gXHUwMDI2cngtXHUwMDNlcmluZ19jcHVfcHRyW2luZGV4XTtcbjI1MTg6XHRcdFx0aWYgKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVx1MDAzZWRhdGEwKSBcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxuMjUxOTpcdFx0XHRcdC8qIGV4dGVuc2lvbiBub3QgeWV0IGF2YWlsYWJsZSAqL1xuMjUyMDpcdFx0XHRcdGdvdG8gZG9uZTtcbjI1MjE6XHRcdFx0aWYgKCEobGUzMl90b19jcHUoZGVzY19leHQtXHUwMDNlZGF0YTApIFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pKVxuMjUyMjpcdFx0XHRcdGdvdG8gbW92ZV9mb3J3YXJkO1xuMjUyMzpcdFx0XHRleHRlbnNpb25faW5kZXggPSBpbmRleDtcbjI1MjQ6XHRcdH1cbjI1MjU6XHRcbjI1MjY6XHRcdC8qIE9ubHkgdGhlIGxhc3QgYnVmZmVyIGluIGEgbXVsdGktYnVmZmVyIGZyYW1lIGNvbnRhaW5zIHRoZSB0b3RhbCBmcmFtZVxuMjUyNzpcdFx0ICogbGVuZ3RoLiBUaGUgY2hpcCBvY2Nhc2lvbmFsbHkgc2VuZHMgbW9yZSBidWZmZXJzIHRoYW4gc3RyaWN0bHlcbjI1Mjg6XHRcdCAqIHJlcXVpcmVkIHRvIHJlYWNoIHRoZSB0b3RhbCBmcmFtZSBsZW5ndGguXG4yNTI5Olx0XHQgKiBIYW5kbGUgdGhpcyBieSBhZGRpbmcgYWxsIGJ1ZmZlcnMgdG8gdGhlIHNrYiBpbiB0aGVpciBlbnRpcmV0eS5cbjI1MzA6XHRcdCAqIE9uY2UgdGhlIHJlYWwgZnJhbWUgbGVuZ3RoIGlzIGtub3duLCB0cmltIHRoZSBza2IuXG4yNTMxOlx0XHQgKi9cbjI1MzI6XHRcdGZyYW1lX2xlbmd0aCA9XG4yNTMzOlx0XHRcdFJYX0RFU0NfREFUQTBfRlJBTUVfTEVOR1RIX0dFVF8obGUzMl90b19jcHUoZGVzY3JpcHRvci1cdTAwM2VkYXRhMCkpO1xuMjUzNDpcdFx0YnVmZmVyX2xlbmd0aCA9IGJ1ZmZlcl9pbmZvLVx1MDAzZWJ1ZmZlcl9sZW5ndGg7XG4yNTM1Olx0XHRpc19pY2UgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVx1MDAzZWRhdGExKSBcdTAwMjYgUlhfREVTQ19EQVRBMV9TVEFUVVNfSUNFXztcbjI1MzY6XHRcdGlzX3RjZSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXHUwMDNlZGF0YTEpIFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19UQ0VfO1xuMjUzNzpcdFx0aXNfaWNzbSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXHUwMDNlZGF0YTEpIFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19JQ1NNXztcbjI1Mzg6XHRcbjI1Mzk6XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDslcyVzY2h1bms6ICVkLyVkXCYjMzQ7LFxuMjU0MDpcdFx0XHQgICBpc19maXJzdCA/IFwmIzM0O2ZpcnN0IFwmIzM0OyA6IFwmIzM0OyAgICAgIFwmIzM0OyxcbjI1NDE6XHRcdFx0ICAgaXNfbGFzdCAgPyBcJiMzNDtsYXN0ICBcJiMzNDsgOiBcJiMzNDsgICAgICBcJiMzNDssXG4yNTQyOlx0XHRcdCAgIGZyYW1lX2xlbmd0aCwgYnVmZmVyX2xlbmd0aCk7XG4yNTQzOlx0XG4yNTQ0Olx0XHQvKiBzYXZlIGV4aXN0aW5nIHNrYiwgYWxsb2NhdGUgbmV3IHNrYiBhbmQgbWFwIHRvIGRtYSAqL1xuMjU0NTpcdFx0c2tiID0gYnVmZmVyX2luZm8tXHUwMDNlc2tiO1xuMjU0NjpcdFx0aWYgKGxhbjc0M3hfcnhfaW5pdF9yaW5nX2VsZW1lbnQocngsIHJ4LVx1MDAzZWxhc3RfaGVhZCwgR0ZQX0FUT01JQykpIHtcbjI1NDc6XHRcdFx0LyogZmFpbGVkIHRvIGFsbG9jYXRlIG5leHQgc2tiLlxuMjU0ODpcdFx0XHQgKiBNZW1vcnkgaXMgdmVyeSBsb3cuXG4yNTQ5Olx0XHRcdCAqIERyb3AgdGhpcyBwYWNrZXQgYW5kIHJldXNlIGJ1ZmZlci5cbjI1NTA6XHRcdFx0ICovXG4yNTUxOlx0XHRcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCByeC1cdTAwM2VsYXN0X2hlYWQpO1xuMjU1MjpcdFx0XHQvKiBkcm9wIHBhY2tldCB0aGF0IHdhcyBiZWluZyBhc3NlbWJsZWQgKi9cbjI1NTM6XHRcdFx0ZGV2X2tmcmVlX3NrYl9pcnEocngtXHUwMDNlc2tiX2hlYWQpO1xuMjU1NDpcdFx0XHRyeC1cdTAwM2Vza2JfaGVhZCA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDAwOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzg2CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDU0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMQU43NDN4IERyaXZlciBBbmFseXNpcyAtIE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldCwgZGVlcCB3aXRoaW4gYGxhbjc0M3hfbWFpbi5jYCwgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7Q2FuIHN5emthbGxlciBldmVuICpyZWFjaCogdGhpcz8mIzM0OyBJIG1lYW4sIHJlYWxpc3RpY2FsbHksIGlzIHRoaXMgaGFyZHdhcmUgYWNjZXNzaWJsZSBpbiBhIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPwoKSSBuZWVkIHRvIGFwcGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgdGV4dCBzdGF0ZXMgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQyBvciBQQ0llIGNhcmQgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQuCgpCaW5nby4gVGhlIExBTjc0M3ggaXMsIHdpdGhvdXQgcXVlc3Rpb24sIHZlbmRvci1zcGVjaWZpYyBQQ0llIGV0aGVybmV0IE5JQy4gTm93LCBRRU1VJiMzOTtzIGdvdCAqc29tZSogbmV0d29yayBlbXVsYXRpb24sIGJ1dCBJJiMzOTttIGNlcnRhaW4gaXQgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZm9yIHRoaXMgc3BlY2lmaWMgTWljcm9jaGlwIGNvbnRyb2xsZXIuIEkmIzM5O20gcHJhY3RpY2FsbHkgY2VydGFpbiBvZiBpdCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBpdCBjZXJ0YWluIGFuZCBjb25maXJtOiBObywgUUVNVSBkb2VzbiYjMzk7dCBoYXZlIExBTjc0M3ggZW11bGF0aW9uLiBUaGVyZWZvcmUsIHN5emthbGxlciAqY2Fubm90KiBmdXp6IGl0LiBTeXprYWxsZXIgcnVucyBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuCgpGdXJ0aGVybW9yZSwgbG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MgcHJldHR5IG9idmlvdXMgdGhhdCB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLCB0aGUgYml0IHRoaXMgcGF0Y2ggdG91Y2hlcywgaXMgZ29pbmcgdG8gZ2V0IHRyaWdnZXJlZCAqb25seSogd2hlbiB0aGUgaGFyZHdhcmUgaGFzIGdvbmUgdGhyb3VnaCBpbml0aWFsaXphdGlvbiwgaW50ZXJydXB0cyBhcmUgZmlyaW5nLCBOQVBJIGhhcyBraWNrZWQgaW4sIGFuZCBwYWNrZXRzIGhhdmUgYXJyaXZlZCBmcm9tIHRoZSBoYXJkd2FyZSBETUEgZGVzY3JpcHRvciByaW5nLiBBbGwgdmVyeSBoYXJkd2FyZS1zcGVjaWZpYy4KClNvLCB0aGlzIGNsZWFybHkgZml0cyB0aGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBkZXNjcmlwdGlvbjogYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgdGhhdCBuZWVkcyBpdHMgb3duIEFTSUMvUENJZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0JiMzOTtzIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBhIGRlYWQgZW5kIGZvciBzeXprYWxsZXIuCgpMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2ssIGRvdCBhbGwgdGhlIEkmIzM5O3MgYW5kIGNyb3NzIGFsbCB0aGUgVCYjMzk7cy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmb2N1cyBvbi4gYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYWxzbyBiZSBlbXB0eS4gQW5kIHRoZSBgUmVhc29uaW5nYCBzaG91bGQgYmUgYSBjb25jaXNlIHJlY2FwOiBUaGlzIHBhdGNoIG1vZGlmaWVzIFJYIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIGluIGBsYW43NDN4X21haW4uY2AsIHBhcnQgb2YgdGhlIGBDT05GSUdfTEFONzQzWGAgZHJpdmVyIGZvciBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIGV0aGVybmV0IGNvbnRyb2xsZXJzLiBUaGlzIGhhcmR3YXJlIGRlbWFuZHMgcGh5c2ljYWwgQVNJQy9QQ0llIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBieSBzeXprYWxsZXIuCgpTYW5pdHkgY2hlY2ssIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGBGb2N1c1N5bWJvbHM6IFtdYCwgYEVuYWJsZUNvbmZpZ3M6IFtdYCwgYW5kIHRoZSBjb25jaXNlIGBSZWFzb25pbmdgLiBFdmVyeXRoaW5nIGxvb2tzIGNvcnJlY3QuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBEb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJYIGJ1ZmZlciBwcm9jZXNzaW5nIGluIHRoZSBsYW43NDN4IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jKS4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWljcm9jaGlwIExBTjc0M3gvUENJMTF4MXggUENJZSBHaWdhYml0IEV0aGVybmV0IGRldmljZXMgKENPTkZJR19MQU43NDNYKSwgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAwMDoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NDIuNDA4MzM5MjEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExNzQ4MDI5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSWCBidWZmZXIgcHJvY2Vzc2luZyBpbiB0aGUgbGFuNzQzeCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYykuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBMQU43NDN4L1BDSTExeDF4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2VzIChDT05GSUdfTEFONzQzWCksIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDAwOjI0OjQyLjQwODM0MzUzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzNDk4MDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzE1YzEwM2E0Zjk2ZmEyZmFjNTEzMjg2NTliZjhlMzI5OWVlMjBjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcXG5pbmRleCAyNGFlNTZhM2M5ZWQ3Li44MmQzZWMyMGJhMjU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXIoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlYWRhcHRlci1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0XFx0aWYgKHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcXG4gXFx0XFx0XFx0aWYgKCFpc19pY2UgXFx1MDAyNlxcdTAwMjYgIWlzX3RjZSBcXHUwMDI2XFx1MDAyNiAhaXNfaWNzbSlcXG4tXFx0XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG4rXFx0XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcInNlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1xcXCIsXFxuIFxcdFxcdFxcdCAgIHJ4LVxcdTAwM2Vza2JfaGVhZC1cXHUwMDNlbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NDIuOTAyNDg4MTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDY4MDY0MDYxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxNWMxMDNhNGY5NmZhMmZhYzUxMzI4NjU5YmY4ZTMyOTllZTIwYzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAwMDoyNDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuaW5kZXggMjRhZTU2YTNjOWVkNy4uODJkM2VjMjBiYTI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5AQCAtMjYwNCw3ICsyNjA0LDcgQEAgc3RhdGljIGludCBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyKHN0cnVjdCBsYW43NDN4X3J4ICpyeClcbiBcdFx0XHRcdFx0XHRcdHJ4LVx1MDAzZWFkYXB0ZXItXHUwMDNlbmV0ZGV2KTtcbiBcdFx0aWYgKHJ4LVx1MDAzZWFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYQ1NVTSkge1xuIFx0XHRcdGlmICghaXNfaWNlIFx1MDAyNlx1MDAyNiAhaXNfdGNlIFx1MDAyNlx1MDAyNiAhaXNfaWNzbSlcbi1cdFx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbitcdFx0XHRcdHJ4LVx1MDAzZXNrYl9oZWFkLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xuIFx0XHR9XG4gXHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcInNlbmRpbmcgJWQgYnl0ZSBmcmFtZSB0byBPU1wiLFxuIFx0XHRcdCAgIHJ4LVx1MDAzZXNrYl9oZWFkLVx1MDAzZWxlbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0Mi45MDI0OTAzNzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MzM1OTcwMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nLiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyB0aGUgYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBhcHBlYXJzIHRvIGludm9sdmUgc2V0dGluZyB0aGUgYGlwX3N1bW1lZGAgZmllbGQgb2YgYSBgc2tiX2hlYWRgIHN0cnVjdHVyZSB0byBgQ0hFQ0tTVU1fVU5ORUNFU1NBUllgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyB3aXRoaW4gYSBjaGVja3N1bS1yZWxhdGVkIGJsb2NrLiBJdCBhcHBlYXJzIHRoYXQgaXQgaXMgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSBoYXJkd2FyZSBvZmZsb2FkIG9mIGNoZWNrc3VtIGNhbGN1bGF0aW9ucy4gVGhpcyB3b3VsZCBvY2N1ciBpZiB0aGUgaGFyZHdhcmUgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuXG5cbk5vdywgSSBuZWVkIGEgbGl0dGxlIG1vcmUgY29udGV4dC4gV2hhdCBleGFjdGx5IGlzIGBsYW43NDN4YD8gSXMgdGhpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEV0aGVybmV0IGNhcmQ/IElzIGl0IGEgTWljcm9jaGlwIExBTjc0M3ggUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIGFzIHRoZSBmaWxlIHBhdGggc3VnZ2VzdHM/IEknbGwgcXVpY2tseSB2ZXJpZnkgdXNpbmcgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGJlIHN1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBiZWluZyBhZGRyZXNzZWQgdG8gZnVsbHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgaGFyZHdhcmUsIEkgY2FuIGFuYWx5emUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiB0aGUgY2hlY2tzdW1taW5nIHBlcmZvcm1hbmNlIHdpdGggYSBsaXR0bGUgbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NjUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0OC4yMzg0NjMxMTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NDY4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTEFONzQzWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2OTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTM2PWNvbmZpZyBFTkNYMjRKNjAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZzo0NTpjb25maWcgTEFONzQzWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJMQU43NDN4IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRU5DWDI0SjYwMCkgKz0gZW5jeDI0ajYwMC5vIGVuY3gyNGo2MDAtcmVnbWFwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTEFONzQzWCkgKz0gbGFuNzQzeC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMtLyogZWVwcm9tICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0OiNkZWZpbmUgTEFONzQzWF9FRVBST01fTUFHSUNcXHRcXHQgICAgKDB4NzRBNSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTU6I2RlZmluZSBMQU43NDNYX09UUF9NQUdJQ1xcdFxcdCAgICAoMHg3NEYzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNi0jZGVmaW5lIEVFUFJPTV9JTkRJQ0FUT1JfMVxcdFxcdCAgICAoMHhBNSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjg6I2RlZmluZSBMQU43NDNYX0NTUl9SRUFEX09QKG9mZnNldClcXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0yNjI9c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjY6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIU19PVFBfU1RBVFVTLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2Ny1cXHRcXHRcXHRcXHQgICEodmFsIFxcdTAwMjYgT1RQX1NUQVRVU19CVVNZXyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NDkxPXN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDk1OlxcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgSFNfRTJQX0NNRCwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTYtXFx0XFx0XFx0XFx0ICAoISh2YWwgXFx1MDAyNiBIU19FMlBfQ01EX0VQQ19CVVNZXykgfHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02MTY9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyMDpcXHRpZiAoYWRhcHRlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyMS1cXHRcXHRyZXR1cm4gYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXggPyBNQVhfSFNfT1RQX1NJWkUgOiBNQVhfT1RQX1NJWkU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9NjI2PXN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzMjpcXHRpZiAoYWRhcHRlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0FEQVBURVJfRkxBR19PVFApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMzLVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz02NTE9c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU3OlxcdGlmIChhZGFwdGVyLVxcdTAwM2VmbGFncyBcXHUwMDI2IExBTjc0M1hfQURBUFRFUl9GTEFHX09UUCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTgtXFx0XFx0LyogQmV3YXJlISAgT1RQIGlzIE9uZSBUaW1lIFByb2dyYW1taW5nIE9OTFkhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY1OTpcXHRcXHRpZiAoZWUtXFx1MDAzZW1hZ2ljID09IExBTjc0M1hfT1RQX01BR0lDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2MC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjY3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2ODpcXHRcXHRpZiAoZWUtXFx1MDAzZW1hZ2ljID09IExBTjc0M1hfRUVQUk9NX01BR0lDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2OS1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM9OTM0PXN0YXRpYyB1MzIgbGFuNzQzeF9ldGh0b29sX2dldF9yeF9yaW5nX2NvdW50KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjkzNjpcXHRyZXR1cm4gTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTExOTg9c3RhdGljIHZvaWQgbGFuNzQzeF9jb21tb25fcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEyMDM6XFx0bWVtc2V0KHAsIDAsIChNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1MgKiBzaXplb2YodTMyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jPTEzMTA9c3RhdGljIGludCBsYW43NDN4X2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMTItXFx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMTM6XFx0dTMyIG51bV9yZWdzID0gTUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzE1LVxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19zZ21paV9lbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMxNjpcXHRcXHRudW1fcmVncyArPSBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYz0xMzIxPXN0YXRpYyB2b2lkIGxhbjc0M3hfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzMwOlxcdHJlZ3MtXFx1MDAzZXZlcnNpb24gPSBMQU43NDNYX0VUSF9SRUdfVkVSU0lPTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzMS1cXHRyZWdzLVxcdTAwM2VsZW4gPSByZWdzX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzMzLVxcdGxhbjc0M3hfY29tbW9uX3JlZ3MoZGV2LCBwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzNDpcXHRwID0gKHUzMiAqKXAgKyBNQVhfTEFONzQzWF9FVEhfQ09NTU9OX1JFR1M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzNy1cXHRcXHRsYW43NDN4X3NnbWlpX3JlZ3MoZGV2LCBwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTMzODpcXHRcXHRwID0gKHUzMiAqKXAgKyBNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMzOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6NDojaWZuZGVmIF9MQU43NDNYX0VUSFRPT0xfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaDo1OiNkZWZpbmUgX0xBTjc0M1hfRVRIVE9PTF9IXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6OTojZGVmaW5lIExBTjc0M1hfRVRIX1JFR19WRVJTSU9OICAgICAgICAgMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MTE9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMzEtXFx0LyogQWRkIG5ldyByZWdpc3RlcnMgYWJvdmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg6MzI6XFx0TUFYX0xBTjc0M1hfRVRIX0NPTU1PTl9SRUdTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oLTMzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmg9MzU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmgtMTAwLVxcdC8qIEFkZCBuZXcgcmVnaXN0ZXJzIGFib3ZlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwMTpcXHRNQVhfTEFONzQzWF9FVEhfU0dNSUlfUkVHU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaD0xMDQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW43NDN4X2V0aHRvb2xfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuaC0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5oOjEwNjojZW5kaWYgLyogX0xBTjc0M1hfRVRIVE9PTF9IICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTQ1PXZvaWQgbGFuNzQzeF9jc3Jfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1MTojZGVmaW5lIExBTjc0M1hfQ1NSX1JFQURfT1Aob2Zmc2V0KVxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE1Mz1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2xpZ2h0X3Jlc2V0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxNjE6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBIV19DRkcsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE2Mi1cXHRcXHRcXHRcXHQgICEoZGF0YSBcXHUwMDI2IEhXX0NGR19MUlNUXyksIDEwMDAwMCwgMTAwMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE2NT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX3dhaXRfZm9yX2JpdF9hdG9taWMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0xNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE3MjpcXHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0X2F0b21pYyhMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3My1cXHRcXHRcXHRcXHRcXHQgdGFyZ2V0X3ZhbHVlID09ICEhKGRhdGEgXFx1MDAyNiBiaXRfbWFzayksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbGFuNzQzeF9jc3Jfd2FpdF9mb3JfYml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxODQ6XFx0cmV0dXJuIHJlYWR4X3BvbGxfdGltZW91dChMQU43NDNYX0NTUl9SRUFEX09QLCBvZmZzZXQsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE4NS1cXHRcXHRcXHRcXHQgIHRhcmdldF92YWx1ZSA9PSAhIShkYXRhIFxcdTAwMjYgYml0X21hc2spLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTE4OT1zdGF0aWMgaW50IGxhbjc0M3hfY3NyX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxMDpcXHRjc3ItXFx1MDAzZWZsYWdzID0gTEFONzQzWF9DU1JfRkxBR19TVVBQT1JUU19JTlRSX0FVVE9fU0VUX0NMUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjExLVxcdHN3aXRjaCAoY3NyLVxcdTAwM2VpZF9yZXYgXFx1MDAyNiBJRF9SRVZfQ0hJUF9SRVZfTUFTS18pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjEyLVxcdGNhc2UgSURfUkVWX0NISVBfUkVWX0EwXzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEzOlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19BMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjE0OlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfkxBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE2LVxcdGNhc2UgSURfUkVWX0NISVBfUkVWX0IwXzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjE3OlxcdFxcdGNzci1cXHUwMDNlZmxhZ3MgfD0gTEFONzQzWF9DU1JfRkxBR19JU19CMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjE4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTIzND1zdGF0aWMgdm9pZCBsYW43NDN4X3R4X2lzcih2b2lkICpjb250ZXh0LCB1MzIgaW50X3N0cywgdTMyIGZsYWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0MC1cXHRsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNDE6XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI0Mi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfRU5fQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjUxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTItXFx0XFx0XFx0ZG1hY19pbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBETUFDX0lOVF9TVFMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI1NC1cXHRcXHRcXHRkbWFjX2ludF9zdHMgPSBpb2NfYml0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNTU6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNTYtXFx0XFx0XFx0ZG1hY19pbnRfZW4gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9Mjc1PXN0YXRpYyB2b2lkIGxhbjc0M3hfcnhfaXNyKHZvaWQgKmNvbnRleHQsIHUzMiBpbnRfc3RzLCB1MzIgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODE6XFx0aWYgKGZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4Mi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfRU5fQ0xSLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjkxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yOTItXFx0XFx0XFx0ZG1hY19pbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBETUFDX0lOVF9TVFMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5NC1cXHRcXHRcXHRkbWFjX2ludF9zdHMgPSByeF9mcmFtZV9iaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI5NTpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI5Ni1cXHRcXHRcXHRkbWFjX2ludF9lbiA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTY9c3RhdGljIHZvaWQgbGFuNzQzeF9pbnRyX3NoYXJlZF9pc3Iodm9pZCAqY29udGV4dCwgdTMyIGludF9zdHMsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjEtXFx0aWYgKGludF9zdHMgXFx1MDAyNiBJTlRfQklUX0FMTF9SWF8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzIyOlxcdFxcdGZvciAoY2hhbm5lbCA9IDA7IGNoYW5uZWwgXFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMy1cXHRcXHRcXHRjaGFubmVsKyspIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNTk9c3RhdGljIGlycXJldHVybl90IGxhbjc0M3hfaW50cl9lbnRyeV9pc3IoaW50IGlycSwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzY3OlxcdGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1JFQUQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY4LVxcdFxcdGludF9zdHMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9TVFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjktXFx0fSBlbHNlIGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcwOlxcdFxcdCAgIChMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcxOlxcdFxcdCAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9SMkMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3Mi1cXHRcXHRpbnRfc3RzID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBJTlRfU1RTX1IyQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODE6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zODItXFx0XFx0LyogZGlzYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozODc6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM4OC1cXHRcXHQvKiBkaXNhYmxlIG1hc3RlciBpbnRlcnJ1cHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM5MTpcXHRpZiAodmVjdG9yLVxcdTAwM2VmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zOTItXFx0XFx0aW50X2VuYWJsZXMgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIElOVF9FTl9TRVQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDEyOlxcdGlmICh2ZWN0b3ItXFx1MDAzZWZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19NQVNURVJfRU5BQkxFX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDEzLVxcdFxcdC8qIGVuYWJsZSBtYXN0ZXIgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MTY6XFx0aWYgKHZlY3Rvci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDE3LVxcdFxcdC8qIGVuYWJsZSB2ZWN0b3IgaW50ZXJydXB0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9NDQ2PXN0YXRpYyBpbnQgbGFuNzQzeF9pbnRyX3JlZ2lzdGVyX2lzcihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQ2NC1cXHRcXHRcXHQgIGxhbjc0M3hfaW50cl9lbnRyeV9pc3IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjQ2NTpcXHRcXHRcXHQgIChmbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRCkgP1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00NjYtXFx0XFx0XFx0ICBJUlFGX1NIQVJFRCA6IDAsIERSSVZFUl9OQU1FLCB2ZWN0b3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTUzMD1zdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTU0LVxcdFxcdFxcdFxcdCAgICAxICsgdXNlZF90eF9jaGFubmVscyArXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU1NTpcXHRcXHRcXHRcXHQgICAgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTU3MC1cXHRpZiAoIWludHItXFx1MDAzZW51bWJlcl9vZl92ZWN0b3JzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjU3MTpcXHRcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy01NzItXFx0XFx0XFx0aWYgKCFwY2lfZW5hYmxlX21zaShhZGFwdGVyLVxcdTAwM2VwZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwMC1cXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX01BUDIsIDB4MDAwMDAwMDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MDE6XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwMjpcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjAzOlxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNDpcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTYwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjA2LVxcdGlmIChpbnRyLVxcdTAwM2V1c2luZ192ZWN0b3JzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYwNzpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjA4OlxcdFxcdFxcdCBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjA5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYxMDpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX01BU1RFUl9FTkFCTEVfQ0xFQVIgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTE6XFx0XFx0XFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfTUFTVEVSX0VOQUJMRV9TRVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTI6XFx0XFx0XFx0IExBTjc0M1hfVkVDVE9SX0ZMQUdfSVJRX1NIQVJFRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjEzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTU6XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE2OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE3OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MTg6XFx0XFx0ZmxhZ3MgXFx1MDAyNj0gfkxBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjE5OlxcdFxcdGZsYWdzIFxcdTAwMjY9IH5MQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0hFQ0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYyMDpcXHRcXHRmbGFncyB8PSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUjJDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2MjE6XFx0XFx0ZmxhZ3MgfD0gTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjIyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjYzODpcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2Mzk6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDA6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDE6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDI6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDM6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NDY6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NDctXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlzX3BjaTExeDF4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0ODpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIExBTjc0M1hfSU5UX01PRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY0OTpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY1MC1cXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX01BUDAsIDB4MDAwMDc2NTQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY2OS1cXHRcXHRcXHRudW1iZXJfb2ZfdHhfdmVjdG9ycyA9IHVzZWRfdHhfY2hhbm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3MDpcXHRcXHRmbGFncyA9IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SRUFEIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjcxOlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo2NzI6XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0NIRUNLIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjczOlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY3NDpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc1OlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9JU1JfU0VUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy02NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTY3Ny1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc4OlxcdFxcdCAgIExBTjc0M1hfQ1NSX0ZMQUdfU1VQUE9SVFNfSU5UUl9BVVRPX1NFVF9DTFIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Njc5OlxcdFxcdFxcdGZsYWdzID0gTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NjgwOlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MTpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQVVUT19DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjY4MjpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNjgzLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MDEtXFx0XFx0XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MDI6XFx0XFx0XFx0ICAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTcwMy1cXHRcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMTpcXHRcXHRpZiAobnVtYmVyX29mX3J4X3ZlY3RvcnMgXFx1MDAzZSBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxMjpcXHRcXHRcXHRudW1iZXJfb2ZfcnhfdmVjdG9ycyA9IExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTQ6XFx0XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfUkVBRCB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNTpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzE2OlxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9DSEVDSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxNzpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfQ0xFQVIgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MTg6XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0lTUl9DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcxOTpcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfSVNSX1NFVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNzIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjEtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyMjpcXHRcXHQgICAgTEFONzQzWF9DU1JfRkxBR19TVVBQT1JUU19JTlRSX0FVVE9fU0VUX0NMUikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjM6XFx0XFx0XFx0ZmxhZ3MgPSBMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19DTEVBUiB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjcyNDpcXHRcXHRcXHRcXHRMQU43NDNYX1ZFQ1RPUl9GTEFHX1ZFQ1RPUl9FTkFCTEVfQVVUT19TRVQgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3MjU6XFx0XFx0XFx0XFx0TEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI2OlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NzI3OlxcdFxcdFxcdFxcdExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy03MjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczNi1cXHRcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo3Mzc6XFx0XFx0XFx0ICAgIExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX0NMRUFSKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTczOC1cXHRcXHRcXHRcXHRpbnRfdmVjX2VuX2F1dG9fY2xyIHw9IElOVF9WRUNfRU5fKHZlY3Rvcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9ODA4PXN0YXRpYyBpbnQgbGFuNzQzeF9tYWNfbWlpX3dhaXRfdGlsbF9ub3RfYnVzeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTgxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6ODEyOlxcdHJldHVybiByZWFkeF9wb2xsX3RpbWVvdXQoTEFONzQzWF9DU1JfUkVBRF9PUCwgTUFDX01JSV9BQ0MsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTgxMy1cXHRcXHRcXHRcXHQgICEoZGF0YSBcXHUwMDI2IE1BQ19NSUlfQUNDX01JSV9CVVNZXyksIDAsIDEwMDAwMDApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTk0Mz1zdGF0aWMgaW50IGxhbjc0M3hfc2dtaWlfd2FpdF90aWxsX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtOTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo5NDg6XFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIFNHTUlJX0FDQywgZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtOTQ5LVxcdFxcdFxcdFxcdCAhKGRhdGEgXFx1MDAyNiBTR01JSV9BQ0NfU0dNSUlfQlpZXyksIDEwMCwgMTAwMDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTM3OT1zdGF0aWMgaW50IGxhbjc0M3hfaHdfcmVzZXRfcGh5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTM4OTpcXHRyZXR1cm4gcmVhZHhfcG9sbF90aW1lb3V0KExBTjc0M1hfQ1NSX1JFQURfT1AsIFBNVF9DVEwsIGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzOTAtXFx0XFx0XFx0XFx0ICAoIShkYXRhIFxcdTAwMjYgUE1UX0NUTF9FVEhfUEhZX1JTVF8pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTUxNj1zdGF0aWMgaW50IGxhbjc0M3hfZG1hY19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTUzOC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE1Mzk6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE1NDAtXFx0XFx0ZGF0YSB8PSBETUFDX0NGR19DT0FMX0VOXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xNzM0PXN0YXRpYyB2b2lkIGxhbjc0M3hfcnhfY2ZnX2JfdHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjE3NDE6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTE3NDItXFx0XFx0Y2hhbm5lbF9udW1iZXIgPSBhZGFwdGVyLVxcdTAwM2VyeFtpbmRleF0uY2hhbm5lbF9udW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MTk1NT1zdGF0aWMgdm9pZCBsYW43NDN4X3R4X2ZyYW1lX2VuZChzdHJ1Y3QgbGFuNzQzeF90eCAqdHgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MTpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfVkVDVE9SX0VOQUJMRV9BVVRPX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5Mi1cXHRcXHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX1RPUF9JTlRfVkVDX0VOXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MTk5MzpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTk5NC1cXHRcXHR0eF90YWlsX2ZsYWdzIHw9IFRYX1RBSUxfU0VUX0RNQUNfSU5UX0VOXyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjA5Mz1zdGF0aWMgaW50IGxhbjc0M3hfdHhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTAyLVxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRE1BQ19JTlRfU1RTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjEwMzpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19XMkMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxMDQtXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRE1BQ19JTlRfU1RTLCBpb2NfYml0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yMTU4PXN0YXRpYyBpbnQgbGFuNzQzeF90eF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfdHggKnR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIxNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIxNjU6XFx0dHgtXFx1MDAzZXJpbmdfc2l6ZSA9IExBTjc0M1hfVFhfUklOR19TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMTY2LVxcdGlmICh0eC1cXHUwMDNlcmluZ19zaXplIFxcdTAwMjYgflRYX0NGR19CX1RYX1JJTkdfTEVOX01BU0tfKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MjI1MT1zdGF0aWMgaW50IGxhbjc0M3hfdHhfb3BlbihzdHJ1Y3QgbGFuNzQzeF90eCAqdHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjI5MS1cXHRkYXRhIHw9ICgodHgtXFx1MDAzZXJpbmdfc2l6ZSkgXFx1MDAyNiBUWF9DRkdfQl9UWF9SSU5HX0xFTl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIyOTI6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIyOTMtXFx0XFx0ZGF0YSB8PSBUWF9DRkdfQl9URE1BQkxfNTEyXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk3LVxcdGRhdGEgPSBUWF9DRkdfQV9UWF9UTVJfSFBXQl9TRUxfSU9DXyB8IFRYX0NGR19BX1RYX0hQX1dCX0VOXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjI5ODpcXHRpZiAoIShhZGFwdGVyLVxcdTAwM2Vjc3IuZmxhZ3MgXFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMjk5LVxcdFxcdGRhdGEgfD0gVFhfQ0ZHX0FfVFhfSFBfV0JfT05fSU5UX1RNUl87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMyOS1cXHRkYXRhID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzMDpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yMzMxLVxcdFxcdGRhdGEgfD0gVFhfQ0ZHX0NfVFhfVE9QX0lOVF9FTl9BVVRPX0NMUl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzMzI6XFx0aWYgKHR4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfQVVUT19DTEVBUilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMzMy1cXHRcXHRkYXRhIHw9IFRYX0NGR19DX1RYX0RNQV9JTlRfU1RTX0FVVE9fQ0xSXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MjMzNDpcXHRpZiAodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19SMkMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzUtXFx0XFx0ZGF0YSB8PSBUWF9DRkdfQ19UWF9JTlRfU1RTX1IyQ19NT0RFX01BU0tfO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyMzM2OlxcdGlmICh0eC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX1IyQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjMzNy1cXHRcXHRkYXRhIHw9IFRYX0NGR19DX1RYX0lOVF9FTl9SMkNfO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjIzNDA6XFx0aWYgKCEodHgtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX0VOQUJMRV9BVVRPX1NFVCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTIzNDEtXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX1NFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjI0PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgd2VpZ2h0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI2MzI6XFx0aWYgKHJ4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9TVEFUVVNfVzJDKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2MzMtXFx0XFx0LyogY2xlYXIgaW50IHN0YXR1cyBiaXQgYmVmb3JlIHJlYWRpbmcgcGFja2V0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjY0OS1cXHQvKiByZS1hcm0gaW50ZXJydXB0cywgbXVzdCB3cml0ZSB0byByeCB0YWlsIG9uIHNvbWUgY2hpcCB2YXJpYW50cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUwOlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19WRUNUT1JfRU5BQkxFX0FVVE9fU0VUKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNjUxLVxcdFxcdHJ4X3RhaWxfZmxhZ3MgfD0gUlhfVEFJTF9TRVRfVE9QX0lOVF9WRUNfRU5fO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyNjUyOlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fU0VUKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI2NTMtXFx0XFx0cnhfdGFpbF9mbGFncyB8PSBSWF9UQUlMX1NFVF9UT1BfSU5UX0VOXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yNjk5PXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9yaW5nX2luaXQoc3RydWN0IGxhbjc0M3hfcnggKnJ4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI3MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI3MDc6XFx0cngtXFx1MDAzZXJpbmdfc2l6ZSA9IExBTjc0M1hfUlhfUklOR19TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yNzA4LVxcdGlmIChyeC1cXHUwMDNlcmluZ19zaXplIFxcdTAwM2M9IDEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0yODAwPXN0YXRpYyBpbnQgbGFuNzQzeF9yeF9vcGVuKHN0cnVjdCBsYW43NDN4X3J4ICpyeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODM0LVxcdGRhdGEgPSBSWF9DRkdfQV9SWF9IUF9XQl9FTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4MzU6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjgzNi1cXHRcXHRkYXRhIHw9IChSWF9DRkdfQV9SWF9XQl9PTl9JTlRfVE1SXyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg1NC1cXHRkYXRhIHw9ICgocngtXFx1MDAzZXJpbmdfc2l6ZSkgXFx1MDAyNiBSWF9DRkdfQl9SWF9SSU5HX0xFTl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NTU6XFx0aWYgKCEoYWRhcHRlci1cXHUwMDNlY3NyLmZsYWdzIFxcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NTYtXFx0XFx0ZGF0YSB8PSBSWF9DRkdfQl9SRE1BQkxfNTEyXztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY0LVxcdGRhdGEgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY1OlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfRU5BQkxFX0FVVE9fQ0xFQVIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTI4NjYtXFx0XFx0ZGF0YSB8PSBSWF9DRkdfQ19SWF9UT1BfSU5UX0VOX0FVVE9fQ0xSXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mjg2NzpcXHRpZiAocngtXFx1MDAzZXZlY3Rvcl9mbGFncyBcXHUwMDI2IExBTjc0M1hfVkVDVE9SX0ZMQUdfU09VUkNFX1NUQVRVU19BVVRPX0NMRUFSKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODY4LVxcdFxcdGRhdGEgfD0gUlhfQ0ZHX0NfUlhfRE1BX0lOVF9TVFNfQVVUT19DTFJfO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoyODY5OlxcdGlmIChyeC1cXHUwMDNldmVjdG9yX2ZsYWdzIFxcdTAwMjYgTEFONzQzWF9WRUNUT1JfRkxBR19TT1VSQ0VfU1RBVFVTX1IyQylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMjg3MC1cXHRcXHRkYXRhIHw9IFJYX0NGR19DX1JYX0lOVF9TVFNfUjJDX01PREVfTUFTS187XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjI4NzE6XFx0aWYgKHJ4LVxcdTAwM2V2ZWN0b3JfZmxhZ3MgXFx1MDAyNiBMQU43NDNYX1ZFQ1RPUl9GTEFHX1NPVVJDRV9FTkFCTEVfUjJDKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0yODcyLVxcdFxcdGRhdGEgfD0gUlhfQ0ZHX0NfUlhfSU5UX0VOX1IyQ187XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzI5Mj1zdGF0aWMgaW50IGxhbjc0M3hfbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzI5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzMwMDpcXHRmb3IgKGluZGV4ID0gMDsgaW5kZXggXFx1MDAzYyBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4KyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMDEtXFx0XFx0bGFuNzQzeF9yeF9jbG9zZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcnhbaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMzE0PXN0YXRpYyBpbnQgbGFuNzQzeF9uZXRkZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzMzg6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzMzktXFx0XFx0cmV0ID0gbGFuNzQzeF9yeF9vcGVuKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeFtpbmRleF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzNzEtY2xvc2Vfcng6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMzNzI6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMzNzMtXFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXJ4W2luZGV4XS5yaW5nX2NwdV9wdHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzU1MD1zdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1ODMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzU4NDpcXHRcXHRhZGFwdGVyLVxcdTAwM2VtYXhfdHhfY2hhbm5lbHMgPSBMQU43NDNYX01BWF9UWF9DSEFOTkVMUztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzU4NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V1c2VkX3R4X2NoYW5uZWxzID0gTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNTg2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1heF92ZWN0b3JfY291bnQgPSBMQU43NDNYX01BWF9WRUNUT1JfQ09VTlQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM1ODctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2MTA6XFx0Zm9yIChpbmRleCA9IDA7IGluZGV4IFxcdTAwM2MgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTOyBpbmRleCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2MTEtXFx0XFx0YWRhcHRlci1cXHUwMDNlcnhbaW5kZXhdLmFkYXB0ZXIgPSBhZGFwdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2OTE9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzAyLVxcdFxcdFxcdFxcdFxcdFxcdCBQQ0kxMVgxWF9VU0VEX1RYX0NIQU5ORUxTLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzAzOlxcdFxcdFxcdFxcdFxcdFxcdCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzA0LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcwNi1cXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzA3OlxcdFxcdFxcdFxcdFxcdFxcdCBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MDg6XFx0XFx0XFx0XFx0XFx0XFx0IExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjAtXFx0XFx0XFx0ICAgICAgTkVUSUZfTVNHX0lGRE9XTiB8IE5FVElGX01TR19UWF9RVUVVRUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjE6XFx0bmV0ZGV2LVxcdTAwM2VtYXhfbXR1ID0gTEFONzQzWF9NQVhfRlJBTUVfU0laRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo0OiNpZm5kZWYgX0xBTjc0M1hfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo1OiNkZWZpbmUgX0xBTjc0M1hfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC02LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTE5LSNkZWZpbmUgSURfUkVWX0lEX0xBTjc0MzFfXFx0XFx0KDB4NzQzMTAwMDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjIwOiNkZWZpbmUgSURfUkVWX0lEX0xBTjc0M1hfXFx0XFx0KDB4NzQzMDAwMDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTIxLSNkZWZpbmUgSURfUkVWX0lEX0EwMTFfXFx0XFx0XFx0KDB4QTAxMTAwMDApXFx0Ly8gUENJMTEwMTBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC0yNC0jZGVmaW5lIElEX1JFVl9JU19WQUxJRF9DSElQX0lEXyhpZF9yZXYpXFx0ICAgIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6MjU6XFx0KCgoKGlkX3JldikgXFx1MDAyNiAweEZGRjAwMDAwKSA9PSBJRF9SRVZfSURfTEFONzQzWF8pIHx8IFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtMjYtXFx0ICgoKGlkX3JldikgXFx1MDAyNiAweEZGMEYwMDAwKSA9PSBJRF9SRVZfSURfQTBYMV8pKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODYyOiNkZWZpbmUgTEFONzQzWF9NQVhfUlhfQ0hBTk5FTFNcXHRcXHQoNClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODYzOiNkZWZpbmUgTEFONzQzWF9NQVhfVFhfQ0hBTk5FTFNcXHRcXHQoMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY0LSNkZWZpbmUgUENJMTFYMVhfTUFYX1RYX0NIQU5ORUxTXFx0KDQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oPTg2NT1zdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg2NzojZGVmaW5lIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMU1xcdCg0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4Njg6I2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcXHQoMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODY5LSNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1xcdCg0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzA6I2RlZmluZSBMQU43NDNYX0lOVF9NT0RcXHQoNDAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaC04NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3MjojaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyBcXHUwMDNlIExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaDo4NzM6I2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg3NC0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODc1OiNpZiAoTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTIFxcdTAwM2UgTEFONzQzWF9NQVhfVFhfQ0hBTk5FTFMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oOjg3NjojZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgtODc3LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oLTg5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmg6ODk1OiNkZWZpbmUgTEFONzQzWF9DU1JfRkxBR19JU19BMFxcdFxcdFxcdFxcdEJJVCgwKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo0OC4yOTI5MTQzMDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNzEwMjc3NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnIERpdmUgZm9yIENvbnRleHQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIHRoaXMgZGV2aWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnYC4gVGhhdCBLY29uZmlnIGZpbGUgaXMgdGhlIGxpbmNocGluIGZvciBjb25maWd1cmluZyB0aGUgTWljcm9jaGlwIEV0aGVybmV0IGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEl0IHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNsdWVzOiB0aGUgc3BlY2lmaWMgZGV2aWNlIHR5cGUgc3VwcG9ydGVkLCB0aGUgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgKGZlYXR1cmVzIGxpa2UgRE1BLCBpbnRlcnJ1cHRzLCBsaW5rIHNwZWVkIG5lZ290aWF0aW9uKSwgYW5kLCBjcnVjaWFsbHksIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEtub3dpbmcgdGhlIGRldmljZSdzIGV4YWN0IElELCBvciBhdCBsZWFzdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzeW1ib2xzLCBpcyB0aGUgZmlyc3Qgc3RlcC4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIGFuZCB3aGVyZSB0byBsb29rIG5leHQgZm9yIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQgb3BlcmF0aW9uLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1MS4wMDMxOTM3NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHQgICAgICBTdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEVOQzQyNEo2MDAvNjI0SjYwMCBldGhlcm5ldCBjaGlwLlxcbiAgNDE6XFx0XFxuICA0MjpcXHQgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcXG4gIDQzOlxcdCAgICAgIGNhbGxlZCBlbmN4MjRqNjAwLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgTEFONzQzWFxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkxBTjc0M3ggc3VwcG9ydFxcXCJcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0OTpcXHRcXHRzZWxlY3QgRklYRURfUEhZXFxuICA1MDpcXHRcXHRzZWxlY3QgQ1JDMTZcXG4gIDUxOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNTI6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGFuZCBQQ0kxMXgxeCBmYW1pbGllcyBvZiBQQ0lcXG4gIDU1OlxcdFxcdCAgRXhwcmVzcyBFdGhlcm5ldCBkZXZpY2VzXFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuICA1ODpcXHRcXHQgIGNhbGxlZCBsYW43NDN4LlxcbiAgNTk6XFx0XFxuICA2MDpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW44NjV4L0tjb25maWdcXFwiXFxuICA2MTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZ1xcXCJcXG4gIDYzOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2ZkbWEvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdFxcbiAgNjY6XFx0ZW5kaWYgIyBORVRfVkVORE9SX01JQ1JPQ0hJUFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1MS4wMDMyNTI0MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MDA5MTEwOTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFN1cHBvcnQgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHJlcXVlc3QgdG8gYXNzZXNzIGZ1enppbmcgcG90ZW50aWFsIGZvciB0aGUgTWljcm9jaGlwIExBTjc0M3ggYW5kIFBDSTExeDF4IGZhbWlsaWVzIG9mIFBDSSBFeHByZXNzIEV0aGVybmV0IGRldmljZXMuIFRoZSBrZXkgaXMgd2hldGhlciB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZXZlbiBib3RoZXIgZnV6emluZywgYW5kIHRoZSBpbnN0cnVjdGlvbiBzZXQgaXMgY2xlYXI6IGlmIHRoZSBjb2RlIGZhbGxzIGludG8gYSBzcGVjaWZpYyBuZWdhdGl2ZSBjYXRlZ29yeSwgd2UgYmFpbCBvdXQgZWFybHkuIFRoYXQncyBhIGdvb2QgYXBwcm9hY2ggdG8gY29uc2VydmUgcmVzb3VyY2VzLlxuXG5SaWdodCwgc28gc2VjdGlvbiAyIGdpdmVzIHVzIHRoZSBcIldIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhLiBUaGUgbW9zdCByZWxldmFudCBvbmUgaGVyZSBpcyBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnPigKYgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiBUaGlzIGlzIHRoZSBjcnV4LlxuXG5JIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIExBTjc0M3ggaXMgZW11bGF0ZWQuIExldCBtZSBzZWUuLi4gSSBoYXZlIGEgbGlzdCBvZiBzdGFuZGFyZCBRRU1VIG5ldHdvcmsgZGV2aWNlcyBpbiBmcm9udCBvZiBtZTogZTEwMDAsIGUxMDAwZSwgaWdiLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZpcnRpby1uZXQtcGNpLCByb2NrZXIsIHZteG5ldDMsIHVzYi1uZXQuIE5vcGUsIG5vdCBzZWVpbmcgTEFONzQzeCBhbnl3aGVyZSBpbiB0aGVyZS4gVGhlc2UgZGV2aWNlcyBhcmUgcGh5c2ljYWwgUENJZSBnaWdhYml0IGV0aGVybmV0IGNvbnRyb2xsZXJzIChNaWNyb2NoaXAgTEFONzQzMCwgTEFONzQzMSwgUENJMTEwMTAsIFBDSTExNDE0IGV0YyksIHNvIGl0IHN0YW5kcyB0byByZWFzb24gdGhhdCB0aGV5IGFyZW4ndCBlbXVsYXRlZC4gSSBjYW4gYmUgcHJldHR5IGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCBpdCdzIE5PVCBlbXVsYXRlZCBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2gsIGJ5IGltcGxpY2F0aW9uLCBtYWtlcyBpdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UgY2hlY2sgdGhlIGNvbnRleHQgb2YgdGhlIExBTjc0M3ggZnVuY3Rpb24gaW4gdGhlIGBsYW43NDN4X21haW4uY2AgZmlsZSB0byBmdXJ0aGVyIGNlbWVudCBvdXIgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3MjIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1NS4wMTIzNjU2OTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1ODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1ODU6XFx0XFx0XFx0dTMyIHRzX3NlYztcXG4yNTg2OlxcdFxcdFxcdHUzMiB0c19uc2VjO1xcbjI1ODc6XFx0XFxuMjU4ODpcXHRcXHRcXHR0c19zZWMgPSBsZTMyX3RvX2NwdShkZXNjX2V4dC1cXHUwMDNlZGF0YTEpO1xcbjI1ODk6XFx0XFx0XFx0dHNfbnNlYyA9IChsZTMyX3RvX2NwdShkZXNjX2V4dC1cXHUwMDNlZGF0YTIpIFxcdTAwMjZcXG4yNTkwOlxcdFxcdFxcdFxcdCAgUlhfREVTQ19EQVRBMl9UU19OU19NQVNLXyk7XFxuMjU5MTpcXHRcXHRcXHRpZiAocngtXFx1MDAzZXNrYl9oZWFkKVxcbjI1OTI6XFx0XFx0XFx0XFx0c2tiX2h3dHN0YW1wcyhyeC1cXHUwMDNlc2tiX2hlYWQpLVxcdTAwM2Vod3RzdGFtcCA9XFxuMjU5MzpcXHRcXHRcXHRcXHRcXHRrdGltZV9zZXQodHNfc2VjLCB0c19uc2VjKTtcXG4yNTk0OlxcdFxcdFxcdGxhbjc0M3hfcnhfcmV1c2VfcmluZ19lbGVtZW50KHJ4LCBleHRlbnNpb25faW5kZXgpO1xcbjI1OTU6XFx0XFx0XFx0cngtXFx1MDAzZWxhc3RfaGVhZCA9IGV4dGVuc2lvbl9pbmRleDtcXG4yNTk2OlxcdFxcdFxcdG5ldGRldl9kYmcobmV0ZGV2LCBcXFwicHJvY2VzcyBleHRlbnNpb25cXFwiKTtcXG4yNTk3OlxcdFxcdH1cXG4yNTk4OlxcdFxcbjI1OTk6XFx0XFx0aWYgKGlzX2xhc3QgXFx1MDAyNlxcdTAwMjYgcngtXFx1MDAzZXNrYl9oZWFkKVxcbjI2MDA6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkID0gbGFuNzQzeF9yeF90cmltX3NrYihyeC1cXHUwMDNlc2tiX2hlYWQsIGZyYW1lX2xlbmd0aCk7XFxuMjYwMTpcXHRcXG4yNjAyOlxcdFxcdGlmIChpc19sYXN0IFxcdTAwMjZcXHUwMDI2IHJ4LVxcdTAwM2Vza2JfaGVhZCkge1xcbjI2MDM6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHJ4LVxcdTAwM2Vza2JfaGVhZCxcXG4yNjA0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYpO1xcbjI2MDU6XFx0XFx0XFx0aWYgKHJ4LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pIHtcXG4yNjA2OlxcdFxcdFxcdFxcdGlmICghaXNfaWNlIFxcdTAwMjZcXHUwMDI2ICFpc190Y2UgXFx1MDAyNlxcdTAwMjYgIWlzX2ljc20pXFxuMjYwNzpcXHRcXHRcXHRcXHRcXHRyeC1cXHUwMDNlc2tiX2hlYWQtXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xcbjI2MDg6XFx0XFx0XFx0fVxcbjI2MDk6XFx0XFx0XFx0bmV0ZGV2X2RiZyhuZXRkZXYsIFxcXCJzZW5kaW5nICVkIGJ5dGUgZnJhbWUgdG8gT1NcXFwiLFxcbjI2MTA6XFx0XFx0XFx0XFx0ICAgcngtXFx1MDAzZXNrYl9oZWFkLVxcdTAwM2VsZW4pO1xcbjI2MTE6XFx0XFx0XFx0bmFwaV9ncm9fcmVjZWl2ZShcXHUwMDI2cngtXFx1MDAzZW5hcGksIHJ4LVxcdTAwM2Vza2JfaGVhZCk7XFxuMjYxMjpcXHRcXHRcXHRyeC1cXHUwMDNlc2tiX2hlYWQgPSBOVUxMO1xcbjI2MTM6XFx0XFx0fVxcbjI2MTQ6XFx0XFxuMjYxNTpcXHRtb3ZlX2ZvcndhcmQ6XFxuMjYxNjpcXHRcXHQvKiBwdXNoIHRhaWwgYW5kIGhlYWQgZm9yd2FyZCAqL1xcbjI2MTc6XFx0XFx0cngtXFx1MDAzZWxhc3RfdGFpbCA9IHJ4LVxcdTAwM2VsYXN0X2hlYWQ7XFxuMjYxODpcXHRcXHRyeC1cXHUwMDNlbGFzdF9oZWFkID0gbGFuNzQzeF9yeF9uZXh0X2luZGV4KHJ4LCByeC1cXHUwMDNlbGFzdF9oZWFkKTtcXG4yNjE5OlxcdFxcdHJlc3VsdCA9IFJYX1BST0NFU1NfUkVTVUxUX0JVRkZFUl9SRUNFSVZFRDtcXG4yNjIwOlxcdGRvbmU6XFxuMjYyMTpcXHRcXHRyZXR1cm4gcmVzdWx0O1xcbjI2MjI6XFx0fVxcbjI2MjM6XFx0XFxuMjYyNDpcXHRzdGF0aWMgaW50IGxhbjc0M3hfcnhfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IHdlaWdodClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NTUuMDEyNTIxNzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjg5MzQyMDI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBCdWdmaXgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGxhbjc0M3hgIFBDSWUgTklDIGRyaXZlciwgYW5kIHRoaXMgcGF0Y2ggaW1tZWRpYXRlbHkgY2F1Z2h0IG15IGV5ZS4gVGhlIGZ1bmN0aW9uIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYCBpcyBjYWxsZWQgd2l0aGluIGBsYW43NDN4X3J4X25hcGlfcG9sbGAsIHNvIHdlJ3JlIHNxdWFyZWx5IGluIHRoZSByZWNlaXZlIHByb2Nlc3NpbmcgcGF0aCwgd2hpY2ggaXMgd2hlcmUgSSB3YXMgZXhwZWN0aW5nIHRvIGJlLiBUaGUgaXNzdWUgZmxhZ2dlZCBpcyB0aGF0IGBza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7YCBpcyBiZWluZyBhcHBsaWVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgc3VidGxlIGJ1ZyB0aGF0IGNvdWxkIGxlYWQgdG8gY2hlY2tzdW0gb2ZmbG9hZCBwcm9ibGVtcyBhbmQgcG90ZW50aWFsbHkgY29ycnVwdCBkYXRhIG9yIHVubmVjZXNzYXJ5IENQVSBsb2FkLiBUaGUgbGlrZWx5IHByb2JsZW0gaXMgdGhhdCB0aGUgd3JvbmcgYHNrYmAgaXMgYmVpbmcgbW9kaWZpZWQsIG1heWJlIGl0J3MgYW4gZWFybGllciBidWZmZXIsIG9yIGFuIHVudXNlZCB2YXJpYWJsZSBieSBtaXN0YWtlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB3aGVyZSB0aGUgYHNrYmAgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gYGxhbjc0M3hfcnhfcHJvY2Vzc19idWZmZXJgLiBMZXQgbWUgZ28gZmluZCB0aGF0IGRlZmluaXRpb24gYW5kIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMzIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQwMDoyNDo1Ny45MDU5NDUwMzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDk1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDk1OlxcdFxcbjI0OTY6XFx0XFx0aWYgKHJ4LVxcdTAwM2VsYXN0X2hlYWQgXFx1MDAzYyAwIHx8IHJ4LVxcdTAwM2VsYXN0X2hlYWQgXFx1MDAzZT0gcngtXFx1MDAzZXJpbmdfc2l6ZSlcXG4yNDk3OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNDk4OlxcdFxcbjI0OTk6XFx0XFx0aWYgKHJ4LVxcdTAwM2VsYXN0X2hlYWQgPT0gY3VycmVudF9oZWFkX2luZGV4KVxcbjI1MDA6XFx0XFx0XFx0Z290byBkb25lO1xcbjI1MDE6XFx0XFxuMjUwMjpcXHRcXHRkZXNjcmlwdG9yID0gXFx1MDAyNnJ4LVxcdTAwM2VyaW5nX2NwdV9wdHJbcngtXFx1MDAzZWxhc3RfaGVhZF07XFxuMjUwMzpcXHRcXHRpZiAobGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApIFxcdTAwMjYgUlhfREVTQ19EQVRBMF9PV05fKVxcbjI1MDQ6XFx0XFx0XFx0Z290byBkb25lO1xcbjI1MDU6XFx0XFx0YnVmZmVyX2luZm8gPSBcXHUwMDI2cngtXFx1MDAzZWJ1ZmZlcl9pbmZvW3J4LVxcdTAwM2VsYXN0X2hlYWRdO1xcbjI1MDY6XFx0XFxuMjUwNzpcXHRcXHRpc19sYXN0ID0gbGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApIFxcdTAwMjYgUlhfREVTQ19EQVRBMF9MU187XFxuMjUwODpcXHRcXHRpc19maXJzdCA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGEwKSBcXHUwMDI2IFJYX0RFU0NfREFUQTBfRlNfO1xcbjI1MDk6XFx0XFxuMjUxMDpcXHRcXHRpZiAoaXNfbGFzdCBcXHUwMDI2XFx1MDAyNiBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pIHtcXG4yNTExOlxcdFxcdFxcdC8qIGV4dGVuc2lvbiBpcyBleHBlY3RlZCB0byBmb2xsb3cgKi9cXG4yNTEyOlxcdFxcdFxcdGludCBpbmRleCA9IGxhbjc0M3hfcnhfbmV4dF9pbmRleChyeCwgcngtXFx1MDAzZWxhc3RfaGVhZCk7XFxuMjUxMzpcXHRcXG4yNTE0OlxcdFxcdFxcdGlmIChpbmRleCA9PSBjdXJyZW50X2hlYWRfaW5kZXgpXFxuMjUxNTpcXHRcXHRcXHRcXHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cXG4yNTE2OlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNTE3OlxcdFxcdFxcdGRlc2NfZXh0ID0gXFx1MDAyNnJ4LVxcdTAwM2VyaW5nX2NwdV9wdHJbaW5kZXhdO1xcbjI1MTg6XFx0XFx0XFx0aWYgKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX09XTl8pXFxuMjUxOTpcXHRcXHRcXHRcXHQvKiBleHRlbnNpb24gbm90IHlldCBhdmFpbGFibGUgKi9cXG4yNTIwOlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNTIxOlxcdFxcdFxcdGlmICghKGxlMzJfdG9fY3B1KGRlc2NfZXh0LVxcdTAwM2VkYXRhMCkgXFx1MDAyNiBSWF9ERVNDX0RBVEEwX0VYVF8pKVxcbjI1MjI6XFx0XFx0XFx0XFx0Z290byBtb3ZlX2ZvcndhcmQ7XFxuMjUyMzpcXHRcXHRcXHRleHRlbnNpb25faW5kZXggPSBpbmRleDtcXG4yNTI0OlxcdFxcdH1cXG4yNTI1OlxcdFxcbjI1MjY6XFx0XFx0LyogT25seSB0aGUgbGFzdCBidWZmZXIgaW4gYSBtdWx0aS1idWZmZXIgZnJhbWUgY29udGFpbnMgdGhlIHRvdGFsIGZyYW1lXFxuMjUyNzpcXHRcXHQgKiBsZW5ndGguIFRoZSBjaGlwIG9jY2FzaW9uYWxseSBzZW5kcyBtb3JlIGJ1ZmZlcnMgdGhhbiBzdHJpY3RseVxcbjI1Mjg6XFx0XFx0ICogcmVxdWlyZWQgdG8gcmVhY2ggdGhlIHRvdGFsIGZyYW1lIGxlbmd0aC5cXG4yNTI5OlxcdFxcdCAqIEhhbmRsZSB0aGlzIGJ5IGFkZGluZyBhbGwgYnVmZmVycyB0byB0aGUgc2tiIGluIHRoZWlyIGVudGlyZXR5LlxcbjI1MzA6XFx0XFx0ICogT25jZSB0aGUgcmVhbCBmcmFtZSBsZW5ndGggaXMga25vd24sIHRyaW0gdGhlIHNrYi5cXG4yNTMxOlxcdFxcdCAqL1xcbjI1MzI6XFx0XFx0ZnJhbWVfbGVuZ3RoID1cXG4yNTMzOlxcdFxcdFxcdFJYX0RFU0NfREFUQTBfRlJBTUVfTEVOR1RIX0dFVF8obGUzMl90b19jcHUoZGVzY3JpcHRvci1cXHUwMDNlZGF0YTApKTtcXG4yNTM0OlxcdFxcdGJ1ZmZlcl9sZW5ndGggPSBidWZmZXJfaW5mby1cXHUwMDNlYnVmZmVyX2xlbmd0aDtcXG4yNTM1OlxcdFxcdGlzX2ljZSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGExKSBcXHUwMDI2IFJYX0RFU0NfREFUQTFfU1RBVFVTX0lDRV87XFxuMjUzNjpcXHRcXHRpc190Y2UgPSBsZTMyX3RvX2NwdShkZXNjcmlwdG9yLVxcdTAwM2VkYXRhMSkgXFx1MDAyNiBSWF9ERVNDX0RBVEExX1NUQVRVU19UQ0VfO1xcbjI1Mzc6XFx0XFx0aXNfaWNzbSA9IGxlMzJfdG9fY3B1KGRlc2NyaXB0b3ItXFx1MDAzZWRhdGExKSBcXHUwMDI2IFJYX0RFU0NfREFUQTFfU1RBVFVTX0lDU01fO1xcbjI1Mzg6XFx0XFxuMjUzOTpcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcIiVzJXNjaHVuazogJWQvJWRcXFwiLFxcbjI1NDA6XFx0XFx0XFx0ICAgaXNfZmlyc3QgPyBcXFwiZmlyc3QgXFxcIiA6IFxcXCIgICAgICBcXFwiLFxcbjI1NDE6XFx0XFx0XFx0ICAgaXNfbGFzdCAgPyBcXFwibGFzdCAgXFxcIiA6IFxcXCIgICAgICBcXFwiLFxcbjI1NDI6XFx0XFx0XFx0ICAgZnJhbWVfbGVuZ3RoLCBidWZmZXJfbGVuZ3RoKTtcXG4yNTQzOlxcdFxcbjI1NDQ6XFx0XFx0Lyogc2F2ZSBleGlzdGluZyBza2IsIGFsbG9jYXRlIG5ldyBza2IgYW5kIG1hcCB0byBkbWEgKi9cXG4yNTQ1OlxcdFxcdHNrYiA9IGJ1ZmZlcl9pbmZvLVxcdTAwM2Vza2I7XFxuMjU0NjpcXHRcXHRpZiAobGFuNzQzeF9yeF9pbml0X3JpbmdfZWxlbWVudChyeCwgcngtXFx1MDAzZWxhc3RfaGVhZCwgR0ZQX0FUT01JQykpIHtcXG4yNTQ3OlxcdFxcdFxcdC8qIGZhaWxlZCB0byBhbGxvY2F0ZSBuZXh0IHNrYi5cXG4yNTQ4OlxcdFxcdFxcdCAqIE1lbW9yeSBpcyB2ZXJ5IGxvdy5cXG4yNTQ5OlxcdFxcdFxcdCAqIERyb3AgdGhpcyBwYWNrZXQgYW5kIHJldXNlIGJ1ZmZlci5cXG4yNTUwOlxcdFxcdFxcdCAqL1xcbjI1NTE6XFx0XFx0XFx0bGFuNzQzeF9yeF9yZXVzZV9yaW5nX2VsZW1lbnQocngsIHJ4LVxcdTAwM2VsYXN0X2hlYWQpO1xcbjI1NTI6XFx0XFx0XFx0LyogZHJvcCBwYWNrZXQgdGhhdCB3YXMgYmVpbmcgYXNzZW1ibGVkICovXFxuMjU1MzpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2lycShyeC1cXHUwMDNlc2tiX2hlYWQpO1xcbjI1NTQ6XFx0XFx0XFx0cngtXFx1MDAzZXNrYl9oZWFkID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjQ6NTcuOTA2MTY1NzE5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjU2NzY5MzY0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTEFONzQzeCBEcml2ZXIgQW5hbHlzaXMgLSBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBzbmlwcGV0LCBkZWVwIHdpdGhpbiBgbGFuNzQzeF9tYWluLmNgLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIGV0aGVybmV0IGNvbnRyb2xsZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBcIkNhbiBzeXprYWxsZXIgZXZlbiAqcmVhY2gqIHRoaXM/XCIgSSBtZWFuLCByZWFsaXN0aWNhbGx5LCBpcyB0aGlzIGhhcmR3YXJlIGFjY2Vzc2libGUgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT9cblxuSSBuZWVkIHRvIGFwcGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gU3BlY2lmaWNhbGx5LCB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeS4gTGV0J3Mgc2VlLi4uIHRoZSB0ZXh0IHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCByZXF1aXJpbmcgYSBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZCB0aGF0J3Mgbm90IGVtdWxhdGVkLlxuXG5CaW5nby4gVGhlIExBTjc0M3ggaXMsIHdpdGhvdXQgcXVlc3Rpb24sIHZlbmRvci1zcGVjaWZpYyBQQ0llIGV0aGVybmV0IE5JQy4gTm93LCBRRU1VJ3MgZ290ICpzb21lKiBuZXR3b3JrIGVtdWxhdGlvbiwgYnV0IEknbSBjZXJ0YWluIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcgZm9yIHRoaXMgc3BlY2lmaWMgTWljcm9jaGlwIGNvbnRyb2xsZXIuIEknbSBwcmFjdGljYWxseSBjZXJ0YWluIG9mIGl0IGJ1dCBsZXQncyBqdXN0IG1ha2UgaXQgY2VydGFpbiBhbmQgY29uZmlybTogTm8sIFFFTVUgZG9lc24ndCBoYXZlIExBTjc0M3ggZW11bGF0aW9uLiBUaGVyZWZvcmUsIHN5emthbGxlciAqY2Fubm90KiBmdXp6IGl0LiBTeXprYWxsZXIgcnVucyBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBWTXMgd2l0aG91dCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUuXG5cbkZ1cnRoZXJtb3JlLCBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHByZXR0eSBvYnZpb3VzIHRoYXQgdGhlIGBsYW43NDN4X3J4X3Byb2Nlc3NfYnVmZmVyYCBmdW5jdGlvbiwgdGhlIGJpdCB0aGlzIHBhdGNoIHRvdWNoZXMsIGlzIGdvaW5nIHRvIGdldCB0cmlnZ2VyZWQgKm9ubHkqIHdoZW4gdGhlIGhhcmR3YXJlIGhhcyBnb25lIHRocm91Z2ggaW5pdGlhbGl6YXRpb24sIGludGVycnVwdHMgYXJlIGZpcmluZywgTkFQSSBoYXMga2lja2VkIGluLCBhbmQgcGFja2V0cyBoYXZlIGFycml2ZWQgZnJvbSB0aGUgaGFyZHdhcmUgRE1BIGRlc2NyaXB0b3IgcmluZy4gQWxsIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMuXG5cblNvLCB0aGlzIGNsZWFybHkgZml0cyB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBkZXNjcmlwdGlvbjogYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgdGhhdCBuZWVkcyBpdHMgb3duIEFTSUMvUENJZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0J3MgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIGEgZGVhZCBlbmQgZm9yIHN5emthbGxlci5cblxuTGV0J3MganVzdCBkb3VibGUtY2hlY2ssIGRvdCBhbGwgdGhlIEkncyBhbmQgY3Jvc3MgYWxsIHRoZSBUJ3MuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlcmUncyBub3RoaW5nIHRvIGZvY3VzIG9uLiBgRW5hYmxlQ29uZmlnc2Agd2lsbCBhbHNvIGJlIGVtcHR5LiBBbmQgdGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZSBhIGNvbmNpc2UgcmVjYXA6IFRoaXMgcGF0Y2ggbW9kaWZpZXMgUlggcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgaW4gYGxhbjc0M3hfbWFpbi5jYCwgcGFydCBvZiB0aGUgYENPTkZJR19MQU43NDNYYCBkcml2ZXIgZm9yIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgaGFyZHdhcmUgZGVtYW5kcyBwaHlzaWNhbCBBU0lDL1BDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGJ5IHN5emthbGxlci5cblxuU2FuaXR5IGNoZWNrLCB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYDogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgY29uY2lzZSBgUmVhc29uaW5nYC4gRXZlcnl0aGluZyBsb29rcyBjb3JyZWN0LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3ODYsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMDA6MjU6MDMuNTgzMTA1MDU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUlggYnVmZmVyIHByb2Nlc3NpbmcgaW4gdGhlIGxhbjc0M3ggZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMpLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb2NoaXAgTEFONzQzeC9QQ0kxMXgxeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgZGV2aWNlcyAoQ09ORklHX0xBTjc0M1gpLCB3aGljaCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSWCBidWZmZXIgcHJvY2Vzc2luZyBpbiB0aGUgbGFuNzQzeCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYykuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3JvY2hpcCBMQU43NDN4L1BDSTExeDF4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBkZXZpY2VzIChDT05GSUdfTEFONzQzWCksIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDAwOjI1OjAzLjU4MzEzMDM5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrzdz4[1] Phase: Running StartedAt: 2026-09-14 00:25:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrzdz4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 00:25:14 +0000 UTC FinishedAt: 2026-09-14 00:25:18 +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,}