ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDA5MjIzZmEuLjc1YTczYTEgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtOTksMyArOTksNiBAQAogCiAjIEdpdCBnZW5lcmF0ZWQgZmlsZXMgZm9yIGNvbmZsaWN0aW5nCiAqLm9yaWcKKworIyBJREUgc3BlY2lmaWMgZm9sZGVyIGZvciBKZXRCcmFpbnMgSURFcworLmlkZWEvCmRpZmYgLS1naXQgYS9CVUlMRCBiL0JVSUxECmluZGV4IGJiZmEyMWEuLjczMGRkNzAgMTAwNjQ0Ci0tLSBhL0JVSUxECisrKyBiL0JVSUxECkBAIC0zMDcsMTEgKzMwNywxMyBAQAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIsCkBAIC00ODgsNiArNDkwLDcgQEAKICAgICAic3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYyIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jIiwKQEAgLTQ5Nyw2ICs1MDAsNyBAQAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMiLAogICAgICJzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYyIsCiAgIF0sCkBAIC0xMDMyLDExICsxMDM2LDEzIEBACiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmgiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0X3Vuc2VjdXJlLmMiLApAQCAtMTE4NCw2ICsxMTkwLDcgQEAKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L3BpY2tfZmlyc3QvcGlja19maXJzdC5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9yb3VuZF9yb2Jpbi9yb3VuZF9yb2Jpbi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMiLApAQCAtMTE5Myw2ICsxMjAwLDcgQEAKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAic3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMiLAogICBdLApAQCAtMTk3Niw2ICsxOTg0LDcgQEAKICAgICAic3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYyIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jIiwKQEAgLTE5ODUsNiArMTk5NCw3IEBACiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYyIsCiAgICAgInNyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jIiwKICAgXSwKQEAgLTIxNjcsMTEgKzIxNzcsMTMgQEAKICAgICAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19pbnRlcmZhY2UuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaCIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwKICAgXSwKICAgaW5jbHVkZXMgPSBbCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ5YzRlYWUuLmUxZTJjN2QgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBiL0NNYWtlTGlzdHMudHh0CkBAIC00NTUsNiArNDU1LDcgQEAKICAgc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMKICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmMKICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jCisgIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jCkBAIC00NjQsNiArNDY1LDcgQEAKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jCisgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYwogICBzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYwogKQpAQCAtOTExLDYgKzkxMyw3IEBACiAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYwogICBzcmMvY29yZS9leHQvbGJfcG9saWN5L3BpY2tfZmlyc3QvcGlja19maXJzdC5jCiAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcm91bmRfcm9iaW4vcm91bmRfcm9iaW4uYworICBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYwpAQCAtOTIwLDYgKzkyMyw3IEBACiAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jCiAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYworICBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMKICAgc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMKICkKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMTA4ZTJiOC4uNGQwYmMyZSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTkxNSw2ICs5MTUsNyBAQAogYmluX2RlY29kZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9iaW5fZGVjb2Rlcl90ZXN0CiBiaW5fZW5jb2Rlcl90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2Jpbl9lbmNvZGVyX3Rlc3QKIGNlbnN1c19jb250ZXh0X3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX2NvbnRleHRfdGVzdAorY2Vuc3VzX3Jlc291cmNlX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3QKIGNoYW5uZWxfY3JlYXRlX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvY2hhbm5lbF9jcmVhdGVfdGVzdAogY2h0dHAyX2hwYWNrX2VuY29kZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9jaHR0cDJfaHBhY2tfZW5jb2Rlcl90ZXN0CiBjaHR0cDJfc3RhdHVzX2NvbnZlcnNpb25fdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9jaHR0cDJfc3RhdHVzX2NvbnZlcnNpb25fdGVzdApAQCAtMTIzNiw2ICsxMjM3LDcgQEAKICAgJChCSU5ESVIpLyQoQ09ORklHKS9iaW5fZGVjb2Rlcl90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9iaW5fZW5jb2Rlcl90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9jZW5zdXNfY29udGV4dF90ZXN0IFwKKyAgJChCSU5ESVIpLyQoQ09ORklHKS9jZW5zdXNfcmVzb3VyY2VfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvY2hhbm5lbF9jcmVhdGVfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvY2h0dHAyX2hwYWNrX2VuY29kZXJfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvY2h0dHAyX3N0YXR1c19jb252ZXJzaW9uX3Rlc3QgXApAQCAtMTU0Myw2ICsxNTQ1LDggQEAKIAkkKFEpICQoQklORElSKS8kKENPTkZJRykvYmluX2VuY29kZXJfdGVzdCB8fCAoIGVjaG8gdGVzdCBiaW5fZW5jb2Rlcl90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgY2Vuc3VzX2NvbnRleHRfdGVzdCIKIAkkKFEpICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX2NvbnRleHRfdGVzdCB8fCAoIGVjaG8gdGVzdCBjZW5zdXNfY29udGV4dF90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCisJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgY2Vuc3VzX3Jlc291cmNlX3Rlc3QiCisJJChRKSAkKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19yZXNvdXJjZV90ZXN0IHx8ICggZWNobyB0ZXN0IGNlbnN1c19yZXNvdXJjZV90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgY2hhbm5lbF9jcmVhdGVfdGVzdCIKIAkkKFEpICQoQklORElSKS8kKENPTkZJRykvY2hhbm5lbF9jcmVhdGVfdGVzdCB8fCAoIGVjaG8gdGVzdCBjaGFubmVsX2NyZWF0ZV90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgY2h0dHAyX2hwYWNrX2VuY29kZXJfdGVzdCIKQEAgLTI3MDMsNiArMjcwNyw3IEBACiAgICAgc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jIFwKICAgICBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMgXAorICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jIFwKQEAgLTI3MTIsNiArMjcxNyw3IEBACiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAorICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMgXAogICAgIHNyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jIFwKIApAQCAtMzQwOCw2ICszNDE0LDcgQEAKICAgICB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZW5jb2RlLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcGlja19maXJzdC9waWNrX2ZpcnN0LmMgXAogICAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcm91bmRfcm9iaW4vcm91bmRfcm9iaW4uYyBcCisgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXApAQCAtMzQxNyw2ICszNDI0LDcgQEAKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCisgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYyBcCiAgICAgc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMgXAogCkBAIC02NTI3LDYgKzY1MzUsNyBAQAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2RlZmF1bHRfaG9zdC5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kaXNhcHBlYXJpbmdfc2VydmVyLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2VtcHR5X2JhdGNoLmMgXAorICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhdXNlc19jbG9zZS5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9ncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24uYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvaGlnaF9pbml0aWFsX3NlcW5vLmMgXApAQCAtNjYwNiw2ICs2NjE1LDcgQEAKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kZWZhdWx0X2hvc3QuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGlzYXBwZWFyaW5nX3NlcnZlci5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9lbXB0eV9iYXRjaC5jIFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2hpZ2hfaW5pdGlhbF9zZXFuby5jIFwKQEAgLTY5NDgsNiArNjk1OCwzOCBAQAogZW5kaWYKIAogCitDRU5TVVNfUkVTT1VSQ0VfVEVTVF9TUkMgPSBcCisgICAgdGVzdC9jb3JlL2NlbnN1cy9yZXNvdXJjZV90ZXN0LmMgXAorCitDRU5TVVNfUkVTT1VSQ0VfVEVTVF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoQ0VOU1VTX1JFU09VUkNFX1RFU1RfU1JDKSkpKQoraWZlcSAoJChOT19TRUNVUkUpLHRydWUpCisKKyMgWW91IGNhbid0IGJ1aWxkIHNlY3VyZSB0YXJnZXRzIGlmIHlvdSBkb24ndCBoYXZlIE9wZW5TU0wuCisKKyQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3Q6IG9wZW5zc2xfZGVwX2Vycm9yCisKK2Vsc2UKKworCisKKyQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3Q6ICQoQ0VOU1VTX1JFU09VUkNFX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEKKwkkKEUpICJbTERdICAgICAgTGlua2luZyAkQCIKKwkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAorCSQoUSkgJChMRCkgJChMREZMQUdTKSAkKENFTlNVU19SRVNPVVJDRV9URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hICQoTERMSUJTKSAkKExETElCU19TRUNVUkUpIC1vICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3QKKworZW5kaWYKKworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NvcmUvY2Vuc3VzL3Jlc291cmNlX3Rlc3QubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCisKK2RlcHNfY2Vuc3VzX3Jlc291cmNlX3Rlc3Q6ICQoQ0VOU1VTX1JFU09VUkNFX1RFU1RfT0JKUzoubz0uZGVwKQorCitpZm5lcSAoJChOT19TRUNVUkUpLHRydWUpCitpZm5lcSAoJChOT19ERVBTKSx0cnVlKQorLWluY2x1ZGUgJChDRU5TVVNfUkVTT1VSQ0VfVEVTVF9PQkpTOi5vPS5kZXApCitlbmRpZgorZW5kaWYKKworCiBDSEFOTkVMX0NSRUFURV9URVNUX1NSQyA9IFwKICAgICB0ZXN0L2NvcmUvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZV90ZXN0LmMgXAogCmRpZmYgLS1naXQgYS9iaW5kaW5nLmd5cCBiL2JpbmRpbmcuZ3lwCmluZGV4IDZlNGU1MTEuLjc3NjhmYWEgMTAwNjQ0Ci0tLSBhL2JpbmRpbmcuZ3lwCisrKyBiL2JpbmRpbmcuZ3lwCkBAIC03NDAsNiArNzQwLDcgQEAKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYycsCkBAIC03NDksNiArNzUwLDcgQEAKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMnLAogICAgICAgICAnc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMnLAogICAgICAgXSwKZGlmZiAtLWdpdCBhL2J1aWxkLnlhbWwgYi9idWlsZC55YW1sCmluZGV4IDYxN2ZhNzEuLmNhNDA2ZGUgMTAwNjQ0Ci0tLSBhL2J1aWxkLnlhbWwKKysrIGIvYnVpbGQueWFtbApAQCAtMTQsMTMgKzE0LDE2IEBACiAgIC0gaW5jbHVkZS9ncnBjL2NlbnN1cy5oCiAgIGhlYWRlcnM6CiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oCisgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaAogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgKKyAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaAogICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYwogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMKQEAgLTMwLDYgKzMzLDcgQEAKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYwogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jCisgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMKICAgcGx1Z2luOiBjZW5zdXNfZ3JwY19wbHVnaW4KICAgdXNlczoKQEAgLTEzMDUsNiArMTMwOSwxNiBAQAogICAtIGdycGMKICAgLSBncHJfdGVzdF91dGlsCiAgIC0gZ3ByCistIG5hbWU6IGNlbnN1c19yZXNvdXJjZV90ZXN0CisgIGJ1aWxkOiB0ZXN0CisgIGxhbmd1YWdlOiBjCisgIHNyYzoKKyAgLSB0ZXN0L2NvcmUvY2Vuc3VzL3Jlc291cmNlX3Rlc3QuYworICBkZXBzOgorICAtIGdycGNfdGVzdF91dGlsCisgIC0gZ3JwYworICAtIGdwcl90ZXN0X3V0aWwKKyAgLSBncHIKIC0gbmFtZTogY2hhbm5lbF9jcmVhdGVfdGVzdAogICBidWlsZDogdGVzdAogICBsYW5ndWFnZTogYwpkaWZmIC0tZ2l0IGEvY29uZmlnLm00IGIvY29uZmlnLm00CmluZGV4IDNkZjdjNmMuLjVjYjhmYmQgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5tNAorKysgYi9jb25maWcubTQKQEAgLTI1OSw2ICsyNTksNyBAQAogICAgIHNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jIFwKICAgICBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIFwKKyAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYyBcCkBAIC0yNjgsNiArMjY5LDcgQEAKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCisgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYyBcCiAgICAgc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMgXAogICAgIHNyYy9ib3Jpbmdzc2wvZXJyX2RhdGEuYyBcCmRpZmYgLS1naXQgYS9nUlBDLUNvcmUucG9kc3BlYyBiL2dSUEMtQ29yZS5wb2RzcGVjCmluZGV4IDA1YWQzZDcuLjUwNWQ4YWUgMTAwNjQ0Ci0tLSBhL2dSUEMtQ29yZS5wb2RzcGVjCisrKyBiL2dSUEMtQ29yZS5wb2RzcGVjCkBAIC00MDQsMTEgKzQwNCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYycsCkBAIC01ODgsNiArNTkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jJywKQEAgLTU5Nyw2ICs2MDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYycKIApAQCAtNzYzLDExICs3NjcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCcKICAgZW5kCiAKZGlmZiAtLWdpdCBhL2dycGMuZGVmIGIvZ3JwYy5kZWYKaW5kZXggYzJmODNmNS4uZTIyNTVkZiAxMDA2NDQKLS0tIGEvZ3JwYy5kZWYKKysrIGIvZ3JwYy5kZWYKQEAgLTIzLDE1ICsyMywxMCBAQAogICAgIGNlbnN1c190cmFjZV9zY2FuX3N0YXJ0CiAgICAgY2Vuc3VzX2dldF90cmFjZV9yZWNvcmQKICAgICBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmQKKyAgICBjZW5zdXNfZGVmaW5lX3Jlc291cmNlCisgICAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZQorICAgIGNlbnN1c19yZXNvdXJjZV9pZAogICAgIGNlbnN1c19yZWNvcmRfdmFsdWVzCi0gICAgY2Vuc3VzX3ZpZXdfY3JlYXRlCi0gICAgY2Vuc3VzX3ZpZXdfZGVsZXRlCi0gICAgY2Vuc3VzX3ZpZXdfbWV0cmljCi0gICAgY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9ucwotICAgIGNlbnN1c192aWV3X3RhZ3MKLSAgICBjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zCi0gICAgY2Vuc3VzX3ZpZXdfZ2V0X2RhdGEKLSAgICBjZW5zdXNfdmlld19yZXNldAogICAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlCiAgICAgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fbmFtZQogICAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX2Zvcl9sZXZlbApkaWZmIC0tZ2l0IGEvZ3JwYy5nZW1zcGVjIGIvZ3JwYy5nZW1zcGVjCmluZGV4IDE1YWQ2NmYuLjA2NTIxY2EgMTAwNzU1Ci0tLSBhL2dycGMuZ2Vtc3BlYworKysgYi9ncnBjLmdlbXNwZWMKQEAgLTMyMywxMSArMzIzLDEzIEBACiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jICkKQEAgLTUwNyw2ICs1MDksNyBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMgKQpAQCAtNTE2LDYgKzUxOSw3IEBACiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jICkKICAgcy5maWxlcyArPSAldyggdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9hZXMvaW50ZXJuYWwuaCApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuLmggYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuLmgKaW5kZXggOTY5OWFiZi4uMjU4NmI5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbi5oCisrKyBiL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW4uaApAQCAtMzEsNiArMzEsOSBAQAogICoKICAqLwogCisjaWZuZGVmIEdSUENYWF9JTVBMX0NPREVHRU5fQ09SRV9DT0RFR0VOX0gKKyNkZWZpbmUgR1JQQ1hYX0lNUExfQ09ERUdFTl9DT1JFX0NPREVHRU5fSAorCiAvLyBUaGlzIGZpbGUgc2hvdWxkIGJlIGNvbXBpbGVkIGFzIHBhcnQgb2YgZ3JwYysrLgogCiAjaW5jbHVkZSA8Z3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmg+CkBAIC04MywzICs4Niw1IEBACiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ3JwYworCisjZW5kaWYgIC8vIEdSUENYWF9JTVBMX0NPREVHRU5fQ09SRV9DT0RFR0VOX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYy9jZW5zdXMuaCBiL2luY2x1ZGUvZ3JwYy9jZW5zdXMuaAppbmRleCAzOWQ4N2JhLi42MmZmNDVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dycGMvY2Vuc3VzLmgKKysrIGIvaW5jbHVkZS9ncnBjL2NlbnN1cy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqCi0gKiBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTYsOSArNTYsMTEgQEAKIAogLyoqIFNodXRkb3duIGFuZCBzdGFydHVwIGNlbnN1cyBzdWJzeXN0ZW0uIFRoZSAnZmVhdHVyZXMnIGFyZ3VtZW50IHNob3VsZCBiZQogICogdGhlIE9SICh8KSBvZiBjZW5zdXNfZmVhdHVyZXMgdmFsdWVzLiBJZiBjZW5zdXMgZmFpbHMgdG8gaW5pdGlhbGl6ZSwgdGhlbgotICogY2Vuc3VzX2luaXRpYWxpemUoKSB3aWxsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLiBJdCBpcyBhbiBlcnJvciB0byBjYWxsCi0gKiBjZW5zdXNfaW5pdGlhbGl6ZSgpIG1vcmUgdGhhbiBvbmNlICh3aXRob3V0IGFuIGludGVydmVuaW5nCi0gKiBjZW5zdXNfc2h1dGRvd24oKSkuICovCisgKiBjZW5zdXNfaW5pdGlhbGl6ZSgpIHdpbGwgcmV0dXJuIC0xLCBvdGhlcndpc2UgdGhlIHNldCBvZiBlbmFibGVkIGZlYXR1cmVzCisgKiAod2hpY2ggbWF5IGJlIHNtYWxsZXIgdGhhbiB0aGF0IHByb3ZpZGVkIGluIHRoZSBgZmVhdHVyZXNgIGFyZ3VtZW50LCBzZWUKKyAqIGNlbnN1c19zdXBwb3J0ZWQoKSkgaXMgcmV0dXJuZWQuIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgY2Vuc3VzX2luaXRpYWxpemUoKQorICogbW9yZSB0aGFuIG9uY2UgKHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgY2Vuc3VzX3NodXRkb3duKCkpLiBUaGVzZSBmdW5jdGlvbnMKKyAqIGFyZSBub3QgdGhyZWFkLXNhZmUuICovCiBDRU5TVVNBUEkgaW50IGNlbnN1c19pbml0aWFsaXplKGludCBmZWF0dXJlcyk7CiBDRU5TVVNBUEkgdm9pZCBjZW5zdXNfc2h1dGRvd24odm9pZCk7CiAKQEAgLTQzMCwzMCArNDMyLDQ0IEBACiBDRU5TVVNBUEkgdm9pZCBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmQoKTsKIAogLyogQ29yZSBzdGF0cyBjb2xsZWN0aW9uIEFQSSdzLiBUaGUgZm9sbG93aW5nIGNvbmNlcHRzIGFyZSB1c2VkOgotICAgKiBBZ2dyZWdhdGlvbjogQSBjb2xsZWN0aW9uIG9mIHZhbHVlcy4gQ2Vuc3VzIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcKLSAgICAgICBhZ2dyZWdhdGlvbiB0eXBlczoKLSAgICAgICAgIFN1bSAtIGEgc2luZ2xlIHN1bW1hdGlvbiB0eXBlLiBUeXBpY2FsbHkgdXNlZCBmb3Iga2VlcGluZyAoZS5nLikKLSAgICAgICAgICAgY291bnRzIG9mIGV2ZW50cy4KLSAgICAgICAgIERpc3RyaWJ1dGlvbiAtIHN0YXRpc3RpY2FsIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbiwgdXNlZCBmb3IKLSAgICAgICAgICAgcmVjb3JkaW5nIGF2ZXJhZ2UsIHN0YW5kYXJkIGRldmlhdGlvbiBldGMuCi0gICAgICAgICBIaXN0b2dyYW0gLSBhIGhpc3RvZ3JhbSBvZiBtZWFzdXJlbWVudHMgZmFsbGluZyBpbiBkZWZpbmVkIGJ1Y2tldAotICAgICAgICAgICBib3VuZGFyaWVzLgotICAgICAgICAgV2luZG93IC0gYSBjb3VudCBvZiBldmVudHMgdGhhdCBoYXBwZW4gaW4gcmVvbGxpbmcgdGltZSB3aW5kb3cuCi0gICAgIE5ldyBhZ2dyZWdhdGlvbiB0eXBlcyBjYW4gYmUgYWRkZWQgYnkgdGhlIHVzZXIsIGlmIGRlc2lyZWQgKHNlZQotICAgICBjZW5zdXNfcmVnaXN0ZXJfYWdncmVnYXRpb24oKSkuCi0gICAqIE1ldHJpYzogRWFjaCBtZWFzdXJlbWVudCBpcyBmb3IgYSBzaW5nbGUgbWV0cmljLiBFeGFtcGxlcyBpbmNsdWRlIFJQQwotICAgICBsYXRlbmN5LCBDUFUgc2Vjb25kcyBjb25zdW1lZCwgYW5kIGJ5dGVzIHRyYW5zbWl0dGVkLgotICAgKiBWaWV3OiBBIHZpZXcgaXMgYSBjb21iaW5hdGlvbiBvZiBhIG1ldHJpYywgYSB0YWcgc2V0IChpbiB3aGljaCB0aGUgdGFnCi0gICAgIHZhbHVlcyBhcmUgcmVndWxhciBleHByZXNzaW9ucykgYW5kIGEgc2V0IG9mIGFnZ3JlZ2F0aW9ucy4gV2hlbiBhCi0gICAgIG1lYXN1cmVtZW50IGZvciBhIG1ldHJpYyBtYXRjaGVzIHRoZSB2aWV3IHRhZ3MsIGl0IGlzIHJlY29yZGVkIChmb3IgZWFjaAotICAgICB1bmlxdWUgc2V0IG9mIHRhZ3MpIGFnYWluc3QgZWFjaCBhZ2dyZWdhdGlvbi4gRWFjaCBtZXRyaWMgY2FuIGhhdmUgYW4KLSAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiB2aWV3cyBieSB3aGljaCBpdCB3aWxsIGJlIGJyb2tlbiBkb3duLgorICAgKiBSZXNvdXJjZTogVXNlcnMgcmVjb3JkIG1lYXN1cmVtZW50cyBmb3IgYSBzaW5nbGUgcmVzb3VyY2UuIEV4YW1wbGVzCisgICAgIGluY2x1ZGUgUlBDIGxhdGVuY3ksIENQVSBzZWNvbmRzIGNvbnN1bWVkLCBhbmQgYnl0ZXMgdHJhbnNtaXR0ZWQuCisgICAqIEFnZ3JlZ2F0aW9uOiBBbiBhZ2dyZWdhdGlvbiBvZiBhIHNldCBvZiBtZWFzdXJlbWVudHMuIENlbnN1cyBzdXBwb3J0cyB0aGUKKyAgICAgICBmb2xsb3dpbmcgYWdncmVnYXRpb24gdHlwZXM6CisgICAgICAgKiBEaXN0cmlidXRpb24gLSBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24sIHVzZWQgZm9yCisgICAgICAgICByZWNvcmRpbmcgYXZlcmFnZSwgc3RhbmRhcmQgZGV2aWF0aW9uIGV0Yy4gQ2FuIGluY2x1ZGUgYSBoaXN0b2dyYW0uCisgICAgICAgKiBJbnRlcnZhbCAtIGEgY291bnQgb2YgZXZlbnRzIHRoYXQgaGFwcGVuIGluIGEgcm9sbGluZyB0aW1lIHdpbmRvdy4KKyAgICogVmlldzogQSB2aWV3IGlzIGEgY29tYmluYXRpb24gb2YgYSBSZXNvdXJjZSwgYSBzZXQgb2YgdGFnIGtleXMgYW5kIGFuCisgICAgIEFnZ3JlZ2F0aW9uLiBXaGVuIGEgbWVhc3VyZW1lbnQgZm9yIGEgUmVzb3VyY2UgbWF0Y2hlcyB0aGUgVmlldyB0YWdzLCBpdCBpcworICAgICByZWNvcmRlZCAoZm9yIGVhY2ggdW5pcXVlIHNldCBvZiB0YWcgdmFsdWVzKSB1c2luZyB0aGUgQWdncmVnYXRpb24gdHlwZS4KKyAgICAgRWFjaCByZXNvdXJjZSBjYW4gaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHZpZXdzIGJ5IHdoaWNoIGl0IHdpbGwgYmUKKyAgICAgYnJva2VuIGRvd24uCisKKyAgQ2Vuc3VzIHVzZXMgcHJvdG9zIHRvIGRlZmluZSBlYWNoIG9mIHRoZSBhYm92ZSwgYW5kIG91dHB1dCByZXN1bHRzLiBUaGlzCisgIGVuc3VyZXMgdW5pZmljYXRpb24gYWNyb3NzIHRoZSBkaWZmZXJlbnQgbGFuZ3VhZ2UgYW5kIHJ1bnRpbWUKKyAgaW1wbGVtZW50YXRpb25zLiBUaGUgcHJvdG8gZGVmaW5pdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNyYy9wcm90by9jZW5zdXMuCiAqLwogCisvKiBEZWZpbmUgYSBuZXcgcmVzb3VyY2UuIGByZXNvdXJjZV9wYmAgc2hvdWxkIGNvbnRhaW4gYW4gZW5jb2RlZCBSZXNvdXJjZQorICAgcHJvdG9idWYsIGByZXNvdXJjZV9wYl9zaXplYCBiZWluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiBSZXR1cm5zIGEgLXZlCisgICB2YWx1ZSBvbiBlcnJvciwgb3IgYSBwb3NpdGl2ZSAoPj0gMCkgcmVzb3VyY2UgaWQgKGZvciB1c2UgaW4KKyAgIGNlbnN1c19kZWxldGVfcmVzb3VyY2UoKSBhbmQgY2Vuc3VzX3JlY29yZF92YWx1ZXMoKSkuIEluIG9yZGVyIHRvIGJlIHZhbGlkLCBhCisgICByZXNvdXJjZSBtdXN0IGhhdmUgYSBuYW1lLCBhbmQgYXQgbGVhc3Qgb25lIG51bWVyYXRvciBpbiBpdCdzIHVuaXQgdHlwZS4gVGhlCisgICByZXNvdXJjZSBuYW1lIG11c3QgYmUgdW5pcXVlLCBhbmQgYW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCBpZiBpdCBpcyBub3QuICovCitDRU5TVVNBUEkgaW50MzJfdCBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKGNvbnN0IHVpbnQ4X3QgKnJlc291cmNlX3BiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVzb3VyY2VfcGJfc2l6ZSk7CisKKy8qIERlbGV0ZSBhIHJlc291cmNlIGNyZWF0ZWQgYnkgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZSgpLiAqLworQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZShpbnQzMl90IHJlc291cmNlX2lkKTsKKworLyogRGV0ZXJtaW5lIHRoZSBpZCBvZiBhIHJlc291cmNlLCBnaXZlbiBpdCdzIG5hbWUuIHJldHVybnMgLTEgaWYgdGhlIHJlc291cmNlCisgICBkb2VzIG5vdCBleGlzdC4gKi8KK0NFTlNVU0FQSSBpbnQzMl90IGNlbnN1c19yZXNvdXJjZV9pZChjb25zdCBjaGFyICpuYW1lKTsKKwogLyogQSBzaW5nbGUgdmFsdWUgdG8gYmUgcmVjb3JkZWQgY29tcHJpc2VzIHR3byBwYXJ0czogYW4gSUQgZm9yIHRoZSBwYXJ0aWN1bGFyCi0gKiBtZXRyaWMgYW5kIHRoZSB2YWx1ZSB0byBiZSByZWNvcmRlZCBhZ2FpbnN0IGl0LiAqLworICogcmVzb3VyY2UgYW5kIHRoZSB2YWx1ZSB0byBiZSByZWNvcmRlZCBhZ2FpbnN0IGl0LiAqLwogdHlwZWRlZiBzdHJ1Y3QgewotICB1aW50MzJfdCBtZXRyaWNfaWQ7CisgIGludDMyX3QgcmVzb3VyY2VfaWQ7CiAgIGRvdWJsZSB2YWx1ZTsKIH0gY2Vuc3VzX3ZhbHVlOwogCkBAIC00NjEsNzggKzQ3Nyw2IEBACiBDRU5TVVNBUEkgdm9pZCBjZW5zdXNfcmVjb3JkX3ZhbHVlcyhjZW5zdXNfY29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnN1c192YWx1ZSAqdmFsdWVzLCBzaXplX3QgbnZhbHVlcyk7CiAKLS8qKiBUeXBlIHJlcHJlc2VudGluZyBhIHBhcnRpY3VsYXIgYWdncmVnYXRpb24gKi8KLXR5cGVkZWYgc3RydWN0IGNlbnN1c19hZ2dyZWdhdGlvbl9vcHMgY2Vuc3VzX2FnZ3JlZ2F0aW9uX29wczsKLQotLyogUHJlZGVmaW5lZCBhZ2dyZWdhdGlvbiB0eXBlcywgZm9yIHVzZSB3aXRoIGNlbnN1c192aWV3X2NyZWF0ZSgpLiAqLwotZXh0ZXJuIGNlbnN1c19hZ2dyZWdhdGlvbl9vcHMgY2Vuc3VzX2FnZ19zdW07Ci1leHRlcm4gY2Vuc3VzX2FnZ3JlZ2F0aW9uX29wcyBjZW5zdXNfYWdnX2Rpc3RyaWJ1dGlvbjsKLWV4dGVybiBjZW5zdXNfYWdncmVnYXRpb25fb3BzIGNlbnN1c19hZ2dfaGlzdG9ncmFtOwotZXh0ZXJuIGNlbnN1c19hZ2dyZWdhdGlvbl9vcHMgY2Vuc3VzX2FnZ193aW5kb3c7Ci0KLS8qKiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gaW5zdGFudGlhdGUgYSBuZXcgYWdncmVnYXRpb24uIFVzZWQgaW4gdmlldwotICAgIGNvbnN0cnVjdGlvbiB2aWEgY2Vuc3VzX2RlZmluZV92aWV3KCkuICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNvbnN0IGNlbnN1c19hZ2dyZWdhdGlvbl9vcHMgKm9wczsKLSAgY29uc3Qgdm9pZCAqY3JlYXRlX2FyZzsgLyogQWFnZ3JlZ2F0aW9uIGluaXRpYWxpemF0aW9uIGFyZ3VtZW50LiAqLwotfSBjZW5zdXNfYWdncmVnYXRpb247Ci0KLS8qKiBBIGNlbnN1cyB2aWV3IHR5cGUuIE9wYXF1ZS4gKi8KLXR5cGVkZWYgc3RydWN0IGNlbnN1c192aWV3IGNlbnN1c192aWV3OwotCi0vKiogQ3JlYXRlIGEgbmV3IHZpZXcuCi0gIEBwYXJhbSBtZXRyaWNfaWQgTWV0cmljIHdpdGggd2hpY2ggdGhpcyB2aWV3IGlzIGFzc29jaWF0ZWQuCi0gIEBwYXJhbSB0YWdzIHRhZ3MgdGhhdCBkZWZpbmUgdGhlIHZpZXcuCi0gIEBwYXJhbSBhZ2dyZWdhdGlvbnMgYWdncmVnYXRpb25zIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB2aWV3Ci0gIEBwYXJhbSBuYWdncmVnYXRpb25zIG51bWJlciBvZiBhZ2dyZWdhdGlvbnMKLQotICBAcmV0dXJuIEEgbmV3IGNlbnN1cyB2aWV3Ci0qLwotCi0vKiBUT0RPKGF2ZWl0Y2gpOiBjb25zaWRlciBpZiBjb250ZXh0IGlzIHRoZSByaWdodCBhcmd1bWVudCB0eXBlIHRvIHBhc3MgaW4KLSAgIHRhZ3MuICovCi1DRU5TVVNBUEkgY2Vuc3VzX3ZpZXcgKmNlbnN1c192aWV3X2NyZWF0ZSgKLSAgICB1aW50MzJfdCBtZXRyaWNfaWQsIGNvbnN0IGNlbnN1c19jb250ZXh0ICp0YWdzLAotICAgIGNvbnN0IGNlbnN1c19hZ2dyZWdhdGlvbiAqYWdncmVnYXRpb25zLCBzaXplX3QgbmFnZ3JlZ2F0aW9ucyk7Ci0KLS8qKiBEZXN0cm95IGEgcHJldmlvdXNseSBjcmVhdGVkIHZpZXcuICovCi1DRU5TVVNBUEkgdm9pZCBjZW5zdXNfdmlld19kZWxldGUoY2Vuc3VzX3ZpZXcgKnZpZXcpOwotCi0vKiogTWV0cmljIElEIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcgKi8KLUNFTlNVU0FQSSBzaXplX3QgY2Vuc3VzX3ZpZXdfbWV0cmljKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIE51bWJlciBvZiBhZ2dyZWdhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHZpZXcuICovCi1DRU5TVVNBUEkgc2l6ZV90IGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnMoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpOwotCi0vKiogR2V0IHRhZ3MgYXNzb2NpYXRlZCB3aXRoIHZpZXcuICovCi1DRU5TVVNBUEkgY29uc3QgY2Vuc3VzX2NvbnRleHQgKmNlbnN1c192aWV3X3RhZ3MoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpOwotCi0vKiogR2V0IGFnZ3JlZ2F0aW9uIGRlc2NyaXB0b3JzIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcuICovCi1DRU5TVVNBUEkgY29uc3QgY2Vuc3VzX2FnZ3JlZ2F0aW9uICpjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zKAotICAgIGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIEhvbGRzIGFsbCB0aGUgYWdncmVnYXRpb24gZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHZpZXcgaW5zdGFudGlhdGlvbi4gRm9ybXMKLSAgcGFydCBvZiB0aGUgZGF0YSByZXR1cm5lZCBieSBjZW5zdXNfdmlld19kYXRhKCkuICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNvbnN0IGNlbnN1c19jb250ZXh0ICp0YWdzOyAvKiBUYWdzIGZvciB0aGlzIHNldCBvZiBhZ2dyZWdhdGlvbnMuICovCi0gIGNvbnN0IHZvaWQgKipkYXRhOyAvKiBPbmUgZGF0YSBzZXQgZm9yIGV2ZXJ5IGFnZ3JlZ2F0aW9uIGluIHRoZSB2aWV3LiAqLwotfSBjZW5zdXNfdmlld19hZ2dyZWdhdGlvbl9kYXRhOwotCi0vKiogQ2Vuc3VzIHZpZXcgZGF0YSBhcyByZXR1cm5lZCBieSBjZW5zdXNfdmlld19nZXRfZGF0YSgpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICBzaXplX3Qgbl90YWdfc2V0czsgLyogTnVtYmVyIG9mIHVuaXF1ZSB0YWcgc2V0cyB0aGF0IG1hdGNoZWQgdmlldy4gKi8KLSAgY29uc3QgY2Vuc3VzX3ZpZXdfYWdncmVnYXRpb25fZGF0YSAqZGF0YTsgLyogbl90YWdfc2V0cyBlbnRyaWVzICovCi19IGNlbnN1c192aWV3X2RhdGE7Ci0KLS8qKiBHZXQgZGF0YSBmcm9tIGFnZ3JlZ2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSB2aWV3LgotICBAcGFyYW0gdmlldyBWaWV3IGZyb20gd2hpY2ggdG8gZ2V0IGRhdGEuCi0gIEByZXR1cm4gRnVsbCBzZXQgb2YgZGF0YSBmb3IgYWxsIGFnZ3JlZ2F0aW9ucyBmb3IgdGhlIHZpZXcuCi0qLwotQ0VOU1VTQVBJIGNvbnN0IGNlbnN1c192aWV3X2RhdGEgKmNlbnN1c192aWV3X2dldF9kYXRhKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIFJlc2V0IGFsbCB2aWV3IGRhdGEgdG8gemVybyBmb3IgdGhlIHNwZWNpZmllZCB2aWV3ICovCi1DRU5TVVNBUEkgdm9pZCBjZW5zdXNfdmlld19yZXNldChjZW5zdXNfdmlldyAqdmlldyk7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9wYWNrYWdlLnhtbCBiL3BhY2thZ2UueG1sCmluZGV4IGNlZWQ4NTAuLmFiNzc4Y2IgMTAwNjQ0Ci0tLSBhL3BhY2thZ2UueG1sCisrKyBiL3BhY2thZ2UueG1sCkBAIC0zMzEsMTEgKzMzMSwxMyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19pbnRlcmZhY2UuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIgcm9sZT0ic3JjIiAvPgpAQCAtNTE1LDYgKzUxNyw3IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYyIgcm9sZT0ic3JjIiAvPgpAQCAtNTI0LDYgKzUyNyw3IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0idGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9hZXMvaW50ZXJuYWwuaCIgcm9sZT0ic3JjIiAvPgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YWE0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL2NlbnN1cy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIKKworLy8gQWRkIGJhc2UgUlBDIHJlc291cmNlIGRlZmluaXRpb25zIGZvciB1c2UgYnkgUlBDIHJ1bnRpbWUuCisvLworLy8gVE9ETyhhdmVpdGNoKTogQWxsIG9mIHRoZXNlIGFyZSBjdXJyZW50bHkgaGFyZHdpcmVkIGRlZmluaXRpb25zIGVuY29kZWQgaW4KKy8vIHRoZSBjb2RlIGluIHRoaXMgZmlsZS4gVGhlc2Ugc2hvdWxkIGJlIGNvbnZlcnRlZCB0byB1c2UgYW4gZXh0ZXJuYWwKKy8vIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtLCBpbiB3aGljaCB0aGVzZSByZXNvdXJjZXMgYXJlIGRlZmluZWQgaW4gYSB0ZXh0CisvLyBmaWxlLCB3aGljaCBpcyBjb21waWxlZCB0byAucGIgZm9ybWF0IGFuZCByZWFkIGJ5IHN0aWxsLXRvLWJlLXdyaXR0ZW4KKy8vIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zLgorCisvLyBEZWZpbmUgYWxsIGJhc2UgcmVzb3VyY2VzLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYnkgY2Vuc3VzIGluaXRpYWxpemF0aW9uLgordm9pZCBkZWZpbmVfYmFzZV9yZXNvdXJjZXMoKSB7CisgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0IG51bWVyYXRvciA9CisgICAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdF9TRUNTOworICByZXNvdXJjZSByID0geyJjbGllbnRfcnBjX2xhdGVuY3kiLCAgICAgICAgICAgICAvLyBuYW1lCisgICAgICAgICAgICAgICAgIkNsaWVudCBSUEMgbGF0ZW5jeSBpbiBzZWNvbmRzIiwgIC8vIGRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZWZpeAorICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuX251bWVyYXRvcnMKKyAgICAgICAgICAgICAgICAmbnVtZXJhdG9yLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtZXJhdG9ycworICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuX2Rlbm9taW5hdG9ycworICAgICAgICAgICAgICAgIE5VTEx9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZW5vbWluYXRvcnMKKyAgZGVmaW5lX3Jlc291cmNlKCZyKTsKKyAgciA9IChyZXNvdXJjZSl7InNlcnZlcl9ycGNfbGF0ZW5jeSIsICAgICAgICAgICAgIC8vIG5hbWUKKyAgICAgICAgICAgICAgICAgIlNlcnZlciBSUEMgbGF0ZW5jeSBpbiBzZWNvbmRzIiwgIC8vIGRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVmaXgKKyAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5fbnVtZXJhdG9ycworICAgICAgICAgICAgICAgICAmbnVtZXJhdG9yLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVtZXJhdG9ycworICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbl9kZW5vbWluYXRvcnMKKyAgICAgICAgICAgICAgICAgTlVMTH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbm9taW5hdG9ycworICBkZWZpbmVfcmVzb3VyY2UoJnIpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YTc2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX0NFTlNVU19CQVNFX1JFU09VUkNFU19ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfQ0VOU1VTX0JBU0VfUkVTT1VSQ0VTX0gKKworLyogRGVmaW5lIGFsbCBiYXNlIHJlc291cmNlcy4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJ5IGNlbnN1cyBpbml0aWFsaXphdGlvbi4gKi8KK3ZvaWQgZGVmaW5lX2Jhc2VfcmVzb3VyY2VzKCk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX0NFTlNVU19CQVNFX1JFU09VUkNFU19IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jCmluZGV4IGQ2MTQ2MzYuLjY0N2YwNjMgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jCisrKyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jCkBAIC01MywyOSArNTMsMjQgQEAKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX2ZpZWxkc1s1XSA9IHsKLSAgICBQQl9GSUVMRCggIDEsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIEZJUlNULCBnb29nbGVfY2Vuc3VzX01ldHJpYywgbmFtZSwgbmFtZSwgMCksCi0gICAgUEJfRklFTEQoICAyLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19NZXRyaWMsIGRlc2NyaXB0aW9uLCBuYW1lLCAwKSwKLSAgICBQQl9GSUVMRCggIDMsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCwgZGVzY3JpcHRpb24sICZnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfZmllbGRzKSwKLSAgICBQQl9GSUVMRCggIDQsIElOVDMyICAgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpYywgaWQsIHVuaXQsIDApLAorY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2ZpZWxkc1s0XSA9IHsKKyAgICBQQl9GSUVMRCggIDEsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIEZJUlNULCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCBuYW1lLCBuYW1lLCAwKSwKKyAgICBQQl9GSUVMRCggIDIsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCBkZXNjcmlwdGlvbiwgbmFtZSwgMCksCisgICAgUEJfRklFTEQoICAzLCBNRVNTQUdFICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCwgZGVzY3JpcHRpb24sICZnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9maWVsZHMpLAogICAgIFBCX0xBU1RfRklFTEQKIH07CiAKLWNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X2ZpZWxkc1syXSA9IHsKLSAgICBQQl9GSUVMRCggIDEsIFVFTlVNICAgLCBPUFRJT05BTCwgU1RBVElDICAsIEZJUlNULCBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXQsIHR5cGUsIHR5cGUsIDApLAorY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9maWVsZHNbNF0gPSB7CisgICAgUEJfRklFTEQoICAxLCBJTlQzMiAgICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXQsIHByZWZpeCwgcHJlZml4LCAwKSwKKyAgICBQQl9GSUVMRCggIDIsIFVFTlVNICAgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yLCBwcmVmaXgsIDApLAorICAgIFBCX0ZJRUxEKCAgMywgVUVOVU0gICAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvciwgbnVtZXJhdG9yLCAwKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9maWVsZHNbNF0gPSB7Ci0gICAgUEJfRklFTEQoICAxLCBJTlQzMiAgICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBwcmVmaXgsIHByZWZpeCwgMCksCi0gICAgUEJfRklFTEQoICAyLCBNRVNTQUdFICwgUkVQRUFURUQsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBudW1lcmF0b3IsIHByZWZpeCwgJmdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9maWVsZHMpLAotICAgIFBCX0ZJRUxEKCAgMywgTUVTU0FHRSAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IsIG51bWVyYXRvciwgJmdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9maWVsZHMpLAotICAgIFBCX0xBU1RfRklFTEQKLX07Ci0KLWNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZmllbGRzWzNdID0gewotICAgIFBCX09ORU9GX0ZJRUxEKG9wdGlvbnMsICAgMSwgTUVTU0FHRSAsIE9ORU9GLCBTVEFUSUMgICwgRklSU1QsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBidWNrZXRfYm91bmRhcmllcywgYnVja2V0X2JvdW5kYXJpZXMsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2ZpZWxkcyksCi0gICAgUEJfT05FT0ZfRklFTEQob3B0aW9ucywgICAyLCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIGludGVydmFsX2JvdW5kYXJpZXMsIGludGVydmFsX2JvdW5kYXJpZXMsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfZmllbGRzKSwKK2NvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZmllbGRzWzRdID0geworICAgIFBCX0ZJRUxEKCAgMSwgVUVOVU0gICAsIE9QVElPTkFMLCBTVEFUSUMgICwgRklSU1QsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCB0eXBlLCB0eXBlLCAwKSwKKyAgICBQQl9PTkVPRl9GSUVMRChvcHRpb25zLCAgIDIsIE1FU1NBR0UgLCBPTkVPRiwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgYnVja2V0X2JvdW5kYXJpZXMsIHR5cGUsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2ZpZWxkcyksCisgICAgUEJfT05FT0ZfRklFTEQob3B0aW9ucywgICAzLCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIGludGVydmFsX2JvdW5kYXJpZXMsIHR5cGUsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfZmllbGRzKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCkBAIC0xMjQsMjUgKzExOSwyNyBAQAogY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1ZpZXdfZmllbGRzWzZdID0gewogICAgIFBCX0ZJRUxEKCAgMSwgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgRklSU1QsIGdvb2dsZV9jZW5zdXNfVmlldywgbmFtZSwgbmFtZSwgMCksCiAgICAgUEJfRklFTEQoICAyLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19WaWV3LCBkZXNjcmlwdGlvbiwgbmFtZSwgMCksCi0gICAgUEJfRklFTEQoICAzLCBJTlQzMiAgICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19WaWV3LCBtZXRyaWNfaWQsIGRlc2NyaXB0aW9uLCAwKSwKLSAgICBQQl9GSUVMRCggIDQsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uLCBtZXRyaWNfaWQsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9maWVsZHMpLAorICAgIFBCX0ZJRUxEKCAgMywgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlldywgcmVzb3VyY2VfbmFtZSwgZGVzY3JpcHRpb24sIDApLAorICAgIFBCX0ZJRUxEKCAgNCwgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24sIHJlc291cmNlX25hbWUsICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9maWVsZHMpLAogICAgIFBCX0ZJRUxEKCAgNSwgU1RSSU5HICAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlldywgdGFnX2tleSwgYWdncmVnYXRpb24sIDApLAogICAgIFBCX0xBU1RfRklFTEQKIH07CiAKLWNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9maWVsZHNbNl0gPSB7Citjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZmllbGRzWzddID0gewogICAgIFBCX0ZJRUxEKCAgMSwgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgRklSU1QsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIG5hbWUsIG5hbWUsIDApLAogICAgIFBCX0ZJRUxEKCAgMiwgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRlc2NyaXB0aW9uLCBuYW1lLCAwKSwKLSAgICBQQl9PTkVPRl9GSUVMRChkYXRhLCAgIDMsIE1FU1NBR0UgLCBPTkVPRiwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkaXN0cmlidXRpb24sIGRlc2NyaXB0aW9uLCAmZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fZmllbGRzKSwKLSAgICBQQl9PTkVPRl9GSUVMRChkYXRhLCAgIDQsIE1FU1NBR0UgLCBPTkVPRiwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBpbnRlcnZhbF9zdGF0cywgZGVzY3JpcHRpb24sICZnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfZmllbGRzKSwKLSAgICBQQl9GSUVMRCggIDUsIE1FU1NBR0UgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCB0YWcsIGRhdGEuaW50ZXJ2YWxfc3RhdHMsICZnb29nbGVfY2Vuc3VzX1RhZ19maWVsZHMpLAorICAgIFBCX09ORU9GX0ZJRUxEKGRhdGEsICAgMywgVUlOVDY0ICAsIE9ORU9GLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGNvdW50LCBkZXNjcmlwdGlvbiwgMCksCisgICAgUEJfT05FT0ZfRklFTEQoZGF0YSwgICA0LCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGlzdHJpYnV0aW9uLCBkZXNjcmlwdGlvbiwgJmdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2ZpZWxkcyksCisgICAgUEJfT05FT0ZfRklFTEQoZGF0YSwgICA1LCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgaW50ZXJ2YWxfc3RhdHMsIGRlc2NyaXB0aW9uLCAmZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2ZpZWxkcyksCisgICAgUEJfRklFTEQoICA2LCBNRVNTQUdFICwgUkVQRUFURUQsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgdGFnLCBkYXRhLmludGVydmFsX3N0YXRzLCAmZ29vZ2xlX2NlbnN1c19UYWdfZmllbGRzKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uc19maWVsZHNbNF0gPSB7Ci0gICAgUEJfRklFTEQoICAxLCBNRVNTQUdFICwgUkVQRUFURUQsIENBTExCQUNLLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBhZ2dyZWdhdGlvbiwgYWdncmVnYXRpb24sICZnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ZpZWxkcyksCi0gICAgUEJfRklFTEQoICAyLCBNRVNTQUdFICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBzdGFydCwgYWdncmVnYXRpb24sICZnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9maWVsZHMpLAotICAgIFBCX0ZJRUxEKCAgMywgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgZW5kLCBzdGFydCwgJmdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2ZpZWxkcyksCitjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX2ZpZWxkc1s1XSA9IHsKKyAgICBQQl9GSUVMRCggIDEsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIEZJUlNULCBnb29nbGVfY2Vuc3VzX01ldHJpYywgdmlld19uYW1lLCB2aWV3X25hbWUsIDApLAorICAgIFBCX0ZJRUxEKCAgMiwgTUVTU0FHRSAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljLCBhZ2dyZWdhdGlvbiwgdmlld19uYW1lLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9maWVsZHMpLAorICAgIFBCX0ZJRUxEKCAgMywgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljLCBzdGFydCwgYWdncmVnYXRpb24sICZnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9maWVsZHMpLAorICAgIFBCX0ZJRUxEKCAgNCwgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljLCBlbmQsIHN0YXJ0LCAmZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZmllbGRzKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCkBAIC0xNTYsNyArMTUzLDcgQEAKICAqIG51bWJlcnMgb3IgZmllbGQgc2l6ZXMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gd2hhdCBjYW4gZml0IGluIDggb3IgMTYgYml0CiAgKiBmaWVsZCBkZXNjcmlwdG9ycy4KICAqLwotUEJfU1RBVElDX0FTU0VSVCgocGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCB1bml0KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBudW1lcmF0b3IpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzLCB3aW5kb3cpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93LCB3aW5kb3dfc2l6ZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmRpc3RyaWJ1dGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuaW50ZXJ2YWxfc3RhdHMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCB1bml0KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBudW1lcmF0b3IpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzLCB3aW5kb3cpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93LCB3aW5kb3dfc2l6ZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmRpc3RyaWJ1dGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuaW50ZXJ2YWxfc3RhdHMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCB0YWcpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMsIGFnZ3JlZ2F0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBzdGFydCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgZW5kKSA8IDY1NTM2KSwgWU9VX01VU1RfREVGSU5FX1BCX0ZJRUxEXzMyQklUX0ZPUl9NRVNTQUdFU19nb29nbGVfY2Vuc3VzX0R1cmF0aW9uX2dvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2dvb2dsZV9jZW5zdXNfTWV0cmljX2dvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9nb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2VfZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2dvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfZ29vZ2xlX2NlbnN1c19UYWdfZ29vZ2xlX2NlbnN1c19WaWV3X2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zKQorUEJfU1RBVElDX0FTU0VSVCgocGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCB1bml0KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uLCByYW5nZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvdywgd2luZG93X3NpemUpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmludGVydmFsX3N0YXRzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbiwgcmFuZ2UpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHMsIHdpbmRvdykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3LCBhZ2dyZWdhdGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuZGlzdHJpYnV0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIHRhZykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCBhZ2dyZWdhdGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCBzdGFydCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCBlbmQpIDwgNjU1MzYpLCBZT1VfTVVTVF9ERUZJTkVfUEJfRklFTERfMzJCSVRfRk9SX01FU1NBR0VTX2dvb2dsZV9jZW5zdXNfRHVyYXRpb25fZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9nb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc19nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19nb29nbGVfY2Vuc3VzX1RhZ19nb29nbGVfY2Vuc3VzX1ZpZXdfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9nb29nbGVfY2Vuc3VzX01ldHJpYykKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoUEJfRklFTERfMTZCSVQpICYmICFkZWZpbmVkKFBCX0ZJRUxEXzMyQklUKQpAQCAtMTY3LDcgKzE2NCw3IEBACiAgKiBudW1iZXJzIG9yIGZpZWxkIHNpemVzIHRoYXQgYXJlIGxhcmdlciB0aGFuIHdoYXQgY2FuIGZpdCBpbiB0aGUgZGVmYXVsdAogICogOCBiaXQgZGVzY3JpcHRvcnMuCiAgKi8KLVBCX1NUQVRJQ19BU1NFUlQoKHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHVuaXQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBudW1lcmF0b3IpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbiwgcmFuZ2UpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzLCB3aW5kb3cpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvdywgd2luZG93X3NpemUpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3LCBhZ2dyZWdhdGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmRpc3RyaWJ1dGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmludGVydmFsX3N0YXRzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvcikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCB0YWcpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBhZ2dyZWdhdGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMsIHN0YXJ0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgZW5kKSA8IDI1NiksIFlPVV9NVVNUX0RFRklORV9QQl9GSUVMRF8xNkJJVF9GT1JfTUVTU0FHRVNfZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9nb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9nb29nbGVfY2Vuc3VzX01ldHJpY19nb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX2dvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2dvb2dsZV9jZW5zdXNfVGFnX2dvb2dsZV9jZW5zdXNfVmlld19nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2dvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucykKK1BCX1NUQVRJQ19BU1NFUlQoKHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbiwgcmFuZ2UpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzLCB3aW5kb3cpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvdywgd2luZG93X3NpemUpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3LCBhZ2dyZWdhdGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmRpc3RyaWJ1dGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmludGVydmFsX3N0YXRzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCB0YWcpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIGFnZ3JlZ2F0aW9uKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCBzdGFydCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgZW5kKSA8IDI1NiksIFlPVV9NVVNUX0RFRklORV9QQl9GSUVMRF8xNkJJVF9GT1JfTUVTU0FHRVNfZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9nb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9nb29nbGVfY2Vuc3VzX1Jlc291cmNlX2dvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX2dvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2dvb2dsZV9jZW5zdXNfVGFnX2dvb2dsZV9jZW5zdXNfVmlld19nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2dvb2dsZV9jZW5zdXNfTWV0cmljKQogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmggYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaAppbmRleCBkMDQwZmUyLi5kYWU1ODNmIDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaAorKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaApAQCAtNDUsMTQgKzQ1LDIxIEBACiAjZW5kaWYKIAogLyogRW51bSBkZWZpbml0aW9ucyAqLwotdHlwZWRlZiBlbnVtIF9nb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZSB7Ci0gICAgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmVfVU5LTk9XTiA9IDAsCi0gICAgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmVfQklUUyA9IDEsCi0gICAgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmVfQllURVMgPSAyLAotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlX1NFQ1MgPSAzLAotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlX0NPUkVTID0gNCwKLSAgICBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZV9NQVhfVU5JVFMgPSA1Ci19IGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlOwordHlwZWRlZiBlbnVtIF9nb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCB7CisgICAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXRfVU5LTk9XTiA9IDAsCisgICAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXRfQklUUyA9IDEsCisgICAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXRfQllURVMgPSAyLAorICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X1NFQ1MgPSAzLAorICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X0NPUkVTID0gNCwKKyAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdF9NQVhfVU5JVFMgPSA1Cit9IGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0OworCit0eXBlZGVmIGVudW0gX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZSB7CisgICAgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlX1VOS05PV04gPSAwLAorICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZV9DT1VOVCA9IDEsCisgICAgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlX0RJU1RSSUJVVElPTiA9IDIsCisgICAgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlX0lOVEVSVkFMID0gMworfSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9BZ2dyZWdhdGlvblR5cGU7CiAKIC8qIFN0cnVjdCBkZWZpbml0aW9ucyAqLwogdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXMgewpAQCAtNjgsNiArNzUsOCBAQAogfSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHM7CiAKIHR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciB7CisgICAgYm9vbCBoYXNfdHlwZTsKKyAgICBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9BZ2dyZWdhdGlvblR5cGUgdHlwZTsKICAgICBwYl9zaXplX3Qgd2hpY2hfb3B0aW9uczsKICAgICB1bmlvbiB7CiAgICAgICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXMgYnVja2V0X2JvdW5kYXJpZXM7CkBAIC04OSwxNyArOTgsMTIgQEAKICAgICBpbnQzMl90IG5hbm9zOwogfSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uOwogCi10eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0IHsKLSAgICBib29sIGhhc190eXBlOwotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlIHR5cGU7Ci19IGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdDsKLQotdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCB7Cit0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXQgewogICAgIGJvb2wgaGFzX3ByZWZpeDsKICAgICBpbnQzMl90IHByZWZpeDsKICAgICBwYl9jYWxsYmFja190IG51bWVyYXRvcjsKICAgICBwYl9jYWxsYmFja190IGRlbm9taW5hdG9yOwotfSBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQ7Cit9IGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0OwogCiB0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19UYWcgewogICAgIGJvb2wgaGFzX2tleTsKQEAgLTEzNSwzNyArMTM5LDM2IEBACiB9IGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3c7CiAKIHR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX01ldHJpYyB7Ci0gICAgcGJfY2FsbGJhY2tfdCBuYW1lOwotICAgIHBiX2NhbGxiYWNrX3QgZGVzY3JpcHRpb247Ci0gICAgYm9vbCBoYXNfdW5pdDsKLSAgICBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQgdW5pdDsKLSAgICBib29sIGhhc19pZDsKLSAgICBpbnQzMl90IGlkOwotfSBnb29nbGVfY2Vuc3VzX01ldHJpYzsKLQotdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfVmlldyB7Ci0gICAgcGJfY2FsbGJhY2tfdCBuYW1lOwotICAgIHBiX2NhbGxiYWNrX3QgZGVzY3JpcHRpb247Ci0gICAgYm9vbCBoYXNfbWV0cmljX2lkOwotICAgIGludDMyX3QgbWV0cmljX2lkOwotICAgIGJvb2wgaGFzX2FnZ3JlZ2F0aW9uOwotICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yIGFnZ3JlZ2F0aW9uOwotICAgIHBiX2NhbGxiYWNrX3QgdGFnX2tleTsKLX0gZ29vZ2xlX2NlbnN1c19WaWV3OwotCi10eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zIHsKKyAgICBwYl9jYWxsYmFja190IHZpZXdfbmFtZTsKICAgICBwYl9jYWxsYmFja190IGFnZ3JlZ2F0aW9uOwogICAgIGJvb2wgaGFzX3N0YXJ0OwogICAgIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wIHN0YXJ0OwogICAgIGJvb2wgaGFzX2VuZDsKICAgICBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcCBlbmQ7Ci19IGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uczsKK30gZ29vZ2xlX2NlbnN1c19NZXRyaWM7CisKK3R5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX1Jlc291cmNlIHsKKyAgICBwYl9jYWxsYmFja190IG5hbWU7CisgICAgcGJfY2FsbGJhY2tfdCBkZXNjcmlwdGlvbjsKKyAgICBib29sIGhhc191bml0OworICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0IHVuaXQ7Cit9IGdvb2dsZV9jZW5zdXNfUmVzb3VyY2U7CisKK3R5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX1ZpZXcgeworICAgIHBiX2NhbGxiYWNrX3QgbmFtZTsKKyAgICBwYl9jYWxsYmFja190IGRlc2NyaXB0aW9uOworICAgIHBiX2NhbGxiYWNrX3QgcmVzb3VyY2VfbmFtZTsKKyAgICBib29sIGhhc19hZ2dyZWdhdGlvbjsKKyAgICBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciBhZ2dyZWdhdGlvbjsKKyAgICBwYl9jYWxsYmFja190IHRhZ19rZXk7Cit9IGdvb2dsZV9jZW5zdXNfVmlldzsKIAogdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24gewogICAgIHBiX2NhbGxiYWNrX3QgbmFtZTsKICAgICBwYl9jYWxsYmFja190IGRlc2NyaXB0aW9uOwogICAgIHBiX3NpemVfdCB3aGljaF9kYXRhOwogICAgIHVuaW9uIHsKKyAgICAgICAgdWludDY0X3QgY291bnQ7CiAgICAgICAgIGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbjsKICAgICAgICAgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzIGludGVydmFsX3N0YXRzOwogICAgIH0gZGF0YTsKQEAgLTE3NywxMCArMTgwLDkgQEAKIC8qIEluaXRpYWxpemVyIHZhbHVlcyBmb3IgbWVzc2FnZSBzdHJ1Y3RzICovCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRHVyYXRpb25faW5pdF9kZWZhdWx0ICAgICAge2ZhbHNlLCAwLCBmYWxzZSwgMH0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfaW5pdF9kZWZhdWx0ICAgICB7ZmFsc2UsIDAsIGZhbHNlLCAwfQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19pbml0X2RlZmF1bHQgICAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfaW5pdF9kZWZhdWx0LCBmYWxzZSwgMH0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X2luaXRfZGVmYXVsdCB7ZmFsc2UsIChnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZSkwfQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfaW5pdF9kZWZhdWx0IHtmYWxzZSwgMCwge3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9fQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X2RlZmF1bHQgezAsIHtnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2luaXRfZGVmYXVsdH19CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfaW5pdF9kZWZhdWx0ICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2luaXRfZGVmYXVsdH0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfaW5pdF9kZWZhdWx0IHtmYWxzZSwgMCwge3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X2RlZmF1bHQge2ZhbHNlLCAoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlKTAsIDAsIHtnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2luaXRfZGVmYXVsdH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfaW5pdF9kZWZhdWx0IHt7e05VTEx9LCBOVUxMfX0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2luaXRfZGVmYXVsdCB7e3tOVUxMfSwgTlVMTH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2luaXRfZGVmYXVsdCAge2ZhbHNlLCAwLCBmYWxzZSwgMCwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX2luaXRfZGVmYXVsdCwge3tOVUxMfSwgTlVMTH19CkBAIC0xODgsMTUgKzE5MCwxNCBAQAogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfaW5pdF9kZWZhdWx0IHt7e05VTEx9LCBOVUxMfX0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19pbml0X2RlZmF1bHQge2ZhbHNlLCBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX2luaXRfZGVmYXVsdCwgZmFsc2UsIDAsIGZhbHNlLCAwfQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1RhZ19pbml0X2RlZmF1bHQgICAgICAgICAgIHtmYWxzZSwgIiIsIGZhbHNlLCAiIn0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X2luaXRfZGVmYXVsdCAgICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgMCwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2luaXRfZGVmYXVsdCwge3tOVUxMfSwgTlVMTH19Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25faW5pdF9kZWZhdWx0ICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgMCwge2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2luaXRfZGVmYXVsdH0sIHt7TlVMTH0sIE5VTEx9fQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnNfaW5pdF9kZWZhdWx0IHt7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfZGVmYXVsdCwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfZGVmYXVsdH0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X2luaXRfZGVmYXVsdCAgICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2luaXRfZGVmYXVsdCwge3tOVUxMfSwgTlVMTH19CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25faW5pdF9kZWZhdWx0ICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgMCwgezB9LCB7e05VTEx9LCBOVUxMfX0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfaW5pdF9kZWZhdWx0ICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfaW5pdF9kZWZhdWx0LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfaW5pdF9kZWZhdWx0fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX2luaXRfemVybyAgICAgICAgIHtmYWxzZSwgMCwgZmFsc2UsIDB9CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfemVybyAgICAgICAge2ZhbHNlLCAwLCBmYWxzZSwgMH0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfaW5pdF96ZXJvICAgICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2luaXRfemVybywgZmFsc2UsIDB9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9pbml0X3plcm8ge2ZhbHNlLCAoZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmUpMH0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2luaXRfemVybyB7ZmFsc2UsIDAsIHt7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfX0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF96ZXJvIHswLCB7Z29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19pbml0X3plcm99fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2luaXRfemVybyAgICAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9pbml0X3plcm99CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2luaXRfemVybyB7ZmFsc2UsIDAsIHt7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfX0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF96ZXJvIHtmYWxzZSwgKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZSkwLCAwLCB7Z29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19pbml0X3plcm99fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2luaXRfemVybyB7e3tOVUxMfSwgTlVMTH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc19pbml0X3plcm8ge3t7TlVMTH0sIE5VTEx9fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9pbml0X3plcm8gICAgIHtmYWxzZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9pbml0X3plcm8sIHt7TlVMTH0sIE5VTEx9fQpAQCAtMjA0LDI1ICsyMDUsMjUgQEAKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2luaXRfemVybyAgICB7e3tOVUxMfSwgTlVMTH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfaW5pdF96ZXJvIHtmYWxzZSwgZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9pbml0X3plcm8sIGZhbHNlLCAwLCBmYWxzZSwgMH0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UYWdfaW5pdF96ZXJvICAgICAgICAgICAgICB7ZmFsc2UsICIiLCBmYWxzZSwgIiJ9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19pbml0X3plcm8gICAgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIDAsIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X3plcm8sIHt7TlVMTH0sIE5VTEx9fQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2luaXRfemVybyAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIDAsIHtnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9pbml0X3plcm99LCB7e05VTEx9LCBOVUxMfX0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zX2luaXRfemVybyB7e3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X3plcm8sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X3plcm99CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19pbml0X3plcm8gICAgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X3plcm8sIHt7TlVMTH0sIE5VTEx9fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2luaXRfemVybyAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIDAsIHswfSwge3tOVUxMfSwgTlVMTH19CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2luaXRfemVybyAgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfemVybywgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfemVyb30KIAogLyogRmllbGQgdGFncyAoZm9yIHVzZSBpbiBtYW51YWwgZW5jb2RpbmcvZGVjb2RpbmcpICovCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfYm91bmRzX3RhZyAxCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc193aW5kb3dfc2l6ZV90YWcgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfd2luZG93X3RhZyAgIDEKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfYnVja2V0X2JvdW5kYXJpZXNfdGFnIDEKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfYnVja2V0X2JvdW5kYXJpZXNfdGFnIDIKIAotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbnRlcnZhbF9ib3VuZGFyaWVzX3RhZyAyCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2ludGVydmFsX2JvdW5kYXJpZXNfdGFnIDMKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfdHlwZV90YWcgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9taW5fdGFnIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2VfbWF4X3RhZyAyCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRHVyYXRpb25fc2Vjb25kc190YWcgICAgICAgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX25hbm9zX3RhZyAgICAgICAgIDIKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X3R5cGVfdGFnICAxCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9wcmVmaXhfdGFnIDEKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X251bWVyYXRvcl90YWcgMgotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfZGVub21pbmF0b3JfdGFnIDMKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfcHJlZml4X3RhZyAxCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X251bWVyYXRvcl90YWcgMgorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9kZW5vbWluYXRvcl90YWcgMwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1RhZ19rZXlfdGFnICAgICAgICAgICAgICAgIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UYWdfdmFsdWVfdGFnICAgICAgICAgICAgICAyCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX3NlY29uZHNfdGFnICAgICAgMQpAQCAtMjM0LDMyICsyMzUsMzMgQEAKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd193aW5kb3dfc2l6ZV90YWcgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2NvdW50X3RhZyAyCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfbWVhbl90YWcgMwotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19uYW1lX3RhZyAgICAgICAgICAgIDEKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfZGVzY3JpcHRpb25fdGFnICAgICAyCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX3VuaXRfdGFnICAgICAgICAgICAgMwotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19pZF90YWcgICAgICAgICAgICAgIDQKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfdmlld19uYW1lX3RhZyAgICAgICAxCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2FnZ3JlZ2F0aW9uX3RhZyAgICAgMgorI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19zdGFydF90YWcgICAgICAgICAgIDMKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfZW5kX3RhZyAgICAgICAgICAgICA0CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfbmFtZV90YWcgICAgICAgICAgMQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2Rlc2NyaXB0aW9uX3RhZyAgIDIKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV91bml0X3RhZyAgICAgICAgICAzCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19uYW1lX3RhZyAgICAgICAgICAgICAgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfZGVzY3JpcHRpb25fdGFnICAgICAgIDIKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X21ldHJpY19pZF90YWcgICAgICAgICAzCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19yZXNvdXJjZV9uYW1lX3RhZyAgICAgMwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfYWdncmVnYXRpb25fdGFnICAgICAgIDQKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X3RhZ19rZXlfdGFnICAgICAgICAgICA1Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uc19hZ2dyZWdhdGlvbl90YWcgMQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnNfc3RhcnRfdGFnIDIKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zX2VuZF90YWcgICAzCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZGlzdHJpYnV0aW9uX3RhZyAzCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fY291bnRfdGFnICAgICAgMwogCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25faW50ZXJ2YWxfc3RhdHNfdGFnIDQKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9kaXN0cmlidXRpb25fdGFnIDQKKworI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ludGVydmFsX3N0YXRzX3RhZyA1CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fbmFtZV90YWcgICAgICAgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2Rlc2NyaXB0aW9uX3RhZyAyCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fdGFnX3RhZyAgICAgICAgNQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX3RhZ190YWcgICAgICAgIDYKIAogLyogU3RydWN0IGZpZWxkIGVuY29kaW5nIHNwZWNpZmljYXRpb24gZm9yIG5hbm9wYiAqLwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9maWVsZHNbM107CiBleHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9maWVsZHNbM107Ci1leHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX01ldHJpY19maWVsZHNbNV07Ci1leHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfZmllbGRzWzJdOwotZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2ZpZWxkc1s0XTsKLWV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2ZpZWxkc1szXTsKK2V4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfZmllbGRzWzRdOworZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZmllbGRzWzRdOworZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZmllbGRzWzRdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19maWVsZHNbMl07CiBleHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfZmllbGRzWzJdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fZmllbGRzWzVdOwpAQCAtMjY4LDEzICsyNzAsMTIgQEAKIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfZmllbGRzWzRdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19UYWdfZmllbGRzWzNdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19WaWV3X2ZpZWxkc1s2XTsKLWV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZmllbGRzWzZdOwotZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zX2ZpZWxkc1s0XTsKK2V4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZmllbGRzWzddOworZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19NZXRyaWNfZmllbGRzWzVdOwogCiAvKiBNYXhpbXVtIGVuY29kZWQgc2l6ZSBvZiBtZXNzYWdlcyAod2hlcmUga25vd24pICovCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRHVyYXRpb25fc2l6ZSAgICAgICAgICAgICAgMjIKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfc2l6ZSAgICAgICAgICAgICAyMgotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfc2l6ZSAgICAgIDIKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2Vfc2l6ZSAgICAxOAogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X3NpemUgIDQ0CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGFnX3NpemUgICAgICAgICAgICAgICAgICAgNTE2CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmMgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmMKaW5kZXggMzAwNGExZi4uOWRhY2MxNyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5jCisrKyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuYwpAQCAtMTI3LDEzICsxMjcsMTQgQEAKICAgZ3JwY19jYWxsX25leHRfb3AoZXhlY19jdHgsIGVsZW0sIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgY2xpZW50X2luaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICpjbGllbnRfaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGNhbGxfZGF0YSAqZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgR1BSX0FTU0VSVChkICE9IE5VTEwpOwogICBtZW1zZXQoZCwgMCwgc2l6ZW9mKCpkKSk7CiAgIGQtPnN0YXJ0X3RzID0gZ3ByX25vdyhHUFJfQ0xPQ0tfUkVBTFRJTUUpOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiBzdGF0aWMgdm9pZCBjbGllbnRfZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCkBAIC0xNDUsMTUgKzE0NiwxNiBAQAogICAvKiBUT0RPKGhvbmd5dSk6IHJlY29yZCBycGMgY2xpZW50IHN0YXRzIGFuZCBjZW5zdXNfcnBjX2VuZF9vcCBoZXJlICovCiB9CiAKLXN0YXRpYyB2b2lkIHNlcnZlcl9pbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqc2VydmVyX2luaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBjYWxsX2RhdGEgKmQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIEdQUl9BU1NFUlQoZCAhPSBOVUxMKTsKICAgbWVtc2V0KGQsIDAsIHNpemVvZigqZCkpOwogICBkLT5zdGFydF90cyA9IGdwcl9ub3coR1BSX0NMT0NLX1JFQUxUSU1FKTsKICAgLyogVE9ETyhob25neXUpOiBjYWxsIGNlbnN1c190cmFjaW5nX3N0YXJ0X29wIGhlcmUuICovCiAgIGdycGNfY2xvc3VyZV9pbml0KCZkLT5maW5pc2hfcmVjdiwgc2VydmVyX29uX2RvbmVfcmVjdiwgZWxlbSk7CisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIHN0YXRpYyB2b2lkIHNlcnZlcl9kZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvaW5pdGlhbGl6ZS5jIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9pbml0aWFsaXplLmMKaW5kZXggODk2Mjc2ZS4uNTVjYmJlOCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9pbml0aWFsaXplLmMKKysrIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9pbml0aWFsaXplLmMKQEAgLTMyLDE5ICszMiwzMSBAQAogICovCiAKICNpbmNsdWRlIDxncnBjL2NlbnN1cy5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgiCiAKIHN0YXRpYyBpbnQgZmVhdHVyZXNfZW5hYmxlZCA9IENFTlNVU19GRUFUVVJFX05PTkU7CiAKIGludCBjZW5zdXNfaW5pdGlhbGl6ZShpbnQgZmVhdHVyZXMpIHsKICAgaWYgKGZlYXR1cmVzX2VuYWJsZWQgIT0gQ0VOU1VTX0ZFQVRVUkVfTk9ORSkgewogICAgIC8vIE11c3QgaGF2ZSBiZWVuIGEgcHJldmlvdXMgY2FsbCB0byBjZW5zdXNfaW5pdGlhbGl6ZTsgcmV0dXJuIGVycm9yCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIC0xOwogICB9Ci0gIGZlYXR1cmVzX2VuYWJsZWQgPSBmZWF0dXJlczsKLSAgcmV0dXJuIDA7CisgIGZlYXR1cmVzX2VuYWJsZWQgPSBmZWF0dXJlcyAmIENFTlNVU19GRUFUVVJFX0FMTDsKKyAgaWYgKGZlYXR1cmVzICYgQ0VOU1VTX0ZFQVRVUkVfU1RBVFMpIHsKKyAgICBpbml0aWFsaXplX3Jlc291cmNlcygpOworICAgIGRlZmluZV9iYXNlX3Jlc291cmNlcygpOworICB9CisKKyAgcmV0dXJuIGZlYXR1cmVzX2VuYWJsZWQ7CiB9CiAKLXZvaWQgY2Vuc3VzX3NodXRkb3duKHZvaWQpIHsgZmVhdHVyZXNfZW5hYmxlZCA9IENFTlNVU19GRUFUVVJFX05PTkU7IH0KK3ZvaWQgY2Vuc3VzX3NodXRkb3duKHZvaWQpIHsKKyAgaWYgKGZlYXR1cmVzX2VuYWJsZWQgJiBDRU5TVVNfRkVBVFVSRV9TVEFUUykgeworICAgIHNodXRkb3duX3Jlc291cmNlcygpOworICB9CisgIGZlYXR1cmVzX2VuYWJsZWQgPSBDRU5TVVNfRkVBVFVSRV9OT05FOworfQogCiBpbnQgY2Vuc3VzX3N1cHBvcnRlZCh2b2lkKSB7CiAgIC8qIFRPRE8oYXZlaXRjaCk6IGltcHJvdmUgdGhpcyBhcyB3ZSBpbXBsZW1lbnQgZmVhdHVyZXMuLi4gKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgYi9zcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jCmluZGV4IGZlMjNkMTMuLjlmOTljNWIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMKKysrIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYwpAQCAtNjIsNDggKzYyLDMgQEAKICAgKHZvaWQpY29uc3VtZTsKICAgYWJvcnQoKTsKIH0KLQotY29uc3QgY2Vuc3VzX2FnZ3JlZ2F0aW9uICpjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLWNlbnN1c192aWV3ICpjZW5zdXNfdmlld19jcmVhdGUodWludDMyX3QgbWV0cmljX2lkLCBjb25zdCBjZW5zdXNfY29udGV4dCAqdGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2Vuc3VzX2FnZ3JlZ2F0aW9uICphZ2dyZWdhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYWdncmVnYXRpb25zKSB7Ci0gICh2b2lkKW1ldHJpY19pZDsKLSAgKHZvaWQpdGFnczsKLSAgKHZvaWQpYWdncmVnYXRpb25zOwotICAodm9pZCluYWdncmVnYXRpb25zOwotICBhYm9ydCgpOwotfQotCi1jb25zdCBjZW5zdXNfY29udGV4dCAqY2Vuc3VzX3ZpZXdfdGFncyhjb25zdCBjZW5zdXNfdmlldyAqdmlldykgewotICAodm9pZCl2aWV3OwotICBhYm9ydCgpOwotfQotCi12b2lkIGNlbnN1c192aWV3X2RlbGV0ZShjZW5zdXNfdmlldyAqdmlldykgewotICAodm9pZCl2aWV3OwotICBhYm9ydCgpOwotfQotCi1jb25zdCBjZW5zdXNfdmlld19kYXRhICpjZW5zdXNfdmlld19nZXRfZGF0YShjb25zdCBjZW5zdXNfdmlldyAqdmlldykgewotICAodm9pZCl2aWV3OwotICBhYm9ydCgpOwotfQotCi1zaXplX3QgY2Vuc3VzX3ZpZXdfbWV0cmljKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLXNpemVfdCBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLXZvaWQgY2Vuc3VzX3ZpZXdfcmVzZXQoY2Vuc3VzX3ZpZXcgKnZpZXcpIHsKLSAgKHZvaWQpdmlldzsKLSAgYWJvcnQoKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDQ0ZjAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jCkBAIC0wLDAgKzEsMzEyIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmgiCisKKyNpbmNsdWRlIDxncnBjL2NlbnN1cy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3luYy5oPgorCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisvLyBQcm90ZWN0IGxvY2FsIHJlc291cmNlIGRhdGEgc3RydWN0dXJlcy4KK3N0YXRpYyBncHJfbXUgcmVzb3VyY2VfbG9jazsKKworLy8gRGVsZXRlaW5nIGFuZCBjcmVhdGluZyByZXNvdXJjZXMgYXJlIHJlbGF0aXZlbHkgcmFyZSBldmVudHMsIGFuZCBzaG91bGQgbm90CisvLyBiZSBkb25lIGluIHRoZSBjcml0aWNhbCBwYXRoIG9mIHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSBjb2RlLiBXZSByZWNvcmQKKy8vIGN1cnJlbnQgcmVzb3VyY2UgaWQncyB1c2VkIGluIGEgc2ltcGxlIGFycmF5LCBhbmQganVzdCBzZWFyY2ggaXQgZWFjaCB0aW1lCisvLyB3ZSBuZWVkIHRvIGFzc2lnbiBhIG5ldyBpZCwgb3IgbG9vayB1cCBhIHJlc291cmNlLgorc3RhdGljIHJlc291cmNlICoqcmVzb3VyY2VzID0gTlVMTDsKKworLy8gTnVtYmVyIG9mIGVudHJpZXMgaW4gKnJlc291cmNlcworc3RhdGljIHNpemVfdCBuX3Jlc291cmNlcyA9IDA7CisKKy8vIE51bWJlciBvZiBkZWZpbmVkIHJlc291cmNlcworc3RhdGljIHNpemVfdCBuX2RlZmluZWRfcmVzb3VyY2VzID0gMDsKKwordm9pZCBpbml0aWFsaXplX3Jlc291cmNlcyh2b2lkKSB7CisgIGdwcl9tdV9pbml0KCZyZXNvdXJjZV9sb2NrKTsKKyAgZ3ByX211X2xvY2soJnJlc291cmNlX2xvY2spOworICBHUFJfQVNTRVJUKHJlc291cmNlcyA9PSBOVUxMICYmIG5fcmVzb3VyY2VzID09IDAgJiYgbl9kZWZpbmVkX3Jlc291cmNlcyA9PSAwKTsKKyAgZ3ByX211X3VubG9jaygmcmVzb3VyY2VfbG9jayk7Cit9CisKKy8vIERlbGV0ZSBhIHJlc291cmNlIGdpdmVuIGl0J3MgSUQuIFRoZSBJRCBtdXN0IGJlIGEgdmFsaWQgcmVzb3VyY2UgSUQuIE11c3QgYmUKKy8vIGNhbGxlZCB3aXRoIHJlc291cmNlX2xvY2sgaGVsZC4KK3N0YXRpYyB2b2lkIGRlbGV0ZV9yZXNvdXJjZV9sb2NrZWQoc2l6ZV90IHJpZCkgeworICBHUFJfQVNTRVJUKHJlc291cmNlc1tyaWRdICE9IE5VTEwpOworICBncHJfZnJlZShyZXNvdXJjZXNbcmlkXS0+bmFtZSk7CisgIGdwcl9mcmVlKHJlc291cmNlc1tyaWRdLT5kZXNjcmlwdGlvbik7CisgIGdwcl9mcmVlKHJlc291cmNlc1tyaWRdLT5udW1lcmF0b3JzKTsKKyAgZ3ByX2ZyZWUocmVzb3VyY2VzW3JpZF0tPmRlbm9taW5hdG9ycyk7CisgIGdwcl9mcmVlKHJlc291cmNlc1tyaWRdKTsKKyAgcmVzb3VyY2VzW3JpZF0gPSBOVUxMOworICBuX2RlZmluZWRfcmVzb3VyY2VzLS07Cit9CisKK3ZvaWQgc2h1dGRvd25fcmVzb3VyY2VzKHZvaWQpIHsKKyAgZ3ByX211X2xvY2soJnJlc291cmNlX2xvY2spOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5fcmVzb3VyY2VzOyBpKyspIHsKKyAgICBpZiAocmVzb3VyY2VzW2ldICE9IE5VTEwpIHsKKyAgICAgIGRlbGV0ZV9yZXNvdXJjZV9sb2NrZWQoaSk7CisgICAgfQorICB9CisgIEdQUl9BU1NFUlQobl9kZWZpbmVkX3Jlc291cmNlcyA9PSAwKTsKKyAgZ3ByX2ZyZWUocmVzb3VyY2VzKTsKKyAgcmVzb3VyY2VzID0gTlVMTDsKKyAgbl9yZXNvdXJjZXMgPSAwOworICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKK30KKworLy8gQ2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0cmluZyBmaWVsZHMgaW4gYSByZXNvdXJjZSBwcm90by4KK3N0YXRpYyBib29sIHZhbGlkYXRlX3N0cmluZyhwYl9pc3RyZWFtX3QgKnN0cmVhbSwgY29uc3QgcGJfZmllbGRfdCAqZmllbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFyZykgeworICByZXNvdXJjZSAqdnJlc291cmNlID0gKHJlc291cmNlICopKmFyZzsKKyAgc3dpdGNoIChmaWVsZC0+dGFnKSB7CisgICAgY2FzZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX25hbWVfdGFnOgorICAgICAgLy8gTmFtZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3RlcgorICAgICAgaWYgKHN0cmVhbS0+Ynl0ZXNfbGVmdCA9PSAwKSB7CisgICAgICAgIGdwcl9sb2coR1BSX0lORk8sICJaZXJvLWxlbmd0aCBSZXNvdXJjZSBuYW1lLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICB2cmVzb3VyY2UtPm5hbWUgPSBncHJfbWFsbG9jKHN0cmVhbS0+Ynl0ZXNfbGVmdCArIDEpOworICAgICAgdnJlc291cmNlLT5uYW1lW3N0cmVhbS0+Ynl0ZXNfbGVmdF0gPSAnXDAnOworICAgICAgaWYgKCFwYl9yZWFkKHN0cmVhbSwgKHVpbnQ4X3QgKil2cmVzb3VyY2UtPm5hbWUsIHN0cmVhbS0+Ynl0ZXNfbGVmdCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgLy8gQ2FuJ3QgaGF2ZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgcmVzb3VyY2UuCisgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5fcmVzb3VyY2VzOyBpKyspIHsKKyAgICAgICAgcmVzb3VyY2UgKmNvbXBhcmUgPSByZXNvdXJjZXNbaV07CisgICAgICAgIGlmIChjb21wYXJlID09IHZyZXNvdXJjZSB8fCBjb21wYXJlID09IE5VTEwpIGNvbnRpbnVlOworICAgICAgICBpZiAoc3RyY21wKGNvbXBhcmUtPm5hbWUsIHZyZXNvdXJjZS0+bmFtZSkgPT0gMCkgeworICAgICAgICAgIGdwcl9sb2coR1BSX0lORk8sICJEdXBsaWNhdGUgUmVzb3VyY2UgbmFtZSAlcy4iLCB2cmVzb3VyY2UtPm5hbWUpOworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2Rlc2NyaXB0aW9uX3RhZzoKKyAgICAgIGlmIChzdHJlYW0tPmJ5dGVzX2xlZnQgPT0gMCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIHZyZXNvdXJjZS0+ZGVzY3JpcHRpb24gPSBncHJfbWFsbG9jKHN0cmVhbS0+Ynl0ZXNfbGVmdCArIDEpOworICAgICAgdnJlc291cmNlLT5kZXNjcmlwdGlvbltzdHJlYW0tPmJ5dGVzX2xlZnRdID0gJ1wwJzsKKyAgICAgIGlmICghcGJfcmVhZChzdHJlYW0sICh1aW50OF90ICopdnJlc291cmNlLT5kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmJ5dGVzX2xlZnQpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAvLyBObyBvdGhlciBzdHJpbmcgZmllbGRzIGluIFJlc291cmNlLiBQcmludCB3YXJuaW5nIGFuZCBza2lwLgorICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgIlVua25vd24gc3RyaW5nIGZpZWxkIHR5cGUgaW4gUmVzb3VyY2UgcHJvdG9idWYuIik7CisgICAgICBpZiAoIXBiX3JlYWQoc3RyZWFtLCBOVUxMLCBzdHJlYW0tPmJ5dGVzX2xlZnQpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBEZWNvZGUgbnVtZXJhdG9ycy9kZW5vbWluYXRvcnMgaW4gYSBzdHJlYW0uIFRoZSBgY291bnRgIGFuZCBgYnVwYAorLy8gKEJhc2ljVW5pdCBwb2ludGVyKSBhcmUgcG9pbnRlcnMgdG8gdGhlIGFwcHJvcmlhdGUgZmllbGRzIGluIGEgcmVzb3VyY2UKKy8vIHN0cnVjdC4KK3N0YXRpYyBib29sIHZhbGlkYXRlX3VuaXRzX2hlbHBlcihwYl9pc3RyZWFtX3QgKnN0cmVhbSwgaW50ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCAqKmJ1cCkgeworICB3aGlsZSAoc3RyZWFtLT5ieXRlc19sZWZ0KSB7CisgICAgKCpjb3VudCkrKzsKKyAgICAvLyBIYXZlIHRvIGFsbG9jYXRlIGEgbmV3IGFycmF5IG9mIHZhbHVlcy4gTm9ybWFsIGNhc2UgaXMgMCBvciAxLCBzbworICAgIC8vIHRoaXMgc2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBhbiBpc3N1ZS4KKyAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCAqbmV3X2J1cCA9CisgICAgICAgIGdwcl9tYWxsb2MoKHNpemVfdCkqY291bnQgKiBzaXplb2YoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQpKTsKKyAgICBpZiAoKmNvdW50ICE9IDEpIHsKKyAgICAgIG1lbWNweShuZXdfYnVwLCAqYnVwLAorICAgICAgICAgICAgIChzaXplX3QpKCpjb3VudCAtIDEpICogc2l6ZW9mKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0KSk7CisgICAgICBncHJfZnJlZSgqYnVwKTsKKyAgICB9CisgICAgKmJ1cCA9IG5ld19idXA7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAgaWYgKCFwYl9kZWNvZGVfdmFyaW50KHN0cmVhbSwgJnZhbHVlKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAqKCpidXAgKyAqY291bnQgLSAxKSA9IChnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCl2YWx1ZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVmFsaWRhdGUgdW5pdHMgZmllbGQgb2YgYSBSZXNvdXJjZSBwcm90by4KK3N0YXRpYyBib29sIHZhbGlkYXRlX3VuaXRzKHBiX2lzdHJlYW1fdCAqc3RyZWFtLCBjb25zdCBwYl9maWVsZF90ICpmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiphcmcpIHsKKyAgcmVzb3VyY2UgKnZyZXNvdXJjZSA9IChyZXNvdXJjZSAqKSgqYXJnKTsKKyAgc3dpdGNoIChmaWVsZC0+dGFnKSB7CisgICAgY2FzZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9udW1lcmF0b3JfdGFnOgorICAgICAgcmV0dXJuIHZhbGlkYXRlX3VuaXRzX2hlbHBlcihzdHJlYW0sICZ2cmVzb3VyY2UtPm5fbnVtZXJhdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZyZXNvdXJjZS0+bnVtZXJhdG9ycyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2Rlbm9taW5hdG9yX3RhZzoKKyAgICAgIHJldHVybiB2YWxpZGF0ZV91bml0c19oZWxwZXIoc3RyZWFtLCAmdnJlc291cmNlLT5uX2Rlbm9taW5hdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZyZXNvdXJjZS0+ZGVub21pbmF0b3JzKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIlVua25vd24gZmllbGQgdHlwZS4iKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBWYWxpZGF0ZSB0aGUgY29udGVudHMgb2YgYSBSZXNvdXJjZSBwcm90by4gYGlkYCBpcyB0aGUgaW50ZW5kZWQgcmVzb3VyY2UgaWQuCitzdGF0aWMgYm9vbCB2YWxpZGF0ZV9yZXNvdXJjZV9wYihjb25zdCB1aW50OF90ICpyZXNvdXJjZV9wYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZXNvdXJjZV9wYl9zaXplLCBzaXplX3QgaWQpIHsKKyAgR1BSX0FTU0VSVChpZCA8IG5fcmVzb3VyY2VzKTsKKyAgaWYgKHJlc291cmNlX3BiID09IE5VTEwpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSB2cmVzb3VyY2U7CisgIHZyZXNvdXJjZS5uYW1lLmZ1bmNzLmRlY29kZSA9ICZ2YWxpZGF0ZV9zdHJpbmc7CisgIHZyZXNvdXJjZS5uYW1lLmFyZyA9IHJlc291cmNlc1tpZF07CisgIHZyZXNvdXJjZS5kZXNjcmlwdGlvbi5mdW5jcy5kZWNvZGUgPSAmdmFsaWRhdGVfc3RyaW5nOworICB2cmVzb3VyY2UuZGVzY3JpcHRpb24uYXJnID0gcmVzb3VyY2VzW2lkXTsKKyAgdnJlc291cmNlLnVuaXQubnVtZXJhdG9yLmZ1bmNzLmRlY29kZSA9ICZ2YWxpZGF0ZV91bml0czsKKyAgdnJlc291cmNlLnVuaXQubnVtZXJhdG9yLmFyZyA9IHJlc291cmNlc1tpZF07CisgIHZyZXNvdXJjZS51bml0LmRlbm9taW5hdG9yLmZ1bmNzLmRlY29kZSA9ICZ2YWxpZGF0ZV91bml0czsKKyAgdnJlc291cmNlLnVuaXQuZGVub21pbmF0b3IuYXJnID0gcmVzb3VyY2VzW2lkXTsKKworICBwYl9pc3RyZWFtX3Qgc3RyZWFtID0KKyAgICAgIHBiX2lzdHJlYW1fZnJvbV9idWZmZXIoKHVpbnQ4X3QgKilyZXNvdXJjZV9wYiwgcmVzb3VyY2VfcGJfc2l6ZSk7CisgIGlmICghcGJfZGVjb2RlKCZzdHJlYW0sIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfZmllbGRzLCAmdnJlc291cmNlKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAvLyBBIFJlc291cmNlIG11c3QgaGF2ZSBhIG5hbWUsIGEgdW5pdCwgd2l0aCBhdCBsZWFzdCBvbmUgbnVtZXJhdG9yLgorICByZXR1cm4gKHJlc291cmNlc1tpZF0tPm5hbWUgIT0gTlVMTCAmJiB2cmVzb3VyY2UuaGFzX3VuaXQgJiYKKyAgICAgICAgICByZXNvdXJjZXNbaWRdLT5uX251bWVyYXRvcnMgPiAwKTsKK30KKworLy8gQWxsb2NhdGUgYSBibGFuayByZXNvdXJjZSwgYW5kIHJldHVybiBhc3NvY2lhdGVkIElELiBNdXN0IGJlIGNhbGxlZCB3aXRoCisvLyByZXNvdXJjZV9sb2NrIGhlbGQuCitzaXplX3QgYWxsb2NhdGVfcmVzb3VyY2Uodm9pZCkgeworICAvLyB1c2UgbmV4dF9pZCB0byBvcHRpbWl6ZSBleHBlY3RlZCBwbGFjZW1lbnQgb2YgbmV4dCBuZXcgcmVzb3VyY2UuCisgIHN0YXRpYyBzaXplX3QgbmV4dF9pZCA9IDA7CisgIHNpemVfdCBpZCA9IG5fcmVzb3VyY2VzOyAgLy8gcmVzb3VyY2UgSUQgLSBpbml0aWFsaXplIHRvIGludmFsaWQgdmFsdWUuCisgIC8vIEV4cGFuZCByZXNvdXJjZXMgaWYgbmVlZGVkLgorICBpZiAobl9yZXNvdXJjZXMgPT0gbl9kZWZpbmVkX3Jlc291cmNlcykgeworICAgIHNpemVfdCBuZXdfbl9yZXNvdXJjZXMgPSBuX3Jlc291cmNlcyA/IG5fcmVzb3VyY2VzICogMiA6IDI7CisgICAgcmVzb3VyY2UgKipuZXdfcmVzb3VyY2VzID0gZ3ByX21hbGxvYyhuZXdfbl9yZXNvdXJjZXMgKiBzaXplb2YocmVzb3VyY2UgKikpOworICAgIG1lbWNweShuZXdfcmVzb3VyY2VzLCByZXNvdXJjZXMsIG5fcmVzb3VyY2VzICogc2l6ZW9mKHJlc291cmNlICopKTsKKyAgICBtZW1zZXQobmV3X3Jlc291cmNlcyArIG5fcmVzb3VyY2VzLCAwLAorICAgICAgICAgICAobmV3X25fcmVzb3VyY2VzIC0gbl9yZXNvdXJjZXMpICogc2l6ZW9mKHJlc291cmNlICopKTsKKyAgICBncHJfZnJlZShyZXNvdXJjZXMpOworICAgIHJlc291cmNlcyA9IG5ld19yZXNvdXJjZXM7CisgICAgbl9yZXNvdXJjZXMgPSBuZXdfbl9yZXNvdXJjZXM7CisgICAgaWQgPSBuX2RlZmluZWRfcmVzb3VyY2VzOworICB9IGVsc2UgeworICAgIEdQUl9BU1NFUlQobl9kZWZpbmVkX3Jlc291cmNlcyA8IG5fcmVzb3VyY2VzKTsKKyAgICAvLyBGaW5kIGEgZnJlZSBpZC4KKyAgICBmb3IgKHNpemVfdCBiYXNlID0gMDsgYmFzZSA8IG5fcmVzb3VyY2VzOyBiYXNlKyspIHsKKyAgICAgIGlkID0gKG5leHRfaWQgKyBiYXNlKSAlIG5fcmVzb3VyY2VzOworICAgICAgaWYgKHJlc291cmNlc1tpZF0gPT0gTlVMTCkgYnJlYWs7CisgICAgfQorICB9CisgIEdQUl9BU1NFUlQoaWQgPCBuX3Jlc291cmNlcyAmJiByZXNvdXJjZXNbaWRdID09IE5VTEwpOworICByZXNvdXJjZXNbaWRdID0gZ3ByX21hbGxvYyhzaXplb2YocmVzb3VyY2UpKTsKKyAgbWVtc2V0KHJlc291cmNlc1tpZF0sIDAsIHNpemVvZihyZXNvdXJjZSkpOworICBuX2RlZmluZWRfcmVzb3VyY2VzKys7CisgIG5leHRfaWQgPSAoaWQgKyAxKSAlIG5fcmVzb3VyY2VzOworICByZXR1cm4gaWQ7Cit9CisKK2ludDMyX3QgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZShjb25zdCB1aW50OF90ICpyZXNvdXJjZV9wYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVzb3VyY2VfcGJfc2l6ZSkgeworICBpZiAocmVzb3VyY2VfcGIgPT0gTlVMTCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIHNpemVfdCBpZCA9IGFsbG9jYXRlX3Jlc291cmNlKCk7CisgIC8vIFZhbGlkYXRlIHBiLCBleHRyYWN0IG5hbWUuCisgIGlmICghdmFsaWRhdGVfcmVzb3VyY2VfcGIocmVzb3VyY2VfcGIsIHJlc291cmNlX3BiX3NpemUsIGlkKSkgeworICAgIGRlbGV0ZV9yZXNvdXJjZV9sb2NrZWQoaWQpOworICAgIGdwcl9tdV91bmxvY2soJnJlc291cmNlX2xvY2spOworICAgIHJldHVybiAtMTsKKyAgfQorICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgcmV0dXJuIChpbnQzMl90KWlkOworfQorCit2b2lkIGNlbnN1c19kZWxldGVfcmVzb3VyY2UoaW50MzJfdCByaWQpIHsKKyAgZ3ByX211X2xvY2soJnJlc291cmNlX2xvY2spOworICBpZiAocmlkID49IDAgJiYgKHNpemVfdClyaWQgPCBuX3Jlc291cmNlcyAmJiByZXNvdXJjZXNbcmlkXSAhPSBOVUxMKSB7CisgICAgZGVsZXRlX3Jlc291cmNlX2xvY2tlZCgoc2l6ZV90KXJpZCk7CisgIH0KKyAgZ3ByX211X3VubG9jaygmcmVzb3VyY2VfbG9jayk7Cit9CisKK2ludDMyX3QgY2Vuc3VzX3Jlc291cmNlX2lkKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgZ3ByX211X2xvY2soJnJlc291cmNlX2xvY2spOworICBmb3IgKGludDMyX3QgaWQgPSAwOyAoc2l6ZV90KWlkIDwgbl9yZXNvdXJjZXM7IGlkKyspIHsKKyAgICBpZiAocmVzb3VyY2VzW2lkXSAhPSBOVUxMICYmIHN0cmNtcChyZXNvdXJjZXNbaWRdLT5uYW1lLCBuYW1lKSA9PSAwKSB7CisgICAgICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgICAgIHJldHVybiBpZDsKKyAgICB9CisgIH0KKyAgZ3ByX211X3VubG9jaygmcmVzb3VyY2VfbG9jayk7CisgIHJldHVybiAtMTsKK30KKworaW50MzJfdCBkZWZpbmVfcmVzb3VyY2UoY29uc3QgcmVzb3VyY2UgKmJhc2UpIHsKKyAgR1BSX0FTU0VSVChiYXNlICE9IE5VTEwgJiYgYmFzZS0+bmFtZSAhPSBOVUxMICYmIGJhc2UtPm5fbnVtZXJhdG9ycyA+IDAgJiYKKyAgICAgICAgICAgICBiYXNlLT5udW1lcmF0b3JzICE9IE5VTEwpOworICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIHNpemVfdCBpZCA9IGFsbG9jYXRlX3Jlc291cmNlKCk7CisgIHNpemVfdCBsZW4gPSBzdHJsZW4oYmFzZS0+bmFtZSkgKyAxOworICByZXNvdXJjZXNbaWRdLT5uYW1lID0gZ3ByX21hbGxvYyhsZW4pOworICBtZW1jcHkocmVzb3VyY2VzW2lkXS0+bmFtZSwgYmFzZS0+bmFtZSwgbGVuKTsKKyAgaWYgKGJhc2UtPmRlc2NyaXB0aW9uKSB7CisgICAgbGVuID0gc3RybGVuKGJhc2UtPmRlc2NyaXB0aW9uKSArIDE7CisgICAgcmVzb3VyY2VzW2lkXS0+ZGVzY3JpcHRpb24gPSBncHJfbWFsbG9jKGxlbik7CisgICAgbWVtY3B5KHJlc291cmNlc1tpZF0tPmRlc2NyaXB0aW9uLCBiYXNlLT5kZXNjcmlwdGlvbiwgbGVuKTsKKyAgfQorICByZXNvdXJjZXNbaWRdLT5wcmVmaXggPSBiYXNlLT5wcmVmaXg7CisgIHJlc291cmNlc1tpZF0tPm5fbnVtZXJhdG9ycyA9IGJhc2UtPm5fbnVtZXJhdG9yczsKKyAgbGVuID0gKHNpemVfdCliYXNlLT5uX251bWVyYXRvcnMgKiBzaXplb2YoKmJhc2UtPm51bWVyYXRvcnMpOworICByZXNvdXJjZXNbaWRdLT5udW1lcmF0b3JzID0gZ3ByX21hbGxvYyhsZW4pOworICBtZW1jcHkocmVzb3VyY2VzW2lkXS0+bnVtZXJhdG9ycywgYmFzZS0+bnVtZXJhdG9ycywgbGVuKTsKKyAgcmVzb3VyY2VzW2lkXS0+bl9kZW5vbWluYXRvcnMgPSBiYXNlLT5uX2Rlbm9taW5hdG9yczsKKyAgaWYgKGJhc2UtPm5fZGVub21pbmF0b3JzICE9IDApIHsKKyAgICBsZW4gPSAoc2l6ZV90KWJhc2UtPm5fZGVub21pbmF0b3JzICogc2l6ZW9mKCpiYXNlLT5kZW5vbWluYXRvcnMpOworICAgIHJlc291cmNlc1tpZF0tPmRlbm9taW5hdG9ycyA9IGdwcl9tYWxsb2MobGVuKTsKKyAgICBtZW1jcHkocmVzb3VyY2VzW2lkXS0+ZGVub21pbmF0b3JzLCBiYXNlLT5kZW5vbWluYXRvcnMsIGxlbik7CisgIH0KKyAgZ3ByX211X3VubG9jaygmcmVzb3VyY2VfbG9jayk7CisgIHJldHVybiAoaW50MzJfdClpZDsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTFiZmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisvKiBDZW5zdXMtaW50ZXJuYWwgcmVzb3VyY2UgZGVmaW5pdGlvbiBhbmQgbWFuaXBsdWF0aW9uIGZ1bmN0aW9ucy4gKi8KKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9DRU5TVVNfUkVTT1VSQ0VfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX0NFTlNVU19SRVNPVVJDRV9ICisKKyNpbmNsdWRlIDxncnBjL2dycGMuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIKKworLyogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSByZXNvdXJjZS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgY2hhciAqbmFtZTsKKyAgY2hhciAqZGVzY3JpcHRpb247CisgIGludDMyX3QgcHJlZml4OworICBpbnQgbl9udW1lcmF0b3JzOworICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCAqbnVtZXJhdG9yczsKKyAgaW50IG5fZGVub21pbmF0b3JzOworICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCAqZGVub21pbmF0b3JzOworfSByZXNvdXJjZTsKKworLyogSW5pdGlhbGl6ZSBhbmQgc2h1dGRvd24gdGhlIHJlc291cmNlcyBzdWJzeXN0ZW0uICovCit2b2lkIGluaXRpYWxpemVfcmVzb3VyY2VzKHZvaWQpOwordm9pZCBzaHV0ZG93bl9yZXNvdXJjZXModm9pZCk7CisKKy8qIEFkZCBhIG5ldyByZXNvdXJjZSwgZ2l2ZW4gYSBwcm9wb3NlZCByZXNvdXJjZSBzdHJ1Y3R1cmUuIFJldHVybnMgdGhlCisgICByZXNvdXJjZSBJRCwgb3IgLXZlIG9uIGZhaWx1cmUuCisgICBUT0RPKGF2ZWl0Y2gpOiB0aGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGFkZGl0aW9uIG9mIHRoZSBiYXNlCisgICByZXNvdXJjZXMuIEl0IHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byBhZGQgcmVzb3VyY2VzCisgICBmcm9tIGNvbmZpZ3VyYXRpb24gZmlsZXMuICovCitpbnQzMl90IGRlZmluZV9yZXNvdXJjZShjb25zdCByZXNvdXJjZSAqYmFzZSk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX0NFTlNVU19SRVNPVVJDRV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9jbGllbnRfY2hhbm5lbC5jIGIvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvY2xpZW50X2NoYW5uZWwuYwppbmRleCA3Mzk0ODdhLi4yYzBjNGFiIDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9jbGllbnRfY2hhbm5lbC5jCisrKyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsLmMKQEAgLTQzNiwxMCArNDM2LDEyIEBACiB9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGdycGNfc3ViY2hhbm5lbF9jYWxsX2hvbGRlcl9pbml0KGVsZW0tPmNhbGxfZGF0YSwgY2NfcGlja19zdWJjaGFubmVsLCBlbGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5jYWxsX3N0YWNrKTsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmMgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmMKaW5kZXggZDA4OWNkNC4uZGYzNTkwNCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5jCisrKyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWwuYwpAQCAtNzAyLDE5ICs3MDIsMjYgQEAKICAgcmV0dXJuIEdFVF9DT05ORUNURURfU1VCQ0hBTk5FTChjLCBhY3EpOwogfQogCi1ncnBjX3N1YmNoYW5uZWxfY2FsbCAqZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbF9jcmVhdGVfY2FsbCgKK2dycGNfZXJyb3IgKmdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCiAgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWwgKmNvbiwKLSAgICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50KSB7CisgICAgZ3JwY19wb2xsaW5nX2VudGl0eSAqcG9sbGVudCwgZ3JwY19zdWJjaGFubmVsX2NhbGwgKipjYWxsKSB7CiAgIGdycGNfY2hhbm5lbF9zdGFjayAqY2hhbnN0ayA9IENIQU5ORUxfU1RBQ0tfRlJPTV9DT05ORUNUSU9OKGNvbik7Ci0gIGdycGNfc3ViY2hhbm5lbF9jYWxsICpjYWxsID0KLSAgICAgIGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfc3ViY2hhbm5lbF9jYWxsKSArIGNoYW5zdGstPmNhbGxfc3RhY2tfc2l6ZSk7Ci0gIGdycGNfY2FsbF9zdGFjayAqY2FsbHN0ayA9IFNVQkNIQU5ORUxfQ0FMTF9UT19DQUxMX1NUQUNLKGNhbGwpOwotICBjYWxsLT5jb25uZWN0aW9uID0gY29uOworICAqY2FsbCA9IGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfc3ViY2hhbm5lbF9jYWxsKSArIGNoYW5zdGstPmNhbGxfc3RhY2tfc2l6ZSk7CisgIGdycGNfY2FsbF9zdGFjayAqY2FsbHN0ayA9IFNVQkNIQU5ORUxfQ0FMTF9UT19DQUxMX1NUQUNLKCpjYWxsKTsKKyAgKCpjYWxsKS0+Y29ubmVjdGlvbiA9IGNvbjsgIC8vIFJlZiBpcyBhZGRlZCBiZWxvdy4KKyAgZ3JwY19lcnJvciAqZXJyb3IgPQorICAgICAgZ3JwY19jYWxsX3N0YWNrX2luaXQoZXhlY19jdHgsIGNoYW5zdGssIDEsIHN1YmNoYW5uZWxfY2FsbF9kZXN0cm95LCAqY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIGNhbGxzdGspOworICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgY29uc3QgY2hhciAqZXJyb3Jfc3RyaW5nID0gZ3JwY19lcnJvcl9zdHJpbmcoZXJyb3IpOworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiZXJyb3I6ICVzIiwgZXJyb3Jfc3RyaW5nKTsKKyAgICBncnBjX2Vycm9yX2ZyZWVfc3RyaW5nKGVycm9yX3N0cmluZyk7CisgICAgZ3ByX2ZyZWUoKmNhbGwpOworICAgIHJldHVybiBlcnJvcjsKKyAgfQogICBHUlBDX0NPTk5FQ1RFRF9TVUJDSEFOTkVMX1JFRihjb24sICJzdWJjaGFubmVsX2NhbGwiKTsKLSAgZ3JwY19jYWxsX3N0YWNrX2luaXQoZXhlY19jdHgsIGNoYW5zdGssIDEsIHN1YmNoYW5uZWxfY2FsbF9kZXN0cm95LCBjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjYWxsc3RrKTsKICAgZ3JwY19jYWxsX3N0YWNrX3NldF9wb2xsc2V0X29yX3BvbGxzZXRfc2V0KGV4ZWNfY3R4LCBjYWxsc3RrLCBwb2xsZW50KTsKLSAgcmV0dXJuIGNhbGw7CisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIGdycGNfY2FsbF9zdGFjayAqZ3JwY19zdWJjaGFubmVsX2NhbGxfZ2V0X2NhbGxfc3RhY2soCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmggYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmgKaW5kZXggOWZiZjNiNi4uNDBkOTBiZSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5oCisrKyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWwuaApAQCAtMTA4LDkgKzEwOCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX1NVQkNIQU5ORUxfUkVGX0VYVFJBX0FSR1MpOwogCiAvKiogY29uc3RydWN0IGEgc3ViY2hhbm5lbCBjYWxsICovCi1ncnBjX3N1YmNoYW5uZWxfY2FsbCAqZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbF9jcmVhdGVfY2FsbCgKK2dycGNfZXJyb3IgKmdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCiAgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWwgKmNvbm5lY3RlZF9zdWJjaGFubmVsLAotICAgIGdycGNfcG9sbGluZ19lbnRpdHkgKnBvbGxlbnQpOworICAgIGdycGNfcG9sbGluZ19lbnRpdHkgKnBvbGxlbnQsIGdycGNfc3ViY2hhbm5lbF9jYWxsICoqc3ViY2hhbm5lbF9jYWxsKTsKIAogLyoqIHByb2Nlc3MgYSB0cmFuc3BvcnQgbGV2ZWwgb3AgKi8KIHZvaWQgZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbF9wcm9jZXNzX3RyYW5zcG9ydF9vcCgKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWxfY2FsbF9ob2xkZXIuYyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWxfY2FsbF9ob2xkZXIuYwppbmRleCBiOTZhMGFkLi5iZTZkMDU0IDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmMKKysrIGIvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9jYWxsX2hvbGRlci5jCkBAIC04NCw2ICs4NCwxMSBAQAogICBncHJfZnJlZShob2xkZXItPndhaXRpbmdfb3BzKTsKIH0KIAorLy8gVGhlIGxvZ2ljIGhlcmUgaXMgZmFpcmx5IGNvbXBsaWNhdGVkLCBkdWUgdG8gKGEpIHRoZSBmYWN0IHRoYXQgd2UKKy8vIG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIHJlY2VpdmUgdGhlIHNlbmQgb3AgYmVmb3JlIHRoZQorLy8gaW5pdGlhbCBtZXRhZGF0YSBvcCwgYW5kIChiKSB0aGUgbmVlZCBmb3IgZWZmaWNpZW5jeSwgZXNwZWNpYWxseSBpbgorLy8gdGhlIHN0cmVhbWluZyBjYXNlLgorLy8gVE9ETyhjdGlsbGVyKTogRXhwbGFpbiB0aGlzIG1vcmUgdGhvcm91Z2hseS4KIHZvaWQgZ3JwY19zdWJjaGFubmVsX2NhbGxfaG9sZGVyX3BlcmZvcm1fb3AoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3ViY2hhbm5lbF9jYWxsX2hvbGRlciAqaG9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RyYW5zcG9ydF9zdHJlYW1fb3AgKm9wKSB7CkBAIC0xMjEsNyArMTI2LDggQEAKICAgfQogICAvKiBpZiB0aGlzIGlzIGEgY2FuY2VsbGF0aW9uLCB0aGVuIHdlIGNhbiByYWlzZSBvdXIgY2FuY2VsbGVkIGZsYWcgKi8KICAgaWYgKG9wLT5jYW5jZWxfZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7Ci0gICAgaWYgKCFncHJfYXRtX3JlbF9jYXMoJmhvbGRlci0+c3ViY2hhbm5lbF9jYWxsLCAwLCAxKSkgeworICAgIGlmICghZ3ByX2F0bV9yZWxfY2FzKCZob2xkZXItPnN1YmNoYW5uZWxfY2FsbCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ3ByX2F0bSkodWludHB0cl90KUNBTkNFTExFRF9DQUxMKSkgewogICAgICAgZ290byByZXRyeTsKICAgICB9IGVsc2UgewogICAgICAgc3dpdGNoIChob2xkZXItPmNyZWF0aW9uX3BoYXNlKSB7CkBAIC0xNTgsMTAgKzE2NCwxNyBAQAogICAvKiBpZiB3ZSd2ZSBnb3QgYSBzdWJjaGFubmVsLCB0aGVuIGxldCdzIGFzayBpdCB0byBjcmVhdGUgYSBjYWxsICovCiAgIGlmIChob2xkZXItPmNyZWF0aW9uX3BoYXNlID09IEdSUENfU1VCQ0hBTk5FTF9DQUxMX0hPTERFUl9OT1RfQ1JFQVRJTkcgJiYKICAgICAgIGhvbGRlci0+Y29ubmVjdGVkX3N1YmNoYW5uZWwgIT0gTlVMTCkgewotICAgIGdwcl9hdG1fcmVsX3N0b3JlKAotICAgICAgICAmaG9sZGVyLT5zdWJjaGFubmVsX2NhbGwsCi0gICAgICAgIChncHJfYXRtKSh1aW50cHRyX3QpZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbF9jcmVhdGVfY2FsbCgKLSAgICAgICAgICAgIGV4ZWNfY3R4LCBob2xkZXItPmNvbm5lY3RlZF9zdWJjaGFubmVsLCBob2xkZXItPnBvbGxlbnQpKTsKKyAgICBncnBjX3N1YmNoYW5uZWxfY2FsbCAqc3ViY2hhbm5lbF9jYWxsID0gTlVMTDsKKyAgICBncnBjX2Vycm9yICplcnJvciA9IGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCisgICAgICAgIGV4ZWNfY3R4LCBob2xkZXItPmNvbm5lY3RlZF9zdWJjaGFubmVsLCBob2xkZXItPnBvbGxlbnQsCisgICAgICAgICZzdWJjaGFubmVsX2NhbGwpOworICAgIGlmIChlcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgIHN1YmNoYW5uZWxfY2FsbCA9IENBTkNFTExFRF9DQUxMOworICAgICAgZmFpbF9sb2NrZWQoZXhlY19jdHgsIGhvbGRlciwgR1JQQ19FUlJPUl9SRUYoZXJyb3IpKTsKKyAgICAgIGdycGNfdHJhbnNwb3J0X3N0cmVhbV9vcF9maW5pc2hfd2l0aF9mYWlsdXJlKGV4ZWNfY3R4LCBvcCwgZXJyb3IpOworICAgIH0KKyAgICBncHJfYXRtX3JlbF9zdG9yZSgmaG9sZGVyLT5zdWJjaGFubmVsX2NhbGwsCisgICAgICAgICAgICAgICAgICAgICAgKGdwcl9hdG0pKHVpbnRwdHJfdClzdWJjaGFubmVsX2NhbGwpOwogICAgIHJldHJ5X3dhaXRpbmdfbG9ja2VkKGV4ZWNfY3R4LCBob2xkZXIpOwogICAgIGdvdG8gcmV0cnk7CiAgIH0KQEAgLTE4OSwxMCArMjAyLDE3IEBACiAgICAgICAgICAgICAgICAgR1JQQ19FUlJPUl9DUkVBVEVfUkVGRVJFTkNJTkcoCiAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxsZWQgYmVmb3JlIGNyZWF0aW5nIHN1YmNoYW5uZWwiLCAmZXJyb3IsIDEpKTsKICAgfSBlbHNlIHsKLSAgICBncHJfYXRtX3JlbF9zdG9yZSgKLSAgICAgICAgJmhvbGRlci0+c3ViY2hhbm5lbF9jYWxsLAotICAgICAgICAoZ3ByX2F0bSkodWludHB0cl90KWdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCi0gICAgICAgICAgICBleGVjX2N0eCwgaG9sZGVyLT5jb25uZWN0ZWRfc3ViY2hhbm5lbCwgaG9sZGVyLT5wb2xsZW50KSk7CisgICAgZ3JwY19zdWJjaGFubmVsX2NhbGwgKnN1YmNoYW5uZWxfY2FsbCA9IE5VTEw7CisgICAgZ3JwY19lcnJvciAqbmV3X2Vycm9yID0gZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbF9jcmVhdGVfY2FsbCgKKyAgICAgICAgZXhlY19jdHgsIGhvbGRlci0+Y29ubmVjdGVkX3N1YmNoYW5uZWwsIGhvbGRlci0+cG9sbGVudCwKKyAgICAgICAgJnN1YmNoYW5uZWxfY2FsbCk7CisgICAgaWYgKG5ld19lcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgIG5ld19lcnJvciA9IGdycGNfZXJyb3JfYWRkX2NoaWxkKG5ld19lcnJvciwgZXJyb3IpOworICAgICAgc3ViY2hhbm5lbF9jYWxsID0gQ0FOQ0VMTEVEX0NBTEw7CisgICAgICBmYWlsX2xvY2tlZChleGVjX2N0eCwgaG9sZGVyLCBuZXdfZXJyb3IpOworICAgIH0KKyAgICBncHJfYXRtX3JlbF9zdG9yZSgmaG9sZGVyLT5zdWJjaGFubmVsX2NhbGwsCisgICAgICAgICAgICAgICAgICAgICAgKGdwcl9hdG0pKHVpbnRwdHJfdClzdWJjaGFubmVsX2NhbGwpOwogICAgIHJldHJ5X3dhaXRpbmdfbG9ja2VkKGV4ZWNfY3R4LCBob2xkZXIpOwogICB9CiAgIGdwcl9tdV91bmxvY2soJmhvbGRlci0+bXUpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIGIvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jCmluZGV4IDk5YjU2MGEuLjM5NGYwY2IgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYworKysgYi9zcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMKQEAgLTEwNyw4ICsxMDcsOSBAQAogfQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBtZW1zZXQoY2FsbGQsIDAsIHNpemVvZihjYWxsX2RhdGEpKTsKIApAQCAtMTI1LDYgKzEyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTH07CiAgICovCisKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMKaW5kZXggZjliNzM0Ny4uOThmMzA0ZiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jCisrKyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYwpAQCAtMTU3LDEyICsxNTcsMTMgQEAKICAgfQogfQogCi12b2lkIGdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfc3RhY2sgKmNoYW5uZWxfc3RhY2ssIGludCBpbml0aWFsX3JlZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfaW9tZ3JfY2JfZnVuYyBkZXN0cm95LCB2b2lkICpkZXN0cm95X2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2NvbnRleHRfZWxlbWVudCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdHJhbnNwb3J0X3NlcnZlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spIHsKK2dycGNfZXJyb3IgKmdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxfcmVmcywgZ3JwY19pb21ncl9jYl9mdW5jIGRlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0cm95X2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0cmFuc3BvcnRfc2VydmVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spIHsKICAgZ3JwY19jaGFubmVsX2VsZW1lbnQgKmNoYW5uZWxfZWxlbXMgPSBDSEFOTkVMX0VMRU1TX0ZST01fU1RBQ0soY2hhbm5lbF9zdGFjayk7CiAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgYXJnczsKICAgc2l6ZV90IGNvdW50ID0gY2hhbm5lbF9zdGFjay0+Y291bnQ7CkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICAgICAgICAgICAgUk9VTkRfVVBfVE9fQUxJR05NRU5UX1NJWkUoY291bnQgKiBzaXplb2YoZ3JwY19jYWxsX2VsZW1lbnQpKTsKIAogICAvKiBpbml0IHBlci1maWx0ZXIgZGF0YSAqLworICBncnBjX2Vycm9yICpmaXJzdF9lcnJvciA9IEdSUENfRVJST1JfTk9ORTsKICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICBhcmdzLmNhbGxfc3RhY2sgPSBjYWxsX3N0YWNrOwogICAgIGFyZ3Muc2VydmVyX3RyYW5zcG9ydF9kYXRhID0gdHJhbnNwb3J0X3NlcnZlcl9kYXRhOwpAQCAtMTg1LDEwICsxODcsMTkgQEAKICAgICBjYWxsX2VsZW1zW2ldLmZpbHRlciA9IGNoYW5uZWxfZWxlbXNbaV0uZmlsdGVyOwogICAgIGNhbGxfZWxlbXNbaV0uY2hhbm5lbF9kYXRhID0gY2hhbm5lbF9lbGVtc1tpXS5jaGFubmVsX2RhdGE7CiAgICAgY2FsbF9lbGVtc1tpXS5jYWxsX2RhdGEgPSB1c2VyX2RhdGE7Ci0gICAgY2FsbF9lbGVtc1tpXS5maWx0ZXItPmluaXRfY2FsbF9lbGVtKGV4ZWNfY3R4LCAmY2FsbF9lbGVtc1tpXSwgJmFyZ3MpOworICAgIGdycGNfZXJyb3IgKmVycm9yID0KKyAgICAgICAgY2FsbF9lbGVtc1tpXS5maWx0ZXItPmluaXRfY2FsbF9lbGVtKGV4ZWNfY3R4LCAmY2FsbF9lbGVtc1tpXSwgJmFyZ3MpOworICAgIGlmIChlcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgIGlmIChmaXJzdF9lcnJvciA9PSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgICAgZmlyc3RfZXJyb3IgPSBlcnJvcjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdSUENfRVJST1JfVU5SRUYoZXJyb3IpOworICAgICAgfQorICAgIH0KICAgICB1c2VyX2RhdGEgKz0KICAgICAgICAgUk9VTkRfVVBfVE9fQUxJR05NRU5UX1NJWkUoY2FsbF9lbGVtc1tpXS5maWx0ZXItPnNpemVvZl9jYWxsX2RhdGEpOwogICB9CisgIHJldHVybiBmaXJzdF9lcnJvcjsKIH0KIAogdm9pZCBncnBjX2NhbGxfc3RhY2tfc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmggYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgKaW5kZXggMTlkMThjYy4uZWU2ODcwMSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oCisrKyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaApAQCAtMTE1LDggKzExNSw5IEBACiAgICAgIG9uIGEgY2xpZW50OyBpZiBpdCBpcyBub24tTlVMTCwgdGhlbiBpdCBwb2ludHMgdG8gbWVtb3J5IG93bmVkIGJ5IHRoZQogICAgICB0cmFuc3BvcnQgYW5kIGlzIG9uIHRoZSBzZXJ2ZXIuIE1vc3QgZmlsdGVycyB3YW50IHRvIGlnbm9yZSB0aGlzCiAgICAgIGFyZ3VtZW50LiAqLwotICB2b2lkICgqaW5pdF9jYWxsX2VsZW0pKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKTsKKyAgZ3JwY19lcnJvciAqKCppbml0X2NhbGxfZWxlbSkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKTsKICAgdm9pZCAoKnNldF9wb2xsc2V0X29yX3BvbGxzZXRfc2V0KShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50KTsKQEAgLTIxNSwxMiArMjE2LDEzIEBACiAvKiBJbml0aWFsaXplIGEgY2FsbCBzdGFjayBnaXZlbiBhIGNoYW5uZWwgc3RhY2suIHRyYW5zcG9ydF9zZXJ2ZXJfZGF0YSBpcwogICAgZXhwZWN0ZWQgdG8gYmUgTlVMTCBvbiBhIGNsaWVudCwgb3IgYW4gb3BhcXVlIHRyYW5zcG9ydCBvd25lZCBwb2ludGVyIG9uIHRoZQogICAgc2VydmVyLiAqLwotdm9pZCBncnBjX2NhbGxfc3RhY2tfaW5pdChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLCBpbnQgaW5pdGlhbF9yZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2lvbWdyX2NiX2Z1bmMgZGVzdHJveSwgdm9pZCAqZGVzdHJveV9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnRyYW5zcG9ydF9zZXJ2ZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX3N0YWNrICpjYWxsX3N0YWNrKTsKK2dycGNfZXJyb3IgKmdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxfcmVmcywgZ3JwY19pb21ncl9jYl9mdW5jIGRlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0cm95X2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0cmFuc3BvcnRfc2VydmVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spOwogLyogU2V0IGEgcG9sbHNldCBvciBhIHBvbGxzZXRfc2V0IGZvciBhIGNhbGwgc3RhY2s6IG11c3Qgb2NjdXIgYmVmb3JlIHRoZSBmaXJzdAogICogb3AgaXMgc3RhcnRlZCAqLwogdm9pZCBncnBjX2NhbGxfc3RhY2tfc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvY2hhbm5lbC9jb21wcmVzc19maWx0ZXIuYyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5jCmluZGV4IGFmMjFlZDcuLjEzNDE4MGUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5jCisrKyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5jCkBAIC0yNTYsOCArMjU2LDkgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgLyogZ3JhYiBwb2ludGVycyB0byBvdXIgZGF0YSBmcm9tIHRoZSBjYWxsIGVsZW1lbnQgKi8KICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKIApAQCAtMjY2LDYgKzI2Nyw4IEBACiAgIGNhbGxkLT5oYXNfY29tcHJlc3Npb25fYWxnb3JpdGhtID0gMDsKICAgZ3JwY19jbG9zdXJlX2luaXQoJmNhbGxkLT5nb3Rfc2xpY2UsIGdvdF9zbGljZSwgZWxlbSk7CiAgIGdycGNfY2xvc3VyZV9pbml0KCZjYWxsZC0+c2VuZF9kb25lLCBzZW5kX2RvbmUsIGVsZW0pOworCisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIC8qIERlc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuYyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2Nvbm5lY3RlZF9jaGFubmVsLmMKaW5kZXggNzM3MTQzNi4uOTE4Mzc5YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuYworKysgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5jCkBAIC04MSwxNiArODEsMTYgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgY2hhbm5lbF9kYXRhICpjaGFuZCA9IGVsZW0tPmNoYW5uZWxfZGF0YTsKLSAgaW50IHI7Ci0KLSAgciA9IGdycGNfdHJhbnNwb3J0X2luaXRfc3RyZWFtKAorICBpbnQgciA9IGdycGNfdHJhbnNwb3J0X2luaXRfc3RyZWFtKAogICAgICAgZXhlY19jdHgsIGNoYW5kLT50cmFuc3BvcnQsIFRSQU5TUE9SVF9TVFJFQU1fRlJPTV9DQUxMX0RBVEEoY2FsbGQpLAogICAgICAgJmFyZ3MtPmNhbGxfc3RhY2stPnJlZmNvdW50LCBhcmdzLT5zZXJ2ZXJfdHJhbnNwb3J0X2RhdGEpOwotICBHUFJfQVNTRVJUKHIgPT0gMCk7CisgIHJldHVybiByID09IDAgPyBHUlBDX0VSUk9SX05PTkUKKyAgICAgICAgICAgICAgICA6IEdSUENfRVJST1JfQ1JFQVRFKCJ0cmFuc3BvcnQgc3RyZWFtIGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRfcG9sbHNldF9vcl9wb2xsc2V0X3NldChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfY2xpZW50X2ZpbHRlci5jIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKaW5kZXggZjFlZDIyYy4uYTdhNzc1YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKQEAgLTE3NSwxMSArMTc1LDEzIEBACiB9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIGNhbGxkLT5vbl9kb25lX3JlY3YgPSBOVUxMOwogICBncnBjX2Nsb3N1cmVfaW5pdCgmY2FsbGQtPmhjX29uX3JlY3YsIGhjX29uX3JlY3YsIGVsZW0pOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiAvKiBEZXN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5jIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmMKaW5kZXggZDUyY2M3ZC4uNWNlNTFmOSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmMKQEAgLTIyNCwxMyArMjI0LDE1IEBACiB9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIC8qIGdyYWIgcG9pbnRlcnMgdG8gb3VyIGRhdGEgZnJvbSB0aGUgY2FsbCBlbGVtZW50ICovCiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIC8qIGluaXRpYWxpemUgbWVtYmVycyAqLwogICBtZW1zZXQoY2FsbGQsIDAsIHNpemVvZigqY2FsbGQpKTsKICAgZ3JwY19jbG9zdXJlX2luaXQoJmNhbGxkLT5oc19vbl9yZWN2LCBoc19vbl9yZWN2LCBlbGVtKTsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3IvZXJyb3IuaCBiL3NyYy9jb3JlL2xpYi9pb21nci9lcnJvci5oCmluZGV4IDEzZjg5OGUuLmJjNzc4MTIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9pb21nci9lcnJvci5oCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci9lcnJvci5oCkBAIC0xNzEsNiArMTcxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3RpbWVzcGVjIHZhbHVlKSBHUlBDX01VU1RfVVNFX1JFU1VMVDsKIGdycGNfZXJyb3IgKmdycGNfZXJyb3Jfc2V0X3N0cihncnBjX2Vycm9yICpzcmMsIGdycGNfZXJyb3Jfc3RycyB3aGljaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZSkgR1JQQ19NVVNUX1VTRV9SRVNVTFQ7CisvLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGlzIG5vdCBzZXQuCisvLy8gQ2FsbGVyIGRvZXMgTk9UIG93biByZXR1cm4gdmFsdWUuCiBjb25zdCBjaGFyICpncnBjX2Vycm9yX2dldF9zdHIoZ3JwY19lcnJvciAqZXJyb3IsIGdycGNfZXJyb3Jfc3RycyB3aGljaCk7CiAvLy8gQWRkIGEgY2hpbGQgZXJyb3I6IGFuIGVycm9yIHRoYXQgaXMgYmVsaWV2ZWQgdG8gaGF2ZSBjb250cmlidXRlZCB0byB0aGlzCiAvLy8gZXJyb3Igb2NjdXJyaW5nLiBBbGxvd3Mgcm9vdCBjYXVzaW5nIGhpZ2ggbGV2ZWwgZXJyb3JzIGZyb20gbG93ZXIgbGV2ZWwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvY2xpZW50X2F1dGhfZmlsdGVyLmMgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L2NsaWVudF9hdXRoX2ZpbHRlci5jCmluZGV4IDM4MmQzMDcuLjJhMWJmNGQgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvY2xpZW50X2F1dGhfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9jbGllbnRfYXV0aF9maWx0ZXIuYwpAQCAtMjY3LDEwICsyNjcsMTIgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgbWVtc2V0KGNhbGxkLCAwLCBzaXplb2YoKmNhbGxkKSk7CisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldF9wb2xsc2V0X29yX3BvbGxzZXRfc2V0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZWN1cmVfZW5kcG9pbnQuYyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VjdXJlX2VuZHBvaW50LmMKaW5kZXggYmM1MGY5ZC4uMDE2OWNjZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZWN1cmVfZW5kcG9pbnQuYworKysgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L3NlY3VyZV9lbmRwb2ludC5jCkBAIC0xMjgsNyArMTI4LDcgQEAKIAogc3RhdGljIHZvaWQgY2FsbF9yZWFkX2NiKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBzZWN1cmVfZW5kcG9pbnQgKmVwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7Ci0gIGlmIChmYWxzZSAmJiBncnBjX3RyYWNlX3NlY3VyZV9lbmRwb2ludCkgeworICBpZiAoZ3JwY190cmFjZV9zZWN1cmVfZW5kcG9pbnQpIHsKICAgICBzaXplX3QgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgZXAtPnJlYWRfYnVmZmVyLT5jb3VudDsgaSsrKSB7CiAgICAgICBjaGFyICpkYXRhID0gZ3ByX2R1bXBfc2xpY2UoZXAtPnJlYWRfYnVmZmVyLT5zbGljZXNbaV0sCkBAIC0yNTYsNyArMjU2LDcgQEAKIAogICBncHJfc2xpY2VfYnVmZmVyX3Jlc2V0X2FuZF91bnJlZigmZXAtPm91dHB1dF9idWZmZXIpOwogCi0gIGlmIChmYWxzZSAmJiBncnBjX3RyYWNlX3NlY3VyZV9lbmRwb2ludCkgeworICBpZiAoZ3JwY190cmFjZV9zZWN1cmVfZW5kcG9pbnQpIHsKICAgICBmb3IgKGkgPSAwOyBpIDwgc2xpY2VzLT5jb3VudDsgaSsrKSB7CiAgICAgICBjaGFyICpkYXRhID0KICAgICAgICAgICBncHJfZHVtcF9zbGljZShzbGljZXMtPnNsaWNlc1tpXSwgR1BSX0RVTVBfSEVYIHwgR1BSX0RVTVBfQVNDSUkpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZXJ2ZXJfYXV0aF9maWx0ZXIuYyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VydmVyX2F1dGhfZmlsdGVyLmMKaW5kZXggNWYzZDBkYy4uZGVmMTZjOCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZXJ2ZXJfYXV0aF9maWx0ZXIuYworKysgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L3NlcnZlcl9hdXRoX2ZpbHRlci5jCkBAIC0xOTksOCArMTk5LDkgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgLyogZ3JhYiBwb2ludGVycyB0byBvdXIgZGF0YSBmcm9tIHRoZSBjYWxsIGVsZW1lbnQgKi8KICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgY2hhbm5lbF9kYXRhICpjaGFuZCA9IGVsZW0tPmNoYW5uZWxfZGF0YTsKQEAgLTIyMiw2ICsyMjMsOCBAQAogICBhcmdzLT5jb250ZXh0W0dSUENfQ09OVEVYVF9TRUNVUklUWV0udmFsdWUgPSBzZXJ2ZXJfY3R4OwogICBhcmdzLT5jb250ZXh0W0dSUENfQ09OVEVYVF9TRUNVUklUWV0uZGVzdHJveSA9CiAgICAgICBncnBjX3NlcnZlcl9zZWN1cml0eV9jb250ZXh0X2Rlc3Ryb3k7CisKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgYi9zcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMKaW5kZXggNzBjOTQ3OS4uNzcyNjgxMSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jCisrKyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYwpAQCAtMjY0LDkgKzI2NCwxOSBAQAogICAgICAgZ3ByX2NvbnZlcnRfY2xvY2tfdHlwZShzZW5kX2RlYWRsaW5lLCBHUFJfQ0xPQ0tfTU9OT1RPTklDKTsKICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1JFRihjaGFubmVsLCAiY2FsbCIpOwogICAvKiBpbml0aWFsIHJlZmNvdW50IGRyb3BwZWQgYnkgZ3JwY19jYWxsX2Rlc3Ryb3kgKi8KLSAgZ3JwY19jYWxsX3N0YWNrX2luaXQoJmV4ZWNfY3R4LCBjaGFubmVsX3N0YWNrLCAxLCBkZXN0cm95X2NhbGwsIGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgIGNhbGwtPmNvbnRleHQsIHNlcnZlcl90cmFuc3BvcnRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ0FMTF9TVEFDS19GUk9NX0NBTEwoY2FsbCkpOworICBncnBjX2Vycm9yICplcnJvciA9IGdycGNfY2FsbF9zdGFja19pbml0KAorICAgICAgJmV4ZWNfY3R4LCBjaGFubmVsX3N0YWNrLCAxLCBkZXN0cm95X2NhbGwsIGNhbGwsIGNhbGwtPmNvbnRleHQsCisgICAgICBzZXJ2ZXJfdHJhbnNwb3J0X2RhdGEsIENBTExfU1RBQ0tfRlJPTV9DQUxMKGNhbGwpKTsKKyAgaWYgKGVycm9yICE9IEdSUENfRVJST1JfTk9ORSkgeworICAgIGludHB0cl90IHN0YXR1czsKKyAgICBpZiAoIWdycGNfZXJyb3JfZ2V0X2ludChlcnJvciwgR1JQQ19FUlJPUl9JTlRfR1JQQ19TVEFUVVMsICZzdGF0dXMpKQorICAgICAgc3RhdHVzID0gR1JQQ19TVEFUVVNfVU5LTk9XTjsKKyAgICBjb25zdCBjaGFyICplcnJvcl9zdHIgPQorICAgICAgICBncnBjX2Vycm9yX2dldF9zdHIoZXJyb3IsIEdSUENfRVJST1JfU1RSX0RFU0NSSVBUSU9OKTsKKyAgICBjbG9zZV93aXRoX3N0YXR1cygmZXhlY19jdHgsIGNhbGwsIChncnBjX3N0YXR1c19jb2RlKXN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zdHIgPT0gTlVMTCA/ICJ1bmtub3duIGVycm9yIiA6IGVycm9yX3N0cik7CisgICAgR1JQQ19FUlJPUl9VTlJFRihlcnJvcik7CisgIH0KICAgaWYgKGNxICE9IE5VTEwpIHsKICAgICBHUFJfQVNTRVJUKAogICAgICAgICBwb2xsc2V0X3NldF9hbHRlcm5hdGl2ZSA9PSBOVUxMICYmCkBAIC0xMzY3LDYgKzEzNzcsOSBAQAogICBpbnQgbnVtX2NvbXBsZXRpb25fY2FsbGJhY2tzX25lZWRlZCA9IDE7CiAgIGdycGNfY2FsbF9lcnJvciBlcnJvciA9IEdSUENfQ0FMTF9PSzsKIAorICAvLyBzZW50X2luaXRpYWxfbWV0YWRhdGEgZ3VhcmRzIGFnYWluc3QgdmFyaWFibGUgcmV1c2UuCisgIGdycGNfbWV0YWRhdGEgY29tcHJlc3Npb25fbWQ7CisKICAgR1BSX1RJTUVSX0JFR0lOKCJncnBjX2NhbGxfc3RhcnRfYmF0Y2giLCAwKTsKIAogICBHUlBDX0NBTExfTE9HX0JBVENIKEdQUl9JTkZPLCBjYWxsLCBvcHMsIG5vcHMsIG5vdGlmeV90YWcpOwpAQCAtMTQxMiw4ICsxNDI1LDcgQEAKICAgICAgICAgICBnb3RvIGRvbmVfd2l0aF9lcnJvcjsKICAgICAgICAgfQogICAgICAgICAvKiBwcm9jZXNzIGNvbXByZXNzaW9uIGxldmVsICovCi0gICAgICAgIGdycGNfbWV0YWRhdGEgY29tcHJlc3Npb25fbWQ7Ci0gICAgICAgIG1lbXNldCgmY29tcHJlc3Npb25fbWQsIDAsIHNpemVvZihncnBjX21ldGFkYXRhKSk7CisgICAgICAgIG1lbXNldCgmY29tcHJlc3Npb25fbWQsIDAsIHNpemVvZihjb21wcmVzc2lvbl9tZCkpOwogICAgICAgICBzaXplX3QgYWRkaXRpb25hbF9tZXRhZGF0YV9jb3VudCA9IDA7CiAgICAgICAgIGdycGNfY29tcHJlc3Npb25fbGV2ZWwgZWZmZWN0aXZlX2NvbXByZXNzaW9uX2xldmVsOwogICAgICAgICBib29sIGxldmVsX3NldCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMKaW5kZXggMGQzMTY4ZS4uMTliNzgzNiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYworKysgYi9zcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jCkBAIC0xMDcsOCArMTA3LDExIEBACiAgIEdSUENfRVJST1JfVU5SRUYob3AtPmRpc2Nvbm5lY3Rfd2l0aF9lcnJvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHt9CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOworfQogCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIGIvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKaW5kZXggYTQ4MmJhNC4uMWQ2MWVjMyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKKysrIGIvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKQEAgLTg1Niw4ICs4NTYsOSBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIGNoYW5uZWxfZGF0YSAqY2hhbmQgPSBlbGVtLT5jaGFubmVsX2RhdGE7CiAgIG1lbXNldChjYWxsZCwgMCwgc2l6ZW9mKGNhbGxfZGF0YSkpOwpAQCAtODY5LDYgKzg3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9vbl9yZWN2X2luaXRpYWxfbWV0YWRhdGEsIGVsZW0pOwogCiAgIHNlcnZlcl9yZWYoY2hhbmQtPnNlcnZlcik7CisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jCmluZGV4IGMzOTZjMWUuLjhmM2U1YjUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMKKysrIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYwpAQCAtNTEsMTUgKzUxLDE1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH07CiAKIGNvbnN0IHVpbnQ4X3QgZ3JwY19zdGF0aWNfbWV0YWRhdGFfZWxlbV9pbmRpY2VzW0dSUENfU1RBVElDX01ERUxFTV9DT1VOVCAqIDJdID0KLSAgICB7MTEsIDM1LCAxMCwgMzUsIDEyLCAzNSwgMTIsIDQ5LCAxMywgMzUsIDE0LCAzNSwgMTUsIDM1LCAxNiwgMzUsIDE3LCAzNSwKLSAgICAgMTksIDM1LCAyMCwgMzUsIDIxLCAzNSwgMjQsIDM1LCAyNSwgMzUsIDI2LCAzNSwgMjcsIDM1LCAyOCwgMzUsIDI5LCAzNSwKLSAgICAgMzAsIDE4LCAzMCwgMzUsIDMxLCAzNSwgMzIsIDM1LCAzNiwgMzUsIDM3LCAzNSwgMzgsIDM1LCAzOSwgMzUsIDQyLCAzMywKLSAgICAgNDIsIDM0LCA0MiwgNDgsIDQyLCA1MywgNDIsIDU0LCA0MiwgNTUsIDQyLCA1NiwgNDMsIDMzLCA0MywgNDgsIDQzLCA1MywKLSAgICAgNDYsIDAsICA0NiwgMSwgIDQ2LCAyLCAgNTAsIDM1LCA1NywgMzUsIDU4LCAzNSwgNTksIDM1LCA2MCwgMzUsIDYxLCAzNSwKLSAgICAgNjIsIDM1LCA2MywgMzUsIDY0LCAzNSwgNjUsIDM1LCA2NiwgMzUsIDY3LCAzNSwgNjgsIDQwLCA2OCwgNzAsIDY4LCA3MywKLSAgICAgNjksIDgxLCA2OSwgODIsIDcxLCAzNSwgNzIsIDM1LCA3NCwgMzUsIDc1LCAzNSwgNzYsIDM1LCA3NywgMzUsIDc4LCA0MSwKLSAgICAgNzgsIDUxLCA3OCwgNTIsIDc5LCAzNSwgODAsIDM1LCA4MywgMywgIDgzLCA0LCAgODMsIDUsICA4MywgNiwgIDgzLCA3LAotICAgICA4MywgOCwgIDgzLCA5LCAgODQsIDM1LCA4NSwgODYsIDg3LCAzNSwgODgsIDM1LCA4OSwgMzUsIDkwLCAzNSwgOTEsIDM1fTsKKyAgICB7MTEsIDMzLCAxMCwgMzMsIDEyLCAzMywgMTIsIDQ5LCAxMywgMzMsIDE0LCAzMywgMTUsIDMzLCAxNiwgMzMsIDE3LCAzMywKKyAgICAgMTksIDMzLCAyMCwgMzMsIDIxLCAzMywgMjIsIDMzLCAyMywgMzMsIDI0LCAzMywgMjUsIDMzLCAyNiwgMzMsIDI3LCAzMywKKyAgICAgMjgsIDE4LCAyOCwgMzMsIDI5LCAzMywgMzAsIDMzLCAzNCwgMzMsIDM1LCAzMywgMzYsIDMzLCAzNywgMzMsIDQwLCAzMSwKKyAgICAgNDAsIDMyLCA0MCwgNDgsIDQwLCA1MywgNDAsIDU0LCA0MCwgNTUsIDQwLCA1NiwgNDIsIDMxLCA0MiwgNDgsIDQyLCA1MywKKyAgICAgNDUsIDAsICA0NSwgMSwgIDQ1LCAyLCAgNTAsIDMzLCA1NywgMzMsIDU4LCAzMywgNTksIDMzLCA2MCwgMzMsIDYxLCAzMywKKyAgICAgNjIsIDMzLCA2MywgMzMsIDY0LCAzMywgNjUsIDMzLCA2NiwgMzMsIDY3LCAzMywgNjgsIDM4LCA2OCwgNzAsIDY4LCA3MywKKyAgICAgNjksIDgxLCA2OSwgODIsIDcxLCAzMywgNzIsIDMzLCA3NCwgMzMsIDc1LCAzMywgNzYsIDMzLCA3NywgMzMsIDc4LCAzOSwKKyAgICAgNzgsIDUxLCA3OCwgNTIsIDc5LCAzMywgODAsIDMzLCA4MywgMywgIDgzLCA0LCAgODMsIDUsICA4MywgNiwgIDgzLCA3LAorICAgICA4MywgOCwgIDgzLCA5LCAgODQsIDMzLCA4NSwgODYsIDg3LCAzMywgODgsIDMzLCA4OSwgMzMsIDkwLCAzMywgOTEsIDMzfTsKIAogY29uc3QgY2hhciAqY29uc3QgZ3JwY19zdGF0aWNfbWV0YWRhdGFfc3RyaW5nc1tHUlBDX1NUQVRJQ19NRFNUUl9DT1VOVF0gPSB7CiAgICAgIjAiLApAQCAtODQsOCArODQsNiBAQAogICAgICI6YXV0aG9yaXR5IiwKICAgICAiYXV0aG9yaXphdGlvbiIsCiAgICAgImNhY2hlLWNvbnRyb2wiLAotICAgICJjZW5zdXMtYmluIiwKLSAgICAiY2Vuc3VzLWJpbmFyeS1iaW4iLAogICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIiwKICAgICAiY29udGVudC1lbmNvZGluZyIsCiAgICAgImNvbnRlbnQtbGFuZ3VhZ2UiLApAQCAtMTA1LDExICsxMDMsMTMgQEAKICAgICAiR0VUIiwKICAgICAiZ3JwYyIsCiAgICAgImdycGMtYWNjZXB0LWVuY29kaW5nIiwKKyAgICAiZ3JwYy1jZW5zdXMtYmluIiwKICAgICAiZ3JwYy1lbmNvZGluZyIsCiAgICAgImdycGMtaW50ZXJuYWwtZW5jb2RpbmctcmVxdWVzdCIsCiAgICAgImdycGMtbWVzc2FnZSIsCiAgICAgImdycGMtc3RhdHVzIiwKICAgICAiZ3JwYy10aW1lb3V0IiwKKyAgICAiZ3JwYy10cmFjaW5nLWJpbiIsCiAgICAgImd6aXAiLAogICAgICJnemlwLCBkZWZsYXRlIiwKICAgICAiaG9zdCIsCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaAppbmRleCA0OTFjOGNmLi5iNTFiYWNhIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oCisrKyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgKQEAgLTkwLDU4ICs5MCw1OCBAQAogI2RlZmluZSBHUlBDX01EU1RSX0FVVEhPUklaQVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyMF0pCiAvKiAiY2FjaGUtY29udHJvbCIgKi8KICNkZWZpbmUgR1JQQ19NRFNUUl9DQUNIRV9DT05UUk9MICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMjFdKQotLyogImNlbnN1cy1iaW4iICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ0VOU1VTX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIyXSkKLS8qICJjZW5zdXMtYmluYXJ5LWJpbiIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9DRU5TVVNfQklOQVJZX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIzXSkKIC8qICJjb250ZW50LWRpc3Bvc2l0aW9uIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfRElTUE9TSVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNF0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9ESVNQT1NJVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIyXSkKIC8qICJjb250ZW50LWVuY29kaW5nIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNV0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIzXSkKIC8qICJjb250ZW50LWxhbmd1YWdlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfTEFOR1VBR0UgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNl0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9MQU5HVUFHRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI0XSkKIC8qICJjb250ZW50LWxlbmd0aCIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9DT05URU5UX0xFTkdUSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI3XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9DT05URU5UX0xFTkdUSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI1XSkKIC8qICJjb250ZW50LWxvY2F0aW9uIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfTE9DQVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyOF0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9MT0NBVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI2XSkKIC8qICJjb250ZW50LXJhbmdlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfUkFOR0UgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyOV0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9SQU5HRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI3XSkKIC8qICJjb250ZW50LXR5cGUiICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9UWVBFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzBdKQorI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfVFlQRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI4XSkKIC8qICJjb29raWUiICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ09PS0lFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzFdKQorI2RlZmluZSBHUlBDX01EU1RSX0NPT0tJRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI5XSkKIC8qICJkYXRlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0RBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszMl0pCisjZGVmaW5lIEdSUENfTURTVFJfREFURSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMwXSkKIC8qICJkZWZsYXRlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0RFRkxBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszM10pCisjZGVmaW5lIEdSUENfTURTVFJfREVGTEFURSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMxXSkKIC8qICJkZWZsYXRlLGd6aXAiICovCi0jZGVmaW5lIEdSUENfTURTVFJfREVGTEFURV9DT01NQV9HWklQICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzRdKQorI2RlZmluZSBHUlBDX01EU1RSX0RFRkxBVEVfQ09NTUFfR1pJUCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMyXSkKIC8qICIiICovCi0jZGVmaW5lIEdSUENfTURTVFJfRU1QVFkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNV0pCisjZGVmaW5lIEdSUENfTURTVFJfRU1QVFkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszM10pCiAvKiAiZXRhZyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9FVEFHICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzZdKQorI2RlZmluZSBHUlBDX01EU1RSX0VUQUcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNF0pCiAvKiAiZXhwZWN0IiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0VYUEVDVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzM3XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9FWFBFQ1QgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNV0pCiAvKiAiZXhwaXJlcyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9FWFBJUkVTICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzhdKQorI2RlZmluZSBHUlBDX01EU1RSX0VYUElSRVMgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNl0pCiAvKiAiZnJvbSIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9GUk9NICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzldKQorI2RlZmluZSBHUlBDX01EU1RSX0ZST00gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszN10pCiAvKiAiR0VUIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0dFVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQwXSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9HRVQgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszOF0pCiAvKiAiZ3JwYyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDFdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUEMgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszOV0pCiAvKiAiZ3JwYy1hY2NlcHQtZW5jb2RpbmciICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19BQ0NFUFRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0Ml0pCisjZGVmaW5lIEdSUENfTURTVFJfR1JQQ19BQ0NFUFRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0MF0pCisvKiAiZ3JwYy1jZW5zdXMtYmluIiAqLworI2RlZmluZSBHUlBDX01EU1RSX0dSUENfQ0VOU1VTX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQxXSkKIC8qICJncnBjLWVuY29kaW5nIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0dSUENfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0M10pCisjZGVmaW5lIEdSUENfTURTVFJfR1JQQ19FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQyXSkKIC8qICJncnBjLWludGVybmFsLWVuY29kaW5nLXJlcXVlc3QiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19JTlRFUk5BTF9FTkNPRElOR19SRVFVRVNUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDRdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfSU5URVJOQUxfRU5DT0RJTkdfUkVRVUVTVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQzXSkKIC8qICJncnBjLW1lc3NhZ2UiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19NRVNTQUdFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDVdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfTUVTU0FHRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ0XSkKIC8qICJncnBjLXN0YXR1cyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ2XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ1XSkKIC8qICJncnBjLXRpbWVvdXQiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19USU1FT1VUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDddKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfVElNRU9VVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ2XSkKKy8qICJncnBjLXRyYWNpbmctYmluIiAqLworI2RlZmluZSBHUlBDX01EU1RSX0dSUENfVFJBQ0lOR19CSU4gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0N10pCiAvKiAiZ3ppcCIgKi8KICNkZWZpbmUgR1JQQ19NRFNUUl9HWklQICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDhdKQogLyogImd6aXAsIGRlZmxhdGUiICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vY2Vuc3VzL2NlbnN1cy5wcm90byBiL3NyYy9wcm90by9jZW5zdXMvY2Vuc3VzLnByb3RvCmluZGV4IGM4NjlkODUuLmMyYTU5NGIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9jZW5zdXMvY2Vuc3VzLnByb3RvCisrKyBiL3NyYy9wcm90by9jZW5zdXMvY2Vuc3VzLnByb3RvCkBAIC0zMywxMiArMzMsMTIgQEAKIAogLy8gQWxsIHRoZSBjZW5zdXMgcHJvdG9zLgogLy8KLS8vIE5vbWVuY2xhdHVyZSBub3RlOiBjYXBpdGFsaXplZCBuYW1lcyBiZWxvdyAobGlrZSBNZXRyaWMpIGFyZSBwcm90b3MuCisvLyBOb21lbmNsYXR1cmUgbm90ZTogY2FwaXRhbGl6ZWQgbmFtZXMgYmVsb3cgKGxpa2UgUmVzb3VyY2UpIGFyZSBwcm90b3MuCiAvLwotLy8gQ2Vuc3VzIGxldHMgeW91IGRlZmluZSBhIE1ldHJpYyAtIHNvbWV0aGluZyB3aGljaCBjYW4gYmUgbWVhc3VyZWQsIGxpa2UgdGhlCisvLyBDZW5zdXMgbGV0cyB5b3UgZGVmaW5lIGEgUmVzb3VyY2UgLSBzb21ldGhpbmcgd2hpY2ggY2FuIGJlIG1lYXN1cmVkLCBsaWtlIHRoZQogLy8gbGF0ZW5jeSBvZiBhbiBSUEMsIHRoZSBudW1iZXIgb2YgQ1BVIGN5Y2xlcyBzcGVudCBvbiBhbiBvcGVyYXRpb24sIG9yCiAvLyBhbnl0aGluZyBlbHNlIHlvdSBjYXJlIHRvIG1lYXN1cmUuIFlvdSBjYW4gcmVjb3JkIGluZGl2aWR1YWwgaW5zdGFuY2VzIG9mCi0vLyBtZWFzdXJlbWVudHMgKGEgZG91YmxlIHZhbHVlKSBmb3IgZXZlcnkgbWV0cmljIG9mIGludGVyZXN0LiBUaGVzZQorLy8gbWVhc3VyZW1lbnRzIChhIGRvdWJsZSB2YWx1ZSkgZm9yIGV2ZXJ5IFJlc291cmNlIG9mIGludGVyZXN0LiBUaGVzZQogLy8gaW5kaXZpZHVhbCBtZWFzdXJlbWVudHMgYXJlIGFnZ3JlZ2F0ZWQgdG9nZXRoZXIgaW50byBhbiBBZ2dyZWdhdGlvbi4gVGhlcmUKIC8vIGFyZSB0d28gQWdncmVnYXRpb24gdHlwZXMgYXZhaWxhYmxlOiBEaXN0cmlidXRpb24gKGRlc2NyaWJlcyB0aGUKIC8vIGRpc3RyaWJ1dGlvbiBvZiBhbGwgbWVhc3VyZW1lbnRzLCBwb3NzaWJseSB3aXRoIGEgaGlzdG9ncmFtKSBhbmQKQEAgLTQ3LDggKzQ3LDggQEAKIC8vCiAvLyBZb3UgY2FuIGRlZmluZSBob3cgeW91ciBzdGF0cyBhcmUgYnJva2VuIGRvd24gYnkgVGFnIHZhbHVlcyBhbmQgd2hpY2gKIC8vIEFnZ3JlZ2F0aW9ucyB0byB1c2UgdGhyb3VnaCBhIFZpZXcuIFRoZSBjb3JyZXNwb25kaW5nIGNvbWJpbmF0aW9uIG9mCi0vLyBNZXRyaWMvVmlldy9BZ2dyZWdhdGlvbiB3aGljaCBpcyBhdmFpbGFibGUgdG8gY2Vuc3VzIGNsaWVudHMgaXMgY2FsbGVkIGEKLS8vIFZpZXdBZ2dyZWdhdGlvbi4KKy8vIFJlc291cmNlL1ZpZXcvQWdncmVnYXRpb24gd2hpY2ggaXMgYXZhaWxhYmxlIHRvIGNlbnN1cyBjbGllbnRzIGlzIGNhbGxlZCBhCisvLyBNZXRyaWMuCiAKIAogLy8gVGhlIGZvbGxvd2luZyB0d28gdHlwZXMgYXJlIGNvcGllZCBmcm9tCkBAIC04NSwyNiArODUsMjMgQEAKICAgaW50MzIgbmFub3MgPSAyOwogfQogCi0vLyBEZXNjcmliZXMgYSBtZXRyaWMKLW1lc3NhZ2UgTWV0cmljIHsKLSAgLy8gbmFtZSBvZiBtZXRyaWMsIGUuZy4gcnBjX2xhdGVuY3ksIGNwdS4KKy8vIERlc2NyaWJlcyBhIFJlc291cmNlLgorbWVzc2FnZSBSZXNvdXJjZSB7CisgIC8vIG5hbWUgb2YgcmVzb3VyY2UsIGUuZy4gcnBjX2xhdGVuY3ksIGNwdS4gTXVzdCBiZSB1bmlxdWUuCiAgIHN0cmluZyBuYW1lID0gMTsKIAotICAvLyBNb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXRyaWMsIHVzZWQgaW4gZG9jdW1lbnRhdGlvbi4KKyAgLy8gTW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzb3VyY2UsIHVzZWQgaW4gZG9jdW1lbnRhdGlvbi4KICAgc3RyaW5nIGRlc2NyaXB0aW9uID0gMjsKIAogICAvLyBGdW5kYW1lbnRhbCB1bml0cyBvZiBtZWFzdXJlbWVudCBzdXBwb3J0ZWQgYnkgQ2Vuc3VzCiAgIC8vIFRPRE8oYXZlaXRjaCk6IGV4cGFuZCB0aGlzIHRvIGluY2x1ZGUgb3RoZXIgUy5JLiB1bml0cz8KLSAgbWVzc2FnZSBCYXNpY1VuaXQgewotICAgIGVudW0gTWVhc3VyZSB7Ci0gICAgICBVTktOT1dOID0gMDsKLSAgICAgIEJJVFMgPSAxOwotICAgICAgQllURVMgPSAyOwotICAgICAgU0VDUyA9IDM7Ci0gICAgICBDT1JFUyA9IDQ7Ci0gICAgICBNQVhfVU5JVFMgPSA1OwotICAgIH0KLSAgICBNZWFzdXJlIHR5cGUgPSAxOworICBlbnVtIEJhc2ljVW5pdCB7CisgICAgVU5LTk9XTiA9IDA7CisgICAgQklUUyA9IDE7CisgICAgQllURVMgPSAyOworICAgIFNFQ1MgPSAzOworICAgIENPUkVTID0gNDsKKyAgICBNQVhfVU5JVFMgPSA1OwogICB9CiAKICAgLy8gTWVhc3VyZW1lbnRVbml0IGxldHMgeW91IGJ1aWxkIGNvbXBvdW5kIHVuaXRzIG9mIHRoZSBmb3JtCkBAIC0xMjQsNyArMTIxLDcgQEAKICAgLy8gICAgIGRlbm9taW5hdG9yOiBTRUNTCiAgIC8vICAgICBkZW5vbWluYXRvcjogU0VDUwogICAvLwotICAvLyBUbyBzcGVjaWZ5IG11bHRpcGxlcyAoaW4gcG93ZXIgb2YgMTApIHVuaXRzLCBzcGVjaWZ5IGEgbm9uLXplcm8gcHJlZml4CisgIC8vIFRvIHNwZWNpZnkgbXVsdGlwbGVzIChpbiBwb3dlciBvZiAxMCkgb2YgdW5pdHMsIHNwZWNpZnkgYSBub24temVybyBwcmVmaXgKICAgLy8gdmFsdWUsIGZvciBleGFtcGxlOgogICAvLwogICAvLyAtIE1CL3MgKGkuZS4gbWVnYWJ5dGVzIC8gcyk6CkBAIC0xNDEsMzIgKzEzOCw0MCBAQAogICAgIHJlcGVhdGVkIEJhc2ljVW5pdCBkZW5vbWluYXRvciA9IDM7CiAgIH0KIAotICAvLyBUaGUgdW5pdHMgaW4gd2hpY2ggdGhlIE1ldHJpYyB2YWx1ZSBpcyByZXBvcnRlZC4KKyAgLy8gVGhlIHVuaXRzIGluIHdoaWNoIFJlc291cmNlIHZhbHVlcyBhcmUgbWVhc3VyZWQuCiAgIE1lYXN1cmVtZW50VW5pdCB1bml0ID0gMzsKLQotICAvLyBNZXRyaWNzIHdpbGwgYmUgYXNzaWduZWQgYW4gSUQgd2hlbiByZWdpc3RlcmVkLiBJbnZhbGlkIGlmIDw9IDAuCi0gIGludDMyIGlkID0gNDsKIH0KIAotLy8gQW4gQWdncmVnYXRpb24gc3VtbWFyaXplcyBhIHNlcmllcyBvZiBpbmRpdmlkdWFsIE1ldHJpYyBtZWFzdXJlbWVudHMsIGFuCisvLyBBbiBBZ2dyZWdhdGlvbiBzdW1tYXJpemVzIGEgc2VyaWVzIG9mIGluZGl2aWR1YWwgUmVzb3VyY2UgbWVhc3VyZW1lbnRzLCBhbgogLy8gQWdncmVnYXRpb25EZXNjcmlwdG9yIGRlc2NyaWJlcyBhbiBBZ2dyZWdhdGlvbi4KIG1lc3NhZ2UgQWdncmVnYXRpb25EZXNjcmlwdG9yIHsKLSAgLy8gQXQgbW9zdCBvbmUgc2V0IG9mIG9wdGlvbnMuIElmIG5laXRoZXIgb3B0aW9uIGlzIHNldCwgYSBkZWZhdWx0IHR5cGUKLSAgLy8gb2YgRGlzdHJpYnV0aW9uICh3aXRob3V0IGEgaGlzdG9ncmFtIGNvbXBvbmVudCkgd2lsbCBiZSB1c2VkLgorICBlbnVtIEFnZ3JlZ2F0aW9uVHlwZSB7CisgICAgLy8gVW5zcGVjaWZpZWQuIFNob3VsZCBub3QgYmUgdXNlZC4KKyAgICBVTktOT1dOID0gMDsKKyAgICAvLyBBIGNvdW50IG9mIG1lYXN1cmVtZW50cyBtYWRlLgorICAgIENPVU5UID0gMTsKKyAgICAvLyBBIERpc3RyaWJ1dGlvbi4KKyAgICBESVNUUklCVVRJT04gPSAyOworICAgIC8vIENvdW50cyBvdmVyIGZpeGVkIHRpbWUgaW50ZXJ2YWxzLgorICAgIElOVEVSVkFMID0gMzsKKyAgfQorICAvLyBUaGUgdHlwZSBvZiBBZ2dyZWdhdGlvbi4KKyAgQWdncmVnYXRpb25UeXBlIHR5cGUgPSAxOworCisgIC8vIEF0IG1vc3Qgb25lIHNldCBvZiBvcHRpb25zLiBJdCBpcyBpbGxlZ2FsIHRvIHNwZWNpZml5IGFuIG9wdGlvbiBmb3IKKyAgLy8gQ09VTlQgQWdncmVnYXRpb25zLiBpbnRlcnZhbF9ib3VuZGFyaWVzIG11c3QgYmUgc2V0IGZvciBJTlRFUlZBTCB0eXBlcy4KKyAgLy8gYnVja2V0X2JvdW5kYXJpZXMgYXJlIG9wdGlvbmFsIGZvciBESVNUUklCVVRJT04gdHlwZXMuCiAgIG9uZW9mIG9wdGlvbnMgewotICAgIC8vIERlZmluZXMgdGhlIGhpc3RvZ3JhbSBidWNrZXQgYm91bmRhcmllcyBmb3IgRGlzdHJpYnV0aW9ucy4KLSAgICBCdWNrZXRCb3VuZGFyaWVzIGJ1Y2tldF9ib3VuZGFyaWVzID0gMTsKKyAgICAvLyBEZWZpbmVzIGhpc3RvZ3JhbSBidWNrZXQgYm91bmRhcmllcyBmb3IgRGlzdHJpYnV0aW9ucy4KKyAgICBCdWNrZXRCb3VuZGFyaWVzIGJ1Y2tldF9ib3VuZGFyaWVzID0gMjsKICAgICAvLyBEZWZpbmVzIHRoZSB0aW1lIHdpbmRvd3MgdG8gcmVjb3JkIGZvciBJbnRlcnZhbFN0YXRzLgotICAgIEludGVydmFsQm91bmRhcmllcyBpbnRlcnZhbF9ib3VuZGFyaWVzID0gMjsKKyAgICBJbnRlcnZhbEJvdW5kYXJpZXMgaW50ZXJ2YWxfYm91bmRhcmllcyA9IDM7CiAgIH0KIAogICAvLyBBIERpc3RyaWJ1dGlvbiBtYXkgb3B0aW9uYWxseSBjb250YWluIGEgaGlzdG9ncmFtIG9mIHRoZSB2YWx1ZXMgaW4gdGhlCi0gIC8vIHBvcHVsYXRpb24uIFRoZSBidWNrZXQgYm91bmRhcmllcyBmb3IgdGhhdCBoaXN0b2dyYW0gaXMgZGVzY3JpYmVkIGJ5Ci0gIC8vIGBidWNrZXRfYm91bmRhcmllc2AuCi0gIC8vCi0gIC8vIERlc2NyaWJlcyBoaXN0b2dyYW0gYnVja2V0IGJvdW5kYXJpZXMuIERlZmluZXMgYHNpemUoYm91bmRzKSArIDFgICg9IE4pCi0gIC8vIGJ1Y2tldHMgKGZvciBzaXplKGJvdW5kcykgPj0gMTsgaWYgc2l6ZShib3VuZHMpID09IDAsIHRoZW4gbm8gaGlzdG9ncmFtCi0gIC8vIHdpbGwgYmUgZGVmaW5lZC4gVGhlIGJvdW5kYXJpZXMgZm9yIGJ1Y2tldCBpbmRleCBpIGFyZToKKyAgLy8gcG9wdWxhdGlvbi4gVGhlIGJ1Y2tldCBib3VuZGFyaWVzIGZvciB0aGF0IGhpc3RvZ3JhbSBhcmUgZGVzY3JpYmVkIGJ5CisgIC8vIGBidWNrZXRfYm91bmRhcmllc2AuIFRoaXMgZGVmaW5lcyBgc2l6ZShib3VuZHMpICsgMWAgKD0gTikgYnVja2V0cy4gVGhlCisgIC8vIGJvdW5kYXJpZXMgZm9yIGJ1Y2tldCBpbmRleCBpIGFyZToKICAgLy8KICAgLy8gWy1pbmZpbml0eSwgYm91bmRzW2ldKSBmb3IgaSA9PSAwCiAgIC8vIFtib3VuZHNbaS0xXSwgYm91bmRzW2ldKSBmb3IgMCA8IGkgPCBOLTIKQEAgLTE5Niw4ICsyMDEsOCBAQAogLy8gYSBzcGVjaWZpZWQgc2V0IG9mIGhpc3RvZ3JhbSBidWNrZXRzLCBhcyBkZWZpbmVkIGluCiAvLyBBZ2dyZWdhdGlvbi5idWNrZXRfb3B0aW9ucy4KIC8vCi0vLyBUaGUgc3VtbWFyeSBzdGF0aXN0aWNzIGFyZSB0aGUgY291bnQsIG1lYW4sIHN1bSBvZiB0aGUgc3F1YXJlZCBkZXZpYXRpb24gZnJvbQotLy8gdGhlIG1lYW4sIHRoZSBtaW5pbXVtLCBhbmQgdGhlIG1heGltdW0gb2YgdGhlIHNldCBvZiBwb3B1bGF0aW9uIG9mIHZhbHVlcy4KKy8vIFRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MgYXJlIHRoZSBjb3VudCwgbWVhbiwgbWluaW11bSwgYW5kIHRoZSBtYXhpbXVtIG9mIHRoZQorLy8gc2V0IG9mIHBvcHVsYXRpb24gb2YgdmFsdWVzLgogLy8KIC8vIEFsdGhvdWdoIGl0IGlzIG5vdCBmb3JiaWRkZW4sIGl0IGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIGluY2x1ZGUKIC8vIG5vbi1maW5pdGUgdmFsdWVzIChpbmZpbml0aWVzIG9yIE5hTnMpIGluIHRoZSBwb3B1bGF0aW9uIG9mIHZhbHVlcywgYXMgdGhpcwpAQCAtMjQzLDcgKzI0OCw3IEBACiBtZXNzYWdlIEludGVydmFsU3RhdHMgewogICAvLyBTdW1tYXJ5IHN0YXRpc3RpYyBvdmVyIGEgc2luZ2xlIHRpbWUgd2luZG93LgogICBtZXNzYWdlIFdpbmRvdyB7Ci0gICAgLy8gVGhlIHdpbmRvdyBkdXJhdGlvbi4KKyAgICAvLyBUaGUgd2luZG93IGR1cmF0aW9uLiBNdXN0IGJlIHBvc2l0aXZlLgogICAgIER1cmF0aW9uIHdpbmRvd19zaXplID0gMTsKICAgICAvLyBUaGUgbnVtYmVyIG9mIG1lYXN1cmVtZW50cyBpbiB0aGlzIHdpbmRvdy4KICAgICBpbnQ2NCBjb3VudCA9IDI7CkBAIC0yNTEsNyArMjU2LDcgQEAKICAgICBkb3VibGUgbWVhbiA9IDM7CiAgIH0KIAotICAvLyBGdWxsIHNldCBvZiB3aW5kb3dzIGZvciB0aGlzIG1ldHJpYy4KKyAgLy8gRnVsbCBzZXQgb2Ygd2luZG93cyBmb3IgdGhpcyBhZ2dyZWdhdGlvbi4KICAgcmVwZWF0ZWQgV2luZG93IHdpbmRvdyA9IDE7CiB9CiAKQEAgLTI2NCwyNCArMjY5LDI0IEBACiAvLyBBIFZpZXcgc3BlY2lmaWVzIGFuIEFnZ3JlZ2F0aW9uIGFuZCBhIHNldCBvZiB0YWcga2V5cy4gVGhlIEFnZ3JlZ2F0aW9uIHdpbGwKIC8vIGJlIGJyb2tlbiBkb3duIGJ5IHRoZSB1bmlxdWUgc2V0IG9mIG1hdGNoaW5nIHRhZyB2YWx1ZXMgZm9yIGVhY2ggbWVhc3VyZW1lbnQuCiBtZXNzYWdlIFZpZXcgewotICAvLyBOYW1lIG9mIHZpZXcuCisgIC8vIE5hbWUgb2Ygdmlldy4gTXVzdCBiZSB1bmlxdWUuCiAgIHN0cmluZyBuYW1lID0gMTsKIAogICAvLyBNb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLCBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4KICAgc3RyaW5nIGRlc2NyaXB0aW9uID0gMjsKIAotICAvLyBJRCBvZiBNZXRyaWMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBWaWV3LgotICBpbnQzMiBtZXRyaWNfaWQgPSAzOworICAvLyBOYW1lIG9mIFJlc291cmNlIHRvIGJlIGJyb2tlbiBkb3duIGZvciB0aGlzIHZpZXcuCisgIHN0cmluZyByZXNvdXJjZV9uYW1lID0gMzsKIAogICAvLyBBZ2dyZWdhdGlvbiB0eXBlIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgVmlldy4KICAgQWdncmVnYXRpb25EZXNjcmlwdG9yIGFnZ3JlZ2F0aW9uID0gNDsKIAotICAvLyBUYWcga2V5cyB0byBtYXRjaCB3aXRoIGEgZ2l2ZW4gTWV0cmljLiBJZiBubyBrZXlzIGFyZSBzcGVjaWZpZWQsIHRoZW4gYWxsCi0gIC8vIHN0YXRzIGZvciB0aGUgTWV0cmljIGFyZSByZWNvcmRlZC4gS2V5cyBtdXN0IGJlIHVuaXF1ZS4KKyAgLy8gVGFnIGtleXMgdG8gbWF0Y2ggd2l0aCBhIGdpdmVuIFJlc291cmNlIG1lYXN1cmVtZW50LiBJZiBubyBrZXlzIGFyZQorICAvLyBzcGVjaWZpZWQsIHRoZW4gYWxsIHN0YXRzIGFyZSByZWNvcmRlZC4gS2V5cyBtdXN0IGJlIHVuaXF1ZS4KICAgcmVwZWF0ZWQgc3RyaW5nIHRhZ19rZXkgPSA1OwogfQogCi0vLyBBbiBBZ2dyZWdhdGlvbiBzdW1tYXJpemVzIGEgc2VyaWVzIG9mIGluZGl2aWR1YWwgTWV0cmljIG1lYXN1cmVzLgorLy8gQW4gQWdncmVnYXRpb24gc3VtbWFyaXplcyBhIHNlcmllcyBvZiBpbmRpdmlkdWFsIFJlc291cmNlIG1lYXN1cmVtZW50cy4KIG1lc3NhZ2UgQWdncmVnYXRpb24gewogICAvLyBOYW1lIG9mIHRoaXMgYWdncmVnYXRpb24uCiAgIHN0cmluZyBuYW1lID0gMTsKQEAgLTI5MSwyMyArMjk2LDI3IEBACiAKICAgLy8gVGhlIGRhdGEgZm9yIHRoaXMgQWdncmVnYXRpb24uCiAgIG9uZW9mIGRhdGEgewotICAgIERpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb24gPSAzOwotICAgIEludGVydmFsU3RhdHMgaW50ZXJ2YWxfc3RhdHMgPSA0OworICAgIHVpbnQ2NCBjb3VudCA9IDM7CisgICAgRGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbiA9IDQ7CisgICAgSW50ZXJ2YWxTdGF0cyBpbnRlcnZhbF9zdGF0cyA9IDU7CiAgIH0KIAogICAvLyBUYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEFnZ3JlZ2F0aW9uLgotICByZXBlYXRlZCBUYWcgdGFnID0gNTsKKyAgcmVwZWF0ZWQgVGFnIHRhZyA9IDY7CiB9CiAKLS8vIEEgVmlld0FnZ3JlZ2F0aW9ucyByZXByZXNlbnRzIGFsbCB0aGUgQWdncmVnYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdmlldy4KLW1lc3NhZ2UgVmlld0FnZ3JlZ2F0aW9ucyB7CisvLyBBIE1ldHJpYyByZXByZXNlbnRzIGFsbCB0aGUgQWdncmVnYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdmlldy4KK21lc3NhZ2UgTWV0cmljIHsKKyAgLy8gVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBNZXRyaWMuCisgIHN0cmluZyB2aWV3X25hbWUgPSAxOworCiAgIC8vIEFnZ3JlZ2F0aW9ucyAtIGVhY2ggd2lsbCBoYXZlIGEgdW5pcXVlIHNldCBvZiB0YWcgdmFsdWVzIGZvciB0aGUgdGFnX2tleXMKICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFZpZXcuCi0gIHJlcGVhdGVkIEFnZ3JlZ2F0aW9uIGFnZ3JlZ2F0aW9uID0gMTsKKyAgcmVwZWF0ZWQgQWdncmVnYXRpb24gYWdncmVnYXRpb24gPSAyOwogCi0gIC8vIFN0YXJ0IGFuZCBlbmQgdGltZXN0YW1wcyBvdmVyIHdoaWNoIHRoZSB2YWx1ZSB3YXMgYWNjdW11bGF0ZWQuIFRoZXNlCisgIC8vIFN0YXJ0IGFuZCBlbmQgdGltZXN0YW1wcyBvdmVyIHdoaWNoIHRoZSBtZXRyaWMgd2FzIGFjY3VtdWxhdGVkLiBUaGVzZQogICAvLyB2YWx1ZXMgYXJlIG5vdCByZWxldmFudC9kZWZpbmVkIGZvciBJbnRlcnZhbFN0YXRzIGFnZ3JlZ2F0aW9ucywgd2hpY2ggYXJlCiAgIC8vIGFsd2F5cyBhY2N1bXVsYXRlZCBvdmVyIGEgZml4ZWQgdGltZSBwZXJpb2QuCi0gIFRpbWVzdGFtcCBzdGFydCA9IDI7Ci0gIFRpbWVzdGFtcCBlbmQgPSAzOworICBUaW1lc3RhbXAgc3RhcnQgPSAzOworICBUaW1lc3RhbXAgZW5kID0gNDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2dycGNfY29yZV9kZXBlbmRlbmNpZXMucHkgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjX2NvcmVfZGVwZW5kZW5jaWVzLnB5CmluZGV4IGEwMjkwMDUuLjk2OWU3YjAgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGNfY29yZV9kZXBlbmRlbmNpZXMucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwY19jb3JlX2RlcGVuZGVuY2llcy5weQpAQCAtMjUzLDYgKzI1Myw3IEBACiAgICdzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYycsCiAgICdzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYycsCiAgICdzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMnLAorICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMnLApAQCAtMjYyLDYgKzI2Myw3IEBACiAgICdzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYycsCiAgICdzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMnLAorICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jJywKICAgJ3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jJywKICAgJ3NyYy9ib3Jpbmdzc2wvZXJyX2RhdGEuYycsCmRpZmYgLS1naXQgYS9zcmMvcnVieS9leHQvZ3JwYy9yYl9ncnBjX2ltcG9ydHMuZ2VuZXJhdGVkLmMgYi9zcmMvcnVieS9leHQvZ3JwYy9yYl9ncnBjX2ltcG9ydHMuZ2VuZXJhdGVkLmMKaW5kZXggZDdmODYyYy4uYWVlNTdiMSAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5jCisrKyBiL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2dycGNfaW1wb3J0cy5nZW5lcmF0ZWQuYwpAQCAtNjEsMTUgKzYxLDEwIEBACiBjZW5zdXNfdHJhY2Vfc2Nhbl9zdGFydF90eXBlIGNlbnN1c190cmFjZV9zY2FuX3N0YXJ0X2ltcG9ydDsKIGNlbnN1c19nZXRfdHJhY2VfcmVjb3JkX3R5cGUgY2Vuc3VzX2dldF90cmFjZV9yZWNvcmRfaW1wb3J0OwogY2Vuc3VzX3RyYWNlX3NjYW5fZW5kX3R5cGUgY2Vuc3VzX3RyYWNlX3NjYW5fZW5kX2ltcG9ydDsKK2NlbnN1c19kZWZpbmVfcmVzb3VyY2VfdHlwZSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlX2ltcG9ydDsKK2NlbnN1c19kZWxldGVfcmVzb3VyY2VfdHlwZSBjZW5zdXNfZGVsZXRlX3Jlc291cmNlX2ltcG9ydDsKK2NlbnN1c19yZXNvdXJjZV9pZF90eXBlIGNlbnN1c19yZXNvdXJjZV9pZF9pbXBvcnQ7CiBjZW5zdXNfcmVjb3JkX3ZhbHVlc190eXBlIGNlbnN1c19yZWNvcmRfdmFsdWVzX2ltcG9ydDsKLWNlbnN1c192aWV3X2NyZWF0ZV90eXBlIGNlbnN1c192aWV3X2NyZWF0ZV9pbXBvcnQ7Ci1jZW5zdXNfdmlld19kZWxldGVfdHlwZSBjZW5zdXNfdmlld19kZWxldGVfaW1wb3J0OwotY2Vuc3VzX3ZpZXdfbWV0cmljX3R5cGUgY2Vuc3VzX3ZpZXdfbWV0cmljX2ltcG9ydDsKLWNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnNfdHlwZSBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zX2ltcG9ydDsKLWNlbnN1c192aWV3X3RhZ3NfdHlwZSBjZW5zdXNfdmlld190YWdzX2ltcG9ydDsKLWNlbnN1c192aWV3X2FnZ3JlZ3JhdGlvbnNfdHlwZSBjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX2ltcG9ydDsKLWNlbnN1c192aWV3X2dldF9kYXRhX3R5cGUgY2Vuc3VzX3ZpZXdfZ2V0X2RhdGFfaW1wb3J0OwotY2Vuc3VzX3ZpZXdfcmVzZXRfdHlwZSBjZW5zdXNfdmlld19yZXNldF9pbXBvcnQ7CiBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV90eXBlIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlX2ltcG9ydDsKIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX25hbWVfdHlwZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lX2ltcG9ydDsKIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX2Zvcl9sZXZlbF90eXBlIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX2Zvcl9sZXZlbF9pbXBvcnQ7CkBAIC0zMzQsMTUgKzMyOSwxMCBAQAogICBjZW5zdXNfdHJhY2Vfc2Nhbl9zdGFydF9pbXBvcnQgPSAoY2Vuc3VzX3RyYWNlX3NjYW5fc3RhcnRfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c190cmFjZV9zY2FuX3N0YXJ0Iik7CiAgIGNlbnN1c19nZXRfdHJhY2VfcmVjb3JkX2ltcG9ydCA9IChjZW5zdXNfZ2V0X3RyYWNlX3JlY29yZF90eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX2dldF90cmFjZV9yZWNvcmQiKTsKICAgY2Vuc3VzX3RyYWNlX3NjYW5fZW5kX2ltcG9ydCA9IChjZW5zdXNfdHJhY2Vfc2Nhbl9lbmRfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c190cmFjZV9zY2FuX2VuZCIpOworICBjZW5zdXNfZGVmaW5lX3Jlc291cmNlX2ltcG9ydCA9IChjZW5zdXNfZGVmaW5lX3Jlc291cmNlX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfZGVmaW5lX3Jlc291cmNlIik7CisgIGNlbnN1c19kZWxldGVfcmVzb3VyY2VfaW1wb3J0ID0gKGNlbnN1c19kZWxldGVfcmVzb3VyY2VfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c19kZWxldGVfcmVzb3VyY2UiKTsKKyAgY2Vuc3VzX3Jlc291cmNlX2lkX2ltcG9ydCA9IChjZW5zdXNfcmVzb3VyY2VfaWRfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c19yZXNvdXJjZV9pZCIpOwogICBjZW5zdXNfcmVjb3JkX3ZhbHVlc19pbXBvcnQgPSAoY2Vuc3VzX3JlY29yZF92YWx1ZXNfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c19yZWNvcmRfdmFsdWVzIik7Ci0gIGNlbnN1c192aWV3X2NyZWF0ZV9pbXBvcnQgPSAoY2Vuc3VzX3ZpZXdfY3JlYXRlX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdmlld19jcmVhdGUiKTsKLSAgY2Vuc3VzX3ZpZXdfZGVsZXRlX2ltcG9ydCA9IChjZW5zdXNfdmlld19kZWxldGVfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c192aWV3X2RlbGV0ZSIpOwotICBjZW5zdXNfdmlld19tZXRyaWNfaW1wb3J0ID0gKGNlbnN1c192aWV3X21ldHJpY190eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfbWV0cmljIik7Ci0gIGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnNfaW1wb3J0ID0gKGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnNfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnMiKTsKLSAgY2Vuc3VzX3ZpZXdfdGFnc19pbXBvcnQgPSAoY2Vuc3VzX3ZpZXdfdGFnc190eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfdGFncyIpOwotICBjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX2ltcG9ydCA9IChjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zIik7Ci0gIGNlbnN1c192aWV3X2dldF9kYXRhX2ltcG9ydCA9IChjZW5zdXNfdmlld19nZXRfZGF0YV90eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfZ2V0X2RhdGEiKTsKLSAgY2Vuc3VzX3ZpZXdfcmVzZXRfaW1wb3J0ID0gKGNlbnN1c192aWV3X3Jlc2V0X3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdmlld19yZXNldCIpOwogICBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV9pbXBvcnQgPSAoZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fcGFyc2VfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlIik7CiAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX25hbWVfaW1wb3J0ID0gKGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX25hbWVfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX25hbWUiKTsKICAgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fZm9yX2xldmVsX2ltcG9ydCA9IChncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9mb3JfbGV2ZWxfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX2Zvcl9sZXZlbCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5oIGIvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5oCmluZGV4IDE0ZGE2MzcuLjNiYjc2ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2dycGNfaW1wb3J0cy5nZW5lcmF0ZWQuaAorKysgYi9zcmMvcnVieS9leHQvZ3JwYy9yYl9ncnBjX2ltcG9ydHMuZ2VuZXJhdGVkLmgKQEAgLTEzNCwzMyArMTM0LDE4IEBACiB0eXBlZGVmIHZvaWQoKmNlbnN1c190cmFjZV9zY2FuX2VuZF90eXBlKSgpOwogZXh0ZXJuIGNlbnN1c190cmFjZV9zY2FuX2VuZF90eXBlIGNlbnN1c190cmFjZV9zY2FuX2VuZF9pbXBvcnQ7CiAjZGVmaW5lIGNlbnN1c190cmFjZV9zY2FuX2VuZCBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmRfaW1wb3J0Cit0eXBlZGVmIGludDMyX3QoKmNlbnN1c19kZWZpbmVfcmVzb3VyY2VfdHlwZSkoY29uc3QgdWludDhfdCAqcmVzb3VyY2VfcGIsIHNpemVfdCByZXNvdXJjZV9wYl9zaXplKTsKK2V4dGVybiBjZW5zdXNfZGVmaW5lX3Jlc291cmNlX3R5cGUgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV9pbXBvcnQ7CisjZGVmaW5lIGNlbnN1c19kZWZpbmVfcmVzb3VyY2UgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV9pbXBvcnQKK3R5cGVkZWYgdm9pZCgqY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZV90eXBlKShpbnQzMl90IHJlc291cmNlX2lkKTsKK2V4dGVybiBjZW5zdXNfZGVsZXRlX3Jlc291cmNlX3R5cGUgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZV9pbXBvcnQ7CisjZGVmaW5lIGNlbnN1c19kZWxldGVfcmVzb3VyY2UgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZV9pbXBvcnQKK3R5cGVkZWYgaW50MzJfdCgqY2Vuc3VzX3Jlc291cmNlX2lkX3R5cGUpKGNvbnN0IGNoYXIgKm5hbWUpOworZXh0ZXJuIGNlbnN1c19yZXNvdXJjZV9pZF90eXBlIGNlbnN1c19yZXNvdXJjZV9pZF9pbXBvcnQ7CisjZGVmaW5lIGNlbnN1c19yZXNvdXJjZV9pZCBjZW5zdXNfcmVzb3VyY2VfaWRfaW1wb3J0CiB0eXBlZGVmIHZvaWQoKmNlbnN1c19yZWNvcmRfdmFsdWVzX3R5cGUpKGNlbnN1c19jb250ZXh0ICpjb250ZXh0LCBjZW5zdXNfdmFsdWUgKnZhbHVlcywgc2l6ZV90IG52YWx1ZXMpOwogZXh0ZXJuIGNlbnN1c19yZWNvcmRfdmFsdWVzX3R5cGUgY2Vuc3VzX3JlY29yZF92YWx1ZXNfaW1wb3J0OwogI2RlZmluZSBjZW5zdXNfcmVjb3JkX3ZhbHVlcyBjZW5zdXNfcmVjb3JkX3ZhbHVlc19pbXBvcnQKLXR5cGVkZWYgY2Vuc3VzX3ZpZXcgKigqY2Vuc3VzX3ZpZXdfY3JlYXRlX3R5cGUpKHVpbnQzMl90IG1ldHJpY19pZCwgY29uc3QgY2Vuc3VzX2NvbnRleHQgKnRhZ3MsIGNvbnN0IGNlbnN1c19hZ2dyZWdhdGlvbiAqYWdncmVnYXRpb25zLCBzaXplX3QgbmFnZ3JlZ2F0aW9ucyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfY3JlYXRlX3R5cGUgY2Vuc3VzX3ZpZXdfY3JlYXRlX2ltcG9ydDsKLSNkZWZpbmUgY2Vuc3VzX3ZpZXdfY3JlYXRlIGNlbnN1c192aWV3X2NyZWF0ZV9pbXBvcnQKLXR5cGVkZWYgdm9pZCgqY2Vuc3VzX3ZpZXdfZGVsZXRlX3R5cGUpKGNlbnN1c192aWV3ICp2aWV3KTsKLWV4dGVybiBjZW5zdXNfdmlld19kZWxldGVfdHlwZSBjZW5zdXNfdmlld19kZWxldGVfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld19kZWxldGUgY2Vuc3VzX3ZpZXdfZGVsZXRlX2ltcG9ydAotdHlwZWRlZiBzaXplX3QoKmNlbnN1c192aWV3X21ldHJpY190eXBlKShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfbWV0cmljX3R5cGUgY2Vuc3VzX3ZpZXdfbWV0cmljX2ltcG9ydDsKLSNkZWZpbmUgY2Vuc3VzX3ZpZXdfbWV0cmljIGNlbnN1c192aWV3X21ldHJpY19pbXBvcnQKLXR5cGVkZWYgc2l6ZV90KCpjZW5zdXNfdmlld19uYWdncmVnYXRpb25zX3R5cGUpKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLWV4dGVybiBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zX3R5cGUgY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9uc19pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnMgY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9uc19pbXBvcnQKLXR5cGVkZWYgY29uc3QgY2Vuc3VzX2NvbnRleHQgKigqY2Vuc3VzX3ZpZXdfdGFnc190eXBlKShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfdGFnc190eXBlIGNlbnN1c192aWV3X3RhZ3NfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld190YWdzIGNlbnN1c192aWV3X3RhZ3NfaW1wb3J0Ci10eXBlZGVmIGNvbnN0IGNlbnN1c19hZ2dyZWdhdGlvbiAqKCpjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX3R5cGUpKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLWV4dGVybiBjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX3R5cGUgY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc19pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X2FnZ3JlZ3JhdGlvbnMgY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc19pbXBvcnQKLXR5cGVkZWYgY29uc3QgY2Vuc3VzX3ZpZXdfZGF0YSAqKCpjZW5zdXNfdmlld19nZXRfZGF0YV90eXBlKShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfZ2V0X2RhdGFfdHlwZSBjZW5zdXNfdmlld19nZXRfZGF0YV9pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X2dldF9kYXRhIGNlbnN1c192aWV3X2dldF9kYXRhX2ltcG9ydAotdHlwZWRlZiB2b2lkKCpjZW5zdXNfdmlld19yZXNldF90eXBlKShjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfcmVzZXRfdHlwZSBjZW5zdXNfdmlld19yZXNldF9pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X3Jlc2V0IGNlbnN1c192aWV3X3Jlc2V0X2ltcG9ydAogdHlwZWRlZiBpbnQoKmdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlX3R5cGUpKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG0gKmFsZ29yaXRobSk7CiBleHRlcm4gZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fcGFyc2VfdHlwZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV9pbXBvcnQ7CiAjZGVmaW5lIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlX2ltcG9ydApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9SRUFETUUgYi90ZXN0L2NvcmUvY2Vuc3VzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTM2M2I3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9SRUFETUUKQEAgLTAsMCArMSw3IEBACitUZXN0IHNvdXJjZSBhbmQgZGF0YSBmaWxlcyBmb3IgQ2Vuc3VzLgorCitiaW5hcnkgcHJvdG8gZmlsZXMgKCoucGIpIGluIGRhdGEgZGlyZWN0b3J5IGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgKi50eHQgZmlsZSwKK3ZpYToKKworQkFTRT0iZmlsZW5hbWUiCitjYXQgJEJBU0UudHh0IHwgcHJvdG9jIC0tZW5jb2RlPWdvb2dsZS5jZW5zdXMuUmVzb3VyY2UgY2Vuc3VzLnByb3RvID4gJEJBU0UucGIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9lbXB0eV9uYW1lLnBiIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2VtcHR5X25hbWUucGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ1NDc0NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9lbXB0eV9uYW1lLnBiCkBAIC0wLDAgKzEgQEAKKxoDEgEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2VtcHR5X25hbWUudHh0IGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2VtcHR5X25hbWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MWZkMzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZW1wdHlfbmFtZS50eHQKQEAgLTAsMCArMSw1IEBACisjIE5hbWUgaXMgcHJlc2VudCwgYnV0IGVtcHR5LgorbmFtZSA6ICcnCit1bml0IHsKKyAgbnVtZXJhdG9yIDogU0VDUworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2Z1bGwucGIgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC5wYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGM2YTJhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2Z1bGwucGIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2Z1bGwudHh0IGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2Z1bGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYTJmYWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC50eHQKQEAgLTAsMCArMSw5IEBACisjIEEgZnVsbCByZXNvdXJjZSBkZWZpbml0aW9uIC0gYWxsIGZpZWxkcyBmaWxsZWQgb3V0LgorbmFtZSA6ICdmdWxsX3Jlc291cmNlJworZGVzY3JpcHRpb24gOiAnQSByZXNvdXJjZSB3aXRoIGV2ZXJ5dGhpbmcgZGVmaW5lZCcKK3VuaXQgeworICAjIE1lZ2FiaXRzIHBlciBzZWNvbmQuCisgIHByZWZpeCA6IDYKKyAgbnVtZXJhdG9yIDogQklUUworICBkZW5vbWluYXRvciA6IFNFQ1MKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QucGIgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnBiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMDBjNDYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnBiCkBAIC0wLDAgKzEsMiBAQAorCisMbWluaW1hbF9nb29kGgMSAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnR4dCBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YTdlNzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnR4dApAQCAtMCwwICsxLDUgQEAKKyMgQSBtaW5pbWFsICJnb29kIiBSZXNvdXJjZSBkZWZpbml0aW9uOiBoYXMgYSBuYW1lIGFuZCBudW1lcmF0b3IvdW5pdC4KK25hbWUgOiAnbWluaW1hbF9nb29kJwordW5pdCB7CisgIG51bWVyYXRvciA6IFNFQ1MKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19uYW1lLnBiIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUucGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ1NDc0NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19uYW1lLnBiCkBAIC0wLDAgKzEgQEAKKxoDEgEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUudHh0IGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMTJhOTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbmFtZS50eHQKQEAgLTAsMCArMSw0IEBACisjIFRoZSBtaW5pbWFsIGdvb2QgUmVzb3VyY2Ugd2l0aG91dCBhIG5hbWUuCit1bml0IHsKKyAgbnVtZXJhdG9yIDogU0VDUworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci5wYiBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19udW1lcmF0b3IucGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1Y2NlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19udW1lcmF0b3IucGIKQEAgLTAsMCArMSwyIEBACisKKxVyZXNvdXJjZV9ub19udW1lcmF0b3IaDgj9//////////8BGgEDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci50eHQgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbnVtZXJhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzFmZWM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci50eHQKQEAgLTAsMCArMSw2IEBACisjIFJlc291cmNlIHdpdGhvdXQgYSBudW1lcmF0b3IKK25hbWUgOiAncmVzb3VyY2Vfbm9fbnVtZXJhdG9yJwordW5pdCB7CisgIHByZWZpeCA6IC0zCisgIGRlbm9taW5hdG9yIDogU0VDUworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX3VuaXQucGIgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC5wYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGNhMjYyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX3VuaXQucGIKQEAgLTAsMCArMSwyIEBACisKKxByZXNvdXJjZV9ub191bml0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX3VuaXQudHh0IGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX3VuaXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZDUxMTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC50eHQKQEAgLTAsMCArMSwyIEBACisjIFRoZSBtaW5pbWFsIGdvb2QgcmVzb3VyY2Ugd2l0aG91dCBhIHVuaXQKK25hbWUgOiAncmVzb3VyY2Vfbm9fdW5pdCcKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jZW5zdXMvcmVzb3VyY2VfdGVzdC5jIGIvdGVzdC9jb3JlL2NlbnN1cy9yZXNvdXJjZV90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1NTZkNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvcmVzb3VyY2VfdGVzdC5jCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxncnBjL2NlbnN1cy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgiCisjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKKworLy8gVGVzdCBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgZm9yIGRlYWxpbmcgd2l0aCBSZXNvdXJjZXMuCisKKy8vIEp1c3Qgc3RhcnR1cCBhbmQgc2h1dGRvd24gcmVzb3VyY2VzIHN1YnN5c3RlbS4KK3N0YXRpYyB2b2lkIHRlc3RfZW5hYmxlX2Rpc2FibGUoKSB7CisgIGluaXRpYWxpemVfcmVzb3VyY2VzKCk7CisgIHNodXRkb3duX3Jlc291cmNlcygpOworfQorCisvLyBBIGJsYW5rL2VtcHR5IGluaXRpYWxpemF0aW9uIHNob3VsZCBub3Qgd29yay4KK3N0YXRpYyB2b2lkIHRlc3RfZW1wdHlfZGVmaW5pdGlvbigpIHsKKyAgaW5pdGlhbGl6ZV9yZXNvdXJjZXMoKTsKKyAgaW50MzJfdCByaWQgPSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKE5VTEwsIDApOworICBHUFJfQVNTRVJUKHJpZCA9PSAtMSk7CisgIHVpbnQ4X3QgYnVmZmVyWzUwXSA9IHswfTsKKyAgcmlkID0gY2Vuc3VzX2RlZmluZV9yZXNvdXJjZShidWZmZXIsIDUwKTsKKyAgR1BSX0FTU0VSVChyaWQgPT0gLTEpOworICBzaHV0ZG93bl9yZXNvdXJjZXMoKTsKK30KKworLy8gR2l2ZW4gYSBmaWxlIG5hbWUsIHJlYWQgcmF3IHByb3RvIGFuZCBkZWZpbmUgdGhlIHJlc291cmNlIGluY2x1ZGVkIHdpdGhpbi4KKy8vIFJldHVybnMgcmVzb3VyY2UgaWQgZnJvbSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKCkuCitzdGF0aWMgaW50MzJfdCBkZWZpbmVfcmVzb3VyY2VfZnJvbV9maWxlKGNvbnN0IGNoYXIgKmZpbGUpIHsKKyNkZWZpbmUgQlVGX1NJWkUgNTEyCisgIHVpbnQ4X3QgYnVmZmVyW0JVRl9TSVpFXTsKKyAgRklMRSAqaW5wdXQgPSBmb3BlbihmaWxlLCAicmIiKTsKKyAgR1BSX0FTU0VSVChpbnB1dCAhPSBOVUxMKTsKKyAgc2l6ZV90IG5ieXRlcyA9IGZyZWFkKGJ1ZmZlciwgMSwgQlVGX1NJWkUsIGlucHV0KTsKKyAgR1BSX0FTU0VSVChuYnl0ZXMgIT0gMCAmJiBuYnl0ZXMgPCBCVUZfU0laRSAmJiBmZW9mKGlucHV0KSAmJiAhZmVycm9yKGlucHV0KSk7CisgIGludDMyX3QgcmlkID0gY2Vuc3VzX2RlZmluZV9yZXNvdXJjZShidWZmZXIsIG5ieXRlcyk7CisgIEdQUl9BU1NFUlQoZmNsb3NlKGlucHV0KSA9PSAwKTsKKyAgcmV0dXJuIHJpZDsKK30KKworLy8gVGVzdCBkZWZpbml0aW9uIG9mIGEgc2luZ2xlIHJlc291cmNlLCB1c2luZyBhIHByb3RvIHJlYWQgZnJvbSBhIGZpbGUuIFRoZQorLy8gYHN1Y2NlZWRgIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hldGhlciB3ZSBleHBlY3QgdGhlIGRlZmluaXRpb24gdG8gc3VjY2VlZCBvcgorLy8gZmFpbC4gYG5hbWVgIGlzIHVzZWQgdG8gY2hlY2sgdGhhdCB0aGUgcmV0dXJuZWQgcmVzb3VyY2UgY2FuIGJlIGxvb2tlZCB1cCBieQorLy8gbmFtZS4KK3N0YXRpYyB2b2lkIHRlc3RfZGVmaW5lX3NpbmdsZV9yZXNvdXJjZShjb25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VlZCkgeworICBncHJfbG9nKEdQUl9JTkZPLCAiVGVzdCBkZWZpbmluZyByZXNvdXJjZSBcIiVzXCJcbiIsIG5hbWUpOworICBpbml0aWFsaXplX3Jlc291cmNlcygpOworICBpbnQzMl90IHJpZCA9IGRlZmluZV9yZXNvdXJjZV9mcm9tX2ZpbGUoZmlsZSk7CisgIGlmIChzdWNjZWVkKSB7CisgICAgR1BSX0FTU0VSVChyaWQgPj0gMCk7CisgICAgaW50MzJfdCByaWQyID0gY2Vuc3VzX3Jlc291cmNlX2lkKG5hbWUpOworICAgIEdQUl9BU1NFUlQocmlkID09IHJpZDIpOworICB9IGVsc2UgeworICAgIEdQUl9BU1NFUlQocmlkIDwgMCk7CisgIH0KKyAgc2h1dGRvd25fcmVzb3VyY2VzKCk7Cit9CisKKy8vIFRyeSBkZWxldGluZyB2YXJpb3VzIHJlc291cmNlcyAoYm90aCB0aG9zZSB0aGF0IGV4aXN0IGFuZCB0aG9zZSB0aGF0IGRvbid0KS4KK3N0YXRpYyB2b2lkIHRlc3RfZGVsZXRlX3Jlc291cmNlKCkgeworICBpbml0aWFsaXplX3Jlc291cmNlcygpOworICAvLyBUcnkgZGVsZXRpbmcgcmVzb3VyY2UgYmVmb3JlIGFueSBhcmUgZGVmaW5lZC4KKyAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZSgwKTsKKyAgLy8gQ3JlYXRlIGFuZCBjaGVjayBhIGNvdXBsZSBvZiByZXNvdXJjZXMuCisgIGludDMyX3QgcmlkMSA9IGRlZmluZV9yZXNvdXJjZV9mcm9tX2ZpbGUoCisgICAgICAidGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX21pbmltYWxfZ29vZC5wYiIpOworICBpbnQzMl90IHJpZDIgPQorICAgICAgZGVmaW5lX3Jlc291cmNlX2Zyb21fZmlsZSgidGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2Z1bGwucGIiKTsKKyAgR1BSX0FTU0VSVChyaWQxID49IDAgJiYgcmlkMiA+PSAwICYmIHJpZDEgIT0gcmlkMik7CisgIGludDMyX3QgcmlkMyA9IGNlbnN1c19yZXNvdXJjZV9pZCgibWluaW1hbF9nb29kIik7CisgIGludDMyX3QgcmlkNCA9IGNlbnN1c19yZXNvdXJjZV9pZCgiZnVsbF9yZXNvdXJjZSIpOworICBHUFJfQVNTRVJUKHJpZDEgPT0gcmlkMyAmJiByaWQyID09IHJpZDQpOworICAvLyBUcnkgZGVsZXRpbmcgbm9uLWV4aXN0YW50IHJlc291cmNlcy4KKyAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZSgtMSk7CisgIGNlbnN1c19kZWxldGVfcmVzb3VyY2UocmlkMSArIHJpZDIgKyAxKTsKKyAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZSgxMDAwMDAwMCk7CisgIC8vIERlbGV0ZSBvbmUgb2YgdGhlIHByZXZpb3VzbHkgZGVmaW5lZCByZXNvdXJjZXMgYW5kIGNoZWNrIGZvciBkZWxldGlvbi4KKyAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZShyaWQxKTsKKyAgcmlkMyA9IGNlbnN1c19yZXNvdXJjZV9pZCgibWluaW1hbF9nb29kIik7CisgIEdQUl9BU1NFUlQocmlkMyA8IDApOworICAvLyBDaGVjayB0aGF0IHJlLWFkZGluZyB3b3Jrcy4KKyAgcmlkMSA9IGRlZmluZV9yZXNvdXJjZV9mcm9tX2ZpbGUoCisgICAgICAidGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX21pbmltYWxfZ29vZC5wYiIpOworICBHUFJfQVNTRVJUKHJpZDEgPj0gMCk7CisgIHJpZDMgPSBjZW5zdXNfcmVzb3VyY2VfaWQoIm1pbmltYWxfZ29vZCIpOworICBHUFJfQVNTRVJUKHJpZDEgPT0gcmlkMyk7CisgIHNodXRkb3duX3Jlc291cmNlcygpOworfQorCisvLyBUZXN0IGRlZmluZSBiYXNlIHJlc291cmNlcy4KK3N0YXRpYyB2b2lkIHRlc3RfYmFzZV9yZXNvdXJjZXMoKSB7CisgIGluaXRpYWxpemVfcmVzb3VyY2VzKCk7CisgIGRlZmluZV9iYXNlX3Jlc291cmNlcygpOworICBpbnQzMl90IHJpZDEgPSBjZW5zdXNfcmVzb3VyY2VfaWQoImNsaWVudF9ycGNfbGF0ZW5jeSIpOworICBpbnQzMl90IHJpZDIgPSBjZW5zdXNfcmVzb3VyY2VfaWQoInNlcnZlcl9ycGNfbGF0ZW5jeSIpOworICBHUFJfQVNTRVJUKHJpZDEgPj0gMCAmJiByaWQyID49IDAgJiYgcmlkMSAhPSByaWQyKTsKKyAgc2h1dGRvd25fcmVzb3VyY2VzKCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBncnBjX3Rlc3RfaW5pdChhcmdjLCBhcmd2KTsKKyAgdGVzdF9lbmFibGVfZGlzYWJsZSgpOworICB0ZXN0X2VtcHR5X2RlZmluaXRpb24oKTsKKyAgdGVzdF9kZWZpbmVfc2luZ2xlX3Jlc291cmNlKCJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaW5pbWFsX2dvb2QiLCB0cnVlKTsKKyAgdGVzdF9kZWZpbmVfc2luZ2xlX3Jlc291cmNlKCJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC5wYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVsbF9yZXNvdXJjZSIsIHRydWUpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19uYW1lLnBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXNvdXJjZV9ub19uYW1lIiwgZmFsc2UpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19udW1lcmF0b3IucGIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc291cmNlX25vX251bWVyYXRvciIsIGZhbHNlKTsKKyAgdGVzdF9kZWZpbmVfc2luZ2xlX3Jlc291cmNlKCJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC5wYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2Vfbm9fdW5pdCIsIGZhbHNlKTsKKyAgdGVzdF9kZWZpbmVfc2luZ2xlX3Jlc291cmNlKCJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZW1wdHlfbmFtZS5wYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VfZW1wdHlfbmFtZSIsIGZhbHNlKTsKKyAgdGVzdF9kZWxldGVfcmVzb3VyY2UoKTsKKyAgdGVzdF9iYXNlX3Jlc291cmNlcygpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jaGFubmVsL2NoYW5uZWxfc3RhY2tfdGVzdC5jIGIvdGVzdC9jb3JlL2NoYW5uZWwvY2hhbm5lbF9zdGFja190ZXN0LmMKaW5kZXggODA2ZmQwYS4uNTY5YjNmNyAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2NoYW5uZWwvY2hhbm5lbF9zdGFja190ZXN0LmMKKysrIGIvdGVzdC9jb3JlL2NoYW5uZWwvY2hhbm5lbF9zdGFja190ZXN0LmMKQEAgLTUzLDEwICs1MywxMiBAQAogICAqKGludCAqKShlbGVtLT5jaGFubmVsX2RhdGEpID0gMDsKIH0KIAotc3RhdGljIHZvaWQgY2FsbF9pbml0X2Z1bmMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmNhbGxfaW5pdF9mdW5jKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgKysqKGludCAqKShlbGVtLT5jaGFubmVsX2RhdGEpOwogICAqKGludCAqKShlbGVtLT5jYWxsX2RhdGEpID0gMDsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogc3RhdGljIHZvaWQgY2hhbm5lbF9kZXN0cm95X2Z1bmMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCkBAIC0xMzMsOCArMTM1LDEwIEBACiAgIEdQUl9BU1NFUlQoKmNoYW5uZWxfZGF0YSA9PSAwKTsKIAogICBjYWxsX3N0YWNrID0gZ3ByX21hbGxvYyhjaGFubmVsX3N0YWNrLT5jYWxsX3N0YWNrX3NpemUpOwotICBncnBjX2NhbGxfc3RhY2tfaW5pdCgmZXhlY19jdHgsIGNoYW5uZWxfc3RhY2ssIDEsIGZyZWVfY2FsbCwgY2FsbF9zdGFjaywgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgY2FsbF9zdGFjayk7CisgIGdycGNfZXJyb3IgKmVycm9yID0KKyAgICAgIGdycGNfY2FsbF9zdGFja19pbml0KCZleGVjX2N0eCwgY2hhbm5lbF9zdGFjaywgMSwgZnJlZV9jYWxsLCBjYWxsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY2FsbF9zdGFjayk7CisgIEdQUl9BU1NFUlQoZXJyb3IgPT0gR1JQQ19FUlJPUl9OT05FKTsKICAgR1BSX0FTU0VSVChjYWxsX3N0YWNrLT5jb3VudCA9PSAxKTsKICAgY2FsbF9lbGVtID0gZ3JwY19jYWxsX3N0YWNrX2VsZW1lbnQoY2FsbF9zdGFjaywgMCk7CiAgIEdQUl9BU1NFUlQoY2FsbF9lbGVtLT5maWx0ZXIgPT0gY2hhbm5lbF9lbGVtLT5maWx0ZXIpOwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF9ub3NlY190ZXN0cy5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF9ub3NlY190ZXN0cy5jCmluZGV4IDU5ZWY2YmEuLjNlZmQxOGMgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfbm9zZWNfdGVzdHMuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX25vc2VjX3Rlc3RzLmMKQEAgLTY5LDYgKzY5LDggQEAKIGV4dGVybiB2b2lkIGRpc2FwcGVhcmluZ19zZXJ2ZXJfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBlbXB0eV9iYXRjaChncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKIGV4dGVybiB2b2lkIGVtcHR5X2JhdGNoX3ByZV9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKK2V4dGVybiB2b2lkIGZpbHRlcl9jYWxsX2luaXRfZmFpbHNfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBmaWx0ZXJfY2F1c2VzX2Nsb3NlKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwogZXh0ZXJuIHZvaWQgZmlsdGVyX2NhdXNlc19jbG9zZV9wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGdyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bihncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKQEAgLTE0MCw2ICsxNDIsNyBAQAogICBkZWZhdWx0X2hvc3RfcHJlX2luaXQoKTsKICAgZGlzYXBwZWFyaW5nX3NlcnZlcl9wcmVfaW5pdCgpOwogICBlbXB0eV9iYXRjaF9wcmVfaW5pdCgpOworICBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzX3ByZV9pbml0KCk7CiAgIGZpbHRlcl9jYXVzZXNfY2xvc2VfcHJlX2luaXQoKTsKICAgZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duX3ByZV9pbml0KCk7CiAgIGhpZ2hfaW5pdGlhbF9zZXFub19wcmVfaW5pdCgpOwpAQCAtMTg5LDYgKzE5Miw3IEBACiAgICAgZGVmYXVsdF9ob3N0KGNvbmZpZyk7CiAgICAgZGlzYXBwZWFyaW5nX3NlcnZlcihjb25maWcpOwogICAgIGVtcHR5X2JhdGNoKGNvbmZpZyk7CisgICAgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhjb25maWcpOwogICAgIGZpbHRlcl9jYXVzZXNfY2xvc2UoY29uZmlnKTsKICAgICBncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24oY29uZmlnKTsKICAgICBoaWdoX2luaXRpYWxfc2Vxbm8oY29uZmlnKTsKQEAgLTI3Miw2ICsyNzYsMTAgQEAKICAgICAgIGVtcHR5X2JhdGNoKGNvbmZpZyk7CiAgICAgICBjb250aW51ZTsKICAgICB9CisgICAgaWYgKDAgPT0gc3RyY21wKCJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIiwgYXJndltpXSkpIHsKKyAgICAgIGZpbHRlcl9jYWxsX2luaXRfZmFpbHMoY29uZmlnKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KICAgICBpZiAoMCA9PSBzdHJjbXAoImZpbHRlcl9jYXVzZXNfY2xvc2UiLCBhcmd2W2ldKSkgewogICAgICAgZmlsdGVyX2NhdXNlc19jbG9zZShjb25maWcpOwogICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX3Rlc3RzLmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX3Rlc3RzLmMKaW5kZXggY2JjN2MzYy4uZTNkNzkxYSAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF90ZXN0cy5jCisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuYwpAQCAtNzEsNiArNzEsOCBAQAogZXh0ZXJuIHZvaWQgZGlzYXBwZWFyaW5nX3NlcnZlcl9wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGVtcHR5X2JhdGNoKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwogZXh0ZXJuIHZvaWQgZW1wdHlfYmF0Y2hfcHJlX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOworZXh0ZXJuIHZvaWQgZmlsdGVyX2NhbGxfaW5pdF9mYWlsc19wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGZpbHRlcl9jYXVzZXNfY2xvc2UoZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CiBleHRlcm4gdm9pZCBmaWx0ZXJfY2F1c2VzX2Nsb3NlX3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwpAQCAtMTQzLDYgKzE0NSw3IEBACiAgIGRlZmF1bHRfaG9zdF9wcmVfaW5pdCgpOwogICBkaXNhcHBlYXJpbmdfc2VydmVyX3ByZV9pbml0KCk7CiAgIGVtcHR5X2JhdGNoX3ByZV9pbml0KCk7CisgIGZpbHRlcl9jYWxsX2luaXRfZmFpbHNfcHJlX2luaXQoKTsKICAgZmlsdGVyX2NhdXNlc19jbG9zZV9wcmVfaW5pdCgpOwogICBncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd25fcHJlX2luaXQoKTsKICAgaGlnaF9pbml0aWFsX3NlcW5vX3ByZV9pbml0KCk7CkBAIC0xOTMsNiArMTk2LDcgQEAKICAgICBkZWZhdWx0X2hvc3QoY29uZmlnKTsKICAgICBkaXNhcHBlYXJpbmdfc2VydmVyKGNvbmZpZyk7CiAgICAgZW1wdHlfYmF0Y2goY29uZmlnKTsKKyAgICBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzKGNvbmZpZyk7CiAgICAgZmlsdGVyX2NhdXNlc19jbG9zZShjb25maWcpOwogICAgIGdyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bihjb25maWcpOwogICAgIGhpZ2hfaW5pdGlhbF9zZXFubyhjb25maWcpOwpAQCAtMjgwLDYgKzI4NCwxMCBAQAogICAgICAgZW1wdHlfYmF0Y2goY29uZmlnKTsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KKyAgICBpZiAoMCA9PSBzdHJjbXAoImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiLCBhcmd2W2ldKSkgeworICAgICAgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhjb25maWcpOworICAgICAgY29udGludWU7CisgICAgfQogICAgIGlmICgwID09IHN0cmNtcCgiZmlsdGVyX2NhdXNlc19jbG9zZSIsIGFyZ3ZbaV0pKSB7CiAgICAgICBmaWx0ZXJfY2F1c2VzX2Nsb3NlKGNvbmZpZyk7CiAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2Z1enplcnMvaHBhY2suZGljdGlvbmFyeSBiL3Rlc3QvY29yZS9lbmQyZW5kL2Z1enplcnMvaHBhY2suZGljdGlvbmFyeQppbmRleCBhZjA3NWMwLi4zMTU3ZGZjIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9mdXp6ZXJzL2hwYWNrLmRpY3Rpb25hcnkKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvZnV6emVycy9ocGFjay5kaWN0aW9uYXJ5CkBAIC0yMSw4ICsyMSw2IEBACiAiXHgwQTphdXRob3JpdHkiCiAiXHgwRGF1dGhvcml6YXRpb24iCiAiXHgwRGNhY2hlLWNvbnRyb2wiCi0iXHgwQWNlbnN1cy1iaW4iCi0iXHgxMWNlbnN1cy1iaW5hcnktYmluIgogIlx4MTNjb250ZW50LWRpc3Bvc2l0aW9uIgogIlx4MTBjb250ZW50LWVuY29kaW5nIgogIlx4MTBjb250ZW50LWxhbmd1YWdlIgpAQCAtNDIsMTEgKzQwLDEzIEBACiAiXHgwM0dFVCIKICJceDA0Z3JwYyIKICJceDE0Z3JwYy1hY2NlcHQtZW5jb2RpbmciCisiXHgwRmdycGMtY2Vuc3VzLWJpbiIKICJceDBEZ3JwYy1lbmNvZGluZyIKICJceDFFZ3JwYy1pbnRlcm5hbC1lbmNvZGluZy1yZXF1ZXN0IgogIlx4MENncnBjLW1lc3NhZ2UiCiAiXHgwQmdycGMtc3RhdHVzIgogIlx4MENncnBjLXRpbWVvdXQiCisiXHgxMGdycGMtdHJhY2luZy1iaW4iCiAiXHgwNGd6aXAiCiAiXHgwRGd6aXAsIGRlZmxhdGUiCiAiXHgwNGhvc3QiCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9nZW5fYnVpbGRfeWFtbC5weSBiL3Rlc3QvY29yZS9lbmQyZW5kL2dlbl9idWlsZF95YW1sLnB5CmluZGV4IGNkMDM1OWYuLmM1YmQ3NzYgMTAwNzU1Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2dlbl9idWlsZF95YW1sLnB5CisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2dlbl9idWlsZF95YW1sLnB5CkBAIC0xMDMsNiArMTAzLDcgQEAKICAgICAnZGlzYXBwZWFyaW5nX3NlcnZlcic6IGNvbm5lY3Rpdml0eV90ZXN0X29wdGlvbnMsCiAgICAgJ2VtcHR5X2JhdGNoJzogZGVmYXVsdF90ZXN0X29wdGlvbnMsCiAgICAgJ2ZpbHRlcl9jYXVzZXNfY2xvc2UnOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucywKKyAgICAnZmlsdGVyX2NhbGxfaW5pdF9mYWlscyc6IGRlZmF1bHRfdGVzdF9vcHRpb25zLAogICAgICdncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24nOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucy5fcmVwbGFjZShjcHVfY29zdD1MT1dDUFUpLAogICAgICdocGFja19zaXplJzogZGVmYXVsdF90ZXN0X29wdGlvbnMuX3JlcGxhY2UocHJveHlhYmxlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VhYmxlPUZhbHNlKSwKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDkxODNiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jCkBAIC0wLDAgKzEsMjczIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInRlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlci5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGltZS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuaCIKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5oIgorCitlbnVtIHsgVElNRU9VVCA9IDIwMDAwMCB9OworCitzdGF0aWMgYm9vbCBnX2VuYWJsZV9maWx0ZXIgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgKnRhZyhpbnRwdHJfdCB0KSB7IHJldHVybiAodm9pZCAqKXQ7IH0KKworc3RhdGljIGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgYmVnaW5fdGVzdChncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzICpjbGllbnRfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKnNlcnZlcl9hcmdzKSB7CisgIGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgZjsKKyAgZ3ByX2xvZyhHUFJfSU5GTywgIiVzLyVzIiwgdGVzdF9uYW1lLCBjb25maWcubmFtZSk7CisgIGYgPSBjb25maWcuY3JlYXRlX2ZpeHR1cmUoY2xpZW50X2FyZ3MsIHNlcnZlcl9hcmdzKTsKKyAgY29uZmlnLmluaXRfc2VydmVyKCZmLCBzZXJ2ZXJfYXJncyk7CisgIGNvbmZpZy5pbml0X2NsaWVudCgmZiwgY2xpZW50X2FyZ3MpOworICByZXR1cm4gZjsKK30KKworc3RhdGljIGdwcl90aW1lc3BlYyBuX3NlY29uZHNfdGltZShpbnQgbikgeworICByZXR1cm4gR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUobik7Cit9CisKK3N0YXRpYyBncHJfdGltZXNwZWMgZml2ZV9zZWNvbmRzX3RpbWUodm9pZCkgeyByZXR1cm4gbl9zZWNvbmRzX3RpbWUoNSk7IH0KKworc3RhdGljIHZvaWQgZHJhaW5fY3EoZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpjcSkgeworICBncnBjX2V2ZW50IGV2OworICBkbyB7CisgICAgZXYgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfbmV4dChjcSwgZml2ZV9zZWNvbmRzX3RpbWUoKSwgTlVMTCk7CisgIH0gd2hpbGUgKGV2LnR5cGUgIT0gR1JQQ19RVUVVRV9TSFVURE9XTik7Cit9CisKK3N0YXRpYyB2b2lkIHNodXRkb3duX3NlcnZlcihncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIGlmICghZi0+c2VydmVyKSByZXR1cm47CisgIGdycGNfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnkoZi0+c2VydmVyLCBmLT5jcSwgdGFnKDEwMDApKTsKKyAgR1BSX0FTU0VSVChncnBjX2NvbXBsZXRpb25fcXVldWVfcGx1Y2soCisgICAgICAgICAgICAgICAgIGYtPmNxLCB0YWcoMTAwMCksIEdSUENfVElNRU9VVF9TRUNPTkRTX1RPX0RFQURMSU5FKDUpLCBOVUxMKQorICAgICAgICAgICAgICAgICAudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFKTsKKyAgZ3JwY19zZXJ2ZXJfZGVzdHJveShmLT5zZXJ2ZXIpOworICBmLT5zZXJ2ZXIgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBzaHV0ZG93bl9jbGllbnQoZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSAqZikgeworICBpZiAoIWYtPmNsaWVudCkgcmV0dXJuOworICBncnBjX2NoYW5uZWxfZGVzdHJveShmLT5jbGllbnQpOworICBmLT5jbGllbnQgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBlbmRfdGVzdChncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIHNodXRkb3duX3NlcnZlcihmKTsKKyAgc2h1dGRvd25fY2xpZW50KGYpOworCisgIGdycGNfY29tcGxldGlvbl9xdWV1ZV9zaHV0ZG93bihmLT5jcSk7CisgIGRyYWluX2NxKGYtPmNxKTsKKyAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koZi0+Y3EpOworfQorCisvLyBTaW1wbGUgcmVxdWVzdCB2aWEgYSBzZXJ2ZXIgZmlsdGVyIHRoYXQgYWx3YXlzIGZhaWxzIHRvIGluaXRpYWxpemUKKy8vIHRoZSBjYWxsLgorc3RhdGljIHZvaWQgdGVzdF9yZXF1ZXN0KGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpIHsKKyAgZ3JwY19jYWxsICpjOworICBncnBjX2NhbGwgKnM7CisgIGdwcl9zbGljZSByZXF1ZXN0X3BheWxvYWRfc2xpY2UgPSBncHJfc2xpY2VfZnJvbV9jb3BpZWRfc3RyaW5nKCJoZWxsbyB3b3JsZCIpOworICBncnBjX2J5dGVfYnVmZmVyICpyZXF1ZXN0X3BheWxvYWQgPQorICAgICAgZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKCZyZXF1ZXN0X3BheWxvYWRfc2xpY2UsIDEpOworICBncHJfdGltZXNwZWMgZGVhZGxpbmUgPSBmaXZlX3NlY29uZHNfdGltZSgpOworICBncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGYgPQorICAgICAgYmVnaW5fdGVzdChjb25maWcsICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIiwgTlVMTCwgTlVMTCk7CisgIGNxX3ZlcmlmaWVyICpjcXYgPSBjcV92ZXJpZmllcl9jcmVhdGUoZi5jcSk7CisgIGdycGNfb3Agb3BzWzZdOworICBncnBjX29wICpvcDsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSBpbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIGdycGNfbWV0YWRhdGFfYXJyYXkgdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSByZXF1ZXN0X21ldGFkYXRhX3JlY3Y7CisgIGdycGNfYnl0ZV9idWZmZXIgKnJlcXVlc3RfcGF5bG9hZF9yZWN2ID0gTlVMTDsKKyAgZ3JwY19jYWxsX2RldGFpbHMgY2FsbF9kZXRhaWxzOworICBncnBjX3N0YXR1c19jb2RlIHN0YXR1czsKKyAgZ3JwY19jYWxsX2Vycm9yIGVycm9yOworICBjaGFyICpkZXRhaWxzID0gTlVMTDsKKyAgc2l6ZV90IGRldGFpbHNfY2FwYWNpdHkgPSAwOworCisgIGMgPSBncnBjX2NoYW5uZWxfY3JlYXRlX2NhbGwoZi5jbGllbnQsIE5VTEwsIEdSUENfUFJPUEFHQVRFX0RFRkFVTFRTLCBmLmNxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZm9vIiwgImZvby50ZXN0Lmdvb2dsZS5mciIsIGRlYWRsaW5lLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChjKTsKKworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJmluaXRpYWxfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmdHJhaWxpbmdfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmcmVxdWVzdF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19jYWxsX2RldGFpbHNfaW5pdCgmY2FsbF9kZXRhaWxzKTsKKworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLmNvdW50ID0gMDsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLm1ldGFkYXRhID0gTlVMTDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX01FU1NBR0U7CisgIG9wLT5kYXRhLnNlbmRfbWVzc2FnZSA9IHJlcXVlc3RfcGF5bG9hZDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX0NMT1NFX0ZST01fQ0xJRU5UOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEucmVjdl9pbml0aWFsX21ldGFkYXRhID0gJmluaXRpYWxfbWV0YWRhdGFfcmVjdjsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX1NUQVRVU19PTl9DTElFTlQ7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC50cmFpbGluZ19tZXRhZGF0YSA9ICZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2OworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzID0gJnN0YXR1czsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1c19kZXRhaWxzID0gJmRldGFpbHM7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC5zdGF0dXNfZGV0YWlsc19jYXBhY2l0eSA9ICZkZXRhaWxzX2NhcGFjaXR5OworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBlcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaChjLCBvcHMsIChzaXplX3QpKG9wIC0gb3BzKSwgdGFnKDEpLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworCisgIGVycm9yID0KKyAgICAgIGdycGNfc2VydmVyX3JlcXVlc3RfY2FsbChmLnNlcnZlciwgJnMsICZjYWxsX2RldGFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVlc3RfbWV0YWRhdGFfcmVjdiwgZi5jcSwgZi5jcSwgdGFnKDEwMSkpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisKKyAgY3FfZXhwZWN0X2NvbXBsZXRpb24oY3F2LCB0YWcoMSksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKworICBHUFJfQVNTRVJUKHN0YXR1cyA9PSBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRCk7CisgIEdQUl9BU1NFUlQoMCA9PSBzdHJjbXAoZGV0YWlscywgImFjY2VzcyBkZW5pZWQiKSk7CisKKyAgZ3ByX2ZyZWUoZGV0YWlscyk7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmaW5pdGlhbF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZyZXF1ZXN0X21ldGFkYXRhX3JlY3YpOworICBncnBjX2NhbGxfZGV0YWlsc19kZXN0cm95KCZjYWxsX2RldGFpbHMpOworCisgIGdycGNfY2FsbF9kZXN0cm95KGMpOworCisgIGNxX3ZlcmlmaWVyX2Rlc3Ryb3koY3F2KTsKKworICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVxdWVzdF9wYXlsb2FkKTsKKyAgZ3JwY19ieXRlX2J1ZmZlcl9kZXN0cm95KHJlcXVlc3RfcGF5bG9hZF9yZWN2KTsKKworICBlbmRfdGVzdCgmZik7CisgIGNvbmZpZy50ZWFyX2Rvd25fZGF0YSgmZik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUZXN0IGZpbHRlciAtIGFsd2F5cyBmYWlscyB0byBpbml0aWFsaXplIGEgY2FsbAorICovCisKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CisgIHJldHVybiBncnBjX2Vycm9yX3NldF9pbnQoR1JQQ19FUlJPUl9DUkVBVEUoImFjY2VzcyBkZW5pZWQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0VSUk9SX0lOVF9HUlBDX1NUQVRVUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYW5kX2ZyZWVfbWVtb3J5KSB7fQorCitzdGF0aWMgdm9pZCBpbml0X2NoYW5uZWxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2VsZW1lbnRfYXJncyAqYXJncykge30KKworc3RhdGljIHZvaWQgZGVzdHJveV9jaGFubmVsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfZWxlbWVudCAqZWxlbSkge30KKworc3RhdGljIGNvbnN0IGdycGNfY2hhbm5lbF9maWx0ZXIgdGVzdF9maWx0ZXIgPSB7CisgICAgZ3JwY19jYWxsX25leHRfb3AsCisgICAgZ3JwY19jaGFubmVsX25leHRfb3AsCisgICAgMCwKKyAgICBpbml0X2NhbGxfZWxlbSwKKyAgICBncnBjX2NhbGxfc3RhY2tfaWdub3JlX3NldF9wb2xsc2V0X29yX3BvbGxzZXRfc2V0LAorICAgIGRlc3Ryb3lfY2FsbF9lbGVtLAorICAgIDAsCisgICAgaW5pdF9jaGFubmVsX2VsZW0sCisgICAgZGVzdHJveV9jaGFubmVsX2VsZW0sCisgICAgZ3JwY19jYWxsX25leHRfZ2V0X3BlZXIsCisgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMifTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFJlZ2lzdHJhdGlvbgorICovCisKK3N0YXRpYyBib29sIG1heWJlX2FkZF9maWx0ZXIoZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXIgKmJ1aWxkZXIsIHZvaWQgKmFyZykgeworICBpZiAoZ19lbmFibGVfZmlsdGVyKSB7CisgICAgLy8gV2FudCB0byBhZGQgdGhlIGZpbHRlciBhcyBjbG9zZSB0byB0aGUgZW5kIGFzIHBvc3NpYmxlLCB0byBtYWtlCisgICAgLy8gc3VyZSB0aGF0IGFsbCBvZiB0aGUgZmlsdGVycyB3b3JrIHdlbGwgdG9nZXRoZXIuICBIb3dldmVyLCB3ZQorICAgIC8vIGNhbid0IGFkZCBpdCBhdCB0aGUgdmVyeSBlbmQsIGJlY2F1c2UgdGhlIGNvbm5lY3RlZCBjaGFubmVsIGZpbHRlcgorICAgIC8vIG11c3QgYmUgdGhlIGxhc3Qgb25lLiAgU28gd2UgYWRkIGl0IHJpZ2h0IGJlZm9yZSB0aGUgbGFzdCBvbmUuCisgICAgZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXJfaXRlcmF0b3IgKml0ID0KKyAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXJfY3JlYXRlX2l0ZXJhdG9yX2F0X2xhc3QoYnVpbGRlcik7CisgICAgR1BSX0FTU0VSVChncnBjX2NoYW5uZWxfc3RhY2tfYnVpbGRlcl9tb3ZlX3ByZXYoaXQpKTsKKyAgICBjb25zdCBib29sIHJldHZhbCA9IGdycGNfY2hhbm5lbF9zdGFja19idWlsZGVyX2FkZF9maWx0ZXJfYmVmb3JlKAorICAgICAgICBpdCwgJnRlc3RfZmlsdGVyLCBOVUxMLCBOVUxMKTsKKyAgICBncnBjX2NoYW5uZWxfc3RhY2tfYnVpbGRlcl9pdGVyYXRvcl9kZXN0cm95KGl0KTsKKyAgICByZXR1cm4gcmV0dmFsOworICB9IGVsc2UgeworICAgIHJldHVybiB0cnVlOworICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfcGx1Z2luKHZvaWQpIHsKKyAgZ3JwY19jaGFubmVsX2luaXRfcmVnaXN0ZXJfc3RhZ2UoR1JQQ19TRVJWRVJfQ0hBTk5FTCwgSU5UX01BWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVfYWRkX2ZpbHRlciwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfcGx1Z2luKHZvaWQpIHt9CisKK3ZvaWQgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKSB7CisgIGdfZW5hYmxlX2ZpbHRlciA9IHRydWU7CisgIHRlc3RfcmVxdWVzdChjb25maWcpOworICBnX2VuYWJsZV9maWx0ZXIgPSBmYWxzZTsKK30KKwordm9pZCBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzX3ByZV9pbml0KHZvaWQpIHsKKyAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oaW5pdF9wbHVnaW4sIGRlc3Ryb3lfcGx1Z2luKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYwppbmRleCA1YTQ4MDNiLi5jNmMzNmQ2IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2F1c2VzX2Nsb3NlLmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhdXNlc19jbG9zZS5jCkBAIC0yMzMsOCArMjMzLDExIEBACiAgIGdycGNfY2FsbF9uZXh0X29wKGV4ZWNfY3R4LCBlbGVtLCBvcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHt9CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOworfQogCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL3Fwcy9saW1pdF9jb3Jlcy5jYyBiL3Rlc3QvY3BwL3Fwcy9saW1pdF9jb3Jlcy5jYwppbmRleCA1OWVkMzY5Li5iNWMyMjI1IDEwMDY0NAotLS0gYS90ZXN0L2NwcC9xcHMvbGltaXRfY29yZXMuY2MKKysrIGIvdGVzdC9jcHAvcXBzL2xpbWl0X2NvcmVzLmNjCkBAIC02OCw5ICs2OCw5IEBACiAgICAgICBjb3Jlc19zZXQrKzsKICAgICB9CiAgIH0KLSAgR1BSX0FTU0VSVChzY2hlZF9zZXRhZmZpbml0eSgwLCBzaXplLCBjcHVwKSA9PSAwKTsKKyAgYm9vbCBhZmZpbml0eV9zZXQgPSAoc2NoZWRfc2V0YWZmaW5pdHkoMCwgc2l6ZSwgY3B1cCkgPT0gMCk7CiAgIENQVV9GUkVFKGNwdXApOwotICByZXR1cm4gY29yZXNfc2V0OworICByZXR1cm4gYWZmaW5pdHlfc2V0ID8gY29yZXNfc2V0IDogbnVtX2NvcmVzOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvdG9vbHMvY29kZWdlbi9jb3JlL2dlbl9zdGF0aWNfbWV0YWRhdGEucHkgYi90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX3N0YXRpY19tZXRhZGF0YS5weQppbmRleCBjM2MwNDk2Li44NTlhZGNiIDEwMDc1NQotLS0gYS90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX3N0YXRpY19tZXRhZGF0YS5weQorKysgYi90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX3N0YXRpY19tZXRhZGF0YS5weQpAQCAtNTAsOCArNTAsOCBAQAogICAgICdob3N0JywKICAgICAnZ3JwYy1tZXNzYWdlJywKICAgICAnZ3JwYy1zdGF0dXMnLAotICAgICdjZW5zdXMtYmluJywKLSAgICAnY2Vuc3VzLWJpbmFyeS1iaW4nLAorICAgICdncnBjLXRyYWNpbmctYmluJywKKyAgICAnZ3JwYy1jZW5zdXMtYmluJywKICAgICAnJywKICAgICAoJ2dycGMtc3RhdHVzJywgJzAnKSwKICAgICAoJ2dycGMtc3RhdHVzJywgJzEnKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL2Rpc3RyaWIvY2hlY2tfaW5jbHVkZV9ndWFyZHMucHkgYi90b29scy9kaXN0cmliL2NoZWNrX2luY2x1ZGVfZ3VhcmRzLnB5CmluZGV4IDU2YjI5MjQuLjI4MzEyODEgMTAwNzU1Ci0tLSBhL3Rvb2xzL2Rpc3RyaWIvY2hlY2tfaW5jbHVkZV9ndWFyZHMucHkKKysrIGIvdG9vbHMvZGlzdHJpYi9jaGVja19pbmNsdWRlX2d1YXJkcy5weQpAQCAtMjAwLDYgKzIwMCw2IEBACiAKIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZV9saXN0OgogICBpZiBmaWxlbmFtZSBpbiBLTk9XTl9CQUQ6IGNvbnRpbnVlCi0gIG9rID0gdmFsaWRhdG9yLmNoZWNrKGZpbGVuYW1lLCBhcmdzLmZpeCkKKyAgb2sgPSBvayBhbmQgdmFsaWRhdG9yLmNoZWNrKGZpbGVuYW1lLCBhcmdzLmZpeCkKIAogc3lzLmV4aXQoMCBpZiBvayBlbHNlIDEpCmRpZmYgLS1naXQgYS90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUuaW50ZXJuYWwgYi90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUuaW50ZXJuYWwKaW5kZXggNWY1ZmRmZi4uYjE3MjIzMiAxMDA2NDQKLS0tIGEvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jb3JlLmludGVybmFsCisrKyBiL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuY29yZS5pbnRlcm5hbApAQCAtOTQyLDExICs5NDIsMTMgQEAKIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oIFwKIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCBcCiBzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmggXAorc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCBcCiBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaCBcCitzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmggXAogc3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmggXAogc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jIFwKIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jIFwKQEAgLTExMjYsNiArMTEyOCw3IEBACiBzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYyBcCiBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyBcCiBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMgXAorc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXApAQCAtMTEzNSw2ICsxMTM4LDcgQEAKIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMgXAogc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCitzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMgXAogc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMgXAogc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMgXAogaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCBcCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvc291cmNlc19hbmRfaGVhZGVycy5qc29uIGIvdG9vbHMvcnVuX3Rlc3RzL3NvdXJjZXNfYW5kX2hlYWRlcnMuanNvbgppbmRleCAxMzJiZGY5Li40ODU0YTBiIDEwMDY0NAotLS0gYS90b29scy9ydW5fdGVzdHMvc291cmNlc19hbmRfaGVhZGVycy5qc29uCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9zb3VyY2VzX2FuZF9oZWFkZXJzLmpzb24KQEAgLTE0OSw2ICsxNDksMjIgQEAKICAgICBdLCAKICAgICAiaGVhZGVycyI6IFtdLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImNlbnN1c19yZXNvdXJjZV90ZXN0IiwgCisgICAgInNyYyI6IFsKKyAgICAgICJ0ZXN0L2NvcmUvY2Vuc3VzL3Jlc291cmNlX3Rlc3QuYyIKKyAgICBdLCAKKyAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCisgICAgInR5cGUiOiAidGFyZ2V0IgorICB9LCAKKyAgeworICAgICJkZXBzIjogWworICAgICAgImdwciIsIAorICAgICAgImdwcl90ZXN0X3V0aWwiLCAKKyAgICAgICJncnBjIiwgCisgICAgICAiZ3JwY190ZXN0X3V0aWwiCisgICAgXSwgCisgICAgImhlYWRlcnMiOiBbXSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKICAgICAibmFtZSI6ICJjaGFubmVsX2NyZWF0ZV90ZXN0IiwgCiAgICAgInNyYyI6IFsKICAgICAgICJ0ZXN0L2NvcmUvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZV90ZXN0LmMiCkBAIC01NDQxLDYgKzU0NTcsNyBAQAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2RlZmF1bHRfaG9zdC5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGlzYXBwZWFyaW5nX3NlcnZlci5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZW1wdHlfYmF0Y2guYyIsIAorICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2dyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bi5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvaGlnaF9pbml0aWFsX3NlcW5vLmMiLCAKQEAgLTU1MDIsNiArNTUxOSw3IEBACiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGVmYXVsdF9ob3N0LmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kaXNhcHBlYXJpbmdfc2VydmVyLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9lbXB0eV9iYXRjaC5jIiwgCisgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhdXNlc19jbG9zZS5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9oaWdoX2luaXRpYWxfc2Vxbm8uYyIsIApAQCAtNTU0MiwxMSArNTU2MCwxMyBAQAogICAgICJoZWFkZXJzIjogWwogICAgICAgImluY2x1ZGUvZ3JwYy9jZW5zdXMuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiCiAgICAgXSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKQEAgLTU1NTQsNiArNTU3NCw4IEBACiAgICAgInNyYyI6IFsKICAgICAgICJpbmNsdWRlL2dycGMvY2Vuc3VzLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19pbnRlcmZhY2UuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMiLCAKQEAgLTU1NjgsNiArNTU5MCw4IEBACiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMiCiAgICAgXSwgCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvdGVzdHMuanNvbiBiL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCmluZGV4IDE0MmEzYjYuLjMyMTcxNDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCkBAIC0xODIsNiArMTgyLDI3IEBACiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJndGVzdCI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImNlbnN1c19yZXNvdXJjZV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IiwgCisgICAgICAid2luZG93cyIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IiwgCisgICAgICAid2luZG93cyIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJndGVzdCI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAogICAgICJuYW1lIjogImNoYW5uZWxfY3JlYXRlX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgImxpbnV4IiwgCkBAIC00Njk5LDYgKzQ3MjAsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2NlbnN1c190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNTYwMSw2ICs1NjQ0LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jb21wcmVzc190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNjQ4OSw2ICs2NTU0LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mYWtlc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC03Mjc2LDYgKzczNjIsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZmRfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtODA4NCw2ICs4MTkwLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC04OTAyLDYgKzkwMzAsMjIgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGwrcGlwZV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtOTY0Miw2ICs5Nzg2LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3RyYWNlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMDUwOCw2ICsxMDY3NCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfaHR0cF9wcm94eV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTEzODMsNiArMTE1NzAsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMjI3MSw2ICsxMjQ4MCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfb2F1dGgyX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMzA5MCw2ICsxMzMyMCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfcHJveHlfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTEzODA0LDYgKzE0MDU1LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTQ1NjAsNiArMTQ4MzIsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyK3RyYWNlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xNTI5NSw2ICsxNTU4OCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc29ja3BhaXJfMWJ5dGVfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE2MTI4LDYgKzE2NDQyLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zc2xfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE3MDMwLDYgKzE3MzY2LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zc2xfY2VydF90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTc4NzYsNiArMTgyMzQsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NzbF9wcm94eV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTg2MTksNiArMTg5OTgsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfdWRzX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE5NDQ1LDYgKzE5ODQ0LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jZW5zdXNfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIwMzI1LDYgKzIwNzQ2LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jb21wcmVzc19ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjExMTksNiArMjE1NjIsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZmRfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjE5MDUsNiArMjIzNjgsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGxfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIyNzA3LDYgKzIzMTkyLDIyIEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3BpcGVfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIzNDI1LDYgKzIzOTI2LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3RyYWNlX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yNDI3MCw2ICsyNDc5MywyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfaHR0cF9wcm94eV9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjUxMjMsNiArMjU2NjcsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yNTk0OCw2ICsyNjUxNCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfcHJveHlfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTI2NjQxLDYgKzI3MjI4LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjczNzYsNiArMjc5ODQsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyK3RyYWNlX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yODExMCw2ICsyODczOSwyOSBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbCisgICAgICAibXNhbiIKKyAgICBdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl8xYnl0ZV9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjg5MjUsNiArMjk1NzcsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfdWRzX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvYnVpbGR0ZXN0c19jLnNsbiBiL3ZzcHJvamVjdHMvYnVpbGR0ZXN0c19jLnNsbgppbmRleCBhYTFlYjJiLi4xM2E2YmRjIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL2J1aWxkdGVzdHNfYy5zbG4KKysrIGIvdnNwcm9qZWN0cy9idWlsZHRlc3RzX2Muc2xuCkBAIC0xMDksNiArMTA5LDE3IEBACiAJCXtCMjNEM0QxQS05NDM4LTRFREEtQkVCNi05QTBBMDNEMTc3OTJ9ID0ge0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn0KIAlFbmRQcm9qZWN0U2VjdGlvbgogRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjZW5zdXNfcmVzb3VyY2VfdGVzdCIsICJ2Y3hwcm9qXHRlc3RcY2Vuc3VzX3Jlc291cmNlX3Rlc3RcY2Vuc3VzX3Jlc291cmNlX3Rlc3QudmN4cHJvaiIsICJ7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fSIKKwlQcm9qZWN0U2VjdGlvbihteVByb3BlcnRpZXMpID0gcHJlUHJvamVjdAorICAgICAgICAJbGliID0gIkZhbHNlIgorCUVuZFByb2plY3RTZWN0aW9uCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7MTdCQ0FGQzAtNUZEQy00Qzk0LUFFQjktOTVGM0UyMjA2MTRCfSA9IHsxN0JDQUZDMC01RkRDLTRDOTQtQUVCOS05NUYzRTIyMDYxNEJ9CisJCXsyOUQxNjg4NS03MjI4LTRDMzEtODFFRC01RjkxODdDN0YyQTl9ID0gezI5RDE2ODg1LTcyMjgtNEMzMS04MUVELTVGOTE4N0M3RjJBOX0KKwkJe0VBQjBBNjI5LTE3QTktNDREQi1CNUZGLUU5MUE3MjFGRTAzN30gPSB7RUFCMEE2MjktMTdBOS00NERCLUI1RkYtRTkxQTcyMUZFMDM3fQorCQl7QjIzRDNEMUEtOTQzOC00RURBLUJFQjYtOUEwQTAzRDE3NzkyfSA9IHtCMjNEM0QxQS05NDM4LTRFREEtQkVCNi05QTBBMDNEMTc3OTJ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY2hhbm5lbF9jcmVhdGVfdGVzdCIsICJ2Y3hwcm9qXHRlc3RcY2hhbm5lbF9jcmVhdGVfdGVzdFxjaGFubmVsX2NyZWF0ZV90ZXN0LnZjeHByb2oiLCAie0FGQzg4NDg0LTNBMkUtMzJCQy0yNUIyLTIzREY3NDFENEYzRH0iCiAJUHJvamVjdFNlY3Rpb24obXlQcm9wZXJ0aWVzKSA9IHByZVByb2plY3QKICAgICAgICAgCWxpYiA9ICJGYWxzZSIKQEAgLTE2MjMsNiArMTYzNCwyMiBAQAogCQl7NUMxQ0ZDMkQtQUYzQy1EN0NCLUJBNzQtRDI2N0U5MUNCQzczfS5SZWxlYXNlLURMTHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgogCQl7NUMxQ0ZDMkQtQUYzQy1EN0NCLUJBNzQtRDI2N0U5MUNCQzczfS5SZWxlYXNlLURMTHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKIAkJezVDMUNGQzJELUFGM0MtRDdDQi1CQTc0LUQyNjdFOTFDQkM3M30uUmVsZWFzZS1ETEx8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LkRlYnVnLURMTHxXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2UtRExMfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZS1ETEx8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZS1ETEx8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2UtRExMfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKIAkJe0FGQzg4NDg0LTNBMkUtMzJCQy0yNUIyLTIzREY3NDFENEYzRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKIAkJe0FGQzg4NDg0LTNBMkUtMzJCQy0yNUIyLTIzREY3NDFENEYzRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAogCQl7QUZDODg0ODQtM0EyRS0zMkJDLTI1QjItMjNERjc0MUQ0RjNEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjL2dycGMudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjL2dycGMudmN4cHJvagppbmRleCA3MTU2NjRkLi5hMmQ5Yjg1IDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qCkBAIC00NTEsMTEgKzQ1MSwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxvYWRfcmVwb3J0aW5nXGxvYWRfcmVwb3J0aW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbG9hZF9yZXBvcnRpbmdcbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGFnZ3JlZ2F0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGJhc2VfcmVzb3VyY2VzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNlbnN1c19pbnRlcmZhY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY2Vuc3VzX3JwY19zdGF0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xnZW5cY2Vuc3VzLnBiLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGdycGNfZmlsdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXG1sb2cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccmVzb3VyY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccnBjX21ldHJpY19pZC5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTgxNSw2ICs4MTcsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxvYWRfcmVwb3J0aW5nXGxvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNvbnRleHQuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGdlblxjZW5zdXMucGIuYyI+CkBAIC04MzMsNiArODM3LDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccGxhY2Vob2xkZXJzLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xyZXNvdXJjZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcdHJhY2luZy5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXHBsdWdpbl9yZWdpc3RyeVxncnBjX3BsdWdpbl9yZWdpc3RyeS5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjL2dycGMudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTIyYmQyMy4uMGVhNDMxMyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qLmZpbHRlcnMKQEAgLTUzNSw2ICs1MzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxvYWRfcmVwb3J0aW5nXGxvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGxvYWRfcmVwb3J0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGJhc2VfcmVzb3VyY2VzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNvbnRleHQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTU2Miw2ICs1NjUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccmVzb3VyY2UuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcdHJhY2luZy5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTExOCw2ICsxMTI0LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYWdncmVnYXRpb24uaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY2Vuc3VzX2ludGVyZmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTEzMyw2ICsxMTQyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcbWxvZy5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xyZXNvdXJjZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xycGNfbWV0cmljX2lkLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2oKaW5kZXggMGY0MGU5ZS4uM2JiZDRiNyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvagpAQCAtNDE2LDExICs0MTYsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9kZWNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9lbmNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYWdncmVnYXRpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY2Vuc3VzX2ludGVyZmFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xjZW5zdXNfcnBjX3N0YXRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGdlblxjZW5zdXMucGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcZ3JwY19maWx0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcbWxvZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xyZXNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xycGNfbWV0cmljX2lkLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtNzIyLDYgKzcyNCw4IEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XHJvdW5kX3JvYmluXHJvdW5kX3JvYmluLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY29udGV4dC5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcZ2VuXGNlbnN1cy5wYi5jIj4KQEAgLTc0MCw2ICs3NDQsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1x0cmFjaW5nLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVccGx1Z2luX3JlZ2lzdHJ5XGdycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2ouZmlsdGVycwppbmRleCBlYjFiNzA3Li4xNmJhM2E3IDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2ouZmlsdGVycwpAQCAtNDQ4LDYgKzQ0OCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XHJvdW5kX3JvYmluXHJvdW5kX3JvYmluLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcbGJfcG9saWN5XHJvdW5kX3JvYmluPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGJhc2VfcmVzb3VyY2VzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNvbnRleHQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ3NSw2ICs0NzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccmVzb3VyY2UuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcdHJhY2luZy5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtOTUzLDYgKzk1OSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGFnZ3JlZ2F0aW9uLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGJhc2VfcmVzb3VyY2VzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNlbnN1c19pbnRlcmZhY2UuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTk2OCw2ICs5NzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xtbG9nLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZmJkNTQKLS0tIC9kZXYvbnVsbAorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTk5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjEyLjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMub3BlbnNzbC4xLjAuMjA0LjFcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wucHJvcHMiIENvbmRpdGlvbj0iRXhpc3RzKCckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVwxLjAuMjA0LjEucHJvcHMnKSIgLz4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8SWdub3JlV2FybkludERpckluVGVtcERldGVjdGVkPnRydWU8L0lnbm9yZVdhcm5JbnREaXJJblRlbXBEZXRlY3RlZD4KKyAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpSW50RGlyXCQoTVNCdWlsZFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTAuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTEuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTIuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTQuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nUmVsZWFzZSciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXGdsb2JhbC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcb3BlbnNzbC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcd2luc29jay5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcemxpYi5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nRGVidWcnIj4KKyAgICA8VGFyZ2V0TmFtZT5jZW5zdXNfcmVzb3VyY2VfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgICA8TGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc196bGliPnN0YXRpYzwvTGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc196bGliPgorICAgIDxDb25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+RGVidWc8L0NvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KKyAgICA8TGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPnN0YXRpYzwvTGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPgorICAgIDxDb25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+RGVidWc8L0NvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J1JlbGVhc2UnIj4KKyAgICA8VGFyZ2V0TmFtZT5jZW5zdXNfcmVzb3VyY2VfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgICA8TGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc196bGliPnN0YXRpYzwvTGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc196bGliPgorICAgIDxDb25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPgorICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CisgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5SZWxlYXNlPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTRExDaGVjaz50cnVlPC9TRExDaGVjaz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJChKZW5raW5zKSI+Tm9uZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxNaW5pbWFsUmVidWlsZCBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9NaW5pbWFsUmVidWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiEkKEplbmtpbnMpIj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iJChKZW5raW5zKSI+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKworICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTRExDaGVjaz50cnVlPC9TRExDaGVjaz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJChKZW5raW5zKSI+Tm9uZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxNaW5pbWFsUmVidWlsZCBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9NaW5pbWFsUmVidWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiEkKEplbmtpbnMpIj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iJChKZW5raW5zKSI+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKworICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxTRExDaGVjaz50cnVlPC9TRExDaGVjaz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IiQoSmVua2lucykiPk5vbmU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8TWluaW1hbFJlYnVpbGQgQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5mYWxzZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24gQ29uZGl0aW9uPSIhJChKZW5raW5zKSI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFNETENoZWNrPnRydWU8L1NETENoZWNrPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0IENvbmRpdGlvbj0iJChKZW5raW5zKSI+Tm9uZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxNaW5pbWFsUmVidWlsZCBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9NaW5pbWFsUmVidWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiEkKEplbmtpbnMpIj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iJChKZW5raW5zKSI+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKworICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGNlbnN1c1xyZXNvdXJjZV90ZXN0LmMiPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncnBjX3Rlc3RfdXRpbFxncnBjX3Rlc3RfdXRpbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxN0JDQUZDMC01RkRDLTRDOTQtQUVCOS05NUYzRTIyMDYxNEJ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncnBjXGdycGMudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MjlEMTY4ODUtNzIyOC00QzMxLTgxRUQtNUY5MTg3QzdGMkE5fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1x2Y3hwcm9qXC5cZ3ByX3Rlc3RfdXRpbFxncHJfdGVzdF91dGlsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e0VBQjBBNjI5LTE3QTktNDREQi1CNUZGLUU5MUE3MjFGRTAzN308L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdwclxncHIudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57QjIzRDNEMUEtOTQzOC00RURBLUJFQjYtOUEwQTAzRDE3NzkyfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9InBhY2thZ2VzLmNvbmZpZyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDxJbXBvcnQgUHJvamVjdD0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwYWNrYWdlc1xncnBjLmRlcGVuZGVuY2llcy56bGliLnJlZGlzdC4xLjIuOC4xMFxidWlsZFxuYXRpdmVcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi5yZWRpc3QudGFyZ2V0cyIgQ29uZGl0aW9uPSJFeGlzdHMoJyQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi5yZWRpc3QuMS4yLjguMTBcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzXGdycGMuZGVwZW5kZW5jaWVzLnpsaWIudGFyZ2V0cycpIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi4xLjIuOC4xMFxidWlsZFxuYXRpdmVcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi50YXJnZXRzIiBDb25kaXRpb249IkV4aXN0cygnJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwYWNrYWdlc1xncnBjLmRlcGVuZGVuY2llcy56bGliLjEuMi44LjEwXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llc1xncnBjLmRlcGVuZGVuY2llcy56bGliLnRhcmdldHMnKSIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wucmVkaXN0LjEuMC4yMDQuMVxidWlsZFxuYXRpdmVcZ3JwYy5kZXBlbmRlbmNpZXMub3BlbnNzbC5yZWRpc3QudGFyZ2V0cyIgQ29uZGl0aW9uPSJFeGlzdHMoJyQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMub3BlbnNzbC5yZWRpc3QuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llc1xncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnRhcmdldHMnKSIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnRhcmdldHMiIENvbmRpdGlvbj0iRXhpc3RzKCckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llc1xncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnRhcmdldHMnKSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFRhcmdldCBOYW1lPSJFbnN1cmVOdUdldFBhY2thZ2VCdWlsZEltcG9ydHMiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8RXJyb3JUZXh0PlRoaXMgcHJvamVjdCByZWZlcmVuY2VzIE51R2V0IHBhY2thZ2UocykgdGhhdCBhcmUgbWlzc2luZyBvbiB0aGlzIGNvbXB1dGVyLiBFbmFibGUgTnVHZXQgUGFja2FnZSBSZXN0b3JlIHRvIGRvd25sb2FkIHRoZW0uICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8/TGlua0lEPTMyMjEwNS4gVGhlIG1pc3NpbmcgZmlsZSBpcyB7MH0uPC9FcnJvclRleHQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxFcnJvciBDb25kaXRpb249IiFFeGlzdHMoJyQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi5yZWRpc3QuMS4yLjguMTBcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzLnpsaWIucmVkaXN0LnRhcmdldHMnKSIgVGV4dD0iJChbU3lzdGVtLlN0cmluZ106OkZvcm1hdCgnJChFcnJvclRleHQpJywgJyQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNccGFja2FnZXNcZ3JwYy5kZXBlbmRlbmNpZXMuemxpYi5yZWRpc3QuMS4yLjguMTBcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzLnpsaWIucmVkaXN0LnRhcmdldHMnKSIgLz4KKyAgICA8RXJyb3IgQ29uZGl0aW9uPSIhRXhpc3RzKCckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLnpsaWIuMS4yLjguMTBcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzLnpsaWIudGFyZ2V0cycpIiBUZXh0PSIkKFtTeXN0ZW0uU3RyaW5nXTo6Rm9ybWF0KCckKEVycm9yVGV4dCknLCAnJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwYWNrYWdlc1xncnBjLmRlcGVuZGVuY2llcy56bGliLjEuMi44LjEwXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llcy56bGliLnRhcmdldHMnKSIgLz4KKyAgICA8RXJyb3IgQ29uZGl0aW9uPSIhRXhpc3RzKCckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wucmVkaXN0LjEuMC4yMDQuMVxidWlsZFxuYXRpdmVcZ3JwYy5kZXBlbmRlbmNpZXMub3BlbnNzbC5yZWRpc3QudGFyZ2V0cycpIiBUZXh0PSIkKFtTeXN0ZW0uU3RyaW5nXTo6Rm9ybWF0KCckKEVycm9yVGV4dCknLCAnJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwYWNrYWdlc1xncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnJlZGlzdC4xLjAuMjA0LjFcYnVpbGRcbmF0aXZlXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wucmVkaXN0LnRhcmdldHMnKSIgLz4KKyAgICA8RXJyb3IgQ29uZGl0aW9uPSIhRXhpc3RzKCckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnByb3BzJykiIFRleHQ9IiQoW1N5c3RlbS5TdHJpbmddOjpGb3JtYXQoJyQoRXJyb3JUZXh0KScsICckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnByb3BzJykiIC8+CisgICAgPEVycm9yIENvbmRpdGlvbj0iIUV4aXN0cygnJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwYWNrYWdlc1xncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLjEuMC4yMDQuMVxidWlsZFxuYXRpdmVcZ3JwYy5kZXBlbmRlbmNpZXMub3BlbnNzbC50YXJnZXRzJykiIFRleHQ9IiQoW1N5c3RlbS5TdHJpbmddOjpGb3JtYXQoJyQoRXJyb3JUZXh0KScsICckKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHBhY2thZ2VzXGdycGMuZGVwZW5kZW5jaWVzLm9wZW5zc2wuMS4wLjIwNC4xXGJ1aWxkXG5hdGl2ZVxncnBjLmRlcGVuZGVuY2llcy5vcGVuc3NsLnRhcmdldHMnKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2ouZmlsdGVycyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2ZhYWM1Ci0tLSAvZGV2L251bGwKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvY2Vuc3VzX3Jlc291cmNlX3Rlc3QvY2Vuc3VzX3Jlc291cmNlX3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcY2Vuc3VzXHJlc291cmNlX3Rlc3QuYyI+CisgICAgICA8RmlsdGVyPnRlc3RcY29yZVxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3QiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezMxM2FhZDRlLWQzM2ItODhjNS03ZDk0LWUwNGE0Y2IwYzkxMn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmUiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ZmMmQ3NGVmLTIyOGEtMTczOS03ZmE3LTdkY2NiZWM1YjBjNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmVcY2Vuc3VzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0ZjUyOWJkOS0zOTZmLTAyN2MtYmM0OS1mOWE2YmJjOTdjNzJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2oKaW5kZXggZmMxMDY4Zi4uYTUwMGZlMyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qCkBAIC0xNzksNiArMTc5LDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGVtcHR5X2JhdGNoLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGZpbHRlcl9jYXVzZXNfY2xvc2UuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24uYyI+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZGU4YzBkZC4uNmYyMjk0YyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2ouZmlsdGVycwpAQCAtNDMsNiArNDMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZW1wdHlfYmF0Y2guYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhdXNlc19jbG9zZS5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qCmluZGV4IGE5MDJiYjQuLjc2MTQwODkgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvagpAQCAtMTgxLDYgKzE4MSw4IEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xlbXB0eV9iYXRjaC5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xmaWx0ZXJfY2F1c2VzX2Nsb3NlLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duLmMiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvai5maWx0ZXJzCmluZGV4IDUyMmY3M2QuLmRiMzM2ZjAgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ2LDYgKzQ2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGVtcHR5X2JhdGNoLmMiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIj4KKyAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGZpbHRlcl9jYXVzZXNfY2xvc2UuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cg==