Name: series-workflowk9p4n Phase: Failed StartedAt: 2026-09-05 23:38:51 +0000 UTC FinishedAt: 2026-09-06 00:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9p4n[0] Phase: Succeeded StartedAt: 2026-09-05 23:38:51 +0000 UTC FinishedAt: 2026-09-06 00:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9p4n[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 23:38:51 +0000 UTC FinishedAt: 2026-09-06 00:54:00 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOWRlMzkzYzZhNWVjNDY1OTVlZjhhNjhjZGJmZGMxNTQzNTdmNjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwMDo1MzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xuaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbkBAIC0yNzk1LDYgJiM0MzsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXG5cJiMzNDspO1xuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4mIzQzO1x0aWYgKGR1bXBfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkge1xuJiM0MztcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwmIzM0OywgZHVtcF9udW0pO1xuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdH1cbiBcbiBcdC8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZHVtcF9udW07IGlkeCYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfc2Rpb19md19kdW1wKCkgd2l0aGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMuIFRoaXMgZHJpdmVyIGlzIGZvciBNYXJ2ZWxsIFNESU8gd2lyZWxlc3MgY2hpcHMsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM5ZGUzOTNjNmE1ZWM0NjU5NWVmOGE2OGNkYmZkYzE1NDM1N2Y2OTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMKaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCkBAIC0yNzk1LDYgJiM0MzsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpCiAJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCAmIzM0O1NESU8gcmVhZCBtZW1vcnkgbGVuZ3RoIGVyclxuJiMzNDspOwogCQlnb3RvIGRvbmU7CiAJfQomIzQzOwlpZiAoZHVtcF9udW0gJmd0OyBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkgewomIzQzOwkJbXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsCiYjNDM7CQkJICAgICYjMzQ7SW52YWxpZCBmdyBkdW1wIG51bTogJWRcbiYjMzQ7LCBkdW1wX251bSk7CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KIAogCS8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovCiAJZm9yIChpZHggPSAwOyBpZHggJmx0OyBkdW1wX251bTsgaWR4JiM0MzsmIzQzOykgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5CgkJCQkJCQlvdXRwdXQ6IDg1CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHdoZXRoZXIgaXQgcHJlc2VudHMgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gaGF2ZSBqdWljeSBiaXRzIGZvciBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDI3OTUgaW4gdGhhdCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgYSBxdWljayBgZ3JlcHBlcmAgY29tbWFuZCB0byBnZXQgdGhhdCBzcGVjaWZpYyBzZWN0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQsIGFuZCB0aGVuIEkgY2FuIGNoZWNrIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgdG8gc2VlIGlmIHRoZSByZWxldmFudCBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gZW5hYmxlZCBieSBkZWZhdWx0IG9yIGVhc2lseSBjb25maWd1cmVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFiaWxpdHkgaXMga2V5OyBpZiBpdCYjMzk7cyB0b28gb2JzY3VyZSwgaXQgbWlnaHQgbm90IGJlIHdvcnRoIHRoZSBlZmZvcnQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCB0byB0cnkgYW5kIGZ1enouCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzg1Olx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csIFwmIzM0Oz09IG13aWZpZXggZmlybXdhcmUgZHVtcCBzdGFydCA9PVxcblwmIzM0Oyk7XG4yNzg2Olx0XG4yNzg3Olx0XHRzdGF0ID0gbXdpZmlleF9zZGlvX3Jkd3JfZmlybXdhcmUoYWRhcHRlciwgZG9uZWZsYWcpO1xuMjc4ODpcdFx0aWYgKHN0YXQgPT0gUkRXUl9TVEFUVVNfRkFJTFVSRSlcbjI3ODk6XHRcdFx0Z290byBkb25lO1xuMjc5MDpcdFxuMjc5MTpcdFx0cmVnID0gY2FyZC1cdTAwM2VyZWctXHUwMDNlZndfZHVtcF9zdGFydDtcbjI3OTI6XHRcdC8qIFJlYWQgdGhlIG51bWJlciBvZiB0aGUgbWVtb3JpZXMgd2hpY2ggd2lsbCBkdW1wICovXG4yNzkzOlx0XHRkdW1wX251bSA9IHNkaW9fcmVhZGIoY2FyZC1cdTAwM2VmdW5jLCByZWcsIFx1MDAyNnJldCk7XG4yNzk0Olx0XHRpZiAocmV0KSB7XG4yNzk1Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXG5cJiMzNDspO1xuMjc5NjpcdFx0XHRnb3RvIGRvbmU7XG4yNzk3Olx0XHR9XG4yNzk4Olx0XHRpZiAoZHVtcF9udW0gXHUwMDNlIEFSUkFZX1NJWkUobWVtX3R5cGVfbWFwcGluZ190YmwpKSB7XG4yNzk5Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuMjgwMDpcdFx0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwmIzM0OywgZHVtcF9udW0pO1xuMjgwMTpcdFx0XHRnb3RvIGRvbmU7XG4yODAyOlx0XHR9XG4yODAzOlx0XG4yODA0Olx0XHQvKiBSZWFkIHRoZSBsZW5ndGggb2YgZXZlcnkgbWVtb3J5IHdoaWNoIHdpbGwgZHVtcCAqL1xuMjgwNTpcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGR1bXBfbnVtOyBpZHgmIzQzOyYjNDM7KSB7XG4yODA2Olx0XHRcdHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nICplbnRyeSA9IFx1MDAyNm1lbV90eXBlX21hcHBpbmdfdGJsW2lkeF07XG4yODA3Olx0XG4yODA4Olx0XHRcdHN0YXQgPSBtd2lmaWV4X3NkaW9fcmR3cl9maXJtd2FyZShhZGFwdGVyLCBkb25lZmxhZyk7XG4yODA5Olx0XHRcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXG4yODEwOlx0XHRcdFx0Z290byBkb25lO1xuMjgxMTpcdFxuMjgxMjpcdFx0XHRtZW1vcnlfc2l6ZSA9IDA7XG4yODEzOlx0XHRcdHJlZyA9IGNhcmQtXHUwMDNlcmVnLVx1MDAzZWZ3X2R1bXBfc3RhcnQ7XG4yODE0Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDQ7IGkmIzQzOyYjNDM7KSB7XG4yODE1Olx0XHRcdFx0cmVhZF9yZWcgPSBzZGlvX3JlYWRiKGNhcmQtXHUwMDNlZnVuYywgcmVnLCBcdTAwMjZyZXQpO1xuMjgxNjpcdFx0XHRcdGlmIChyZXQpIHtcbjI4MTc6XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgZXJyXFxuXCYjMzQ7KTtcbjI4MTg6XHRcdFx0XHRcdGdvdG8gZG9uZTtcbjI4MTk6XHRcdFx0XHR9XG4yODIwOlx0XHRcdFx0bWVtb3J5X3NpemUgfD0gKHJlYWRfcmVnIFx1MDAzY1x1MDAzYyBpKjgpO1xuMjgyMTpcdFx0XHRcdHJlZyYjNDM7JiM0Mzs7XG4yODIyOlx0XHRcdH1cbjI4MjM6XHRcbjI4MjQ6XHRcdFx0aWYgKG1lbW9yeV9zaXplID09IDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9TRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNESU8gRGV2aWNlIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG13aWZpZXhfc2Rpb2AgZHJpdmVyIGFjdHVhbGx5IGdldHMgcHJvYmVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGV2ZW4gKnJlYWNoKiBTRElPIGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhlIFNESU8gYnVzIGFjdHVhbGx5IGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUsIG9yIGFyZSB3ZSByZWxpYW50IG9uIGEgVVNCL3ZpcnRpby1zdHlsZSB3b3JrYXJvdW5kPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlPwoKTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHRoZSBleGlzdGluZyBTRElPIGRyaXZlcnMgaW4gTGludXguIFRoZW4gSSB3aWxsIGRldGVybWluZSBpZiBTeXprYWxsZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIGZ1enogU0RJTyBkZXZpY2VzLgoKSG9sZCBvbiwgZG9lcyBTeXprYWxsZXIsIG9yIGZvciB0aGF0IG1hdHRlciBzdGFuZGFyZCBRRU1VLCBldmVuIGhhdmUgc3VwcG9ydCBmb3IgU0RJTyBXaUZpIGRldmljZXMsIHBhcnRpY3VsYXJseSBgbXdpZmlleF9zZGlvYD8KCkkgYWxzbyBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZ1bmRhbWVudGFsIG5hdHVyZSBvZiB0aGUgU0RJTyBidXMgaXRzZWxmLiBJcyB0aGVyZSBzb21lIGtpbmQgb2YgdmlydHVhbCBTRElPIGJ1cyBhYnN0cmFjdGlvbiwgb3IgYW0gSSBkZWFsaW5nIHdpdGggZGlyZWN0IHBoeXNpY2FsIGhhcmR3YXJlPwoKRmluYWxseSwgbGV0JiMzOTtzIGhpdCB0aGUgU3l6a2FsbGVyIGFuZCBrZXJuZWwgc291cmNlcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXZpZGVuY2Ugb2YgU0RJTyBlbXVsYXRpb24sIHRoYXQgaXMsIGlmIGl0JiMzOTtzIHRoZXJlLCB0aGVuIHdoZXJlIGlzIGl0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jOjE3NDc6XHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDgtXHRcdEJUX0VSUihcJiMzNDtTRElPIERyaXZlciBSZWdpc3RyYXRpb24gRmFpbGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM9Mjc0PXN0YXRpYyB2b2lkIHNkaW9fbGVnYWN5X3NodXRkb3duKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODM6ICpcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlx0QGRydjogU0RJTyBmdW5jdGlvbiBkcml2ZXJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4NzppbnQgX19zZGlvX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgc2Rpb19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmMtMTE0MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnNkaW9fdWFydF9kcml2ZXIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYzoxOTc6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnJjbWZfc2RtbWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYz0xMzkwPXN0YXRpYyBpbnQgX19pbml0IGlmX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM6MTM5NzpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jLTEzOTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NDkzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MDItXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6NTAzOlx0XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ3Znhfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTA0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LXtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydGw4NzIzYnNfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDE2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYG13aWZpZXhfc2Rpb19md19kdW1wYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgdHJpZ2dlcmluZyBgbXdpZmlleF9zZGlvX2Z3X2R1bXBgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGggdGhhdCBsZWFkcyB0byB0aGlzIGZ1bmN0aW9uLiBJcyBpdCBhIHJlZ3VsYXIgcGFydCBvZiBpbml0aWFsaXphdGlvbj8gRG9lcyBpdCBvY2N1ciBkdXJpbmcgYW4gZXJyb3IgY29uZGl0aW9uPyBPciBpcyBpdCBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBmaXJtd2FyZSB2ZXJzaW9uPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlJiMzOTtzIHVzdWFsbHkgYSByZWFzb24gZm9yIHRoZXNlIGZpcm13YXJlIGR1bXAgZnVuY3Rpb25zLCBzbyBmaW5kaW5nIHRoZSBjYXVzZSBpcyBjcml0aWNhbCB0byBkZWJ1Z2dpbmcuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbHMsIGV4YW1pbmUgdGhlIGFyZ3VtZW50cyBwYXNzZWQsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLiBJdCYjMzk7cyBhIGJyZWFkY3J1bWIgaHVudDsgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGxpdmUgaW4gdGhlIGdyZWF0ZXIgcGljdHVyZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3NkaW9fZndfZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI3MTQ9cmR3cl9zdGF0dXMgbXdpZmlleF9zZGlvX3Jkd3JfZmlybXdhcmUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3NTktLyogVGhpcyBmdW5jdGlvbiBkdW1wIGZpcm13YXJlIG1lbW9yeSB0byBmaWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI3NjA6c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjc2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0zMDAyPXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE2LVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDE3Olx0XHRtd2lmaWV4X3NkaW9fZndfZHVtcChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAxOC1cdG13aWZpZXhfcHJlcGFyZV9md19kdW1wX2luZm8oYWRhcHRlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1ODgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoIG9mIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AgZnVuY3Rpb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBleGVjdXRpb24gZmxvdy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBvciByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCB0cmlnZ2VyZWQgZGlyZWN0bHkgYnkgYW5vdGhlciBmdW5jdGlvbiwgc2NoZWR1bGVkIHRocm91Z2ggYSB3b3JrIHF1ZXVlLCBob29rZWQgdG8gYW4gaW50ZXJydXB0LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuCgpNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBtZXRob2RzOiBHcmVwcGluZyB0aGUgY29kZWJhc2UgaXMgdGhlIG9idmlvdXMgZmlyc3Qgc3RlcC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byBgbXdpZmlleF9zZGlvX2RldmljZV9kdW1wX3dvcmtgIGRpcmVjdGx5LCBidXQgYWxzbyBjaGVjayBmb3IgdXNlcyBvZiByZWxhdGVkIGZ1bmN0aW9ucyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSByZXNwb25zaWJsZSBmb3Igc2NoZWR1bGluZyBvciByZWdpc3RlcmluZyB0aGlzIHBhcnRpY3VsYXIgd29yayBpdGVtLiBJIHNob3VsZCBhbHNvIGJlIG1pbmRmdWwgb2YgaW5kaXJlY3QgY2FsbHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMuIEl0IGlzIGxpa2VseSBhIHdvcmsgcXVldWUsIGJ1dCBJIGNhbiYjMzk7dCBhc3N1bWUgdGhhdC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgYW5hbHl6ZSB0aGUgY2FsbCBzaXRlcyBJIGlkZW50aWZ5IHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQgaW4sIGFuZCB0aGUgb3ZlcmFsbCBzdGF0ZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIGlzIGNydWNpYWwgdG8gYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIHB1cnBvc2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgYXVkaXRpbmcuIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIG15IGZpbmRpbmdzIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50IHRoYXQgbWF5IGJlIGNhdXNpbmcgaXRzIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2R1bXBfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTI2ODA9c3RhdGljIHZvaWQgbXdpZmlleF9wY2llX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MDM6c3RhdGljIHZvaWQgbXdpZmlleF9wY2llX2RldmljZV9kdW1wX3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMjgwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0yODI4PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzQtXHRcdFx0ICAgICAgIFx1MDAyNmNhcmQtXHUwMDNld29ya19mbGFncykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MzU6XHRcdG13aWZpZXhfcGNpZV9kZXZpY2VfZHVtcF93b3JrKGNhcmQtXHUwMDNlYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1XSUZJRVhfSUZBQ0VfV09SS19DQVJEX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9Mjg4OD1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZ2VuZXJpY19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDAyOnN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTMwMDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MzAyMj1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDI4LVx0XHRcdCAgICAgICBcdTAwMjZjYXJkLVx1MDAzZXdvcmtfZmxhZ3MpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDI5Olx0XHRtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhjYXJkLVx1MDAzZWFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDMwLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNV0lGSUVYX0lGQUNFX1dPUktfQ0FSRF9SRVNFVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwNQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8vTWFydmVsbCBXaUZpLUV4IENoYWxsZW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG13aWZpZXgvc2Rpby5jYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgZHJpdmVyIGZvciBNYXJ2ZWxsJiMzOTtzIFdpRmktRXggU0RJTyBjYXJkcy4gTm93LCBsZXQgbWUgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIGhlcmUgd2UgYXJlOiB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmUmIzM0OyBjYXRlZ29yeSBleHBsaWNpdGx5IGV4Y2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlICYjMzQ7UmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29scyYjMzQ7IGFyZSB0aG9zZSBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24gcG9wcyB1cDogaXMgU0RJTyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8gQ2FuIHN5emthbGxlciBhY3R1YWxseSAqZW11bGF0ZSogb3IgZXZlbiAqY3JlYXRlKiB0aGUgU0RJTyBkZXZpY2VzIHRoYXQgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGg/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBmdXp6IFNESU8gY2FyZHMgd2l0aCBzeXprYWxsZXIgaW4gdGhlIHNhbWUgd2F5IHdlIGNhbiB3aXRoIFVTQiBkZXZpY2VzIHVzaW5nIFJhdyBHYWRnZXQgb3IgdGhlIGBkdW1teV9oY2RgLiBEb2VzIExpbnV4IG9yIHN5emthbGxlciBoYXZlIGFuIGV4aXN0aW5nIFNESU8gZW11bGF0b3Igb3IgYW55IGtpbmQgb2YgdmlydHVhbCBTRElPIGhvc3QgY29udHJvbGxlciB0aGF0IGNvdWxkIGJyaWRnZSB0aGlzIGdhcD8gVGltZSB0byBzdGFydCBkaWdnaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyB0aGF0IHdvdWxkIGFsbG93IGZvciB0aGlzIHNvcnQgb2YgdGVzdGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVx0XHRcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cdFx0XHRcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XHRcdFx0XHQgICBzZGlvLm8gc2Rpb19vcHMubyBzZGlvX2J1cy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjEwOlx0XHRcdFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cdFx0XHRcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXHRcdCYjNDM7PSBtbWNfdGVzdC5vXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19TRElPX1VBUlQpXHRcdCYjNDM7PSBzZGlvX3VhcnQub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVx0JiM0Mzs9IGNyeXB0by5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcJiMzNDtob3N0LmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSB8fCBtbWNfY2FyZF9zZF9jb21ibyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cdFx0cmV0dmFsID0gYWRkX3VldmVudF92YXIoZW52LCBcJiMzNDtTRElPX0lEPSUwNFg6JTA0WFwmIzM0Oyxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9idXMuYzoxMTE6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTI2ND1zdGF0aWMgdm9pZCBtbWNfcmVsZWFzZV9jYXJkKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MjY4Olx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDctICogRm9yIGF0IGxlYXN0IHNvbWUgb2YgdGhlc2UgYnVncyB3ZSBuZWVkIGEgd29yay1hcm91bmQuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ2LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0NzojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00OC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMjk6XHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlx0ICogc2RpbyBkZXZpY2VzIHdvbiYjMzk7dCB3b3JrIHByb3Blcmx5LlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMxLVx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cdTAwM2VjbWQtXHUwMDNlb3Bjb2RlLCBtcnEtXHUwMDNlY21kLVx1MDAzZWFyZykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzQtXHQgICAgaG9zdC1cdTAwM2VvcHMtXHUwMDNlY2FyZF9idXN5KSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo2Njc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVx0XHRkYXRhLVx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE0LVx0LypcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XHQgKiBzZGlvX3Jlc2V0IHNlbmRzIENNRDUyIHRvIHJlc2V0IGNhcmQuICBTaW5jZSB3ZSBkbyBub3Qga25vd1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1MlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XHRcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XHRcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNC1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjQxOD1zdGF0aWMgdm9pZCBfX2V4aXQgbW1jX2V4aXQodm9pZClcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcdHNkaW9fdW5yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oLTg5LWludCBtbWNfYXR0YWNoX3NkX3VoczIoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM2Ny1cdFx0aG9zdC1cdTAwM2VjYXBzIHw9IE1NQ19DQVBfSFdfUkVTRVQ7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O2NhcC1zZGlvLWlycVwmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cdFx0aG9zdC1cdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bm8tc2Rpb1wmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTUtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfTk9fU0RJTztcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZob3N0LVx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XHRJTklUX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU2MC1cdHRpbWVyX3NldHVwKFx1MDAyNmhvc3QtXHUwMDNlcmV0dW5lX3RpbWVyLCBtbWNfcmV0dW5lX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XHRpZiAoY2FwcyBcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcdTAwMjZcdTAwMjYgIWhvc3QtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE2Olx0XHRkZXZfd2FybihkZXYsIFwmIzM0O21pc3NpbmcgLVx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcblwmIzM0Oyk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xOTAtXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE2LVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXHRTRElPX0ZJWFVQX0NPTVBBVElCTEUoXCYjMzQ7dGksd2wxMjUxXCYjMzQ7LCB3bDEyNTFfcXVpcmssIDApLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcJiMzNDsldS4ldVxcblwmIzM0OywgY2FyZC1cdTAwM2VtYWpvcl9yZXYsIGNhcmQtXHUwMDNlbWlub3JfcmV2KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzUwOiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzUxLXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzYyLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY1OnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00LSAqXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL21tYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpby5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcJiMzNDtzZC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcJiMzNDttbWNfb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcJiMzNDtzZGlvX2Npcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz0zNT1NTUNfREVWX0FUVFIocmNhLCBcJiMzNDsweCUwNHhcXG5cJiMzNDssIGNhcmQtXHUwMDNlcmNhKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz00OD1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cdFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY2LX07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSBzZGlvX3R5cGUgPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MS19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDM6c3RhdGljIGludCBzZGlvX2luaXRfZnVuYyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBmbilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXHRpbnQgcmV0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2Olx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNy1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE6XHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVx0aWYgKElTX0VSUihmdW5jKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXHRpZiAoIShjYXJkLVx1MDAzZXF1aXJrcyBcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4Olx0XHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcdFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcdGNhcmQtXHUwMDNlc2Rpb19mdW5jW2ZuIC0gMV0gPSBmdW5jO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzOS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlx0c2Rpb19yZW1vdmVfZnVuYyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQ1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjQ6XHRjYXJkLVx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcdTAwMjYgMHhmMCkgXHUwMDNlXHUwMDNlIDQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjYxOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5My0gKiBvZiB0aGUgY2FyZC4gVGhpcyBtYXkgYmUgcmVxdWlyZWQgb24gY2VydGFpbiBzZXR1cHMgb2YgYm9hcmRzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCYjMzk7c1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTc6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfY2Qoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM1MjpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjUtb3V0OlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2Olx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY3LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzA6c3RhdGljIGludCBzZGlvX2VuYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzUtXHRpZiAoZXJyIFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3Ni1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NzpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODItXHRcdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM4MzpcdFx0XHRzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM5Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyOC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMxOlx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlx0aWYgKHJldCBcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzYtXHRpZiAocmV0IFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzNzpcdFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NDI6c3RhdGljIHVuc2lnbmVkIG1tY19zZGlvX2dldF9tYXhfY2xvY2soc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NjUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXHRcdGNhcmRfc3RyZW5ndGggXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXHUwMDNjXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcdFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUyMC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTkzOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF91aHNfY2FyZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMC1cdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwNjpcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA4LVx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XHRlcnIgPSBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI2LVx0XHRcdCAgICAgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cdCAqIFJlc2V0IHRoZSBjYXJkIGJ5IHBlcmZvcm1pbmcgdGhlIHNhbWUgc3RlcHMgdGhhdCBhcmUgdGFrZW4gYnlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXCYjMzQ7bm9ybWFsXCYjMzQ7IHByb2JlLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVx0ICpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM2LVx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0OS1cdG1tY19nb19pZGxlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY1OS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXHRcdFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzAwOlx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFx1MDAyNnNkaW9fdHlwZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MDEtXHRpZiAoSVNfRVJSKGNhcmQpKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcdFx0aWYgKG9sZGNhcmQgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTctXHRcdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXHRcdGhvc3QtXHUwMDNlb3BzLVx1MDAzZWluaXRfY2FyZChob3N0LCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVx0ICogZmFpbHMgdG8gY2hlY2sgcm9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5Olx0ICogdHJ5IHRvIGluaXQgdWhzIGNhcmQuIHNkaW9fcmVhZF9jY2NyIHdpbGwgdGFrZSBvdmVyIHRoaXMgdGFza1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVx0XHRpZiAoZXJyID09IC1FQUdBSU4pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcdFx0XHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXHRcdFx0cmV0cmllcy0tO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE1Olx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVx0XHRpZiAob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgyOC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5Olx0ZXJyID0gc2Rpb19yZWFkX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19maXh1cF9tZXRob2RzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjEtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcdGVyciA9IHNkaW9fZGlzYWJsZV9jZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVx0aWYgKChvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSBcdTAwMjZcdTAwMjYgY2FyZC1cdTAwM2Vzd19jYXBzLnNkM19idXNfbW9kZSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5Olx0XHRlcnIgPSBtbWNfc2Rpb19pbml0X3Voc19jYXJkKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XHRcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XHRcdG1tY19zZXRfY2xvY2soaG9zdCwgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhjYXJkKSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg5LVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg5MDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04OTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MTg6XHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBOVUxMKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlx0cmV0dXJuIG1tY19zZGlvX2luaXRfY2FyZChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlx0Zm9yIChpID0gMDtpIFx1MDAzYyBob3N0LVx1MDAzZWNhcmQtXHUwMDNlc2Rpb19mdW5jcztpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlx0XHRpZiAoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0Olx0XHRcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XHRcdFx0aG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSA9IE5VTEw7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXHRcdH1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NDY6c3RhdGljIGludCBtbWNfc2Rpb19hbGl2ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1Ny0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5OTQ6XHRcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAwODpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlx0XHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jID0gaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTQ6XHRcdGlmIChmdW5jIFx1MDAyNlx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcdTAwMjZcdTAwMjYgZnVuYy1cdTAwM2VkZXYuZHJpdmVyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVx0XHRcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXHUwMDNlZGV2LmRyaXZlci1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDMyLVx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDcte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcdFdBUk5fT04oaG9zdC1cdTAwM2VzZGlvX2lycXMgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cdG1tY19jYXJkX3NldF9zdXNwZW5kZWQoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU2Olx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXHUwMDI2XHUwMDI2IG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3Olx0XHRzZGlvX2Rpc2FibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cdFx0fVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcdFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3Olx0fSBlbHNlIGlmIChtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXHRcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwNS1cdFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0Olx0aWYgKGhvc3QtXHUwMDNlc2Rpb19pcnFzKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVx0XHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9TRElPX0lSUV9OT1RIUkVBRCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2Olx0XHRcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVx1MDAzZXNkaW9faXJxX3RocmVhZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE3LVx0XHRlbHNlIGlmIChob3N0LVx1MDAzZWNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4Olx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMjg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VvY3IpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcdHJldCA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2Olx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFx1MDAzZSAxKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY3LVx0XHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVx1MDAzZWZfaW5pdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODctXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMYW5kc2NhcGUgb2YgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEVtdWxhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGBtd2lmaWV4L3NkaW8uY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIGl0IHN1cHBvcnRzLiBTaW5jZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgTU1DIFNESU8gc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBDYW4gSSBpbnN0YW50aWF0ZSB0aGVzZSBTRElPIGRldmljZXMgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8KClRoZSBjb3JlIHF1ZXN0aW9uIHF1aWNrbHkgYm9pbHMgZG93biB0byBRRU1VJiMzOTtzIGNhcGFiaWxpdGllcy4gTXkgY3VycmVudCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgd2hpbGUgUUVNVSBkb2VzIGEgZ29vZCBqb2Igd2l0aCBTRCBjYXJkIGVtdWxhdGlvbiBmb3Igc3RvcmFnZSB1c2luZyBTREhDSS9NTUMsIGl0IGRvZXNuJiMzOTt0IGV4dGVuZCB0aGlzIHRvIFNESU8gV2lGaSBjYXJkcywgYW5kIGNlcnRhaW5seSBub3QgdGhlIHNwZWNpZmljIE1hcnZlbGwgbW9kZWxzIChTRDg3ODYsIDg3ODcsIDg3OTcsIGFuZCB0aGUgcmVzdCkuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBpZiB0aGUgTGludXgga2VybmVsIG9mZmVycyBhbnkgKnNvZnR3YXJlKiBlbXVsYXRpb24gZm9yIGVpdGhlciBTRElPIFdpRmkgaW4gZ2VuZXJhbCwgb3IgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3BlY2lmaWNhbGx5LiBJIGtub3cgYG13aWZpZXhgIGhhcyBzdXBwb3J0IGZvciBQQ0llLCBTRElPLCBhbmQgVVNCLiBTbywgbGV04oCZcyBnbyBkZWVwZXIuCgpMb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYCwgSSBzZWU6CgoqICAgYHBjaWUuY2A6IFRoaXMgcmVxdWlyZXMgYWN0dWFsIFBDSWUgaGFyZHdhcmUsIHNvIHRoYXQmIzM5O3Mgb3V0LgoqICAgYHNkaW8uY2A6IE9idmlvdXNseSwgaXQgd2FudHMgU0RJTyBoYXJkd2FyZS4KKiAgIGB1c2IuY2A6IFRoaXMgaXMgaW50ZXJlc3RpbmcuIFVTQiAqY291bGQqIGJlIGVtdWxhdGVkIGluIHRoZW9yeSwgcHJvdmlkZWQgdGhlIFVTQiBkZXNjcmlwdG9yIGlzIGNvcnJlY3QuIEJ1dCwgdGhlIGZhY3QgdGhhdCBgdXNiLmNgIGFuZCBgc2Rpby5jYCBhcmUgc2VwYXJhdGUgaXMgbm90ZXdvcnRoeSwgZXZlbiB0aG91Z2ggSSYjMzk7ZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3aXRoaW4gdGhlIFVTQiBzeXN0ZW0uCgpOb3csIHRoYXQgSSB0aGluayBhYm91dCBpdCwgd2hhdCBhYm91dCBgbXdpZmlleF9zZGlvX2Z3X2R1bXBgPyBJdOKAmXMgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNgLiBUaGlzIGlzIGFub3RoZXIgY2x1ZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHNkaW8uY2AgaXMgZXhjbHVzaXZlbHkgdGllZCB0byBTRElPIGhhcmR3YXJlLCBvciBpZiBjZXJ0YWluIGFzcGVjdHMgbWlnaHQgYmUgYXBwbGljYWJsZSBpbiBhIG1vcmUgZ2VuZXJhbGl6ZWQgdGVzdGluZyBvciBlbXVsYXRlZCBzY2VuYXJpby4gVGhlIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBuZXh0IHBsYWNlIHRvIGxvb2sgZm9yIHRoYXQgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1XSUZJRVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbXdpZmlleC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVdJRklFWF9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAxOTpcdFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXG4gIDIwOlx0XHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG13aWZpZXhfc2Rpby5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTVdJRklFWF9QQ0lFXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFBDSVxuICAyODpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyOTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ0NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nJiMzOTtzIG9mZiB3aXRoIHRoZSBgbXdpZmlleF9zZGlvYCBpbml0aWFsaXphdGlvbiBvciBwcm9iZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jYCBmaWxlIOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciAqc2hvdWxkKiBoYXBwZW4sIGZvciB0aGUgU0RJTyBpbnRlcmZhY2UuIEkmIzM5O2xsIGZvY3VzIHBhcnRpY3VsYXJseSBvbiB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIHRoZSBkZXZpY2UgSUQgdGFibGUuIFRoYXQgdGFibGUgc2hvdWxkIGdpdmUgbWUgdGhlIGtleSBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiB0byB2ZXJpZnkgdGhlIGNvcnJlY3QgZGV2aWNlIGlzIGJlaW5nIGxvYWRlZCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdpbGwgcmV2ZWFsIHRoZSBzdGVwcyBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZGV2aWNlIElEcyBtYXRjaCB0aGUgZGV2aWNlcyBvbiBoYW5kIGFuZCB0aGF0IHRoZSBpbml0IHByb2Nlc3MgaXMgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCBjbHVlcyB0aGlzIGNvZGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9NTUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6NTUxOm13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy01NTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9OTQ0PXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy05NTUtLyogV0xBTiBJRHMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6OTU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgbXdpZmlleF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtOTU3LVx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01BUlZFTEwsIFNESU9fREVWSUNFX0lEX01BUlZFTExfODc4Nl9XTEFOKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMjQKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogNjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IGBtd2lmaWV4X3NkaW9fZndfZHVtcCgpYCBpcyBVbmZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYG13aWZpZXhfc2Rpb19wcm9iZWAgb24gbXkgcmFkYXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBNYXJ2ZWxsIFNESU8gV2lGaSBjYXJkcywgcmlnaHQ/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgY29kZSB3aXRoIHN5emthbGxlciBvciB3aXRoaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW1tZWRpYXRlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSwgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBldGMuLCB0aGV5IGRvbiYjMzk7dCBoYXZlIHBoeXNpY2FsIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIG9yIHByb3BlciBlbXVsYXRpb24uIFRoZXkmIzM5O3JlIGp1c3Qgbm90IHNldCB1cCBmb3IgdGhhdCBsZXZlbCBvZiBoYXJkd2FyZSBpbnRlcmFjdGlvbi4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGNhcmVmdWxseSBhcHBseSB0aGUgY3JpdGVyaWEgZm9yIGZ1enphYmlsaXR5LiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogKndoZW4gdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSogKG5lZ2F0aXZlIGNyaXRlcmlhKS4gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBpcyB0aGUgY3JpdGljYWwgcGhyYXNlLiBUaGV5IGdpdmUgdGhlIGV4YW1wbGVzLCBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgc3R1ZmYgdGhhdCBuZWVkcyBhY3R1YWwgc2lsaWNvbi4gQW5kIHRoaXMgYG13aWZpZXgvc2Rpby5jYCBpcyBkZWZpbml0ZWx5IGluIHRoYXQgY2F0ZWdvcnkuIEl0JiMzOTtzIHRoZSBTRElPIGludGVyZmFjZSBkcml2ZXIgZm9yIHRob3NlIE1hcnZlbGwgV2lGaSBjaGlwcyAoU0Q4Nzg2LCBTRDg3ODcsIGV0Yy4pLiBJdCAqbmVlZHMqIGEgcGh5c2ljYWwgU0RJTy9NTUMgaG9zdCBjb250cm9sbGVyIGFuZCBhIHBoeXNpY2FsIE1hcnZlbGwgV2lGaSBjaGlwIHRvIGZ1bmN0aW9uLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIHJlYWNoYWJsZSBjb2RlIHZpYSB2aXJ0dWFsIGJ1c2VzIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0LCBldGMuIFRoaXMgZG9lc24mIzM5O3QgYXBwbHkgaGVyZS4gU0RJTyBpcyBub3QgYSB2aXJ0dWFsIGJ1cy4gSXQmIzM5O3MgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UuIFNvLCBiZWNhdXNlIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgYG13aWZpZXhfc2Rpb19md19kdW1wKClgLCByZXF1aXJlcyBhY3R1YWwgU0RJTyBoYXJkd2FyZSwgYW5kIHRoYXQgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEl0JiMzOTtzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSByZWFzb25pbmcgYW5kIHRoZSBwYXJhbWV0ZXJzOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGFuZCwgZm9yIHRoZSBFbmFibGVDb25maWdzIGFuZCBGb2N1c1N5bWJvbHMsIHRoZXNlIHdpbGwgYmUgbnVsbCBvciBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlIGRyaXZlciBpc24mIzM5O3QgYWNjZXNzaWJsZSBpbiB0aGlzIGNvbnRleHQuIEV2ZXJ5dGhpbmcgc2VlbXMgdG8gYmUgaW4gb3JkZXIuIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfc2Rpb19md19kdW1wKCkgd2l0aGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMuIFRoaXMgZHJpdmVyIGlzIGZvciBNYXJ2ZWxsIFNESU8gd2lyZWxlc3MgY2hpcHMsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjE4LjE5MDk1NjA1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzEwNDUzMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjE4LjE5MDk2MjczMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwNTEzNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzlkZTM5M2M2YTVlYzQ2NTk1ZWY4YTY4Y2RiZmRjMTU0MzU3ZjY5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXFxuaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xcbkBAIC0yNzk1LDYgKzI3OTUsMTEgQEAgc3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4rXFx0aWYgKGR1bXBfbnVtIFxcdTAwM2UgQVJSQVlfU0laRShtZW1fdHlwZV9tYXBwaW5nX3RibCkpIHtcXG4rXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBmdyBkdW1wIG51bTogJWRcXFxcblxcXCIsIGR1bXBfbnVtKTtcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZWFkIHRoZSBsZW5ndGggb2YgZXZlcnkgbWVtb3J5IHdoaWNoIHdpbGwgZHVtcCAqL1xcbiBcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGR1bXBfbnVtOyBpZHgrKykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoxOC43NDQ0MjgxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzAxNTY5Njg5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5ZGUzOTNjNmE1ZWM0NjU5NWVmOGE2OGNkYmZkYzE1NDM1N2Y2OTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbmluZGV4IGYwMzlkNmYxOTE4M2EuLmU0MGNhNDA0MThiMzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5AQCAtMjc5NSw2ICsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIlNESU8gcmVhZCBtZW1vcnkgbGVuZ3RoIGVyclxcblwiKTtcbiBcdFx0Z290byBkb25lO1xuIFx0fVxuK1x0aWYgKGR1bXBfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkge1xuK1x0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbitcdFx0XHQgICAgXCJJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwiLCBkdW1wX251bSk7XG4rXHRcdGdvdG8gZG9uZTtcbitcdH1cbiBcbiBcdC8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZHVtcF9udW07IGlkeCsrKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoxOC43NDQ0MzEwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3ODU4Nzg5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCB3aGV0aGVyIGl0IHByZXNlbnRzIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4gSSBzZWUgaXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gaGF2ZSBqdWljeSBiaXRzIGZvciBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDI3OTUgaW4gdGhhdCBmaWxlLiBJJ2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBhIHF1aWNrIGBncmVwcGVyYCBjb21tYW5kIHRvIGdldCB0aGF0IHNwZWNpZmljIHNlY3Rpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhlbiBJIGNhbiBjaGVjayB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIHRvIHNlZSBpZiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eSBpcyBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBlYXNpbHkgY29uZmlndXJlZC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhYmlsaXR5IGlzIGtleTsgaWYgaXQncyB0b28gb2JzY3VyZSwgaXQgbWlnaHQgbm90IGJlIHdvcnRoIHRoZSBlZmZvcnQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCB0byB0cnkgYW5kIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDksIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjI0LjUzMDMxMzI4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMjQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3ODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI3ODU6XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiPT0gbXdpZmlleCBmaXJtd2FyZSBkdW1wIHN0YXJ0ID09XFxcXG5cXFwiKTtcXG4yNzg2OlxcdFxcbjI3ODc6XFx0XFx0c3RhdCA9IG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKGFkYXB0ZXIsIGRvbmVmbGFnKTtcXG4yNzg4OlxcdFxcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXFxuMjc4OTpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuMjc5MDpcXHRcXG4yNzkxOlxcdFxcdHJlZyA9IGNhcmQtXFx1MDAzZXJlZy1cXHUwMDNlZndfZHVtcF9zdGFydDtcXG4yNzkyOlxcdFxcdC8qIFJlYWQgdGhlIG51bWJlciBvZiB0aGUgbWVtb3JpZXMgd2hpY2ggd2lsbCBkdW1wICovXFxuMjc5MzpcXHRcXHRkdW1wX251bSA9IHNkaW9fcmVhZGIoY2FyZC1cXHUwMDNlZnVuYywgcmVnLCBcXHUwMDI2cmV0KTtcXG4yNzk0OlxcdFxcdGlmIChyZXQpIHtcXG4yNzk1OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiU0RJTyByZWFkIG1lbW9yeSBsZW5ndGggZXJyXFxcXG5cXFwiKTtcXG4yNzk2OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNzk3OlxcdFxcdH1cXG4yNzk4OlxcdFxcdGlmIChkdW1wX251bSBcXHUwMDNlIEFSUkFZX1NJWkUobWVtX3R5cGVfbWFwcGluZ190YmwpKSB7XFxuMjc5OTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4yODAwOlxcdFxcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBmdyBkdW1wIG51bTogJWRcXFxcblxcXCIsIGR1bXBfbnVtKTtcXG4yODAxOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yODAyOlxcdFxcdH1cXG4yODAzOlxcdFxcbjI4MDQ6XFx0XFx0LyogUmVhZCB0aGUgbGVuZ3RoIG9mIGV2ZXJ5IG1lbW9yeSB3aGljaCB3aWxsIGR1bXAgKi9cXG4yODA1OlxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2MgZHVtcF9udW07IGlkeCsrKSB7XFxuMjgwNjpcXHRcXHRcXHRzdHJ1Y3QgbWVtb3J5X3R5cGVfbWFwcGluZyAqZW50cnkgPSBcXHUwMDI2bWVtX3R5cGVfbWFwcGluZ190YmxbaWR4XTtcXG4yODA3OlxcdFxcbjI4MDg6XFx0XFx0XFx0c3RhdCA9IG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKGFkYXB0ZXIsIGRvbmVmbGFnKTtcXG4yODA5OlxcdFxcdFxcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXFxuMjgxMDpcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuMjgxMTpcXHRcXG4yODEyOlxcdFxcdFxcdG1lbW9yeV9zaXplID0gMDtcXG4yODEzOlxcdFxcdFxcdHJlZyA9IGNhcmQtXFx1MDAzZXJlZy1cXHUwMDNlZndfZHVtcF9zdGFydDtcXG4yODE0OlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA0OyBpKyspIHtcXG4yODE1OlxcdFxcdFxcdFxcdHJlYWRfcmVnID0gc2Rpb19yZWFkYihjYXJkLVxcdTAwM2VmdW5jLCByZWcsIFxcdTAwMjZyZXQpO1xcbjI4MTY6XFx0XFx0XFx0XFx0aWYgKHJldCkge1xcbjI4MTc6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJTRElPIHJlYWQgZXJyXFxcXG5cXFwiKTtcXG4yODE4OlxcdFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yODE5OlxcdFxcdFxcdFxcdH1cXG4yODIwOlxcdFxcdFxcdFxcdG1lbW9yeV9zaXplIHw9IChyZWFkX3JlZyBcXHUwMDNjXFx1MDAzYyBpKjgpO1xcbjI4MjE6XFx0XFx0XFx0XFx0cmVnKys7XFxuMjgyMjpcXHRcXHRcXHR9XFxuMjgyMzpcXHRcXG4yODI0OlxcdFxcdFxcdGlmIChtZW1vcnlfc2l6ZSA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjI0LjUzMDYyNzg2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTYzMjk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9TRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yPWNvbmZpZyBNV0lGSUVYXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoyNC42MDIyNzE4OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzM2MjE4NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRGV2aWNlIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtd2lmaWV4X3NkaW9gIGRyaXZlciBhY3R1YWxseSBnZXRzIHByb2JlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGV2ZW4gKnJlYWNoKiBTRElPIGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhlIFNESU8gYnVzIGFjdHVhbGx5IGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUsIG9yIGFyZSB3ZSByZWxpYW50IG9uIGEgVVNCL3ZpcnRpby1zdHlsZSB3b3JrYXJvdW5kPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlP1xuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGV4aXN0aW5nIFNESU8gZHJpdmVycyBpbiBMaW51eC4gVGhlbiBJIHdpbGwgZGV0ZXJtaW5lIGlmIFN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gZnV6eiBTRElPIGRldmljZXMuXG5cbkhvbGQgb24sIGRvZXMgU3l6a2FsbGVyLCBvciBmb3IgdGhhdCBtYXR0ZXIgc3RhbmRhcmQgUUVNVSwgZXZlbiBoYXZlIHN1cHBvcnQgZm9yIFNESU8gV2lGaSBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgYG13aWZpZXhfc2Rpb2A/XG5cbkkgYWxzbyBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZ1bmRhbWVudGFsIG5hdHVyZSBvZiB0aGUgU0RJTyBidXMgaXRzZWxmLiBJcyB0aGVyZSBzb21lIGtpbmQgb2YgdmlydHVhbCBTRElPIGJ1cyBhYnN0cmFjdGlvbiwgb3IgYW0gSSBkZWFsaW5nIHdpdGggZGlyZWN0IHBoeXNpY2FsIGhhcmR3YXJlP1xuXG5GaW5hbGx5LCBsZXQncyBoaXQgdGhlIFN5emthbGxlciBhbmQga2VybmVsIHNvdXJjZXMuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgZXZpZGVuY2Ugb2YgU0RJTyBlbXVsYXRpb24sIHRoYXQgaXMsIGlmIGl0J3MgdGhlcmUsIHRoZW4gd2hlcmUgaXMgaXQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MjcuMzM4NDk0NTE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg4Njc0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb19yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDYte1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmM6MTc0NzpcXHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmJ0X21ydmxfc2RpbykgIT0gMCkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0OC1cXHRcXHRCVF9FUlIoXFxcIlNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbiBGYWlsZWRcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYz0yNzQ9c3RhdGljIHZvaWQgc2Rpb19sZWdhY3lfc2h1dGRvd24oc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODItLyoqXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4MzogKlxcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODQtICpcXHRAZHJ2OiBTRElPIGZ1bmN0aW9uIGRyaXZlclxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM6Mjg3OmludCBfX3NkaW9fcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBzZGlvX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0zMDEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTMwMy1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2c2Rpb191YXJ0X2RyaXZlcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jOjE5NzpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmI0M19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jPTEyNzE9aW50IGJyY21mX3NkaW9fcmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtMTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XFx0cmV0dXJuIHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZicmNtZl9zZG1tY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jPTEzOTA9c3RhdGljIGludCBfX2luaXQgaWZfc2Rpb19pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmMtMTM5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYzoxMzk3OlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZpZl9zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmMtMTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTQ5Mz1zdGF0aWMgaW50IF9faW5pdCB3ZnhfY29yZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MDItXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01NQykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYzo1MDM6XFx0XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNndmeF9zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTA0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvY3cxMjAwX3NkaW8uYz0zODg9c3RhdGljIGludCBfX2luaXQgY3cxMjAwX3NkaW9faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jOjQwMTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2c2Rpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jLTQwMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9NDUzPXN0YXRpYyBpbnQgX19pbml0IHJ0d19kcnZfZW50cnkodm9pZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQte1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnJ0bDg3MjNic19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MjguOTc3MzcyNTQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0ODQ5MjE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgZnVuY3Rpb24uIElzIGl0IGEgcmVndWxhciBwYXJ0IG9mIGluaXRpYWxpemF0aW9uPyBEb2VzIGl0IG9jY3VyIGR1cmluZyBhbiBlcnJvciBjb25kaXRpb24/IE9yIGlzIGl0IHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBoYXJkd2FyZSBjb25maWd1cmF0aW9uIG9yIGZpcm13YXJlIHZlcnNpb24/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlcmUncyB1c3VhbGx5IGEgcmVhc29uIGZvciB0aGVzZSBmaXJtd2FyZSBkdW1wIGZ1bmN0aW9ucywgc28gZmluZGluZyB0aGUgY2F1c2UgaXMgY3JpdGljYWwgdG8gZGVidWdnaW5nLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxzLCBleGFtaW5lIHRoZSBhcmd1bWVudHMgcGFzc2VkLCBhbmQgZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSXQncyBhIGJyZWFkY3J1bWIgaHVudDsgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGxpdmUgaW4gdGhlIGdyZWF0ZXIgcGljdHVyZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NjAxNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjMxLjEyNTg2NzcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk1MjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NkaW9fZndfZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNzE0PXJkd3Jfc3RhdHVzIG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3NTktLyogVGhpcyBmdW5jdGlvbiBkdW1wIGZpcm13YXJlIG1lbW9yeSB0byBmaWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoyNzYwOnN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yNzYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MzAwMj1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjMwMTc6XFx0XFx0bXdpZmlleF9zZGlvX2Z3X2R1bXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE4LVxcdG13aWZpZXhfcHJlcGFyZV9md19kdW1wX2luZm8oYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjMxLjE5OTgzNjk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDkwNDg0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgYG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AgZnVuY3Rpb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBleGVjdXRpb24gZmxvdy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgaXQncyBiZWluZyBpbnZva2VkIG9yIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHRyaWdnZXJlZCBkaXJlY3RseSBieSBhbm90aGVyIGZ1bmN0aW9uLCBzY2hlZHVsZWQgdGhyb3VnaCBhIHdvcmsgcXVldWUsIGhvb2tlZCB0byBhbiBpbnRlcnJ1cHQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkgaGVyZS5cblxuTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgbWV0aG9kczogR3JlcHBpbmcgdGhlIGNvZGViYXNlIGlzIHRoZSBvYnZpb3VzIGZpcnN0IHN0ZXAuIEknbGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byBgbXdpZmlleF9zZGlvX2RldmljZV9kdW1wX3dvcmtgIGRpcmVjdGx5LCBidXQgYWxzbyBjaGVjayBmb3IgdXNlcyBvZiByZWxhdGVkIGZ1bmN0aW9ucyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSByZXNwb25zaWJsZSBmb3Igc2NoZWR1bGluZyBvciByZWdpc3RlcmluZyB0aGlzIHBhcnRpY3VsYXIgd29yayBpdGVtLiBJIHNob3VsZCBhbHNvIGJlIG1pbmRmdWwgb2YgaW5kaXJlY3QgY2FsbHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMuIEl0IGlzIGxpa2VseSBhIHdvcmsgcXVldWUsIGJ1dCBJIGNhbid0IGFzc3VtZSB0aGF0LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkZyb20gdGhlcmUsIEknbGwgYW5hbHl6ZSB0aGUgY2FsbCBzaXRlcyBJIGlkZW50aWZ5IHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQgaW4sIGFuZCB0aGUgb3ZlcmFsbCBzdGF0ZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIGlzIGNydWNpYWwgdG8gYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIHB1cnBvc2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgYXVkaXRpbmcuIEZpbmFsbHksIEknbGwgbmVlZCB0byBjb3JyZWxhdGUgbXkgZmluZGluZ3MgdG8gdW5kZXJzdGFuZCB0aGUgZXZlbnQgdGhhdCBtYXkgYmUgY2F1c2luZyBpdHMgZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MzMuNzA4ODg4NTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA1NjIyMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2aWNlX2R1bXBfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0yNjgwPXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzoyODAzOnN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0yODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MjgyOD1zdGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzQtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjYXJkLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MzU6XFx0XFx0bXdpZmlleF9wY2llX2RldmljZV9kdW1wX3dvcmsoY2FyZC1cXHUwMDNlYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0yODM2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTVdJRklFWF9JRkFDRV9XT1JLX0NBUkRfUkVTRVQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI4ODg9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2dlbmVyaWNfZndfZHVtcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MzAwMjpzdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMwMjI9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDI4LVxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FyZC1cXHUwMDNld29ya19mbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDI5OlxcdFxcdG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKGNhcmQtXFx1MDAzZWFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAzMC1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1XSUZJRVhfSUZBQ0VfV09SS19DQVJEX1JFU0VULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzozMy44MDk0NjA5ODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA2MjExNjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8vTWFydmVsbCBXaUZpLUV4IENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtd2lmaWV4L3NkaW8uY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgaXMgdGhlIGRyaXZlciBmb3IgTWFydmVsbCdzIFdpRmktRXggU0RJTyBjYXJkcy4gTm93LCBsZXQgbWUgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIGhlcmUgd2UgYXJlOiB0aGUgXCJTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmVcIiBjYXRlZ29yeSBleHBsaWNpdGx5IGV4Y2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIFwiUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sc1wiIGFyZSB0aG9zZSBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwOiBpcyBTRElPIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBvciBldmVuICpjcmVhdGUqIHRoZSBTRElPIGRldmljZXMgdGhhdCB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGZ1enogU0RJTyBjYXJkcyB3aXRoIHN5emthbGxlciBpbiB0aGUgc2FtZSB3YXkgd2UgY2FuIHdpdGggVVNCIGRldmljZXMgdXNpbmcgUmF3IEdhZGdldCBvciB0aGUgYGR1bW15X2hjZGAuIERvZXMgTGludXggb3Igc3l6a2FsbGVyIGhhdmUgYW4gZXhpc3RpbmcgU0RJTyBlbXVsYXRvciBvciBhbnkga2luZCBvZiB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIHRoYXQgY291bGQgYnJpZGdlIHRoaXMgZ2FwPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3RpbmcgaW1wbGVtZW50YXRpb25zIHRoYXQgd291bGQgYWxsb3cgZm9yIHRoaXMgc29ydCBvZiB0ZXN0aW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjA1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjM2Ljg3MTU4MDc1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTk1NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVxcdFxcdFxcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cXHRcXHRcXHRcXHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5OlxcdFxcdFxcdFxcdCAgIHNkaW8ubyBzZGlvX29wcy5vIHNkaW9fYnVzLm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MTA6XFx0XFx0XFx0XFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cXHRcXHRcXHRcXHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXFx0XFx0Kz0gbW1jX3Rlc3Qub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1NESU9fVUFSVClcXHRcXHQrPSBzZGlvX3VhcnQub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcXHQrPSBjcnlwdG8ub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcXFwiaG9zdC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXFxcInNkaW9fY2lzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpIHx8IG1tY19jYXJkX3NkX2NvbWJvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cXHRcXHRyZXR2YWwgPSBhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJTRElPX0lEPSUwNFg6JTA0WFxcXCIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjExMTpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9MjY0PXN0YXRpYyB2b2lkIG1tY19yZWxlYXNlX2NhcmQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNjg6XFx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00Ny0gKiBGb3IgYXQgbGVhc3Qgc29tZSBvZiB0aGVzZSBidWdzIHdlIG5lZWQgYSB3b3JrLWFyb3VuZC5cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXFxcInNkaW9fYnVzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDYtI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjQ3OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIyOTpcXHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcXHQgKiBzZGlvIGRldmljZXMgd29uJ3Qgd29yayBwcm9wZXJseS5cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzEtXFx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XFx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXFx1MDAzZWNtZC1cXHUwMDNlb3Bjb2RlLCBtcnEtXFx1MDAzZWNtZC1cXHUwMDNlYXJnKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzNC1cXHQgICAgaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VjYXJkX2J1c3kpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjY2NzpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cXHRcXHRkYXRhLVxcdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTQtXFx0LypcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1OlxcdCAqIHNkaW9fcmVzZXQgc2VuZHMgQ01ENTIgdG8gcmVzZXQgY2FyZC4gIFNpbmNlIHdlIGRvIG5vdCBrbm93XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlxcdFxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0OlxcdFxcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA0LVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yNDE4PXN0YXRpYyB2b2lkIF9fZXhpdCBtbWNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XFx0c2Rpb191bnJlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXFx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmgtODktaW50IG1tY19hdHRhY2hfc2RfdWhzMihzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY3LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9IV19SRVNFVDtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwiY2FwLXNkaW8taXJxXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibm8tc2Rpb1xcXCIpKVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5NS1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9OT19TRElPO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmhvc3QtXFx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5OlxcdElOSVRfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTYwLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZob3N0LVxcdTAwM2VyZXR1bmVfdGltZXIsIG1tY19yZXR1bmVfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1OlxcdGlmIChjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcXHUwMDI2XFx1MDAyNiAhaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTY6XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwibWlzc2luZyAtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE5MC1cXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTYtXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVxcdFNESU9fRklYVVBfQ09NUEFUSUJMRShcXFwidGksd2wxMjUxXFxcIiwgd2wxMjUxX3F1aXJrLCAwKSxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcXFwiJXUuJXVcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1ham9yX3JldiwgY2FyZC1cXHUwMDNlbWlub3JfcmV2KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NTA6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NTEtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjItXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjU6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvbW1jLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcXFwic2QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcXFwibW1jX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFxcXCJzZF9vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcXFwic2Rpb19vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTM1PU1NQ19ERVZfQVRUUihyY2EsIFxcXCIweCUwNHhcXFxcblxcXCIsIGNhcmQtXFx1MDAzZXJjYSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzYtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTQ4PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTE6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXFx0XFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHNkaW9fdHlwZSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcXHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxLX07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzpzdGF0aWMgaW50IHNkaW9faW5pdF9mdW5jKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IGZuKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVxcdGludCByZXQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2OlxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTpcXHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cXHRpZiAoSVNfRVJSKGZ1bmMpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVxcdGlmICghKGNhcmQtXFx1MDAzZXF1aXJrcyBcXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcXHRjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbZm4gLSAxXSA9IGZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTM5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcXHRzZGlvX3JlbW92ZV9mdW5jKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE2NDpcXHRjYXJkLVxcdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXFx1MDAyNiAweGYwKSBcXHUwMDNlXFx1MDAzZSA0O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE2NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNjE6c3RhdGljIGludCBzZGlvX2VuYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjkzLSAqIG9mIHRoZSBjYXJkLiBUaGlzIG1heSBiZSByZXF1aXJlZCBvbiBjZXJ0YWluIHNldHVwcyBvZiBib2FyZHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCdzXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NzpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV9jZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMxNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzUyOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2NS1vdXQ6XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2OlxcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjctfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3MDpzdGF0aWMgaW50IHNkaW9fZW5hYmxlXzRiaXRfYnVzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzczLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcXHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3NS1cXHRpZiAoZXJyIFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc2LVxcdFxcdHJldHVybiBlcnI7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzgzOlxcdFxcdFxcdHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0MzE6XFx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcXHRpZiAocmV0IFxcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzNi1cXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDM3OlxcdFxcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ0MjpzdGF0aWMgdW5zaWduZWQgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2NS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVxcdFxcdGNhcmRfc3RyZW5ndGggXFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1xcdTAwM2NcXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XFx0XFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1OTM6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X3Voc19jYXJkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAwLVxcdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXFx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA2OlxcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDgtXFx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5OlxcdGVyciA9IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXFx0ICogUmVzZXQgdGhlIGNhcmQgYnkgcGVyZm9ybWluZyB0aGUgc2FtZSBzdGVwcyB0aGF0IGFyZSB0YWtlbiBieVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcXHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFxcXCJub3JtYWxcXFwiIHByb2JlLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cXHQgKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcXHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzYtXFx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ5LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjU5LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDA6XFx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFxcdTAwMjZzZGlvX3R5cGUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcwMS1cXHRpZiAoSVNfRVJSKGNhcmQpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcXHRcXHRpZiAob2xkY2FyZCBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNy1cXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVxcdFxcdGhvc3QtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdF9jYXJkKGhvc3QsIGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cXHQgKiBmYWlscyB0byBjaGVjayByb2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcXHQgKiB0cnkgdG8gaW5pdCB1aHMgY2FyZC4gc2Rpb19yZWFkX2NjY3Igd2lsbCB0YWtlIG92ZXIgdGhpcyB0YXNrXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVxcdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVxcdFxcdGlmIChlcnIgPT0gLUVBR0FJTikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcXHRcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVxcdFxcdFxcdHJldHJpZXMtLTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTU6XFx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVxcdFxcdGlmIChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODI4LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcXHRlcnIgPSBzZGlvX3JlYWRfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XFx0bW1jX2ZpeHVwX2RldmljZShjYXJkLCBzZGlvX2ZpeHVwX21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2MS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XFx0ZXJyID0gc2Rpb19kaXNhYmxlX2NkKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVxcdGlmICgob2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQpIFxcdTAwMjZcXHUwMDI2IGNhcmQtXFx1MDAzZXN3X2NhcHMuc2QzX2J1c19tb2RlKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5OlxcdFxcdGVyciA9IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XFx0XFx0bW1jX3NldF9jbG9jayhob3N0LCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKGNhcmQpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODktXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODkwOlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg5MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxODpcXHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IsIE5VTEwpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcXHRyZXR1cm4gbW1jX3NkaW9faW5pdF9jYXJkKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgaG9zdC1cXHUwMDNlY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcXHRmb3IgKGkgPSAwO2kgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzO2krKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcXHRcXHRpZiAoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0OlxcdFxcdFxcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XFx0XFx0XFx0aG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldID0gTlVMTDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk0NjpzdGF0aWMgaW50IG1tY19zZGlvX2FsaXZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk5NDpcXHRcXHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTk1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDA4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzOyBpKyspIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlxcdFxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxNDpcXHRcXHRpZiAoZnVuYyBcXHUwMDI2XFx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcXHUwMDI2XFx1MDAyNiBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyLVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzItXFx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVxcdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0Ny17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcXHRXQVJOX09OKGhvc3QtXFx1MDAzZXNkaW9faXJxcyBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXFx0bW1jX2NhcmRfc2V0X3N1c3BlbmRlZChob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTY6XFx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXFx1MDAyNlxcdTAwMjYgbW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3OlxcdFxcdHNkaW9fZGlzYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXFx0XFx0fVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XFx0XFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcXHR9IGVsc2UgaWYgKG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVxcdFxcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcXHRcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTA1LVxcdFxcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcXHRpZiAoaG9zdC1cXHUwMDNlc2Rpb19pcnFzKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cXHRcXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2OlxcdFxcdFxcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVxcdTAwM2VzZGlvX2lycV90aHJlYWQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTctXFx0XFx0ZWxzZSBpZiAoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEyODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVxcdG1tY19wb3dlcl91cChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XFx0cmV0ID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2OlxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNjctXFx0XFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVxcdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XFx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVxcdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cXHUwMDNlZl9pbml0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Ny1cXHRtbWNfZ29faWRsZShob3N0KTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzozNi45OTYyMDcwNTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM5NDQzNDc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExhbmRzY2FwZSBvZiBNYXJ2ZWxsIFNESU8gV2lGaSBEcml2ZXIgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGBtd2lmaWV4L3NkaW8uY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIGl0IHN1cHBvcnRzLiBTaW5jZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgTU1DIFNESU8gc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBDYW4gSSBpbnN0YW50aWF0ZSB0aGVzZSBTRElPIGRldmljZXMgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cblxuVGhlIGNvcmUgcXVlc3Rpb24gcXVpY2tseSBib2lscyBkb3duIHRvIFFFTVUncyBjYXBhYmlsaXRpZXMuIE15IGN1cnJlbnQgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoaWxlIFFFTVUgZG9lcyBhIGdvb2Qgam9iIHdpdGggU0QgY2FyZCBlbXVsYXRpb24gZm9yIHN0b3JhZ2UgdXNpbmcgU0RIQ0kvTU1DLCBpdCBkb2Vzbid0IGV4dGVuZCB0aGlzIHRvIFNESU8gV2lGaSBjYXJkcywgYW5kIGNlcnRhaW5seSBub3QgdGhlIHNwZWNpZmljIE1hcnZlbGwgbW9kZWxzIChTRDg3ODYsIDg3ODcsIDg3OTcsIGFuZCB0aGUgcmVzdCkuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuXG5cbk5leHQsIEkgbmVlZCB0byBrbm93IGlmIHRoZSBMaW51eCBrZXJuZWwgb2ZmZXJzIGFueSAqc29mdHdhcmUqIGVtdWxhdGlvbiBmb3IgZWl0aGVyIFNESU8gV2lGaSBpbiBnZW5lcmFsLCBvciB0aGUgYG13aWZpZXhgIGRyaXZlciBzcGVjaWZpY2FsbHkuIEkga25vdyBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFBDSWUsIFNESU8sIGFuZCBVU0IuIFNvLCBsZXTigJlzIGdvIGRlZXBlci5cblxuTG9va2luZyBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AsIEkgc2VlOlxuXG4qICAgYHBjaWUuY2A6IFRoaXMgcmVxdWlyZXMgYWN0dWFsIFBDSWUgaGFyZHdhcmUsIHNvIHRoYXQncyBvdXQuXG4qICAgYHNkaW8uY2A6IE9idmlvdXNseSwgaXQgd2FudHMgU0RJTyBoYXJkd2FyZS5cbiogICBgdXNiLmNgOiBUaGlzIGlzIGludGVyZXN0aW5nLiBVU0IgKmNvdWxkKiBiZSBlbXVsYXRlZCBpbiB0aGVvcnksIHByb3ZpZGVkIHRoZSBVU0IgZGVzY3JpcHRvciBpcyBjb3JyZWN0LiBCdXQsIHRoZSBmYWN0IHRoYXQgYHVzYi5jYCBhbmQgYHNkaW8uY2AgYXJlIHNlcGFyYXRlIGlzIG5vdGV3b3J0aHksIGV2ZW4gdGhvdWdoIEknZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3aXRoaW4gdGhlIFVTQiBzeXN0ZW0uXG5cbk5vdywgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCB3aGF0IGFib3V0IGBtd2lmaWV4X3NkaW9fZndfZHVtcGA/IEl04oCZcyBsb2NhdGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFRoaXMgaXMgYW5vdGhlciBjbHVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgc2Rpby5jYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIFNESU8gaGFyZHdhcmUsIG9yIGlmIGNlcnRhaW4gYXNwZWN0cyBtaWdodCBiZSBhcHBsaWNhYmxlIGluIGEgbW9yZSBnZW5lcmFsaXplZCB0ZXN0aW5nIG9yIGVtdWxhdGVkIHNjZW5hcmlvLiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIG5leHQgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Nzk3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjQxLjM5MDY0NDE5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6NDEuMzkwNzE3NzY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODEyNjQwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcncyBvZmYgd2l0aCB0aGUgYG13aWZpZXhfc2Rpb2AgaW5pdGlhbGl6YXRpb24gb3IgcHJvYmUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIHRoZSBzb3VyY2UuIEknbSBnb2luZyB0byBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgZmlsZSDigJMgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciAqc2hvdWxkKiBoYXBwZW4sIGZvciB0aGUgU0RJTyBpbnRlcmZhY2UuIEknbGwgZm9jdXMgcGFydGljdWxhcmx5IG9uIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgdGhlIGRldmljZSBJRCB0YWJsZS4gVGhhdCB0YWJsZSBzaG91bGQgZ2l2ZSBtZSB0aGUga2V5IGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIHRvIHZlcmlmeSB0aGUgY29ycmVjdCBkZXZpY2UgaXMgYmVpbmcgbG9hZGVkIGFuZCB0aGUgcHJvYmUgZnVuY3Rpb24gd2lsbCByZXZlYWwgdGhlIHN0ZXBzIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRldmljZSBJRHMgbWF0Y2ggdGhlIGRldmljZXMgb24gaGFuZCBhbmQgdGhhdCB0aGUgaW5pdCBwcm9jZXNzIGlzIGFzIGV4cGVjdGVkLiBMZXQncyBzZWUgd2hhdCBjbHVlcyB0aGlzIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQ2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0My40NzE5ODUxNTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDQxMDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz01NTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6NTUxOm13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtNTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9OTQ0PXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTk1NS0vKiBXTEFOIElEcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6OTU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgbXdpZmlleF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTk1Ny1cXHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTUFSVkVMTCwgU0RJT19ERVZJQ0VfSURfTUFSVkVMTF84Nzg2X1dMQU4pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0My41OTI0MDE1NzRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTMwODk2MjYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBgbXdpZmlleF9zZGlvX2Z3X2R1bXAoKWAgaXMgVW5mdXp6YWJsZSBpbiBTdGFuZGFyZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBgbXdpZmlleF9zZGlvX3Byb2JlYCBvbiBteSByYWRhci4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBmb3IgTWFydmVsbCBTRElPIFdpRmkgY2FyZHMsIHJpZ2h0PyBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgdHJpZ2dlciB0aGlzIGNvZGUgd2l0aCBzeXprYWxsZXIgb3Igd2l0aGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgbm8uIFN0YW5kYXJkIFFFTVUsIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSwgZXRjLiwgdGhleSBkb24ndCBoYXZlIHBoeXNpY2FsIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIG9yIHByb3BlciBlbXVsYXRpb24uIFRoZXkncmUganVzdCBub3Qgc2V0IHVwIGZvciB0aGF0IGxldmVsIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIGNhcmVmdWxseSBhcHBseSB0aGUgY3JpdGVyaWEgZm9yIGZ1enphYmlsaXR5LiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogKndoZW4gdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSogKG5lZ2F0aXZlIGNyaXRlcmlhKS4gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBpcyB0aGUgY3JpdGljYWwgcGhyYXNlLiBUaGV5IGdpdmUgdGhlIGV4YW1wbGVzLCBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgc3R1ZmYgdGhhdCBuZWVkcyBhY3R1YWwgc2lsaWNvbi4gQW5kIHRoaXMgYG13aWZpZXgvc2Rpby5jYCBpcyBkZWZpbml0ZWx5IGluIHRoYXQgY2F0ZWdvcnkuIEl0J3MgdGhlIFNESU8gaW50ZXJmYWNlIGRyaXZlciBmb3IgdGhvc2UgTWFydmVsbCBXaUZpIGNoaXBzIChTRDg3ODYsIFNEODc4NywgZXRjLikuIEl0ICpuZWVkcyogYSBwaHlzaWNhbCBTRElPL01NQyBob3N0IGNvbnRyb2xsZXIgYW5kIGEgcGh5c2ljYWwgTWFydmVsbCBXaUZpIGNoaXAgdG8gZnVuY3Rpb24uXG5cblRoZW4gdGhlcmUncyB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIHJlYWNoYWJsZSBjb2RlIHZpYSB2aXJ0dWFsIGJ1c2VzIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0LCBldGMuIFRoaXMgZG9lc24ndCBhcHBseSBoZXJlLiBTRElPIGlzIG5vdCBhIHZpcnR1YWwgYnVzLiBJdCdzIGEgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlLiBTbywgYmVjYXVzZSB0aGUgbW9kaWZpZWQgY29kZSwgaW5jbHVkaW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcCgpYCwgcmVxdWlyZXMgYWN0dWFsIFNESU8gaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gSXQncyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHJlYXNvbmluZyBhbmQgdGhlIHBhcmFtZXRlcnM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYW5kLCBmb3IgdGhlIEVuYWJsZUNvbmZpZ3MgYW5kIEZvY3VzU3ltYm9scywgdGhlc2Ugd2lsbCBiZSBudWxsIG9yIGVtcHR5IGxpc3QgYmVjYXVzZSB0aGUgZHJpdmVyIGlzbid0IGFjY2Vzc2libGUgaW4gdGhpcyBjb250ZXh0LiBFdmVyeXRoaW5nIHNlZW1zIHRvIGJlIGluIG9yZGVyLiBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyNCwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6NDguOTAxMzY2NzI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0OC45MDEzOTkwMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk9p4n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 23:38:51 +0000 UTC FinishedAt: 2026-09-06 00:53:50 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjOWRlMzkzYzZhNWVjNDY1OTVlZjhhNjhjZGJmZGMxNTQzNTdmNjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwMDo1MzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xuaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbkBAIC0yNzk1LDYgJiM0MzsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXG5cJiMzNDspO1xuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG4mIzQzO1x0aWYgKGR1bXBfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkge1xuJiM0MztcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwmIzM0OywgZHVtcF9udW0pO1xuJiM0MztcdFx0Z290byBkb25lO1xuJiM0MztcdH1cbiBcbiBcdC8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZHVtcF9udW07IGlkeCYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfc2Rpb19md19kdW1wKCkgd2l0aGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMuIFRoaXMgZHJpdmVyIGlzIGZvciBNYXJ2ZWxsIFNESU8gd2lyZWxlc3MgY2hpcHMsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM5ZGUzOTNjNmE1ZWM0NjU5NWVmOGE2OGNkYmZkYzE1NDM1N2Y2OTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMKaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCkBAIC0yNzk1LDYgJiM0MzsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpCiAJCW13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCAmIzM0O1NESU8gcmVhZCBtZW1vcnkgbGVuZ3RoIGVyclxuJiMzNDspOwogCQlnb3RvIGRvbmU7CiAJfQomIzQzOwlpZiAoZHVtcF9udW0gJmd0OyBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkgewomIzQzOwkJbXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsCiYjNDM7CQkJICAgICYjMzQ7SW52YWxpZCBmdyBkdW1wIG51bTogJWRcbiYjMzQ7LCBkdW1wX251bSk7CiYjNDM7CQlnb3RvIGRvbmU7CiYjNDM7CX0KIAogCS8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovCiAJZm9yIChpZHggPSAwOyBpZHggJmx0OyBkdW1wX251bTsgaWR4JiM0MzsmIzQzOykgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5CgkJCQkJCQlvdXRwdXQ6IDg1CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHdoZXRoZXIgaXQgcHJlc2VudHMgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gaGF2ZSBqdWljeSBiaXRzIGZvciBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDI3OTUgaW4gdGhhdCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgYSBxdWljayBgZ3JlcHBlcmAgY29tbWFuZCB0byBnZXQgdGhhdCBzcGVjaWZpYyBzZWN0aW9uLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQsIGFuZCB0aGVuIEkgY2FuIGNoZWNrIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgdG8gc2VlIGlmIHRoZSByZWxldmFudCBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gZW5hYmxlZCBieSBkZWZhdWx0IG9yIGVhc2lseSBjb25maWd1cmVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFiaWxpdHkgaXMga2V5OyBpZiBpdCYjMzk7cyB0b28gb2JzY3VyZSwgaXQgbWlnaHQgbm90IGJlIHdvcnRoIHRoZSBlZmZvcnQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCB0byB0cnkgYW5kIGZ1enouCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNzg1Olx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBNU0csIFwmIzM0Oz09IG13aWZpZXggZmlybXdhcmUgZHVtcCBzdGFydCA9PVxcblwmIzM0Oyk7XG4yNzg2Olx0XG4yNzg3Olx0XHRzdGF0ID0gbXdpZmlleF9zZGlvX3Jkd3JfZmlybXdhcmUoYWRhcHRlciwgZG9uZWZsYWcpO1xuMjc4ODpcdFx0aWYgKHN0YXQgPT0gUkRXUl9TVEFUVVNfRkFJTFVSRSlcbjI3ODk6XHRcdFx0Z290byBkb25lO1xuMjc5MDpcdFxuMjc5MTpcdFx0cmVnID0gY2FyZC1cdTAwM2VyZWctXHUwMDNlZndfZHVtcF9zdGFydDtcbjI3OTI6XHRcdC8qIFJlYWQgdGhlIG51bWJlciBvZiB0aGUgbWVtb3JpZXMgd2hpY2ggd2lsbCBkdW1wICovXG4yNzkzOlx0XHRkdW1wX251bSA9IHNkaW9fcmVhZGIoY2FyZC1cdTAwM2VmdW5jLCByZWcsIFx1MDAyNnJldCk7XG4yNzk0Olx0XHRpZiAocmV0KSB7XG4yNzk1Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXG5cJiMzNDspO1xuMjc5NjpcdFx0XHRnb3RvIGRvbmU7XG4yNzk3Olx0XHR9XG4yNzk4Olx0XHRpZiAoZHVtcF9udW0gXHUwMDNlIEFSUkFZX1NJWkUobWVtX3R5cGVfbWFwcGluZ190YmwpKSB7XG4yNzk5Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuMjgwMDpcdFx0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwmIzM0OywgZHVtcF9udW0pO1xuMjgwMTpcdFx0XHRnb3RvIGRvbmU7XG4yODAyOlx0XHR9XG4yODAzOlx0XG4yODA0Olx0XHQvKiBSZWFkIHRoZSBsZW5ndGggb2YgZXZlcnkgbWVtb3J5IHdoaWNoIHdpbGwgZHVtcCAqL1xuMjgwNTpcdFx0Zm9yIChpZHggPSAwOyBpZHggXHUwMDNjIGR1bXBfbnVtOyBpZHgmIzQzOyYjNDM7KSB7XG4yODA2Olx0XHRcdHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nICplbnRyeSA9IFx1MDAyNm1lbV90eXBlX21hcHBpbmdfdGJsW2lkeF07XG4yODA3Olx0XG4yODA4Olx0XHRcdHN0YXQgPSBtd2lmaWV4X3NkaW9fcmR3cl9maXJtd2FyZShhZGFwdGVyLCBkb25lZmxhZyk7XG4yODA5Olx0XHRcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXG4yODEwOlx0XHRcdFx0Z290byBkb25lO1xuMjgxMTpcdFxuMjgxMjpcdFx0XHRtZW1vcnlfc2l6ZSA9IDA7XG4yODEzOlx0XHRcdHJlZyA9IGNhcmQtXHUwMDNlcmVnLVx1MDAzZWZ3X2R1bXBfc3RhcnQ7XG4yODE0Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDQ7IGkmIzQzOyYjNDM7KSB7XG4yODE1Olx0XHRcdFx0cmVhZF9yZWcgPSBzZGlvX3JlYWRiKGNhcmQtXHUwMDNlZnVuYywgcmVnLCBcdTAwMjZyZXQpO1xuMjgxNjpcdFx0XHRcdGlmIChyZXQpIHtcbjI4MTc6XHRcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtTRElPIHJlYWQgZXJyXFxuXCYjMzQ7KTtcbjI4MTg6XHRcdFx0XHRcdGdvdG8gZG9uZTtcbjI4MTk6XHRcdFx0XHR9XG4yODIwOlx0XHRcdFx0bWVtb3J5X3NpemUgfD0gKHJlYWRfcmVnIFx1MDAzY1x1MDAzYyBpKjgpO1xuMjgyMTpcdFx0XHRcdHJlZyYjNDM7JiM0Mzs7XG4yODIyOlx0XHRcdH1cbjI4MjM6XHRcbjI4MjQ6XHRcdFx0aWYgKG1lbW9yeV9zaXplID09IDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWF9TRElPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEyOmNvbmZpZyBNV0lGSUVYX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgU0Q4Nzg2L1NEODc4Ny9TRDg3OTcvU0Q4ODg3L1NEODg5Ny9TRDg5NzcvU0Q4OTc4L1NEODk4Ny9TRDg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTU3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlNESU8gRGV2aWNlIEludmVzdGlnYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG13aWZpZXhfc2Rpb2AgZHJpdmVyIGFjdHVhbGx5IGdldHMgcHJvYmVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGV2ZW4gKnJlYWNoKiBTRElPIGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhlIFNESU8gYnVzIGFjdHVhbGx5IGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUsIG9yIGFyZSB3ZSByZWxpYW50IG9uIGEgVVNCL3ZpcnRpby1zdHlsZSB3b3JrYXJvdW5kPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlPwoKTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHRoZSBleGlzdGluZyBTRElPIGRyaXZlcnMgaW4gTGludXguIFRoZW4gSSB3aWxsIGRldGVybWluZSBpZiBTeXprYWxsZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIGZ1enogU0RJTyBkZXZpY2VzLgoKSG9sZCBvbiwgZG9lcyBTeXprYWxsZXIsIG9yIGZvciB0aGF0IG1hdHRlciBzdGFuZGFyZCBRRU1VLCBldmVuIGhhdmUgc3VwcG9ydCBmb3IgU0RJTyBXaUZpIGRldmljZXMsIHBhcnRpY3VsYXJseSBgbXdpZmlleF9zZGlvYD8KCkkgYWxzbyBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZ1bmRhbWVudGFsIG5hdHVyZSBvZiB0aGUgU0RJTyBidXMgaXRzZWxmLiBJcyB0aGVyZSBzb21lIGtpbmQgb2YgdmlydHVhbCBTRElPIGJ1cyBhYnN0cmFjdGlvbiwgb3IgYW0gSSBkZWFsaW5nIHdpdGggZGlyZWN0IHBoeXNpY2FsIGhhcmR3YXJlPwoKRmluYWxseSwgbGV0JiMzOTtzIGhpdCB0aGUgU3l6a2FsbGVyIGFuZCBrZXJuZWwgc291cmNlcy4gSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXZpZGVuY2Ugb2YgU0RJTyBlbXVsYXRpb24sIHRoYXQgaXMsIGlmIGl0JiMzOTtzIHRoZXJlLCB0aGVuIHdoZXJlIGlzIGl0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jOjE3NDc6XHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDgtXHRcdEJUX0VSUihcJiMzNDtTRElPIERyaXZlciBSZWdpc3RyYXRpb24gRmFpbGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM9Mjc0PXN0YXRpYyB2b2lkIHNkaW9fbGVnYWN5X3NodXRkb3duKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODM6ICpcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlx0QGRydjogU0RJTyBmdW5jdGlvbiBkcml2ZXJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4NzppbnQgX19zZGlvX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgc2Rpb19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmMtMTE0MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnNkaW9fdWFydF9kcml2ZXIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYzoxOTc6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnJjbWZfc2RtbWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYz0xMzkwPXN0YXRpYyBpbnQgX19pbml0IGlmX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM6MTM5NzpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jLTEzOTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NDkzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MDItXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6NTAzOlx0XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ3Znhfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTA0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LXtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydGw4NzIzYnNfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDE2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYG13aWZpZXhfc2Rpb19md19kdW1wYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgdHJpZ2dlcmluZyBgbXdpZmlleF9zZGlvX2Z3X2R1bXBgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGggdGhhdCBsZWFkcyB0byB0aGlzIGZ1bmN0aW9uLiBJcyBpdCBhIHJlZ3VsYXIgcGFydCBvZiBpbml0aWFsaXphdGlvbj8gRG9lcyBpdCBvY2N1ciBkdXJpbmcgYW4gZXJyb3IgY29uZGl0aW9uPyBPciBpcyBpdCBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBmaXJtd2FyZSB2ZXJzaW9uPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlJiMzOTtzIHVzdWFsbHkgYSByZWFzb24gZm9yIHRoZXNlIGZpcm13YXJlIGR1bXAgZnVuY3Rpb25zLCBzbyBmaW5kaW5nIHRoZSBjYXVzZSBpcyBjcml0aWNhbCB0byBkZWJ1Z2dpbmcuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbHMsIGV4YW1pbmUgdGhlIGFyZ3VtZW50cyBwYXNzZWQsIGFuZCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLiBJdCYjMzk7cyBhIGJyZWFkY3J1bWIgaHVudDsgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGxpdmUgaW4gdGhlIGdyZWF0ZXIgcGljdHVyZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3NkaW9fZndfZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI3MTQ9cmR3cl9zdGF0dXMgbXdpZmlleF9zZGlvX3Jkd3JfZmlybXdhcmUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3NTktLyogVGhpcyBmdW5jdGlvbiBkdW1wIGZpcm13YXJlIG1lbW9yeSB0byBmaWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjI3NjA6c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjc2MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0zMDAyPXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE2LVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDE3Olx0XHRtd2lmaWV4X3NkaW9fZndfZHVtcChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAxOC1cdG13aWZpZXhfcHJlcGFyZV9md19kdW1wX2luZm8oYWRhcHRlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1ODgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBQYXRoIG9mIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AgZnVuY3Rpb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBleGVjdXRpb24gZmxvdy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBvciByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCB0cmlnZ2VyZWQgZGlyZWN0bHkgYnkgYW5vdGhlciBmdW5jdGlvbiwgc2NoZWR1bGVkIHRocm91Z2ggYSB3b3JrIHF1ZXVlLCBob29rZWQgdG8gYW4gaW50ZXJydXB0LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuCgpNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBtZXRob2RzOiBHcmVwcGluZyB0aGUgY29kZWJhc2UgaXMgdGhlIG9idmlvdXMgZmlyc3Qgc3RlcC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byBgbXdpZmlleF9zZGlvX2RldmljZV9kdW1wX3dvcmtgIGRpcmVjdGx5LCBidXQgYWxzbyBjaGVjayBmb3IgdXNlcyBvZiByZWxhdGVkIGZ1bmN0aW9ucyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSByZXNwb25zaWJsZSBmb3Igc2NoZWR1bGluZyBvciByZWdpc3RlcmluZyB0aGlzIHBhcnRpY3VsYXIgd29yayBpdGVtLiBJIHNob3VsZCBhbHNvIGJlIG1pbmRmdWwgb2YgaW5kaXJlY3QgY2FsbHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMuIEl0IGlzIGxpa2VseSBhIHdvcmsgcXVldWUsIGJ1dCBJIGNhbiYjMzk7dCBhc3N1bWUgdGhhdC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgYW5hbHl6ZSB0aGUgY2FsbCBzaXRlcyBJIGlkZW50aWZ5IHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQgaW4sIGFuZCB0aGUgb3ZlcmFsbCBzdGF0ZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIGlzIGNydWNpYWwgdG8gYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIHB1cnBvc2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgYXVkaXRpbmcuIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIG15IGZpbmRpbmdzIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50IHRoYXQgbWF5IGJlIGNhdXNpbmcgaXRzIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2R1bXBfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jPTI2ODA9c3RhdGljIHZvaWQgbXdpZmlleF9wY2llX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MDM6c3RhdGljIHZvaWQgbXdpZmlleF9wY2llX2RldmljZV9kdW1wX3dvcmsoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmMtMjgwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0yODI4PXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzQtXHRcdFx0ICAgICAgIFx1MDAyNmNhcmQtXHUwMDNld29ya19mbGFncykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MzU6XHRcdG13aWZpZXhfcGNpZV9kZXZpY2VfZHVtcF93b3JrKGNhcmQtXHUwMDNlYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1XSUZJRVhfSUZBQ0VfV09SS19DQVJEX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9Mjg4OD1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZ2VuZXJpY19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDAyOnN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTMwMDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MzAyMj1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDI4LVx0XHRcdCAgICAgICBcdTAwMjZjYXJkLVx1MDAzZXdvcmtfZmxhZ3MpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDI5Olx0XHRtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhjYXJkLVx1MDAzZWFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDMwLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChNV0lGSUVYX0lGQUNFX1dPUktfQ0FSRF9SRVNFVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwNQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDIzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8vTWFydmVsbCBXaUZpLUV4IENoYWxsZW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG13aWZpZXgvc2Rpby5jYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyB0aGUgZHJpdmVyIGZvciBNYXJ2ZWxsJiMzOTtzIFdpRmktRXggU0RJTyBjYXJkcy4gTm93LCBsZXQgbWUgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIGhlcmUgd2UgYXJlOiB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmUmIzM0OyBjYXRlZ29yeSBleHBsaWNpdGx5IGV4Y2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlICYjMzQ7UmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29scyYjMzQ7IGFyZSB0aG9zZSBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb24gcG9wcyB1cDogaXMgU0RJTyBldmVuICpyZWFjaGFibGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRT8gQ2FuIHN5emthbGxlciBhY3R1YWxseSAqZW11bGF0ZSogb3IgZXZlbiAqY3JlYXRlKiB0aGUgU0RJTyBkZXZpY2VzIHRoYXQgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGg/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBmdXp6IFNESU8gY2FyZHMgd2l0aCBzeXprYWxsZXIgaW4gdGhlIHNhbWUgd2F5IHdlIGNhbiB3aXRoIFVTQiBkZXZpY2VzIHVzaW5nIFJhdyBHYWRnZXQgb3IgdGhlIGBkdW1teV9oY2RgLiBEb2VzIExpbnV4IG9yIHN5emthbGxlciBoYXZlIGFuIGV4aXN0aW5nIFNESU8gZW11bGF0b3Igb3IgYW55IGtpbmQgb2YgdmlydHVhbCBTRElPIGhvc3QgY29udHJvbGxlciB0aGF0IGNvdWxkIGJyaWRnZSB0aGlzIGdhcD8gVGltZSB0byBzdGFydCBkaWdnaW5nIGluIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyB0aGF0IHdvdWxkIGFsbG93IGZvciB0aGlzIHNvcnQgb2YgdGVzdGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2RpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVx0XHRcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cdFx0XHRcdCAgIG1tYy5vIG1tY19vcHMubyBzZC5vIHNkX29wcy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjk6XHRcdFx0XHQgICBzZGlvLm8gc2Rpb19vcHMubyBzZGlvX2J1cy5vIFxcXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjEwOlx0XHRcdFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cdFx0XHRcdCAgIHNsb3QtZ3Bpby5vIHJlZ3VsYXRvci5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXHRcdCYjNDM7PSBtbWNfdGVzdC5vXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19TRElPX1VBUlQpXHRcdCYjNDM7PSBzZGlvX3VhcnQub1xuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0yMS1tbWNfY29yZS0kKENPTkZJR19NTUNfQ1JZUFRPKVx0JiM0Mzs9IGNyeXB0by5vXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcJiMzNDtob3N0LmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7c2Rpb19jaXMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcJiMzNDtidXMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9NTk9bW1jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6ODk6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSB8fCBtbWNfY2FyZF9zZF9jb21ibyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cdFx0cmV0dmFsID0gYWRkX3VldmVudF92YXIoZW52LCBcJiMzNDtTRElPX0lEPSUwNFg6JTA0WFwmIzM0Oyxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9idXMuYzoxMTE6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmMtMTEyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTI2ND1zdGF0aWMgdm9pZCBtbWNfcmVsZWFzZV9jYXJkKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2Ny1cbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6MjY4Olx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTI2OS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmg6NDY6ICogVGhlIHdvcmxkIGlzIG5vdCBwZXJmZWN0IGFuZCBzdXBwbGllcyB1cyB3aXRoIGJyb2tlbiBtbWMvc2RpbyBkZXZpY2VzLlxuZHJpdmVycy9tbWMvY29yZS9jYXJkLmgtNDctICogRm9yIGF0IGxlYXN0IHNvbWUgb2YgdGhlc2UgYnVncyB3ZSBuZWVkIGEgd29yay1hcm91bmQuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDEtI2luY2x1ZGUgXCYjMzQ7aG9zdC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0MjojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00My0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ2LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo0NzojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy00OC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMTY9c3RhdGljIHZvaWQgX19tbWNfc3RhcnRfcmVxdWVzdChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cdC8qXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMjk6XHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjMwOlx0ICogc2RpbyBkZXZpY2VzIHdvbiYjMzk7dCB3b3JrIHByb3Blcmx5LlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMxLVx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjMyLVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XHRpZiAoc2Rpb19pc19pb19idXN5KG1ycS1cdTAwM2VjbWQtXHUwMDNlb3Bjb2RlLCBtcnEtXHUwMDNlY21kLVx1MDAzZWFyZykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzQtXHQgICAgaG9zdC1cdTAwM2VvcHMtXHUwMDNlY2FyZF9idXN5KSB7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9NjYwPXZvaWQgbW1jX3NldF9kYXRhX3RpbWVvdXQoc3RydWN0IG1tY19kYXRhICpkYXRhLCBjb25zdCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzo2Njc6XHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY4LVx0XHRkYXRhLVx1MDAzZXRpbWVvdXRfbnMgPSAxMDAwMDAwMDAwO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTE0LVx0LypcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMTU6XHQgKiBzZGlvX3Jlc2V0IHNlbmRzIENNRDUyIHRvIHJlc2V0IGNhcmQuICBTaW5jZSB3ZSBkbyBub3Qga25vd1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cdCAqIGlmIHRoZSBjYXJkIGlzIGJlaW5nIHJlLWluaXRpYWxpemVkLCBqdXN0IHNlbmQgaXQuICBDTUQ1MlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMjE6XHRcdHNkaW9fcmVzZXQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMTIyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIxMzQ6XHRcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEzNS1cdFx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNC1cbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2J1cygpO1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjQwNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjQxOD1zdGF0aWMgdm9pZCBfX2V4aXQgbW1jX2V4aXQodm9pZClcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6MjQyMDpcdHNkaW9fdW5yZWdpc3Rlcl9idXMoKTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXHRtbWNfdW5yZWdpc3Rlcl9ob3N0X2NsYXNzKCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oOjg4OmludCBtbWNfYXR0YWNoX3NkaW8oc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5oLTg5LWludCBtbWNfYXR0YWNoX3NkX3VoczIoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0yOS0jaW5jbHVkZSBcJiMzNDtwd3JzZXEuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6MzA6I2luY2x1ZGUgXCYjMzQ7c2Rpb19vcHMuaFwmIzM0O1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzEtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM2Ny1cdFx0aG9zdC1cdTAwM2VjYXBzIHw9IE1NQ19DQVBfSFdfUkVTRVQ7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XHRpZiAoZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwmIzM0O2NhcC1zZGlvLWlycVwmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zNjktXHRcdGhvc3QtXHUwMDNlY2FwcyB8PSBNTUNfQ0FQX1NESU9fSVJRO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cdFx0aG9zdC1cdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjM5NDpcdGlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7bm8tc2Rpb1wmIzM0OykpXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy0zOTUtXHRcdGhvc3QtXHUwMDNlY2FwczIgfD0gTU1DX0NBUDJfTk9fU0RJTztcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz01MTI9c3RydWN0IG1tY19ob3N0ICptbWNfYWxsb2NfaG9zdChpbnQgZXh0cmEsIHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZob3N0LVx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo1NTk6XHRJTklUX1dPUksoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrLCBzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTU2MC1cdHRpbWVyX3NldHVwKFx1MDAyNmhvc3QtXHUwMDNlcmV0dW5lX3RpbWVyLCBtbWNfcmV0dW5lX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYz02MTA9c3RhdGljIGludCBtbWNfdmFsaWRhdGVfaG9zdF9jYXBzKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbi0tXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTU6XHRpZiAoY2FwcyBcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcdTAwMjZcdTAwMjYgIWhvc3QtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZV9zZGlvX2lycSkge1xuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE2Olx0XHRkZXZfd2FybihkZXYsIFwmIzM0O21pc3NpbmcgLVx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcblwmIzM0Oyk7XG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoxNDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFx1MDAzZVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xNS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oPTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBtbWNfZXh0X2NzZF9maXh1cHNbXSA9IHtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmg6MTg5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xOTAtXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE2LVxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTgtXHRTRElPX0ZJWFVQX0NPTVBBVElCTEUoXCYjMzQ7dGksd2wxMjUxXCYjMzQ7LCB3bDEyNTFfcXVpcmssIDApLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcJiMzNDsldS4ldVxcblwmIzM0OywgY2FyZC1cdTAwM2VtYWpvcl9yZXYsIGNhcmQtXHUwMDNlbWlub3JfcmV2KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NDktXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzUwOiNkZWZpbmUgc2Rpb19pbmZvX2F0dHIobnVtKVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzUxLXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM9NzYxPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzYyLVxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjQ6c2Rpb19pbmZvX2F0dHIoMik7XG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY1OnNkaW9faW5mb19hdHRyKDMpO1xuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjctXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzogKiAgbGludXgvZHJpdmVycy9tbWMvc2Rpby5jXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00LSAqXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbW1jL21tYy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpby5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjojaW5jbHVkZSBcdTAwM2NsaW51eC9tbWMvc2Rpb19mdW5jLmhcdTAwM2VcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYy9zZGlvX2lkcy5oXHUwMDNlXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcJiMzNDtzZC5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcJiMzNDtzZGlvX2J1cy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcJiMzNDttbWNfb3BzLmhcJiMzNDtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFwmIzM0O3NkX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcJiMzNDtzZGlvX29wcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcJiMzNDtzZGlvX2Npcy5oXCYjMzQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz0zNT1NTUNfREVWX0FUVFIocmNhLCBcJiMzNDsweCUwNHhcXG5cJiMzNDssIGNhcmQtXHUwMDNlcmNhKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVx0XFxcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYz00OD1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDpzZGlvX2luZm9fYXR0cigxKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOnNkaW9faW5mb19hdHRyKDIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MzpzZGlvX2luZm9fYXR0cig0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01Ni1cdFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY2LX07XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY4LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Njk6c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSBzZGlvX3R5cGUgPSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcdC5ncm91cHMgPSBzZGlvX3N0ZF9ncm91cHMsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MS19O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MzpzdGF0aWMgaW50IHNkaW9fcmVhZF9mYnIoc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTc0LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDM6c3RhdGljIGludCBzZGlvX2luaXRfZnVuYyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBmbilcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUtXHRpbnQgcmV0O1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2Olx0c3RydWN0IHNkaW9fZnVuYyAqZnVuYztcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNy1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE6XHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyLVx0aWYgKElTX0VSUihmdW5jKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTctXHRpZiAoIShjYXJkLVx1MDAzZXF1aXJrcyBcdTAwMjYgTU1DX1FVSVJLX05PTlNURF9TRElPKSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4Olx0XHRyZXQgPSBzZGlvX3JlYWRfZmJyKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE5LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEyMjpcdFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTIzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzMC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcdGNhcmQtXHUwMDNlc2Rpb19mdW5jW2ZuIC0gMV0gPSBmdW5jO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEzOS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQwOlx0c2Rpb19yZW1vdmVfZnVuYyhmdW5jKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTQ0OnN0YXRpYyBpbnQgc2Rpb19yZWFkX2NjY3Ioc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgb2NyKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQ1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNjQ6XHRjYXJkLVx1MDAzZWNjY3Iuc2Rpb192c24gPSAoZGF0YSBcdTAwMjYgMHhmMCkgXHUwMDNlXHUwMDNlIDQ7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNjUtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjYwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MjYxOnN0YXRpYyBpbnQgc2Rpb19lbmFibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI5My0gKiBvZiB0aGUgY2FyZC4gVGhpcyBtYXkgYmUgcmVxdWlyZWQgb24gY2VydGFpbiBzZXR1cHMgb2YgYm9hcmRzLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCYjMzk7c1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yOTYtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTc6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfY2Qoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMTkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM0ODpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1MS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM1MjpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzUzLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjUtb3V0OlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2Olx0cmV0dXJuIHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY3LX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjktXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNzA6c3RhdGljIGludCBzZGlvX2VuYWJsZV80Yml0X2J1cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcdGVyciA9IHNkaW9fZW5hYmxlX3dpZGUoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzUtXHRpZiAoZXJyIFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3Ni1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NzpcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc4LVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zODItXHRcdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM4MzpcdFx0XHRzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cdFx0XHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM5Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zOTgte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQyNzpzdGF0aWMgaW50IHNkaW9fZW5hYmxlX2hzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyOC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDMwLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMxOlx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDMyOlx0aWYgKHJldCBcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMy1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzYtXHRpZiAocmV0IFx1MDAzYz0gMClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzNzpcdFx0bW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIGZhbHNlKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzOC1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NDEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NDI6c3RhdGljIHVuc2lnbmVkIG1tY19zZGlvX2dldF9tYXhfY2xvY2soc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00NjUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDY3LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0ODI6c3RhdGljIHZvaWQgc2Rpb19zZWxlY3RfZHJpdmVyX3R5cGUoc3RydWN0IG1tY19jYXJkICpjYXJkKVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDgzLXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01MDMtXHRcdGNhcmRfc3RyZW5ndGggXHUwMDI2PSB+KFNESU9fRFJJVkVfRFRTeF9NQVNLXHUwMDNjXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUwNDpcdFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTA1LVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjUxOTpzdGF0aWMgaW50IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUyMC17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTkyLSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTkzOnN0YXRpYyBpbnQgbW1jX3NkaW9faW5pdF91aHNfY2FyZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwMC1cdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwMTpcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXHQvKiBTZXQgdGhlIGRyaXZlciBzdHJlbmd0aCBmb3IgdGhlIGNhcmQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYwNjpcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjA4LVx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDk6XHRlcnIgPSBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjI1OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX2luaXQoc3RydWN0IG1tY19ob3N0ICpob3N0LCB1MzIgb2NyLFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI2LVx0XHRcdCAgICAgc3RydWN0IG1tY19jYXJkICpjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzMi1cdCAqIFJlc2V0IHRoZSBjYXJkIGJ5IHBlcmZvcm1pbmcgdGhlIHNhbWUgc3RlcHMgdGhhdCBhcmUgdGFrZW4gYnlcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcdCAqIG1tY19yZXNjYW5fdHJ5X2ZyZXEoKSBhbmQgbW1jX2F0dGFjaF9zZGlvKCkgZHVyaW5nIGEgXCYjMzQ7bm9ybWFsXCYjMzQ7IHByb2JlLlxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM0LVx0ICpcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcdCAqIHNkaW9fcmVzZXQoKSBpcyB0ZWNobmljYWxseSBub3QgbmVlZGVkLiBIYXZpbmcganVzdCBwb3dlcmVkIHVwIHRoZVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjM2LVx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ3LVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY0OS1cdG1tY19nb19pZGxlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY1OS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NjEtXHRcdFx0ICAgICAgc3RydWN0IG1tY19jYXJkICpvbGRjYXJkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzAwOlx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFx1MDAyNnNkaW9fdHlwZSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MDEtXHRpZiAoSVNfRVJSKGNhcmQpKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcdFx0aWYgKG9sZGNhcmQgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9zZGlvKG9sZGNhcmQpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MTctXHRcdFx0ZXJyID0gLUVOT0VOVDtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjYtXHRcdGhvc3QtXHUwMDNlb3BzLVx1MDAzZWluaXRfY2FyZChob3N0LCBjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19jYXJkX2luaXRfbWV0aG9kcyk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03MjgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzM4LVx0ICogZmFpbHMgdG8gY2hlY2sgcm9jciBcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM5Olx0ICogdHJ5IHRvIGluaXQgdWhzIGNhcmQuIHNkaW9fcmVhZF9jY2NyIHdpbGwgdGFrZSBvdmVyIHRoaXMgdGFza1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVx0ICogdG8gbWFrZSBzdXJlIHdoaWNoIHNwZWVkIG1vZGUgc2hvdWxkIHdvcmsuXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVx0XHRpZiAoZXJyID09IC1FQUdBSU4pIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcdFx0XHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy03NDYtXHRcdFx0cmV0cmllcy0tO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODE1Olx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNi1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcdFx0bW1jX3NkaW9fcHJlX2luaXQoaG9zdCwgb2NyX2NhcmQsIGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVx0XHRpZiAob2NyIFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgyOC1cdCAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODI5Olx0ZXJyID0gc2Rpb19yZWFkX2NvbW1vbl9jaXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg0NDpcdG1tY19maXh1cF9kZXZpY2UoY2FyZCwgc2Rpb19maXh1cF9tZXRob2RzKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NjEtXHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg2MjpcdGVyciA9IHNkaW9fZGlzYWJsZV9jZChjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVx0aWYgKChvY3IgXHUwMDI2IFI0XzE4Vl9QUkVTRU5UKSBcdTAwMjZcdTAwMjYgY2FyZC1cdTAwM2Vzd19jYXBzLnNkM19idXNfbW9kZSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5Olx0XHRlcnIgPSBtbWNfc2Rpb19pbml0X3Voc19jYXJkKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3NS1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NzY6XHRcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODc3LVx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cdFx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XHRcdG1tY19zZXRfY2xvY2soaG9zdCwgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhjYXJkKSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODg5LVx0XHQgKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjg5MDpcdFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04OTEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTE0OnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVpbml0X2NhcmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE1LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTctXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MTg6XHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBOVUxMKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTIyOlx0cmV0dXJuIG1tY19zZGlvX2luaXRfY2FyZChob3N0LCBob3N0LVx1MDAzZWNhcmQtXHUwMDNlb2NyLCBob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MjctICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMyOlx0Zm9yIChpID0gMDtpIFx1MDAzYyBob3N0LVx1MDAzZWNhcmQtXHUwMDNlc2Rpb19mdW5jcztpJiM0MzsmIzQzOykge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTMzOlx0XHRpZiAoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSkge1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0Olx0XHRcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XHRcdFx0aG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXSA9IE5VTEw7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXHRcdH1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDUtICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5NDY6c3RhdGljIGludCBtbWNfc2Rpb19hbGl2ZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1Ny0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5OTQ6XHRcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk5NS1cbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDA3LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAwODpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMTEtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlx0XHRzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jID0gaG9zdC1cdTAwM2VjYXJkLVx1MDAzZXNkaW9fZnVuY1tpXTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMTQ6XHRcdGlmIChmdW5jIFx1MDAyNlx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcdTAwMjZcdTAwMjYgZnVuYy1cdTAwM2VkZXYuZHJpdmVyKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDE1LVx0XHRcdGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbW9wcyA9IGZ1bmMtXHUwMDNlZGV2LmRyaXZlci1cdTAwM2VwbTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDMyLVx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzM6XHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVx0bW1jX2NsYWltX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNDY6c3RhdGljIGludCBtbWNfc2Rpb19zdXNwZW5kKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDcte1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcdFdBUk5fT04oaG9zdC1cdTAwM2VzZGlvX2lycXMgXHUwMDI2XHUwMDI2ICFtbWNfY2FyZF9rZWVwX3Bvd2VyKGhvc3QpKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNDktXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1MS1cdG1tY19jYXJkX3NldF9zdXNwZW5kZWQoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTI6XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmhvc3QtXHUwMDNlc2Rpb19pcnFfd29yayk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDUzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTUtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU2Olx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXHUwMDI2XHUwMDI2IG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3Olx0XHRzZGlvX2Rpc2FibGVfNGJpdF9idXMoaG9zdC1cdTAwM2VjYXJkKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTgtXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNzE6c3RhdGljIGludCBtbWNfc2Rpb19yZXN1bWUoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3Mi17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA5NS1cdFx0fVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NjpcdFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDk3Olx0fSBlbHNlIGlmIChtbWNfY2FyZF93YWtlX3NkaW9faXJxKGhvc3QpKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMDMtXHRcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTA0Olx0XHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVx1MDAzZWNhcmQpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwNS1cdFx0bW1jX3JldHVuZV9yZWxlYXNlKGhvc3QpO1xuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE0Olx0aWYgKGhvc3QtXHUwMDNlc2Rpb19pcnFzKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE1LVx0XHRpZiAoIShob3N0LVx1MDAzZWNhcHMyIFx1MDAyNiBNTUNfQ0FQMl9TRElPX0lSUV9OT1RIUkVBRCkpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2Olx0XHRcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVx1MDAzZXNkaW9faXJxX3RocmVhZCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE3LVx0XHRlbHNlIGlmIChob3N0LVx1MDAzZWNhcHMgXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE4Olx0XHRcdHNjaGVkdWxlX3dvcmsoXHUwMDI2aG9zdC1cdTAwM2VzZGlvX2lycV93b3JrKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTktXHR9XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMjg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzNy1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM5LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVx0bW1jX3Bvd2VyX3VwKGhvc3QsIGhvc3QtXHUwMDNlY2FyZC1cdTAwM2VvY3IpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE0NTpcdHJldCA9IG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cdG1tY19yZWxlYXNlX2hvc3QoaG9zdCk7XG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNTc6c3RhdGljIGludCBtbWNfc2Rpb19od19yZXNldChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTU4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY1LVx0ICovXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2Olx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFx1MDAzZSAxKSB7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTY3LVx0XHRpZiAobW1jX2NhcmRfcmVtb3ZlZChjYXJkKSlcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVx0bW1jX3Bvd2VyX2N5Y2xlKGhvc3QsIGNhcmQtXHUwMDNlb2NyKTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XHRyZXR1cm4gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTgxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTgzOnN0YXRpYyBpbnQgbW1jX3NkaW9fc3dfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4NC17XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVx0bW1jX3NldF9jbG9jayhob3N0LCBob3N0LVx1MDAzZWZfaW5pdCk7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2Olx0c2Rpb19yZXNldChob3N0KTtcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODctXHRtbWNfZ29faWRsZShob3N0KTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMYW5kc2NhcGUgb2YgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEVtdWxhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGBtd2lmaWV4L3NkaW8uY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIGl0IHN1cHBvcnRzLiBTaW5jZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgTU1DIFNESU8gc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBDYW4gSSBpbnN0YW50aWF0ZSB0aGVzZSBTRElPIGRldmljZXMgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8KClRoZSBjb3JlIHF1ZXN0aW9uIHF1aWNrbHkgYm9pbHMgZG93biB0byBRRU1VJiMzOTtzIGNhcGFiaWxpdGllcy4gTXkgY3VycmVudCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgd2hpbGUgUUVNVSBkb2VzIGEgZ29vZCBqb2Igd2l0aCBTRCBjYXJkIGVtdWxhdGlvbiBmb3Igc3RvcmFnZSB1c2luZyBTREhDSS9NTUMsIGl0IGRvZXNuJiMzOTt0IGV4dGVuZCB0aGlzIHRvIFNESU8gV2lGaSBjYXJkcywgYW5kIGNlcnRhaW5seSBub3QgdGhlIHNwZWNpZmljIE1hcnZlbGwgbW9kZWxzIChTRDg3ODYsIDg3ODcsIDg3OTcsIGFuZCB0aGUgcmVzdCkuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBpZiB0aGUgTGludXgga2VybmVsIG9mZmVycyBhbnkgKnNvZnR3YXJlKiBlbXVsYXRpb24gZm9yIGVpdGhlciBTRElPIFdpRmkgaW4gZ2VuZXJhbCwgb3IgdGhlIGBtd2lmaWV4YCBkcml2ZXIgc3BlY2lmaWNhbGx5LiBJIGtub3cgYG13aWZpZXhgIGhhcyBzdXBwb3J0IGZvciBQQ0llLCBTRElPLCBhbmQgVVNCLiBTbywgbGV04oCZcyBnbyBkZWVwZXIuCgpMb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYCwgSSBzZWU6CgoqICAgYHBjaWUuY2A6IFRoaXMgcmVxdWlyZXMgYWN0dWFsIFBDSWUgaGFyZHdhcmUsIHNvIHRoYXQmIzM5O3Mgb3V0LgoqICAgYHNkaW8uY2A6IE9idmlvdXNseSwgaXQgd2FudHMgU0RJTyBoYXJkd2FyZS4KKiAgIGB1c2IuY2A6IFRoaXMgaXMgaW50ZXJlc3RpbmcuIFVTQiAqY291bGQqIGJlIGVtdWxhdGVkIGluIHRoZW9yeSwgcHJvdmlkZWQgdGhlIFVTQiBkZXNjcmlwdG9yIGlzIGNvcnJlY3QuIEJ1dCwgdGhlIGZhY3QgdGhhdCBgdXNiLmNgIGFuZCBgc2Rpby5jYCBhcmUgc2VwYXJhdGUgaXMgbm90ZXdvcnRoeSwgZXZlbiB0aG91Z2ggSSYjMzk7ZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3aXRoaW4gdGhlIFVTQiBzeXN0ZW0uCgpOb3csIHRoYXQgSSB0aGluayBhYm91dCBpdCwgd2hhdCBhYm91dCBgbXdpZmlleF9zZGlvX2Z3X2R1bXBgPyBJdOKAmXMgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNgLiBUaGlzIGlzIGFub3RoZXIgY2x1ZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHNkaW8uY2AgaXMgZXhjbHVzaXZlbHkgdGllZCB0byBTRElPIGhhcmR3YXJlLCBvciBpZiBjZXJ0YWluIGFzcGVjdHMgbWlnaHQgYmUgYXBwbGljYWJsZSBpbiBhIG1vcmUgZ2VuZXJhbGl6ZWQgdGVzdGluZyBvciBlbXVsYXRlZCBzY2VuYXJpby4gVGhlIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBuZXh0IHBsYWNlIHRvIGxvb2sgZm9yIHRoYXQgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1XSUZJRVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbXdpZmlleC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVdJRklFWF9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAxOTpcdFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXG4gIDIwOlx0XHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG13aWZpZXhfc2Rpby5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTVdJRklFWF9QQ0lFXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFBDSVxuICAyODpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyOTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ0NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nJiMzOTtzIG9mZiB3aXRoIHRoZSBgbXdpZmlleF9zZGlvYCBpbml0aWFsaXphdGlvbiBvciBwcm9iZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jYCBmaWxlIOKAkyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciAqc2hvdWxkKiBoYXBwZW4sIGZvciB0aGUgU0RJTyBpbnRlcmZhY2UuIEkmIzM5O2xsIGZvY3VzIHBhcnRpY3VsYXJseSBvbiB0aGUgcHJvYmUgZnVuY3Rpb24gYW5kIHRoZSBkZXZpY2UgSUQgdGFibGUuIFRoYXQgdGFibGUgc2hvdWxkIGdpdmUgbWUgdGhlIGtleSBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiB0byB2ZXJpZnkgdGhlIGNvcnJlY3QgZGV2aWNlIGlzIGJlaW5nIGxvYWRlZCBhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIHdpbGwgcmV2ZWFsIHRoZSBzdGVwcyBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZGV2aWNlIElEcyBtYXRjaCB0aGUgZGV2aWNlcyBvbiBoYW5kIGFuZCB0aGF0IHRoZSBpbml0IHByb2Nlc3MgaXMgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCBjbHVlcyB0aGlzIGNvZGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9NTUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6NTUxOm13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy01NTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9OTQ0PXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy05NTUtLyogV0xBTiBJRHMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6OTU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgbXdpZmlleF9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtOTU3LVx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX01BUlZFTEwsIFNESU9fREVWSUNFX0lEX01BUlZFTExfODc4Nl9XTEFOKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMjQKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogNjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IGBtd2lmaWV4X3NkaW9fZndfZHVtcCgpYCBpcyBVbmZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYG13aWZpZXhfc2Rpb19wcm9iZWAgb24gbXkgcmFkYXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBNYXJ2ZWxsIFNESU8gV2lGaSBjYXJkcywgcmlnaHQ/IFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBJIGNhbiBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgY29kZSB3aXRoIHN5emthbGxlciBvciB3aXRoaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW1tZWRpYXRlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSwgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBldGMuLCB0aGV5IGRvbiYjMzk7dCBoYXZlIHBoeXNpY2FsIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIG9yIHByb3BlciBlbXVsYXRpb24uIFRoZXkmIzM5O3JlIGp1c3Qgbm90IHNldCB1cCBmb3IgdGhhdCBsZXZlbCBvZiBoYXJkd2FyZSBpbnRlcmFjdGlvbi4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGNhcmVmdWxseSBhcHBseSB0aGUgY3JpdGVyaWEgZm9yIGZ1enphYmlsaXR5LiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogKndoZW4gdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSogKG5lZ2F0aXZlIGNyaXRlcmlhKS4gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBpcyB0aGUgY3JpdGljYWwgcGhyYXNlLiBUaGV5IGdpdmUgdGhlIGV4YW1wbGVzLCBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgc3R1ZmYgdGhhdCBuZWVkcyBhY3R1YWwgc2lsaWNvbi4gQW5kIHRoaXMgYG13aWZpZXgvc2Rpby5jYCBpcyBkZWZpbml0ZWx5IGluIHRoYXQgY2F0ZWdvcnkuIEl0JiMzOTtzIHRoZSBTRElPIGludGVyZmFjZSBkcml2ZXIgZm9yIHRob3NlIE1hcnZlbGwgV2lGaSBjaGlwcyAoU0Q4Nzg2LCBTRDg3ODcsIGV0Yy4pLiBJdCAqbmVlZHMqIGEgcGh5c2ljYWwgU0RJTy9NTUMgaG9zdCBjb250cm9sbGVyIGFuZCBhIHBoeXNpY2FsIE1hcnZlbGwgV2lGaSBjaGlwIHRvIGZ1bmN0aW9uLgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIHJlYWNoYWJsZSBjb2RlIHZpYSB2aXJ0dWFsIGJ1c2VzIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0LCBldGMuIFRoaXMgZG9lc24mIzM5O3QgYXBwbHkgaGVyZS4gU0RJTyBpcyBub3QgYSB2aXJ0dWFsIGJ1cy4gSXQmIzM5O3MgYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2UuIFNvLCBiZWNhdXNlIHRoZSBtb2RpZmllZCBjb2RlLCBpbmNsdWRpbmcgYG13aWZpZXhfc2Rpb19md19kdW1wKClgLCByZXF1aXJlcyBhY3R1YWwgU0RJTyBoYXJkd2FyZSwgYW5kIHRoYXQgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEl0JiMzOTtzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSByZWFzb25pbmcgYW5kIHRoZSBwYXJhbWV0ZXJzOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAsIGFuZCwgZm9yIHRoZSBFbmFibGVDb25maWdzIGFuZCBGb2N1c1N5bWJvbHMsIHRoZXNlIHdpbGwgYmUgbnVsbCBvciBlbXB0eSBsaXN0IGJlY2F1c2UgdGhlIGRyaXZlciBpc24mIzM5O3QgYWNjZXNzaWJsZSBpbiB0aGlzIGNvbnRleHQuIEV2ZXJ5dGhpbmcgc2VlbXMgdG8gYmUgaW4gb3JkZXIuIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGluIG13aWZpZXhfc2Rpb19md19kdW1wKCkgd2l0aGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMuIFRoaXMgZHJpdmVyIGlzIGZvciBNYXJ2ZWxsIFNESU8gd2lyZWxlc3MgY2hpcHMsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjE4LjE5MDk1NjA1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzEwNDUzMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjE4LjE5MDk2MjczMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwNTEzNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzlkZTM5M2M2YTVlYzQ2NTk1ZWY4YTY4Y2RiZmRjMTU0MzU3ZjY5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXFxuaW5kZXggZjAzOWQ2ZjE5MTgzYS4uZTQwY2E0MDQxOGIzMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xcbkBAIC0yNzk1LDYgKzI3OTUsMTEgQEAgc3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2Z3X2R1bXAoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJTRElPIHJlYWQgbWVtb3J5IGxlbmd0aCBlcnJcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4rXFx0aWYgKGR1bXBfbnVtIFxcdTAwM2UgQVJSQVlfU0laRShtZW1fdHlwZV9tYXBwaW5nX3RibCkpIHtcXG4rXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBmdyBkdW1wIG51bTogJWRcXFxcblxcXCIsIGR1bXBfbnVtKTtcXG4rXFx0XFx0Z290byBkb25lO1xcbitcXHR9XFxuIFxcbiBcXHQvKiBSZWFkIHRoZSBsZW5ndGggb2YgZXZlcnkgbWVtb3J5IHdoaWNoIHdpbGwgZHVtcCAqL1xcbiBcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGR1bXBfbnVtOyBpZHgrKykge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoxOC43NDQ0MjgxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzAxNTY5Njg5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM5ZGUzOTNjNmE1ZWM0NjU5NWVmOGE2OGNkYmZkYzE1NDM1N2Y2OTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDAwOjUzOjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbmluZGV4IGYwMzlkNmYxOTE4M2EuLmU0MGNhNDA0MThiMzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5AQCAtMjc5NSw2ICsyNzk1LDExIEBAIHN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIlNESU8gcmVhZCBtZW1vcnkgbGVuZ3RoIGVyclxcblwiKTtcbiBcdFx0Z290byBkb25lO1xuIFx0fVxuK1x0aWYgKGR1bXBfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKG1lbV90eXBlX21hcHBpbmdfdGJsKSkge1xuK1x0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbitcdFx0XHQgICAgXCJJbnZhbGlkIGZ3IGR1bXAgbnVtOiAlZFxcblwiLCBkdW1wX251bSk7XG4rXHRcdGdvdG8gZG9uZTtcbitcdH1cbiBcbiBcdC8qIFJlYWQgdGhlIGxlbmd0aCBvZiBldmVyeSBtZW1vcnkgd2hpY2ggd2lsbCBkdW1wICovXG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZHVtcF9udW07IGlkeCsrKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoxOC43NDQ0MzEwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3ODU4Nzg5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCB3aGV0aGVyIGl0IHByZXNlbnRzIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4gSSBzZWUgaXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFdpcmVsZXNzIGRyaXZlcnMgb2Z0ZW4gaGF2ZSBqdWljeSBiaXRzIGZvciBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byB2ZXJpZnkuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDI3OTUgaW4gdGhhdCBmaWxlLiBJJ2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBhIHF1aWNrIGBncmVwcGVyYCBjb21tYW5kIHRvIGdldCB0aGF0IHNwZWNpZmljIHNlY3Rpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhlbiBJIGNhbiBjaGVjayB0aGUgYXNzb2NpYXRlZCBLY29uZmlnIHRvIHNlZSBpZiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25hbGl0eSBpcyBldmVuIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBlYXNpbHkgY29uZmlndXJlZC4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhYmlsaXR5IGlzIGtleTsgaWYgaXQncyB0b28gb2JzY3VyZSwgaXQgbWlnaHQgbm90IGJlIHdvcnRoIHRoZSBlZmZvcnQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCB0byB0cnkgYW5kIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDksIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjI0LjUzMDMxMzI4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMjQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3ODUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI3ODU6XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgTVNHLCBcXFwiPT0gbXdpZmlleCBmaXJtd2FyZSBkdW1wIHN0YXJ0ID09XFxcXG5cXFwiKTtcXG4yNzg2OlxcdFxcbjI3ODc6XFx0XFx0c3RhdCA9IG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKGFkYXB0ZXIsIGRvbmVmbGFnKTtcXG4yNzg4OlxcdFxcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXFxuMjc4OTpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuMjc5MDpcXHRcXG4yNzkxOlxcdFxcdHJlZyA9IGNhcmQtXFx1MDAzZXJlZy1cXHUwMDNlZndfZHVtcF9zdGFydDtcXG4yNzkyOlxcdFxcdC8qIFJlYWQgdGhlIG51bWJlciBvZiB0aGUgbWVtb3JpZXMgd2hpY2ggd2lsbCBkdW1wICovXFxuMjc5MzpcXHRcXHRkdW1wX251bSA9IHNkaW9fcmVhZGIoY2FyZC1cXHUwMDNlZnVuYywgcmVnLCBcXHUwMDI2cmV0KTtcXG4yNzk0OlxcdFxcdGlmIChyZXQpIHtcXG4yNzk1OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiU0RJTyByZWFkIG1lbW9yeSBsZW5ndGggZXJyXFxcXG5cXFwiKTtcXG4yNzk2OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yNzk3OlxcdFxcdH1cXG4yNzk4OlxcdFxcdGlmIChkdW1wX251bSBcXHUwMDNlIEFSUkFZX1NJWkUobWVtX3R5cGVfbWFwcGluZ190YmwpKSB7XFxuMjc5OTpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4yODAwOlxcdFxcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBmdyBkdW1wIG51bTogJWRcXFxcblxcXCIsIGR1bXBfbnVtKTtcXG4yODAxOlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yODAyOlxcdFxcdH1cXG4yODAzOlxcdFxcbjI4MDQ6XFx0XFx0LyogUmVhZCB0aGUgbGVuZ3RoIG9mIGV2ZXJ5IG1lbW9yeSB3aGljaCB3aWxsIGR1bXAgKi9cXG4yODA1OlxcdFxcdGZvciAoaWR4ID0gMDsgaWR4IFxcdTAwM2MgZHVtcF9udW07IGlkeCsrKSB7XFxuMjgwNjpcXHRcXHRcXHRzdHJ1Y3QgbWVtb3J5X3R5cGVfbWFwcGluZyAqZW50cnkgPSBcXHUwMDI2bWVtX3R5cGVfbWFwcGluZ190YmxbaWR4XTtcXG4yODA3OlxcdFxcbjI4MDg6XFx0XFx0XFx0c3RhdCA9IG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKGFkYXB0ZXIsIGRvbmVmbGFnKTtcXG4yODA5OlxcdFxcdFxcdGlmIChzdGF0ID09IFJEV1JfU1RBVFVTX0ZBSUxVUkUpXFxuMjgxMDpcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuMjgxMTpcXHRcXG4yODEyOlxcdFxcdFxcdG1lbW9yeV9zaXplID0gMDtcXG4yODEzOlxcdFxcdFxcdHJlZyA9IGNhcmQtXFx1MDAzZXJlZy1cXHUwMDNlZndfZHVtcF9zdGFydDtcXG4yODE0OlxcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyA0OyBpKyspIHtcXG4yODE1OlxcdFxcdFxcdFxcdHJlYWRfcmVnID0gc2Rpb19yZWFkYihjYXJkLVxcdTAwM2VmdW5jLCByZWcsIFxcdTAwMjZyZXQpO1xcbjI4MTY6XFx0XFx0XFx0XFx0aWYgKHJldCkge1xcbjI4MTc6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJTRElPIHJlYWQgZXJyXFxcXG5cXFwiKTtcXG4yODE4OlxcdFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4yODE5OlxcdFxcdFxcdFxcdH1cXG4yODIwOlxcdFxcdFxcdFxcdG1lbW9yeV9zaXplIHw9IChyZWFkX3JlZyBcXHUwMDNjXFx1MDAzYyBpKjgpO1xcbjI4MjE6XFx0XFx0XFx0XFx0cmVnKys7XFxuMjgyMjpcXHRcXHRcXHR9XFxuMjgyMzpcXHRcXG4yODI0OlxcdFxcdFxcdGlmIChtZW1vcnlfc2l6ZSA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjI0LjUzMDYyNzg2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTYzMjk5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWF9TRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0yPWNvbmZpZyBNV0lGSUVYXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzoyNC42MDIyNzE4OTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzM2MjE4NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlNESU8gRGV2aWNlIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBtd2lmaWV4X3NkaW9gIGRyaXZlciBhY3R1YWxseSBnZXRzIHByb2JlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGV2ZW4gKnJlYWNoKiBTRElPIGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhlIFNESU8gYnVzIGFjdHVhbGx5IGVtdWxhdGVkIGluIHNvbWV0aGluZyBsaWtlIFFFTVUsIG9yIGFyZSB3ZSByZWxpYW50IG9uIGEgVVNCL3ZpcnRpby1zdHlsZSB3b3JrYXJvdW5kPyBPciBhcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHBpZWNlIG9mIHBoeXNpY2FsIGhhcmR3YXJlP1xuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGV4aXN0aW5nIFNESU8gZHJpdmVycyBpbiBMaW51eC4gVGhlbiBJIHdpbGwgZGV0ZXJtaW5lIGlmIFN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gZnV6eiBTRElPIGRldmljZXMuXG5cbkhvbGQgb24sIGRvZXMgU3l6a2FsbGVyLCBvciBmb3IgdGhhdCBtYXR0ZXIgc3RhbmRhcmQgUUVNVSwgZXZlbiBoYXZlIHN1cHBvcnQgZm9yIFNESU8gV2lGaSBkZXZpY2VzLCBwYXJ0aWN1bGFybHkgYG13aWZpZXhfc2Rpb2A/XG5cbkkgYWxzbyBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZ1bmRhbWVudGFsIG5hdHVyZSBvZiB0aGUgU0RJTyBidXMgaXRzZWxmLiBJcyB0aGVyZSBzb21lIGtpbmQgb2YgdmlydHVhbCBTRElPIGJ1cyBhYnN0cmFjdGlvbiwgb3IgYW0gSSBkZWFsaW5nIHdpdGggZGlyZWN0IHBoeXNpY2FsIGhhcmR3YXJlP1xuXG5GaW5hbGx5LCBsZXQncyBoaXQgdGhlIFN5emthbGxlciBhbmQga2VybmVsIHNvdXJjZXMuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgZXZpZGVuY2Ugb2YgU0RJTyBlbXVsYXRpb24sIHRoYXQgaXMsIGlmIGl0J3MgdGhlcmUsIHRoZW4gd2hlcmUgaXMgaXQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MjcuMzM4NDk0NTE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg4Njc0MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb19yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDYte1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmM6MTc0NzpcXHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmJ0X21ydmxfc2RpbykgIT0gMCkge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0OC1cXHRcXHRCVF9FUlIoXFxcIlNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbiBGYWlsZWRcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYz0yNzQ9c3RhdGljIHZvaWQgc2Rpb19sZWdhY3lfc2h1dGRvd24oc3RydWN0IHNkaW9fZnVuYyAqZnVuYylcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODItLyoqXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4MzogKlxcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODQtICpcXHRAZHJ2OiBTRElPIGZ1bmN0aW9uIGRyaXZlclxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM6Mjg3OmludCBfX3NkaW9fcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBzZGlvX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0zMDEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTMwMy1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2c2Rpb191YXJ0X2RyaXZlcik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jOjE5NzpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmI0M19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jPTEyNzE9aW50IGJyY21mX3NkaW9fcmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtMTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XFx0cmV0dXJuIHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZicmNtZl9zZG1tY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jPTEzOTA9c3RhdGljIGludCBfX2luaXQgaWZfc2Rpb19pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmMtMTM5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYzoxMzk3OlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZpZl9zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmMtMTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTQ5Mz1zdGF0aWMgaW50IF9faW5pdCB3ZnhfY29yZV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MDItXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01NQykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYzo1MDM6XFx0XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNndmeF9zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTA0LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvY3cxMjAwX3NkaW8uYz0zODg9c3RhdGljIGludCBfX2luaXQgY3cxMjAwX3NkaW9faW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jOjQwMTpcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2c2Rpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jLTQwMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM9NDUzPXN0YXRpYyBpbnQgX19pbml0IHJ0d19kcnZfZW50cnkodm9pZClcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTQte1xcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnJ0bDg3MjNic19zZGlvX2RyaXZlcik7XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MjguOTc3MzcyNTQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0ODQ5MjE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgZnVuY3Rpb24uIElzIGl0IGEgcmVndWxhciBwYXJ0IG9mIGluaXRpYWxpemF0aW9uPyBEb2VzIGl0IG9jY3VyIGR1cmluZyBhbiBlcnJvciBjb25kaXRpb24/IE9yIGlzIGl0IHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBoYXJkd2FyZSBjb25maWd1cmF0aW9uIG9yIGZpcm13YXJlIHZlcnNpb24/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlcmUncyB1c3VhbGx5IGEgcmVhc29uIGZvciB0aGVzZSBmaXJtd2FyZSBkdW1wIGZ1bmN0aW9ucywgc28gZmluZGluZyB0aGUgY2F1c2UgaXMgY3JpdGljYWwgdG8gZGVidWdnaW5nLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxzLCBleGFtaW5lIHRoZSBhcmd1bWVudHMgcGFzc2VkLCBhbmQgZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSXQncyBhIGJyZWFkY3J1bWIgaHVudDsgd2hlcmUgZG9lcyB0aGlzIGZ1bmN0aW9uIGxpdmUgaW4gdGhlIGdyZWF0ZXIgcGljdHVyZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NjAxNiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjMxLjEyNTg2NzcxNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk1MjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NkaW9fZndfZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0yNzE0PXJkd3Jfc3RhdHVzIG13aWZpZXhfc2Rpb19yZHdyX2Zpcm13YXJlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTI3NTktLyogVGhpcyBmdW5jdGlvbiBkdW1wIGZpcm13YXJlIG1lbW9yeSB0byBmaWxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoyNzYwOnN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yNzYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MzAwMj1zdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE2LVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjMwMTc6XFx0XFx0bXdpZmlleF9zZGlvX2Z3X2R1bXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDE4LVxcdG13aWZpZXhfcHJlcGFyZV9md19kdW1wX2luZm8oYWRhcHRlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjMxLjE5OTgzNjk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MDkwNDg0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgYG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29ya2AgZnVuY3Rpb24uIE15IGluaXRpYWwgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGl0cyBleGVjdXRpb24gZmxvdy4gRXNzZW50aWFsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgaXQncyBiZWluZyBpbnZva2VkIG9yIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IHRyaWdnZXJlZCBkaXJlY3RseSBieSBhbm90aGVyIGZ1bmN0aW9uLCBzY2hlZHVsZWQgdGhyb3VnaCBhIHdvcmsgcXVldWUsIGhvb2tlZCB0byBhbiBpbnRlcnJ1cHQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkgaGVyZS5cblxuTXkgbWluZCBpcyBhbHJlYWR5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgbWV0aG9kczogR3JlcHBpbmcgdGhlIGNvZGViYXNlIGlzIHRoZSBvYnZpb3VzIGZpcnN0IHN0ZXAuIEknbGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byBgbXdpZmlleF9zZGlvX2RldmljZV9kdW1wX3dvcmtgIGRpcmVjdGx5LCBidXQgYWxzbyBjaGVjayBmb3IgdXNlcyBvZiByZWxhdGVkIGZ1bmN0aW9ucyBvciBtYWNyb3MgdGhhdCBtaWdodCBiZSByZXNwb25zaWJsZSBmb3Igc2NoZWR1bGluZyBvciByZWdpc3RlcmluZyB0aGlzIHBhcnRpY3VsYXIgd29yayBpdGVtLiBJIHNob3VsZCBhbHNvIGJlIG1pbmRmdWwgb2YgaW5kaXJlY3QgY2FsbHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMuIEl0IGlzIGxpa2VseSBhIHdvcmsgcXVldWUsIGJ1dCBJIGNhbid0IGFzc3VtZSB0aGF0LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkZyb20gdGhlcmUsIEknbGwgYW5hbHl6ZSB0aGUgY2FsbCBzaXRlcyBJIGlkZW50aWZ5IHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCB0aGUgZGF0YSBiZWluZyBwYXNzZWQgaW4sIGFuZCB0aGUgb3ZlcmFsbCBzdGF0ZSBvZiB0aGUgd2lyZWxlc3MgZHJpdmVyIGlzIGNydWNpYWwgdG8gYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIHB1cnBvc2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIHJldmVyc2UgZW5naW5lZXJpbmcgb3IgYXVkaXRpbmcuIEZpbmFsbHksIEknbGwgbmVlZCB0byBjb3JyZWxhdGUgbXkgZmluZGluZ3MgdG8gdW5kZXJzdGFuZCB0aGUgZXZlbnQgdGhhdCBtYXkgYmUgY2F1c2luZyBpdHMgZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6MzMuNzA4ODg4NTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA1NjIyMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2aWNlX2R1bXBfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYz0yNjgwPXN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9md19kdW1wKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYzoyODAzOnN0YXRpYyB2b2lkIG13aWZpZXhfcGNpZV9kZXZpY2VfZHVtcF93b3JrKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0yODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9wY2llLmM9MjgyOD1zdGF0aWMgdm9pZCBtd2lmaWV4X3BjaWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jLTI4MzQtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjYXJkLVxcdTAwM2V3b3JrX2ZsYWdzKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvcGNpZS5jOjI4MzU6XFx0XFx0bXdpZmlleF9wY2llX2RldmljZV9kdW1wX3dvcmsoY2FyZC1cXHUwMDNlYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3BjaWUuYy0yODM2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTVdJRklFWF9JRkFDRV9XT1JLX0NBUkRfUkVTRVQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTI4ODg9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX2dlbmVyaWNfZndfZHVtcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MzAwMjpzdGF0aWMgdm9pZCBtd2lmaWV4X3NkaW9fZGV2aWNlX2R1bXBfd29yayhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTMwMjI9c3RhdGljIHZvaWQgbXdpZmlleF9zZGlvX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0zMDI4LVxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FyZC1cXHUwMDNld29ya19mbGFncykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzozMDI5OlxcdFxcdG13aWZpZXhfc2Rpb19kZXZpY2VfZHVtcF93b3JrKGNhcmQtXFx1MDAzZWFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMzAzMC1cXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE1XSUZJRVhfSUZBQ0VfV09SS19DQVJEX1JFU0VULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzozMy44MDk0NjA5ODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA2MjExNjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNESU8vTWFydmVsbCBXaUZpLUV4IENoYWxsZW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtd2lmaWV4L3NkaW8uY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgaXMgdGhlIGRyaXZlciBmb3IgTWFydmVsbCdzIFdpRmktRXggU0RJTyBjYXJkcy4gTm93LCBsZXQgbWUgcmUtZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggc2VjdGlvbiAyIG9mIHRoZXNlIGluc3RydWN0aW9ucy4gQWgsIGhlcmUgd2UgYXJlOiB0aGUgXCJTdHJ1Y3R1cmFsbHkgVW5yZWFjaGFibGUgSGFyZHdhcmVcIiBjYXRlZ29yeSBleHBsaWNpdGx5IGV4Y2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzIGFuZCBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIFwiUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sc1wiIGFyZSB0aG9zZSBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbCBidXNlcyBzdWNoIGFzIHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIGV0Yy5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwOiBpcyBTRElPIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBDYW4gc3l6a2FsbGVyIGFjdHVhbGx5ICplbXVsYXRlKiBvciBldmVuICpjcmVhdGUqIHRoZSBTRElPIGRldmljZXMgdGhhdCB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGZ1enogU0RJTyBjYXJkcyB3aXRoIHN5emthbGxlciBpbiB0aGUgc2FtZSB3YXkgd2UgY2FuIHdpdGggVVNCIGRldmljZXMgdXNpbmcgUmF3IEdhZGdldCBvciB0aGUgYGR1bW15X2hjZGAuIERvZXMgTGludXggb3Igc3l6a2FsbGVyIGhhdmUgYW4gZXhpc3RpbmcgU0RJTyBlbXVsYXRvciBvciBhbnkga2luZCBvZiB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIHRoYXQgY291bGQgYnJpZGdlIHRoaXMgZ2FwPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhpc3RpbmcgaW1wbGVtZW50YXRpb25zIHRoYXQgd291bGQgYWxsb3cgZm9yIHRoaXMgc29ydCBvZiB0ZXN0aW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjA1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjM2Ljg3MTU4MDc1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NTk1NjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MTAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL21tYy9jb3JlL01ha2VmaWxlPTc9bW1jX2NvcmUteVxcdFxcdFxcdDo9IGNvcmUubyBidXMubyBob3N0Lm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtOC1cXHRcXHRcXHRcXHQgICBtbWMubyBtbWNfb3BzLm8gc2QubyBzZF9vcHMubyBcXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZTo5OlxcdFxcdFxcdFxcdCAgIHNkaW8ubyBzZGlvX29wcy5vIHNkaW9fYnVzLm8gXFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MTA6XFx0XFx0XFx0XFx0ICAgc2Rpb19jaXMubyBzZGlvX2lvLm8gc2Rpb19pcnEubyBzZF91aHMyLm9cXFxcXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZS0xMS1cXHRcXHRcXHRcXHQgICBzbG90LWdwaW8ubyByZWd1bGF0b3Iub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfTU1DX1RFU1QpXFx0XFx0Kz0gbW1jX3Rlc3Qub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1NESU9fVUFSVClcXHRcXHQrPSBzZGlvX3VhcnQub1xcbmRyaXZlcnMvbW1jL2NvcmUvTWFrZWZpbGUtMjEtbW1jX2NvcmUtJChDT05GSUdfTU1DX0NSWVBUTylcXHQrPSBjcnlwdG8ub1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNi0jaW5jbHVkZSBcXFwiaG9zdC5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM6Mjc6I2luY2x1ZGUgXFxcInNkaW9fY2lzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yOC0jaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jPTU5PW1tY19idXNfdWV2ZW50KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy04OC1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjg5OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpIHx8IG1tY19jYXJkX3NkX2NvbWJvKGNhcmQpKSB7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy05MC1cXHRcXHRyZXR2YWwgPSBhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJTRElPX0lEPSUwNFg6JTA0WFxcXCIsXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jOjExMTpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL2J1cy5jLTExMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvYnVzLmM9MjY0PXN0YXRpYyB2b2lkIG1tY19yZWxlYXNlX2NhcmQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjctXFxuZHJpdmVycy9tbWMvY29yZS9idXMuYzoyNjg6XFx0c2Rpb19mcmVlX2NvbW1vbl9jaXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9idXMuYy0yNjktXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00NS0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvY2FyZC5oOjQ2OiAqIFRoZSB3b3JsZCBpcyBub3QgcGVyZmVjdCBhbmQgc3VwcGxpZXMgdXMgd2l0aCBicm9rZW4gbW1jL3NkaW8gZGV2aWNlcy5cXG5kcml2ZXJzL21tYy9jb3JlL2NhcmQuaC00Ny0gKiBGb3IgYXQgbGVhc3Qgc29tZSBvZiB0aGVzZSBidWdzIHdlIG5lZWQgYSB3b3JrLWFyb3VuZC5cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQxLSNpbmNsdWRlIFxcXCJob3N0LmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM6NDI6I2luY2x1ZGUgXFxcInNkaW9fYnVzLmhcXFwiXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDMtI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNDYtI2luY2x1ZGUgXFxcInNkX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjQ3OiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTQ4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmM9MjE2PXN0YXRpYyB2b2lkIF9fbW1jX3N0YXJ0X3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIyOC1cXHQvKlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIyOTpcXHQgKiBGb3Igc2RpbyBydyBjb21tYW5kcyB3ZSBtdXN0IHdhaXQgZm9yIGNhcmQgYnVzeSBvdGhlcndpc2Ugc29tZVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjIzMDpcXHQgKiBzZGlvIGRldmljZXMgd29uJ3Qgd29yayBwcm9wZXJseS5cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yMzEtXFx0ICogQW5kIGJ5cGFzcyBJL08gYWJvcnQsIHJlc2V0IGFuZCBidXMgc3VzcGVuZCBvcGVyYXRpb25zLlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzMi1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMzM6XFx0aWYgKHNkaW9faXNfaW9fYnVzeShtcnEtXFx1MDAzZWNtZC1cXHUwMDNlb3Bjb2RlLCBtcnEtXFx1MDAzZWNtZC1cXHUwMDNlYXJnKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIzNC1cXHQgICAgaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VjYXJkX2J1c3kpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTY2MD12b2lkIG1tY19zZXRfZGF0YV90aW1lb3V0KHN0cnVjdCBtbWNfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtNjY2LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjY2NzpcXHRpZiAobW1jX2NhcmRfc2RpbyhjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTY2OC1cXHRcXHRkYXRhLVxcdTAwM2V0aW1lb3V0X25zID0gMTAwMDAwMDAwMDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jPTIwOTk9c3RhdGljIGludCBtbWNfcmVzY2FuX3RyeV9mcmVxKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdW5zaWduZWQgZnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMTQtXFx0LypcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTE1OlxcdCAqIHNkaW9fcmVzZXQgc2VuZHMgQ01ENTIgdG8gcmVzZXQgY2FyZC4gIFNpbmNlIHdlIGRvIG5vdCBrbm93XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjExNi1cXHQgKiBpZiB0aGUgY2FyZCBpcyBiZWluZyByZS1pbml0aWFsaXplZCwganVzdCBzZW5kIGl0LiAgQ01ENTJcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMjAtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTIxOlxcdFxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmMtMjEyMi1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzMtXFx0aWYgKCEoaG9zdC1cXHUwMDNlY2FwczIgXFx1MDAyNiBNTUNfQ0FQMl9OT19TRElPKSlcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYzoyMTM0OlxcdFxcdGlmICghbW1jX2F0dGFjaF9zZGlvKGhvc3QpKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTIxMzUtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yMzkzPXN0YXRpYyBpbnQgX19pbml0IG1tY19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA0LVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MDU6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9idXMoKTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYy0yNDA2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuYz0yNDE4PXN0YXRpYyB2b2lkIF9fZXhpdCBtbWNfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MTkte1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jOjI0MjA6XFx0c2Rpb191bnJlZ2lzdGVyX2J1cygpO1xcbmRyaXZlcnMvbW1jL2NvcmUvY29yZS5jLTI0MjEtXFx0bW1jX3VucmVnaXN0ZXJfaG9zdF9jbGFzcygpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmg9ODc9aW50IG1tY19hdHRhY2hfc2Qoc3RydWN0IG1tY19ob3N0ICpob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL2NvcmUuaDo4ODppbnQgbW1jX2F0dGFjaF9zZGlvKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9jb3JlLmgtODktaW50IG1tY19hdHRhY2hfc2RfdWhzMihzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMjktI2luY2x1ZGUgXFxcInB3cnNlcS5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jOjMwOiNpbmNsdWRlIFxcXCJzZGlvX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTMxLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9MjY1PWludCBtbWNfb2ZfcGFyc2Uoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY3LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9IV19SRVNFVDtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozNjg6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwiY2FwLXNkaW8taXJxXFxcIikpXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtMzY5LVxcdFxcdGhvc3QtXFx1MDAzZWNhcHMgfD0gTU1DX0NBUF9TRElPX0lSUTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5My1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9IUzQwMF9FUztcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzozOTQ6XFx0aWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwibm8tc2Rpb1xcXCIpKVxcbmRyaXZlcnMvbW1jL2NvcmUvaG9zdC5jLTM5NS1cXHRcXHRob3N0LVxcdTAwM2VjYXBzMiB8PSBNTUNfQ0FQMl9OT19TRElPO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NTEyPXN0cnVjdCBtbWNfaG9zdCAqbW1jX2FsbG9jX2hvc3QoaW50IGV4dHJhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy01NTgtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmhvc3QtXFx1MDAzZWRldGVjdCwgbW1jX3Jlc2Nhbik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NTU5OlxcdElOSVRfV09SSyhcXHUwMDI2aG9zdC1cXHUwMDNlc2Rpb19pcnFfd29yaywgc2Rpb19pcnFfd29yayk7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNTYwLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZob3N0LVxcdTAwM2VyZXR1bmVfdGltZXIsIG1tY19yZXR1bmVfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM9NjEwPXN0YXRpYyBpbnQgbW1jX3ZhbGlkYXRlX2hvc3RfY2FwcyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYy02MTQtXFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmM6NjE1OlxcdGlmIChjYXBzIFxcdTAwMjYgTU1DX0NBUF9TRElPX0lSUSBcXHUwMDI2XFx1MDAyNiAhaG9zdC1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGVfc2Rpb19pcnEpIHtcXG5kcml2ZXJzL21tYy9jb3JlL2hvc3QuYzo2MTY6XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwibWlzc2luZyAtXFx1MDAzZWVuYWJsZV9zZGlvX2lycSgpIG9wc1xcXFxuXFxcIik7XFxuZHJpdmVycy9tbWMvY29yZS9ob3N0LmMtNjE3LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvc2Rpb19pZHMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaD0xNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgbW1jX2V4dF9jc2RfZml4dXBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE4OC1cXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oOjE4OTpzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oLTE5MC1cXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX1RJX1dMMTI1MSwgU0RJT19ERVZJQ0VfSURfVElfV0wxMjUxLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaC0yMTYtXFxuZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaDoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19jYXJkX2luaXRfbWV0aG9kc1tdID0ge1xcbmRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgtMjE4LVxcdFNESU9fRklYVVBfQ09NUEFUSUJMRShcXFwidGksd2wxMjUxXFxcIiwgd2wxMjUxX3F1aXJrLCAwKSxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYz03NDg9TU1DX0RFVl9BVFRSKHJldmlzaW9uLCBcXFwiJXUuJXVcXFxcblxcXCIsIGNhcmQtXFx1MDAzZW1ham9yX3JldiwgY2FyZC1cXHUwMDNlbWlub3JfcmV2KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzQ5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NTA6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NTEtc3RhdGljIHNzaXplX3QgaW5mbyMjbnVtIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFx0XFxcXFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jPTc2MT1zdGF0aWMgREVWSUNFX0FUVFJfUk8oaW5mbyMjbnVtKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYy03NjItXFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2MzpzZGlvX2luZm9fYXR0cigxKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmM6NzY0OnNkaW9faW5mb19hdHRyKDIpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2QuYzo3NjU6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZC5jOjc2NjpzZGlvX2luZm9fYXR0cig0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkLmMtNzY3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMi0vKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM6ICogIGxpbnV4L2RyaXZlcnMvbW1jL3NkaW8uY1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWMvbW1jLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTY6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYy9zZGlvX2Z1bmMuaFxcdTAwM2VcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxNzojaW5jbHVkZSBcXHUwMDNjbGludXgvbW1jL3NkaW9faWRzLmhcXHUwMDNlXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTgtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNC0jaW5jbHVkZSBcXFwic2QuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNTojaW5jbHVkZSBcXFwic2Rpb19idXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNi0jaW5jbHVkZSBcXFwibW1jX29wcy5oXFxcIlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI3LSNpbmNsdWRlIFxcXCJzZF9vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyODojaW5jbHVkZSBcXFwic2Rpb19vcHMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyOTojaW5jbHVkZSBcXFwic2Rpb19jaXMuaFxcXCJcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zMC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTM1PU1NQ19ERVZfQVRUUihyY2EsIFxcXCIweCUwNHhcXFxcblxcXCIsIGNhcmQtXFx1MDAzZXJjYSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzYtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc6I2RlZmluZSBzZGlvX2luZm9fYXR0cihudW0pXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4LXN0YXRpYyBzc2l6ZV90IGluZm8jI251bSMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jPTQ4PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhpbmZvIyNudW0pXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDktXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTA6c2Rpb19pbmZvX2F0dHIoMSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTE6c2Rpb19pbmZvX2F0dHIoMik7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTI6c2Rpb19pbmZvX2F0dHIoMyk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTM6c2Rpb19pbmZvX2F0dHIoNCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTQtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NTU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnNkaW9fc3RkX2F0dHJzW10gPSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTYtXFx0XFx1MDAyNmRldl9hdHRyX3ZlbmRvci5hdHRyLFxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYtfTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2NzpBVFRSSUJVVEVfR1JPVVBTKHNkaW9fc3RkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02OC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2OTpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIHNkaW9fdHlwZSA9IHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDpcXHQuZ3JvdXBzID0gc2Rpb19zdGRfZ3JvdXBzLFxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxLX07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NzM6c3RhdGljIGludCBzZGlvX3JlYWRfZmJyKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAyLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwMzpzdGF0aWMgaW50IHNkaW9faW5pdF9mdW5jKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IGZuKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNC17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA1LVxcdGludCByZXQ7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA2OlxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMTpcXHRmdW5jID0gc2Rpb19hbGxvY19mdW5jKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMi1cXHRpZiAoSVNfRVJSKGZ1bmMpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE3LVxcdGlmICghKGNhcmQtXFx1MDAzZXF1aXJrcyBcXHUwMDI2IE1NQ19RVUlSS19OT05TVERfU0RJTykpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2ZicihmdW5jKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMjI6XFx0XFx0cmV0ID0gc2Rpb19yZWFkX2Z1bmNfY2lzKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEyMy1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMwLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEzMTpcXHRjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbZm4gLSAxXSA9IGZ1bmM7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTM5LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0MDpcXHRzZGlvX3JlbW92ZV9mdW5jKGZ1bmMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE0MS1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTQzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE0NDpzdGF0aWMgaW50IHNkaW9fcmVhZF9jY2NyKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTMyIG9jcilcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xNDUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTYzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjE2NDpcXHRjYXJkLVxcdTAwM2VjY2NyLnNkaW9fdnNuID0gKGRhdGEgXFx1MDAyNiAweGYwKSBcXHUwMDNlXFx1MDAzZSA0O1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTE2NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTI2MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoyNjE6c3RhdGljIGludCBzZGlvX2VuYWJsZV93aWRlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0yNjIte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjkzLSAqIG9mIHRoZSBjYXJkLiBUaGlzIG1heSBiZSByZXF1aXJlZCBvbiBjZXJ0YWluIHNldHVwcyBvZiBib2FyZHMsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mjk0OiAqIGNvbnRyb2xsZXJzIGFuZCBlbWJlZGRlZCBzZGlvIGRldmljZSB3aGljaCBkbyBub3QgbmVlZCB0aGUgY2FyZCdzXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk1LSAqIHB1bGwtdXAuIEFzIGEgcmVzdWx0LCBjYXJkIGRldGVjdGlvbiBpcyBkaXNhYmxlZCBhbmQgcG93ZXIgaXMgc2F2ZWQuXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjI5NzpzdGF0aWMgaW50IHNkaW9fZGlzYWJsZV9jZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMjk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTMxNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozMTg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfd2lkZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0Ny1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzozNDg6c3RhdGljIGludCBzZGlvX2Rpc2FibGVfNGJpdF9idXMoc3RydWN0IG1tY19jYXJkICpjYXJkKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM0OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNTEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzUyOlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM1My1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM2NS1vdXQ6XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzY2OlxcdHJldHVybiBzZGlvX2Rpc2FibGVfd2lkZShjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNjctfVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzY5LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3MDpzdGF0aWMgaW50IHNkaW9fZW5hYmxlXzRiaXRfYnVzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0zNzEte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzczLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM3NDpcXHRlcnIgPSBzZGlvX2VuYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3NS1cXHRpZiAoZXJyIFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzc2LVxcdFxcdHJldHVybiBlcnI7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6Mzc3OlxcdGlmIChtbWNfY2FyZF9zZGlvKGNhcmQpKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM3OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MzgzOlxcdFxcdFxcdHNkaW9fZGlzYWJsZV93aWRlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTM4NC1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjM5NzpzdGF0aWMgaW50IG1tY19zZGlvX3N3aXRjaF9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIGludCBlbmFibGUpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMzk4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQyNi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0Mjc6c3RhdGljIGludCBzZGlvX2VuYWJsZV9ocyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzMC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0MzE6XFx0cmV0ID0gbW1jX3NkaW9fc3dpdGNoX2hzKGNhcmQsIHRydWUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQzMjpcXHRpZiAocmV0IFxcdTAwM2M9IDAgfHwgbW1jX2NhcmRfc2RpbyhjYXJkKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00MzMtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQzNi1cXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDM3OlxcdFxcdG1tY19zZGlvX3N3aXRjaF9ocyhjYXJkLCBmYWxzZSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDM4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjQ0MjpzdGF0aWMgdW5zaWduZWQgbW1jX3NkaW9fZ2V0X21heF9jbG9jayhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNDQzLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2NS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo0NjY6c3RhdGljIHVuc2lnbmVkIGNoYXIgaG9zdF9kcml2ZV90b19zZGlvX2RyaXZlKGludCBob3N0X3N0cmVuZ3RoKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTQ2Ny17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODEtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NDgyOnN0YXRpYyB2b2lkIHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy00ODMte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTAzLVxcdFxcdGNhcmRfc3RyZW5ndGggXFx1MDAyNj0gfihTRElPX0RSSVZFX0RUU3hfTUFTS1xcdTAwM2NcXHUwMDNjU0RJT19EUklWRV9EVFN4X1NISUZUKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MDQ6XFx0XFx0Y2FyZF9zdHJlbmd0aCB8PSBob3N0X2RyaXZlX3RvX3NkaW9fZHJpdmUoZHJpdmVfc3RyZW5ndGgpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUwNS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTUxOC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1MTk6c3RhdGljIGludCBzZGlvX3NldF9idXNfc3BlZWRfbW9kZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNTIwLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTU5Mi0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo1OTM6c3RhdGljIGludCBtbWNfc2Rpb19pbml0X3Voc19jYXJkKHN0cnVjdCBtbWNfY2FyZCAqY2FyZClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy01OTQte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAwLVxcdC8qIFN3aXRjaCB0byB3aWRlciBidXMgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo2MDE6XFx0ZXJyID0gc2Rpb19lbmFibGVfNGJpdF9idXMoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDUtXFx0LyogU2V0IHRoZSBkcml2ZXIgc3RyZW5ndGggZm9yIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA2OlxcdHNkaW9fc2VsZWN0X2RyaXZlcl90eXBlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYwNy1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MDgtXFx0LyogU2V0IGJ1cyBzcGVlZCBtb2RlIG9mIHRoZSBjYXJkICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjA5OlxcdGVyciA9IHNkaW9fc2V0X2J1c19zcGVlZF9tb2RlKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYxMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjI0LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYyNTpzdGF0aWMgaW50IG1tY19zZGlvX3ByZV9pbml0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdCwgdTMyIG9jcixcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MjYtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzItXFx0ICogUmVzZXQgdGhlIGNhcmQgYnkgcGVyZm9ybWluZyB0aGUgc2FtZSBzdGVwcyB0aGF0IGFyZSB0YWtlbiBieVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzMzpcXHQgKiBtbWNfcmVzY2FuX3RyeV9mcmVxKCkgYW5kIG1tY19hdHRhY2hfc2RpbygpIGR1cmluZyBhIFxcXCJub3JtYWxcXFwiIHByb2JlLlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTYzNC1cXHQgKlxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjYzNTpcXHQgKiBzZGlvX3Jlc2V0KCkgaXMgdGVjaG5pY2FsbHkgbm90IG5lZWRlZC4gSGF2aW5nIGp1c3QgcG93ZXJlZCB1cCB0aGVcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02MzYtXFx0ICogaGFyZHdhcmUsIGl0IHNob3VsZCBhbHJlYWR5IGJlIGluIHJlc2V0IHN0YXRlLiBIb3dldmVyLCBzb21lXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy02NDctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6NjQ4OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjQ5LVxcdG1tY19nb19pZGxlKGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjU5LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjY2MDpzdGF0aWMgaW50IG1tY19zZGlvX2luaXRfY2FyZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvY3IsXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNjYxLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtbWNfY2FyZCAqb2xkY2FyZClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTY5OS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo3MDA6XFx0Y2FyZCA9IG1tY19hbGxvY19jYXJkKGhvc3QsIFxcdTAwMjZzZGlvX3R5cGUpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcwMS1cXHRpZiAoSVNfRVJSKGNhcmQpKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzE1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcxNjpcXHRcXHRpZiAob2xkY2FyZCBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfc2RpbyhvbGRjYXJkKSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcxNy1cXHRcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzI2LVxcdFxcdGhvc3QtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdF9jYXJkKGhvc3QsIGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjcyNzpcXHRtbWNfZml4dXBfZGV2aWNlKGNhcmQsIHNkaW9fY2FyZF9pbml0X21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTcyOC1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTczOC1cXHQgKiBmYWlscyB0byBjaGVjayByb2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQsICBidXQgd2Ugc3RpbGwgbmVlZCB0b1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjczOTpcXHQgKiB0cnkgdG8gaW5pdCB1aHMgY2FyZC4gc2Rpb19yZWFkX2NjY3Igd2lsbCB0YWtlIG92ZXIgdGhpcyB0YXNrXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQwLVxcdCAqIHRvIG1ha2Ugc3VyZSB3aGljaCBzcGVlZCBtb2RlIHNob3VsZCB3b3JrLlxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ0LVxcdFxcdGlmIChlcnIgPT0gLUVBR0FJTikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjc0NTpcXHRcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtNzQ2LVxcdFxcdFxcdHJldHJpZXMtLTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTgxNC1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4MTU6XFx0ZXJyID0gc2Rpb19yZWFkX2NjY3IoY2FyZCwgb2NyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MTYtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgxNzpcXHRcXHRtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBvY3JfY2FyZCwgY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODE4LVxcdFxcdGlmIChvY3IgXFx1MDAyNiBSNF8xOFZfUFJFU0VOVCkge1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODI4LVxcdCAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjgyOTpcXHRlcnIgPSBzZGlvX3JlYWRfY29tbW9uX2NpcyhjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04MzAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0My1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NDQ6XFx0bW1jX2ZpeHVwX2RldmljZShjYXJkLCBzZGlvX2ZpeHVwX21ldGhvZHMpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg0NS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2MS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4NjI6XFx0ZXJyID0gc2Rpb19kaXNhYmxlX2NkKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg2My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODY4LVxcdGlmICgob2NyIFxcdTAwMjYgUjRfMThWX1BSRVNFTlQpIFxcdTAwMjZcXHUwMDI2IGNhcmQtXFx1MDAzZXN3X2NhcHMuc2QzX2J1c19tb2RlKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODY5OlxcdFxcdGVyciA9IG1tY19zZGlvX2luaXRfdWhzX2NhcmQoY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtODcwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04NzUtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODc2OlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlX2hzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg3Ny1cXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg4NC1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo4ODU6XFx0XFx0bW1jX3NldF9jbG9jayhob3N0LCBtbWNfc2Rpb19nZXRfbWF4X2Nsb2NrKGNhcmQpKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODYtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy04ODktXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6ODkwOlxcdFxcdGVyciA9IHNkaW9fZW5hYmxlXzRiaXRfYnVzKGNhcmQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTg5MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTEzLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxNDpzdGF0aWMgaW50IG1tY19zZGlvX3JlaW5pdF9jYXJkKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MTUte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTE3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkxODpcXHRyZXQgPSBtbWNfc2Rpb19wcmVfaW5pdChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IsIE5VTEwpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkyMjpcXHRyZXR1cm4gbW1jX3NkaW9faW5pdF9jYXJkKGhvc3QsIGhvc3QtXFx1MDAzZWNhcmQtXFx1MDAzZW9jciwgaG9zdC1cXHUwMDNlY2FyZCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTIzLX1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTkyNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5Mjg6c3RhdGljIHZvaWQgbW1jX3NkaW9fcmVtb3ZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05Mjkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTMxLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMjpcXHRmb3IgKGkgPSAwO2kgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzO2krKykge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjkzMzpcXHRcXHRpZiAoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6OTM0OlxcdFxcdFxcdHNkaW9fcmVtb3ZlX2Z1bmMoaG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzo5MzU6XFx0XFx0XFx0aG9zdC1cXHUwMDNlY2FyZC1cXHUwMDNlc2Rpb19mdW5jW2ldID0gTlVMTDtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05MzYtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTQ1LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk0NjpzdGF0aWMgaW50IG1tY19zZGlvX2FsaXZlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05NDcte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTU3LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk1ODpzdGF0aWMgdm9pZCBtbWNfc2Rpb19kZXRlY3Qoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTk1OS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy05OTMtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjk5NDpcXHRcXHRtbWNfc2Rpb19yZW1vdmUoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtOTk1LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAwNy0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDA4OnN0YXRpYyBpbnQgbW1jX3NkaW9fcHJlX3N1c3BlbmQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMDkte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxMS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEyOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNzOyBpKyspIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDEzOlxcdFxcdHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VzZGlvX2Z1bmNbaV07XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTAxNDpcXHRcXHRpZiAoZnVuYyBcXHUwMDI2XFx1MDAyNiBzZGlvX2Z1bmNfcHJlc2VudChmdW5jKSBcXHUwMDI2XFx1MDAyNiBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTAxNS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG1vcHMgPSBmdW5jLVxcdTAwM2VkZXYuZHJpdmVyLVxcdTAwM2VwbTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwMzItXFx0LyogUmVtb3ZlIHRoZSBTRElPIGNhcmQgYW5kIGxldCBpdCBiZSByZS1kZXRlY3RlZCBsYXRlciBvbi4gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDMzOlxcdG1tY19zZGlvX3JlbW92ZShob3N0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDM0LVxcdG1tY19jbGFpbV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0NS0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDQ2OnN0YXRpYyBpbnQgbW1jX3NkaW9fc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0Ny17XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA0ODpcXHRXQVJOX09OKGhvc3QtXFx1MDAzZXNkaW9faXJxcyBcXHUwMDI2XFx1MDAyNiAhbW1jX2NhcmRfa2VlcF9wb3dlcihob3N0KSk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA0OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTEtXFx0bW1jX2NhcmRfc2V0X3N1c3BlbmRlZChob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDUyOlxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmhvc3QtXFx1MDAzZXNkaW9faXJxX3dvcmspO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU1LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwNTY6XFx0aWYgKG1tY19jYXJkX2tlZXBfcG93ZXIoaG9zdCkgXFx1MDAyNlxcdTAwMjYgbW1jX2NhcmRfd2FrZV9zZGlvX2lycShob3N0KSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDU3OlxcdFxcdHNkaW9fZGlzYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDU4LVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTA3MC1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMDcxOnN0YXRpYyBpbnQgbW1jX3NkaW9fcmVzdW1lKHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDcyLXtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTEwOTUtXFx0XFx0fVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjEwOTY6XFx0XFx0ZXJyID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTA5NzpcXHR9IGVsc2UgaWYgKG1tY19jYXJkX3dha2Vfc2Rpb19pcnEoaG9zdCkpIHtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMDk4LVxcdFxcdC8qXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTAzLVxcdFxcdG1tY19yZXR1bmVfaG9sZF9ub3coaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEwNDpcXHRcXHRlcnIgPSBzZGlvX2VuYWJsZV80Yml0X2J1cyhob3N0LVxcdTAwM2VjYXJkKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTA1LVxcdFxcdG1tY19yZXR1bmVfcmVsZWFzZShob3N0KTtcXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTMtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExNDpcXHRpZiAoaG9zdC1cXHUwMDNlc2Rpb19pcnFzKSB7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTExNS1cXHRcXHRpZiAoIShob3N0LVxcdTAwM2VjYXBzMiBcXHUwMDI2IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEKSlcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTE2OlxcdFxcdFxcdHdha2VfdXBfcHJvY2Vzcyhob3N0LVxcdTAwM2VzZGlvX2lycV90aHJlYWQpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMTctXFx0XFx0ZWxzZSBpZiAoaG9zdC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1NQ19DQVBfU0RJT19JUlEpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTExODpcXHRcXHRcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZob3N0LVxcdTAwM2VzZGlvX2lycV93b3JrKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExMjctXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTEyODpzdGF0aWMgaW50IG1tY19zZGlvX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEyOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTM3LVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExMzg6c3RhdGljIGludCBtbWNfc2Rpb19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QpXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTQ0LVxcdG1tY19wb3dlcl91cChob3N0LCBob3N0LVxcdTAwM2VjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExNDU6XFx0cmV0ID0gbW1jX3NkaW9fcmVpbml0X2NhcmQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE0Ni1cXHRtbWNfcmVsZWFzZV9ob3N0KGhvc3QpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE1Ni0gKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTU3OnN0YXRpYyBpbnQgbW1jX3NkaW9faHdfcmVzZXQoc3RydWN0IG1tY19ob3N0ICpob3N0KVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNTgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE2NS1cXHQgKi9cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTY2OlxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlc2Rpb19mdW5jc19wcm9iZWQpIFxcdTAwM2UgMSkge1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExNjctXFx0XFx0aWYgKG1tY19jYXJkX3JlbW92ZWQoY2FyZCkpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTc5LVxcdG1tY19wb3dlcl9jeWNsZShob3N0LCBjYXJkLVxcdTAwM2VvY3IpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jOjExODA6XFx0cmV0dXJuIG1tY19zZGlvX3JlaW5pdF9jYXJkKGhvc3QpO1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODEtfVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpby5jLTExODItXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmM6MTE4MzpzdGF0aWMgaW50IG1tY19zZGlvX3N3X3Jlc2V0KHN0cnVjdCBtbWNfaG9zdCAqaG9zdClcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg0LXtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYy0xMTg1LVxcdG1tY19zZXRfY2xvY2soaG9zdCwgaG9zdC1cXHUwMDNlZl9pbml0KTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW8uYzoxMTg2OlxcdHNkaW9fcmVzZXQoaG9zdCk7XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvLmMtMTE4Ny1cXHRtbWNfZ29faWRsZShob3N0KTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1MzozNi45OTYyMDcwNTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDM5NDQzNDc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExhbmRzY2FwZSBvZiBNYXJ2ZWxsIFNESU8gV2lGaSBEcml2ZXIgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGBtd2lmaWV4L3NkaW8uY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIGl0IHN1cHBvcnRzLiBTaW5jZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgTU1DIFNESU8gc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IGNvbnNpZGVyaW5nIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzLiBDYW4gSSBpbnN0YW50aWF0ZSB0aGVzZSBTRElPIGRldmljZXMgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cblxuVGhlIGNvcmUgcXVlc3Rpb24gcXVpY2tseSBib2lscyBkb3duIHRvIFFFTVUncyBjYXBhYmlsaXRpZXMuIE15IGN1cnJlbnQgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoaWxlIFFFTVUgZG9lcyBhIGdvb2Qgam9iIHdpdGggU0QgY2FyZCBlbXVsYXRpb24gZm9yIHN0b3JhZ2UgdXNpbmcgU0RIQ0kvTU1DLCBpdCBkb2Vzbid0IGV4dGVuZCB0aGlzIHRvIFNESU8gV2lGaSBjYXJkcywgYW5kIGNlcnRhaW5seSBub3QgdGhlIHNwZWNpZmljIE1hcnZlbGwgbW9kZWxzIChTRDg3ODYsIDg3ODcsIDg3OTcsIGFuZCB0aGUgcmVzdCkuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUuXG5cbk5leHQsIEkgbmVlZCB0byBrbm93IGlmIHRoZSBMaW51eCBrZXJuZWwgb2ZmZXJzIGFueSAqc29mdHdhcmUqIGVtdWxhdGlvbiBmb3IgZWl0aGVyIFNESU8gV2lGaSBpbiBnZW5lcmFsLCBvciB0aGUgYG13aWZpZXhgIGRyaXZlciBzcGVjaWZpY2FsbHkuIEkga25vdyBgbXdpZmlleGAgaGFzIHN1cHBvcnQgZm9yIFBDSWUsIFNESU8sIGFuZCBVU0IuIFNvLCBsZXTigJlzIGdvIGRlZXBlci5cblxuTG9va2luZyBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AsIEkgc2VlOlxuXG4qICAgYHBjaWUuY2A6IFRoaXMgcmVxdWlyZXMgYWN0dWFsIFBDSWUgaGFyZHdhcmUsIHNvIHRoYXQncyBvdXQuXG4qICAgYHNkaW8uY2A6IE9idmlvdXNseSwgaXQgd2FudHMgU0RJTyBoYXJkd2FyZS5cbiogICBgdXNiLmNgOiBUaGlzIGlzIGludGVyZXN0aW5nLiBVU0IgKmNvdWxkKiBiZSBlbXVsYXRlZCBpbiB0aGVvcnksIHByb3ZpZGVkIHRoZSBVU0IgZGVzY3JpcHRvciBpcyBjb3JyZWN0LiBCdXQsIHRoZSBmYWN0IHRoYXQgYHVzYi5jYCBhbmQgYHNkaW8uY2AgYXJlIHNlcGFyYXRlIGlzIG5vdGV3b3J0aHksIGV2ZW4gdGhvdWdoIEknZCBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsZXZlbCBvZiBhYnN0cmFjdGlvbiB3aXRoaW4gdGhlIFVTQiBzeXN0ZW0uXG5cbk5vdywgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCB3aGF0IGFib3V0IGBtd2lmaWV4X3NkaW9fZndfZHVtcGA/IEl04oCZcyBsb2NhdGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AuIFRoaXMgaXMgYW5vdGhlciBjbHVlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgc2Rpby5jYCBpcyBleGNsdXNpdmVseSB0aWVkIHRvIFNESU8gaGFyZHdhcmUsIG9yIGlmIGNlcnRhaW4gYXNwZWN0cyBtaWdodCBiZSBhcHBsaWNhYmxlIGluIGEgbW9yZSBnZW5lcmFsaXplZCB0ZXN0aW5nIG9yIGVtdWxhdGVkIHNjZW5hcmlvLiBUaGUgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIG5leHQgcGxhY2UgdG8gbG9vayBmb3IgdGhhdCBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Nzk3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDAwOjUzOjQxLjM5MDY0NDE5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6NDEuMzkwNzE3NzY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODEyNjQwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBTRElPIFdpRmkgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcncyBvZmYgd2l0aCB0aGUgYG13aWZpZXhfc2Rpb2AgaW5pdGlhbGl6YXRpb24gb3IgcHJvYmUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsLiBMZXQncyBzdGFydCB3aXRoIHRoZSBzb3VyY2UuIEknbSBnb2luZyB0byBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgZmlsZSDigJMgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciAqc2hvdWxkKiBoYXBwZW4sIGZvciB0aGUgU0RJTyBpbnRlcmZhY2UuIEknbGwgZm9jdXMgcGFydGljdWxhcmx5IG9uIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgdGhlIGRldmljZSBJRCB0YWJsZS4gVGhhdCB0YWJsZSBzaG91bGQgZ2l2ZSBtZSB0aGUga2V5IGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIHRvIHZlcmlmeSB0aGUgY29ycmVjdCBkZXZpY2UgaXMgYmVpbmcgbG9hZGVkIGFuZCB0aGUgcHJvYmUgZnVuY3Rpb24gd2lsbCByZXZlYWwgdGhlIHN0ZXBzIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRldmljZSBJRHMgbWF0Y2ggdGhlIGRldmljZXMgb24gaGFuZCBhbmQgdGhhdCB0aGUgaW5pdCBwcm9jZXNzIGlzIGFzIGV4cGVjdGVkLiBMZXQncyBzZWUgd2hhdCBjbHVlcyB0aGlzIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQ2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0My40NzE5ODUxNTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDQxMDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz01NTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6NTUxOm13aWZpZXhfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtNTUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9OTQ0PXN0YXRpYyB2b2lkIG13aWZpZXhfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTk1NS0vKiBXTEFOIElEcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6OTU2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgbXdpZmlleF9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTk1Ny1cXHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTUFSVkVMTCwgU0RJT19ERVZJQ0VfSURfTUFSVkVMTF84Nzg2X1dMQU4pLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0My41OTI0MDE1NzRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTMwODk2MjYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBgbXdpZmlleF9zZGlvX2Z3X2R1bXAoKWAgaXMgVW5mdXp6YWJsZSBpbiBTdGFuZGFyZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBgbXdpZmlleF9zZGlvX3Byb2JlYCBvbiBteSByYWRhci4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBmb3IgTWFydmVsbCBTRElPIFdpRmkgY2FyZHMsIHJpZ2h0PyBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgdHJpZ2dlciB0aGlzIGNvZGUgd2l0aCBzeXprYWxsZXIgb3Igd2l0aGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGltbWVkaWF0ZSBhbnN3ZXIgaXMgbm8uIFN0YW5kYXJkIFFFTVUsIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSwgZXRjLiwgdGhleSBkb24ndCBoYXZlIHBoeXNpY2FsIE1hcnZlbGwgU0RJTyBXaUZpIGNhcmRzIG9yIHByb3BlciBlbXVsYXRpb24uIFRoZXkncmUganVzdCBub3Qgc2V0IHVwIGZvciB0aGF0IGxldmVsIG9mIGhhcmR3YXJlIGludGVyYWN0aW9uLlxuXG5Ob3csIGxldCdzIGdvIGJhY2sgYW5kIGNhcmVmdWxseSBhcHBseSB0aGUgY3JpdGVyaWEgZm9yIGZ1enphYmlsaXR5LiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogKndoZW4gdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSogKG5lZ2F0aXZlIGNyaXRlcmlhKS4gXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBpcyB0aGUgY3JpdGljYWwgcGhyYXNlLiBUaGV5IGdpdmUgdGhlIGV4YW1wbGVzLCBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIEdQVSBkcml2ZXJzIOKAkyB0aGUgc3R1ZmYgdGhhdCBuZWVkcyBhY3R1YWwgc2lsaWNvbi4gQW5kIHRoaXMgYG13aWZpZXgvc2Rpby5jYCBpcyBkZWZpbml0ZWx5IGluIHRoYXQgY2F0ZWdvcnkuIEl0J3MgdGhlIFNESU8gaW50ZXJmYWNlIGRyaXZlciBmb3IgdGhvc2UgTWFydmVsbCBXaUZpIGNoaXBzIChTRDg3ODYsIFNEODc4NywgZXRjLikuIEl0ICpuZWVkcyogYSBwaHlzaWNhbCBTRElPL01NQyBob3N0IGNvbnRyb2xsZXIgYW5kIGEgcGh5c2ljYWwgTWFydmVsbCBXaUZpIGNoaXAgdG8gZnVuY3Rpb24uXG5cblRoZW4gdGhlcmUncyB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIHJlYWNoYWJsZSBjb2RlIHZpYSB2aXJ0dWFsIGJ1c2VzIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0LCBldGMuIFRoaXMgZG9lc24ndCBhcHBseSBoZXJlLiBTRElPIGlzIG5vdCBhIHZpcnR1YWwgYnVzLiBJdCdzIGEgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlLiBTbywgYmVjYXVzZSB0aGUgbW9kaWZpZWQgY29kZSwgaW5jbHVkaW5nIGBtd2lmaWV4X3NkaW9fZndfZHVtcCgpYCwgcmVxdWlyZXMgYWN0dWFsIFNESU8gaGFyZHdhcmUsIGFuZCB0aGF0IGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFLCBpdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gSXQncyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIHJlYXNvbmluZyBhbmQgdGhlIHBhcmFtZXRlcnM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYW5kLCBmb3IgdGhlIEVuYWJsZUNvbmZpZ3MgYW5kIEZvY3VzU3ltYm9scywgdGhlc2Ugd2lsbCBiZSBudWxsIG9yIGVtcHR5IGxpc3QgYmVjYXVzZSB0aGUgZHJpdmVyIGlzbid0IGFjY2Vzc2libGUgaW4gdGhpcyBjb250ZXh0LiBFdmVyeXRoaW5nIHNlZW1zIHRvIGJlIGluIG9yZGVyLiBJJ20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAyNCwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDA6NTM6NDguOTAxMzY2NzI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBpbiBtd2lmaWV4X3NkaW9fZndfZHVtcCgpIHdpdGhpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLiBUaGlzIGRyaXZlciBpcyBmb3IgTWFydmVsbCBTRElPIHdpcmVsZXNzIGNoaXBzLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgaW4gbXdpZmlleF9zZGlvX2Z3X2R1bXAoKSB3aXRoaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy4gVGhpcyBkcml2ZXIgaXMgZm9yIE1hcnZlbGwgU0RJTyB3aXJlbGVzcyBjaGlwcywgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwMDo1Mzo0OC45MDEzOTkwMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk9p4n[1] Phase: Running StartedAt: 2026-09-06 00:54:00 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9p4n[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 00:54:00 +0000 UTC FinishedAt: 2026-09-06 00:54:04 +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,}