ZGlmZiAtLWdpdCBhL0JVSUxEIGIvQlVJTEQKaW5kZXggZWY3OGY0NC4uNTJkMWQ1YSAxMDA2NDQKLS0tIGEvQlVJTEQKKysrIGIvQlVJTEQKQEAgLTEwMiw2ICsxMDIsMjAgQEAKICAgICAic3JjL2NvcmUvbGliL3N1cHBvcnQvd3JhcF9tZW1jcHkuYyIsCiAgIF0sCiAgIGhkcnMgPSBbCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fd2luMzIuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgiLAogICAgICJpbmNsdWRlL2dycGMvc3VwcG9ydC9hbGxvYy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtLmgiLAogICAgICJpbmNsdWRlL2dycGMvc3VwcG9ydC9hdG1fZ2NjX2F0b21pYy5oIiwKQEAgLTEzMCwyMCArMTQ0LDYgQEAKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX21zdmMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9zdXBwb3J0L3Rsc19wdGhyZWFkLmgiLAogICAgICJpbmNsdWRlL2dycGMvc3VwcG9ydC91c2VmdWwuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fd2luMzIuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgiLAogICBdLAogICBpbmNsdWRlcyA9IFsKICAgICAiaW5jbHVkZSIsCkBAIC0xNTcsOCArMTU3LDMyIEBACiBjY19saWJyYXJ5KAogICBuYW1lID0gImdycGMiLAogICBzcmNzID0gWworICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdGltZW91dF9lbmNvZGluZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5oIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5oIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5oIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmgiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5oIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmgiLApAQCAtMjM1LDYgKzI1OSwxNSBAQAogICAgICJzcmMvY29yZS9saWIvanNvbi9qc29uX3JlYWRlci5oIiwKICAgICAic3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIiwKKyAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIiwKKyAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2pzb25fdG9rZW4uaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qd3RfdmVyaWZpZXIuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiLAogICAgICJzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfaW50ZXJmYWNlLmgiLAogICAgICJzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfcnBjX3N0YXRzLmgiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuaCIsCkBAIC0yNTAsNTcgKzI4Myw1NSBAQAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3N1cmZhY2VfdHJhY2UuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHR0cDJfZXJyb3JzLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X2ltcGwuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2pzb25fdG9rZW4uaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qd3RfdmVyaWZpZXIuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90c2kvc3NsX3R5cGVzLmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHlfaW50ZXJmYWNlLmgiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZW5jb2RlLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMiLApAQCAtMzM0LDYgKzM2NSw3IEBACiAgICAgInNyYy9jb3JlL2xpYi9kZWJ1Zy90cmFjZS5jIiwKICAgICAic3JjL2NvcmUvbGliL2h0dHAvZm9ybWF0X3JlcXVlc3QuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGkuYyIsCisgICAgInNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMiLAogICAgICJzcmMvY29yZS9saWIvaHR0cC9wYXJzZXIuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9pb21nci9jbG9zdXJlLmMiLAogICAgICJzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuYyIsCkBAIC0zODIsNTcgKzQxNCw2IEBACiAgICAgInNyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5jIiwKICAgICAic3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9kZXRhaWxzLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9saXN0cy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jbGllbnRfYXV0aF9maWx0ZXIuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5jIiwKQEAgLTQ0NywzNiArNDI4LDU1IEBACiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX2F1dGhfZmlsdGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfc2VjdXJlLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMiLAorICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuYyIsCiAgICAgInNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5LmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jIiwKICAgXSwKICAgaGRycyA9IFsKLSAgICAiaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmgiLAogICAgICJpbmNsdWRlL2dycGMvZ3JwYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcHJvcGFnYXRpb25fYml0cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9jZW5zdXMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9zdGF0dXMuaCIsCiAgIF0sCiAgIGluY2x1ZGVzID0gWwogICAgICJpbmNsdWRlIiwKQEAgLTUwMywyMSArNTAzLDIxIEBACiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcHJvcGFnYXRpb25fYml0cy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCiAgIF0sCiAgIGluY2x1ZGVzID0gWwogICAgICJpbmNsdWRlIiwKQEAgLTUzMiw4ICs1MzIsMzIgQEAKIGNjX2xpYnJhcnkoCiAgIG5hbWUgPSAiZ3JwY191bnNlY3VyZSIsCiAgIHNyY3MgPSBbCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmgiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmgiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmgiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIsCkBAIC02MjUsNDQgKzY0OSw0OCBAQAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3N1cmZhY2VfdHJhY2UuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHR0cDJfZXJyb3JzLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X2ltcGwuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5oIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGIuaCIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uaCIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuaCIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfdW5zZWN1cmUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfY29udGV4dC5jIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5jIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy90cmFjaW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5jIiwKQEAgLTc1Myw1MyArNzgxLDI1IEBACiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfbG9nX2JhdGNoLmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jcmVhdGUuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jIiwKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3N0YWNrX3R5cGUuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIiwKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF91bnNlY3VyZS5jIiwKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3dyaXRpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYyIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jIiwKQEAgLTgwNywxNiArODA3LDE2IEBACiAgIGhkcnMgPSBbCiAgICAgImluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmgiLAogICAgICJpbmNsdWRlL2dycGMvZ3JwYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwKICAgXSwKICAgaW5jbHVkZXMgPSBbCiAgICAgImluY2x1ZGUiLApAQCAtODU0LDIxICs4NTQsMTQgQEAKIGNjX2xpYnJhcnkoCiAgIG5hbWUgPSAiZ3JwYysrIiwKICAgc3JjcyA9IFsKKyAgICAic3JjL2NwcC9jbGllbnQvY3JlYXRlX2NoYW5uZWxfaW50ZXJuYWwuaCIsCiAgICAgInNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5oIiwKICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmgiLAotICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmgiLAotICAgICJzcmMvY3BwL3NlcnZlci9zZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmgiLAotICAgICJzcmMvY3BwL2NsaWVudC9jcmVhdGVfY2hhbm5lbF9pbnRlcm5hbC5oIiwKLSAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmgiLAogICAgICJzcmMvY3BwL2NvbW1vbi9jcmVhdGVfYXV0aF9jb250ZXh0LmgiLAorICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmgiLAogICAgICJzcmMvY3BwL3NlcnZlci9keW5hbWljX3RocmVhZF9wb29sLmgiLAorICAgICJzcmMvY3BwL3NlcnZlci9zZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmgiLAogICAgICJzcmMvY3BwL3NlcnZlci90aHJlYWRfcG9vbF9pbnRlcmZhY2UuaCIsCi0gICAgInNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5jYyIsCi0gICAgInNyYy9jcHAvY29tbW9uL2F1dGhfcHJvcGVydHlfaXRlcmF0b3IuY2MiLAotICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmNjIiwKLSAgICAic3JjL2NwcC9jb21tb24vc2VjdXJlX2NoYW5uZWxfYXJndW1lbnRzLmNjIiwKLSAgICAic3JjL2NwcC9jb21tb24vc2VjdXJlX2NyZWF0ZV9hdXRoX2NvbnRleHQuY2MiLAotICAgICJzcmMvY3BwL3NlcnZlci9zZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvY2hhbm5lbC5jYyIsCiAgICAgInNyYy9jcHAvY2xpZW50L2NsaWVudF9jb250ZXh0LmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvY3JlYXRlX2NoYW5uZWwuY2MiLApAQCAtODc2LDE0ICs4NjksMjEgQEAKICAgICAic3JjL2NwcC9jbGllbnQvY3JlZGVudGlhbHMuY2MiLAogICAgICJzcmMvY3BwL2NsaWVudC9nZW5lcmljX3N0dWIuY2MiLAogICAgICJzcmMvY3BwL2NsaWVudC9pbnNlY3VyZV9jcmVkZW50aWFscy5jYyIsCisgICAgInNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5jYyIsCisgICAgInNyYy9jcHAvY29kZWdlbi9jb2RlZ2VuX2luaXQuY2MiLAorICAgICJzcmMvY3BwL2NvbW1vbi9hdXRoX3Byb3BlcnR5X2l0ZXJhdG9yLmNjIiwKICAgICAic3JjL2NwcC9jb21tb24vY2hhbm5lbF9hcmd1bWVudHMuY2MiLAogICAgICJzcmMvY3BwL2NvbW1vbi9jb21wbGV0aW9uX3F1ZXVlLmNjIiwKICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmNjIiwKICAgICAic3JjL2NwcC9jb21tb24vcnBjX21ldGhvZC5jYyIsCisgICAgInNyYy9jcHAvY29tbW9uL3NlY3VyZV9hdXRoX2NvbnRleHQuY2MiLAorICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfY2hhbm5lbF9hcmd1bWVudHMuY2MiLAorICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyIsCiAgICAgInNyYy9jcHAvc2VydmVyL2FzeW5jX2dlbmVyaWNfc2VydmljZS5jYyIsCiAgICAgInNyYy9jcHAvc2VydmVyL2NyZWF0ZV9kZWZhdWx0X3RocmVhZF9wb29sLmNjIiwKICAgICAic3JjL2NwcC9zZXJ2ZXIvZHluYW1pY190aHJlYWRfcG9vbC5jYyIsCiAgICAgInNyYy9jcHAvc2VydmVyL2luc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5jYyIsCisgICAgInNyYy9jcHAvc2VydmVyL3NlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MiLAogICAgICJzcmMvY3BwL3NlcnZlci9zZXJ2ZXIuY2MiLAogICAgICJzcmMvY3BwL3NlcnZlci9zZXJ2ZXJfYnVpbGRlci5jYyIsCiAgICAgInNyYy9jcHAvc2VydmVyL3NlcnZlcl9jb250ZXh0LmNjIiwKQEAgLTg5Myw3ICs4OTMsNiBAQAogICAgICJzcmMvY3BwL3V0aWwvc3RhdHVzLmNjIiwKICAgICAic3JjL2NwcC91dGlsL3N0cmluZ19yZWYuY2MiLAogICAgICJzcmMvY3BwL3V0aWwvdGltZS5jYyIsCi0gICAgInNyYy9jcHAvY29kZWdlbi9jb2RlZ2VuX2luaXQuY2MiLAogICBdLAogICBoZHJzID0gWwogICAgICJpbmNsdWRlL2dycGMrKy9hbGFybS5oIiwKQEAgLTkwNiw2ICs5MDUsMzcgQEAKICAgICAiaW5jbHVkZS9ncnBjKysvZ3JwYysrLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY2xpZW50X3VuYXJ5X2NhbGwuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY19zdHJlYW0uaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbC5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGxfaG9vay5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X2NvbnRleHQuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfdW5hcnlfY2FsbC5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlX3RhZy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbl9pbnRlcmZhY2UuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ncnBjX2xpYnJhcnkuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcHJvdG9fdXRpbHMuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfbWV0aG9kLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VjdXJpdHkvYXV0aF9jb250ZXh0LmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VyaWFsaXphdGlvbl90cmFpdHMuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9pbnRlcmZhY2UuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2aWNlX3R5cGUuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXNfY29kZV9lbnVtLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RyaW5nX3JlZi5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmMuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX2N4eDExLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9ncnBjX2xpYnJhcnkuaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvbWV0aG9kX2hhbmRsZXJfaW1wbC5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9wcm90b191dGlscy5oIiwKQEAgLTk0MCwzNyArOTcwLDYgQEAKICAgICAiaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zdHViX29wdGlvbnMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3luY19zdHJlYW0uaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbF9ob29rLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2hhbm5lbF9pbnRlcmZhY2UuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF91bmFyeV9jYWxsLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnX3Byb3RvYnVmLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfc2VydmljZV9tZXRob2QuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3R1Yl9vcHRpb25zLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmgiLAogICBdLAogICBpbmNsdWRlcyA9IFsKICAgICAiaW5jbHVkZSIsCkBAIC05OTAsMjYgKzk4OSw2IEBACiAgICAgInNyYy9jcHAvY29kZWdlbi9jb2RlZ2VuX2luaXQuY2MiLAogICBdLAogICBoZHJzID0gWwotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgiLApAQCAtMTA0MSw2ICsxMDIwLDI2IEBACiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgXSwKICAgaW5jbHVkZXMgPSBbCiAgICAgImluY2x1ZGUiLApAQCAtMTA1OSw3ICsxMDU4LDYgQEAKICAgICAic3JjL2NwcC9jb21tb24vY3JlYXRlX2F1dGhfY29udGV4dC5oIiwKICAgICAic3JjL2NwcC9zZXJ2ZXIvZHluYW1pY190aHJlYWRfcG9vbC5oIiwKICAgICAic3JjL2NwcC9zZXJ2ZXIvdGhyZWFkX3Bvb2xfaW50ZXJmYWNlLmgiLAotICAgICJzcmMvY3BwL2NvbW1vbi9pbnNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvY2hhbm5lbC5jYyIsCiAgICAgInNyYy9jcHAvY2xpZW50L2NsaWVudF9jb250ZXh0LmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvY3JlYXRlX2NoYW5uZWwuY2MiLApAQCAtMTA2Nyw5ICsxMDY1LDExIEBACiAgICAgInNyYy9jcHAvY2xpZW50L2NyZWRlbnRpYWxzLmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvZ2VuZXJpY19zdHViLmNjIiwKICAgICAic3JjL2NwcC9jbGllbnQvaW5zZWN1cmVfY3JlZGVudGlhbHMuY2MiLAorICAgICJzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIiwKICAgICAic3JjL2NwcC9jb21tb24vY2hhbm5lbF9hcmd1bWVudHMuY2MiLAogICAgICJzcmMvY3BwL2NvbW1vbi9jb21wbGV0aW9uX3F1ZXVlLmNjIiwKICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmNjIiwKKyAgICAic3JjL2NwcC9jb21tb24vaW5zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyIsCiAgICAgInNyYy9jcHAvY29tbW9uL3JwY19tZXRob2QuY2MiLAogICAgICJzcmMvY3BwL3NlcnZlci9hc3luY19nZW5lcmljX3NlcnZpY2UuY2MiLAogICAgICJzcmMvY3BwL3NlcnZlci9jcmVhdGVfZGVmYXVsdF90aHJlYWRfcG9vbC5jYyIsCkBAIC0xMDg0LDcgKzEwODQsNiBAQAogICAgICJzcmMvY3BwL3V0aWwvc3RhdHVzLmNjIiwKICAgICAic3JjL2NwcC91dGlsL3N0cmluZ19yZWYuY2MiLAogICAgICJzcmMvY3BwL3V0aWwvdGltZS5jYyIsCi0gICAgInNyYy9jcHAvY29kZWdlbi9jb2RlZ2VuX2luaXQuY2MiLAogICBdLAogICBoZHJzID0gWwogICAgICJpbmNsdWRlL2dycGMrKy9hbGFybS5oIiwKQEAgLTEwOTcsNiArMTA5NiwzNyBAQAogICAgICJpbmNsdWRlL2dycGMrKy9ncnBjKysuaCIsCiAgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY2FsbC5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jbGllbnRfdW5hcnlfY2FsbC5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbF9ob29rLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2hhbm5lbF9pbnRlcmZhY2UuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF91bmFyeV9jYWxsLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnX3Byb3RvYnVmLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfc2VydmljZV9tZXRob2QuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3R1Yl9vcHRpb25zLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmgiLAorICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCIsCisgICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2dycGNfbGlicmFyeS5oIiwKICAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9tZXRob2RfaGFuZGxlcl9pbXBsLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL3Byb3RvX3V0aWxzLmgiLApAQCAtMTEzMSwzNyArMTE2MSw2IEBACiAgICAgImluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3R1Yl9vcHRpb25zLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N5bmNfc3RyZWFtLmgiLAogICAgICJpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3RpbWUuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY19zdHJlYW0uaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbC5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGxfaG9vay5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X2NvbnRleHQuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfdW5hcnlfY2FsbC5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlX3RhZy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbl9pbnRlcmZhY2UuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ncnBjX2xpYnJhcnkuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcHJvdG9fdXRpbHMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfbWV0aG9kLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VjdXJpdHkvYXV0aF9jb250ZXh0LmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VyaWFsaXphdGlvbl90cmFpdHMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9pbnRlcmZhY2UuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2aWNlX3R5cGUuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXNfY29kZV9lbnVtLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RyaW5nX3JlZi5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX2N4eDExLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmgiLAotICAgICJpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgXSwKICAgaW5jbHVkZXMgPSBbCiAgICAgImluY2x1ZGUiLApAQCAtMTI5NCw2ICsxMjkzLDIwIEBACiAgICAgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3dyYXBfbWVtY3B5LmMiLAogICBdLAogICBoZHJzID0gWworICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX2djY19hdG9taWMuaCIsCkBAIC0xMzIyLDIwICsxMzM1LDYgQEAKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX21zdmMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9zdXBwb3J0L3Rsc19wdGhyZWFkLmgiLAogICAgICJpbmNsdWRlL2dycGMvc3VwcG9ydC91c2VmdWwuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fd2luMzIuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgiLAogICAgICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIiwKICAgICAic3JjL2NvcmUvbGliL3N1cHBvcnQvYmFja29mZi5oIiwKICAgICAic3JjL2NvcmUvbGliL3N1cHBvcnQvYmxvY2tfYW5ub3RhdGUuaCIsCkBAIC0xMzYxLDkgKzEzNjAsNDAgQEAKIG9iamNfbGlicmFyeSgKICAgbmFtZSA9ICJncnBjX29iamMiLAogICBzcmNzID0gWworICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMiLApAQCAtMTM5Nyw2ICsxNDI3LDcgQEAKICAgICAic3JjL2NvcmUvbGliL2RlYnVnL3RyYWNlLmMiLAogICAgICJzcmMvY29yZS9saWIvaHR0cC9mb3JtYXRfcmVxdWVzdC5jIiwKICAgICAic3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaS5jIiwKKyAgICAic3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jIiwKICAgICAic3JjL2NvcmUvbGliL2lvbWdyL2Nsb3N1cmUuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludC5jIiwKQEAgLTE0NDUsNTcgKzE0NzYsNiBAQAogICAgICJzcmMvY29yZS9saWIvanNvbi9qc29uX3N0cmluZy5jIiwKICAgICAic3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3BhcnNpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY2xpZW50X2F1dGhfZmlsdGVyLmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuYyIsCkBAIC0xNTEwLDM4ICsxNDkwLDgxIEBACiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX2F1dGhfZmlsdGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfc2VjdXJlLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMiLAorICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuYyIsCiAgICAgInNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5LmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jIiwKICAgXSwKICAgaGRycyA9IFsKLSAgICAiaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmgiLAogICAgICJpbmNsdWRlL2dycGMvZ3JwYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcHJvcGFnYXRpb25fYml0cy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9jZW5zdXMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9zdGF0dXMuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmgiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmgiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwKICAgICAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmgiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIsCkBAIC0xNjE4LDYgKzE2NDEsMTUgQEAKICAgICAic3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmgiLAogICAgICJzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvand0X3ZlcmlmaWVyLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oIiwKICAgICAic3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX2ludGVyZmFjZS5oIiwKICAgICAic3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX3JwY19zdGF0cy5oIiwKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiLApAQCAtMTYzMyw1MCArMTY2NSwxNyBAQAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3N1cmZhY2VfdHJhY2UuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHR0cDJfZXJyb3JzLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X2ltcGwuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2pzb25fdG9rZW4uaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qd3RfdmVyaWZpZXIuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90c2kvc3NsX3R5cGVzLmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHlfaW50ZXJmYWNlLmgiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmgiLAogICAgICJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmgiLApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCAxMTJiN2Y4Li4yMjg2YWJlIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtOTUsNiArOTUsMTYgQEAKIENQUEZMQUdTX29wdCA9IC1PMgogREVGSU5FU19vcHQgPSBOREVCVUcKIAorVkFMSURfQ09ORklHX2FzYW4tdHJhY2UtY21wID0gMQorUkVRVUlSRV9DVVNUT01fTElCUkFSSUVTX2FzYW4tdHJhY2UtY21wID0gMQorQ0NfYXNhbi10cmFjZS1jbXAgPSBjbGFuZworQ1hYX2FzYW4tdHJhY2UtY21wID0gY2xhbmcrKworTERfYXNhbi10cmFjZS1jbXAgPSBjbGFuZworTERYWF9hc2FuLXRyYWNlLWNtcCA9IGNsYW5nKysKK0NQUEZMQUdTX2FzYW4tdHJhY2UtY21wID0gLU8wIC1mc2FuaXRpemUtY292ZXJhZ2U9ZWRnZSAtZnNhbml0aXplLWNvdmVyYWdlPXRyYWNlLWNtcCAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50IC1ER1BSX05PX0RJUkVDVF9TWVNDQUxMUworTERGTEFHU19hc2FuLXRyYWNlLWNtcCA9IC1mc2FuaXRpemU9YWRkcmVzcworREVGSU5FU19hc2FuLXRyYWNlLWNtcCArPSBHUlBDX1RFU1RfU0xPV0RPV05fQlVJTERfRkFDVE9SPTMKKwogVkFMSURfQ09ORklHX2RiZyA9IDEKIENDX2RiZyA9ICQoREVGQVVMVF9DQykKIENYWF9kYmcgPSAkKERFRkFVTFRfQ1hYKQpAQCAtMTA5LDcgKzExOSw3IEBACiBDWFhfZWFzYW4gPSBjbGFuZysrCiBMRF9lYXNhbiA9IGNsYW5nCiBMRFhYX2Vhc2FuID0gY2xhbmcrKwotQ1BQRkxBR1NfZWFzYW4gPSAtTzAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKK0NQUEZMQUdTX2Vhc2FuID0gLU8wIC1mc2FuaXRpemUtY292ZXJhZ2U9ZWRnZSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50IC1ER1BSX05PX0RJUkVDVF9TWVNDQUxMUwogTERGTEFHU19lYXNhbiA9IC1mc2FuaXRpemU9YWRkcmVzcwogREVGSU5FU19lYXNhbiA9IF9ERUJVRyBERUJVRyBHUlBDX0VYRUNVVElPTl9DT05URVhUX1NBTklUSVpFUgogREVGSU5FU19lYXNhbiArPSBHUlBDX1RFU1RfU0xPV0RPV05fQlVJTERfRkFDVE9SPTMKQEAgLTEyMCw3ICsxMzAsNyBAQAogQ1hYX2FzYW4gPSBjbGFuZysrCiBMRF9hc2FuID0gY2xhbmcKIExEWFhfYXNhbiA9IGNsYW5nKysKLUNQUEZMQUdTX2FzYW4gPSAtTzAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKK0NQUEZMQUdTX2FzYW4gPSAtTzAgLWZzYW5pdGl6ZS1jb3ZlcmFnZT1lZGdlIC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCiBMREZMQUdTX2FzYW4gPSAtZnNhbml0aXplPWFkZHJlc3MKIERFRklORVNfYXNhbiArPSBHUlBDX1RFU1RfU0xPV0RPV05fQlVJTERfRkFDVE9SPTMKIApAQCAtMTMwLDcgKzE0MCw3IEBACiBDWFhfbXNhbiA9IGNsYW5nKysKIExEX21zYW4gPSBjbGFuZwogTERYWF9tc2FuID0gY2xhbmcrKwotQ1BQRkxBR1NfbXNhbiA9IC1PMCAtZnNhbml0aXplPW1lbW9yeSAtZnNhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLWZQSUUgLXBpZSAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKK0NQUEZMQUdTX21zYW4gPSAtTzAgLWZzYW5pdGl6ZS1jb3ZlcmFnZT1lZGdlIC1mc2FuaXRpemU9bWVtb3J5IC1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnMgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtZlBJRSAtcGllIC1ER1BSX05PX0RJUkVDVF9TWVNDQUxMUwogTERGTEFHU19tc2FuID0gLWZzYW5pdGl6ZT1tZW1vcnkgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xIC1mUElFIC1waWUgJChpZiAkKEpFTktJTlNfQlVJTEQpLC1XbCQoY29tbWEpLVR0ZXh0LXNlZ21lbnQ9MHg3ZTAwMDAwMDAwMDAsKQogREVGSU5FU19tc2FuID0gTkRFQlVHCiBERUZJTkVTX21zYW4gKz0gR1JQQ19URVNUX1NMT1dET1dOX0JVSUxEX0ZBQ1RPUj00CkBAIC0xNTksNyArMTY5LDcgQEAKIENYWF9hc2FuLW5vbGVha3MgPSBjbGFuZysrCiBMRF9hc2FuLW5vbGVha3MgPSBjbGFuZwogTERYWF9hc2FuLW5vbGVha3MgPSBjbGFuZysrCi1DUFBGTEFHU19hc2FuLW5vbGVha3MgPSAtTzAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKK0NQUEZMQUdTX2FzYW4tbm9sZWFrcyA9IC1PMCAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKIExERkxBR1NfYXNhbi1ub2xlYWtzID0gLWZzYW5pdGl6ZT1hZGRyZXNzCiBERUZJTkVTX2FzYW4tbm9sZWFrcyArPSBHUlBDX1RFU1RfU0xPV0RPV05fQlVJTERfRkFDVE9SPTMKIApAQCAtMTc3LDcgKzE4Nyw3IEBACiBDWFhfdWJzYW4gPSBjbGFuZysrCiBMRF91YnNhbiA9IGNsYW5nCiBMRFhYX3Vic2FuID0gY2xhbmcrKwotQ1BQRkxBR1NfdWJzYW4gPSAtTzEgLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50CitDUFBGTEFHU191YnNhbiA9IC1PMSAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50CiBMREZMQUdTX3Vic2FuID0gLWZzYW5pdGl6ZT11bmRlZmluZWQKIERFRklORVNfdWJzYW4gPSBOREVCVUcKIERFRklORVNfdWJzYW4gKz0gR1JQQ19URVNUX1NMT1dET1dOX0JVSUxEX0ZBQ1RPUj0xLjUKQEAgLTkyNSwxNCArOTM1LDE3IEBACiBncnBjX3ByaW50X2dvb2dsZV9kZWZhdWx0X2NyZWRzX3Rva2VuOiAkKEJJTkRJUikvJChDT05GSUcpL2dycGNfcHJpbnRfZ29vZ2xlX2RlZmF1bHRfY3JlZHNfdG9rZW4KIGdycGNfc2VjdXJpdHlfY29ubmVjdG9yX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvZ3JwY19zZWN1cml0eV9jb25uZWN0b3JfdGVzdAogZ3JwY192ZXJpZnlfand0OiAkKEJJTkRJUikvJChDT05GSUcpL2dycGNfdmVyaWZ5X2p3dAoraHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdAogaHBhY2tfcGFyc2VyX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaHBhY2tfcGFyc2VyX3Rlc3QKIGhwYWNrX3RhYmxlX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaHBhY2tfdGFibGVfdGVzdAoraHR0cF9mdXp6ZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9odHRwX2Z1enplcl90ZXN0CiBodHRwX3BhcnNlcl90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2h0dHBfcGFyc2VyX3Rlc3QKIGh0dHBjbGlfZm9ybWF0X3JlcXVlc3RfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9odHRwY2xpX2Zvcm1hdF9yZXF1ZXN0X3Rlc3QKIGh0dHBjbGlfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9odHRwY2xpX3Rlc3QKIGh0dHBzY2xpX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaHR0cHNjbGlfdGVzdAogaW5pdF90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2luaXRfdGVzdAogaW52YWxpZF9jYWxsX2FyZ3VtZW50X3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaW52YWxpZF9jYWxsX2FyZ3VtZW50X3Rlc3QKK2pzb25fZnV6emVyX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvanNvbl9mdXp6ZXJfdGVzdAoganNvbl9yZXdyaXRlOiAkKEJJTkRJUikvJChDT05GSUcpL2pzb25fcmV3cml0ZQoganNvbl9yZXdyaXRlX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvanNvbl9yZXdyaXRlX3Rlc3QKIGpzb25fc3RyZWFtX2Vycm9yX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvanNvbl9zdHJlYW1fZXJyb3JfdGVzdApAQCAtOTY2LDYgKzk3OSw3IEBACiB0cmFuc3BvcnRfbWV0YWRhdGFfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS90cmFuc3BvcnRfbWV0YWRhdGFfdGVzdAogdHJhbnNwb3J0X3NlY3VyaXR5X3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvdHJhbnNwb3J0X3NlY3VyaXR5X3Rlc3QKIHVkcF9zZXJ2ZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS91ZHBfc2VydmVyX3Rlc3QKK3VyaV9mdXp6ZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS91cmlfZnV6emVyX3Rlc3QKIHVyaV9wYXJzZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS91cmlfcGFyc2VyX3Rlc3QKIHdvcmtxdWV1ZV90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL3dvcmtxdWV1ZV90ZXN0CiBhbGFybV9jcHBfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9hbGFybV9jcHBfdGVzdApAQCAtMjMxNCw2ICsyMzI4LDIwIEBACiAgICAgc3JjL2NvcmUvbGliL3N1cHBvcnQvd3JhcF9tZW1jcHkuYyBcCiAKIFBVQkxJQ19IRUFERVJTX0MgKz0gXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAgICAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCBcCiAgICAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtLmggXAogICAgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bV9nY2NfYXRvbWljLmggXApAQCAtMjM0MiwyMCArMjM3MCw2IEBACiAgICAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX21zdmMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX3B0aHJlYWQuaCBcCiAgICAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvdXNlZnVsLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAKIExJQkdQUl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1BSX1NSQykpKSkKIApAQCAtMjM5Nyw2ICsyNDExLDcgQEAKIExJQkdQUl9URVNUX1VUSUxfU1JDID0gXAogICAgIHRlc3QvY29yZS91dGlsL3Rlc3RfY29uZmlnLmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCR1BSX1RFU1RfVVRJTF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1BSX1RFU1RfVVRJTF9TUkMpKSkpCiAKQEAgLTI0MTksOSArMjQzNCw0MCBAQAogCiAKIExJQkdSUENfU1JDID0gXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9wYXJzaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIFwKKyAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuYyBcCkBAIC0yNDU1LDYgKzI1MDEsNyBAQAogICAgIHNyYy9jb3JlL2xpYi9kZWJ1Zy90cmFjZS5jIFwKICAgICBzcmMvY29yZS9saWIvaHR0cC9mb3JtYXRfcmVxdWVzdC5jIFwKICAgICBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpLmMgXAorICAgIHNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMgXAogICAgIHNyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jIFwKICAgICBzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5jIFwKICAgICBzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuYyBcCkBAIC0yNTAzLDU3ICsyNTUwLDYgQEAKICAgICBzcmMvY29yZS9saWIvanNvbi9qc29uX3N0cmluZy5jIFwKICAgICBzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5jIFwKICAgICBzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3BhcnNpbmcuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIFwKICAgICBzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9jbGllbnRfYXV0aF9maWx0ZXIuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmMgXApAQCAtMjU2OCwzNiArMjU2NCw1NSBAQAogICAgIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jIFwKLSAgICBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF9zZWN1cmUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyBcCisgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyBcCisgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIFwKICAgICBzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMgXAogICAgIHNyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5jIFwKICAgICBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyBcCi0gICAgc3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyBcCiAgICAgdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIFwKICAgICB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmMgXAogICAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyBcCiAKIFBVQkxJQ19IRUFERVJTX0MgKz0gXAotICAgIGluY2x1ZGUvZ3JwYy9ncnBjX3NlY3VyaXR5LmggXAogICAgIGluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIFwKICAgICBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmggXAorICAgIGluY2x1ZGUvZ3JwYy9jZW5zdXMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmggXAogICAgIGluY2x1ZGUvZ3JwYy9ncnBjLmggXAotICAgIGluY2x1ZGUvZ3JwYy9zdGF0dXMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2NlbnN1cy5oIFwKKyAgICBpbmNsdWRlL2dycGMvc3RhdHVzLmggXAogCiBMSUJHUlBDX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJHUlBDX1NSQykpKSkKIApAQCAtMjY1OSwyMSArMjY3NCwyMSBAQAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fd2luMzIuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmggXAogCiBMSUJHUlBDX0NPREVHRU5fTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJHUlBDX0NPREVHRU5fTElCX1NSQykpKSkKIApAQCAtMjY5NiwxMyArMjcxMSwxMyBAQAogCiAKIExJQkdSUENfVEVTVF9VVElMX1NSQyA9IFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC9kYXRhL3NlcnZlcjFfY2VydC5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC9kYXRhL3NlcnZlcjFfa2V5LmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL2RhdGEvdGVzdF9yb290X2NlcnQuYyBcCi0gICAgdGVzdC9jb3JlL3NlY3VyaXR5L29hdXRoMl91dGlscy5jIFwKLSAgICB0ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9wcm94eS5jIFwKICAgICB0ZXN0L2NvcmUvaW9tZ3IvZW5kcG9pbnRfdGVzdHMuYyBcCisgICAgdGVzdC9jb3JlL3NlY3VyaXR5L29hdXRoMl91dGlscy5jIFwKICAgICB0ZXN0L2NvcmUvdXRpbC9ncnBjX3Byb2ZpbGVyLmMgXAogICAgIHRlc3QvY29yZS91dGlsL3BhcnNlX2hleHN0cmluZy5jIFwKICAgICB0ZXN0L2NvcmUvdXRpbC9wb3J0X3Bvc2l4LmMgXApAQCAtMjc4MCwxMCArMjc5NSwzOCBAQAogCiAKIExJQkdSUENfVU5TRUNVUkVfU1JDID0gXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfdW5zZWN1cmUuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9wYXJzaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIFwKKyAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuYyBcCkBAIC0yODc0LDUzICsyOTE3LDI1IEBACiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIFwKICAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jIFwKICAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMgXAogICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIFwKICAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMgXAogICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIFwKICAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfdW5zZWN1cmUuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIFwKICAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIFwKICAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIFwKICAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMgXAogICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYyBcCiAgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyBcCiAgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvY29udGV4dC5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyBcCi0gICAgc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIFwKICAgICB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmMgXAogICAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuYyBcCiAgICAgdGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jIFwKQEAgLTI5MjgsMTYgKzI5NDMsMTYgQEAKIFBVQkxJQ19IRUFERVJTX0MgKz0gXAogICAgIGluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIFwKICAgICBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmggXAorICAgIGluY2x1ZGUvZ3JwYy9jZW5zdXMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmggXAogICAgIGluY2x1ZGUvZ3JwYy9ncnBjLmggXAotICAgIGluY2x1ZGUvZ3JwYy9zdGF0dXMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmggXAogICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIFwKICAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCBcCiAgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2NlbnN1cy5oIFwKKyAgICBpbmNsdWRlL2dycGMvc3RhdHVzLmggXAogCiBMSUJHUlBDX1VOU0VDVVJFX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJHUlBDX1VOU0VDVVJFX1NSQykpKSkKIApAQCAtMzAyMiw2ICszMDM3LDcgQEAKIExJQlJFQ09OTkVDVF9TRVJWRVJfU1JDID0gXAogICAgIHRlc3QvY29yZS91dGlsL3JlY29ubmVjdF9zZXJ2ZXIuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJSRUNPTk5FQ1RfU0VSVkVSX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJSRUNPTk5FQ1RfU0VSVkVSX1NSQykpKSkKIApAQCAtMzA2MCw2ICszMDc2LDcgQEAKIExJQlRFU1RfVENQX1NFUlZFUl9TUkMgPSBcCiAgICAgdGVzdC9jb3JlL3V0aWwvdGVzdF90Y3Bfc2VydmVyLmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCVEVTVF9UQ1BfU0VSVkVSX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJURVNUX1RDUF9TRVJWRVJfU1JDKSkpKQogCkBAIC0zMDk2LDEyICszMTEzLDYgQEAKIAogCiBMSUJHUlBDKytfU1JDID0gXAotICAgIHNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5jYyBcCi0gICAgc3JjL2NwcC9jb21tb24vYXV0aF9wcm9wZXJ0eV9pdGVyYXRvci5jYyBcCi0gICAgc3JjL2NwcC9jb21tb24vc2VjdXJlX2F1dGhfY29udGV4dC5jYyBcCi0gICAgc3JjL2NwcC9jb21tb24vc2VjdXJlX2NoYW5uZWxfYXJndW1lbnRzLmNjIFwKLSAgICBzcmMvY3BwL2NvbW1vbi9zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyBcCi0gICAgc3JjL2NwcC9zZXJ2ZXIvc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5jYyBcCiAgICAgc3JjL2NwcC9jbGllbnQvY2hhbm5lbC5jYyBcCiAgICAgc3JjL2NwcC9jbGllbnQvY2xpZW50X2NvbnRleHQuY2MgXAogICAgIHNyYy9jcHAvY2xpZW50L2NyZWF0ZV9jaGFubmVsLmNjIFwKQEAgLTMxMDksMTQgKzMxMjAsMjEgQEAKICAgICBzcmMvY3BwL2NsaWVudC9jcmVkZW50aWFscy5jYyBcCiAgICAgc3JjL2NwcC9jbGllbnQvZ2VuZXJpY19zdHViLmNjIFwKICAgICBzcmMvY3BwL2NsaWVudC9pbnNlY3VyZV9jcmVkZW50aWFscy5jYyBcCisgICAgc3JjL2NwcC9jbGllbnQvc2VjdXJlX2NyZWRlbnRpYWxzLmNjIFwKKyAgICBzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIFwKKyAgICBzcmMvY3BwL2NvbW1vbi9hdXRoX3Byb3BlcnR5X2l0ZXJhdG9yLmNjIFwKICAgICBzcmMvY3BwL2NvbW1vbi9jaGFubmVsX2FyZ3VtZW50cy5jYyBcCiAgICAgc3JjL2NwcC9jb21tb24vY29tcGxldGlvbl9xdWV1ZS5jYyBcCiAgICAgc3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmNjIFwKICAgICBzcmMvY3BwL2NvbW1vbi9ycGNfbWV0aG9kLmNjIFwKKyAgICBzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmNjIFwKKyAgICBzcmMvY3BwL2NvbW1vbi9zZWN1cmVfY2hhbm5lbF9hcmd1bWVudHMuY2MgXAorICAgIHNyYy9jcHAvY29tbW9uL3NlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIFwKICAgICBzcmMvY3BwL3NlcnZlci9hc3luY19nZW5lcmljX3NlcnZpY2UuY2MgXAogICAgIHNyYy9jcHAvc2VydmVyL2NyZWF0ZV9kZWZhdWx0X3RocmVhZF9wb29sLmNjIFwKICAgICBzcmMvY3BwL3NlcnZlci9keW5hbWljX3RocmVhZF9wb29sLmNjIFwKICAgICBzcmMvY3BwL3NlcnZlci9pbnNlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MgXAorICAgIHNyYy9jcHAvc2VydmVyL3NlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MgXAogICAgIHNyYy9jcHAvc2VydmVyL3NlcnZlci5jYyBcCiAgICAgc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2J1aWxkZXIuY2MgXAogICAgIHNyYy9jcHAvc2VydmVyL3NlcnZlcl9jb250ZXh0LmNjIFwKQEAgLTMxMjYsNyArMzE0NCw2IEBACiAgICAgc3JjL2NwcC91dGlsL3N0YXR1cy5jYyBcCiAgICAgc3JjL2NwcC91dGlsL3N0cmluZ19yZWYuY2MgXAogICAgIHNyYy9jcHAvdXRpbC90aW1lLmNjIFwKLSAgICBzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIFwKIAogUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKICAgICBpbmNsdWRlL2dycGMrKy9hbGFybS5oIFwKQEAgLTMxMzksNiArMzE1NiwzNyBAQAogICAgIGluY2x1ZGUvZ3JwYysrL2dycGMrKy5oIFwKICAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jbGllbnRfdW5hcnlfY2FsbC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9ncnBjX2xpYnJhcnkuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvcHJvdG9fdXRpbHMuaCBcCkBAIC0zMTczLDM3ICszMjIxLDYgQEAKICAgICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N0dWJfb3B0aW9ucy5oIFwKICAgICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N5bmNfc3RyZWFtLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAKIExJQkdSUEMrK19PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQysrX1NSQykpKSkKIApAQCAtMzI3MiwyNiArMzI4OSw2IEBACiAgICAgc3JjL2NwcC9jb2RlZ2VuL2NvZGVnZW5faW5pdC5jYyBcCiAKIFBVQkxJQ19IRUFERVJTX0NYWCArPSBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hbGxvYy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCBcCi0gICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmggXAotICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcHJvcGFnYXRpb25fYml0cy5oIFwKLSAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIFwKICAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmggXApAQCAtMzMyMyw2ICszMzIwLDI2IEBACiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfbm9fY3h4MTEuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAKIExJQkdSUEMrK19DT0RFR0VOX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQysrX0NPREVHRU5fTElCX1NSQykpKSkKIApAQCAtMzM3Niw2ICszMzkzLDcgQEAKIExJQkdSUEMrK19URVNUX0NPTkZJR19TUkMgPSBcCiAgICAgdGVzdC9jcHAvdXRpbC90ZXN0X2NvbmZpZy5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkdSUEMrK19URVNUX0NPTkZJR19PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQysrX1RFU1RfQ09ORklHX1NSQykpKSkKIApAQCAtMzQyMiw5ICszNDQwLDkgQEAKIAogCiBMSUJHUlBDKytfVEVTVF9VVElMX1NSQyA9IFwKLSAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYyBcCi0gICAgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgXAogICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyBcCisgICAgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgXAorICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5ncnBjLnBiLmNjIFwKICAgICB0ZXN0L2NwcC9lbmQyZW5kL3Rlc3Rfc2VydmljZV9pbXBsLmNjIFwKICAgICB0ZXN0L2NwcC91dGlsL2J5dGVfYnVmZmVyX3Byb3RvX2hlbHBlci5jYyBcCiAgICAgdGVzdC9jcHAvdXRpbC9jbGlfY2FsbC5jYyBcCkBAIC0zNDMzLDYgKzM0NTEsNyBAQAogICAgIHRlc3QvY3BwL3V0aWwvc3VicHJvY2Vzcy5jYyBcCiAgICAgdGVzdC9jcHAvdXRpbC90ZXN0X2NyZWRlbnRpYWxzX3Byb3ZpZGVyLmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCR1JQQysrX1RFU1RfVVRJTF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQysrX1RFU1RfVVRJTF9TUkMpKSkpCiAKQEAgLTM0NzYsMTcgKzM0OTUsMTYgQEAKIC1pbmNsdWRlICQoTElCR1JQQysrX1RFU1RfVVRJTF9PQkpTOi5vPS5kZXApCiBlbmRpZgogZW5kaWYKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvZW5kMmVuZC90ZXN0X3NlcnZpY2VfaW1wbC5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC9ieXRlX2J1ZmZlcl9wcm90b19oZWxwZXIubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3V0aWwvY2xpX2NhbGwubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3V0aWwvY3JlYXRlX3Rlc3RfY2hhbm5lbC5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC9zdHJpbmdfcmVmX2hlbHBlci5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC9zdWJwcm9jZXNzLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8ucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYwotJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC91dGlsL3Rlc3RfY3JlZGVudGlhbHNfcHJvdmlkZXIubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL2VuZDJlbmQvdGVzdF9zZXJ2aWNlX2ltcGwubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8ucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3V0aWwvYnl0ZV9idWZmZXJfcHJvdG9faGVscGVyLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC91dGlsL2NsaV9jYWxsLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC91dGlsL2NyZWF0ZV90ZXN0X2NoYW5uZWwubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8ucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3V0aWwvc3RyaW5nX3JlZl9oZWxwZXIubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8ucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3V0aWwvc3VicHJvY2Vzcy5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNoby5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZWNob19tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLmdycGMucGIuY2MKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC90ZXN0X2NyZWRlbnRpYWxzX3Byb3ZpZGVyLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZS5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG8uZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lY2hvX21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYwogCiAKIExJQkdSUEMrK19VTlNFQ1VSRV9TUkMgPSBcCi0gICAgc3JjL2NwcC9jb21tb24vaW5zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyBcCiAgICAgc3JjL2NwcC9jbGllbnQvY2hhbm5lbC5jYyBcCiAgICAgc3JjL2NwcC9jbGllbnQvY2xpZW50X2NvbnRleHQuY2MgXAogICAgIHNyYy9jcHAvY2xpZW50L2NyZWF0ZV9jaGFubmVsLmNjIFwKQEAgLTM0OTQsOSArMzUxMiwxMSBAQAogICAgIHNyYy9jcHAvY2xpZW50L2NyZWRlbnRpYWxzLmNjIFwKICAgICBzcmMvY3BwL2NsaWVudC9nZW5lcmljX3N0dWIuY2MgXAogICAgIHNyYy9jcHAvY2xpZW50L2luc2VjdXJlX2NyZWRlbnRpYWxzLmNjIFwKKyAgICBzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIFwKICAgICBzcmMvY3BwL2NvbW1vbi9jaGFubmVsX2FyZ3VtZW50cy5jYyBcCiAgICAgc3JjL2NwcC9jb21tb24vY29tcGxldGlvbl9xdWV1ZS5jYyBcCiAgICAgc3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmNjIFwKKyAgICBzcmMvY3BwL2NvbW1vbi9pbnNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIFwKICAgICBzcmMvY3BwL2NvbW1vbi9ycGNfbWV0aG9kLmNjIFwKICAgICBzcmMvY3BwL3NlcnZlci9hc3luY19nZW5lcmljX3NlcnZpY2UuY2MgXAogICAgIHNyYy9jcHAvc2VydmVyL2NyZWF0ZV9kZWZhdWx0X3RocmVhZF9wb29sLmNjIFwKQEAgLTM1MTEsNyArMzUzMSw2IEBACiAgICAgc3JjL2NwcC91dGlsL3N0YXR1cy5jYyBcCiAgICAgc3JjL2NwcC91dGlsL3N0cmluZ19yZWYuY2MgXAogICAgIHNyYy9jcHAvdXRpbC90aW1lLmNjIFwKLSAgICBzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIFwKIAogUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKICAgICBpbmNsdWRlL2dycGMrKy9hbGFybS5oIFwKQEAgLTM1MjQsNiArMzU0MywzNyBAQAogICAgIGluY2x1ZGUvZ3JwYysrL2dycGMrKy5oIFwKICAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jbGllbnRfdW5hcnlfY2FsbC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmggXAorICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKKyAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCBcCisgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9ncnBjX2xpYnJhcnkuaCBcCiAgICAgaW5jbHVkZS9ncnBjKysvaW1wbC9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvcHJvdG9fdXRpbHMuaCBcCkBAIC0zNTU4LDM3ICszNjA4LDYgQEAKICAgICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N0dWJfb3B0aW9ucy5oIFwKICAgICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N5bmNfc3RyZWFtLmggXAogICAgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9wcm90b191dGlscy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZWN1cml0eS9hdXRoX2NvbnRleHQuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmVyX2ludGVyZmFjZS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmggXAotICAgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1c19jb2RlX2VudW0uaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKLSAgICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaCBcCi0gICAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiAKIExJQkdSUEMrK19VTlNFQ1VSRV9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQysrX1VOU0VDVVJFX1NSQykpKSkKIApAQCAtMzY5Nyw2ICszNzE2LDcgQEAKICAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjIFwKICAgICB0ZXN0L2NwcC9pbnRlcm9wL2NsaWVudF9oZWxwZXIuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJJTlRFUk9QX0NMSUVOVF9IRUxQRVJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQklOVEVST1BfQ0xJRU5UX0hFTFBFUl9TUkMpKSkpCiAKQEAgLTM3NTAsNiArMzc3MCw3IEBACiAgICAgdGVzdC9jcHAvaW50ZXJvcC9jbGllbnQuY2MgXAogICAgIHRlc3QvY3BwL2ludGVyb3AvaW50ZXJvcF9jbGllbnQuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJJTlRFUk9QX0NMSUVOVF9NQUlOX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJJTlRFUk9QX0NMSUVOVF9NQUlOX1NSQykpKSkKIApAQCAtMzgwMCw2ICszODIxLDcgQEAKIExJQklOVEVST1BfU0VSVkVSX0hFTFBFUl9TUkMgPSBcCiAgICAgdGVzdC9jcHAvaW50ZXJvcC9zZXJ2ZXJfaGVscGVyLmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCSU5URVJPUF9TRVJWRVJfSEVMUEVSX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJJTlRFUk9QX1NFUlZFUl9IRUxQRVJfU1JDKSkpKQogCkBAIC0zODUxLDYgKzM4NzMsNyBAQAogICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3QucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvdGVzdC5ncnBjLnBiLmNjIFwKICAgICB0ZXN0L2NwcC9pbnRlcm9wL3NlcnZlcl9tYWluLmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCSU5URVJPUF9TRVJWRVJfTUFJTl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCSU5URVJPUF9TRVJWRVJfTUFJTl9TUkMpKSkpCiAKQEAgLTM4OTgsMTIgKzM5MjEsMTIgQEAKIAogCiBMSUJRUFNfU1JDID0gXAorICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjIFwKICAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjIFwKICAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjIFwKLSAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjIFwKLSAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyBcCi0gICAgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyBcCiAgICAgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MgXAorICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgXAorICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MgXAogICAgIHRlc3QvY3BwL3Fwcy9jbGllbnRfYXN5bmMuY2MgXAogICAgIHRlc3QvY3BwL3Fwcy9jbGllbnRfc3luYy5jYyBcCiAgICAgdGVzdC9jcHAvcXBzL2RyaXZlci5jYyBcCkBAIC0zOTE2LDYgKzM5MzksNyBAQAogICAgIHRlc3QvY3BwL3Fwcy91c2FnZV90aW1lci5jYyBcCiAgICAgdGVzdC9jcHAvdXRpbC9iZW5jaG1hcmtfY29uZmlnLmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCUVBTX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJRUFNfU1JDKSkpKQogCkBAIC0zOTU5LDIyICszOTgzLDIzIEBACiAtaW5jbHVkZSAkKExJQlFQU19PQkpTOi5vPS5kZXApCiBlbmRpZgogZW5kaWYKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL2NsaWVudF9hc3luYy5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9jbGllbnRfc3luYy5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9kcml2ZXIubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYwotJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvbGltaXRfY29yZXMubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYwotJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvcGVyZl9kYl9jbGllbnQubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYwotJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvcXBzX3dvcmtlci5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9yZXBvcnQubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYwotJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvc2VydmVyX2FzeW5jLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL3NlcnZlcl9zeW5jLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL3VzYWdlX3RpbWVyLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC9iZW5jaG1hcmtfY29uZmlnLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL2NsaWVudF9hc3luYy5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9jbGllbnRfc3luYy5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9kcml2ZXIubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvbGltaXRfY29yZXMubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvcGVyZl9kYl9jbGllbnQubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvcXBzX3dvcmtlci5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cy5ncnBjLnBiLmNjCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY3BwL3Fwcy9yZXBvcnQubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGVyZl9kYi5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMuZ3JwYy5wYi5jYworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9xcHMvc2VydmVyX2FzeW5jLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL3NlcnZlcl9zeW5jLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvcXBzL3VzYWdlX3RpbWVyLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvdXRpbC9iZW5jaG1hcmtfY29uZmlnLm86ICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbC5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLmdycGMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wZXJmX2RiLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BlcmZfZGIuZ3JwYy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5ncnBjLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzLmdycGMucGIuY2MKIAogCiBMSUJHUlBDX0NTSEFSUF9FWFRfU1JDID0gXAogICAgIHNyYy9jc2hhcnAvZXh0L2dycGNfY3NoYXJwX2V4dC5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkdSUENfQ1NIQVJQX0VYVF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQ19DU0hBUlBfRVhUX1NSQykpKSkKIApAQCAtNDMyNCw2ICs0MzQ5LDcgQEAKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3NsL3QxX2xpYi5jIFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3NsL3Rsc19yZWNvcmQuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCT1JJTkdTU0xfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9TUkMpKSkpCiAKQEAgLTQzNTIsNiArNDM3OCw3IEBACiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by90ZXN0L21hbGxvYy5jYyBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by90ZXN0L3Rlc3RfdXRpbC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9URVNUX1VUSUxfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9URVNUX1VUSUxfU1JDKSkpKQogCkBAIC00Mzg5LDYgKzQ0MTYsNyBAQAogTElCQk9SSU5HU1NMX0FFU19URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9hZXMvYWVzX3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfQUVTX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfQUVTX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNDQyNiw2ICs0NDU0LDcgQEAKIExJQkJPUklOR1NTTF9BU04xX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2FzbjEvYXNuMV90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0FTTjFfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9BU04xX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNDQ2Myw2ICs0NDkyLDcgQEAKIExJQkJPUklOR1NTTF9CQVNFNjRfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vYmFzZTY0L2Jhc2U2NF90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0JBU0U2NF9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0JBU0U2NF9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ1MDAsNiArNDUzMCw3IEBACiBMSUJCT1JJTkdTU0xfQklPX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2Jpby9iaW9fdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9CSU9fVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9CSU9fVEVTVF9MSUJfU1JDKSkpKQogCkBAIC00NTM3LDYgKzQ1NjgsNyBAQAogTElCQk9SSU5HU1NMX0JOX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2JuL2JuX3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfQk5fVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9CTl9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ1NzQsNiArNDYwNiw3IEBACiBMSUJCT1JJTkdTU0xfQllURVNUUklOR19URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9ieXRlc3RyaW5nL2J5dGVzdHJpbmdfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9CWVRFU1RSSU5HX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfQllURVNUUklOR19URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ2MTEsNiArNDY0NCw3IEBACiBMSUJCT1JJTkdTU0xfQUVBRF9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9jaXBoZXIvYWVhZF90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0FFQURfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9BRUFEX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNDY0OCw2ICs0NjgyLDcgQEAKIExJQkJPUklOR1NTTF9DSVBIRVJfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vY2lwaGVyL2NpcGhlcl90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0NJUEhFUl9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0NJUEhFUl9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ2ODUsNiArNDcyMCw3IEBACiBMSUJCT1JJTkdTU0xfQ01BQ19URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9jbWFjL2NtYWNfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9DTUFDX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfQ01BQ19URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ3MjIsNiArNDc1OCw3IEBACiBMSUJCT1JJTkdTU0xfQ09OU1RBTlRfVElNRV9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9jb25zdGFudF90aW1lX3Rlc3QuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCT1JJTkdTU0xfQ09OU1RBTlRfVElNRV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0NPTlNUQU5UX1RJTUVfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC00NzQ4LDYgKzQ3ODUsNyBAQAogTElCQk9SSU5HU1NMX0VEMjU1MTlfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vY3VydmUyNTUxOS9lZDI1NTE5X3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfRUQyNTUxOV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0VEMjU1MTlfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC00Nzg1LDYgKzQ4MjMsNyBAQAogTElCQk9SSU5HU1NMX1gyNTUxOV9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9jdXJ2ZTI1NTE5L3gyNTUxOV90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX1gyNTUxOV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX1gyNTUxOV9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ4MjIsNiArNDg2MSw3IEBACiBMSUJCT1JJTkdTU0xfREhfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vZGgvZGhfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9ESF9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0RIX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNDg1OSw2ICs0ODk5LDcgQEAKIExJQkJPUklOR1NTTF9ESUdFU1RfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vZGlnZXN0L2RpZ2VzdF90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0RJR0VTVF9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0RJR0VTVF9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ4OTYsNiArNDkzNyw3IEBACiBMSUJCT1JJTkdTU0xfRFNBX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2RzYS9kc2FfdGVzdC5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkJPUklOR1NTTF9EU0FfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9EU0FfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC00OTIyLDYgKzQ5NjQsNyBAQAogTElCQk9SSU5HU1NMX0VDX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2VjL2VjX3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfRUNfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9FQ19URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTQ5NTksNiArNTAwMiw3IEBACiBMSUJCT1JJTkdTU0xfRVhBTVBMRV9NVUxfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2VjL2V4YW1wbGVfbXVsLmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCQk9SSU5HU1NMX0VYQU1QTEVfTVVMX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0VYQU1QTEVfTVVMX0xJQl9TUkMpKSkpCiAKQEAgLTQ5ODUsNiArNTAyOSw3IEBACiBMSUJCT1JJTkdTU0xfRUNEU0FfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vZWNkc2EvZWNkc2FfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9FQ0RTQV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0VDRFNBX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTAyMiw2ICs1MDY3LDcgQEAKIExJQkJPUklOR1NTTF9FUlJfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vZXJyL2Vycl90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0VSUl9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX0VSUl9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTUwNTksNiArNTEwNSw3IEBACiBMSUJCT1JJTkdTU0xfRVZQX0VYVFJBX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2V2cC9ldnBfZXh0cmFfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9FVlBfRVhUUkFfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9FVlBfRVhUUkFfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01MDk2LDYgKzUxNDMsNyBAQAogTElCQk9SSU5HU1NMX0VWUF9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9ldnAvZXZwX3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfRVZQX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfRVZQX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTEzMyw2ICs1MTgxLDcgQEAKIExJQkJPUklOR1NTTF9QQktERl9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9ldnAvcGJrZGZfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9QQktERl9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX1BCS0RGX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTE3MCw2ICs1MjE5LDcgQEAKIExJQkJPUklOR1NTTF9IS0RGX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2hrZGYvaGtkZl90ZXN0LmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCQk9SSU5HU1NMX0hLREZfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9IS0RGX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTE5Niw2ICs1MjQ2LDcgQEAKIExJQkJPUklOR1NTTF9ITUFDX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2htYWMvaG1hY190ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX0hNQUNfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9ITUFDX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTIzMyw2ICs1Mjg0LDcgQEAKIExJQkJPUklOR1NTTF9MSEFTSF9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9saGFzaC9saGFzaF90ZXN0LmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCQk9SSU5HU1NMX0xIQVNIX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfTEhBU0hfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01MjU5LDYgKzUzMTEsNyBAQAogTElCQk9SSU5HU1NMX0dDTV9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9tb2Rlcy9nY21fdGVzdC5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkJPUklOR1NTTF9HQ01fVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9HQ01fVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01Mjg1LDYgKzUzMzgsNyBAQAogTElCQk9SSU5HU1NMX1BLQ1MxMl9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9wa2NzOC9wa2NzMTJfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9QS0NTMTJfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9QS0NTMTJfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01MzIyLDYgKzUzNzYsNyBAQAogTElCQk9SSU5HU1NMX1BLQ1M4X1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL3BrY3M4L3BrY3M4X3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfUEtDUzhfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9QS0NTOF9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTUzNTksNiArNTQxNCw3IEBACiBMSUJCT1JJTkdTU0xfUE9MWTEzMDVfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDVfdGVzdC5jYyBcCiAKK1BVQkxJQ19IRUFERVJTX0NYWCArPSBcCiAKIExJQkJPUklOR1NTTF9QT0xZMTMwNV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX1BPTFkxMzA1X1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTM5Niw2ICs1NDUyLDcgQEAKIExJQkJPUklOR1NTTF9SRUZDT1VOVF9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9yZWZjb3VudF90ZXN0LmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCQk9SSU5HU1NMX1JFRkNPVU5UX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfUkVGQ09VTlRfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01NDIyLDYgKzU0NzksNyBAQAogTElCQk9SSU5HU1NMX1JTQV9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by9yc2EvcnNhX3Rlc3QuY2MgXAogCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAogCiBMSUJCT1JJTkdTU0xfUlNBX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfUlNBX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTQ1OSw2ICs1NTE3LDcgQEAKIExJQkJPUklOR1NTTF9USFJFQURfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vdGhyZWFkX3Rlc3QuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCT1JJTkdTU0xfVEhSRUFEX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfVEhSRUFEX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTQ4NSw2ICs1NTQ0LDcgQEAKIExJQkJPUklOR1NTTF9QS0NTN19URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by94NTA5L3BrY3M3X3Rlc3QuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCT1JJTkdTU0xfUEtDUzdfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9QS0NTN19URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTU1MTEsNiArNTU3MSw3IEBACiBMSUJCT1JJTkdTU0xfVEFCX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL3g1MDl2My90YWJfdGVzdC5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkJPUklOR1NTTF9UQUJfVEVTVF9MSUJfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkJPUklOR1NTTF9UQUJfVEVTVF9MSUJfU1JDKSkpKQogCkBAIC01NTM3LDYgKzU1OTgsNyBAQAogTElCQk9SSU5HU1NMX1YzTkFNRV9URVNUX0xJQl9TUkMgPSBcCiAgICAgdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0by94NTA5djMvdjNuYW1lX3Rlc3QuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCT1JJTkdTU0xfVjNOQU1FX1RFU1RfTElCX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCT1JJTkdTU0xfVjNOQU1FX1RFU1RfTElCX1NSQykpKSkKIApAQCAtNTU2Myw2ICs1NjI1LDcgQEAKIExJQkJPUklOR1NTTF9QUVVFVUVfVEVTVF9MSUJfU1JDID0gXAogICAgIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9zc2wvcHF1ZXVlL3BxdWV1ZV90ZXN0LmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCQk9SSU5HU1NMX1BRVUVVRV9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX1BRVUVVRV9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTU1ODksNiArNTY1Miw3IEBACiBMSUJCT1JJTkdTU0xfU1NMX1RFU1RfTElCX1NSQyA9IFwKICAgICB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3NsL3NzbF90ZXN0LmNjIFwKIAorUFVCTElDX0hFQURFUlNfQ1hYICs9IFwKIAogTElCQk9SSU5HU1NMX1NTTF9URVNUX0xJQl9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQk9SSU5HU1NMX1NTTF9URVNUX0xJQl9TUkMpKSkpCiAKQEAgLTU2NDAsNiArNTcwNCw3IEBACiAgICAgdGhpcmRfcGFydHkvemxpYi91bmNvbXByLmMgXAogICAgIHRoaXJkX3BhcnR5L3psaWIvenV0aWwuYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJaX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJaX1NSQykpKSkKIApAQCAtNTY2NSw2ICs1NzMwLDcgQEAKIExJQkJBRF9DTElFTlRfVEVTVF9TUkMgPSBcCiAgICAgdGVzdC9jb3JlL2JhZF9jbGllbnQvYmFkX2NsaWVudC5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkJBRF9DTElFTlRfVEVTVF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCQkFEX0NMSUVOVF9URVNUX1NSQykpKSkKIApAQCAtNTcwMyw2ICs1NzY5LDcgQEAKIExJQkJBRF9TU0xfVEVTVF9TRVJWRVJfU1JDID0gXAogICAgIHRlc3QvY29yZS9iYWRfc3NsL3NlcnZlcl9jb21tb24uYyBcCiAKK1BVQkxJQ19IRUFERVJTX0MgKz0gXAogCiBMSUJCQURfU1NMX1RFU1RfU0VSVkVSX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJCQURfU1NMX1RFU1RfU0VSVkVSX1NSQykpKSkKIApAQCAtNTc3Nyw2ICs1ODQ0LDcgQEAKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9zaW1wbGVfcmVxdWVzdC5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy90cmFpbGluZ19tZXRhZGF0YS5jIFwKIAorUFVCTElDX0hFQURFUlNfQyArPSBcCiAKIExJQkVORDJFTkRfVEVTVFNfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKExJQkVORDJFTkRfVEVTVFNfU1JDKSkpKQogCkBAIC01ODUwLDYgKzU5MTgsNyBAQAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL3NpbXBsZV9yZXF1ZXN0LmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL3RyYWlsaW5nX21ldGFkYXRhLmMgXAogCitQVUJMSUNfSEVBREVSU19DICs9IFwKIAogTElCRU5EMkVORF9OT1NFQ19URVNUU19PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCRU5EMkVORF9OT1NFQ19URVNUU19TUkMpKSkpCiAKQEAgLTc3MzEsNiArNzgwMCwzOCBAQAogZW5kaWYKIAogCitIUEFDS19QQVJTRVJfRlVaWkVSX1RFU1RfU1JDID0gXAorICAgIHRlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5jIFwKKworSFBBQ0tfUEFSU0VSX0ZVWlpFUl9URVNUX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChIUEFDS19QQVJTRVJfRlVaWkVSX1RFU1RfU1JDKSkpKQoraWZlcSAoJChOT19TRUNVUkUpLHRydWUpCisKKyMgWW91IGNhbid0IGJ1aWxkIHNlY3VyZSB0YXJnZXRzIGlmIHlvdSBkb24ndCBoYXZlIE9wZW5TU0wuCisKKyQoQklORElSKS8kKENPTkZJRykvaHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0OiBvcGVuc3NsX2RlcF9lcnJvcgorCitlbHNlCisKKworCiskKEJJTkRJUikvJChDT05GSUcpL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdDogJChIUEFDS19QQVJTRVJfRlVaWkVSX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEKKwkkKEUpICJbTERdICAgICAgTGlua2luZyAkQCIKKwkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAorCSQoUSkgJChMRFhYKSAkKExERkxBR1MpICQoSFBBQ0tfUEFSU0VSX0ZVWlpFUl9URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hICQoTERMSUJTKSAkKExETElCU19TRUNVUkUpIC1sRnV6emVyIC1vICQoQklORElSKS8kKENPTkZJRykvaHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0CisKK2VuZGlmCisKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0Lm86ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQorCitkZXBzX2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdDogJChIUEFDS19QQVJTRVJfRlVaWkVSX1RFU1RfT0JKUzoubz0uZGVwKQorCitpZm5lcSAoJChOT19TRUNVUkUpLHRydWUpCitpZm5lcSAoJChOT19ERVBTKSx0cnVlKQorLWluY2x1ZGUgJChIUEFDS19QQVJTRVJfRlVaWkVSX1RFU1RfT0JKUzoubz0uZGVwKQorZW5kaWYKK2VuZGlmCisKKwogSFBBQ0tfUEFSU0VSX1RFU1RfU1JDID0gXAogICAgIHRlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl90ZXN0LmMgXAogCkBAIC03Nzk1LDYgKzc4OTYsMzggQEAKIGVuZGlmCiAKIAorSFRUUF9GVVpaRVJfVEVTVF9TUkMgPSBcCisgICAgdGVzdC9jb3JlL2h0dHAvZnV6emVyLmMgXAorCitIVFRQX0ZVWlpFUl9URVNUX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChIVFRQX0ZVWlpFUl9URVNUX1NSQykpKSkKK2lmZXEgKCQoTk9fU0VDVVJFKSx0cnVlKQorCisjIFlvdSBjYW4ndCBidWlsZCBzZWN1cmUgdGFyZ2V0cyBpZiB5b3UgZG9uJ3QgaGF2ZSBPcGVuU1NMLgorCiskKEJJTkRJUikvJChDT05GSUcpL2h0dHBfZnV6emVyX3Rlc3Q6IG9wZW5zc2xfZGVwX2Vycm9yCisKK2Vsc2UKKworCisKKyQoQklORElSKS8kKENPTkZJRykvaHR0cF9mdXp6ZXJfdGVzdDogJChIVFRQX0ZVWlpFUl9URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCisJJChFKSAiW0xEXSAgICAgIExpbmtpbmcgJEAiCisJJChRKSBta2RpciAtcCBgZGlybmFtZSAkQGAKKwkkKFEpICQoTERYWCkgJChMREZMQUdTKSAkKEhUVFBfRlVaWkVSX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMRExJQlMpICQoTERMSUJTX1NFQ1VSRSkgLWxGdXp6ZXIgLW8gJChCSU5ESVIpLyQoQ09ORklHKS9odHRwX2Z1enplcl90ZXN0CisKK2VuZGlmCisKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jb3JlL2h0dHAvZnV6emVyLm86ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQorCitkZXBzX2h0dHBfZnV6emVyX3Rlc3Q6ICQoSFRUUF9GVVpaRVJfVEVTVF9PQkpTOi5vPS5kZXApCisKK2lmbmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKK2lmbmVxICgkKE5PX0RFUFMpLHRydWUpCistaW5jbHVkZSAkKEhUVFBfRlVaWkVSX1RFU1RfT0JKUzoubz0uZGVwKQorZW5kaWYKK2VuZGlmCisKKwogSFRUUF9QQVJTRVJfVEVTVF9TUkMgPSBcCiAgICAgdGVzdC9jb3JlL2h0dHAvcGFyc2VyX3Rlc3QuYyBcCiAKQEAgLTc5ODcsNiArODEyMCwzOCBAQAogZW5kaWYKIAogCitKU09OX0ZVWlpFUl9URVNUX1NSQyA9IFwKKyAgICB0ZXN0L2NvcmUvanNvbi9mdXp6ZXIuYyBcCisKK0pTT05fRlVaWkVSX1RFU1RfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKEpTT05fRlVaWkVSX1RFU1RfU1JDKSkpKQoraWZlcSAoJChOT19TRUNVUkUpLHRydWUpCisKKyMgWW91IGNhbid0IGJ1aWxkIHNlY3VyZSB0YXJnZXRzIGlmIHlvdSBkb24ndCBoYXZlIE9wZW5TU0wuCisKKyQoQklORElSKS8kKENPTkZJRykvanNvbl9mdXp6ZXJfdGVzdDogb3BlbnNzbF9kZXBfZXJyb3IKKworZWxzZQorCisKKworJChCSU5ESVIpLyQoQ09ORklHKS9qc29uX2Z1enplcl90ZXN0OiAkKEpTT05fRlVaWkVSX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEKKwkkKEUpICJbTERdICAgICAgTGlua2luZyAkQCIKKwkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAorCSQoUSkgJChMRFhYKSAkKExERkxBR1MpICQoSlNPTl9GVVpaRVJfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYSAkKExETElCUykgJChMRExJQlNfU0VDVVJFKSAtbEZ1enplciAtbyAkKEJJTkRJUikvJChDT05GSUcpL2pzb25fZnV6emVyX3Rlc3QKKworZW5kaWYKKworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NvcmUvanNvbi9mdXp6ZXIubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCisKK2RlcHNfanNvbl9mdXp6ZXJfdGVzdDogJChKU09OX0ZVWlpFUl9URVNUX09CSlM6Lm89LmRlcCkKKworaWZuZXEgKCQoTk9fU0VDVVJFKSx0cnVlKQoraWZuZXEgKCQoTk9fREVQUyksdHJ1ZSkKKy1pbmNsdWRlICQoSlNPTl9GVVpaRVJfVEVTVF9PQkpTOi5vPS5kZXApCitlbmRpZgorZW5kaWYKKworCiBKU09OX1JFV1JJVEVfU1JDID0gXAogICAgIHRlc3QvY29yZS9qc29uL2pzb25fcmV3cml0ZS5jIFwKIApAQCAtOTA0Myw2ICs5MjA4LDM4IEBACiBlbmRpZgogCiAKK1VSSV9GVVpaRVJfVEVTVF9TUkMgPSBcCisgICAgdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2Z1enplcl90ZXN0LmMgXAorCitVUklfRlVaWkVSX1RFU1RfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKFVSSV9GVVpaRVJfVEVTVF9TUkMpKSkpCitpZmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKKworIyBZb3UgY2FuJ3QgYnVpbGQgc2VjdXJlIHRhcmdldHMgaWYgeW91IGRvbid0IGhhdmUgT3BlblNTTC4KKworJChCSU5ESVIpLyQoQ09ORklHKS91cmlfZnV6emVyX3Rlc3Q6IG9wZW5zc2xfZGVwX2Vycm9yCisKK2Vsc2UKKworCisKKyQoQklORElSKS8kKENPTkZJRykvdXJpX2Z1enplcl90ZXN0OiAkKFVSSV9GVVpaRVJfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQorCSQoRSkgIltMRF0gICAgICBMaW5raW5nICRAIgorCSQoUSkgbWtkaXIgLXAgYGRpcm5hbWUgJEBgCisJJChRKSAkKExEWFgpICQoTERGTEFHUykgJChVUklfRlVaWkVSX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMRExJQlMpICQoTERMSUJTX1NFQ1VSRSkgLWxGdXp6ZXIgLW8gJChCSU5ESVIpLyQoQ09ORklHKS91cmlfZnV6emVyX3Rlc3QKKworZW5kaWYKKworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfZnV6emVyX3Rlc3QubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCisKK2RlcHNfdXJpX2Z1enplcl90ZXN0OiAkKFVSSV9GVVpaRVJfVEVTVF9PQkpTOi5vPS5kZXApCisKK2lmbmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKK2lmbmVxICgkKE5PX0RFUFMpLHRydWUpCistaW5jbHVkZSAkKFVSSV9GVVpaRVJfVEVTVF9PQkpTOi5vPS5kZXApCitlbmRpZgorZW5kaWYKKworCiBVUklfUEFSU0VSX1RFU1RfU1JDID0gXAogICAgIHRlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9wYXJzZXJfdGVzdC5jIFwKIApAQCAtMTM0MTYsNiArMTM2MTMsOCBAQAogIyBUaGlzIGlzIHRvIGVuc3VyZSB0aGUgZW1iZWRkZWQgT3BlblNTTCBpcyBidWlsdCBiZWZvcmVoYW5kLCBwcm9wZXJseQogIyBpbnN0YWxsaW5nIGhlYWRlcnMgdG8gdGhlaXIgZmluYWwgZGVzdGluYXRpb24gb24gdGhlIGRyaXZlLiBXZSBuZWVkIHRoaXMKICMgb3RoZXJ3aXNlIHBhcmFsbGVsIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBpZiBhIHNvdXJjZSBpcyBjb21waWxlZCBmaXJzdC4KK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmM6ICQoT1BFTlNTTF9ERVApCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmM6ICQoT1BFTlNTTF9ERVApCiBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NsaWVudF9hdXRoX2ZpbHRlci5jOiAkKE9QRU5TU0xfREVQKQpAQCAtMTM0MzEsOSArMTM2MzAsNyBAQAogc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuYzogJChPUEVOU1NMX0RFUCkKIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfYXV0aF9maWx0ZXIuYzogJChPUEVOU1NMX0RFUCkKLXNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF9zZWN1cmUuYzogJChPUEVOU1NMX0RFUCkKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jOiAkKE9QRU5TU0xfREVQKQogc3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmM6ICQoT1BFTlNTTF9ERVApCiBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jOiAkKE9QRU5TU0xfREVQKQpkaWZmIC0tZ2l0IGEvYmluZGluZy5neXAgYi9iaW5kaW5nLmd5cAppbmRleCA0MTZjZTIwLi5hMWNkZjJlIDEwMDY0NAotLS0gYS9iaW5kaW5nLmd5cAorKysgYi9iaW5kaW5nLmd5cApAQCAtNTU4LDkgKzU1OCw0MCBAQAogICAgICAgICAnZ3ByJywKICAgICAgIF0sCiAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9wYXJzaW5nLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYycsCisgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMnLAorICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfY29udGV4dC5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYycsCisgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuYycsCkBAIC01OTQsNiArNjI1LDcgQEAKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9kZWJ1Zy90cmFjZS5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9odHRwL2Zvcm1hdF9yZXF1ZXN0LmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL2h0dHAvcGFyc2VyLmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL2lvbWdyL2Nsb3N1cmUuYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuYycsCkBAIC02NDIsNTcgKzY3NCw2IEBACiAgICAgICAgICdzcmMvY29yZS9saWIvanNvbi9qc29uX3N0cmluZy5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXIuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9kZXRhaWxzLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3BhcnNpbmcuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9saXN0cy5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NsaWVudF9hdXRoX2ZpbHRlci5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5jJywKQEAgLTcwNywxOCArNjg4LDM3IEBACiAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuYycsCiAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX2F1dGhfZmlsdGVyLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF9zZWN1cmUuYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYycsCisgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYycsCisgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMnLAorICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMnLAogICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5jJywKICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5LmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMnLAotICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYycsCi0gICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jJywKLSAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jJywKICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYycsCiAgICAgICAgICd0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmMnLAogICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jJywKZGlmZiAtLWdpdCBhL2J1aWxkLnlhbWwgYi9idWlsZC55YW1sCmluZGV4IDAzOThiYzIuLjQzZDNjNjggMTAwNjQ0Ci0tLSBhL2J1aWxkLnlhbWwKKysrIGIvYnVpbGQueWFtbApAQCAtMzQwLDI3ICszNDAsNiBAQAogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oCiAgIC0gc3JjL2NvcmUvbGliL3N1cmZhY2Uvc3VyZmFjZV90cmFjZS5oCiAgIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5oCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odHRwMl9lcnJvcnMuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5oCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmgKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuaAotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oCiAgIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuaAogICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaAogICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaApAQCAtNDYxLDcgKzQ0MCw2IEBACiAgIC0gc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYwogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYwogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMKLSAgLSBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jCiAgIC0gc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMKICAgLSBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYwogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jCkBAIC00NzEsMzEgKzQ0OSw5IEBACiAgIC0gc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYwogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMKICAgLSBzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYwotICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYwogICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMKICAgLSBzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMKICAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYwotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jCi0gIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMKLSAgLSBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuYwotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3dyaXRpbmcuYwotICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jCiAgIC0gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYwogICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYwogICAtIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYwpAQCAtNTQyLDkgKzQ5OCw3IEBACiAgIC0gc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5jCiAgIC0gc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuYwogICAtIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfYXV0aF9maWx0ZXIuYwotICAtIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jCiAgIC0gc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF9zZWN1cmUuYwotICAtIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCiAgIC0gc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jCiAgIC0gc3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmMKICAgLSBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jCkBAIC01NjgsNiArNTIyLDc3IEBACiAgIC0gdGVzdC9jb3JlL3V0aWwvcG9ydF9zZXJ2ZXJfY2xpZW50LmMKICAgLSB0ZXN0L2NvcmUvdXRpbC9wb3J0X3dpbmRvd3MuYwogICAtIHRlc3QvY29yZS91dGlsL3NsaWNlX3NwbGl0dGVyLmMKKy0gbmFtZTogZ3JwY190cmFuc3BvcnRfY2h0dHAyCisgIGhlYWRlcnM6CisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaAorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaAorICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMKKyAgLSBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jCisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYworICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMKKyAgdXNlczoKKyAgLSBncnBjX2Jhc2UKKy0gbmFtZTogZ3JwY190cmFuc3BvcnRfY2h0dHAyX2NsaWVudF9pbnNlY3VyZQorICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMKKyAgdXNlczoKKyAgLSBncnBjX3RyYW5zcG9ydF9jaHR0cDIKKyAgLSBncnBjX2Jhc2UKKy0gbmFtZTogZ3JwY190cmFuc3BvcnRfY2h0dHAyX2NsaWVudF9zZWN1cmUKKyAgc3JjOgorICAtIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMKKyAgdXNlczoKKyAgLSBncnBjX3RyYW5zcG9ydF9jaHR0cDIKKyAgLSBncnBjX2Jhc2UKKy0gbmFtZTogZ3JwY190cmFuc3BvcnRfY2h0dHAyX3NlcnZlcl9pbnNlY3VyZQorICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYworICB1c2VzOgorICAtIGdycGNfdHJhbnNwb3J0X2NodHRwMgorICAtIGdycGNfYmFzZQorLSBuYW1lOiBncnBjX3RyYW5zcG9ydF9jaHR0cDJfc2VydmVyX3NlY3VyZQorICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jCisgIHVzZXM6CisgIC0gZ3JwY190cmFuc3BvcnRfY2h0dHAyCisgIC0gZ3JwY19iYXNlCiAtIG5hbWU6IG5hbm9wYgogICBoZWFkZXJzOgogICAtIHRoaXJkX3BhcnR5L25hbm9wYi9wYi5oCkBAIC02MTAsNiArNjM1LDEwIEBACiAgIGRsbDogdHJ1ZQogICBmaWxlZ3JvdXBzOgogICAtIGdycGNfYmFzZQorICAtIGdycGNfdHJhbnNwb3J0X2NodHRwMl9zZXJ2ZXJfc2VjdXJlCisgIC0gZ3JwY190cmFuc3BvcnRfY2h0dHAyX2NsaWVudF9zZWN1cmUKKyAgLSBncnBjX3RyYW5zcG9ydF9jaHR0cDJfc2VydmVyX2luc2VjdXJlCisgIC0gZ3JwY190cmFuc3BvcnRfY2h0dHAyX2NsaWVudF9pbnNlY3VyZQogICAtIGdycGNfc2VjdXJlCiAgIC0gZ3JwY19jb2RlZ2VuCiAgIC0gY2Vuc3VzCkBAIC02OTEsNiArNzIwLDggQEAKICAgZGxsOiB0cnVlCiAgIGZpbGVncm91cHM6CiAgIC0gZ3JwY19iYXNlCisgIC0gZ3JwY190cmFuc3BvcnRfY2h0dHAyX3NlcnZlcl9pbnNlY3VyZQorICAtIGdycGNfdHJhbnNwb3J0X2NodHRwMl9jbGllbnRfaW5zZWN1cmUKICAgLSBncnBjX2NvZGVnZW4KICAgLSBjZW5zdXMKICAgLSBuYW5vcGIKQEAgLTE1NDMsNiArMTU3NCwxOCBAQAogICAtIGdycGMKICAgLSBncHJfdGVzdF91dGlsCiAgIC0gZ3ByCistIG5hbWU6IGhwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdAorICBidWlsZDogZnV6emVyCisgIGxhbmd1YWdlOiBjCisgIHNyYzoKKyAgLSB0ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfZnV6emVyX3Rlc3QuYworICBkZXBzOgorICAtIGdycGNfdGVzdF91dGlsCisgIC0gZ3JwYworICAtIGdwcl90ZXN0X3V0aWwKKyAgLSBncHIKKyAgY29ycHVzX2RpcnM6CisgIC0gdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cwogLSBuYW1lOiBocGFja19wYXJzZXJfdGVzdAogICBidWlsZDogdGVzdAogICBsYW5ndWFnZTogYwpAQCAtMTU2Myw2ICsxNjA2LDE4IEBACiAgIC0gZ3JwYwogICAtIGdwcl90ZXN0X3V0aWwKICAgLSBncHIKKy0gbmFtZTogaHR0cF9mdXp6ZXJfdGVzdAorICBidWlsZDogZnV6emVyCisgIGxhbmd1YWdlOiBjCisgIHNyYzoKKyAgLSB0ZXN0L2NvcmUvaHR0cC9mdXp6ZXIuYworICBkZXBzOgorICAtIGdycGNfdGVzdF91dGlsCisgIC0gZ3JwYworICAtIGdwcl90ZXN0X3V0aWwKKyAgLSBncHIKKyAgY29ycHVzX2RpcnM6CisgIC0gdGVzdC9jb3JlL2h0dHAvY29ycHVzCiAtIG5hbWU6IGh0dHBfcGFyc2VyX3Rlc3QKICAgYnVpbGQ6IHRlc3QKICAgbGFuZ3VhZ2U6IGMKQEAgLTE2MzEsNiArMTY4NiwxOCBAQAogICAtIGdycGMKICAgLSBncHJfdGVzdF91dGlsCiAgIC0gZ3ByCistIG5hbWU6IGpzb25fZnV6emVyX3Rlc3QKKyAgYnVpbGQ6IGZ1enplcgorICBsYW5ndWFnZTogYworICBzcmM6CisgIC0gdGVzdC9jb3JlL2pzb24vZnV6emVyLmMKKyAgZGVwczoKKyAgLSBncnBjX3Rlc3RfdXRpbAorICAtIGdycGMKKyAgLSBncHJfdGVzdF91dGlsCisgIC0gZ3ByCisgIGNvcnB1c19kaXJzOgorICAtIHRlc3QvY29yZS9qc29uL2NvcnB1cwogLSBuYW1lOiBqc29uX3Jld3JpdGUKICAgYnVpbGQ6IHRlc3QKICAgcnVuOiBmYWxzZQpAQCAtMTk5NCw2ICsyMDYxLDE4IEBACiAgIC0gbWFjCiAgIC0gbGludXgKICAgLSBwb3NpeAorLSBuYW1lOiB1cmlfZnV6emVyX3Rlc3QKKyAgYnVpbGQ6IGZ1enplcgorICBsYW5ndWFnZTogYworICBzcmM6CisgIC0gdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2Z1enplcl90ZXN0LmMKKyAgZGVwczoKKyAgLSBncnBjX3Rlc3RfdXRpbAorICAtIGdycGMKKyAgLSBncHJfdGVzdF91dGlsCisgIC0gZ3ByCisgIGNvcnB1c19kaXJzOgorICAtIHRlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMKIC0gbmFtZTogdXJpX3BhcnNlcl90ZXN0CiAgIGJ1aWxkOiB0ZXN0CiAgIGxhbmd1YWdlOiBjCkBAIC0yNzc1LDggKzI4NTQsOCBAQAogY29uZmlnczoKICAgYXNhbjoKICAgICBDQzogY2xhbmcKLSAgICBDUFBGTEFHUzogLU8wIC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQKLSAgICAgIC1ER1BSX05PX0RJUkVDVF9TWVNDQUxMUworICAgIENQUEZMQUdTOiAtTzAgLWZzYW5pdGl6ZS1jb3ZlcmFnZT1lZGdlIC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgorICAgICAgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50IC1ER1BSX05PX0RJUkVDVF9TWVNDQUxMUwogICAgIENYWDogY2xhbmcrKwogICAgIExEOiBjbGFuZwogICAgIExERkxBR1M6IC1mc2FuaXRpemU9YWRkcmVzcwpAQCAtMjc4OCw4ICsyODY3LDggQEAKICAgICB0aW1lb3V0X211bHRpcGxpZXI6IDMKICAgYXNhbi1ub2xlYWtzOgogICAgIENDOiBjbGFuZwotICAgIENQUEZMQUdTOiAtTzAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAotICAgICAgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCisgICAgQ1BQRkxBR1M6IC1PMCAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCisgICAgICAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCiAgICAgQ1hYOiBjbGFuZysrCiAgICAgTEQ6IGNsYW5nCiAgICAgTERGTEFHUzogLWZzYW5pdGl6ZT1hZGRyZXNzCkBAIC0yNzk4LDYgKzI4NzcsMTkgQEAKICAgICB0ZXN0X2Vudmlyb246CiAgICAgICBBU0FOX09QVElPTlM6IGRldGVjdF9sZWFrcz0wOmNvbG9yPWFsd2F5cwogICAgIHRpbWVvdXRfbXVsdGlwbGllcjogMworICBhc2FuLXRyYWNlLWNtcDoKKyAgICBDQzogY2xhbmcKKyAgICBDUFBGTEFHUzogLU8wIC1mc2FuaXRpemUtY292ZXJhZ2U9ZWRnZSAtZnNhbml0aXplLWNvdmVyYWdlPXRyYWNlLWNtcCAtZnNhbml0aXplPWFkZHJlc3MKKyAgICAgIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKKyAgICBDWFg6IGNsYW5nKysKKyAgICBMRDogY2xhbmcKKyAgICBMREZMQUdTOiAtZnNhbml0aXplPWFkZHJlc3MKKyAgICBMRFhYOiBjbGFuZysrCisgICAgY29tcGlsZV90aGVfd29ybGQ6IHRydWUKKyAgICB0ZXN0X2Vudmlyb246CisgICAgICBBU0FOX09QVElPTlM6IGRldGVjdF9sZWFrcz0xOmNvbG9yPWFsd2F5cworICAgICAgTFNBTl9PUFRJT05TOiBzdXBwcmVzc2lvbnM9dG9vbHMvbHNhbl9zdXBwcmVzc2lvbnMudHh0OnJlcG9ydF9vYmplY3RzPTEKKyAgICB0aW1lb3V0X211bHRpcGxpZXI6IDMKICAgYmFzaWNwcm9mOgogICAgIENQUEZMQUdTOiAtTzIgLURHUlBDX0JBU0lDX1BST0ZJTEVSIC1ER1JQQ19USU1FUlNfUkRUU0MKICAgICBERUZJTkVTOiBOREVCVUcKQEAgLTI4MDYsOCArMjg5OCw4IEBACiAgICAgREVGSU5FUzogX0RFQlVHIERFQlVHCiAgIGVhc2FuOgogICAgIENDOiBjbGFuZwotICAgIENQUEZMQUdTOiAtTzAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAotICAgICAgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCisgICAgQ1BQRkxBR1M6IC1PMCAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCisgICAgICAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCiAgICAgQ1hYOiBjbGFuZysrCiAgICAgREVGSU5FUzogX0RFQlVHIERFQlVHIEdSUENfRVhFQ1VUSU9OX0NPTlRFWFRfU0FOSVRJWkVSCiAgICAgTEQ6IGNsYW5nCkBAIC0yODU2LDkgKzI5NDgsOSBAQAogICAgIHZhbGdyaW5kOiAtLXRvb2w9bWVtY2hlY2sgLS1sZWFrLWNoZWNrPWZ1bGwKICAgbXNhbjoKICAgICBDQzogY2xhbmcKLSAgICBDUFBGTEFHUzogLU8wIC1mc2FuaXRpemU9bWVtb3J5IC1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnMgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKLSAgICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0wIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQKLSAgICAgIC1mUElFIC1waWUgLURHUFJfTk9fRElSRUNUX1NZU0NBTExTCisgICAgQ1BQRkxBR1M6IC1PMCAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT1tZW1vcnkgLWZzYW5pdGl6ZS1tZW1vcnktdHJhY2stb3JpZ2lucworICAgICAgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLURHVEVTVF9IQVNfVFIxX1RVUExFPTAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCisgICAgICAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLWZQSUUgLXBpZSAtREdQUl9OT19ESVJFQ1RfU1lTQ0FMTFMKICAgICBDWFg6IGNsYW5nKysKICAgICBERUZJTkVTOiBOREVCVUcKICAgICBMRDogY2xhbmcKQEAgLTI4OTEsNyArMjk4Myw4IEBACiAgICAgdGltZW91dF9tdWx0aXBsaWVyOiA1CiAgIHVic2FuOgogICAgIENDOiBjbGFuZwotICAgIENQUEZMQUdTOiAtTzEgLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50CisgICAgQ1BQRkxBR1M6IC1PMSAtZnNhbml0aXplLWNvdmVyYWdlPWVkZ2UgLWZzYW5pdGl6ZT11bmRlZmluZWQgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKKyAgICAgIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAogICAgIENYWDogY2xhbmcrKwogICAgIERFRklORVM6IE5ERUJVRwogICAgIExEOiBjbGFuZwpkaWZmIC0tZ2l0IGEvY29uZmlnLm00IGIvY29uZmlnLm00CmluZGV4IDU0OWU2MzIuLjY1M2IyODcgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5tNAorKysgYi9jb25maWcubTQKQEAgLTgwLDkgKzgwLDQwIEBACiAgICAgc3JjL2NvcmUvbGliL3N1cHBvcnQvdG1wZmlsZV9wb3NpeC5jIFwKICAgICBzcmMvY29yZS9saWIvc3VwcG9ydC90bXBmaWxlX3dpbjMyLmMgXAogICAgIHNyYy9jb3JlL2xpYi9zdXBwb3J0L3dyYXBfbWVtY3B5LmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9wYXJzaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIFwKKyAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMgXAorICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyBcCisgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIFwKKyAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyBcCisgICAgc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyBcCiAgICAgc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIFwKICAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuYyBcCkBAIC0xMTYsNiArMTQ3LDcgQEAKICAgICBzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuYyBcCiAgICAgc3JjL2NvcmUvbGliL2h0dHAvZm9ybWF0X3JlcXVlc3QuYyBcCiAgICAgc3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaS5jIFwKKyAgICBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIFwKICAgICBzcmMvY29yZS9saWIvaHR0cC9wYXJzZXIuYyBcCiAgICAgc3JjL2NvcmUvbGliL2lvbWdyL2Nsb3N1cmUuYyBcCiAgICAgc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmMgXApAQCAtMTY0LDU3ICsxOTYsNiBAQAogICAgIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMgXAogICAgIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmMgXAogICAgIHNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jIFwKLSAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMgXAotICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIFwKLSAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMgXAotICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyBcCi0gICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMgXAotICAgIHNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMgXAogICAgIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NsaWVudF9hdXRoX2ZpbHRlci5jIFwKICAgICBzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuYyBcCkBAIC0yMjksMTggKzIxMCwzNyBAQAogICAgIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jIFwKLSAgICBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NvbXBsZXRpb25fcXVldWUuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyBcCiAgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdF9zZWN1cmUuYyBcCi0gICAgc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyBcCisgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyBcCisgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIFwKICAgICBzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMgXAogICAgIHNyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5jIFwKICAgICBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyBcCi0gICAgc3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMgXAotICAgIHNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIFwKLSAgICBzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyBcCiAgICAgdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIFwKICAgICB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmMgXAogICAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyBcCkBAIC01NDYsNiArNTQ2LDExIEBACiAgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL3BocC9leHQvZ3JwYykKIAogICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9ib3Jpbmdzc2wpCisgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlKQorICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUpCisgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlKQorICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUpCisgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0KQogICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9jb3JlL2xpYi9jZW5zdXMpCiAgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL2NvcmUvbGliL2NoYW5uZWwpCiAgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvc3JjL2NvcmUvbGliL2NsaWVudF9jb25maWcpCkBAIC01NjIsNyArNTY3LDYgQEAKICAgUEhQX0FERF9CVUlMRF9ESVIoJGV4dF9idWlsZGRpci9zcmMvY29yZS9saWIvc3VwcG9ydCkKICAgUEhQX0FERF9CVUlMRF9ESVIoJGV4dF9idWlsZGRpci9zcmMvY29yZS9saWIvc3VyZmFjZSkKICAgUEhQX0FERF9CVUlMRF9ESVIoJGV4dF9idWlsZGRpci9zcmMvY29yZS9saWIvdHJhbnNwb3J0KQotICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyKQogICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3NyYy9jb3JlL2xpYi90c2kpCiAgIFBIUF9BRERfQlVJTERfRElSKCRleHRfYnVpbGRkaXIvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2NyeXB0bykKICAgUEhQX0FERF9CVUlMRF9ESVIoJGV4dF9idWlsZGRpci90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvY3J5cHRvL2FlcykKZGlmZiAtLWdpdCBhL2dSUEMucG9kc3BlYyBiL2dSUEMucG9kc3BlYwppbmRleCAzZDVlOGFmLi4wODMzMGViIDEwMDY0NAotLS0gYS9nUlBDLnBvZHNwZWMKKysrIGIvZ1JQQy5wb2RzcGVjCkBAIC03NSw2ICs3NSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VwcG9ydC90aGRfaW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXBwb3J0L3RpbWVfcHJlY2lzZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvdG1wZmlsZS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hbGxvYy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9zdXBwb3J0L2FsbG9jLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvc3VwcG9ydC9hdG0uaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bV9nY2NfYXRvbWljLmgnLApAQCAtMTAzLDIwICsxMTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfbXN2Yy5oJywKICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX3B0aHJlYWQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9zdXBwb3J0L3VzZWZ1bC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hbGxvYy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9wcm9maWxpbmcvYmFzaWNfdGltZXJzLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvcHJvZmlsaW5nL3N0YXBfdGltZXJzLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VwcG9ydC9hbGxvYy5jJywKQEAgLTE2MSw4ICsxNjEsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvdG1wZmlsZV9wb3NpeC5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvdG1wZmlsZV93aW4zMi5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvd3JhcF9tZW1jcHkuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCcsCkBAIC0yMzksNiArMjYzLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9qc29uL2pzb25fcmVhZGVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2F1dGhfZmlsdGVycy5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvaGFuZHNoYWtlLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvanNvbl90b2tlbi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyZV9lbmRwb2ludC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdGF0aXN0aWNzL2NlbnN1c19pbnRlcmZhY2UuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdGF0aXN0aWNzL2NlbnN1c19ycGNfc3RhdHMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5oJywKQEAgLTI1NCw3MCArMjg3LDY4IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc3VyZmFjZV90cmFjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odHRwMl9lcnJvcnMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2F1dGhfZmlsdGVycy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvaGFuZHNoYWtlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvanNvbl90b2tlbi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyZV9lbmRwb2ludC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvZmFrZV90cmFuc3BvcnRfc2VjdXJpdHkuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS9zc2xfdHlwZXMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5LmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eV9pbnRlcmZhY2UuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9ycGNfbWV0cmljX2lkLmgnLAogICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9uYW5vcGIvcGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9ncnBjX3NlY3VyaXR5LmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlcl9yZWFkZXIuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9jZW5zdXMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9jb21wcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2dycGMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9zdGF0dXMuaCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9ncnBjX3NlY3VyaXR5LmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2Nvbm5lY3Rpdml0eV9zdGF0ZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvY2Vuc3VzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlL2dycGMvc3RhdHVzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfcGx1Z2luLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMnLApAQCAtMzUxLDYgKzM4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9kZWJ1Zy90cmFjZS5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2h0dHAvZm9ybWF0X3JlcXVlc3QuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGkuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvaHR0cC9wYXJzZXIuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9pb21nci9jbG9zdXJlLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuYycsCkBAIC0zOTksNTcgKzQzMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXIuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9kZXRhaWxzLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9saXN0cy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9jbGllbnRfYXV0aF9maWx0ZXIuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5jJywKQEAgLTQ2NCwxOCArNDQ1LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX2F1dGhfZmlsdGVyLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ldmVudF9zdHJpbmcuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfc2VjdXJlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfb3Bfc3RyaW5nLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5LmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmMnLAotICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYycsCi0gICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvdHJhY2luZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jJywKICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jJywKICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5jJwpAQCAtNDkyLDggKzQ5MiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXBwb3J0L3RoZF9pbnRlcm5hbC5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3VwcG9ydC90aW1lX3ByZWNpc2UuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvdG1wZmlsZS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9hZ2dyZWdhdGlvbi5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCcsCkBAIC01NzAsNiArNTk0LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2pzb25fdG9rZW4uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX2ludGVyZmFjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfcnBjX3N0YXRzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5oJywKQEAgLTU4NSw1MCArNjE4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3N1cmZhY2VfdHJhY2UuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2pzb25fdG9rZW4uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS9zc2xfdHlwZXMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHkuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHlfaW50ZXJmYWNlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9uYW5vcGIvcGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZGVjb2RlLmgnLApkaWZmIC0tZ2l0IGEvZ3JwYy5nZW1zcGVjIGIvZ3JwYy5nZW1zcGVjCmluZGV4IGFhNTI4OTAuLmM1MTZmNTIgMTAwNzU1Ci0tLSBhL2dycGMuZ2Vtc3BlYworKysgYi9ncnBjLmdlbXNwZWMKQEAgLTQ2LDYgKzQ2LDIwIEBACiAKICAgcy5leHRlbnNpb25zID0gJXcoc3JjL3J1YnkvZXh0L2dycGMvZXh0Y29uZi5yYikKIAorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCApCisgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCApCisgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCApCiAgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX2djY19hdG9taWMuaCApCkBAIC03NCwyMCArODgsNiBAQAogICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfbXN2Yy5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX3B0aHJlYWQuaCApCiAgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3VzZWZ1bC5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hbGxvYy5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCApCi0gIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCApCi0gIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmggKQotICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCApCi0gIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCApCi0gIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCApCi0gIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmggKQotICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9wcm9maWxpbmcvdGltZXJzLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VwcG9ydC9iYWNrb2ZmLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VwcG9ydC9ibG9ja19hbm5vdGF0ZS5oICkKQEAgLTE0NCwyMSArMTQ0LDQ1IEBACiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXBwb3J0L3RtcGZpbGVfcG9zaXguYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXBwb3J0L3RtcGZpbGVfd2luMzIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXBwb3J0L3dyYXBfbWVtY3B5LmMgKQotICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyLmggKQogICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvY2Vuc3VzLmggKQogICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvY29tcHJlc3Npb24uaCApCiAgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9ncnBjLmggKQotICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvc3RhdHVzLmggKQorICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCApCiAgIHMuZmlsZXMgKz0gJXcoIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oICkKICAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmggKQogICBzLmZpbGVzICs9ICV3KCBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oICkKLSAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL2NlbnN1cy5oICkKKyAgcy5maWxlcyArPSAldyggaW5jbHVkZS9ncnBjL3N0YXR1cy5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9ycGNfbWV0cmljX2lkLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5oICkKQEAgLTIzNSw2ICsyNTksMTUgQEAKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvand0X3ZlcmlmaWVyLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmggKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX2ludGVyZmFjZS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX3JwY19zdGF0cy5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmggKQpAQCAtMjUwLDU3ICsyODMsNTUgQEAKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9zdXJmYWNlX3RyYWNlLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9pbXBsLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvand0X3ZlcmlmaWVyLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHNpL3NzbF90eXBlcy5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHkuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5X2ludGVyZmFjZS5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9hZ2dyZWdhdGlvbi5oICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmggKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L25hbm9wYi9wYi5oICkKICAgcy5maWxlcyArPSAldyggdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5oICkKICAgcy5maWxlcyArPSAldyggdGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5oICkKICAgcy5maWxlcyArPSAldyggdGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfY29udGV4dC5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy90cmFjaW5nLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5jICkKQEAgLTMzNCw2ICszNjUsNyBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9odHRwL2Zvcm1hdF9yZXF1ZXN0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2h0dHAvcGFyc2VyLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmMgKQpAQCAtMzgyLDU3ICs0MTQsNiBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvanNvbi9qc29uX3N0cmluZy5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3BhcnNpbmcuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvY2xpZW50X2F1dGhfZmlsdGVyLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuYyApCkBAIC00NDcsMTggKzQyOCwzNyBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9hbGFybS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXJfcmVhZGVyLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfbG9nX2JhdGNoLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0X3NlY3VyZS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jICkKLSAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYyApCi0gIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgKQotICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYyApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCBiL2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCmluZGV4IGVkNDg0MTEuLjYwNzUxMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCisrKyBiL2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCkBAIC0xMzQsNiArMTM0LDggQEAKICNkZWZpbmUgR1BSX0dFVFBJRF9JTl9VTklTVERfSCAxCiAjZGVmaW5lIEdQUl9IQVZFX01TR19OT1NJR05BTCAxCiAjZGVmaW5lIEdQUl9IQVZFX1VOSVhfU09DS0VUIDEKKyNkZWZpbmUgR1BSX0hBVkVfSVBfUEtUSU5GTyAxCisjZGVmaW5lIEdQUl9IQVZFX0lQVjZfUkVDVlBLVElORk8gMQogI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAjZGVmaW5lIEdQUl9QT1NJWF9DUkFTSF9IQU5ETEVSIDEKICNkZWZpbmUgR1BSX1BMQVRGT1JNX1NUUklORyAibGludXgiCkBAIC0xNTYsNiArMTU4LDggQEAKICNkZWZpbmUgR1BSX1BPU0lYX1NPQ0tFVCAxCiAjZGVmaW5lIEdQUl9QT1NJWF9TT0NLRVRBRERSIDEKICNkZWZpbmUgR1BSX0hBVkVfVU5JWF9TT0NLRVQgMQorI2RlZmluZSBHUFJfSEFWRV9JUF9QS1RJTkZPIDEKKyNkZWZpbmUgR1BSX0hBVkVfSVBWNl9SRUNWUEtUSU5GTyAxCiAjaWZkZWYgX19HTElCQ19QUkVSRVEKICNpZiBfX0dMSUJDX1BSRVJFUSgyLCA5KQogI2RlZmluZSBHUFJfTElOVVhfRVZFTlRGRCAxCkBAIC0yMTcsNiArMjIxLDcgQEAKICNkZWZpbmUgR1BSX0dFVFBJRF9JTl9VTklTVERfSCAxCiAjZGVmaW5lIEdQUl9IQVZFX1NPX05PU0lHUElQRSAxCiAjZGVmaW5lIEdQUl9IQVZFX1VOSVhfU09DS0VUIDEKKyNkZWZpbmUgR1BSX0hBVkVfSVBfUEtUSU5GTyAxCiAjaWZkZWYgX0xQNjQKICNkZWZpbmUgR1BSX0FSQ0hfNjQgMQogI2Vsc2UgLyogX0xQNjQgKi8KQEAgLTI0Niw2ICsyNTEsOCBAQAogI2RlZmluZSBHUFJfR0VUUElEX0lOX1VOSVNURF9IIDEKICNkZWZpbmUgR1BSX0hBVkVfU09fTk9TSUdQSVBFIDEKICNkZWZpbmUgR1BSX0hBVkVfVU5JWF9TT0NLRVQgMQorI2RlZmluZSBHUFJfSEFWRV9JUF9QS1RJTkZPIDEKKyNkZWZpbmUgR1BSX0hBVkVfSVBWNl9SRUNWUEtUSU5GTyAxCiAjaWZkZWYgX0xQNjQKICNkZWZpbmUgR1BSX0FSQ0hfNjQgMQogI2Vsc2UgLyogX0xQNjQgKi8KZGlmZiAtLWdpdCBhL3BhY2thZ2UuanNvbiBiL3BhY2thZ2UuanNvbgppbmRleCAzNzg1NmQ3Li40ZGE3YzcwIDEwMDY0NAotLS0gYS9wYWNrYWdlLmpzb24KKysrIGIvcGFja2FnZS5qc29uCkBAIC0yNyw2ICsyNyw3IEBACiAgIH0sCiAgICJidW5kbGVkRGVwZW5kZW5jaWVzIjogWyJub2RlLXByZS1neXAiXSwKICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiYXJndWVqcyI6ICJeMC4yLjMiLAogICAgICJsb2Rhc2giOiAiXjMuOS4zIiwKICAgICAibmFuIjogIl4yLjAuMCIsCiAgICAgInByb3RvYnVmanMiOiAiXjQuMC4wIgpAQCAtODYsMjEgKzg3LDQ1IEBACiAgICAgInNyYy9ub2RlL3NyYy9ncnBjX2V4dGVuc2lvbi5qcyIsCiAgICAgInNyYy9ub2RlL3NyYy9tZXRhZGF0YS5qcyIsCiAgICAgInNyYy9ub2RlL3NyYy9zZXJ2ZXIuanMiLAotICAgICJpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyLmgiLAogICAgICJpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmgiLAorICAgICJpbmNsdWRlL2dycGMvY2Vuc3VzLmgiLAogICAgICJpbmNsdWRlL2dycGMvY29tcHJlc3Npb24uaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9ncnBjLmgiLAotICAgICJpbmNsdWRlL2dycGMvc3RhdHVzLmgiLAorICAgICJpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIiwKICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLAogICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCIsCiAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5oIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaCIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5oIiwKQEAgLTE3Nyw2ICsyMDIsMTUgQEAKICAgICAic3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmgiLAogICAgICJzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCIsCisgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvand0X3ZlcmlmaWVyLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmgiLAorICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oIiwKICAgICAic3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX2ludGVyZmFjZS5oIiwKICAgICAic3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX3JwY19zdGF0cy5oIiwKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiLApAQCAtMTkyLDU3ICsyMjYsNTUgQEAKICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zdXJmYWNlX3RyYWNlLmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5oIiwKICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmgiLAogICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9pbXBsLmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCIsCi0gICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvand0X3ZlcmlmaWVyLmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmgiLAotICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5oIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmgiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3NzbF90eXBlcy5oIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHkuaCIsCiAgICAgInNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5X2ludGVyZmFjZS5oIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmgiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYi5oIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5oIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5oIiwKICAgICAidGhpcmRfcGFydHkvbmFub3BiL3BiX2VuY29kZS5oIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuYyIsCisgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMiLAorICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfY29udGV4dC5jIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5jIiwKICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9pbml0aWFsaXplLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuYyIsCisgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMiLAorICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIiwKKyAgICAic3JjL2NvcmUvbGliL2NlbnN1cy90cmFjaW5nLmMiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYyIsCiAgICAgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5jIiwKQEAgLTI3Niw2ICszMDgsNyBAQAogICAgICJzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9odHRwL2Zvcm1hdF9yZXF1ZXN0LmMiLAogICAgICJzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpLmMiLAorICAgICJzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIiwKICAgICAic3JjL2NvcmUvbGliL2h0dHAvcGFyc2VyLmMiLAogICAgICJzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5jIiwKICAgICAic3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmMiLApAQCAtMzI0LDU3ICszNTcsNiBAQAogICAgICJzcmMvY29yZS9saWIvanNvbi9qc29uX3N0cmluZy5jIiwKICAgICAic3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAotICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3BhcnNpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIiwKLSAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyIsCi0gICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmMiLAotICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY2xpZW50X2F1dGhfZmlsdGVyLmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuYyIsCkBAIC0zODksMTggKzM3MSwzNyBAQAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmMiLAogICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5jIiwKICAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jIiwKLSAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hbGFybS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXJfcmVhZGVyLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfbG9nX2JhdGNoLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0X3NlY3VyZS5jIiwKLSAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiLAorICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIiwKKyAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyIsCisgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMiLAorICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMiLAorICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMiLAorICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jIiwKKyAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyIsCisgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jIiwKICAgICAic3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmMiLAogICAgICJzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIiwKLSAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9vcGVyYXRpb24uYyIsCi0gICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiLAotICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYyIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuYyIsCiAgICAgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyIsCkBAIC04MzEsNiArODMyLDIwIEBACiAgICAgInRoaXJkX3BhcnR5L2JvcmluZ3NzbC9zc2wvdDFfZW5jLmMiLAogICAgICJ0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3NsL3QxX2xpYi5jIiwKICAgICAidGhpcmRfcGFydHkvYm9yaW5nc3NsL3NzbC90bHNfcmVjb3JkLmMiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiwKKyAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgiLAorICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCIsCisgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCIsCiAgICAgImluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX2djY19hdG9taWMuaCIsCkBAIC04NTksMjAgKzg3NCw2IEBACiAgICAgImluY2x1ZGUvZ3JwYy9zdXBwb3J0L3Rsc19tc3ZjLmgiLAogICAgICJpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfcHRocmVhZC5oIiwKICAgICAiaW5jbHVkZS9ncnBjL3N1cHBvcnQvdXNlZnVsLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiwKLSAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgiLAotICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCIsCi0gICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiwKICAgICAic3JjL2NvcmUvbGliL3Byb2ZpbGluZy90aW1lcnMuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXBwb3J0L2JhY2tvZmYuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXBwb3J0L2Jsb2NrX2Fubm90YXRlLmgiLApkaWZmIC0tZ2l0IGEvcGFja2FnZS54bWwgYi9wYWNrYWdlLnhtbAppbmRleCBiYjk2OWQxLi5hNDBjZDE2IDEwMDY0NAotLS0gYS9wYWNrYWdlLnhtbAorKysgYi9wYWNrYWdlLnhtbApAQCAtNTAsNiArNTAsMjAgQEAKICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXIuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL3NlcnZlcl9jcmVkZW50aWFscy5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9waHAvZXh0L2dycGMvdGltZXZhbC5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9zdXBwb3J0L2FsbG9jLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX2djY19hdG9taWMuaCIgcm9sZT0ic3JjIiAvPgpAQCAtNzgsMjAgKzkyLDYgQEAKICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX21zdmMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfcHRocmVhZC5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9zdXBwb3J0L3VzZWZ1bC5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbjMyLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW4zMi5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vdGltZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9wcm9maWxpbmcvdGltZXJzLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cHBvcnQvYmFja29mZi5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXBwb3J0L2Jsb2NrX2Fubm90YXRlLmgiIHJvbGU9InNyYyIgLz4KQEAgLTE0OCwyMSArMTQ4LDQ1IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXBwb3J0L3RtcGZpbGVfcG9zaXguYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VwcG9ydC90bXBmaWxlX3dpbjMyLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cHBvcnQvd3JhcF9tZW1jcHkuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlcl9yZWFkZXIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvY2Vuc3VzLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2dycGMuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvc3RhdHVzLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9ImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJpbmNsdWRlL2dycGMvY2Vuc3VzLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0iaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdGltZW91dF9lbmNvZGluZy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmgiIHJvbGU9InNyYyIgLz4KQEAgLTIzOSw2ICsyNjMsMTUgQEAKICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvanNvbl90b2tlbi5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9qd3RfdmVyaWZpZXIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX2ludGVyZmFjZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdGF0aXN0aWNzL2NlbnN1c19ycGNfc3RhdHMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuaCIgcm9sZT0ic3JjIiAvPgpAQCAtMjU0LDU3ICsyODcsNTUgQEAKICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2Uvc3VyZmFjZV90cmFjZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X2ltcGwuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9oYW5kc2hha2UuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvanNvbl90b2tlbi5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9qd3RfdmVyaWZpZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJlX2VuZHBvaW50LmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5oIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90c2kvc3NsX3R5cGVzLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHkuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eV9pbnRlcmZhY2UuaCIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy9tbG9nLmgiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0idGhpcmRfcGFydHkvbmFub3BiL3BiLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0idGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZW5jb2RlLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L3NlY3VyZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdGltZW91dF9lbmNvZGluZy5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvY29udGV4dC5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2ZpbHRlci5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy90cmFjaW5nLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2tfYnVpbGRlci5jIiByb2xlPSJzcmMiIC8+CkBAIC0zMzgsNiArMzY5LDcgQEAKICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2RlYnVnL3RyYWNlLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2h0dHAvZm9ybWF0X3JlcXVlc3QuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2h0dHAvaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvaHR0cC9wYXJzZXIuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludC5jIiByb2xlPSJzcmMiIC8+CkBAIC0zODYsNTcgKzQxOCw2IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvY2xpZW50X2F1dGhfZmlsdGVyLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmMiIHJvbGU9InNyYyIgLz4KQEAgLTQ1MSwxOCArNDMyLDM3IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfYXV0aF9maWx0ZXIuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9hbGFybS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXJfcmVhZGVyLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfbG9nX2JhdGNoLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0X3NlY3VyZS5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvc3VyZmFjZS92YWxpZGF0ZV9tZXRhZGF0YS5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL3RzaS90cmFuc3BvcnRfc2VjdXJpdHkuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL2luaXRpYWxpemUuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuYyIgcm9sZT0ic3JjIiAvPgotICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2Vuc3VzL29wZXJhdGlvbi5jIiByb2xlPSJzcmMiIC8+Ci0gICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiIHJvbGU9InNyYyIgLz4KLSAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvbGliL2NlbnN1cy90cmFjaW5nLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0idGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfZW5jb2RlLmMiIHJvbGU9InNyYyIgLz4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9SRUFETUUubWQgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMTE0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvUkVBRE1FLm1kCkBAIC0wLDAgKzEgQEAKK1BsdWdpbiBmb3IgY3JlYXRpbmcgaW5zZWN1cmUgY2hhbm5lbHMgdXNpbmcgY2h0dHAyCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOTg3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYwpAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2VfYnVmZmVyLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jbGllbnRfY2hhbm5lbC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfY2xpZW50X2ZpbHRlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jbGllbnRfY29uZmlnL3Jlc29sdmVyX3JlZ2lzdHJ5LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3RjcF9jbGllbnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgZ3JwY19jb25uZWN0b3IgYmFzZTsKKyAgZ3ByX3JlZmNvdW50IHJlZnM7CisKKyAgZ3JwY19jbG9zdXJlICpub3RpZnk7CisgIGdycGNfY29ubmVjdF9pbl9hcmdzIGFyZ3M7CisgIGdycGNfY29ubmVjdF9vdXRfYXJncyAqcmVzdWx0OworICBncnBjX2Nsb3N1cmUgaW5pdGlhbF9zdHJpbmdfc2VudDsKKyAgZ3ByX3NsaWNlX2J1ZmZlciBpbml0aWFsX3N0cmluZ19idWZmZXI7CisKKyAgZ3JwY19lbmRwb2ludCAqdGNwOworCisgIGdycGNfY2xvc3VyZSBjb25uZWN0ZWQ7Cit9IGNvbm5lY3RvcjsKKworc3RhdGljIHZvaWQgY29ubmVjdG9yX3JlZihncnBjX2Nvbm5lY3RvciAqY29uKSB7CisgIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247CisgIGdwcl9yZWYoJmMtPnJlZnMpOworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0b3JfdW5yZWYoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24pIHsKKyAgY29ubmVjdG9yICpjID0gKGNvbm5lY3RvciAqKWNvbjsKKyAgaWYgKGdwcl91bnJlZigmYy0+cmVmcykpIHsKKyAgICAvKiBjLT5pbml0aWFsX3N0cmluZ19idWZmZXIgZG9lcyBub3QgbmVlZCB0byBiZSBkZXN0cm95ZWQgKi8KKyAgICBncHJfZnJlZShjKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBvbl9pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nX3NlbnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MpIHsKKyAgY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCBhcmcpOworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0ZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgYm9vbCBzdWNjZXNzKSB7CisgIGNvbm5lY3RvciAqYyA9IGFyZzsKKyAgZ3JwY19jbG9zdXJlICpub3RpZnk7CisgIGdycGNfZW5kcG9pbnQgKnRjcCA9IGMtPnRjcDsKKyAgaWYgKHRjcCAhPSBOVUxMKSB7CisgICAgaWYgKCFHUFJfU0xJQ0VfSVNfRU1QVFkoYy0+YXJncy5pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nKSkgeworICAgICAgZ3JwY19jbG9zdXJlX2luaXQoJmMtPmluaXRpYWxfc3RyaW5nX3NlbnQsIG9uX2luaXRpYWxfY29ubmVjdF9zdHJpbmdfc2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMpOworICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZjLT5pbml0aWFsX3N0cmluZ19idWZmZXIpOworICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmFyZ3MuaW5pdGlhbF9jb25uZWN0X3N0cmluZyk7CisgICAgICBjb25uZWN0b3JfcmVmKGFyZyk7CisgICAgICBncnBjX2VuZHBvaW50X3dyaXRlKGV4ZWNfY3R4LCB0Y3AsICZjLT5pbml0aWFsX3N0cmluZ19idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjLT5pbml0aWFsX3N0cmluZ19zZW50KTsKKyAgICB9CisgICAgYy0+cmVzdWx0LT50cmFuc3BvcnQgPQorICAgICAgICBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KGV4ZWNfY3R4LCBjLT5hcmdzLmNoYW5uZWxfYXJncywgdGNwLCAxKTsKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhleGVjX2N0eCwgYy0+cmVzdWx0LT50cmFuc3BvcnQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgR1BSX0FTU0VSVChjLT5yZXN1bHQtPnRyYW5zcG9ydCk7CisgICAgYy0+cmVzdWx0LT5jaGFubmVsX2FyZ3MgPSBjLT5hcmdzLmNoYW5uZWxfYXJnczsKKyAgfSBlbHNlIHsKKyAgICBtZW1zZXQoYy0+cmVzdWx0LCAwLCBzaXplb2YoKmMtPnJlc3VsdCkpOworICB9CisgIG5vdGlmeSA9IGMtPm5vdGlmeTsKKyAgYy0+bm90aWZ5ID0gTlVMTDsKKyAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOworfQorCitzdGF0aWMgdm9pZCBjb25uZWN0b3Jfc2h1dGRvd24oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24pIHt9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rvcl9jb25uZWN0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RvciAqY29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jb25uZWN0X2luX2FyZ3MgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nvbm5lY3Rfb3V0X2FyZ3MgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqbm90aWZ5KSB7CisgIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247CisgIEdQUl9BU1NFUlQoYy0+bm90aWZ5ID09IE5VTEwpOworICBHUFJfQVNTRVJUKG5vdGlmeS0+Y2IpOworICBjLT5ub3RpZnkgPSBub3RpZnk7CisgIGMtPmFyZ3MgPSAqYXJnczsKKyAgYy0+cmVzdWx0ID0gcmVzdWx0OworICBjLT50Y3AgPSBOVUxMOworICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+Y29ubmVjdGVkLCBjb25uZWN0ZWQsIGMpOworICBncnBjX3RjcF9jbGllbnRfY29ubmVjdChleGVjX2N0eCwgJmMtPmNvbm5lY3RlZCwgJmMtPnRjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+aW50ZXJlc3RlZF9wYXJ0aWVzLCBhcmdzLT5hZGRyLCBhcmdzLT5hZGRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+ZGVhZGxpbmUpOworfQorCitzdGF0aWMgY29uc3QgZ3JwY19jb25uZWN0b3JfdnRhYmxlIGNvbm5lY3Rvcl92dGFibGUgPSB7CisgICAgY29ubmVjdG9yX3JlZiwgY29ubmVjdG9yX3VucmVmLCBjb25uZWN0b3Jfc2h1dGRvd24sIGNvbm5lY3Rvcl9jb25uZWN0fTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSBiYXNlOworICBncHJfcmVmY291bnQgcmVmczsKKyAgZ3JwY19jaGFubmVsX2FyZ3MgKm1lcmdlX2FyZ3M7CisgIGdycGNfY2hhbm5lbCAqbWFzdGVyOworfSBzdWJjaGFubmVsX2ZhY3Rvcnk7CisKK3N0YXRpYyB2b2lkIHN1YmNoYW5uZWxfZmFjdG9yeV9yZWYoZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnkgKnNjZikgeworICBzdWJjaGFubmVsX2ZhY3RvcnkgKmYgPSAoc3ViY2hhbm5lbF9mYWN0b3J5ICopc2NmOworICBncHJfcmVmKCZmLT5yZWZzKTsKK30KKworc3RhdGljIHZvaWQgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5ICpzY2YpIHsKKyAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmID0gKHN1YmNoYW5uZWxfZmFjdG9yeSAqKXNjZjsKKyAgaWYgKGdwcl91bnJlZigmZi0+cmVmcykpIHsKKyAgICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfVU5SRUYoZXhlY19jdHgsIGYtPm1hc3RlciwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOworICAgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZi0+bWVyZ2VfYXJncyk7CisgICAgZ3ByX2ZyZWUoZik7CisgIH0KK30KKworc3RhdGljIGdycGNfc3ViY2hhbm5lbCAqc3ViY2hhbm5lbF9mYWN0b3J5X2NyZWF0ZV9zdWJjaGFubmVsKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSAqc2NmLAorICAgIGdycGNfc3ViY2hhbm5lbF9hcmdzICphcmdzKSB7CisgIHN1YmNoYW5uZWxfZmFjdG9yeSAqZiA9IChzdWJjaGFubmVsX2ZhY3RvcnkgKilzY2Y7CisgIGNvbm5lY3RvciAqYyA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpjKSk7CisgIGdycGNfY2hhbm5lbF9hcmdzICpmaW5hbF9hcmdzID0KKyAgICAgIGdycGNfY2hhbm5lbF9hcmdzX21lcmdlKGFyZ3MtPmFyZ3MsIGYtPm1lcmdlX2FyZ3MpOworICBncnBjX3N1YmNoYW5uZWwgKnM7CisgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKKyAgYy0+YmFzZS52dGFibGUgPSAmY29ubmVjdG9yX3Z0YWJsZTsKKyAgZ3ByX3JlZl9pbml0KCZjLT5yZWZzLCAxKTsKKyAgYXJncy0+YXJncyA9IGZpbmFsX2FyZ3M7CisgIHMgPSBncnBjX3N1YmNoYW5uZWxfY3JlYXRlKGV4ZWNfY3R4LCAmYy0+YmFzZSwgYXJncyk7CisgIGdycGNfY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCAmYy0+YmFzZSk7CisgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZmluYWxfYXJncyk7CisgIHJldHVybiBzOworfQorCitzdGF0aWMgY29uc3QgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdnRhYmxlIHN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGUgPSB7CisgICAgc3ViY2hhbm5lbF9mYWN0b3J5X3JlZiwgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmLAorICAgIHN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbH07CisKKy8qIENyZWF0ZSBhIGNsaWVudCBjaGFubmVsOgorICAgQXN5bmNocm9ub3VzbHk6IC0gcmVzb2x2ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAtIGNvbm5lY3QgdG8gaXQgKHRyeWluZyBhbHRlcm5hdGl2ZXMgYXMgcHJlc2VudGVkKQorICAgICAgICAgICAgICAgICAgIC0gcGVyZm9ybSBoYW5kc2hha2VzICovCitncnBjX2NoYW5uZWwgKmdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUoY29uc3QgY2hhciAqdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc2VydmVkKSB7CisgIGdycGNfY2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7CisgIGdycGNfcmVzb2x2ZXIgKnJlc29sdmVyOworICBzdWJjaGFubmVsX2ZhY3RvcnkgKmY7CisgIGdycGNfZXhlY19jdHggZXhlY19jdHggPSBHUlBDX0VYRUNfQ1RYX0lOSVQ7CisgIEdSUENfQVBJX1RSQUNFKAorICAgICAgImdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUodGFyZ2V0PSVwLCBhcmdzPSVwLCByZXNlcnZlZD0lcCkiLCAzLAorICAgICAgKHRhcmdldCwgYXJncywgcmVzZXJ2ZWQpKTsKKyAgR1BSX0FTU0VSVCghcmVzZXJ2ZWQpOworCisgIGNoYW5uZWwgPQorICAgICAgZ3JwY19jaGFubmVsX2NyZWF0ZSgmZXhlY19jdHgsIHRhcmdldCwgYXJncywgR1JQQ19DTElFTlRfQ0hBTk5FTCwgTlVMTCk7CisKKyAgZiA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpmKSk7CisgIGYtPmJhc2UudnRhYmxlID0gJnN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGU7CisgIGdwcl9yZWZfaW5pdCgmZi0+cmVmcywgMSk7CisgIGYtPm1lcmdlX2FyZ3MgPSBncnBjX2NoYW5uZWxfYXJnc19jb3B5KGFyZ3MpOworICBmLT5tYXN0ZXIgPSBjaGFubmVsOworICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfUkVGKGYtPm1hc3RlciwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOworICByZXNvbHZlciA9IGdycGNfcmVzb2x2ZXJfY3JlYXRlKHRhcmdldCwgJmYtPmJhc2UpOworICBpZiAoIXJlc29sdmVyKSB7CisgICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKCZleGVjX2N0eCwgZi0+bWFzdGVyLCAic3ViY2hhbm5lbF9mYWN0b3J5Iik7CisgICAgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdW5yZWYoJmV4ZWNfY3R4LCAmZi0+YmFzZSk7CisgICAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGdycGNfY2xpZW50X2NoYW5uZWxfc2V0X3Jlc29sdmVyKAorICAgICAgJmV4ZWNfY3R4LCBncnBjX2NoYW5uZWxfZ2V0X2NoYW5uZWxfc3RhY2soY2hhbm5lbCksIHJlc29sdmVyKTsKKyAgR1JQQ19SRVNPTFZFUl9VTlJFRigmZXhlY19jdHgsIHJlc29sdmVyLCAiY3JlYXRlIik7CisgIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmKCZleGVjX2N0eCwgJmYtPmJhc2UpOworCisgIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7CisKKyAgcmV0dXJuIGNoYW5uZWw7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL1JFQURNRS5tZCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWE4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL1JFQURNRS5tZApAQCAtMCwwICsxIEBACitQbHVnaW4gZm9yIGNyZWF0aW5nIHNlY3VyZSBjaGFubmVscyB1c2luZyBjaHR0cDIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzQ3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCkBAIC0wLDAgKzEsMzE4IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSA8Z3JwYy9ncnBjLmg+CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2xpZW50X2NvbmZpZy9yZXNvbHZlcl9yZWdpc3RyeS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci90Y3BfY2xpZW50LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2F1dGhfZmlsdGVycy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5X2ludGVyZmFjZS5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgIGdycGNfY29ubmVjdG9yIGJhc2U7CisgIGdwcl9yZWZjb3VudCByZWZzOworCisgIGdycGNfY2hhbm5lbF9zZWN1cml0eV9jb25uZWN0b3IgKnNlY3VyaXR5X2Nvbm5lY3RvcjsKKworICBncnBjX2Nsb3N1cmUgKm5vdGlmeTsKKyAgZ3JwY19jb25uZWN0X2luX2FyZ3MgYXJnczsKKyAgZ3JwY19jb25uZWN0X291dF9hcmdzICpyZXN1bHQ7CisgIGdycGNfY2xvc3VyZSBpbml0aWFsX3N0cmluZ19zZW50OworICBncHJfc2xpY2VfYnVmZmVyIGluaXRpYWxfc3RyaW5nX2J1ZmZlcjsKKworICBncHJfbXUgbXU7CisgIGdycGNfZW5kcG9pbnQgKmNvbm5lY3RpbmdfZW5kcG9pbnQ7CisgIGdycGNfZW5kcG9pbnQgKm5ld2x5X2Nvbm5lY3RpbmdfZW5kcG9pbnQ7CisKKyAgZ3JwY19jbG9zdXJlIGNvbm5lY3RlZF9jbG9zdXJlOworfSBjb25uZWN0b3I7CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rvcl9yZWYoZ3JwY19jb25uZWN0b3IgKmNvbikgeworICBjb25uZWN0b3IgKmMgPSAoY29ubmVjdG9yICopY29uOworICBncHJfcmVmKCZjLT5yZWZzKTsKK30KKworc3RhdGljIHZvaWQgY29ubmVjdG9yX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RvciAqY29uKSB7CisgIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247CisgIGlmIChncHJfdW5yZWYoJmMtPnJlZnMpKSB7CisgICAgLyogYy0+aW5pdGlhbF9zdHJpbmdfYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVzdHJveWVkICovCisgICAgZ3ByX2ZyZWUoYyk7CisgIH0KK30KKworc3RhdGljIHZvaWQgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zZWN1cml0eV9zdGF0dXMgc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKnNlY3VyZV9lbmRwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2F1dGhfY29udGV4dCAqYXV0aF9jb250ZXh0KSB7CisgIGNvbm5lY3RvciAqYyA9IGFyZzsKKyAgZ3JwY19jbG9zdXJlICpub3RpZnk7CisgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzX2NvcHkgPSBOVUxMOworICBncHJfbXVfbG9jaygmYy0+bXUpOworICBpZiAoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKSB7CisgICAgbWVtc2V0KGMtPnJlc3VsdCwgMCwgc2l6ZW9mKCpjLT5yZXN1bHQpKTsKKyAgICBncHJfbXVfdW5sb2NrKCZjLT5tdSk7CisgIH0gZWxzZSBpZiAoc3RhdHVzICE9IEdSUENfU0VDVVJJVFlfT0spIHsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwgIlNlY3VyZSBoYW5kc2hha2UgZmFpbGVkIHdpdGggZXJyb3IgJWQuIiwgc3RhdHVzKTsKKyAgICBtZW1zZXQoYy0+cmVzdWx0LCAwLCBzaXplb2YoKmMtPnJlc3VsdCkpOworICAgIGMtPmNvbm5lY3RpbmdfZW5kcG9pbnQgPSBOVUxMOworICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKKyAgfSBlbHNlIHsKKyAgICBncnBjX2FyZyBhdXRoX2NvbnRleHRfYXJnOworICAgIGMtPmNvbm5lY3RpbmdfZW5kcG9pbnQgPSBOVUxMOworICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKKyAgICBjLT5yZXN1bHQtPnRyYW5zcG9ydCA9IGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoCisgICAgICAgIGV4ZWNfY3R4LCBjLT5hcmdzLmNoYW5uZWxfYXJncywgc2VjdXJlX2VuZHBvaW50LCAxKTsKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhleGVjX2N0eCwgYy0+cmVzdWx0LT50cmFuc3BvcnQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgYXV0aF9jb250ZXh0X2FyZyA9IGdycGNfYXV0aF9jb250ZXh0X3RvX2FyZyhhdXRoX2NvbnRleHQpOworICAgIGFyZ3NfY29weSA9IGdycGNfY2hhbm5lbF9hcmdzX2NvcHlfYW5kX2FkZChjLT5hcmdzLmNoYW5uZWxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1dGhfY29udGV4dF9hcmcsIDEpOworICAgIGMtPnJlc3VsdC0+Y2hhbm5lbF9hcmdzID0gYXJnc19jb3B5OworICB9CisgIG5vdGlmeSA9IGMtPm5vdGlmeTsKKyAgYy0+bm90aWZ5ID0gTlVMTDsKKyAgLyogbG9vayBhdCBjLT5hcmdzIHdoaWNoIGFyZSBjb25uZWN0b3IgYXJncy4gKi8KKyAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOworICBpZiAoYXJnc19jb3B5ICE9IE5VTEwpIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koYXJnc19jb3B5KTsKK30KKworc3RhdGljIHZvaWQgb25faW5pdGlhbF9jb25uZWN0X3N0cmluZ19zZW50KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzKSB7CisgIGNvbm5lY3RvciAqYyA9IGFyZzsKKyAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3Rvcl9kb19oYW5kc2hha2UoZXhlY19jdHgsIGMtPnNlY3VyaXR5X2Nvbm5lY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y29ubmVjdGluZ19lbmRwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lLCBjKTsKK30KKworc3RhdGljIHZvaWQgY29ubmVjdGVkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsIGJvb2wgc3VjY2VzcykgeworICBjb25uZWN0b3IgKmMgPSBhcmc7CisgIGdycGNfY2xvc3VyZSAqbm90aWZ5OworICBncnBjX2VuZHBvaW50ICp0Y3AgPSBjLT5uZXdseV9jb25uZWN0aW5nX2VuZHBvaW50OworICBpZiAodGNwICE9IE5VTEwpIHsKKyAgICBncHJfbXVfbG9jaygmYy0+bXUpOworICAgIEdQUl9BU1NFUlQoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKTsKKyAgICBjLT5jb25uZWN0aW5nX2VuZHBvaW50ID0gdGNwOworICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKKyAgICBpZiAoIUdQUl9TTElDRV9JU19FTVBUWShjLT5hcmdzLmluaXRpYWxfY29ubmVjdF9zdHJpbmcpKSB7CisgICAgICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+aW5pdGlhbF9zdHJpbmdfc2VudCwgb25faW5pdGlhbF9jb25uZWN0X3N0cmluZ19zZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgYyk7CisgICAgICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlcik7CisgICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmYy0+aW5pdGlhbF9zdHJpbmdfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+YXJncy5pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nKTsKKyAgICAgIGdycGNfZW5kcG9pbnRfd3JpdGUoZXhlY19jdHgsIHRjcCwgJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmMtPmluaXRpYWxfc3RyaW5nX3NlbnQpOworICAgIH0gZWxzZSB7CisgICAgICBncnBjX2NoYW5uZWxfc2VjdXJpdHlfY29ubmVjdG9yX2RvX2hhbmRzaGFrZSgKKyAgICAgICAgICBleGVjX2N0eCwgYy0+c2VjdXJpdHlfY29ubmVjdG9yLCB0Y3AsIG9uX3NlY3VyZV9oYW5kc2hha2VfZG9uZSwgYyk7CisgICAgfQorICB9IGVsc2UgeworICAgIG1lbXNldChjLT5yZXN1bHQsIDAsIHNpemVvZigqYy0+cmVzdWx0KSk7CisgICAgbm90aWZ5ID0gYy0+bm90aWZ5OworICAgIGMtPm5vdGlmeSA9IE5VTEw7CisgICAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rvcl9zaHV0ZG93bihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jb25uZWN0b3IgKmNvbikgeworICBjb25uZWN0b3IgKmMgPSAoY29ubmVjdG9yICopY29uOworICBncnBjX2VuZHBvaW50ICplcDsKKyAgZ3ByX211X2xvY2soJmMtPm11KTsKKyAgZXAgPSBjLT5jb25uZWN0aW5nX2VuZHBvaW50OworICBjLT5jb25uZWN0aW5nX2VuZHBvaW50ID0gTlVMTDsKKyAgZ3ByX211X3VubG9jaygmYy0+bXUpOworICBpZiAoZXApIHsKKyAgICBncnBjX2VuZHBvaW50X3NodXRkb3duKGV4ZWNfY3R4LCBlcCk7CisgIH0KK30KKworc3RhdGljIHZvaWQgY29ubmVjdG9yX2Nvbm5lY3QoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2Nvbm5lY3RfaW5fYXJncyAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY29ubmVjdF9vdXRfYXJncyAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpub3RpZnkpIHsKKyAgY29ubmVjdG9yICpjID0gKGNvbm5lY3RvciAqKWNvbjsKKyAgR1BSX0FTU0VSVChjLT5ub3RpZnkgPT0gTlVMTCk7CisgIEdQUl9BU1NFUlQobm90aWZ5LT5jYik7CisgIGMtPm5vdGlmeSA9IG5vdGlmeTsKKyAgYy0+YXJncyA9ICphcmdzOworICBjLT5yZXN1bHQgPSByZXN1bHQ7CisgIGdwcl9tdV9sb2NrKCZjLT5tdSk7CisgIEdQUl9BU1NFUlQoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKTsKKyAgZ3ByX211X3VubG9jaygmYy0+bXUpOworICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+Y29ubmVjdGVkX2Nsb3N1cmUsIGNvbm5lY3RlZCwgYyk7CisgIGdycGNfdGNwX2NsaWVudF9jb25uZWN0KAorICAgICAgZXhlY19jdHgsICZjLT5jb25uZWN0ZWRfY2xvc3VyZSwgJmMtPm5ld2x5X2Nvbm5lY3RpbmdfZW5kcG9pbnQsCisgICAgICBhcmdzLT5pbnRlcmVzdGVkX3BhcnRpZXMsIGFyZ3MtPmFkZHIsIGFyZ3MtPmFkZHJfbGVuLCBhcmdzLT5kZWFkbGluZSk7Cit9CisKK3N0YXRpYyBjb25zdCBncnBjX2Nvbm5lY3Rvcl92dGFibGUgY29ubmVjdG9yX3Z0YWJsZSA9IHsKKyAgICBjb25uZWN0b3JfcmVmLCBjb25uZWN0b3JfdW5yZWYsIGNvbm5lY3Rvcl9zaHV0ZG93biwgY29ubmVjdG9yX2Nvbm5lY3R9OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5IGJhc2U7CisgIGdwcl9yZWZjb3VudCByZWZzOworICBncnBjX2NoYW5uZWxfYXJncyAqbWVyZ2VfYXJnczsKKyAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2VjdXJpdHlfY29ubmVjdG9yOworICBncnBjX2NoYW5uZWwgKm1hc3RlcjsKK30gc3ViY2hhbm5lbF9mYWN0b3J5OworCitzdGF0aWMgdm9pZCBzdWJjaGFubmVsX2ZhY3RvcnlfcmVmKGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5ICpzY2YpIHsKKyAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmID0gKHN1YmNoYW5uZWxfZmFjdG9yeSAqKXNjZjsKKyAgZ3ByX3JlZigmZi0+cmVmcyk7Cit9CisKK3N0YXRpYyB2b2lkIHN1YmNoYW5uZWxfZmFjdG9yeV91bnJlZihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSAqc2NmKSB7CisgIHN1YmNoYW5uZWxfZmFjdG9yeSAqZiA9IChzdWJjaGFubmVsX2ZhY3RvcnkgKilzY2Y7CisgIGlmIChncHJfdW5yZWYoJmYtPnJlZnMpKSB7CisgICAgR1JQQ19TRUNVUklUWV9DT05ORUNUT1JfVU5SRUYoJmYtPnNlY3VyaXR5X2Nvbm5lY3Rvci0+YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViY2hhbm5lbF9mYWN0b3J5Iik7CisgICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKGV4ZWNfY3R4LCBmLT5tYXN0ZXIsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKKyAgICBncnBjX2NoYW5uZWxfYXJnc19kZXN0cm95KGYtPm1lcmdlX2FyZ3MpOworICAgIGdwcl9mcmVlKGYpOworICB9Cit9CisKK3N0YXRpYyBncnBjX3N1YmNoYW5uZWwgKnN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbCgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnkgKnNjZiwKKyAgICBncnBjX3N1YmNoYW5uZWxfYXJncyAqYXJncykgeworICBzdWJjaGFubmVsX2ZhY3RvcnkgKmYgPSAoc3ViY2hhbm5lbF9mYWN0b3J5ICopc2NmOworICBjb25uZWN0b3IgKmMgPSBncHJfbWFsbG9jKHNpemVvZigqYykpOworICBncnBjX2NoYW5uZWxfYXJncyAqZmluYWxfYXJncyA9CisgICAgICBncnBjX2NoYW5uZWxfYXJnc19tZXJnZShhcmdzLT5hcmdzLCBmLT5tZXJnZV9hcmdzKTsKKyAgZ3JwY19zdWJjaGFubmVsICpzOworICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7CisgIGMtPmJhc2UudnRhYmxlID0gJmNvbm5lY3Rvcl92dGFibGU7CisgIGMtPnNlY3VyaXR5X2Nvbm5lY3RvciA9IGYtPnNlY3VyaXR5X2Nvbm5lY3RvcjsKKyAgZ3ByX211X2luaXQoJmMtPm11KTsKKyAgZ3ByX3JlZl9pbml0KCZjLT5yZWZzLCAxKTsKKyAgYXJncy0+YXJncyA9IGZpbmFsX2FyZ3M7CisgIHMgPSBncnBjX3N1YmNoYW5uZWxfY3JlYXRlKGV4ZWNfY3R4LCAmYy0+YmFzZSwgYXJncyk7CisgIGdycGNfY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCAmYy0+YmFzZSk7CisgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZmluYWxfYXJncyk7CisgIHJldHVybiBzOworfQorCitzdGF0aWMgY29uc3QgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdnRhYmxlIHN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGUgPSB7CisgICAgc3ViY2hhbm5lbF9mYWN0b3J5X3JlZiwgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmLAorICAgIHN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbH07CisKKy8qIENyZWF0ZSBhIHNlY3VyZSBjbGllbnQgY2hhbm5lbDoKKyAgIEFzeW5jaHJvbm91c2x5OiAtIHJlc29sdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgLSBjb25uZWN0IHRvIGl0ICh0cnlpbmcgYWx0ZXJuYXRpdmVzIGFzIHByZXNlbnRlZCkKKyAgICAgICAgICAgICAgICAgICAtIHBlcmZvcm0gaGFuZHNoYWtlcyAqLworZ3JwY19jaGFubmVsICpncnBjX3NlY3VyZV9jaGFubmVsX2NyZWF0ZShncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZXNlcnZlZCkgeworICBncnBjX2NoYW5uZWwgKmNoYW5uZWw7CisgIGdycGNfYXJnIGNvbm5lY3Rvcl9hcmc7CisgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzX2NvcHk7CisgIGdycGNfY2hhbm5lbF9hcmdzICpuZXdfYXJnc19mcm9tX2Nvbm5lY3RvcjsKKyAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2VjdXJpdHlfY29ubmVjdG9yOworICBncnBjX3Jlc29sdmVyICpyZXNvbHZlcjsKKyAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmOworICBncnBjX2V4ZWNfY3R4IGV4ZWNfY3R4ID0gR1JQQ19FWEVDX0NUWF9JTklUOworCisgIEdSUENfQVBJX1RSQUNFKAorICAgICAgImdycGNfc2VjdXJlX2NoYW5uZWxfY3JlYXRlKGNyZWRzPSVwLCB0YXJnZXQ9JXMsIGFyZ3M9JXAsICIKKyAgICAgICJyZXNlcnZlZD0lcCkiLAorICAgICAgNCwgKGNyZWRzLCB0YXJnZXQsIGFyZ3MsIHJlc2VydmVkKSk7CisgIEdQUl9BU1NFUlQocmVzZXJ2ZWQgPT0gTlVMTCk7CisKKyAgaWYgKGdycGNfZmluZF9zZWN1cml0eV9jb25uZWN0b3JfaW5fYXJncyhhcmdzKSAhPSBOVUxMKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJDYW5ub3Qgc2V0IHNlY3VyaXR5IGNvbnRleHQgaW4gY2hhbm5lbCBhcmdzLiIpOworICAgIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7CisgICAgcmV0dXJuIGdycGNfbGFtZV9jbGllbnRfY2hhbm5lbF9jcmVhdGUoCisgICAgICAgIHRhcmdldCwgR1JQQ19TVEFUVVNfSU5URVJOQUwsCisgICAgICAgICJTZWN1cml0eSBjb25uZWN0b3IgZXhpc3RzIGluIGNoYW5uZWwgYXJncy4iKTsKKyAgfQorCisgIGlmIChncnBjX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlX3NlY3VyaXR5X2Nvbm5lY3RvcigKKyAgICAgICAgICBjcmVkcywgdGFyZ2V0LCBhcmdzLCAmc2VjdXJpdHlfY29ubmVjdG9yLCAmbmV3X2FyZ3NfZnJvbV9jb25uZWN0b3IpICE9CisgICAgICBHUlBDX1NFQ1VSSVRZX09LKSB7CisgICAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKKyAgICByZXR1cm4gZ3JwY19sYW1lX2NsaWVudF9jaGFubmVsX2NyZWF0ZSgKKyAgICAgICAgdGFyZ2V0LCBHUlBDX1NUQVRVU19JTlRFUk5BTCwgIkZhaWxlZCB0byBjcmVhdGUgc2VjdXJpdHkgY29ubmVjdG9yLiIpOworICB9CisKKyAgY29ubmVjdG9yX2FyZyA9IGdycGNfc2VjdXJpdHlfY29ubmVjdG9yX3RvX2FyZygmc2VjdXJpdHlfY29ubmVjdG9yLT5iYXNlKTsKKyAgYXJnc19jb3B5ID0gZ3JwY19jaGFubmVsX2FyZ3NfY29weV9hbmRfYWRkKAorICAgICAgbmV3X2FyZ3NfZnJvbV9jb25uZWN0b3IgIT0gTlVMTCA/IG5ld19hcmdzX2Zyb21fY29ubmVjdG9yIDogYXJncywKKyAgICAgICZjb25uZWN0b3JfYXJnLCAxKTsKKworICBjaGFubmVsID0gZ3JwY19jaGFubmVsX2NyZWF0ZSgmZXhlY19jdHgsIHRhcmdldCwgYXJnc19jb3B5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NMSUVOVF9DSEFOTkVMLCBOVUxMKTsKKworICBmID0gZ3ByX21hbGxvYyhzaXplb2YoKmYpKTsKKyAgZi0+YmFzZS52dGFibGUgPSAmc3ViY2hhbm5lbF9mYWN0b3J5X3Z0YWJsZTsKKyAgZ3ByX3JlZl9pbml0KCZmLT5yZWZzLCAxKTsKKyAgR1JQQ19TRUNVUklUWV9DT05ORUNUT1JfUkVGKCZzZWN1cml0eV9jb25uZWN0b3ItPmJhc2UsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKKyAgZi0+c2VjdXJpdHlfY29ubmVjdG9yID0gc2VjdXJpdHlfY29ubmVjdG9yOworICBmLT5tZXJnZV9hcmdzID0gZ3JwY19jaGFubmVsX2FyZ3NfY29weShhcmdzX2NvcHkpOworICBmLT5tYXN0ZXIgPSBjaGFubmVsOworICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfUkVGKGNoYW5uZWwsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKKyAgcmVzb2x2ZXIgPSBncnBjX3Jlc29sdmVyX2NyZWF0ZSh0YXJnZXQsICZmLT5iYXNlKTsKKyAgaWYgKHJlc29sdmVyKSB7CisgICAgZ3JwY19jbGllbnRfY2hhbm5lbF9zZXRfcmVzb2x2ZXIoCisgICAgICAgICZleGVjX2N0eCwgZ3JwY19jaGFubmVsX2dldF9jaGFubmVsX3N0YWNrKGNoYW5uZWwpLCByZXNvbHZlcik7CisgICAgR1JQQ19SRVNPTFZFUl9VTlJFRigmZXhlY19jdHgsIHJlc29sdmVyLCAiY3JlYXRlIik7CisgIH0KKyAgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdW5yZWYoJmV4ZWNfY3R4LCAmZi0+YmFzZSk7CisgIEdSUENfU0VDVVJJVFlfQ09OTkVDVE9SX1VOUkVGKCZzZWN1cml0eV9jb25uZWN0b3ItPmJhc2UsICJjaGFubmVsX2NyZWF0ZSIpOworICBncnBjX2NoYW5uZWxfYXJnc19kZXN0cm95KGFyZ3NfY29weSk7CisgIGlmIChuZXdfYXJnc19mcm9tX2Nvbm5lY3RvciAhPSBOVUxMKSB7CisgICAgZ3JwY19jaGFubmVsX2FyZ3NfZGVzdHJveShuZXdfYXJnc19mcm9tX2Nvbm5lY3Rvcik7CisgIH0KKworICBpZiAoIXJlc29sdmVyKSB7CisgICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKCZleGVjX2N0eCwgY2hhbm5lbCwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOworICAgIGNoYW5uZWwgPSBOVUxMOworICB9CisgIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7CisKKyAgcmV0dXJuIGNoYW5uZWw7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvUkVBRE1FLm1kIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzBiYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL1JFQURNRS5tZApAQCAtMCwwICsxIEBACitQbHVnaW4gZm9yIGNyZWF0aW5nIGluc2VjdXJlIHNlcnZlcnMgdXNpbmcgY2h0dHAyCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWNjZmJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYwpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9yZXNvbHZlX2FkZHJlc3MuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvdGNwX3NlcnZlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIgorCitzdGF0aWMgdm9pZCBzZXR1cF90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RyYW5zcG9ydCAqdHJhbnNwb3J0KSB7CisgIGdycGNfc2VydmVyX3NldHVwX3RyYW5zcG9ydChleGVjX2N0eCwgc2VydmVyLCB0cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3NlcnZlcl9nZXRfY2hhbm5lbF9hcmdzKHNlcnZlcikpOworfQorCitzdGF0aWMgdm9pZCBuZXdfdHJhbnNwb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpzZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKnRjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190Y3Bfc2VydmVyX2FjY2VwdG9yICphY2NlcHRvcikgeworICAvKgorICAgKiBCZXdhcmUgdGhhdCB0aGUgY2FsbCB0byBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KCkgaGFzIHRvIGhhcHBlbiBiZWZvcmUKKyAgICogZ3JwY190Y3Bfc2VydmVyX2Rlc3Ryb3koKS4gVGhpcyBpcyBmaW5lIGhlcmUsIGJ1dCBzaW1pbGFyIGNvZGUKKyAgICogYXN5bmNocm9ub3VzbHkgZG9pbmcgYSBoYW5kc2hha2UgaW5zdGVhZCBvZiBjYWxsaW5nIGdycGNfdGNwX3NlcnZlcl9zdGFydCgpCisgICAqIChhcyBpbiBzZXJ2ZXJfc2VjdXJlX2NodHRwMi5jKSBuZWVkcyB0byBhZGQgc3luY2hyb25pemF0aW9uIHRvIGF2b2lkIHRoaXMKKyAgICogY2FzZS4KKyAgICovCisgIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KAorICAgICAgZXhlY19jdHgsIGdycGNfc2VydmVyX2dldF9jaGFubmVsX2FyZ3Moc2VydmVyKSwgdGNwLCAwKTsKKyAgc2V0dXBfdHJhbnNwb3J0KGV4ZWNfY3R4LCBzZXJ2ZXIsIHRyYW5zcG9ydCk7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9zdGFydF9yZWFkaW5nKGV4ZWNfY3R4LCB0cmFuc3BvcnQsIE5VTEwsIDApOworfQorCisvKiBTZXJ2ZXIgY2FsbGJhY2s6IHN0YXJ0IGxpc3RlbmluZyBvbiBvdXIgcG9ydHMgKi8KK3N0YXRpYyB2b2lkIHN0YXJ0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3NlcnZlciAqc2VydmVyLCB2b2lkICp0Y3BwLAorICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsc2V0ICoqcG9sbHNldHMsIHNpemVfdCBwb2xsc2V0X2NvdW50KSB7CisgIGdycGNfdGNwX3NlcnZlciAqdGNwID0gdGNwcDsKKyAgZ3JwY190Y3Bfc2VydmVyX3N0YXJ0KGV4ZWNfY3R4LCB0Y3AsIHBvbGxzZXRzLCBwb2xsc2V0X2NvdW50LCBuZXdfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyKTsKK30KKworLyogU2VydmVyIGNhbGxiYWNrOiBkZXN0cm95IHRoZSB0Y3AgbGlzdGVuZXIgKHNvIHdlIGRvbid0IGdlbmVyYXRlIGZ1cnRoZXIKKyAgIGNhbGxiYWNrcykgKi8KK3N0YXRpYyB2b2lkIGRlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfc2VydmVyICpzZXJ2ZXIsIHZvaWQgKnRjcHAsCisgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqZGVzdHJveV9kb25lKSB7CisgIGdycGNfdGNwX3NlcnZlciAqdGNwID0gdGNwcDsKKyAgZ3JwY190Y3Bfc2VydmVyX3VucmVmKGV4ZWNfY3R4LCB0Y3ApOworICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIGRlc3Ryb3lfZG9uZSwgdHJ1ZSwgTlVMTCk7Cit9CisKK2ludCBncnBjX3NlcnZlcl9hZGRfaW5zZWN1cmVfaHR0cDJfcG9ydChncnBjX3NlcnZlciAqc2VydmVyLCBjb25zdCBjaGFyICphZGRyKSB7CisgIGdycGNfcmVzb2x2ZWRfYWRkcmVzc2VzICpyZXNvbHZlZCA9IE5VTEw7CisgIGdycGNfdGNwX3NlcnZlciAqdGNwID0gTlVMTDsKKyAgc2l6ZV90IGk7CisgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgaW50IHBvcnRfbnVtID0gLTE7CisgIGludCBwb3J0X3RlbXA7CisgIGdycGNfZXhlY19jdHggZXhlY19jdHggPSBHUlBDX0VYRUNfQ1RYX0lOSVQ7CisKKyAgR1JQQ19BUElfVFJBQ0UoImdycGNfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0KHNlcnZlcj0lcCwgYWRkcj0lcykiLCAyLAorICAgICAgICAgICAgICAgICAoc2VydmVyLCBhZGRyKSk7CisKKyAgcmVzb2x2ZWQgPSBncnBjX2Jsb2NraW5nX3Jlc29sdmVfYWRkcmVzcyhhZGRyLCAiaHR0cCIpOworICBpZiAoIXJlc29sdmVkKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHRjcCA9IGdycGNfdGNwX3NlcnZlcl9jcmVhdGUoTlVMTCk7CisgIEdQUl9BU1NFUlQodGNwKTsKKworICBmb3IgKGkgPSAwOyBpIDwgcmVzb2x2ZWQtPm5hZGRyczsgaSsrKSB7CisgICAgcG9ydF90ZW1wID0gZ3JwY190Y3Bfc2VydmVyX2FkZF9wb3J0KAorICAgICAgICB0Y3AsIChzdHJ1Y3Qgc29ja2FkZHIgKikmcmVzb2x2ZWQtPmFkZHJzW2ldLmFkZHIsCisgICAgICAgIHJlc29sdmVkLT5hZGRyc1tpXS5sZW4pOworICAgIGlmIChwb3J0X3RlbXAgPiAwKSB7CisgICAgICBpZiAocG9ydF9udW0gPT0gLTEpIHsKKyAgICAgICAgcG9ydF9udW0gPSBwb3J0X3RlbXA7CisgICAgICB9IGVsc2UgeworICAgICAgICBHUFJfQVNTRVJUKHBvcnRfbnVtID09IHBvcnRfdGVtcCk7CisgICAgICB9CisgICAgICBjb3VudCsrOworICAgIH0KKyAgfQorICBpZiAoY291bnQgPT0gMCkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiTm8gYWRkcmVzcyBhZGRlZCBvdXQgb2YgdG90YWwgJWQgcmVzb2x2ZWQiLAorICAgICAgICAgICAgcmVzb2x2ZWQtPm5hZGRycyk7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBpZiAoY291bnQgIT0gcmVzb2x2ZWQtPm5hZGRycykgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiT25seSAlZCBhZGRyZXNzZXMgYWRkZWQgb3V0IG9mIHRvdGFsICVkIHJlc29sdmVkIiwKKyAgICAgICAgICAgIGNvdW50LCByZXNvbHZlZC0+bmFkZHJzKTsKKyAgfQorICBncnBjX3Jlc29sdmVkX2FkZHJlc3Nlc19kZXN0cm95KHJlc29sdmVkKTsKKworICAvKiBSZWdpc3RlciB3aXRoIHRoZSBzZXJ2ZXIgb25seSB1cG9uIHN1Y2Nlc3MgKi8KKyAgZ3JwY19zZXJ2ZXJfYWRkX2xpc3RlbmVyKCZleGVjX2N0eCwgc2VydmVyLCB0Y3AsIHN0YXJ0LCBkZXN0cm95KTsKKyAgZ290byBkb25lOworCisvKiBFcnJvciBwYXRoOiBjbGVhbnVwIGFuZCByZXR1cm4gKi8KK2Vycm9yOgorICBpZiAocmVzb2x2ZWQpIHsKKyAgICBncnBjX3Jlc29sdmVkX2FkZHJlc3Nlc19kZXN0cm95KHJlc29sdmVkKTsKKyAgfQorICBpZiAodGNwKSB7CisgICAgZ3JwY190Y3Bfc2VydmVyX3VucmVmKCZleGVjX2N0eCwgdGNwKTsKKyAgfQorICBwb3J0X251bSA9IDA7CisKK2RvbmU6CisgIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7CisgIHJldHVybiBwb3J0X251bTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvUkVBRE1FLm1kIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJkYTY5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvUkVBRE1FLm1kCkBAIC0wLDAgKzEgQEAKK1BsdWdpbiBmb3IgY3JlYXRpbmcgc2VjdXJlIHNlcnZlcnMgdXNpbmcgY2h0dHAyCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4MzRmNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvc2VydmVyX3NlY3VyZV9jaHR0cDIuYwpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvcmVzb2x2ZV9hZGRyZXNzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3RjcF9zZXJ2ZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc2VjdXJpdHkvYXV0aF9maWx0ZXJzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCisKK3R5cGVkZWYgc3RydWN0IGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSB7CisgIGdycGNfc2VydmVyICpzZXJ2ZXI7CisgIGdycGNfdGNwX3NlcnZlciAqdGNwOworICBncnBjX3NlcnZlcl9zZWN1cml0eV9jb25uZWN0b3IgKnNjOworICBncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqY3JlZHM7CisgIGludCBpc19zaHV0ZG93bjsKKyAgZ3ByX211IG11OworICBncHJfcmVmY291bnQgcmVmY291bnQ7CisgIGdycGNfY2xvc3VyZSBkZXN0cm95X2Nsb3N1cmU7CisgIGdycGNfY2xvc3VyZSAqZGVzdHJveV9jYWxsYmFjazsKK30gZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlOworCitzdGF0aWMgdm9pZCBzdGF0ZV9yZWYoZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlICpzdGF0ZSkgeworICBncHJfcmVmKCZzdGF0ZS0+cmVmY291bnQpOworfQorCitzdGF0aWMgdm9pZCBzdGF0ZV91bnJlZihncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlKSB7CisgIGlmIChncHJfdW5yZWYoJnN0YXRlLT5yZWZjb3VudCkpIHsKKyAgICAvKiBlbnN1cmUgYWxsIHRocmVhZHMgaGF2ZSB1bmxvY2tlZCAqLworICAgIGdwcl9tdV9sb2NrKCZzdGF0ZS0+bXUpOworICAgIGdwcl9tdV91bmxvY2soJnN0YXRlLT5tdSk7CisgICAgLyogY2xlYW4gdXAgKi8KKyAgICBHUlBDX1NFQ1VSSVRZX0NPTk5FQ1RPUl9VTlJFRigmc3RhdGUtPnNjLT5iYXNlLCAic2VydmVyIik7CisgICAgZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHNfdW5yZWYoc3RhdGUtPmNyZWRzKTsKKyAgICBncHJfZnJlZShzdGF0ZSk7CisgIH0KK30KKworc3RhdGljIHZvaWQgc2V0dXBfdHJhbnNwb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpzdGF0ZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2F1dGhfY29udGV4dCAqYXV0aF9jb250ZXh0KSB7CisgIGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUgPSBzdGF0ZXA7CisgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzX2NvcHk7CisgIGdycGNfYXJnIGFyZ3NfdG9fYWRkWzJdOworICBhcmdzX3RvX2FkZFswXSA9IGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3RvX2FyZyhzdGF0ZS0+Y3JlZHMpOworICBhcmdzX3RvX2FkZFsxXSA9IGdycGNfYXV0aF9jb250ZXh0X3RvX2FyZyhhdXRoX2NvbnRleHQpOworICBhcmdzX2NvcHkgPSBncnBjX2NoYW5uZWxfYXJnc19jb3B5X2FuZF9hZGQoCisgICAgICBncnBjX3NlcnZlcl9nZXRfY2hhbm5lbF9hcmdzKHN0YXRlLT5zZXJ2ZXIpLCBhcmdzX3RvX2FkZCwKKyAgICAgIEdQUl9BUlJBWV9TSVpFKGFyZ3NfdG9fYWRkKSk7CisgIGdycGNfc2VydmVyX3NldHVwX3RyYW5zcG9ydChleGVjX2N0eCwgc3RhdGUtPnNlcnZlciwgdHJhbnNwb3J0LCBhcmdzX2NvcHkpOworICBncnBjX2NoYW5uZWxfYXJnc19kZXN0cm95KGFyZ3NfY29weSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uX3NlY3VyZV9oYW5kc2hha2VfZG9uZShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqc3RhdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc2VjdXJpdHlfc3RhdHVzIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2VuZHBvaW50ICpzZWN1cmVfZW5kcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19hdXRoX2NvbnRleHQgKmF1dGhfY29udGV4dCkgeworICBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gc3RhdGVwOworICBncnBjX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworICBpZiAoc3RhdHVzID09IEdSUENfU0VDVVJJVFlfT0spIHsKKyAgICBpZiAoc2VjdXJlX2VuZHBvaW50KSB7CisgICAgICBncHJfbXVfbG9jaygmc3RhdGUtPm11KTsKKyAgICAgIGlmICghc3RhdGUtPmlzX3NodXRkb3duKSB7CisgICAgICAgIHRyYW5zcG9ydCA9IGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoCisgICAgICAgICAgICBleGVjX2N0eCwgZ3JwY19zZXJ2ZXJfZ2V0X2NoYW5uZWxfYXJncyhzdGF0ZS0+c2VydmVyKSwKKyAgICAgICAgICAgIHNlY3VyZV9lbmRwb2ludCwgMCk7CisgICAgICAgIHNldHVwX3RyYW5zcG9ydChleGVjX2N0eCwgc3RhdGUsIHRyYW5zcG9ydCwgYXV0aF9jb250ZXh0KTsKKyAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3N0YXJ0X3JlYWRpbmcoZXhlY19jdHgsIHRyYW5zcG9ydCwgTlVMTCwgMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvKiBXZSBuZWVkIHRvIGNvbnN1bWUgdGhpcyBoZXJlLCBiZWNhdXNlIHRoZSBzZXJ2ZXIgbWF5IGFscmVhZHkgaGF2ZQorICAgICAgICAgKiBnb25lIGF3YXkuICovCisgICAgICAgIGdycGNfZW5kcG9pbnRfZGVzdHJveShleGVjX2N0eCwgc2VjdXJlX2VuZHBvaW50KTsKKyAgICAgIH0KKyAgICAgIGdwcl9tdV91bmxvY2soJnN0YXRlLT5tdSk7CisgICAgfQorICB9IGVsc2UgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiU2VjdXJlIHRyYW5zcG9ydCBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7CisgIH0KKyAgc3RhdGVfdW5yZWYoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZCBvbl9hY2NlcHQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnN0YXRlcCwgZ3JwY19lbmRwb2ludCAqdGNwLAorICAgICAgICAgICAgICAgICAgICAgIGdycGNfdGNwX3NlcnZlcl9hY2NlcHRvciAqYWNjZXB0b3IpIHsKKyAgZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlICpzdGF0ZSA9IHN0YXRlcDsKKyAgc3RhdGVfcmVmKHN0YXRlKTsKKyAgZ3JwY19zZXJ2ZXJfc2VjdXJpdHlfY29ubmVjdG9yX2RvX2hhbmRzaGFrZSgKKyAgICAgIGV4ZWNfY3R4LCBzdGF0ZS0+c2MsIGFjY2VwdG9yLCB0Y3AsIG9uX3NlY3VyZV9oYW5kc2hha2VfZG9uZSwgc3RhdGUpOworfQorCisvKiBTZXJ2ZXIgY2FsbGJhY2s6IHN0YXJ0IGxpc3RlbmluZyBvbiBvdXIgcG9ydHMgKi8KK3N0YXRpYyB2b2lkIHN0YXJ0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3NlcnZlciAqc2VydmVyLCB2b2lkICpzdGF0ZXAsCisgICAgICAgICAgICAgICAgICBncnBjX3BvbGxzZXQgKipwb2xsc2V0cywgc2l6ZV90IHBvbGxzZXRfY291bnQpIHsKKyAgZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlICpzdGF0ZSA9IHN0YXRlcDsKKyAgZ3JwY190Y3Bfc2VydmVyX3N0YXJ0KGV4ZWNfY3R4LCBzdGF0ZS0+dGNwLCBwb2xsc2V0cywgcG9sbHNldF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uX2FjY2VwdCwgc3RhdGUpOworfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X2RvbmUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnN0YXRlcCwgYm9vbCBzdWNjZXNzKSB7CisgIGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUgPSBzdGF0ZXA7CisgIGlmIChzdGF0ZS0+ZGVzdHJveV9jYWxsYmFjayAhPSBOVUxMKSB7CisgICAgc3RhdGUtPmRlc3Ryb3lfY2FsbGJhY2stPmNiKGV4ZWNfY3R4LCBzdGF0ZS0+ZGVzdHJveV9jYWxsYmFjay0+Y2JfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKTsKKyAgfQorICBncnBjX3NlcnZlcl9zZWN1cml0eV9jb25uZWN0b3Jfc2h1dGRvd24oZXhlY19jdHgsIHN0YXRlLT5zYyk7CisgIHN0YXRlX3VucmVmKHN0YXRlKTsKK30KKworLyogU2VydmVyIGNhbGxiYWNrOiBkZXN0cm95IHRoZSB0Y3AgbGlzdGVuZXIgKHNvIHdlIGRvbid0IGdlbmVyYXRlIGZ1cnRoZXIKKyAgIGNhbGxiYWNrcykgKi8KK3N0YXRpYyB2b2lkIGRlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfc2VydmVyICpzZXJ2ZXIsIHZvaWQgKnN0YXRlcCwKKyAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpjYWxsYmFjaykgeworICBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gc3RhdGVwOworICBncnBjX3RjcF9zZXJ2ZXIgKnRjcDsKKyAgZ3ByX211X2xvY2soJnN0YXRlLT5tdSk7CisgIHN0YXRlLT5pc19zaHV0ZG93biA9IDE7CisgIHN0YXRlLT5kZXN0cm95X2NhbGxiYWNrID0gY2FsbGJhY2s7CisgIHRjcCA9IHN0YXRlLT50Y3A7CisgIGdwcl9tdV91bmxvY2soJnN0YXRlLT5tdSk7CisgIGdycGNfdGNwX3NlcnZlcl91bnJlZihleGVjX2N0eCwgdGNwKTsKK30KKworaW50IGdycGNfc2VydmVyX2FkZF9zZWN1cmVfaHR0cDJfcG9ydChncnBjX3NlcnZlciAqc2VydmVyLCBjb25zdCBjaGFyICphZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqY3JlZHMpIHsKKyAgZ3JwY19yZXNvbHZlZF9hZGRyZXNzZXMgKnJlc29sdmVkID0gTlVMTDsKKyAgZ3JwY190Y3Bfc2VydmVyICp0Y3AgPSBOVUxMOworICBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gTlVMTDsKKyAgc2l6ZV90IGk7CisgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgaW50IHBvcnRfbnVtID0gLTE7CisgIGludCBwb3J0X3RlbXA7CisgIGdycGNfc2VjdXJpdHlfc3RhdHVzIHN0YXR1cyA9IEdSUENfU0VDVVJJVFlfRVJST1I7CisgIGdycGNfc2VydmVyX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2MgPSBOVUxMOworICBncnBjX2V4ZWNfY3R4IGV4ZWNfY3R4ID0gR1JQQ19FWEVDX0NUWF9JTklUOworCisgIEdSUENfQVBJX1RSQUNFKAorICAgICAgImdycGNfc2VydmVyX2FkZF9zZWN1cmVfaHR0cDJfcG9ydCgiCisgICAgICAic2VydmVyPSVwLCBhZGRyPSVzLCBjcmVkcz0lcCkiLAorICAgICAgMywgKHNlcnZlciwgYWRkciwgY3JlZHMpKTsKKworICAvKiBjcmVhdGUgc2VjdXJpdHkgY29udGV4dCAqLworICBpZiAoY3JlZHMgPT0gTlVMTCkgZ290byBlcnJvcjsKKyAgc3RhdHVzID0gZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHNfY3JlYXRlX3NlY3VyaXR5X2Nvbm5lY3RvcihjcmVkcywgJnNjKTsKKyAgaWYgKHN0YXR1cyAhPSBHUlBDX1NFQ1VSSVRZX09LKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsCisgICAgICAgICAgICAiVW5hYmxlIHRvIGNyZWF0ZSBzZWN1cmUgc2VydmVyIHdpdGggY3JlZGVudGlhbHMgb2YgdHlwZSAlcy4iLAorICAgICAgICAgICAgY3JlZHMtPnR5cGUpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgc2MtPmNoYW5uZWxfYXJncyA9IGdycGNfc2VydmVyX2dldF9jaGFubmVsX2FyZ3Moc2VydmVyKTsKKworICAvKiByZXNvbHZlIGFkZHJlc3MgKi8KKyAgcmVzb2x2ZWQgPSBncnBjX2Jsb2NraW5nX3Jlc29sdmVfYWRkcmVzcyhhZGRyLCAiaHR0cHMiKTsKKyAgaWYgKCFyZXNvbHZlZCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgc3RhdGUgPSBncHJfbWFsbG9jKHNpemVvZigqc3RhdGUpKTsKKyAgbWVtc2V0KHN0YXRlLCAwLCBzaXplb2YoKnN0YXRlKSk7CisgIGdycGNfY2xvc3VyZV9pbml0KCZzdGF0ZS0+ZGVzdHJveV9jbG9zdXJlLCBkZXN0cm95X2RvbmUsIHN0YXRlKTsKKyAgdGNwID0gZ3JwY190Y3Bfc2VydmVyX2NyZWF0ZSgmc3RhdGUtPmRlc3Ryb3lfY2xvc3VyZSk7CisgIGlmICghdGNwKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHN0YXRlLT5zZXJ2ZXIgPSBzZXJ2ZXI7CisgIHN0YXRlLT50Y3AgPSB0Y3A7CisgIHN0YXRlLT5zYyA9IHNjOworICBzdGF0ZS0+Y3JlZHMgPSBncnBjX3NlcnZlcl9jcmVkZW50aWFsc19yZWYoY3JlZHMpOworICBzdGF0ZS0+aXNfc2h1dGRvd24gPSAwOworICBncHJfbXVfaW5pdCgmc3RhdGUtPm11KTsKKyAgZ3ByX3JlZl9pbml0KCZzdGF0ZS0+cmVmY291bnQsIDEpOworCisgIGZvciAoaSA9IDA7IGkgPCByZXNvbHZlZC0+bmFkZHJzOyBpKyspIHsKKyAgICBwb3J0X3RlbXAgPSBncnBjX3RjcF9zZXJ2ZXJfYWRkX3BvcnQoCisgICAgICAgIHRjcCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZXNvbHZlZC0+YWRkcnNbaV0uYWRkciwKKyAgICAgICAgcmVzb2x2ZWQtPmFkZHJzW2ldLmxlbik7CisgICAgaWYgKHBvcnRfdGVtcCA+IDApIHsKKyAgICAgIGlmIChwb3J0X251bSA9PSAtMSkgeworICAgICAgICBwb3J0X251bSA9IHBvcnRfdGVtcDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdQUl9BU1NFUlQocG9ydF9udW0gPT0gcG9ydF90ZW1wKTsKKyAgICAgIH0KKyAgICAgIGNvdW50Kys7CisgICAgfQorICB9CisgIGlmIChjb3VudCA9PSAwKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJObyBhZGRyZXNzIGFkZGVkIG91dCBvZiB0b3RhbCAlZCByZXNvbHZlZCIsCisgICAgICAgICAgICByZXNvbHZlZC0+bmFkZHJzKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIGlmIChjb3VudCAhPSByZXNvbHZlZC0+bmFkZHJzKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJPbmx5ICVkIGFkZHJlc3NlcyBhZGRlZCBvdXQgb2YgdG90YWwgJWQgcmVzb2x2ZWQiLAorICAgICAgICAgICAgY291bnQsIHJlc29sdmVkLT5uYWRkcnMpOworICAgIC8qIGlmIGl0J3MgYW4gZXJyb3IsIGRvbid0IHdlIHdhbnQgdG8gZ290byBlcnJvcjsgaGVyZSA/ICovCisgIH0KKyAgZ3JwY19yZXNvbHZlZF9hZGRyZXNzZXNfZGVzdHJveShyZXNvbHZlZCk7CisKKyAgLyogUmVnaXN0ZXIgd2l0aCB0aGUgc2VydmVyIG9ubHkgdXBvbiBzdWNjZXNzICovCisgIGdycGNfc2VydmVyX2FkZF9saXN0ZW5lcigmZXhlY19jdHgsIHNlcnZlciwgc3RhdGUsIHN0YXJ0LCBkZXN0cm95KTsKKworICBncnBjX2V4ZWNfY3R4X2ZpbmlzaCgmZXhlY19jdHgpOworICByZXR1cm4gcG9ydF9udW07CisKKy8qIEVycm9yIHBhdGg6IGNsZWFudXAgYW5kIHJldHVybiAqLworZXJyb3I6CisgIGlmIChyZXNvbHZlZCkgeworICAgIGdycGNfcmVzb2x2ZWRfYWRkcmVzc2VzX2Rlc3Ryb3kocmVzb2x2ZWQpOworICB9CisgIGlmICh0Y3ApIHsKKyAgICBncnBjX3RjcF9zZXJ2ZXJfdW5yZWYoJmV4ZWNfY3R4LCB0Y3ApOworICB9IGVsc2UgeworICAgIGlmIChzYykgeworICAgICAgR1JQQ19TRUNVUklUWV9DT05ORUNUT1JfVU5SRUYoJnNjLT5iYXNlLCAic2VydmVyIik7CisgICAgfQorICAgIGlmIChzdGF0ZSkgeworICAgICAgZ3ByX2ZyZWUoc3RhdGUpOworICAgIH0KKyAgfQorICBncnBjX2V4ZWNfY3R4X2ZpbmlzaCgmZXhlY19jdHgpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9SRUFETUUubWQgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ODRlNTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNCBAQAorY2h0dHAyIHRyYW5zcG9ydCBwbHVnaW4gLSBpbXBsZW1lbnRzIGdycGMgb3ZlciBodHRwMgorCitVc2VkIGJ5IGNodHRwMi97Y2xpZW50LHNlcnZlcn0ve2luc2VjdXJlLHNlY3VyZX0gcGx1Z2lucyB0byBpbXBsZW1lbnQgbW9zdCBvZgordGhlaXIgZnVuY3Rpb25hbGl0eQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkwMTkwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKworLyogaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSAqLworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN1cHBvcnRlZF92ZXJzaW9uc1tdID0geyJoMiJ9OworCitpbnQgZ3JwY19jaHR0cDJfaXNfYWxwbl92ZXJzaW9uX3N1cHBvcnRlZChjb25zdCBjaGFyICp2ZXJzaW9uLCBzaXplX3Qgc2l6ZSkgeworICBzaXplX3QgaTsKKyAgZm9yIChpID0gMDsgaSA8IEdQUl9BUlJBWV9TSVpFKHN1cHBvcnRlZF92ZXJzaW9ucyk7IGkrKykgeworICAgIGlmICghc3RybmNtcCh2ZXJzaW9uLCBzdXBwb3J0ZWRfdmVyc2lvbnNbaV0sIHNpemUpKSByZXR1cm4gMTsKKyAgfQorICByZXR1cm4gMDsKK30KKworc2l6ZV90IGdycGNfY2h0dHAyX251bV9hbHBuX3ZlcnNpb25zKHZvaWQpIHsKKyAgcmV0dXJuIEdQUl9BUlJBWV9TSVpFKHN1cHBvcnRlZF92ZXJzaW9ucyk7Cit9CisKK2NvbnN0IGNoYXIgKmdycGNfY2h0dHAyX2dldF9hbHBuX3ZlcnNpb25faW5kZXgoc2l6ZV90IGkpIHsKKyAgR1BSX0FTU0VSVChpIDwgR1BSX0FSUkFZX1NJWkUoc3VwcG9ydGVkX3ZlcnNpb25zKSk7CisgIHJldHVybiBzdXBwb3J0ZWRfdmVyc2lvbnNbaV07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5oIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDg0M2ExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaApAQCAtMCwwICsxLDQ5IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfQUxQTl9ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfQUxQTl9ICisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyogUmV0dW5zIDEgaWYgdGhlIHZlcnNpb24gaXMgc3VwcG9ydGVkLCAwIG90aGVyd2lzZS4gKi8KK2ludCBncnBjX2NodHRwMl9pc19hbHBuX3ZlcnNpb25fc3VwcG9ydGVkKGNvbnN0IGNoYXIgKnZlcnNpb24sIHNpemVfdCBzaXplKTsKKworLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHByb3RvY29sIHZlcnNpb25zIHRvIGFkdmVydGlzZSAqLworc2l6ZV90IGdycGNfY2h0dHAyX251bV9hbHBuX3ZlcnNpb25zKHZvaWQpOworCisvKiBSZXR1cm5zIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGF0IGluZGV4IGkgKDAgPD0gaSA8CisgKiBncnBjX2NodHRwMl9udW1fYWxwbl92ZXJzaW9ucygpKSAqLworY29uc3QgY2hhciAqZ3JwY19jaHR0cDJfZ2V0X2FscG5fdmVyc2lvbl9pbmRleChzaXplX3QgaSk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0FMUE5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzlmOTljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmMKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5oIgorCitzdGF0aWMgY29uc3QgY2hhciBhbHBoYWJldFtdID0KKyAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgdWludDE2X3QgYml0czsKKyAgdWludDhfdCBsZW5ndGg7Cit9IGI2NF9odWZmX3N5bTsKKworc3RhdGljIGNvbnN0IGI2NF9odWZmX3N5bSBodWZmX2FscGhhYmV0WzY0XSA9IHsKKyAgICB7MHgyMSwgNn0sIHsweDVkLCA3fSwgezB4NWUsIDd9LCAgIHsweDVmLCA3fSwgezB4NjAsIDd9LCB7MHg2MSwgN30sCisgICAgezB4NjIsIDd9LCB7MHg2MywgN30sIHsweDY0LCA3fSwgICB7MHg2NSwgN30sIHsweDY2LCA3fSwgezB4NjcsIDd9LAorICAgIHsweDY4LCA3fSwgezB4NjksIDd9LCB7MHg2YSwgN30sICAgezB4NmIsIDd9LCB7MHg2YywgN30sIHsweDZkLCA3fSwKKyAgICB7MHg2ZSwgN30sIHsweDZmLCA3fSwgezB4NzAsIDd9LCAgIHsweDcxLCA3fSwgezB4NzIsIDd9LCB7MHhmYywgOH0sCisgICAgezB4NzMsIDd9LCB7MHhmZCwgOH0sIHsweDMsIDV9LCAgICB7MHgyMywgNn0sIHsweDQsIDV9LCAgezB4MjQsIDZ9LAorICAgIHsweDUsIDV9LCAgezB4MjUsIDZ9LCB7MHgyNiwgNn0sICAgezB4MjcsIDZ9LCB7MHg2LCA1fSwgIHsweDc0LCA3fSwKKyAgICB7MHg3NSwgN30sIHsweDI4LCA2fSwgezB4MjksIDZ9LCAgIHsweDJhLCA2fSwgezB4NywgNX0sICB7MHgyYiwgNn0sCisgICAgezB4NzYsIDd9LCB7MHgyYywgNn0sIHsweDgsIDV9LCAgICB7MHg5LCA1fSwgIHsweDJkLCA2fSwgezB4NzcsIDd9LAorICAgIHsweDc4LCA3fSwgezB4NzksIDd9LCB7MHg3YSwgN30sICAgezB4N2IsIDd9LCB7MHgwLCA1fSwgIHsweDEsIDV9LAorICAgIHsweDIsIDV9LCAgezB4MTksIDZ9LCB7MHgxYSwgNn0sICAgezB4MWIsIDZ9LCB7MHgxYywgNn0sIHsweDFkLCA2fSwKKyAgICB7MHgxZSwgNn0sIHsweDFmLCA2fSwgezB4N2ZiLCAxMX0sIHsweDE4LCA2fX07CisKK3N0YXRpYyBjb25zdCB1aW50OF90IHRhaWxfeHRyYVszXSA9IHswLCAyLCAzfTsKKworZ3ByX3NsaWNlIGdycGNfY2h0dHAyX2Jhc2U2NF9lbmNvZGUoZ3ByX3NsaWNlIGlucHV0KSB7CisgIHNpemVfdCBpbnB1dF9sZW5ndGggPSBHUFJfU0xJQ0VfTEVOR1RIKGlucHV0KTsKKyAgc2l6ZV90IGlucHV0X3RyaXBsZXRzID0gaW5wdXRfbGVuZ3RoIC8gMzsKKyAgc2l6ZV90IHRhaWxfY2FzZSA9IGlucHV0X2xlbmd0aCAlIDM7CisgIHNpemVfdCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfdHJpcGxldHMgKiA0ICsgdGFpbF94dHJhW3RhaWxfY2FzZV07CisgIGdwcl9zbGljZSBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKG91dHB1dF9sZW5ndGgpOworICB1aW50OF90ICppbiA9IEdQUl9TTElDRV9TVEFSVF9QVFIoaW5wdXQpOworICBjaGFyICpvdXQgPSAoY2hhciAqKUdQUl9TTElDRV9TVEFSVF9QVFIob3V0cHV0KTsKKyAgc2l6ZV90IGk7CisKKyAgLyogZW5jb2RlIGZ1bGwgdHJpcGxldHMgKi8KKyAgZm9yIChpID0gMDsgaSA8IGlucHV0X3RyaXBsZXRzOyBpKyspIHsKKyAgICBvdXRbMF0gPSBhbHBoYWJldFtpblswXSA+PiAyXTsKKyAgICBvdXRbMV0gPSBhbHBoYWJldFsoKGluWzBdICYgMHgzKSA8PCA0KSB8IChpblsxXSA+PiA0KV07CisgICAgb3V0WzJdID0gYWxwaGFiZXRbKChpblsxXSAmIDB4ZikgPDwgMikgfCAoaW5bMl0gPj4gNildOworICAgIG91dFszXSA9IGFscGhhYmV0W2luWzJdICYgMHgzZl07CisgICAgb3V0ICs9IDQ7CisgICAgaW4gKz0gMzsKKyAgfQorCisgIC8qIGVuY29kZSB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgIHN3aXRjaCAodGFpbF9jYXNlKSB7CisgICAgY2FzZSAwOgorICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgb3V0WzBdID0gYWxwaGFiZXRbaW5bMF0gPj4gMl07CisgICAgICBvdXRbMV0gPSBhbHBoYWJldFsoaW5bMF0gJiAweDMpIDw8IDRdOworICAgICAgb3V0ICs9IDI7CisgICAgICBpbiArPSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgb3V0WzBdID0gYWxwaGFiZXRbaW5bMF0gPj4gMl07CisgICAgICBvdXRbMV0gPSBhbHBoYWJldFsoKGluWzBdICYgMHgzKSA8PCA0KSB8IChpblsxXSA+PiA0KV07CisgICAgICBvdXRbMl0gPSBhbHBoYWJldFsoaW5bMV0gJiAweGYpIDw8IDJdOworICAgICAgb3V0ICs9IDM7CisgICAgICBpbiArPSAyOworICAgICAgYnJlYWs7CisgIH0KKworICBHUFJfQVNTRVJUKG91dCA9PSAoY2hhciAqKUdQUl9TTElDRV9FTkRfUFRSKG91dHB1dCkpOworICBHUFJfQVNTRVJUKGluID09IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KSk7CisgIHJldHVybiBvdXRwdXQ7Cit9CisKK2dwcl9zbGljZSBncnBjX2NodHRwMl9odWZmbWFuX2NvbXByZXNzKGdwcl9zbGljZSBpbnB1dCkgeworICBzaXplX3QgbmJpdHM7CisgIHVpbnQ4X3QgKmluOworICB1aW50OF90ICpvdXQ7CisgIGdwcl9zbGljZSBvdXRwdXQ7CisgIHVpbnQzMl90IHRlbXAgPSAwOworICB1aW50MzJfdCB0ZW1wX2xlbmd0aCA9IDA7CisKKyAgbmJpdHMgPSAwOworICBmb3IgKGluID0gR1BSX1NMSUNFX1NUQVJUX1BUUihpbnB1dCk7IGluICE9IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KTsgKytpbikgeworICAgIG5iaXRzICs9IGdycGNfY2h0dHAyX2h1ZmZzeW1zWyppbl0ubGVuZ3RoOworICB9CisKKyAgb3V0cHV0ID0gZ3ByX3NsaWNlX21hbGxvYyhuYml0cyAvIDggKyAobmJpdHMgJSA4ICE9IDApKTsKKyAgb3V0ID0gR1BSX1NMSUNFX1NUQVJUX1BUUihvdXRwdXQpOworICBmb3IgKGluID0gR1BSX1NMSUNFX1NUQVJUX1BUUihpbnB1dCk7IGluICE9IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KTsgKytpbikgeworICAgIGludCBzeW0gPSAqaW47CisgICAgdGVtcCA8PD0gZ3JwY19jaHR0cDJfaHVmZnN5bXNbc3ltXS5sZW5ndGg7CisgICAgdGVtcCB8PSBncnBjX2NodHRwMl9odWZmc3ltc1tzeW1dLmJpdHM7CisgICAgdGVtcF9sZW5ndGggKz0gZ3JwY19jaHR0cDJfaHVmZnN5bXNbc3ltXS5sZW5ndGg7CisKKyAgICB3aGlsZSAodGVtcF9sZW5ndGggPiA4KSB7CisgICAgICB0ZW1wX2xlbmd0aCAtPSA4OworICAgICAgKm91dCsrID0gKHVpbnQ4X3QpKHRlbXAgPj4gdGVtcF9sZW5ndGgpOworICAgIH0KKyAgfQorCisgIGlmICh0ZW1wX2xlbmd0aCkgeworICAgIC8qIE5COiB0aGUgZm9sbG93aW5nIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb24gbmVlZHMgdG8gYmUgaW4gaXRzCisgICAgICogZXhwYW5kZWQgZm9ybSBkdWUgdG8gdGhlICJpbnRlZ3JhbCBwcm9tb3Rpb24iIHBlcmZvcm1lZCAoc2VlIHNlY3Rpb24KKyAgICAgKiAzLjIuMS4xIG9mIHRoZSBDODkgZHJhZnQgc3RhbmRhcmQpLiBBIGNhc3QgdG8gdGhlIHNtYWxsZXIgY29udGFpbmVyIHR5cGUKKyAgICAgKiBpcyB0aGVuIHJlcXVpcmVkIHRvIGF2b2lkIHRoZSBjb21waWxlciB3YXJuaW5nICovCisgICAgKm91dCsrID0gKHVpbnQ4X3QpKCh1aW50OF90KSh0ZW1wIDw8ICg4dSAtIHRlbXBfbGVuZ3RoKSkgfAorICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCkoMHhmZnUgPj4gdGVtcF9sZW5ndGgpKTsKKyAgfQorCisgIEdQUl9BU1NFUlQob3V0ID09IEdQUl9TTElDRV9FTkRfUFRSKG91dHB1dCkpOworCisgIHJldHVybiBvdXRwdXQ7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgdWludDMyX3QgdGVtcDsKKyAgdWludDMyX3QgdGVtcF9sZW5ndGg7CisgIHVpbnQ4X3QgKm91dDsKK30gaHVmZl9vdXQ7CisKK3N0YXRpYyB2b2lkIGVuY19mbHVzaF9zb21lKGh1ZmZfb3V0ICpvdXQpIHsKKyAgd2hpbGUgKG91dC0+dGVtcF9sZW5ndGggPiA4KSB7CisgICAgb3V0LT50ZW1wX2xlbmd0aCAtPSA4OworICAgICpvdXQtPm91dCsrID0gKHVpbnQ4X3QpKG91dC0+dGVtcCA+PiBvdXQtPnRlbXBfbGVuZ3RoKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBlbmNfYWRkMihodWZmX291dCAqb3V0LCB1aW50OF90IGEsIHVpbnQ4X3QgYikgeworICBiNjRfaHVmZl9zeW0gc2EgPSBodWZmX2FscGhhYmV0W2FdOworICBiNjRfaHVmZl9zeW0gc2IgPSBodWZmX2FscGhhYmV0W2JdOworICBvdXQtPnRlbXAgPSAob3V0LT50ZW1wIDw8IChzYS5sZW5ndGggKyBzYi5sZW5ndGgpKSB8CisgICAgICAgICAgICAgICgodWludDMyX3Qpc2EuYml0cyA8PCBzYi5sZW5ndGgpIHwgc2IuYml0czsKKyAgb3V0LT50ZW1wX2xlbmd0aCArPSAodWludDMyX3Qpc2EubGVuZ3RoICsgKHVpbnQzMl90KXNiLmxlbmd0aDsKKyAgZW5jX2ZsdXNoX3NvbWUob3V0KTsKK30KKworc3RhdGljIHZvaWQgZW5jX2FkZDEoaHVmZl9vdXQgKm91dCwgdWludDhfdCBhKSB7CisgIGI2NF9odWZmX3N5bSBzYSA9IGh1ZmZfYWxwaGFiZXRbYV07CisgIG91dC0+dGVtcCA9IChvdXQtPnRlbXAgPDwgc2EubGVuZ3RoKSB8IHNhLmJpdHM7CisgIG91dC0+dGVtcF9sZW5ndGggKz0gc2EubGVuZ3RoOworICBlbmNfZmx1c2hfc29tZShvdXQpOworfQorCitncHJfc2xpY2UgZ3JwY19jaHR0cDJfYmFzZTY0X2VuY29kZV9hbmRfaHVmZm1hbl9jb21wcmVzcyhncHJfc2xpY2UgaW5wdXQpIHsKKyAgc2l6ZV90IGlucHV0X2xlbmd0aCA9IEdQUl9TTElDRV9MRU5HVEgoaW5wdXQpOworICBzaXplX3QgaW5wdXRfdHJpcGxldHMgPSBpbnB1dF9sZW5ndGggLyAzOworICBzaXplX3QgdGFpbF9jYXNlID0gaW5wdXRfbGVuZ3RoICUgMzsKKyAgc2l6ZV90IG91dHB1dF9zeW1zID0gaW5wdXRfdHJpcGxldHMgKiA0ICsgdGFpbF94dHJhW3RhaWxfY2FzZV07CisgIHNpemVfdCBtYXhfb3V0cHV0X2JpdHMgPSAxMSAqIG91dHB1dF9zeW1zOworICBzaXplX3QgbWF4X291dHB1dF9sZW5ndGggPSBtYXhfb3V0cHV0X2JpdHMgLyA4ICsgKG1heF9vdXRwdXRfYml0cyAlIDggIT0gMCk7CisgIGdwcl9zbGljZSBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKG1heF9vdXRwdXRfbGVuZ3RoKTsKKyAgdWludDhfdCAqaW4gPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKGlucHV0KTsKKyAgdWludDhfdCAqc3RhcnRfb3V0ID0gR1BSX1NMSUNFX1NUQVJUX1BUUihvdXRwdXQpOworICBodWZmX291dCBvdXQ7CisgIHNpemVfdCBpOworCisgIG91dC50ZW1wID0gMDsKKyAgb3V0LnRlbXBfbGVuZ3RoID0gMDsKKyAgb3V0Lm91dCA9IHN0YXJ0X291dDsKKworICAvKiBlbmNvZGUgZnVsbCB0cmlwbGV0cyAqLworICBmb3IgKGkgPSAwOyBpIDwgaW5wdXRfdHJpcGxldHM7IGkrKykgeworICAgIGVuY19hZGQyKCZvdXQsIGluWzBdID4+IDIsICh1aW50OF90KSgoaW5bMF0gJiAweDMpIDw8IDQpIHwgKGluWzFdID4+IDQpKTsKKyAgICBlbmNfYWRkMigmb3V0LCAodWludDhfdCkoKGluWzFdICYgMHhmKSA8PCAyKSB8IChpblsyXSA+PiA2KSwKKyAgICAgICAgICAgICAodWludDhfdCkoaW5bMl0gJiAweDNmKSk7CisgICAgaW4gKz0gMzsKKyAgfQorCisgIC8qIGVuY29kZSB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgIHN3aXRjaCAodGFpbF9jYXNlKSB7CisgICAgY2FzZSAwOgorICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgZW5jX2FkZDIoJm91dCwgaW5bMF0gPj4gMiwgKHVpbnQ4X3QpKChpblswXSAmIDB4MykgPDwgNCkpOworICAgICAgaW4gKz0gMTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIGVuY19hZGQyKCZvdXQsIGluWzBdID4+IDIsCisgICAgICAgICAgICAgICAodWludDhfdCkoKGluWzBdICYgMHgzKSA8PCA0KSB8ICh1aW50OF90KShpblsxXSA+PiA0KSk7CisgICAgICBlbmNfYWRkMSgmb3V0LCAodWludDhfdCkoKGluWzFdICYgMHhmKSA8PCAyKSk7CisgICAgICBpbiArPSAyOworICAgICAgYnJlYWs7CisgIH0KKworICBpZiAob3V0LnRlbXBfbGVuZ3RoKSB7CisgICAgLyogTkI6IHRoZSBmb2xsb3dpbmcgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbiBuZWVkcyB0byBiZSBpbiBpdHMKKyAgICAgKiBleHBhbmRlZCBmb3JtIGR1ZSB0byB0aGUgImludGVncmFsIHByb21vdGlvbiIgcGVyZm9ybWVkIChzZWUgc2VjdGlvbgorICAgICAqIDMuMi4xLjEgb2YgdGhlIEM4OSBkcmFmdCBzdGFuZGFyZCkuIEEgY2FzdCB0byB0aGUgc21hbGxlciBjb250YWluZXIgdHlwZQorICAgICAqIGlzIHRoZW4gcmVxdWlyZWQgdG8gYXZvaWQgdGhlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKyAgICAqb3V0Lm91dCsrID0gKHVpbnQ4X3QpKCh1aW50OF90KShvdXQudGVtcCA8PCAoOHUgLSBvdXQudGVtcF9sZW5ndGgpKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCkoMHhmZnUgPj4gb3V0LnRlbXBfbGVuZ3RoKSk7CisgIH0KKworICBHUFJfQVNTRVJUKG91dC5vdXQgPD0gR1BSX1NMSUNFX0VORF9QVFIob3V0cHV0KSk7CisgIEdQUl9TTElDRV9TRVRfTEVOR1RIKG91dHB1dCwgb3V0Lm91dCAtIHN0YXJ0X291dCk7CisKKyAgR1BSX0FTU0VSVChpbiA9PSBHUFJfU0xJQ0VfRU5EX1BUUihpbnB1dCkpOworICByZXR1cm4gb3V0cHV0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWRhZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0JJTl9FTkNPREVSX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9CSU5fRU5DT0RFUl9ICisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KKworLyogYmFzZTY0IGVuY29kZSBhIHNsaWNlLiBSZXR1cm5zIGEgbmV3IHNsaWNlLCBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUKKyAgIGlucHV0ICovCitncHJfc2xpY2UgZ3JwY19jaHR0cDJfYmFzZTY0X2VuY29kZShncHJfc2xpY2UgaW5wdXQpOworCisvKiBDb21wcmVzcyBhIHNsaWNlIHdpdGggdGhlIHN0YXRpYyBodWZmbWFuIGVuY29kZXIgZGV0YWlsZWQgaW4gdGhlIGhwYWNrCisgICBzdGFuZGFyZC4gUmV0dXJucyBhIG5ldyBzbGljZSwgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGlucHV0ICovCitncHJfc2xpY2UgZ3JwY19jaHR0cDJfaHVmZm1hbl9jb21wcmVzcyhncHJfc2xpY2UgaW5wdXQpOworCisvKiBlcXVpdmFsZW50IHRvOgorICAgZ3ByX3NsaWNlIHggPSBncnBjX2NodHRwMl9iYXNlNjRfZW5jb2RlKGlucHV0KTsKKyAgIGdwcl9zbGljZSB5ID0gZ3JwY19jaHR0cDJfaHVmZm1hbl9jb21wcmVzcyh4KTsKKyAgIGdwcl9zbGljZV91bnJlZih4KTsKKyAgIHJldHVybiB5OyAqLworZ3ByX3NsaWNlIGdycGNfY2h0dHAyX2Jhc2U2NF9lbmNvZGVfYW5kX2h1ZmZtYW5fY29tcHJlc3MoZ3ByX3NsaWNlIGlucHV0KTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfQklOX0VOQ09ERVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEzMDdhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMKQEAgLTAsMCArMSwxNzg1IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oIgorCisjZGVmaW5lIERFRkFVTFRfV0lORE9XIDY1NTM1CisjZGVmaW5lIERFRkFVTFRfQ09OTkVDVElPTl9XSU5ET1dfVEFSR0VUICgxMDI0ICogMTAyNCkKKyNkZWZpbmUgTUFYX1dJTkRPVyAweDdmZmZmZmZmdQorCisjZGVmaW5lIE1BWF9DTElFTlRfU1RSRUFNX0lEIDB4N2ZmZmZmZmZ1CisKK2ludCBncnBjX2h0dHBfdHJhY2UgPSAwOworaW50IGdycGNfZmxvd2N0bF90cmFjZSA9IDA7CisKKyNkZWZpbmUgVFJBTlNQT1JUX0ZST01fV1JJVElORyh0dykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKSgoY2hhciAqKSh0dyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfdHJhbnNwb3J0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nKSkpCisKKyNkZWZpbmUgVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0dykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKSgoY2hhciAqKSh0dyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfdHJhbnNwb3J0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzaW5nKSkpCisKKyNkZWZpbmUgVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKSgoY2hhciAqKSh0Zyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfdHJhbnNwb3J0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwpKSkKKworI2RlZmluZSBTVFJFQU1fRlJPTV9HTE9CQUwoc2cpIFwKKyAgKChncnBjX2NodHRwMl9zdHJlYW0gKikoKGNoYXIgKikoc2cpLW9mZnNldG9mKGdycGNfY2h0dHAyX3N0cmVhbSwgZ2xvYmFsKSkpCisKKyNkZWZpbmUgU1RSRUFNX0ZST01fUEFSU0lORyhzZykgXAorICAoKGdycGNfY2h0dHAyX3N0cmVhbSAqKSgoY2hhciAqKShzZyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfc3RyZWFtLCBwYXJzaW5nKSkpCisKK3N0YXRpYyBjb25zdCBncnBjX3RyYW5zcG9ydF92dGFibGUgdnRhYmxlOworCitzdGF0aWMgdm9pZCBsb2NrKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCk7CitzdGF0aWMgdm9pZCB1bmxvY2soZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCk7CisKKy8qIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIHZhcmlvdXMgY2FsbGJhY2tzIHRoYXQgd2UnbGwgYnVpbGQgY2xvc3VyZXMgYXJvdW5kICovCitzdGF0aWMgdm9pZCB3cml0aW5nX2FjdGlvbihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW9tZ3Jfc3VjY2Vzc19pZ25vcmVkKTsKKworLyoqIFNldCBhIHRyYW5zcG9ydCBsZXZlbCBzZXR0aW5nLCBhbmQgcHVzaCBpdCB0byBvdXIgcGVlciAqLworc3RhdGljIHZvaWQgcHVzaF9zZXR0aW5nKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwgZ3JwY19jaHR0cDJfc2V0dGluZ19pZCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSk7CisKKy8qKiBFbmRwb2ludCBjYWxsYmFjayB0byBwcm9jZXNzIGluY29taW5nIGRhdGEgKi8KK3N0YXRpYyB2b2lkIHJlY3ZfZGF0YShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqdHAsIGJvb2wgc3VjY2Vzcyk7CisKKy8qKiBTdGFydCBkaXNjb25uZWN0aW9uIGNoYWluICovCitzdGF0aWMgdm9pZCBkcm9wX2Nvbm5lY3Rpb24oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCk7CisKKy8qKiBQZXJmb3JtIGEgdHJhbnNwb3J0X29wICovCitzdGF0aWMgdm9pZCBwZXJmb3JtX3N0cmVhbV9vcF9sb2NrZWQoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwgZ3JwY190cmFuc3BvcnRfc3RyZWFtX29wICpvcCk7CisKKy8qKiBDYW5jZWwgYSBzdHJlYW06IGNvbWluZyBmcm9tIHRoZSB0cmFuc3BvcnQgQVBJICovCitzdGF0aWMgdm9pZCBjYW5jZWxfZnJvbV9hcGkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzKTsKKworc3RhdGljIHZvaWQgY2xvc2VfZnJvbV9hcGkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlICpvcHRpb25hbF9tZXNzYWdlKTsKKworLyoqIEFkZCBlbmRwb2ludCBmcm9tIHRoaXMgdHJhbnNwb3J0IHRvIHBvbGxzZXQgKi8KK3N0YXRpYyB2b2lkIGFkZF90b19wb2xsc2V0X2xvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsc2V0ICpwb2xsc2V0KTsKK3N0YXRpYyB2b2lkIGFkZF90b19wb2xsc2V0X3NldF9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsc2V0X3NldCAqcG9sbHNldF9zZXQpOworCisvKiogU3RhcnQgbmV3IHN0cmVhbXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBpZiB3ZSBjYW4gKi8KK3N0YXRpYyB2b2lkIG1heWJlX3N0YXJ0X3NvbWVfc3RyZWFtcygKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCk7CisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpdml0eV9zdGF0ZV9zZXQoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUgc3RhdGUsIGNvbnN0IGNoYXIgKnJlYXNvbik7CisKK3N0YXRpYyB2b2lkIGNoZWNrX3JlYWRfb3BzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCk7CisKK3N0YXRpYyB2b2lkIGluY29taW5nX2J5dGVfc3RyZWFtX3VwZGF0ZV9mbG93X2NvbnRyb2woCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLCBzaXplX3QgbWF4X3NpemVfaGludCwKKyAgICBzaXplX3QgaGF2ZV9hbHJlYWR5KTsKKworc3RhdGljIHZvaWQgZmFpbF9wZW5kaW5nX3dyaXRlcyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDT05TVFJVQ1RJT04vREVTVFJVQ1RJT04vUkVGQ09VTlRJTkcKKyAqLworCitzdGF0aWMgdm9pZCBkZXN0cnVjdF90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7CisgIHNpemVfdCBpOworCisgIGdwcl9tdV9sb2NrKCZ0LT5tdSk7CisKKyAgR1BSX0FTU0VSVCh0LT5lcCA9PSBOVUxMKTsKKworICBncHJfc2xpY2VfYnVmZmVyX2Rlc3Ryb3koJnQtPmdsb2JhbC5xYnVmKTsKKworICBncHJfc2xpY2VfYnVmZmVyX2Rlc3Ryb3koJnQtPndyaXRpbmcub3V0YnVmKTsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9kZXN0cm95KCZ0LT53cml0aW5nLmhwYWNrX2NvbXByZXNzb3IpOworCisgIGdwcl9zbGljZV9idWZmZXJfZGVzdHJveSgmdC0+cGFyc2luZy5xYnVmKTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9kZXN0cm95KCZ0LT5yZWFkX2J1ZmZlcik7CisgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9kZXN0cm95KCZ0LT5wYXJzaW5nLmhwYWNrX3BhcnNlcik7CisgIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfZGVzdHJveSgmdC0+cGFyc2luZy5nb2F3YXlfcGFyc2VyKTsKKworICBmb3IgKGkgPSAwOyBpIDwgU1RSRUFNX0xJU1RfQ09VTlQ7IGkrKykgeworICAgIEdQUl9BU1NFUlQodC0+bGlzdHNbaV0uaGVhZCA9PSBOVUxMKTsKKyAgICBHUFJfQVNTRVJUKHQtPmxpc3RzW2ldLnRhaWwgPT0gTlVMTCk7CisgIH0KKworICBHUFJfQVNTRVJUKGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZSgmdC0+cGFyc2luZ19zdHJlYW1fbWFwKSA9PSAwKTsKKyAgR1BSX0FTU0VSVChncnBjX2NodHRwMl9zdHJlYW1fbWFwX3NpemUoJnQtPm5ld19zdHJlYW1fbWFwKSA9PSAwKTsKKworICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2Rlc3Ryb3koJnQtPnBhcnNpbmdfc3RyZWFtX21hcCk7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVzdHJveSgmdC0+bmV3X3N0cmVhbV9tYXApOworICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9kZXN0cm95KGV4ZWNfY3R4LCAmdC0+Y2hhbm5lbF9jYWxsYmFjay5zdGF0ZV90cmFja2VyKTsKKworICBncHJfbXVfdW5sb2NrKCZ0LT5tdSk7CisgIGdwcl9tdV9kZXN0cm95KCZ0LT5tdSk7CisKKyAgLyogY2FsbGJhY2sgcmVtYWluaW5nIHBpbmdzOiB0aGV5J3JlIG5vdCBhbGxvd2VkIHRvIGNhbGwgaW50byB0aGUgdHJhbnNwb3QsCisgICAgIGFuZCBtYXliZSB0aGV5IGhvbGQgcmVzb3VyY2VzIHRoYXQgbmVlZCB0byBiZSBmcmVlZCAqLworICB3aGlsZSAodC0+Z2xvYmFsLnBpbmdzLm5leHQgIT0gJnQtPmdsb2JhbC5waW5ncykgeworICAgIGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3BpbmcgKnBpbmcgPSB0LT5nbG9iYWwucGluZ3MubmV4dDsKKyAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIHBpbmctPm9uX3JlY3YsIGZhbHNlLCBOVUxMKTsKKyAgICBwaW5nLT5uZXh0LT5wcmV2ID0gcGluZy0+cHJldjsKKyAgICBwaW5nLT5wcmV2LT5uZXh0ID0gcGluZy0+bmV4dDsKKyAgICBncHJfZnJlZShwaW5nKTsKKyAgfQorCisgIGdwcl9mcmVlKHQtPnBlZXJfc3RyaW5nKTsKKyAgZ3ByX2ZyZWUodCk7Cit9CisKKyNpZmRlZiBSRUZDT1VOVElOR19ERUJVRworI2RlZmluZSBSRUZfVFJBTlNQT1JUKHQsIHIpIHJlZl90cmFuc3BvcnQodCwgciwgX19GSUxFX18sIF9fTElORV9fKQorI2RlZmluZSBVTlJFRl9UUkFOU1BPUlQoY2wsIHQsIHIpIHVucmVmX3RyYW5zcG9ydChjbCwgdCwgciwgX19GSUxFX18sIF9fTElORV9fKQorc3RhdGljIHZvaWQgdW5yZWZfdHJhbnNwb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSkgeworICBncHJfbG9nKEdQUl9ERUJVRywgImNodHRwMjp1bnJlZjolcCAlZC0+JWQgJXMgWyVzOiVkXSIsIHQsIHQtPnJlZnMuY291bnQsCisgICAgICAgICAgdC0+cmVmcy5jb3VudCAtIDEsIHJlYXNvbiwgZmlsZSwgbGluZSk7CisgIGlmICghZ3ByX3VucmVmKCZ0LT5yZWZzKSkgcmV0dXJuOworICBkZXN0cnVjdF90cmFuc3BvcnQoZXhlY19jdHgsIHQpOworfQorCitzdGF0aWMgdm9pZCByZWZfdHJhbnNwb3J0KGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSkgeworICBncHJfbG9nKEdQUl9ERUJVRywgImNodHRwMjogIHJlZjolcCAlZC0+JWQgJXMgWyVzOiVkXSIsIHQsIHQtPnJlZnMuY291bnQsCisgICAgICAgICAgdC0+cmVmcy5jb3VudCArIDEsIHJlYXNvbiwgZmlsZSwgbGluZSk7CisgIGdwcl9yZWYoJnQtPnJlZnMpOworfQorI2Vsc2UKKyNkZWZpbmUgUkVGX1RSQU5TUE9SVCh0LCByKSByZWZfdHJhbnNwb3J0KHQpCisjZGVmaW5lIFVOUkVGX1RSQU5TUE9SVChjbCwgdCwgcikgdW5yZWZfdHJhbnNwb3J0KGNsLCB0KQorc3RhdGljIHZvaWQgdW5yZWZfdHJhbnNwb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKKyAgaWYgKCFncHJfdW5yZWYoJnQtPnJlZnMpKSByZXR1cm47CisgIGRlc3RydWN0X3RyYW5zcG9ydChleGVjX2N0eCwgdCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlZl90cmFuc3BvcnQoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7IGdwcl9yZWYoJnQtPnJlZnMpOyB9CisjZW5kaWYKKworc3RhdGljIHZvaWQgaW5pdF90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICpjaGFubmVsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2VuZHBvaW50ICplcCwgdWludDhfdCBpc19jbGllbnQpIHsKKyAgc2l6ZV90IGk7CisgIGludCBqOworCisgIEdQUl9BU1NFUlQoc3RybGVuKEdSUENfQ0hUVFAyX0NMSUVOVF9DT05ORUNUX1NUUklORykgPT0KKyAgICAgICAgICAgICBHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJMRU4pOworCisgIG1lbXNldCh0LCAwLCBzaXplb2YoKnQpKTsKKworICB0LT5iYXNlLnZ0YWJsZSA9ICZ2dGFibGU7CisgIHQtPmVwID0gZXA7CisgIC8qIG9uZSByZWYgaXMgZm9yIGRlc3Ryb3ksIHRoZSBvdGhlciBmb3Igd2hlbiBlcCBiZWNvbWVzIE5VTEwgKi8KKyAgZ3ByX3JlZl9pbml0KCZ0LT5yZWZzLCAyKTsKKyAgLyogcmVmIGlzIGRyb3BwZWQgYXQgdHJhbnNwb3J0IGNsb3NlKCkgKi8KKyAgZ3ByX3JlZl9pbml0KCZ0LT5zaHV0ZG93bl9lcF9yZWZzLCAxKTsKKyAgZ3ByX211X2luaXQoJnQtPm11KTsKKyAgdC0+cGVlcl9zdHJpbmcgPSBncnBjX2VuZHBvaW50X2dldF9wZWVyKGVwKTsKKyAgdC0+ZW5kcG9pbnRfcmVhZGluZyA9IDE7CisgIHQtPmdsb2JhbC5uZXh0X3N0cmVhbV9pZCA9IGlzX2NsaWVudCA/IDEgOiAyOworICB0LT5nbG9iYWwuaXNfY2xpZW50ID0gaXNfY2xpZW50OworICB0LT53cml0aW5nLm91dGdvaW5nX3dpbmRvdyA9IERFRkFVTFRfV0lORE9XOworICB0LT5wYXJzaW5nLmluY29taW5nX3dpbmRvdyA9IERFRkFVTFRfV0lORE9XOworICB0LT5nbG9iYWwuc3RyZWFtX2xvb2thaGVhZCA9IERFRkFVTFRfV0lORE9XOworICB0LT5nbG9iYWwuY29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0ID0gREVGQVVMVF9DT05ORUNUSU9OX1dJTkRPV19UQVJHRVQ7CisgIHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgPSAxOworICB0LT5nbG9iYWwucGluZ3MubmV4dCA9IHQtPmdsb2JhbC5waW5ncy5wcmV2ID0gJnQtPmdsb2JhbC5waW5nczsKKyAgdC0+cGFyc2luZy5pc19jbGllbnQgPSBpc19jbGllbnQ7CisgIHQtPnBhcnNpbmcuZGVmcmFtZV9zdGF0ZSA9CisgICAgICBpc19jbGllbnQgPyBHUlBDX0RUU19GSF8wIDogR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8wOworICB0LT53cml0aW5nLmlzX2NsaWVudCA9IGlzX2NsaWVudDsKKyAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfaW5pdCgKKyAgICAgICZ0LT5jaGFubmVsX2NhbGxiYWNrLnN0YXRlX3RyYWNrZXIsIEdSUENfQ0hBTk5FTF9SRUFEWSwKKyAgICAgIGlzX2NsaWVudCA/ICJjbGllbnRfdHJhbnNwb3J0IiA6ICJzZXJ2ZXJfdHJhbnNwb3J0Iik7CisKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZ0LT5nbG9iYWwucWJ1Zik7CisKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZ0LT53cml0aW5nLm91dGJ1Zik7CisgIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3JfaW5pdCgmdC0+d3JpdGluZy5ocGFja19jb21wcmVzc29yKTsKKyAgZ3JwY19jbG9zdXJlX2luaXQoJnQtPndyaXRpbmdfYWN0aW9uLCB3cml0aW5nX2FjdGlvbiwgdCk7CisKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZ0LT5wYXJzaW5nLnFidWYpOworICBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2luaXQoJnQtPnBhcnNpbmcuZ29hd2F5X3BhcnNlcik7CisgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9pbml0KCZ0LT5wYXJzaW5nLmhwYWNrX3BhcnNlcik7CisKKyAgZ3JwY19jbG9zdXJlX2luaXQoJnQtPndyaXRpbmcuZG9uZV9jYiwgZ3JwY19jaHR0cDJfdGVybWluYXRlX3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICZ0LT53cml0aW5nKTsKKyAgZ3JwY19jbG9zdXJlX2luaXQoJnQtPnJlY3ZfZGF0YSwgcmVjdl9kYXRhLCB0KTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZ0LT5yZWFkX2J1ZmZlcik7CisKKyAgaWYgKGlzX2NsaWVudCkgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKAorICAgICAgICAmdC0+Z2xvYmFsLnFidWYsCisgICAgICAgIGdwcl9zbGljZV9mcm9tX2NvcGllZF9zdHJpbmcoR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSSU5HKSk7CisgIH0KKyAgLyogOCBpcyBhIHJhbmRvbSBzdGFiIGluIHRoZSBkYXJrIGFzIHRvIGEgZ29vZCBpbml0aWFsIHNpemU6IGl0J3Mgc21hbGwgZW5vdWdoCisgICAgIHRoYXQgaXQgc2hvdWxkbid0IHdhc3RlIG1lbW9yeSBmb3IgaW5mcmVxdWVudGx5IHVzZWQgY29ubmVjdGlvbnMsIHlldAorICAgICBsYXJnZSBlbm91Z2ggdGhhdCB0aGUgZXhwb25lbnRpYWwgZ3Jvd3RoIHNob3VsZCBoYXBwZW4gbmljZWx5IHdoZW4gaXQncworICAgICBuZWVkZWQuCisgICAgIFRPRE8oY3RpbGxlcik6IHR1bmUgdGhpcyAqLworICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2luaXQoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCwgOCk7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfaW5pdCgmdC0+bmV3X3N0cmVhbV9tYXAsIDgpOworCisgIC8qIGNvcHkgaW4gaW5pdGlhbCBzZXR0aW5ncyB0byBhbGwgc2V0dGluZyBzZXRzICovCisgIGZvciAoaSA9IDA7IGkgPCBHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1M7IGkrKykgeworICAgIHQtPnBhcnNpbmcuc2V0dGluZ3NbaV0gPSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJhbWV0ZXJzW2ldLmRlZmF1bHRfdmFsdWU7CisgICAgZm9yIChqID0gMDsgaiA8IEdSUENfTlVNX1NFVFRJTkdfU0VUUzsgaisrKSB7CisgICAgICB0LT5nbG9iYWwuc2V0dGluZ3Nbal1baV0gPQorICAgICAgICAgIGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcmFtZXRlcnNbaV0uZGVmYXVsdF92YWx1ZTsKKyAgICB9CisgIH0KKyAgdC0+Z2xvYmFsLmRpcnRpZWRfbG9jYWxfc2V0dGluZ3MgPSAxOworICAvKiBIYWNrOiBpdCdzIGNvbW1vbiBmb3IgaW1wbGVtZW50YXRpb25zIHRvIGFzc3VtZSA2NTUzNiBieXRlcyBpbml0aWFsIHNlbmQKKyAgICAgd2luZG93IC0tIHRoaXMgc2hvdWxkIGJ5IHJpZ2h0cyBiZSAwICovCisgIHQtPmdsb2JhbC5mb3JjZV9zZW5kX3NldHRpbmdzID0gMSA8PCBHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFOworICB0LT5nbG9iYWwuc2VudF9sb2NhbF9zZXR0aW5ncyA9IDA7CisKKyAgLyogY29uZmlndXJlIGh0dHAyIHRoZSB3YXkgd2UgbGlrZSBpdCAqLworICBpZiAoaXNfY2xpZW50KSB7CisgICAgcHVzaF9zZXR0aW5nKHQsIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0VOQUJMRV9QVVNILCAwKTsKKyAgICBwdXNoX3NldHRpbmcodCwgR1JQQ19DSFRUUDJfU0VUVElOR1NfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUywgMCk7CisgIH0KKyAgcHVzaF9zZXR0aW5nKHQsIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0lOSVRJQUxfV0lORE9XX1NJWkUsIERFRkFVTFRfV0lORE9XKTsKKworICBpZiAoY2hhbm5lbF9hcmdzKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGNoYW5uZWxfYXJncy0+bnVtX2FyZ3M7IGkrKykgeworICAgICAgaWYgKDAgPT0KKyAgICAgICAgICBzdHJjbXAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwgR1JQQ19BUkdfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykpIHsKKyAgICAgICAgaWYgKGlzX2NsaWVudCkgeworICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IGlzIGlnbm9yZWQgb24gdGhlIGNsaWVudCIsCisgICAgICAgICAgICAgICAgICBHUlBDX0FSR19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKTsKKyAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0udHlwZSAhPSBHUlBDX0FSR19JTlRFR0VSKSB7CisgICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogbXVzdCBiZSBhbiBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgIEdSUENfQVJHX01BWF9DT05DVVJSRU5UX1NUUkVBTVMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHB1c2hfc2V0dGluZyh0LCBHUlBDX0NIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TLAorICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGNoYW5uZWxfYXJncy0+YXJnc1tpXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0lOSVRJQUxfU0VRVUVOQ0VfTlVNQkVSKSkgeworICAgICAgICBpZiAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnR5cGUgIT0gR1JQQ19BUkdfSU5URUdFUikgeworICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgYW4gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9JTklUSUFMX1NFUVVFTkNFX05VTUJFUik7CisgICAgICAgIH0gZWxzZSBpZiAoKHQtPmdsb2JhbC5uZXh0X3N0cmVhbV9pZCAmIDEpICE9CisgICAgICAgICAgICAgICAgICAgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyICYgMSkpIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBsb3cgYml0IG11c3QgYmUgJWQgb24gJXMiLAorICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSU5JVElBTF9TRVFVRU5DRV9OVU1CRVIsCisgICAgICAgICAgICAgICAgICB0LT5nbG9iYWwubmV4dF9zdHJlYW1faWQgJiAxLAorICAgICAgICAgICAgICAgICAgaXNfY2xpZW50ID8gImNsaWVudCIgOiAic2VydmVyIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdC0+Z2xvYmFsLm5leHRfc3RyZWFtX2lkID0KKyAgICAgICAgICAgICAgKHVpbnQzMl90KWNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGNoYW5uZWxfYXJncy0+YXJnc1tpXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX1NUUkVBTV9MT09LQUhFQURfQllURVMpKSB7CisgICAgICAgIGlmIChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0udHlwZSAhPSBHUlBDX0FSR19JTlRFR0VSKSB7CisgICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogbXVzdCBiZSBhbiBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX1NUUkVBTV9MT09LQUhFQURfQllURVMpOworICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyIDw9IDUpIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBtdXN0IGJlIGF0IGxlYXN0IDUiLAorICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfU1RSRUFNX0xPT0tBSEVBRF9CWVRFUyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdC0+Z2xvYmFsLnN0cmVhbV9sb29rYWhlYWQgPQorICAgICAgICAgICAgICAodWludDMyX3QpY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXI7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSFBBQ0tfVEFCTEVfU0laRV9ERUNPREVSKSkgeworICAgICAgICBpZiAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnR5cGUgIT0gR1JQQ19BUkdfSU5URUdFUikgeworICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgYW4gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9IUEFDS19UQUJMRV9TSVpFX0RFQ09ERVIpOworICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyIDwgMCkgeworICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgbm9uLW5lZ2F0aXZlIiwKKyAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0hQQUNLX1RBQkxFX1NJWkVfREVDT0RFUik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcHVzaF9zZXR0aW5nKHQsIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0hFQURFUl9UQUJMRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIpOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGNoYW5uZWxfYXJncy0+YXJnc1tpXS5rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0hQQUNLX1RBQkxFX1NJWkVfRU5DT0RFUikpIHsKKyAgICAgICAgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS50eXBlICE9IEdSUENfQVJHX0lOVEVHRVIpIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBtdXN0IGJlIGFuIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSFBBQ0tfVEFCTEVfU0laRV9FTkNPREVSKTsKKyAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0udmFsdWUuaW50ZWdlciA8IDApIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIsCisgICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9IUEFDS19UQUJMRV9TSVpFX0VOQ09ERVIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3Jfc2V0X21heF91c2FibGVfc2l6ZSgKKyAgICAgICAgICAgICAgJnQtPndyaXRpbmcuaHBhY2tfY29tcHJlc3NvciwKKyAgICAgICAgICAgICAgKHVpbnQzMl90KWNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X3RyYW5zcG9ydChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY190cmFuc3BvcnQgKmd0KSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IChncnBjX2NodHRwMl90cmFuc3BvcnQgKilndDsKKworICBsb2NrKHQpOworICB0LT5kZXN0cm95aW5nID0gMTsKKyAgZHJvcF9jb25uZWN0aW9uKGV4ZWNfY3R4LCB0KTsKKyAgdW5sb2NrKGV4ZWNfY3R4LCB0KTsKKworICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJkZXN0cm95Iik7Cit9CisKKy8qKiBibG9jayBncnBjX2VuZHBvaW50X3NodXRkb3duIGJlaW5nIGNhbGxlZCB1bnRpbCBhIHBhaXJlZAorICAgIGFsbG93X2VuZHBvaW50X3NodXRkb3duIGlzIG1hZGUgKi8KK3N0YXRpYyB2b2lkIHByZXZlbnRfZW5kcG9pbnRfc2h1dGRvd24oZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7CisgIEdQUl9BU1NFUlQodC0+ZXApOworICBncHJfcmVmKCZ0LT5zaHV0ZG93bl9lcF9yZWZzKTsKK30KKworc3RhdGljIHZvaWQgYWxsb3dfZW5kcG9pbnRfc2h1dGRvd25fbG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeworICBpZiAoZ3ByX3VucmVmKCZ0LT5zaHV0ZG93bl9lcF9yZWZzKSkgeworICAgIGlmICh0LT5lcCkgeworICAgICAgZ3JwY19lbmRwb2ludF9zaHV0ZG93bihleGVjX2N0eCwgdC0+ZXApOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBhbGxvd19lbmRwb2ludF9zaHV0ZG93bl91bmxvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeworICBpZiAoZ3ByX3VucmVmKCZ0LT5zaHV0ZG93bl9lcF9yZWZzKSkgeworICAgIGdwcl9tdV9sb2NrKCZ0LT5tdSk7CisgICAgaWYgKHQtPmVwKSB7CisgICAgICBncnBjX2VuZHBvaW50X3NodXRkb3duKGV4ZWNfY3R4LCB0LT5lcCk7CisgICAgfQorICAgIGdwcl9tdV91bmxvY2soJnQtPm11KTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBkZXN0cm95X2VuZHBvaW50KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKKyAgZ3JwY19lbmRwb2ludF9kZXN0cm95KGV4ZWNfY3R4LCB0LT5lcCk7CisgIHQtPmVwID0gTlVMTDsKKyAgLyogc2FmZSBiZWNhdXNlIHdlJ2xsIHN0aWxsIGhhdmUgdGhlIHJlZiBmb3Igd3JpdGUgKi8KKyAgVU5SRUZfVFJBTlNQT1JUKGV4ZWNfY3R4LCB0LCAiZGlzY29ubmVjdCIpOworfQorCitzdGF0aWMgdm9pZCBjbG9zZV90cmFuc3BvcnRfbG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKKyAgaWYgKCF0LT5jbG9zZWQpIHsKKyAgICB0LT5jbG9zZWQgPSAxOworICAgIGNvbm5lY3Rpdml0eV9zdGF0ZV9zZXQoZXhlY19jdHgsICZ0LT5nbG9iYWwsIEdSUENfQ0hBTk5FTF9GQVRBTF9GQUlMVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlX3RyYW5zcG9ydCIpOworICAgIGlmICh0LT5lcCkgeworICAgICAgYWxsb3dfZW5kcG9pbnRfc2h1dGRvd25fbG9ja2VkKGV4ZWNfY3R4LCB0KTsKKyAgICB9CisKKyAgICAvKiBmbHVzaCB3cml0YWJsZSBzdHJlYW0gbGlzdCB0byBhdm9pZCBkYW5nbGluZyByZWZlcmVuY2VzICovCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmc7CisgICAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXRhYmxlX3N0cmVhbSgKKyAgICAgICAgJnQtPmdsb2JhbCwgJnQtPndyaXRpbmcsICZzdHJlYW1fZ2xvYmFsLCAmc3RyZWFtX3dyaXRpbmcpKSB7CisgICAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJjaHR0cDJfd3JpdGluZyIpOworICAgIH0KKyAgfQorfQorCisjaWZkZWYgR1JQQ19TVFJFQU1fUkVGQ09VTlRfREVCVUcKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikgeworICBncnBjX3N0cmVhbV9yZWYoU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLT5yZWZjb3VudCwgcmVhc29uKTsKK30KK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikgeworICBncnBjX3N0cmVhbV91bnJlZihleGVjX2N0eCwgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLT5yZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgcmVhc29uKTsKK30KKyNlbHNlCit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9yZWYoZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBncnBjX3N0cmVhbV9yZWYoU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLT5yZWZjb3VudCk7Cit9Cit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV91bnJlZihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKKyAgZ3JwY19zdHJlYW1fdW5yZWYoZXhlY19jdHgsIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKS0+cmVmY291bnQpOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgaW5pdF9zdHJlYW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfdHJhbnNwb3J0ICpndCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zdHJlYW0gKmdzLCBncnBjX3N0cmVhbV9yZWZjb3VudCAqcmVmY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnNlcnZlcl9kYXRhKSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IChncnBjX2NodHRwMl90cmFuc3BvcnQgKilndDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzID0gKGdycGNfY2h0dHAyX3N0cmVhbSAqKWdzOworCisgIG1lbXNldChzLCAwLCBzaXplb2YoKnMpKTsKKworICBzLT5yZWZjb3VudCA9IHJlZmNvdW50OworICBHUlBDX0NIVFRQMl9TVFJFQU1fUkVGKCZzLT5nbG9iYWwsICJjaHR0cDIiKTsKKworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgmcy0+cGFyc2luZy5tZXRhZGF0YV9idWZmZXJbMF0pOworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgmcy0+cGFyc2luZy5tZXRhZGF0YV9idWZmZXJbMV0pOworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgKKyAgICAgICZzLT5nbG9iYWwucmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YSk7CisgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9pbml0KAorICAgICAgJnMtPmdsb2JhbC5yZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YSk7CisgIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX2luaXQoJnMtPnBhcnNpbmcuZGF0YV9wYXJzZXIpOworICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJnMtPndyaXRpbmcuZmxvd19jb250cm9sbGVkX2J1ZmZlcik7CisKKyAgUkVGX1RSQU5TUE9SVCh0LCAic3RyZWFtIik7CisKKyAgbG9jayh0KTsKKyAgZ3JwY19jaHR0cDJfcmVnaXN0ZXJfc3RyZWFtKHQsIHMpOworICBpZiAoc2VydmVyX2RhdGEpIHsKKyAgICBHUFJfQVNTRVJUKHQtPnBhcnNpbmdfYWN0aXZlKTsKKyAgICBzLT5nbG9iYWwuaWQgPSAodWludDMyX3QpKHVpbnRwdHJfdClzZXJ2ZXJfZGF0YTsKKyAgICBzLT5wYXJzaW5nLmlkID0gcy0+Z2xvYmFsLmlkOworICAgIHMtPmdsb2JhbC5vdXRnb2luZ193aW5kb3cgPQorICAgICAgICB0LT5nbG9iYWwuc2V0dGluZ3NbR1JQQ19QRUVSX1NFVFRJTkdTXQorICAgICAgICAgICAgICAgICAgICAgICAgICBbR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRV07CisgICAgcy0+cGFyc2luZy5pbmNvbWluZ193aW5kb3cgPSBzLT5nbG9iYWwubWF4X3JlY3ZfYnl0ZXMgPQorICAgICAgICB0LT5nbG9iYWwuc2V0dGluZ3NbR1JQQ19TRU5UX1NFVFRJTkdTXQorICAgICAgICAgICAgICAgICAgICAgICAgICBbR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRV07CisgICAgKnQtPmFjY2VwdGluZ19zdHJlYW0gPSBzOworICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfYWRkKCZ0LT5wYXJzaW5nX3N0cmVhbV9tYXAsIHMtPmdsb2JhbC5pZCwgcyk7CisgICAgcy0+Z2xvYmFsLmluX3N0cmVhbV9tYXAgPSAxOworICB9CisgIHVubG9jayhleGVjX2N0eCwgdCk7CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfc3RyZWFtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3RyYW5zcG9ydCAqZ3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0cmVhbSAqZ3MpIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OworICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPSAoZ3JwY19jaHR0cDJfc3RyZWFtICopZ3M7CisgIGludCBpOworICBncnBjX2J5dGVfc3RyZWFtICpiczsKKworICBHUFJfVElNRVJfQkVHSU4oImRlc3Ryb3lfc3RyZWFtIiwgMCk7CisKKyAgZ3ByX211X2xvY2soJnQtPm11KTsKKworICBHUFJfQVNTRVJUKChzLT5nbG9iYWwud3JpdGVfY2xvc2VkICYmIHMtPmdsb2JhbC5yZWFkX2Nsb3NlZCkgfHwKKyAgICAgICAgICAgICBzLT5nbG9iYWwuaWQgPT0gMCk7CisgIEdQUl9BU1NFUlQoIXMtPmdsb2JhbC5pbl9zdHJlYW1fbWFwKTsKKyAgaWYgKGdycGNfY2h0dHAyX3VucmVnaXN0ZXJfc3RyZWFtKHQsIHMpICYmIHQtPmdsb2JhbC5zZW50X2dvYXdheSkgeworICAgIGNsb3NlX3RyYW5zcG9ydF9sb2NrZWQoZXhlY19jdHgsIHQpOworICB9CisgIGlmICghdC0+cGFyc2luZ19hY3RpdmUgJiYgcy0+Z2xvYmFsLmlkKSB7CisgICAgR1BSX0FTU0VSVChncnBjX2NodHRwMl9zdHJlYW1fbWFwX2ZpbmQoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5nbG9iYWwuaWQpID09IE5VTEwpOworICB9CisKKyAgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgmdC0+Z2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLT5nbG9iYWwpOworICBncnBjX2NodHRwMl9saXN0X3JlbW92ZV9zdGFsbGVkX2J5X3RyYW5zcG9ydCgmdC0+Z2xvYmFsLCAmcy0+Z2xvYmFsKTsKKworICBncHJfbXVfdW5sb2NrKCZ0LT5tdSk7CisKKyAgZm9yIChpID0gMDsgaSA8IFNUUkVBTV9MSVNUX0NPVU5UOyBpKyspIHsKKyAgICBpZiAocy0+aW5jbHVkZWRbaV0pIHsKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXMgc3RyZWFtICVkIHN0aWxsIGluY2x1ZGVkIGluIGxpc3QgJWQiLAorICAgICAgICAgICAgICB0LT5nbG9iYWwuaXNfY2xpZW50ID8gImNsaWVudCIgOiAic2VydmVyIiwgcy0+Z2xvYmFsLmlkLCBpKTsKKyAgICAgIGFib3J0KCk7CisgICAgfQorICB9CisKKyAgd2hpbGUgKAorICAgICAgKGJzID0gZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfcG9wKCZzLT5nbG9iYWwuaW5jb21pbmdfZnJhbWVzKSkpIHsKKyAgICBncnBjX2J5dGVfc3RyZWFtX2Rlc3Ryb3koZXhlY19jdHgsIGJzKTsKKyAgfQorCisgIEdQUl9BU1NFUlQocy0+Z2xvYmFsLnNlbmRfaW5pdGlhbF9tZXRhZGF0YV9maW5pc2hlZCA9PSBOVUxMKTsKKyAgR1BSX0FTU0VSVChzLT5nbG9iYWwuc2VuZF9tZXNzYWdlX2ZpbmlzaGVkID09IE5VTEwpOworICBHUFJfQVNTRVJUKHMtPmdsb2JhbC5zZW5kX3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkID09IE5VTEwpOworICBHUFJfQVNTRVJUKHMtPmdsb2JhbC5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHkgPT0gTlVMTCk7CisgIEdQUl9BU1NFUlQocy0+Z2xvYmFsLnJlY3ZfbWVzc2FnZV9yZWFkeSA9PSBOVUxMKTsKKyAgR1BSX0FTU0VSVChzLT5nbG9iYWwucmVjdl90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCA9PSBOVUxMKTsKKyAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfZGVzdHJveShleGVjX2N0eCwgJnMtPnBhcnNpbmcuZGF0YV9wYXJzZXIpOworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfZGVzdHJveSgmcy0+cGFyc2luZy5tZXRhZGF0YV9idWZmZXJbMF0pOworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfZGVzdHJveSgmcy0+cGFyc2luZy5tZXRhZGF0YV9idWZmZXJbMV0pOworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfZGVzdHJveSgKKyAgICAgICZzLT5nbG9iYWwucmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YSk7CisgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9kZXN0cm95KAorICAgICAgJnMtPmdsb2JhbC5yZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YSk7CisgIGdwcl9zbGljZV9idWZmZXJfZGVzdHJveSgmcy0+d3JpdGluZy5mbG93X2NvbnRyb2xsZWRfYnVmZmVyKTsKKworICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJzdHJlYW0iKTsKKworICBHUFJfVElNRVJfRU5EKCJkZXN0cm95X3N0cmVhbSIsIDApOworfQorCitncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywgdWludDMyX3QgaWQpIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyk7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqcyA9CisgICAgICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2ZpbmQoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCwgaWQpOworICByZXR1cm4gcyA/ICZzLT5wYXJzaW5nIDogTlVMTDsKK30KKworZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKmdycGNfY2h0dHAyX3BhcnNpbmdfYWNjZXB0X3N0cmVhbSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIHVpbnQzMl90IGlkKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqYWNjZXB0aW5nOworICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgR1BSX0FTU0VSVCh0LT5hY2NlcHRpbmdfc3RyZWFtID09IE5VTEwpOworICB0LT5hY2NlcHRpbmdfc3RyZWFtID0gJmFjY2VwdGluZzsKKyAgdC0+Y2hhbm5lbF9jYWxsYmFjay5hY2NlcHRfc3RyZWFtKGV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+Y2hhbm5lbF9jYWxsYmFjay5hY2NlcHRfc3RyZWFtX3VzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0LT5iYXNlLCAodm9pZCAqKSh1aW50cHRyX3QpaWQpOworICB0LT5hY2NlcHRpbmdfc3RyZWFtID0gTlVMTDsKKyAgcmV0dXJuICZhY2NlcHRpbmctPnBhcnNpbmc7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBMT0NLIE1BTkFHRU1FTlQKKyAqLworCisvKiBXZSB0YWtlIGEgZ3JwY19jaHR0cDJfdHJhbnNwb3J0LWdsb2JhbCBsb2NrIGluIHJlc3BvbnNlIHRvIGNhbGxzIGNvbWluZyBpbgorICAgZnJvbSBhYm92ZSwKKyAgIGFuZCBpbiByZXNwb25zZSB0byBkYXRhIGJlaW5nIHJlY2VpdmVkIGZyb20gYmVsb3cuIE5ldyBkYXRhIHRvIGJlIHdyaXR0ZW4KKyAgIGlzIGFsd2F5cyBxdWV1ZWQsIGFzIGFyZSBjYWxsYmFja3MgdG8gcHJvY2VzcyBkYXRhLiBEdXJpbmcgdW5sb2NrKCkgd2UKKyAgIGNoZWNrIG91ciB0b2RvIGxpc3RzIGFuZCBpbml0aWF0ZSBjYWxsYmFja3MgYW5kIGZsdXNoIHdyaXRlcy4gKi8KKworc3RhdGljIHZvaWQgbG9jayhncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsgZ3ByX211X2xvY2soJnQtPm11KTsgfQorCitzdGF0aWMgdm9pZCB1bmxvY2soZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeworICBHUFJfVElNRVJfQkVHSU4oInVubG9jayIsIDApOworICBpZiAoIXQtPndyaXRpbmdfYWN0aXZlICYmICF0LT5jbG9zZWQgJiYKKyAgICAgIGdycGNfY2h0dHAyX3VubG9ja2luZ19jaGVja193cml0ZXMoZXhlY19jdHgsICZ0LT5nbG9iYWwsICZ0LT53cml0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5wYXJzaW5nX2FjdGl2ZSkpIHsKKyAgICB0LT53cml0aW5nX2FjdGl2ZSA9IDE7CisgICAgUkVGX1RSQU5TUE9SVCh0LCAid3JpdGluZyIpOworICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgJnQtPndyaXRpbmdfYWN0aW9uLCB0cnVlLCBOVUxMKTsKKyAgICBwcmV2ZW50X2VuZHBvaW50X3NodXRkb3duKHQpOworICB9CisgIGNoZWNrX3JlYWRfb3BzKGV4ZWNfY3R4LCAmdC0+Z2xvYmFsKTsKKworICBncHJfbXVfdW5sb2NrKCZ0LT5tdSk7CisgIEdQUl9USU1FUl9FTkQoInVubG9jayIsIDApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogT1VUUFVUIFBST0NFU1NJTkcKKyAqLworCit2b2lkIGdycGNfY2h0dHAyX2JlY29tZV93cml0YWJsZShncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBpZiAoIVRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKS0+Y2xvc2VkICYmCisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0YWJsZV9zdHJlYW0odHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCkpIHsKKyAgICBHUlBDX0NIVFRQMl9TVFJFQU1fUkVGKHN0cmVhbV9nbG9iYWwsICJjaHR0cDJfd3JpdGluZyIpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHB1c2hfc2V0dGluZyhncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsIGdycGNfY2h0dHAyX3NldHRpbmdfaWQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpIHsKKyAgY29uc3QgZ3JwY19jaHR0cDJfc2V0dGluZ19wYXJhbWV0ZXJzICpzcCA9CisgICAgICAmZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyYW1ldGVyc1tpZF07CisgIHVpbnQzMl90IHVzZV92YWx1ZSA9IEdQUl9DTEFNUCh2YWx1ZSwgc3AtPm1pbl92YWx1ZSwgc3AtPm1heF92YWx1ZSk7CisgIGlmICh1c2VfdmFsdWUgIT0gdmFsdWUpIHsKKyAgICBncHJfbG9nKEdQUl9JTkZPLCAiUmVxdWVzdGVkIHBhcmFtZXRlciAlcyBjbGFtcGVkIGZyb20gJWQgdG8gJWQiLCBzcC0+bmFtZSwKKyAgICAgICAgICAgIHZhbHVlLCB1c2VfdmFsdWUpOworICB9CisgIGlmICh1c2VfdmFsdWUgIT0gdC0+Z2xvYmFsLnNldHRpbmdzW0dSUENfTE9DQUxfU0VUVElOR1NdW2lkXSkgeworICAgIHQtPmdsb2JhbC5zZXR0aW5nc1tHUlBDX0xPQ0FMX1NFVFRJTkdTXVtpZF0gPSB1c2VfdmFsdWU7CisgICAgdC0+Z2xvYmFsLmRpcnRpZWRfbG9jYWxfc2V0dGluZ3MgPSAxOworICB9Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfdGVybWluYXRlX3dyaXRpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRyYW5zcG9ydF93cml0aW5nX3B0ciwgYm9vbCBzdWNjZXNzKSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZyA9IHRyYW5zcG9ydF93cml0aW5nX3B0cjsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gVFJBTlNQT1JUX0ZST01fV1JJVElORyh0cmFuc3BvcnRfd3JpdGluZyk7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7CisKKyAgR1BSX1RJTUVSX0JFR0lOKCJncnBjX2NodHRwMl90ZXJtaW5hdGVfd3JpdGluZyIsIDApOworCisgIGxvY2sodCk7CisKKyAgYWxsb3dfZW5kcG9pbnRfc2h1dGRvd25fbG9ja2VkKGV4ZWNfY3R4LCB0KTsKKworICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICBkcm9wX2Nvbm5lY3Rpb24oZXhlY19jdHgsIHQpOworICB9CisKKyAgZ3JwY19jaHR0cDJfY2xlYW51cF93cml0aW5nKGV4ZWNfY3R4LCAmdC0+Z2xvYmFsLCAmdC0+d3JpdGluZyk7CisKKyAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKCZ0LT5nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbCkpIHsKKyAgICBmYWlsX3BlbmRpbmdfd3JpdGVzKGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsKTsKKyAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJmaW5pc2hfd3JpdGVzIik7CisgIH0KKworICAvKiBsZWF2ZSB0aGUgd3JpdGluZyBmbGFnIHVwIG9uIHNodXRkb3duIHRvIHByZXZlbnQgZnVydGhlciB3cml0ZXMgaW4gdW5sb2NrKCkKKyAgICAgZnJvbSBzdGFydGluZyAqLworICB0LT53cml0aW5nX2FjdGl2ZSA9IDA7CisgIGlmICh0LT5lcCAmJiAhdC0+ZW5kcG9pbnRfcmVhZGluZykgeworICAgIGRlc3Ryb3lfZW5kcG9pbnQoZXhlY19jdHgsIHQpOworICB9CisKKyAgdW5sb2NrKGV4ZWNfY3R4LCB0KTsKKworICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJ3cml0aW5nIik7CisKKyAgR1BSX1RJTUVSX0VORCgiZ3JwY19jaHR0cDJfdGVybWluYXRlX3dyaXRpbmciLCAwKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGluZ19hY3Rpb24oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmd0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpb21ncl9zdWNjZXNzX2lnbm9yZWQpIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gZ3Q7CisgIEdQUl9USU1FUl9CRUdJTigid3JpdGluZ19hY3Rpb24iLCAwKTsKKyAgZ3JwY19jaHR0cDJfcGVyZm9ybV93cml0ZXMoZXhlY19jdHgsICZ0LT53cml0aW5nLCB0LT5lcCk7CisgIEdQUl9USU1FUl9FTkQoIndyaXRpbmdfYWN0aW9uIiwgMCk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfYWRkX2luY29taW5nX2dvYXdheSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICB1aW50MzJfdCBnb2F3YXlfZXJyb3IsIGdwcl9zbGljZSBnb2F3YXlfdGV4dCkgeworICBjaGFyICptc2cgPSBncHJfZHVtcF9zbGljZShnb2F3YXlfdGV4dCwgR1BSX0RVTVBfSEVYIHwgR1BSX0RVTVBfQVNDSUkpOworICBncHJfbG9nKEdQUl9ERUJVRywgImdvdCBnb2F3YXkgWyVkXTogJXMiLCBnb2F3YXlfZXJyb3IsIG1zZyk7CisgIGdwcl9mcmVlKG1zZyk7CisgIGdwcl9zbGljZV91bnJlZihnb2F3YXlfdGV4dCk7CisgIHRyYW5zcG9ydF9nbG9iYWwtPnNlZW5fZ29hd2F5ID0gMTsKKyAgY29ubmVjdGl2aXR5X3N0YXRlX3NldChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgR1JQQ19DSEFOTkVMX0ZBVEFMX0ZBSUxVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdF9nb2F3YXkiKTsKK30KKworc3RhdGljIHZvaWQgbWF5YmVfc3RhcnRfc29tZV9zdHJlYW1zKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7CisgIHVpbnQzMl90IHN0cmVhbV9pbmNvbWluZ193aW5kb3c7CisgIC8qIHN0YXJ0IHN0cmVhbXMgd2hlcmUgd2UgaGF2ZSBmcmVlIGdycGNfY2h0dHAyX3N0cmVhbSBpZHMgYW5kIGZyZWUKKyAgICogY29uY3VycmVuY3kgKi8KKyAgd2hpbGUgKHRyYW5zcG9ydF9nbG9iYWwtPm5leHRfc3RyZWFtX2lkIDw9IE1BWF9DTElFTlRfU1RSRUFNX0lEICYmCisgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLT5jb25jdXJyZW50X3N0cmVhbV9jb3VudCA8CisgICAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbAorICAgICAgICAgICAgICAgICAtPnNldHRpbmdzW0dSUENfUEVFUl9TRVRUSU5HU10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TXSAmJgorICAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd2FpdGluZ19mb3JfY29uY3VycmVuY3kodHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsKSkgeworICAgIC8qIHNhZmUgc2luY2Ugd2UgY2FuJ3QgKGxlZ2FsbHkpIGJlIHBhcnNpbmcgdGhpcyBzdHJlYW0geWV0ICovCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nID0KKyAgICAgICAgJlNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKS0+cGFyc2luZzsKKyAgICBHUlBDX0NIVFRQMl9JRl9UUkFDSU5HKGdwcl9sb2coCisgICAgICAgIEdQUl9ERUJVRywgIkhUVFA6JXM6IEFsbG9jYXRpbmcgbmV3IGdycGNfY2h0dHAyX3N0cmVhbSAlcCB0byBpZCAlZCIsCisgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPmlzX2NsaWVudCA/ICJDTEkiIDogIlNWUiIsIHN0cmVhbV9nbG9iYWwsCisgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPm5leHRfc3RyZWFtX2lkKSk7CisKKyAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkID09IDApOworICAgIHN0cmVhbV9nbG9iYWwtPmlkID0gc3RyZWFtX3BhcnNpbmctPmlkID0gdHJhbnNwb3J0X2dsb2JhbC0+bmV4dF9zdHJlYW1faWQ7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+bmV4dF9zdHJlYW1faWQgKz0gMjsKKworICAgIGlmICh0cmFuc3BvcnRfZ2xvYmFsLT5uZXh0X3N0cmVhbV9pZCA+PSBNQVhfQ0xJRU5UX1NUUkVBTV9JRCkgeworICAgICAgY29ubmVjdGl2aXR5X3N0YXRlX3NldChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSEFOTkVMX1RSQU5TSUVOVF9GQUlMVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9fbW9yZV9zdHJlYW1faWRzIik7CisgICAgfQorCisgICAgc3RyZWFtX2dsb2JhbC0+b3V0Z29pbmdfd2luZG93ID0KKyAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19QRUVSX1NFVFRJTkdTXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFXTsKKyAgICBzdHJlYW1fcGFyc2luZy0+aW5jb21pbmdfd2luZG93ID0gc3RyZWFtX2luY29taW5nX3dpbmRvdyA9CisgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPnNldHRpbmdzW0dSUENfU0VOVF9TRVRUSU5HU10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRV07CisgICAgc3RyZWFtX2dsb2JhbC0+bWF4X3JlY3ZfYnl0ZXMgPQorICAgICAgICBHUFJfTUFYKHN0cmVhbV9pbmNvbWluZ193aW5kb3csIHN0cmVhbV9nbG9iYWwtPm1heF9yZWN2X2J5dGVzKTsKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2FkZCgKKyAgICAgICAgJlRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKS0+bmV3X3N0cmVhbV9tYXAsCisgICAgICAgIHN0cmVhbV9nbG9iYWwtPmlkLCBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCkpOworICAgIHN0cmVhbV9nbG9iYWwtPmluX3N0cmVhbV9tYXAgPSAxOworICAgIHRyYW5zcG9ydF9nbG9iYWwtPmNvbmN1cnJlbnRfc3RyZWFtX2NvdW50Kys7CisgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICB9CisgIC8qIGNhbmNlbCBvdXQgc3RyZWFtcyB0aGF0IHdpbGwgbmV2ZXIgYmUgc3RhcnRlZCAqLworICB3aGlsZSAodHJhbnNwb3J0X2dsb2JhbC0+bmV4dF9zdHJlYW1faWQgPj0gTUFYX0NMSUVOVF9TVFJFQU1fSUQgJiYKKyAgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfcG9wX3dhaXRpbmdfZm9yX2NvbmN1cnJlbmN5KHRyYW5zcG9ydF9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbCkpIHsKKyAgICBjYW5jZWxfZnJvbV9hcGkoZXhlY19jdHgsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgIEdSUENfU1RBVFVTX1VOQVZBSUxBQkxFKTsKKyAgfQorfQorCitzdGF0aWMgZ3JwY19jbG9zdXJlICphZGRfY2xvc3VyZV9iYXJyaWVyKGdycGNfY2xvc3VyZSAqY2xvc3VyZSkgeworICBjbG9zdXJlLT5maW5hbF9kYXRhICs9IDI7CisgIHJldHVybiBjbG9zdXJlOworfQorCit2b2lkIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqKnBjbG9zdXJlLCBpbnQgc3VjY2VzcykgeworICBncnBjX2Nsb3N1cmUgKmNsb3N1cmUgPSAqcGNsb3N1cmU7CisgIGlmIChjbG9zdXJlID09IE5VTEwpIHsKKyAgICByZXR1cm47CisgIH0KKyAgY2xvc3VyZS0+ZmluYWxfZGF0YSAtPSAyOworICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICBjbG9zdXJlLT5maW5hbF9kYXRhIHw9IDE7CisgIH0KKyAgaWYgKGNsb3N1cmUtPmZpbmFsX2RhdGEgPCAyKSB7CisgICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBjbG9zdXJlLCBjbG9zdXJlLT5maW5hbF9kYXRhID09IDAsIE5VTEwpOworICB9CisgICpwY2xvc3VyZSA9IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgY29udGFpbnNfbm9uX29rX3N0YXR1cygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKmJhdGNoKSB7CisgIGdycGNfbGlua2VkX21kZWxlbSAqbDsKKyAgZm9yIChsID0gYmF0Y2gtPmxpc3QuaGVhZDsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBpZiAobC0+bWQtPmtleSA9PSBHUlBDX01EU1RSX0dSUENfU1RBVFVTICYmCisgICAgICAgIGwtPm1kICE9IEdSUENfTURFTEVNX0dSUENfU1RBVFVTXzApIHsKKyAgICAgIHJldHVybiAxOworICAgIH0KKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZG9fbm90aGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBib29sIHN1Y2Nlc3MpIHt9CisKK3N0YXRpYyB2b2lkIHBlcmZvcm1fc3RyZWFtX29wX2xvY2tlZCgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLCBncnBjX3RyYW5zcG9ydF9zdHJlYW1fb3AgKm9wKSB7CisgIGdycGNfY2xvc3VyZSAqb25fY29tcGxldGU7CisKKyAgR1BSX1RJTUVSX0JFR0lOKCJwZXJmb3JtX3N0cmVhbV9vcF9sb2NrZWQiLCAwKTsKKworICBvbl9jb21wbGV0ZSA9IG9wLT5vbl9jb21wbGV0ZTsKKyAgaWYgKG9uX2NvbXBsZXRlID09IE5VTEwpIHsKKyAgICBvbl9jb21wbGV0ZSA9IGdycGNfY2xvc3VyZV9jcmVhdGUoZG9fbm90aGluZywgTlVMTCk7CisgIH0KKyAgLyogdXNlIGZpbmFsX2RhdGEgYXMgYSBiYXJyaWVyIHVudGlsIGVucXVldWUgdGltZTsgdGhlIGluaXRhbCBjb3VudGVyIGlzCisgICAgIGRyb3BwZWQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uICovCisgIG9uX2NvbXBsZXRlLT5maW5hbF9kYXRhID0gMjsKKworICBpZiAob3AtPmNhbmNlbF93aXRoX3N0YXR1cyAhPSBHUlBDX1NUQVRVU19PSykgeworICAgIGNhbmNlbF9mcm9tX2FwaShleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgb3AtPmNhbmNlbF93aXRoX3N0YXR1cyk7CisgIH0KKworICBpZiAob3AtPmNsb3NlX3dpdGhfc3RhdHVzICE9IEdSUENfU1RBVFVTX09LKSB7CisgICAgY2xvc2VfZnJvbV9hcGkoZXhlY19jdHgsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgb3AtPmNsb3NlX3dpdGhfc3RhdHVzLCBvcC0+b3B0aW9uYWxfY2xvc2VfbWVzc2FnZSk7CisgIH0KKworICBpZiAob3AtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSAhPSBOVUxMKSB7CisgICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGFfZmluaXNoZWQgPT0gTlVMTCk7CisgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhX2ZpbmlzaGVkID0KKyAgICAgICAgYWRkX2Nsb3N1cmVfYmFycmllcihvbl9jb21wbGV0ZSk7CisgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhID0gb3AtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgICBpZiAoY29udGFpbnNfbm9uX29rX3N0YXR1cyh0cmFuc3BvcnRfZ2xvYmFsLCBvcC0+c2VuZF9pbml0aWFsX21ldGFkYXRhKSkgeworICAgICAgc3RyZWFtX2dsb2JhbC0+c2Vlbl9lcnJvciA9IDE7CisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgICB9CisgICAgaWYgKCFzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKKyAgICAgIGlmICh0cmFuc3BvcnRfZ2xvYmFsLT5pc19jbGllbnQpIHsKKyAgICAgICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5pZCA9PSAwKTsKKyAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd2FpdGluZ19mb3JfY29uY3VycmVuY3kodHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbCk7CisgICAgICAgIG1heWJlX3N0YXJ0X3NvbWVfc3RyZWFtcyhleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkICE9IDApOworICAgICAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKKyAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YV9maW5pc2hlZCwgMCk7CisgICAgfQorICB9CisKKyAgaWYgKG9wLT5zZW5kX21lc3NhZ2UgIT0gTlVMTCkgeworICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlX2ZpbmlzaGVkID09IE5VTEwpOworICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlID09IE5VTEwpOworICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZV9maW5pc2hlZCA9IGFkZF9jbG9zdXJlX2JhcnJpZXIob25fY29tcGxldGUpOworICAgIGlmIChzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKKyAgICAgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKKyAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZV9maW5pc2hlZCwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZSA9IG9wLT5zZW5kX21lc3NhZ2U7CisgICAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCkgeworICAgICAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYgKG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhICE9IE5VTEwpIHsKKyAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQgPT0gTlVMTCk7CisgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCA9CisgICAgICAgIGFkZF9jbG9zdXJlX2JhcnJpZXIob25fY29tcGxldGUpOworICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgPSBvcC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YTsKKyAgICBpZiAoY29udGFpbnNfbm9uX29rX3N0YXR1cyh0cmFuc3BvcnRfZ2xvYmFsLCBvcC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSkpIHsKKyAgICAgIHN0cmVhbV9nbG9iYWwtPnNlZW5fZXJyb3IgPSAxOworICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2hlY2tfcmVhZF9vcHModHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgICAgfQorICAgIGlmIChzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKKyAgICAgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKKyAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQsCisgICAgICAgICAgZ3JwY19tZXRhZGF0YV9iYXRjaF9pc19lbXB0eShvcC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSkpOworICAgIH0gZWxzZSBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCkgeworICAgICAgLyogVE9ETyhjdGlsbGVyKTogY2hlY2sgaWYgdGhlcmUncyBmbG93IGNvbnRyb2wgZm9yIGFueSBvdXRzdGFuZGluZworICAgICAgICAgYnl0ZXMgYmVmb3JlIGdvaW5nIHdyaXRhYmxlICovCisgICAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgICAgfQorICB9CisKKyAgaWYgKG9wLT5yZWN2X2luaXRpYWxfbWV0YWRhdGEgIT0gTlVMTCkgeworICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhX3JlYWR5ID09IE5VTEwpOworICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSA9CisgICAgICAgIG9wLT5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHk7CisgICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhID0gb3AtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YTsKKyAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgfQorCisgIGlmIChvcC0+cmVjdl9tZXNzYWdlICE9IE5VTEwpIHsKKyAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSA9PSBOVUxMKTsKKyAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2VfcmVhZHkgPSBvcC0+cmVjdl9tZXNzYWdlX3JlYWR5OworICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZSA9IG9wLT5yZWN2X21lc3NhZ2U7CisgICAgaWYgKHN0cmVhbV9nbG9iYWwtPmlkICE9IDAgJiYKKyAgICAgICAgKHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy5oZWFkID09IE5VTEwgfHwKKyAgICAgICAgIHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy5oZWFkLT5pc190YWlsKSkgeworICAgICAgaW5jb21pbmdfYnl0ZV9zdHJlYW1fdXBkYXRlX2Zsb3dfY29udHJvbCgKKyAgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLCB0cmFuc3BvcnRfZ2xvYmFsLT5zdHJlYW1fbG9va2FoZWFkLAorICAgICAgICAgIDApOworICAgIH0KKyAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgfQorCisgIGlmIChvcC0+cmVjdl90cmFpbGluZ19tZXRhZGF0YSAhPSBOVUxMKSB7CisgICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkID09IE5VTEwpOworICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQgPQorICAgICAgICBhZGRfY2xvc3VyZV9iYXJyaWVyKG9uX2NvbXBsZXRlKTsKKyAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhID0gb3AtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGE7CisgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2hlY2tfcmVhZF9vcHModHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgIH0KKworICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoZXhlY19jdHgsICZvbl9jb21wbGV0ZSwgMSk7CisKKyAgR1BSX1RJTUVSX0VORCgicGVyZm9ybV9zdHJlYW1fb3BfbG9ja2VkIiwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHBlcmZvcm1fc3RyZWFtX29wKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3RyYW5zcG9ydCAqZ3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0cmVhbSAqZ3MsIGdycGNfdHJhbnNwb3J0X3N0cmVhbV9vcCAqb3ApIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OworICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPSAoZ3JwY19jaHR0cDJfc3RyZWFtICopZ3M7CisKKyAgbG9jayh0KTsKKyAgcGVyZm9ybV9zdHJlYW1fb3BfbG9ja2VkKGV4ZWNfY3R4LCAmdC0+Z2xvYmFsLCAmcy0+Z2xvYmFsLCBvcCk7CisgIHVubG9jayhleGVjX2N0eCwgdCk7Cit9CisKK3N0YXRpYyB2b2lkIHNlbmRfcGluZ19sb2NrZWQoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LCBncnBjX2Nsb3N1cmUgKm9uX3JlY3YpIHsKKyAgZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZyAqcCA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpwKSk7CisgIHAtPm5leHQgPSAmdC0+Z2xvYmFsLnBpbmdzOworICBwLT5wcmV2ID0gcC0+bmV4dC0+cHJldjsKKyAgcC0+cHJldi0+bmV4dCA9IHAtPm5leHQtPnByZXYgPSBwOworICBwLT5pZFswXSA9ICh1aW50OF90KSgodC0+Z2xvYmFsLnBpbmdfY291bnRlciA+PiA1NikgJiAweGZmKTsKKyAgcC0+aWRbMV0gPSAodWludDhfdCkoKHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgPj4gNDgpICYgMHhmZik7CisgIHAtPmlkWzJdID0gKHVpbnQ4X3QpKCh0LT5nbG9iYWwucGluZ19jb3VudGVyID4+IDQwKSAmIDB4ZmYpOworICBwLT5pZFszXSA9ICh1aW50OF90KSgodC0+Z2xvYmFsLnBpbmdfY291bnRlciA+PiAzMikgJiAweGZmKTsKKyAgcC0+aWRbNF0gPSAodWludDhfdCkoKHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgPj4gMjQpICYgMHhmZik7CisgIHAtPmlkWzVdID0gKHVpbnQ4X3QpKCh0LT5nbG9iYWwucGluZ19jb3VudGVyID4+IDE2KSAmIDB4ZmYpOworICBwLT5pZFs2XSA9ICh1aW50OF90KSgodC0+Z2xvYmFsLnBpbmdfY291bnRlciA+PiA4KSAmIDB4ZmYpOworICBwLT5pZFs3XSA9ICh1aW50OF90KSh0LT5nbG9iYWwucGluZ19jb3VudGVyICYgMHhmZik7CisgIHAtPm9uX3JlY3YgPSBvbl9yZWN2OworICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdC0+Z2xvYmFsLnFidWYsIGdycGNfY2h0dHAyX3BpbmdfY3JlYXRlKDAsIHAtPmlkKSk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfYWNrX3BpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqb3BhcXVlXzhieXRlcykgeworICBncnBjX2NodHRwMl9vdXRzdGFuZGluZ19waW5nICpwaW5nOworICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCA9ICZ0LT5nbG9iYWw7CisgIGxvY2sodCk7CisgIGZvciAocGluZyA9IHRyYW5zcG9ydF9nbG9iYWwtPnBpbmdzLm5leHQ7IHBpbmcgIT0gJnRyYW5zcG9ydF9nbG9iYWwtPnBpbmdzOworICAgICAgIHBpbmcgPSBwaW5nLT5uZXh0KSB7CisgICAgaWYgKDAgPT0gbWVtY21wKG9wYXF1ZV84Ynl0ZXMsIHBpbmctPmlkLCA4KSkgeworICAgICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBwaW5nLT5vbl9yZWN2LCB0cnVlLCBOVUxMKTsKKyAgICAgIHBpbmctPm5leHQtPnByZXYgPSBwaW5nLT5wcmV2OworICAgICAgcGluZy0+cHJldi0+bmV4dCA9IHBpbmctPm5leHQ7CisgICAgICBncHJfZnJlZShwaW5nKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB1bmxvY2soZXhlY19jdHgsIHQpOworfQorCitzdGF0aWMgdm9pZCBwZXJmb3JtX3RyYW5zcG9ydF9vcF9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0X29wICpvcCkgeworICBib29sIGNsb3NlX3RyYW5zcG9ydCA9IGZhbHNlOworCisgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgb3AtPm9uX2NvbnN1bWVkLCB0cnVlLCBOVUxMKTsKKworICBpZiAob3AtPm9uX2Nvbm5lY3Rpdml0eV9zdGF0ZV9jaGFuZ2UgIT0gTlVMTCkgeworICAgIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlX25vdGlmeV9vbl9zdGF0ZV9jaGFuZ2UoCisgICAgICAgIGV4ZWNfY3R4LCAmdC0+Y2hhbm5lbF9jYWxsYmFjay5zdGF0ZV90cmFja2VyLCBvcC0+Y29ubmVjdGl2aXR5X3N0YXRlLAorICAgICAgICBvcC0+b25fY29ubmVjdGl2aXR5X3N0YXRlX2NoYW5nZSk7CisgIH0KKworICBpZiAob3AtPnNlbmRfZ29hd2F5KSB7CisgICAgdC0+Z2xvYmFsLnNlbnRfZ29hd2F5ID0gMTsKKyAgICBncnBjX2NodHRwMl9nb2F3YXlfYXBwZW5kKAorICAgICAgICB0LT5nbG9iYWwubGFzdF9pbmNvbWluZ19zdHJlYW1faWQsCisgICAgICAgICh1aW50MzJfdClncnBjX2NodHRwMl9ncnBjX3N0YXR1c190b19odHRwMl9lcnJvcihvcC0+Z29hd2F5X3N0YXR1cyksCisgICAgICAgIGdwcl9zbGljZV9yZWYoKm9wLT5nb2F3YXlfbWVzc2FnZSksICZ0LT5nbG9iYWwucWJ1Zik7CisgICAgY2xvc2VfdHJhbnNwb3J0ID0gIWdycGNfY2h0dHAyX2hhc19zdHJlYW1zKHQpOworICB9CisKKyAgaWYgKG9wLT5zZXRfYWNjZXB0X3N0cmVhbSkgeworICAgIHQtPmNoYW5uZWxfY2FsbGJhY2suYWNjZXB0X3N0cmVhbSA9IG9wLT5zZXRfYWNjZXB0X3N0cmVhbV9mbjsKKyAgICB0LT5jaGFubmVsX2NhbGxiYWNrLmFjY2VwdF9zdHJlYW1fdXNlcl9kYXRhID0KKyAgICAgICAgb3AtPnNldF9hY2NlcHRfc3RyZWFtX3VzZXJfZGF0YTsKKyAgfQorCisgIGlmIChvcC0+YmluZF9wb2xsc2V0KSB7CisgICAgYWRkX3RvX3BvbGxzZXRfbG9ja2VkKGV4ZWNfY3R4LCB0LCBvcC0+YmluZF9wb2xsc2V0KTsKKyAgfQorCisgIGlmIChvcC0+YmluZF9wb2xsc2V0X3NldCkgeworICAgIGFkZF90b19wb2xsc2V0X3NldF9sb2NrZWQoZXhlY19jdHgsIHQsIG9wLT5iaW5kX3BvbGxzZXRfc2V0KTsKKyAgfQorCisgIGlmIChvcC0+c2VuZF9waW5nKSB7CisgICAgc2VuZF9waW5nX2xvY2tlZCh0LCBvcC0+c2VuZF9waW5nKTsKKyAgfQorCisgIGlmIChvcC0+ZGlzY29ubmVjdCkgeworICAgIGNsb3NlX3RyYW5zcG9ydF9sb2NrZWQoZXhlY19jdHgsIHQpOworICB9CisKKyAgaWYgKGNsb3NlX3RyYW5zcG9ydCkgeworICAgIGNsb3NlX3RyYW5zcG9ydF9sb2NrZWQoZXhlY19jdHgsIHQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHBlcmZvcm1fdHJhbnNwb3J0X29wKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3RyYW5zcG9ydCAqZ3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RyYW5zcG9ydF9vcCAqb3ApIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OworCisgIGxvY2sodCk7CisKKyAgLyogSWYgdGhlcmUncyBhIHNldF9hY2NlcHRfc3RyZWFtIGVuc3VyZSB0aGF0IHdlJ3JlIG5vdCBwYXJzaW5nCisgICAgIHRvIGF2b2lkIGNoYW5naW5nIHRoaW5ncyBvdXQgZnJvbSB1bmRlcm5lYXRoICovCisgIGlmICh0LT5wYXJzaW5nX2FjdGl2ZSAmJiBvcC0+c2V0X2FjY2VwdF9zdHJlYW0pIHsKKyAgICBHUFJfQVNTRVJUKHQtPnBvc3RfcGFyc2luZ19vcCA9PSBOVUxMKTsKKyAgICB0LT5wb3N0X3BhcnNpbmdfb3AgPSBncHJfbWFsbG9jKHNpemVvZigqb3ApKTsKKyAgICBtZW1jcHkodC0+cG9zdF9wYXJzaW5nX29wLCBvcCwgc2l6ZW9mKCpvcCkpOworICB9IGVsc2UgeworICAgIHBlcmZvcm1fdHJhbnNwb3J0X29wX2xvY2tlZChleGVjX2N0eCwgdCwgb3ApOworICB9CisKKyAgdW5sb2NrKGV4ZWNfY3R4LCB0KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIElOUFVUIFBST0NFU1NJTkcKKyAqLworCitzdGF0aWMgdm9pZCBjaGVja19yZWFkX29wcyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKKyAgZ3JwY19ieXRlX3N0cmVhbSAqYnM7CisgIHdoaWxlICgKKyAgICAgIGdycGNfY2h0dHAyX2xpc3RfcG9wX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsICZzdHJlYW1fZ2xvYmFsKSkgeworICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHkgIT0gTlVMTCAmJgorICAgICAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfaW5pdGlhbF9tZXRhZGF0YSkgeworICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX3B1Ymxpc2goCisgICAgICAgICAgJnN0cmVhbV9nbG9iYWwtPnJlY2VpdmVkX2luaXRpYWxfbWV0YWRhdGEsCisgICAgICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhKTsKKyAgICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZSgKKyAgICAgICAgICBleGVjX2N0eCwgc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhX3JlYWR5LCB0cnVlLCBOVUxMKTsKKyAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSA9IE5VTEw7CisgICAgfQorICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2VfcmVhZHkgIT0gTlVMTCkgeworICAgICAgd2hpbGUgKHN0cmVhbV9nbG9iYWwtPnNlZW5fZXJyb3IgJiYKKyAgICAgICAgICAgICAoYnMgPSBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9wb3AoCisgICAgICAgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzKSkgIT0gTlVMTCkgeworICAgICAgICBncnBjX2J5dGVfc3RyZWFtX2Rlc3Ryb3koZXhlY19jdHgsIGJzKTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMuaGVhZCAhPSBOVUxMKSB7CisgICAgICAgICpzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2UgPSBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9wb3AoCisgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzKTsKKyAgICAgICAgR1BSX0FTU0VSVCgqc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlICE9IE5VTEwpOworICAgICAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2VfcmVhZHkgPSBOVUxMOworICAgICAgfSBlbHNlIGlmIChzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEpIHsKKyAgICAgICAgKnN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZSA9IE5VTEw7CisgICAgICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlX3JlYWR5LCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSA9IE5VTEw7CisgICAgICB9CisgICAgfQorICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkICE9IE5VTEwgJiYKKyAgICAgICAgc3RyZWFtX2dsb2JhbC0+cmVhZF9jbG9zZWQgJiYgc3RyZWFtX2dsb2JhbC0+d3JpdGVfY2xvc2VkKSB7CisgICAgICB3aGlsZSAoc3RyZWFtX2dsb2JhbC0+c2Vlbl9lcnJvciAmJgorICAgICAgICAgICAgIChicyA9IGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX3BvcCgKKyAgICAgICAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMpKSAhPSBOVUxMKSB7CisgICAgICAgIGdycGNfYnl0ZV9zdHJlYW1fZGVzdHJveShleGVjX2N0eCwgYnMpOworICAgICAgfQorICAgICAgaWYgKHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy5oZWFkID09IE5VTEwpIHsKKyAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX3B1Ymxpc2goCisgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+cmVjZWl2ZWRfdHJhaWxpbmdfbWV0YWRhdGEsCisgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhKTsKKyAgICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAorICAgICAgICAgICAgZXhlY19jdHgsICZzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkLCAxKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworc3RhdGljIHZvaWQgcmVtb3ZlX3N0cmVhbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpZCkgeworICBzaXplX3QgbmV3X3N0cmVhbV9jb3VudDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzID0KKyAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVsZXRlKCZ0LT5wYXJzaW5nX3N0cmVhbV9tYXAsIGlkKTsKKyAgaWYgKCFzKSB7CisgICAgcyA9IGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVsZXRlKCZ0LT5uZXdfc3RyZWFtX21hcCwgaWQpOworICB9CisgIEdQUl9BU1NFUlQocyk7CisgIHMtPmdsb2JhbC5pbl9zdHJlYW1fbWFwID0gMDsKKyAgaWYgKHQtPnBhcnNpbmcuaW5jb21pbmdfc3RyZWFtID09ICZzLT5wYXJzaW5nKSB7CisgICAgdC0+cGFyc2luZy5pbmNvbWluZ19zdHJlYW0gPSBOVUxMOworICAgIGdycGNfY2h0dHAyX3BhcnNpbmdfYmVjb21lX3NraXBfcGFyc2VyKGV4ZWNfY3R4LCAmdC0+cGFyc2luZyk7CisgIH0KKyAgaWYgKHMtPnBhcnNpbmcuZGF0YV9wYXJzZXIucGFyc2luZ19mcmFtZSAhPSBOVUxMKSB7CisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fZmluaXNoZWQoCisgICAgICAgIGV4ZWNfY3R4LCBzLT5wYXJzaW5nLmRhdGFfcGFyc2VyLnBhcnNpbmdfZnJhbWUsIDAsIDApOworICAgIHMtPnBhcnNpbmcuZGF0YV9wYXJzZXIucGFyc2luZ19mcmFtZSA9IE5VTEw7CisgIH0KKworICBpZiAoZ3JwY19jaHR0cDJfdW5yZWdpc3Rlcl9zdHJlYW0odCwgcykgJiYgdC0+Z2xvYmFsLnNlbnRfZ29hd2F5KSB7CisgICAgY2xvc2VfdHJhbnNwb3J0X2xvY2tlZChleGVjX2N0eCwgdCk7CisgIH0KKyAgaWYgKGdycGNfY2h0dHAyX2xpc3RfcmVtb3ZlX3dyaXRhYmxlX3N0cmVhbSgmdC0+Z2xvYmFsLCAmcy0+Z2xvYmFsKSkgeworICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgJnMtPmdsb2JhbCwgImNodHRwMl93cml0aW5nIik7CisgIH0KKworICBuZXdfc3RyZWFtX2NvdW50ID0gZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9zaXplKCZ0LT5wYXJzaW5nX3N0cmVhbV9tYXApICsKKyAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZSgmdC0+bmV3X3N0cmVhbV9tYXApOworICBHUFJfQVNTRVJUKG5ld19zdHJlYW1fY291bnQgPD0gVUlOVDMyX01BWCk7CisgIGlmIChuZXdfc3RyZWFtX2NvdW50ICE9IHQtPmdsb2JhbC5jb25jdXJyZW50X3N0cmVhbV9jb3VudCkgeworICAgIHQtPmdsb2JhbC5jb25jdXJyZW50X3N0cmVhbV9jb3VudCA9ICh1aW50MzJfdCluZXdfc3RyZWFtX2NvdW50OworICAgIG1heWJlX3N0YXJ0X3NvbWVfc3RyZWFtcyhleGVjX2N0eCwgJnQtPmdsb2JhbCk7CisgIH0KK30KKworc3RhdGljIHZvaWQgY2FuY2VsX2Zyb21fYXBpKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0YXR1c19jb2RlIHN0YXR1cykgeworICBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCkgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKAorICAgICAgICAmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1ZiwKKyAgICAgICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9jcmVhdGUoCisgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsLT5pZCwKKyAgICAgICAgICAgICh1aW50MzJfdClncnBjX2NodHRwMl9ncnBjX3N0YXR1c190b19odHRwMl9lcnJvcihzdGF0dXMpKSk7CisgIH0KKyAgZ3JwY19jaHR0cDJfZmFrZV9zdGF0dXMoZXhlY19jdHgsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIGdycGNfY2h0dHAyX21hcmtfc3RyZWFtX2Nsb3NlZChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOworfQorCit2b2lkIGdycGNfY2h0dHAyX2Zha2Vfc3RhdHVzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0YXR1c19jb2RlIHN0YXR1cywgZ3ByX3NsaWNlICpzbGljZSkgeworICBpZiAoc3RhdHVzICE9IEdSUENfU1RBVFVTX09LKSB7CisgICAgc3RyZWFtX2dsb2JhbC0+c2Vlbl9lcnJvciA9IDE7CisgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2hlY2tfcmVhZF9vcHModHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgIH0KKyAgLyogc3RyZWFtX2dsb2JhbC0+cmVjdl90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCBnaXZlcyB1cyBhCisgICAgIGxhc3QgY2hhbmNlIHJlcGxhY2VtZW50OiB3ZSd2ZSByZWNlaXZlZCB0cmFpbGluZyBtZXRhZGF0YSwKKyAgICAgYnV0IHNvbWV0aGluZyBtb3JlIGltcG9ydGFudCBoYXMgYmVjb21lIGF2YWlsYWJsZSB0byBzaWduYWwKKyAgICAgdG8gdGhlIHVwcGVyIGxheWVycyAtIGRyb3Agd2hhdCB3ZSd2ZSBnb3QsIGFuZCB0aGVuIHB1Ymxpc2gKKyAgICAgd2hhdCB3ZSB3YW50IC0gd2hpY2ggaXMgc2FmZSBiZWNhdXNlIHdlIGhhdmVuJ3QgdG9sZCBhbnlvbmUKKyAgICAgYWJvdXQgdGhlIG1ldGFkYXRhIHlldCAqLworICBpZiAoIXN0cmVhbV9nbG9iYWwtPnB1Ymxpc2hlZF90cmFpbGluZ19tZXRhZGF0YSB8fAorICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjdl90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCAhPSBOVUxMKSB7CisgICAgY2hhciBzdGF0dXNfc3RyaW5nW0dQUl9MVE9BX01JTl9CVUZTSVpFXTsKKyAgICBncHJfbHRvYShzdGF0dXMsIHN0YXR1c19zdHJpbmcpOworICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9hZGQoCisgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5yZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YSwKKyAgICAgICAgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKAorICAgICAgICAgICAgR1JQQ19NRFNUUl9HUlBDX1NUQVRVUywgZ3JwY19tZHN0cl9mcm9tX3N0cmluZyhzdGF0dXNfc3RyaW5nKSkpOworICAgIGlmIChzbGljZSkgeworICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX2FkZCgKKyAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+cmVjZWl2ZWRfdHJhaWxpbmdfbWV0YWRhdGEsCisgICAgICAgICAgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKAorICAgICAgICAgICAgICBHUlBDX01EU1RSX0dSUENfTUVTU0FHRSwKKyAgICAgICAgICAgICAgZ3JwY19tZHN0cl9mcm9tX3NsaWNlKGdwcl9zbGljZV9yZWYoKnNsaWNlKSkpKTsKKyAgICB9CisgICAgc3RyZWFtX2dsb2JhbC0+cHVibGlzaGVkX3RyYWlsaW5nX21ldGFkYXRhID0gMTsKKyAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgfQorICBpZiAoc2xpY2UpIHsKKyAgICBncHJfc2xpY2VfdW5yZWYoKnNsaWNlKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBmYWlsX3BlbmRpbmdfd3JpdGVzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7CisgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKKyAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhX2ZpbmlzaGVkLCAwKTsKKyAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAorICAgICAgZXhlY19jdHgsICZzdHJlYW1fZ2xvYmFsLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkLCAwKTsKKyAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKGV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZV9maW5pc2hlZCwgMCk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsIGludCBjbG9zZV9yZWFkcywKKyAgICBpbnQgY2xvc2Vfd3JpdGVzKSB7CisgIGlmIChzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZCAmJiBzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKKyAgICAvKiBhbHJlYWR5IGNsb3NlZCAqLworICAgIHJldHVybjsKKyAgfQorICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgaWYgKGNsb3NlX3JlYWRzICYmICFzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZCkgeworICAgIHN0cmVhbV9nbG9iYWwtPnJlYWRfY2xvc2VkID0gMTsKKyAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfaW5pdGlhbF9tZXRhZGF0YSA9IDE7CisgICAgc3RyZWFtX2dsb2JhbC0+cHVibGlzaGVkX3RyYWlsaW5nX21ldGFkYXRhID0gMTsKKyAgfQorICBpZiAoY2xvc2Vfd3JpdGVzICYmICFzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKKyAgICBzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQgPSAxOworICAgIGlmIChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCktPndyaXRpbmdfYWN0aXZlKSB7CisgICAgICBHUlBDX0NIVFRQMl9TVFJFQU1fUkVGKHN0cmVhbV9nbG9iYWwsICJmaW5pc2hfd3JpdGVzIik7CisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3Jfd3JpdGluZyh0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZhaWxfcGVuZGluZ193cml0ZXMoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwpOworICAgIH0KKyAgfQorICBpZiAoc3RyZWFtX2dsb2JhbC0+cmVhZF9jbG9zZWQgJiYgc3RyZWFtX2dsb2JhbC0+d3JpdGVfY2xvc2VkKSB7CisgICAgaWYgKHN0cmVhbV9nbG9iYWwtPmlkICE9IDAgJiYKKyAgICAgICAgVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLT5wYXJzaW5nX2FjdGl2ZSkgeworICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2xvc2VkX3dhaXRpbmdfZm9yX3BhcnNpbmcodHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwpOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCkgeworICAgICAgICByZW1vdmVfc3RyZWFtKGV4ZWNfY3R4LCBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCisgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbC0+aWQpOworICAgICAgfQorICAgICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsLCAiY2h0dHAyIik7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX2Zyb21fYXBpKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0YXR1c19jb2RlIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSAqb3B0aW9uYWxfbWVzc2FnZSkgeworICBncHJfc2xpY2UgaGRyOworICBncHJfc2xpY2Ugc3RhdHVzX2hkcjsKKyAgZ3ByX3NsaWNlIG1lc3NhZ2VfcGZ4OworICB1aW50OF90ICpwOworICB1aW50MzJfdCBsZW4gPSAwOworCisgIEdQUl9BU1NFUlQoc3RhdHVzID49IDAgJiYgKGludClzdGF0dXMgPCAxMDApOworCisgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCk7CisKKyAgLyogSGFuZCByb2xsIGEgaGVhZGVyIGJsb2NrLgorICAgICBUaGlzIGlzIHVubmVjZXNzYXJpbHkgdWdseSAtIGF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIGZpbmQgYSBtb3JlIGVsZWdhbnQKKyAgICAgc29sdXRpb24uCisgICAgIEl0J3MgY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCBvdXIgc2VuZCBtYWNoaW5lcnkgd291bGQgYmUgZGVhZCBieSB0aGUKKyAgICAgdGltZSB3ZSBnb3QgYXJvdW5kIHRvIHNlbmRpbmcgdGhpcywgc28gaW5zdGVhZCB3ZSBpZ25vcmUgSFBBQ0sgY29tcHJlc3Npb24KKyAgICAgYW5kIGp1c3Qgd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBieXRlcyBvbnRvIHRoZSB3aXJlLiAqLworICBzdGF0dXNfaGRyID0gZ3ByX3NsaWNlX21hbGxvYygxNSArIChzdGF0dXMgPj0gMTApKTsKKyAgcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIoc3RhdHVzX2hkcik7CisgICpwKysgPSAweDQwOyAvKiBsaXRlcmFsIGhlYWRlciAqLworICAqcCsrID0gMTE7ICAgLyogbGVuKGdycGMtc3RhdHVzKSAqLworICAqcCsrID0gJ2cnOworICAqcCsrID0gJ3InOworICAqcCsrID0gJ3AnOworICAqcCsrID0gJ2MnOworICAqcCsrID0gJy0nOworICAqcCsrID0gJ3MnOworICAqcCsrID0gJ3QnOworICAqcCsrID0gJ2EnOworICAqcCsrID0gJ3QnOworICAqcCsrID0gJ3UnOworICAqcCsrID0gJ3MnOworICBpZiAoc3RhdHVzIDwgMTApIHsKKyAgICAqcCsrID0gMTsKKyAgICAqcCsrID0gKHVpbnQ4X3QpKCcwJyArIHN0YXR1cyk7CisgIH0gZWxzZSB7CisgICAgKnArKyA9IDI7CisgICAgKnArKyA9ICh1aW50OF90KSgnMCcgKyAoc3RhdHVzIC8gMTApKTsKKyAgICAqcCsrID0gKHVpbnQ4X3QpKCcwJyArIChzdGF0dXMgJSAxMCkpOworICB9CisgIEdQUl9BU1NFUlQocCA9PSBHUFJfU0xJQ0VfRU5EX1BUUihzdGF0dXNfaGRyKSk7CisgIGxlbiArPSAodWludDMyX3QpR1BSX1NMSUNFX0xFTkdUSChzdGF0dXNfaGRyKTsKKworICBpZiAob3B0aW9uYWxfbWVzc2FnZSkgeworICAgIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSCgqb3B0aW9uYWxfbWVzc2FnZSkgPCAxMjcpOworICAgIG1lc3NhZ2VfcGZ4ID0gZ3ByX3NsaWNlX21hbGxvYygxNSk7CisgICAgcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIobWVzc2FnZV9wZngpOworICAgICpwKysgPSAweDQwOworICAgICpwKysgPSAxMjsgLyogbGVuKGdycGMtbWVzc2FnZSkgKi8KKyAgICAqcCsrID0gJ2cnOworICAgICpwKysgPSAncic7CisgICAgKnArKyA9ICdwJzsKKyAgICAqcCsrID0gJ2MnOworICAgICpwKysgPSAnLSc7CisgICAgKnArKyA9ICdtJzsKKyAgICAqcCsrID0gJ2UnOworICAgICpwKysgPSAncyc7CisgICAgKnArKyA9ICdzJzsKKyAgICAqcCsrID0gJ2EnOworICAgICpwKysgPSAnZyc7CisgICAgKnArKyA9ICdlJzsKKyAgICAqcCsrID0gKHVpbnQ4X3QpR1BSX1NMSUNFX0xFTkdUSCgqb3B0aW9uYWxfbWVzc2FnZSk7CisgICAgR1BSX0FTU0VSVChwID09IEdQUl9TTElDRV9FTkRfUFRSKG1lc3NhZ2VfcGZ4KSk7CisgICAgbGVuICs9ICh1aW50MzJfdClHUFJfU0xJQ0VfTEVOR1RIKG1lc3NhZ2VfcGZ4KTsKKyAgICBsZW4gKz0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgoKm9wdGlvbmFsX21lc3NhZ2UpOworICB9CisKKyAgaGRyID0gZ3ByX3NsaWNlX21hbGxvYyg5KTsKKyAgcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIoaGRyKTsKKyAgKnArKyA9ICh1aW50OF90KShsZW4gPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGxlbiA+PiA4KTsKKyAgKnArKyA9ICh1aW50OF90KShsZW4pOworICAqcCsrID0gR1JQQ19DSFRUUDJfRlJBTUVfSEVBREVSOworICAqcCsrID0gR1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9TVFJFQU0gfCBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX0hFQURFUlM7CisgICpwKysgPSAodWludDhfdCkoc3RyZWFtX2dsb2JhbC0+aWQgPj4gMjQpOworICAqcCsrID0gKHVpbnQ4X3QpKHN0cmVhbV9nbG9iYWwtPmlkID4+IDE2KTsKKyAgKnArKyA9ICh1aW50OF90KShzdHJlYW1fZ2xvYmFsLT5pZCA+PiA4KTsKKyAgKnArKyA9ICh1aW50OF90KShzdHJlYW1fZ2xvYmFsLT5pZCk7CisgIEdQUl9BU1NFUlQocCA9PSBHUFJfU0xJQ0VfRU5EX1BUUihoZHIpKTsKKworICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1ZiwgaGRyKTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF9nbG9iYWwtPnFidWYsIHN0YXR1c19oZHIpOworICBpZiAob3B0aW9uYWxfbWVzc2FnZSkgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKCZ0cmFuc3BvcnRfZ2xvYmFsLT5xYnVmLCBtZXNzYWdlX3BmeCk7CisgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF9nbG9iYWwtPnFidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlX3JlZigqb3B0aW9uYWxfbWVzc2FnZSkpOworICB9CisKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCisgICAgICAmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1ZiwKKyAgICAgIGdycGNfY2h0dHAyX3JzdF9zdHJlYW1fY3JlYXRlKHN0cmVhbV9nbG9iYWwtPmlkLCBHUlBDX0NIVFRQMl9OT19FUlJPUikpOworCisgIGlmIChvcHRpb25hbF9tZXNzYWdlKSB7CisgICAgZ3ByX3NsaWNlX3JlZigqb3B0aW9uYWxfbWVzc2FnZSk7CisgIH0KKyAgZ3JwY19jaHR0cDJfZmFrZV9zdGF0dXMoZXhlY19jdHgsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfbWVzc2FnZSk7CisgIGdycGNfY2h0dHAyX21hcmtfc3RyZWFtX2Nsb3NlZChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOworfQorCitzdGF0aWMgdm9pZCBjYW5jZWxfc3RyZWFtX2NiKGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBjYW5jZWxfZnJvbV9hcGkodXNlcl9kYXRhLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgR1JQQ19TVEFUVVNfVU5BVkFJTEFCTEUpOworfQorCitzdGF0aWMgdm9pZCBlbmRfYWxsX3RoZV9jYWxscyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeworICBncnBjX2NodHRwMl9mb3JfYWxsX3N0cmVhbXMoJnQtPmdsb2JhbCwgZXhlY19jdHgsIGNhbmNlbF9zdHJlYW1fY2IpOworfQorCitzdGF0aWMgdm9pZCBkcm9wX2Nvbm5lY3Rpb24oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeworICBjbG9zZV90cmFuc3BvcnRfbG9ja2VkKGV4ZWNfY3R4LCB0KTsKKyAgZW5kX2FsbF90aGVfY2FsbHMoZXhlY19jdHgsIHQpOworfQorCisvKiogdXBkYXRlIHdpbmRvdyBmcm9tIGEgc2V0dGluZ3MgY2hhbmdlICovCitzdGF0aWMgdm9pZCB1cGRhdGVfZ2xvYmFsX3dpbmRvdyh2b2lkICphcmdzLCB1aW50MzJfdCBpZCwgdm9pZCAqc3RyZWFtKSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IGFyZ3M7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqcyA9IHN0cmVhbTsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCA9ICZ0LT5nbG9iYWw7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwgPSAmcy0+Z2xvYmFsOworICBpbnQgd2FzX3plcm87CisgIGludCBpc196ZXJvOworICBpbnQ2NF90IGluaXRpYWxfd2luZG93X3VwZGF0ZSA9IHQtPnBhcnNpbmcuaW5pdGlhbF93aW5kb3dfdXBkYXRlOworCisgIHdhc196ZXJvID0gc3RyZWFtX2dsb2JhbC0+b3V0Z29pbmdfd2luZG93IDw9IDA7CisgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1NUUkVBTSgic2V0dGluZ3MiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCBpbml0aWFsX3dpbmRvd191cGRhdGUpOworICBpc196ZXJvID0gc3RyZWFtX2dsb2JhbC0+b3V0Z29pbmdfd2luZG93IDw9IDA7CisKKyAgaWYgKHdhc196ZXJvICYmICFpc196ZXJvKSB7CisgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRfZXJyb3JfbG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7CisgIHQtPmVuZHBvaW50X3JlYWRpbmcgPSAwOworICBpZiAoIXQtPndyaXRpbmdfYWN0aXZlICYmIHQtPmVwKSB7CisgICAgZGVzdHJveV9lbmRwb2ludChleGVjX2N0eCwgdCk7CisgIH0KK30KKworLyogdGNwIHJlYWQgY2FsbGJhY2sgKi8KK3N0YXRpYyB2b2lkIHJlY3ZfZGF0YShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqdHAsIGJvb2wgc3VjY2VzcykgeworICBzaXplX3QgaTsKKyAgaW50IGtlZXBfcmVhZGluZyA9IDA7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IHRwOworICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsID0gJnQtPmdsb2JhbDsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nID0gJnQtPnBhcnNpbmc7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7CisKKyAgR1BSX1RJTUVSX0JFR0lOKCJyZWN2X2RhdGEiLCAwKTsKKworICBsb2NrKHQpOworICBpID0gMDsKKyAgR1BSX0FTU0VSVCghdC0+cGFyc2luZ19hY3RpdmUpOworICBpZiAoIXQtPmNsb3NlZCkgeworICAgIHQtPnBhcnNpbmdfYWN0aXZlID0gMTsKKyAgICAvKiBtZXJnZSBzdHJlYW0gbGlzdHMgKi8KKyAgICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX21vdmVfaW50bygmdC0+bmV3X3N0cmVhbV9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQtPnBhcnNpbmdfc3RyZWFtX21hcCk7CisgICAgZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkKHRyYW5zcG9ydF9nbG9iYWwsIHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgICBncHJfbXVfdW5sb2NrKCZ0LT5tdSk7CisgICAgR1BSX1RJTUVSX0JFR0lOKCJyZWN2X2RhdGEucGFyc2UiLCAwKTsKKyAgICBmb3IgKDsgaSA8IHQtPnJlYWRfYnVmZmVyLmNvdW50ICYmCisgICAgICAgICAgIGdycGNfY2h0dHAyX3BlcmZvcm1fcmVhZChleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5yZWFkX2J1ZmZlci5zbGljZXNbaV0pOworICAgICAgICAgaSsrKQorICAgICAgOworICAgIEdQUl9USU1FUl9FTkQoInJlY3ZfZGF0YS5wYXJzZSIsIDApOworICAgIGdwcl9tdV9sb2NrKCZ0LT5tdSk7CisgICAgLyogY29weSBwYXJzaW5nIHFidWYgdG8gZ2xvYmFsIHFidWYgKi8KKyAgICBncHJfc2xpY2VfYnVmZmVyX21vdmVfaW50bygmdC0+cGFyc2luZy5xYnVmLCAmdC0+Z2xvYmFsLnFidWYpOworICAgIGlmIChpICE9IHQtPnJlYWRfYnVmZmVyLmNvdW50KSB7CisgICAgICB1bmxvY2soZXhlY19jdHgsIHQpOworICAgICAgbG9jayh0KTsKKyAgICAgIGRyb3BfY29ubmVjdGlvbihleGVjX2N0eCwgdCk7CisgICAgfQorICAgIC8qIG1lcmdlIHN0cmVhbSBsaXN0cyAqLworICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfbW92ZV9pbnRvKCZ0LT5uZXdfc3RyZWFtX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdC0+cGFyc2luZ19zdHJlYW1fbWFwKTsKKyAgICB0cmFuc3BvcnRfZ2xvYmFsLT5jb25jdXJyZW50X3N0cmVhbV9jb3VudCA9CisgICAgICAgICh1aW50MzJfdClncnBjX2NodHRwMl9zdHJlYW1fbWFwX3NpemUoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCk7CisgICAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbml0aWFsX3dpbmRvd191cGRhdGUgIT0gMCkgeworICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9mb3JfZWFjaCgmdC0+cGFyc2luZ19zdHJlYW1fbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZ2xvYmFsX3dpbmRvdywgdCk7CisgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5pdGlhbF93aW5kb3dfdXBkYXRlID0gMDsKKyAgICB9CisgICAgLyogaGFuZGxlIGhpZ2hlciBsZXZlbCB0aGluZ3MgKi8KKyAgICBncnBjX2NodHRwMl9wdWJsaXNoX3JlYWRzKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCB0cmFuc3BvcnRfcGFyc2luZyk7CisgICAgdC0+cGFyc2luZ19hY3RpdmUgPSAwOworICAgIC8qIGhhbmRsZSBkZWxheWVkIHRyYW5zcG9ydCBvcHMgKGlmIHRoZXJlIGlzIG9uZSkgKi8KKyAgICBpZiAodC0+cG9zdF9wYXJzaW5nX29wKSB7CisgICAgICBncnBjX3RyYW5zcG9ydF9vcCAqb3AgPSB0LT5wb3N0X3BhcnNpbmdfb3A7CisgICAgICB0LT5wb3N0X3BhcnNpbmdfb3AgPSBOVUxMOworICAgICAgcGVyZm9ybV90cmFuc3BvcnRfb3BfbG9ja2VkKGV4ZWNfY3R4LCB0LCBvcCk7CisgICAgICBncHJfZnJlZShvcCk7CisgICAgfQorICAgIC8qIGlmIGEgc3RyZWFtIGlzIGluIHRoZSBzdHJlYW0gbWFwLCBhbmQgZ2V0cyBjYW5jZWxsZWQsIHdlIG5lZWQgdG8gZW5zdXJlCisgICAgICogd2UgYXJlIG5vdCBwYXJzaW5nIGJlZm9yZSBjb250aW51aW5nIHRoZSBjYW5jZWxsYXRpb24gdG8ga2VlcCB0aGluZ3MgaW4KKyAgICAgKiBhIHNhbmUgc3RhdGUgKi8KKyAgICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2xvc2VkX3dhaXRpbmdfZm9yX3BhcnNpbmcodHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwpKSB7CisgICAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmluX3N0cmVhbV9tYXApOworICAgICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpOworICAgICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZCk7CisgICAgICByZW1vdmVfc3RyZWFtKGV4ZWNfY3R4LCB0LCBzdHJlYW1fZ2xvYmFsLT5pZCk7CisgICAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJjaHR0cDIiKTsKKyAgICB9CisgIH0KKyAgaWYgKCFzdWNjZXNzIHx8IGkgIT0gdC0+cmVhZF9idWZmZXIuY291bnQgfHwgdC0+Y2xvc2VkKSB7CisgICAgZHJvcF9jb25uZWN0aW9uKGV4ZWNfY3R4LCB0KTsKKyAgICByZWFkX2Vycm9yX2xvY2tlZChleGVjX2N0eCwgdCk7CisgIH0gZWxzZSBpZiAoIXQtPmNsb3NlZCkgeworICAgIGtlZXBfcmVhZGluZyA9IDE7CisgICAgUkVGX1RSQU5TUE9SVCh0LCAia2VlcF9yZWFkaW5nIik7CisgICAgcHJldmVudF9lbmRwb2ludF9zaHV0ZG93bih0KTsKKyAgfQorICBncHJfc2xpY2VfYnVmZmVyX3Jlc2V0X2FuZF91bnJlZigmdC0+cmVhZF9idWZmZXIpOworICB1bmxvY2soZXhlY19jdHgsIHQpOworCisgIGlmIChrZWVwX3JlYWRpbmcpIHsKKyAgICBncnBjX2VuZHBvaW50X3JlYWQoZXhlY19jdHgsIHQtPmVwLCAmdC0+cmVhZF9idWZmZXIsICZ0LT5yZWN2X2RhdGEpOworICAgIGFsbG93X2VuZHBvaW50X3NodXRkb3duX3VubG9ja2VkKGV4ZWNfY3R4LCB0KTsKKyAgICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJrZWVwX3JlYWRpbmciKTsKKyAgfSBlbHNlIHsKKyAgICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJyZWN2X2RhdGEiKTsKKyAgfQorCisgIEdQUl9USU1FUl9FTkQoInJlY3ZfZGF0YSIsIDApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ0FMTEJBQ0sgTE9PUAorICovCisKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpdml0eV9zdGF0ZV9zZXQoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUgc3RhdGUsIGNvbnN0IGNoYXIgKnJlYXNvbikgeworICBHUlBDX0NIVFRQMl9JRl9UUkFDSU5HKAorICAgICAgZ3ByX2xvZyhHUFJfREVCVUcsICJzZXQgY29ubmVjdGl2aXR5X3N0YXRlPSVkIiwgc3RhdGUpKTsKKyAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfc2V0KAorICAgICAgZXhlY19jdHgsCisgICAgICAmVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLT5jaGFubmVsX2NhbGxiYWNrLnN0YXRlX3RyYWNrZXIsCisgICAgICBzdGF0ZSwgcmVhc29uKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFBPTExTRVQgU1RVRkYKKyAqLworCitzdGF0aWMgdm9pZCBhZGRfdG9fcG9sbHNldF9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfcG9sbHNldCAqcG9sbHNldCkgeworICBpZiAodC0+ZXApIHsKKyAgICBncnBjX2VuZHBvaW50X2FkZF90b19wb2xsc2V0KGV4ZWNfY3R4LCB0LT5lcCwgcG9sbHNldCk7CisgIH0KK30KKworc3RhdGljIHZvaWQgYWRkX3RvX3BvbGxzZXRfc2V0X2xvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3BvbGxzZXRfc2V0ICpwb2xsc2V0X3NldCkgeworICBpZiAodC0+ZXApIHsKKyAgICBncnBjX2VuZHBvaW50X2FkZF90b19wb2xsc2V0X3NldChleGVjX2N0eCwgdC0+ZXAsIHBvbGxzZXRfc2V0KTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBzZXRfcG9sbHNldChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY190cmFuc3BvcnQgKmd0LAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zdHJlYW0gKmdzLCBncnBjX3BvbGxzZXQgKnBvbGxzZXQpIHsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OworICBsb2NrKHQpOworICBhZGRfdG9fcG9sbHNldF9sb2NrZWQoZXhlY19jdHgsIHQsIHBvbGxzZXQpOworICB1bmxvY2soZXhlY19jdHgsIHQpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQllURSBTVFJFQU0KKyAqLworCitzdGF0aWMgdm9pZCBpbmNvbWluZ19ieXRlX3N0cmVhbV91cGRhdGVfZmxvd19jb250cm9sKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwgc2l6ZV90IG1heF9zaXplX2hpbnQsCisgICAgc2l6ZV90IGhhdmVfYWxyZWFkeSkgeworICB1aW50MzJfdCBtYXhfcmVjdl9ieXRlczsKKworICAvKiBjbGFtcCBtYXggcmVjdiBoaW50IHRvIGFuIGFsbG93YWJsZSBzaXplICovCisgIGlmIChtYXhfc2l6ZV9oaW50ID49IFVJTlQzMl9NQVggLSB0cmFuc3BvcnRfZ2xvYmFsLT5zdHJlYW1fbG9va2FoZWFkKSB7CisgICAgbWF4X3JlY3ZfYnl0ZXMgPSBVSU5UMzJfTUFYIC0gdHJhbnNwb3J0X2dsb2JhbC0+c3RyZWFtX2xvb2thaGVhZDsKKyAgfSBlbHNlIHsKKyAgICBtYXhfcmVjdl9ieXRlcyA9ICh1aW50MzJfdCltYXhfc2l6ZV9oaW50OworICB9CisKKyAgLyogYWNjb3VudCBmb3IgYnl0ZXMgYWxyZWFkeSByZWNlaXZlZCBidXQgdW5rbm93biB0byBoaWdoZXIgbGF5ZXJzICovCisgIGlmIChtYXhfcmVjdl9ieXRlcyA+PSBoYXZlX2FscmVhZHkpIHsKKyAgICBtYXhfcmVjdl9ieXRlcyAtPSAodWludDMyX3QpaGF2ZV9hbHJlYWR5OworICB9IGVsc2UgeworICAgIG1heF9yZWN2X2J5dGVzID0gMDsKKyAgfQorCisgIC8qIGFkZCBzb21lIHNtYWxsIGxvb2thaGVhZCB0byBrZWVwIHBpcGVsaW5lcyBmbG93aW5nICovCisgIEdQUl9BU1NFUlQobWF4X3JlY3ZfYnl0ZXMgPD0gVUlOVDMyX01BWCAtIHRyYW5zcG9ydF9nbG9iYWwtPnN0cmVhbV9sb29rYWhlYWQpOworICBtYXhfcmVjdl9ieXRlcyArPSB0cmFuc3BvcnRfZ2xvYmFsLT5zdHJlYW1fbG9va2FoZWFkOworICBpZiAoc3RyZWFtX2dsb2JhbC0+bWF4X3JlY3ZfYnl0ZXMgPCBtYXhfcmVjdl9ieXRlcykgeworICAgIHVpbnQzMl90IGFkZF9tYXhfcmVjdl9ieXRlcyA9CisgICAgICAgIG1heF9yZWN2X2J5dGVzIC0gc3RyZWFtX2dsb2JhbC0+bWF4X3JlY3ZfYnl0ZXM7CisgICAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJvcCIsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9yZWN2X2J5dGVzLCBhZGRfbWF4X3JlY3ZfYnl0ZXMpOworICAgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1NUUkVBTSgib3AiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfZm9yX3BhcnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfbWF4X3JlY3ZfYnl0ZXMpOworICAgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1NUUkVBTSgib3AiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfZm9yX3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9tYXhfcmVjdl9ieXRlcyk7CisgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSh0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbCk7CisgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICB9Cit9CisKK3N0YXRpYyBpbnQgaW5jb21pbmdfYnl0ZV9zdHJlYW1fbmV4dChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2J5dGVfc3RyZWFtICpieXRlX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2UgKnNsaWNlLCBzaXplX3QgbWF4X3NpemVfaGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nsb3N1cmUgKm9uX2NvbXBsZXRlKSB7CisgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpicyA9CisgICAgICAoZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKilieXRlX3N0cmVhbTsKKyAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCA9ICZicy0+dHJhbnNwb3J0LT5nbG9iYWw7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwgPSAmYnMtPnN0cmVhbS0+Z2xvYmFsOworCisgIGxvY2soYnMtPnRyYW5zcG9ydCk7CisgIGlmIChicy0+aXNfdGFpbCkgeworICAgIGluY29taW5nX2J5dGVfc3RyZWFtX3VwZGF0ZV9mbG93X2NvbnRyb2wodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9zaXplX2hpbnQsIGJzLT5zbGljZXMubGVuZ3RoKTsKKyAgfQorICBpZiAoYnMtPnNsaWNlcy5jb3VudCA+IDApIHsKKyAgICAqc2xpY2UgPSBncHJfc2xpY2VfYnVmZmVyX3Rha2VfZmlyc3QoJmJzLT5zbGljZXMpOworICAgIHVubG9jayhleGVjX2N0eCwgYnMtPnRyYW5zcG9ydCk7CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSBpZiAoYnMtPmZhaWxlZCkgeworICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgb25fY29tcGxldGUsIGZhbHNlLCBOVUxMKTsKKyAgICB1bmxvY2soZXhlY19jdHgsIGJzLT50cmFuc3BvcnQpOworICAgIHJldHVybiAwOworICB9IGVsc2UgeworICAgIGJzLT5vbl9uZXh0ID0gb25fY29tcGxldGU7CisgICAgYnMtPm5leHQgPSBzbGljZTsKKyAgICB1bmxvY2soZXhlY19jdHgsIGJzLT50cmFuc3BvcnQpOworICAgIHJldHVybiAwOworICB9Cit9CisKK3N0YXRpYyB2b2lkIGluY29taW5nX2J5dGVfc3RyZWFtX3VucmVmKGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpicykgeworICBpZiAoZ3ByX3VucmVmKCZicy0+cmVmcykpIHsKKyAgICBncHJfc2xpY2VfYnVmZmVyX2Rlc3Ryb3koJmJzLT5zbGljZXMpOworICAgIGdwcl9mcmVlKGJzKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBpbmNvbWluZ19ieXRlX3N0cmVhbV9kZXN0cm95KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2J5dGVfc3RyZWFtICpieXRlX3N0cmVhbSkgeworICBpbmNvbWluZ19ieXRlX3N0cmVhbV91bnJlZigoZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKilieXRlX3N0cmVhbSk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fcHVzaChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlIHNsaWNlKSB7CisgIGdwcl9tdV9sb2NrKCZicy0+dHJhbnNwb3J0LT5tdSk7CisgIGlmIChicy0+b25fbmV4dCAhPSBOVUxMKSB7CisgICAgKmJzLT5uZXh0ID0gc2xpY2U7CisgICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBicy0+b25fbmV4dCwgdHJ1ZSwgTlVMTCk7CisgICAgYnMtPm9uX25leHQgPSBOVUxMOworICB9IGVsc2UgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKCZicy0+c2xpY2VzLCBzbGljZSk7CisgIH0KKyAgZ3ByX211X3VubG9jaygmYnMtPnRyYW5zcG9ydC0+bXUpOworfQorCit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2ZpbmlzaGVkKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqYnMsIGludCBzdWNjZXNzLAorICAgIGludCBmcm9tX3BhcnNpbmdfdGhyZWFkKSB7CisgIGlmICghc3VjY2VzcykgeworICAgIGlmIChmcm9tX3BhcnNpbmdfdGhyZWFkKSB7CisgICAgICBncHJfbXVfbG9jaygmYnMtPnRyYW5zcG9ydC0+bXUpOworICAgIH0KKyAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIGJzLT5vbl9uZXh0LCBmYWxzZSwgTlVMTCk7CisgICAgYnMtPm9uX25leHQgPSBOVUxMOworICAgIGJzLT5mYWlsZWQgPSAxOworICAgIGlmIChmcm9tX3BhcnNpbmdfdGhyZWFkKSB7CisgICAgICBncHJfbXVfdW5sb2NrKCZicy0+dHJhbnNwb3J0LT5tdSk7CisgICAgfQorICB9IGVsc2UgeworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoZnJvbV9wYXJzaW5nX3RocmVhZCkgeworICAgICAgZ3ByX211X2xvY2soJmJzLT50cmFuc3BvcnQtPm11KTsKKyAgICB9CisgICAgR1BSX0FTU0VSVChicy0+b25fbmV4dCA9PSBOVUxMKTsKKyAgICBpZiAoZnJvbV9wYXJzaW5nX3RocmVhZCkgeworICAgICAgZ3ByX211X3VubG9jaygmYnMtPnRyYW5zcG9ydC0+bXUpOworICAgIH0KKyNlbmRpZgorICB9CisgIGluY29taW5nX2J5dGVfc3RyZWFtX3VucmVmKGJzKTsKK30KKworZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2NyZWF0ZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgdWludDMyX3QgZnJhbWVfc2l6ZSwKKyAgICB1aW50MzJfdCBmbGFncywgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgKmFkZF90b19xdWV1ZSkgeworICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqaW5jb21pbmdfYnl0ZV9zdHJlYW0gPQorICAgICAgZ3ByX21hbGxvYyhzaXplb2YoKmluY29taW5nX2J5dGVfc3RyZWFtKSk7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5iYXNlLmxlbmd0aCA9IGZyYW1lX3NpemU7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5iYXNlLmZsYWdzID0gZmxhZ3M7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5iYXNlLm5leHQgPSBpbmNvbWluZ19ieXRlX3N0cmVhbV9uZXh0OworICBpbmNvbWluZ19ieXRlX3N0cmVhbS0+YmFzZS5kZXN0cm95ID0gaW5jb21pbmdfYnl0ZV9zdHJlYW1fZGVzdHJveTsKKyAgZ3ByX3JlZl9pbml0KCZpbmNvbWluZ19ieXRlX3N0cmVhbS0+cmVmcywgMik7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5uZXh0X21lc3NhZ2UgPSBOVUxMOworICBpbmNvbWluZ19ieXRlX3N0cmVhbS0+dHJhbnNwb3J0ID0gVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyk7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5zdHJlYW0gPSBTVFJFQU1fRlJPTV9QQVJTSU5HKHN0cmVhbV9wYXJzaW5nKTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZpbmNvbWluZ19ieXRlX3N0cmVhbS0+c2xpY2VzKTsKKyAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPm9uX25leHQgPSBOVUxMOworICBpbmNvbWluZ19ieXRlX3N0cmVhbS0+aXNfdGFpbCA9IDE7CisgIGluY29taW5nX2J5dGVfc3RyZWFtLT5mYWlsZWQgPSAwOworICBpZiAoYWRkX3RvX3F1ZXVlLT5oZWFkID09IE5VTEwpIHsKKyAgICBhZGRfdG9fcXVldWUtPmhlYWQgPSBpbmNvbWluZ19ieXRlX3N0cmVhbTsKKyAgfSBlbHNlIHsKKyAgICBhZGRfdG9fcXVldWUtPnRhaWwtPmlzX3RhaWwgPSAwOworICAgIGFkZF90b19xdWV1ZS0+dGFpbC0+bmV4dF9tZXNzYWdlID0gaW5jb21pbmdfYnl0ZV9zdHJlYW07CisgIH0KKyAgYWRkX3RvX3F1ZXVlLT50YWlsID0gaW5jb21pbmdfYnl0ZV9zdHJlYW07CisgIHJldHVybiBpbmNvbWluZ19ieXRlX3N0cmVhbTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFRSQUNJTkcKKyAqLworCitzdGF0aWMgY2hhciAqZm9ybWF0X2Zsb3djdGxfY29udGV4dF92YXIoY29uc3QgY2hhciAqY29udGV4dCwgY29uc3QgY2hhciAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsLCB1aW50MzJfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqc2NvcGUpIHsKKyAgY2hhciAqdW5kZXJzY29yZV9wb3M7CisgIGNoYXIgKnJlc3VsdDsKKyAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICpzY29wZSA9IE5VTEw7CisgICAgZ3ByX2FzcHJpbnRmKCZyZXN1bHQsICIlcyglbGxkKSIsIHZhciwgdmFsKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIHVuZGVyc2NvcmVfcG9zID0gc3RyY2hyKGNvbnRleHQsICdfJyk7CisgICpzY29wZSA9IGdwcl9zdHJkdXAoY29udGV4dCk7CisgICgqc2NvcGUpW3VuZGVyc2NvcmVfcG9zIC0gY29udGV4dF0gPSAwOworICBpZiAoaWQgIT0gMCkgeworICAgIGNoYXIgKnRtcCA9ICpzY29wZTsKKyAgICBncHJfYXNwcmludGYoc2NvcGUsICIlc1slZF0iLCB0bXAsIGlkKTsKKyAgICBncHJfZnJlZSh0bXApOworICB9CisgIGdwcl9hc3ByaW50ZigmcmVzdWx0LCAiJXMuJXMoJWxsZCkiLCB1bmRlcnNjb3JlX3BvcyArIDEsIHZhciwgdmFsKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludCBzYW1lc3RyKGNoYXIgKmEsIGNoYXIgKmIpIHsKKyAgaWYgKGEgPT0gTlVMTCkgeworICAgIHJldHVybiBiID09IE5VTEw7CisgIH0KKyAgaWYgKGIgPT0gTlVMTCkgeworICAgIHJldHVybiAwOworICB9CisgIHJldHVybiAwID09IHN0cmNtcChhLCBiKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9mbG93Y3RsX3RyYWNlKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9mbG93Y3RsX29wIG9wLCBjb25zdCBjaGFyICpjb250ZXh0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXIxLCBjb25zdCBjaGFyICpjb250ZXh0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXIyLCBpbnQgaXNfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0cmVhbV9pZCwgaW50NjRfdCB2YWwxLCBpbnQ2NF90IHZhbDIpIHsKKyAgY2hhciAqc2NvcGUxOworICBjaGFyICpzY29wZTI7CisgIGNoYXIgKmxhYmVsMSA9CisgICAgICBmb3JtYXRfZmxvd2N0bF9jb250ZXh0X3Zhcihjb250ZXh0MSwgdmFyMSwgdmFsMSwgc3RyZWFtX2lkLCAmc2NvcGUxKTsKKyAgY2hhciAqbGFiZWwyID0KKyAgICAgIGZvcm1hdF9mbG93Y3RsX2NvbnRleHRfdmFyKGNvbnRleHQyLCB2YXIyLCB2YWwyLCBzdHJlYW1faWQsICZzY29wZTIpOworICBjaGFyICpjbGlzdnIgPSBpc19jbGllbnQgPyAiY2xpZW50IiA6ICJzZXJ2ZXIiOworICBjaGFyICpwcmVmaXg7CisKKyAgZ3ByX2FzcHJpbnRmKCZwcmVmaXgsICJGTE9XICUgOHM6ICVzICUgMTFzICIsIHBoYXNlLCBjbGlzdnIsIHNjb3BlMSk7CisKKyAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgR1JQQ19DSFRUUDJfRkxPV0NUTF9NT1ZFOgorICAgICAgR1BSX0FTU0VSVChzYW1lc3RyKHNjb3BlMSwgc2NvcGUyKSk7CisgICAgICBpZiAodmFsMiAhPSAwKSB7CisgICAgICAgIGdwcl9sb2coZmlsZSwgbGluZSwgR1BSX0xPR19TRVZFUklUWV9ERUJVRywKKyAgICAgICAgICAgICAgICAiJXNNT1ZFICAgJSA0MHMgPC0gJSA0MHMgZ2l2aW5nICVkIiwgcHJlZml4LCBsYWJlbDEsIGxhYmVsMiwKKyAgICAgICAgICAgICAgICB2YWwxICsgdmFsMik7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX0ZMT1dDVExfQ1JFRElUOgorICAgICAgR1BSX0FTU0VSVCh2YWwyID49IDApOworICAgICAgaWYgKHZhbDIgIT0gMCkgeworICAgICAgICBncHJfbG9nKGZpbGUsIGxpbmUsIEdQUl9MT0dfU0VWRVJJVFlfREVCVUcsCisgICAgICAgICAgICAgICAgIiVzQ1JFRElUICUgNDBzIGJ5ICUgNDBzIGdpdmluZyAlZCIsIHByZWZpeCwgbGFiZWwxLCBsYWJlbDIsCisgICAgICAgICAgICAgICAgdmFsMSArIHZhbDIpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9GTE9XQ1RMX0RFQklUOgorICAgICAgR1BSX0FTU0VSVCh2YWwyID49IDApOworICAgICAgaWYgKHZhbDIgIT0gMCkgeworICAgICAgICBncHJfbG9nKGZpbGUsIGxpbmUsIEdQUl9MT0dfU0VWRVJJVFlfREVCVUcsCisgICAgICAgICAgICAgICAgIiVzREVCSVQgICUgNDBzIGJ5ICUgNDBzIGdpdmluZyAlZCIsIHByZWZpeCwgbGFiZWwxLCBsYWJlbDIsCisgICAgICAgICAgICAgICAgdmFsMSAtIHZhbDIpOworICAgICAgfQorICAgICAgYnJlYWs7CisgIH0KKworICBncHJfZnJlZShzY29wZTEpOworICBncHJfZnJlZShzY29wZTIpOworICBncHJfZnJlZShsYWJlbDEpOworICBncHJfZnJlZShsYWJlbDIpOworICBncHJfZnJlZShwcmVmaXgpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSU5URUdSQVRJT04gR0xVRQorICovCisKK3N0YXRpYyBjaGFyICpjaHR0cDJfZ2V0X3BlZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfdHJhbnNwb3J0ICp0KSB7CisgIHJldHVybiBncHJfc3RyZHVwKCgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopdCktPnBlZXJfc3RyaW5nKTsKK30KKworc3RhdGljIGNvbnN0IGdycGNfdHJhbnNwb3J0X3Z0YWJsZSB2dGFibGUgPSB7c2l6ZW9mKGdycGNfY2h0dHAyX3N0cmVhbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2h0dHAyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3BvbGxzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtX3N0cmVhbV9vcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1fdHJhbnNwb3J0X29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveV9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95X3RyYW5zcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodHRwMl9nZXRfcGVlcn07CisKK2dycGNfdHJhbnNwb3J0ICpncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBjb25zdCBncnBjX2NoYW5uZWxfYXJncyAqY2hhbm5lbF9hcmdzLAorICAgIGdycGNfZW5kcG9pbnQgKmVwLCBpbnQgaXNfY2xpZW50KSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfY2h0dHAyX3RyYW5zcG9ydCkpOworICBpbml0X3RyYW5zcG9ydChleGVjX2N0eCwgdCwgY2hhbm5lbF9hcmdzLCBlcCwgaXNfY2xpZW50ICE9IDApOworICByZXR1cm4gJnQtPmJhc2U7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3N0YXJ0X3JlYWRpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSAqc2xpY2VzLCBzaXplX3QgbnNsaWNlcykgeworICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSAoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopdHJhbnNwb3J0OworICBSRUZfVFJBTlNQT1JUKHQsICJyZWN2X2RhdGEiKTsgLyogbWF0Y2hlcyB1bnJlZiBpbnNpZGUgcmVjdl9kYXRhICovCisgIGdwcl9zbGljZV9idWZmZXJfYWRkbigmdC0+cmVhZF9idWZmZXIsIHNsaWNlcywgbnNsaWNlcyk7CisgIHJlY3ZfZGF0YShleGVjX2N0eCwgdCwgMSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWJmOWZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9ICisKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oIgorCitleHRlcm4gaW50IGdycGNfaHR0cF90cmFjZTsKK2V4dGVybiBpbnQgZ3JwY19mbG93Y3RsX3RyYWNlOworCitncnBjX3RyYW5zcG9ydCAqZ3JwY19jcmVhdGVfY2h0dHAyX3RyYW5zcG9ydCgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgY29uc3QgZ3JwY19jaGFubmVsX2FyZ3MgKmNoYW5uZWxfYXJncywKKyAgICBncnBjX2VuZHBvaW50ICplcCwgaW50IGlzX2NsaWVudCk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3N0YXJ0X3JlYWRpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSAqc2xpY2VzLCBzaXplX3QgbnNsaWNlcyk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTMxMWExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9ICisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorCisvKiBDb21tb24gZGVmaW5pdGlvbnMgZm9yIGZyYW1lIGhhbmRsaW5nIGluIHRoZSBjaHR0cDIgdHJhbnNwb3J0ICovCisKK3R5cGVkZWYgZW51bSB7CisgIEdSUENfQ0hUVFAyX1BBUlNFX09LLAorICBHUlBDX0NIVFRQMl9TVFJFQU1fRVJST1IsCisgIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1IKK30gZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3I7CisKKy8qIGRlZmluZWQgaW4gaW50ZXJuYWwuaCAqLwordHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmc7Cit0eXBlZGVmIHN0cnVjdCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZzsKKworI2RlZmluZSBHUlBDX0NIVFRQMl9GUkFNRV9EQVRBIDAKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfSEVBREVSIDEKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfQ09OVElOVUFUSU9OIDkKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTSAzCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX1NFVFRJTkdTIDQKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfUElORyA2CisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWSA3CisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX1dJTkRPV19VUERBVEUgOAorCisjZGVmaW5lIEdSUENfQ0hUVFAyX01BWF9QQVlMT0FEX0xFTkdUSCAoKDEgPDwgMTQpIC0gMSkKKworI2RlZmluZSBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSAxCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMQUdfQUNLIDEKKyNkZWZpbmUgR1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9IRUFERVJTIDQKKyNkZWZpbmUgR1JQQ19DSFRUUDJfREFUQV9GTEFHX1BBRERFRCA4CisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMQUdfSEFTX1BSSU9SSVRZIDB4MjAKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfRlJBTUVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkNjI0NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmgiCisKK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX2luaXQoCisgICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlcikgeworICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF8wOworICBwYXJzZXItPnBhcnNpbmdfZnJhbWUgPSBOVUxMOworICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfZGVzdHJveShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciAqcGFyc2VyKSB7CisgIGdycGNfYnl0ZV9zdHJlYW0gKmJzOworICBpZiAocGFyc2VyLT5wYXJzaW5nX2ZyYW1lKSB7CisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fZmluaXNoZWQoZXhlY19jdHgsIHBhcnNlci0+cGFyc2luZ19mcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxKTsKKyAgfQorICB3aGlsZSAoCisgICAgICAoYnMgPSBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9wb3AoJnBhcnNlci0+aW5jb21pbmdfZnJhbWVzKSkpIHsKKyAgICBncnBjX2J5dGVfc3RyZWFtX2Rlc3Ryb3koZXhlY19jdHgsIGJzKTsKKyAgfQorfQorCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9iZWdpbl9mcmFtZSgKKyAgICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciAqcGFyc2VyLCB1aW50OF90IGZsYWdzKSB7CisgIGlmIChmbGFncyAmIH5HUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAidW5zdXBwb3J0ZWQgZGF0YSBmbGFnczogMHglMDJ4IiwgZmxhZ3MpOworICAgIHJldHVybiBHUlBDX0NIVFRQMl9TVFJFQU1fRVJST1I7CisgIH0KKworICBpZiAoZmxhZ3MgJiBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSkgeworICAgIHBhcnNlci0+aXNfbGFzdF9mcmFtZSA9IDE7CisgIH0gZWxzZSB7CisgICAgcGFyc2VyLT5pc19sYXN0X2ZyYW1lID0gMDsKKyAgfQorCisgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKK30KKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9tZXJnZSgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqaGVhZF9kc3QsCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgKnRhaWxfc3JjKSB7CisgIGlmICh0YWlsX3NyYy0+aGVhZCA9PSBOVUxMKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKGhlYWRfZHN0LT5oZWFkID09IE5VTEwpIHsKKyAgICAqaGVhZF9kc3QgPSAqdGFpbF9zcmM7CisgICAgbWVtc2V0KHRhaWxfc3JjLCAwLCBzaXplb2YoKnRhaWxfc3JjKSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaGVhZF9kc3QtPnRhaWwtPm5leHRfbWVzc2FnZSA9IHRhaWxfc3JjLT5oZWFkOworICBoZWFkX2RzdC0+dGFpbCA9IHRhaWxfc3JjLT50YWlsOworICBtZW1zZXQodGFpbF9zcmMsIDAsIHNpemVvZigqdGFpbF9zcmMpKTsKK30KKworZ3JwY19ieXRlX3N0cmVhbSAqZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfcG9wKAorICAgIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlICpxKSB7CisgIGdycGNfYnl0ZV9zdHJlYW0gKm91dDsKKyAgaWYgKHEtPmhlYWQgPT0gTlVMTCkgeworICAgIHJldHVybiBOVUxMOworICB9CisgIG91dCA9ICZxLT5oZWFkLT5iYXNlOworICBpZiAocS0+aGVhZCA9PSBxLT50YWlsKSB7CisgICAgbWVtc2V0KHEsIDAsIHNpemVvZigqcSkpOworICB9IGVsc2UgeworICAgIHEtPmhlYWQgPSBxLT5oZWFkLT5uZXh0X21lc3NhZ2U7CisgIH0KKyAgcmV0dXJuIG91dDsKK30KKwordm9pZCBncnBjX2NodHRwMl9lbmNvZGVfZGF0YSh1aW50MzJfdCBpZCwgZ3ByX3NsaWNlX2J1ZmZlciAqaW5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdyaXRlX2J5dGVzLCBpbnQgaXNfZW9mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfYnVmZmVyICpvdXRidWYpIHsKKyAgZ3ByX3NsaWNlIGhkcjsKKyAgdWludDhfdCAqcDsKKworICBoZHIgPSBncHJfc2xpY2VfbWFsbG9jKDkpOworICBwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihoZHIpOworICBHUFJfQVNTRVJUKHdyaXRlX2J5dGVzIDwgKDEgPDwgMjQpKTsKKyAgKnArKyA9ICh1aW50OF90KSh3cml0ZV9ieXRlcyA+PiAxNik7CisgICpwKysgPSAodWludDhfdCkod3JpdGVfYnl0ZXMgPj4gOCk7CisgICpwKysgPSAodWludDhfdCkod3JpdGVfYnl0ZXMpOworICAqcCsrID0gR1JQQ19DSFRUUDJfRlJBTUVfREFUQTsKKyAgKnArKyA9IGlzX2VvZiA/IEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfU1RSRUFNIDogMDsKKyAgKnArKyA9ICh1aW50OF90KShpZCA+PiAyNCk7CisgICpwKysgPSAodWludDhfdCkoaWQgPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkKTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQob3V0YnVmLCBoZHIpOworCisgIGdwcl9zbGljZV9idWZmZXJfbW92ZV9maXJzdChpbmJ1Ziwgd3JpdGVfYnl0ZXMsIG91dGJ1Zik7Cit9CisKK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX3BhcnNlKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgeworICB1aW50OF90ICpjb25zdCBiZWcgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKKyAgdWludDhfdCAqY29uc3QgZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOworICB1aW50OF90ICpjdXIgPSBiZWc7CisgIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyICpwID0gcGFyc2VyOworICB1aW50MzJfdCBtZXNzYWdlX2ZsYWdzOworICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqaW5jb21pbmdfYnl0ZV9zdHJlYW07CisKKyAgaWYgKGlzX2xhc3QgJiYgcC0+aXNfbGFzdF9mcmFtZSkgeworICAgIHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSA9IDE7CisgIH0KKworICBpZiAoY3VyID09IGVuZCkgeworICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgfQorCisgIHN3aXRjaCAocC0+c3RhdGUpIHsKKyAgZmhfMDoKKyAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRkhfMDoKKyAgICAgIHAtPmZyYW1lX3R5cGUgPSAqY3VyOworICAgICAgc3dpdGNoIChwLT5mcmFtZV90eXBlKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICBwLT5pc19mcmFtZV9jb21wcmVzc2VkID0gMDsgLyogR1BSX0ZBTFNFICovCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICBwLT5pc19mcmFtZV9jb21wcmVzc2VkID0gMTsgLyogR1BSX1RSVUUgKi8KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIkJhZCBHUlBDIGZyYW1lIHR5cGUgMHglMDJ4IiwgcC0+ZnJhbWVfdHlwZSk7CisgICAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1NUUkVBTV9FUlJPUjsKKyAgICAgIH0KKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzE7CisgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19DSFRUUDJfREFUQV9GSF8xOgorICAgICAgcC0+ZnJhbWVfc2l6ZSA9ICgodWludDMyX3QpKmN1cikgPDwgMjQ7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF8yOworICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRkhfMjoKKyAgICAgIHAtPmZyYW1lX3NpemUgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCAxNjsKKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzM7CisgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19DSFRUUDJfREFUQV9GSF8zOgorICAgICAgcC0+ZnJhbWVfc2l6ZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDg7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF80OworICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRkhfNDoKKyAgICAgIHAtPmZyYW1lX3NpemUgfD0gKCh1aW50MzJfdCkqY3VyKTsKKyAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GUkFNRTsKKyAgICAgICsrY3VyOworICAgICAgbWVzc2FnZV9mbGFncyA9IDA7CisgICAgICBpZiAocC0+aXNfZnJhbWVfY29tcHJlc3NlZCkgeworICAgICAgICBtZXNzYWdlX2ZsYWdzIHw9IEdSUENfV1JJVEVfSU5URVJOQUxfQ09NUFJFU1M7CisgICAgICB9CisgICAgICBwLT5wYXJzaW5nX2ZyYW1lID0gaW5jb21pbmdfYnl0ZV9zdHJlYW0gPQorICAgICAgICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2NyZWF0ZSgKKyAgICAgICAgICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCBzdHJlYW1fcGFyc2luZywgcC0+ZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgICAgbWVzc2FnZV9mbGFncywgJnAtPmluY29taW5nX2ZyYW1lcyk7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRlJBTUU6CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKKyAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgfQorICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfcGFyc2luZ19zZWVuX3N0cmVhbSh0cmFuc3BvcnRfcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmcpOworICAgICAgaWYgKCh1aW50MzJfdCkoZW5kIC0gY3VyKSA9PSBwLT5mcmFtZV9zaXplKSB7CisgICAgICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX3B1c2goCisgICAgICAgICAgICBleGVjX2N0eCwgcC0+cGFyc2luZ19mcmFtZSwKKyAgICAgICAgICAgIGdwcl9zbGljZV9zdWIoc2xpY2UsIChzaXplX3QpKGN1ciAtIGJlZyksIChzaXplX3QpKGVuZCAtIGJlZykpKTsKKyAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fZmluaXNoZWQoZXhlY19jdHgsIHAtPnBhcnNpbmdfZnJhbWUsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOworICAgICAgICBwLT5wYXJzaW5nX2ZyYW1lID0gTlVMTDsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzA7CisgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgIH0gZWxzZSBpZiAoKHVpbnQzMl90KShlbmQgLSBjdXIpID4gcC0+ZnJhbWVfc2l6ZSkgeworICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9wdXNoKAorICAgICAgICAgICAgZXhlY19jdHgsIHAtPnBhcnNpbmdfZnJhbWUsCisgICAgICAgICAgICBncHJfc2xpY2Vfc3ViKHNsaWNlLCAoc2l6ZV90KShjdXIgLSBiZWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShjdXIgKyBwLT5mcmFtZV9zaXplIC0gYmVnKSkpOworICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9maW5pc2hlZChleGVjX2N0eCwgcC0+cGFyc2luZ19mcmFtZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CisgICAgICAgIHAtPnBhcnNpbmdfZnJhbWUgPSBOVUxMOworICAgICAgICBjdXIgKz0gcC0+ZnJhbWVfc2l6ZTsKKyAgICAgICAgZ290byBmaF8wOyAvKiBsb29wICovCisgICAgICB9IGVsc2UgeworICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9wdXNoKAorICAgICAgICAgICAgZXhlY19jdHgsIHAtPnBhcnNpbmdfZnJhbWUsCisgICAgICAgICAgICBncHJfc2xpY2Vfc3ViKHNsaWNlLCAoc2l6ZV90KShjdXIgLSBiZWcpLCAoc2l6ZV90KShlbmQgLSBiZWcpKSk7CisgICAgICAgIEdQUl9BU1NFUlQoKHNpemVfdCkoZW5kIC0gY3VyKSA8PSBwLT5mcmFtZV9zaXplKTsKKyAgICAgICAgcC0+ZnJhbWVfc2l6ZSAtPSAodWludDMyX3QpKGVuZCAtIGN1cik7CisgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgIH0KKyAgfQorCisgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNzYyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfRlJBTUVfREFUQV9ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfRlJBTUVfREFUQV9ICisKKy8qIFBhcnNlciBmb3IgR1JQQyBzdHJlYW1zIGVtYmVkZGVkIGluIERBVEEgZnJhbWVzICovCisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2VfYnVmZmVyLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oIgorCit0eXBlZGVmIGVudW0geworICBHUlBDX0NIVFRQMl9EQVRBX0ZIXzAsCisgIEdSUENfQ0hUVFAyX0RBVEFfRkhfMSwKKyAgR1JQQ19DSFRUUDJfREFUQV9GSF8yLAorICBHUlBDX0NIVFRQMl9EQVRBX0ZIXzMsCisgIEdSUENfQ0hUVFAyX0RBVEFfRkhfNCwKKyAgR1JQQ19DSFRUUDJfREFUQV9GUkFNRQorfSBncnBjX2NodHRwMl9zdHJlYW1fc3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW07CisKK3R5cGVkZWYgc3RydWN0IGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlIHsKKyAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmhlYWQ7CisgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICp0YWlsOworfSBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBncnBjX2NodHRwMl9zdHJlYW1fc3RhdGUgc3RhdGU7CisgIHVpbnQ4X3QgaXNfbGFzdF9mcmFtZTsKKyAgdWludDhfdCBmcmFtZV90eXBlOworICB1aW50MzJfdCBmcmFtZV9zaXplOworCisgIGludCBpc19mcmFtZV9jb21wcmVzc2VkOworICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSBpbmNvbWluZ19mcmFtZXM7CisgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpwYXJzaW5nX2ZyYW1lOworfSBncnBjX2NodHRwMl9kYXRhX3BhcnNlcjsKKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9tZXJnZSgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqaGVhZF9kc3QsCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgKnRhaWxfc3JjKTsKK2dycGNfYnl0ZV9zdHJlYW0gKmdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX3BvcCgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqcSk7CisKKy8qIGluaXRpYWxpemUgcGVyLXN0cmVhbSBzdGF0ZSBmb3IgZGF0YSBmcmFtZSBwYXJzaW5nICovCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9pbml0KAorICAgIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyICpwYXJzZXIpOworCit2b2lkIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlcik7CisKKy8qIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgZGF0YSBmcmFtZSAqLworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlciwgdWludDhfdCBmbGFncyk7CisKKy8qIGhhbmRsZSBhIHNsaWNlIG9mIGEgZGF0YSBmcmFtZSAtIGlzX2xhc3QgaW5kaWNhdGVzIHRoZSBsYXN0IHNsaWNlIG9mIGEKKyAgIGZyYW1lICovCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9wYXJzZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpOworCit2b2lkIGdycGNfY2h0dHAyX2VuY29kZV9kYXRhKHVpbnQzMl90IGlkLCBncHJfc2xpY2VfYnVmZmVyICppbmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd3JpdGVfYnl0ZXMsIGludCBpc19lb2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9idWZmZXIgKm91dGJ1Zik7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX0RBVEFfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OTdmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKwordm9pZCBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2luaXQoZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcCkgeworICBwLT5kZWJ1Z19kYXRhID0gTlVMTDsKK30KKwordm9pZCBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2Rlc3Ryb3koZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcCkgeworICBncHJfZnJlZShwLT5kZWJ1Z19kYXRhKTsKK30KKworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9iZWdpbl9mcmFtZSgKKyAgICBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyICpwLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MpIHsKKyAgaWYgKGxlbmd0aCA8IDgpIHsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwgImdvYXdheSBmcmFtZSB0b28gc2hvcnQgKCVkIGJ5dGVzKSIsIGxlbmd0aCk7CisgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7CisgIH0KKworICBncHJfZnJlZShwLT5kZWJ1Z19kYXRhKTsKKyAgcC0+ZGVidWdfbGVuZ3RoID0gbGVuZ3RoIC0gODsKKyAgcC0+ZGVidWdfZGF0YSA9IGdwcl9tYWxsb2MocC0+ZGVidWdfbGVuZ3RoKTsKKyAgcC0+ZGVidWdfcG9zID0gMDsKKyAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMDsKKyAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworfQorCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX3BhcnNlKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgeworICB1aW50OF90ICpjb25zdCBiZWcgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKKyAgdWludDhfdCAqY29uc3QgZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOworICB1aW50OF90ICpjdXIgPSBiZWc7CisgIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXIgKnAgPSBwYXJzZXI7CisKKyAgc3dpdGNoIChwLT5zdGF0ZSkgeworICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTA6CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kwOworICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICB9CisgICAgICBwLT5sYXN0X3N0cmVhbV9pZCA9ICgodWludDMyX3QpKmN1cikgPDwgMjQ7CisgICAgICArK2N1cjsKKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTE6CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kxOworICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICB9CisgICAgICBwLT5sYXN0X3N0cmVhbV9pZCB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDE2OworICAgICAgKytjdXI7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kyOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMjsKKyAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgfQorICAgICAgcC0+bGFzdF9zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCA4OworICAgICAgKytjdXI7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kzOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMzsKKyAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgfQorICAgICAgcC0+bGFzdF9zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKTsKKyAgICAgICsrY3VyOworICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgY2FzZSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMDoKKyAgICAgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfR09BV0FZX0VSUjA7CisgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgIH0KKyAgICAgIHAtPmVycm9yX2NvZGUgPSAoKHVpbnQzMl90KSpjdXIpIDw8IDI0OworICAgICAgKytjdXI7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIxOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMTsKKyAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgfQorICAgICAgcC0+ZXJyb3JfY29kZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDE2OworICAgICAgKytjdXI7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIyOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMjsKKyAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgfQorICAgICAgcC0+ZXJyb3JfY29kZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDg7CisgICAgICArK2N1cjsKKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0VSUjM6CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIzOworICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICB9CisgICAgICBwLT5lcnJvcl9jb2RlIHw9ICgodWludDMyX3QpKmN1cik7CisgICAgICArK2N1cjsKKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0RFQlVHOgorICAgICAgbWVtY3B5KHAtPmRlYnVnX2RhdGEgKyBwLT5kZWJ1Z19wb3MsIGN1ciwgKHNpemVfdCkoZW5kIC0gY3VyKSk7CisgICAgICBHUFJfQVNTRVJUKChzaXplX3QpKGVuZCAtIGN1cikgPCBVSU5UMzJfTUFYIC0gcC0+ZGVidWdfcG9zKTsKKyAgICAgIHAtPmRlYnVnX3BvcyArPSAodWludDMyX3QpKGVuZCAtIGN1cik7CisgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9ERUJVRzsKKyAgICAgIGlmIChpc19sYXN0KSB7CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQgPSAxOworICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X2xhc3Rfc3RyZWFtX2luZGV4ID0gcC0+bGFzdF9zdHJlYW1faWQ7CisgICAgICAgIGdwcl9zbGljZV91bnJlZih0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X3RleHQpOworICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X2Vycm9yID0gKGdycGNfc3RhdHVzX2NvZGUpcC0+ZXJyb3JfY29kZTsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV90ZXh0ID0KKyAgICAgICAgICAgIGdwcl9zbGljZV9uZXcocC0+ZGVidWdfZGF0YSwgcC0+ZGVidWdfbGVuZ3RoLCBncHJfZnJlZSk7CisgICAgICAgIHAtPmRlYnVnX2RhdGEgPSBOVUxMOworICAgICAgfQorICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICB9CisgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9nb2F3YXlfYXBwZW5kKHVpbnQzMl90IGxhc3Rfc3RyZWFtX2lkLCB1aW50MzJfdCBlcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBkZWJ1Z19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9idWZmZXIgKnNsaWNlX2J1ZmZlcikgeworICBncHJfc2xpY2UgaGVhZGVyID0gZ3ByX3NsaWNlX21hbGxvYyg5ICsgNCArIDQpOworICB1aW50OF90ICpwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihoZWFkZXIpOworICB1aW50MzJfdCBmcmFtZV9sZW5ndGg7CisgIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSChkZWJ1Z19kYXRhKSA8IFVJTlQzMl9NQVggLSA0IC0gNCk7CisgIGZyYW1lX2xlbmd0aCA9IDQgKyA0ICsgKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgoZGVidWdfZGF0YSk7CisKKyAgLyogZnJhbWUgaGVhZGVyOiBsZW5ndGggKi8KKyAgKnArKyA9ICh1aW50OF90KShmcmFtZV9sZW5ndGggPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGZyYW1lX2xlbmd0aCA+PiA4KTsKKyAgKnArKyA9ICh1aW50OF90KShmcmFtZV9sZW5ndGgpOworICAvKiBmcmFtZSBoZWFkZXI6IHR5cGUgKi8KKyAgKnArKyA9IEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWTsKKyAgLyogZnJhbWUgaGVhZGVyOiBmbGFncyAqLworICAqcCsrID0gMDsKKyAgLyogZnJhbWUgaGVhZGVyOiBzdHJlYW0gaWQgKi8KKyAgKnArKyA9IDA7CisgICpwKysgPSAwOworICAqcCsrID0gMDsKKyAgKnArKyA9IDA7CisgIC8qIHBheWxvYWQ6IGxhc3Qgc3RyZWFtIGlkICovCisgICpwKysgPSAodWludDhfdCkobGFzdF9zdHJlYW1faWQgPj4gMjQpOworICAqcCsrID0gKHVpbnQ4X3QpKGxhc3Rfc3RyZWFtX2lkID4+IDE2KTsKKyAgKnArKyA9ICh1aW50OF90KShsYXN0X3N0cmVhbV9pZCA+PiA4KTsKKyAgKnArKyA9ICh1aW50OF90KShsYXN0X3N0cmVhbV9pZCk7CisgIC8qIHBheWxvYWQ6IGVycm9yIGNvZGUgKi8KKyAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDI0KTsKKyAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDE2KTsKKyAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKGVycm9yX2NvZGUpOworICBHUFJfQVNTRVJUKHAgPT0gR1BSX1NMSUNFX0VORF9QVFIoaGVhZGVyKSk7CisgIGdwcl9zbGljZV9idWZmZXJfYWRkKHNsaWNlX2J1ZmZlciwgaGVhZGVyKTsKKyAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoc2xpY2VfYnVmZmVyLCBkZWJ1Z19kYXRhKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjU1MTM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9HT0FXQVlfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX0dPQVdBWV9ICisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvZXhlY19jdHguaCIKKwordHlwZWRlZiBlbnVtIHsKKyAgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTAsCisgIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kxLAorICBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMiwKKyAgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTMsCisgIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIwLAorICBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMSwKKyAgR1JQQ19DSFRUUDJfR09BV0FZX0VSUjIsCisgIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIzLAorICBHUlBDX0NIVFRQMl9HT0FXQVlfREVCVUcKK30gZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlX3N0YXRlOworCit0eXBlZGVmIHN0cnVjdCB7CisgIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZV9zdGF0ZSBzdGF0ZTsKKyAgdWludDMyX3QgbGFzdF9zdHJlYW1faWQ7CisgIHVpbnQzMl90IGVycm9yX2NvZGU7CisgIGNoYXIgKmRlYnVnX2RhdGE7CisgIHVpbnQzMl90IGRlYnVnX2xlbmd0aDsKKyAgdWludDMyX3QgZGVidWdfcG9zOworfSBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyOworCit2b2lkIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfaW5pdChncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyICpwKTsKK3ZvaWQgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9kZXN0cm95KGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXIgKnApOworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9iZWdpbl9mcmFtZSgKKyAgICBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncyk7CitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX3BhcnNlKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfZ29hd2F5X2FwcGVuZCh1aW50MzJfdCBsYXN0X3N0cmVhbV9pZCwgdWludDMyX3QgZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2UgZGVidWdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfYnVmZmVyICpzbGljZV9idWZmZXIpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9HT0FXQVlfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAxOTJhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmMKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKworZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3BpbmdfY3JlYXRlKHVpbnQ4X3QgYWNrLCB1aW50OF90ICpvcGFxdWVfOGJ5dGVzKSB7CisgIGdwcl9zbGljZSBzbGljZSA9IGdwcl9zbGljZV9tYWxsb2MoOSArIDgpOworICB1aW50OF90ICpwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7CisKKyAgKnArKyA9IDA7CisgICpwKysgPSAwOworICAqcCsrID0gODsKKyAgKnArKyA9IEdSUENfQ0hUVFAyX0ZSQU1FX1BJTkc7CisgICpwKysgPSBhY2sgPyAxIDogMDsKKyAgKnArKyA9IDA7CisgICpwKysgPSAwOworICAqcCsrID0gMDsKKyAgKnArKyA9IDA7CisgIG1lbWNweShwLCBvcGFxdWVfOGJ5dGVzLCA4KTsKKworICByZXR1cm4gc2xpY2U7Cit9CisKK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyX2JlZ2luX2ZyYW1lKAorICAgIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncykgeworICBpZiAoZmxhZ3MgJiAweGZlIHx8IGxlbmd0aCAhPSA4KSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJpbnZhbGlkIHBpbmc6IGxlbmd0aD0lZCwgZmxhZ3M9JTAyeCIsIGxlbmd0aCwgZmxhZ3MpOworICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICB9CisgIHBhcnNlci0+Ynl0ZSA9IDA7CisgIHBhcnNlci0+aXNfYWNrID0gZmxhZ3M7CisgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKK30KKworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfcGFyc2UoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnBhcnNlciwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KSB7CisgIHVpbnQ4X3QgKmNvbnN0IGJlZyA9IEdQUl9TTElDRV9TVEFSVF9QVFIoc2xpY2UpOworICB1aW50OF90ICpjb25zdCBlbmQgPSBHUFJfU0xJQ0VfRU5EX1BUUihzbGljZSk7CisgIHVpbnQ4X3QgKmN1ciA9IGJlZzsKKyAgZ3JwY19jaHR0cDJfcGluZ19wYXJzZXIgKnAgPSBwYXJzZXI7CisKKyAgd2hpbGUgKHAtPmJ5dGUgIT0gOCAmJiBjdXIgIT0gZW5kKSB7CisgICAgcC0+b3BhcXVlXzhieXRlc1twLT5ieXRlXSA9ICpjdXI7CisgICAgY3VyKys7CisgICAgcC0+Ynl0ZSsrOworICB9CisKKyAgaWYgKHAtPmJ5dGUgPT0gOCkgeworICAgIEdQUl9BU1NFUlQoaXNfbGFzdCk7CisgICAgaWYgKHAtPmlzX2FjaykgeworICAgICAgZ3JwY19jaHR0cDJfYWNrX3BpbmcoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCBwLT5vcGFxdWVfOGJ5dGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF9wYXJzaW5nLT5xYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfcGluZ19jcmVhdGUoMSwgcC0+b3BhcXVlXzhieXRlcykpOworICAgIH0KKyAgfQorCisgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMWQ1MTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9QSU5HX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9QSU5HX0gKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgIHVpbnQ4X3QgYnl0ZTsKKyAgdWludDhfdCBpc19hY2s7CisgIHVpbnQ4X3Qgb3BhcXVlXzhieXRlc1s4XTsKK30gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXI7CisKK2dwcl9zbGljZSBncnBjX2NodHRwMl9waW5nX2NyZWF0ZSh1aW50OF90IGFjaywgdWludDhfdCAqb3BhcXVlXzhieXRlcyk7CisKK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyX2JlZ2luX2ZyYW1lKAorICAgIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncyk7CitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9waW5nX3BhcnNlcl9wYXJzZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9QSU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmMzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5jCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgiCisKK2dwcl9zbGljZSBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh1aW50MzJfdCBpZCwgdWludDMyX3QgY29kZSkgeworICBncHJfc2xpY2Ugc2xpY2UgPSBncHJfc2xpY2VfbWFsbG9jKDEzKTsKKyAgdWludDhfdCAqcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIoc2xpY2UpOworCisgICpwKysgPSAwOworICAqcCsrID0gMDsKKyAgKnArKyA9IDQ7CisgICpwKysgPSBHUlBDX0NIVFRQMl9GUkFNRV9SU1RfU1RSRUFNOworICAqcCsrID0gMDsKKyAgKnArKyA9ICh1aW50OF90KShpZCA+PiAyNCk7CisgICpwKysgPSAodWludDhfdCkoaWQgPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkKTsKKyAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDI0KTsKKyAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDE2KTsKKyAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKGNvZGUpOworCisgIHJldHVybiBzbGljZTsKK30KKworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7CisgIGlmIChsZW5ndGggIT0gNCkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCByc3Rfc3RyZWFtOiBsZW5ndGg9JWQsIGZsYWdzPSUwMngiLCBsZW5ndGgsCisgICAgICAgICAgICBmbGFncyk7CisgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7CisgIH0KKyAgcGFyc2VyLT5ieXRlID0gMDsKKyAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworfQorCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlcl9wYXJzZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKKyAgdWludDhfdCAqY29uc3QgYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7CisgIHVpbnQ4X3QgKmNvbnN0IGVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKKyAgdWludDhfdCAqY3VyID0gYmVnOworICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlciAqcCA9IHBhcnNlcjsKKworICB3aGlsZSAocC0+Ynl0ZSAhPSA0ICYmIGN1ciAhPSBlbmQpIHsKKyAgICBwLT5yZWFzb25fYnl0ZXNbcC0+Ynl0ZV0gPSAqY3VyOworICAgIGN1cisrOworICAgIHAtPmJ5dGUrKzsKKyAgfQorCisgIGlmIChwLT5ieXRlID09IDQpIHsKKyAgICBHUFJfQVNTRVJUKGlzX2xhc3QpOworICAgIHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSA9IDE7CisgICAgc3RyZWFtX3BhcnNpbmctPnNhd19yc3Rfc3RyZWFtID0gMTsKKyAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSAoKCh1aW50MzJfdClwLT5yZWFzb25fYnl0ZXNbMF0pIDw8IDI0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpcC0+cmVhc29uX2J5dGVzWzFdKSA8PCAxNikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KXAtPnJlYXNvbl9ieXRlc1syXSkgPDwgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KXAtPnJlYXNvbl9ieXRlc1szXSkpOworICB9CisKKyAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0ZjEzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX1JTVF9TVFJFQU1fSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX1JTVF9TVFJFQU1fSAorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmgiCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgdWludDhfdCBieXRlOworICB1aW50OF90IHJlYXNvbl9ieXRlc1s0XTsKK30gZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXI7CisKK2dwcl9zbGljZSBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh1aW50MzJfdCBzdHJlYW1faWQsIHVpbnQzMl90IGNvZGUpOworCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlcl9iZWdpbl9mcmFtZSgKKyAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MpOworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfcGFyc2UoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnBhcnNlciwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfRlJBTUVfUlNUX1NUUkVBTV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OWQ4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuYwpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2RlYnVnL3RyYWNlLmgiCisKKyNkZWZpbmUgTUFYX01BWF9IRUFERVJfTElTVF9TSVpFICgxMDI0ICogMTAyNCAqIDEwMjQpCisKKy8qIEhUVFAvMiBtYW5kYXRlZCBpbml0aWFsIGNvbm5lY3Rpb24gc2V0dGluZ3MgKi8KK2NvbnN0IGdycGNfY2h0dHAyX3NldHRpbmdfcGFyYW1ldGVycworICAgIGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcmFtZXRlcnNbR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTXSA9IHsKKyAgICAgICAge05VTEwsIDAsIDAsIDAsIEdSUENfQ0hUVFAyX0RJU0NPTk5FQ1RfT05fSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SfSwKKyAgICAgICAgeyJIRUFERVJfVEFCTEVfU0laRSIsIDQwOTYsIDAsIDB4ZmZmZmZmZmYsCisgICAgICAgICBHUlBDX0NIVFRQMl9DTEFNUF9JTlZBTElEX1ZBTFVFLCBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUn0sCisgICAgICAgIHsiRU5BQkxFX1BVU0giLCAxLCAwLCAxLCBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUsCisgICAgICAgICBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUn0sCisgICAgICAgIHsiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsIDB4ZmZmZmZmZmZ1LCAwLCAweGZmZmZmZmZmdSwKKyAgICAgICAgIEdSUENfQ0hUVFAyX0RJU0NPTk5FQ1RfT05fSU5WQUxJRF9WQUxVRSwgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1J9LAorICAgICAgICB7IklOSVRJQUxfV0lORE9XX1NJWkUiLCA2NTUzNSwgMCwgMHg3ZmZmZmZmZnUsCisgICAgICAgICBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUsCisgICAgICAgICBHUlBDX0NIVFRQMl9GTE9XX0NPTlRST0xfRVJST1J9LAorICAgICAgICB7Ik1BWF9GUkFNRV9TSVpFIiwgMTYzODQsIDE2Mzg0LCAxNjc3NzIxNSwKKyAgICAgICAgIEdSUENfQ0hUVFAyX0RJU0NPTk5FQ1RfT05fSU5WQUxJRF9WQUxVRSwgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1J9LAorICAgICAgICB7Ik1BWF9IRUFERVJfTElTVF9TSVpFIiwgTUFYX01BWF9IRUFERVJfTElTVF9TSVpFLCAwLAorICAgICAgICAgTUFYX01BWF9IRUFERVJfTElTVF9TSVpFLCBHUlBDX0NIVFRQMl9DTEFNUF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1J9LAorfTsKKworc3RhdGljIHVpbnQ4X3QgKmZpbGxfaGVhZGVyKHVpbnQ4X3QgKm91dCwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7CisgICpvdXQrKyA9ICh1aW50OF90KShsZW5ndGggPj4gMTYpOworICAqb3V0KysgPSAodWludDhfdCkobGVuZ3RoID4+IDgpOworICAqb3V0KysgPSAodWludDhfdCkobGVuZ3RoKTsKKyAgKm91dCsrID0gR1JQQ19DSFRUUDJfRlJBTUVfU0VUVElOR1M7CisgICpvdXQrKyA9IGZsYWdzOworICAqb3V0KysgPSAwOworICAqb3V0KysgPSAwOworICAqb3V0KysgPSAwOworICAqb3V0KysgPSAwOworICByZXR1cm4gb3V0OworfQorCitncHJfc2xpY2UgZ3JwY19jaHR0cDJfc2V0dGluZ3NfY3JlYXRlKHVpbnQzMl90ICpvbGQsIGNvbnN0IHVpbnQzMl90ICpuZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZvcmNlX21hc2ssIHNpemVfdCBjb3VudCkgeworICBzaXplX3QgaTsKKyAgdWludDMyX3QgbiA9IDA7CisgIGdwcl9zbGljZSBvdXRwdXQ7CisgIHVpbnQ4X3QgKnA7CisKKyAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICBuICs9IChuZXdbaV0gIT0gb2xkW2ldIHx8IChmb3JjZV9tYXNrICYgKDF1IDw8IGkpKSAhPSAwKTsKKyAgfQorCisgIG91dHB1dCA9IGdwcl9zbGljZV9tYWxsb2MoOSArIDYgKiBuKTsKKyAgcCA9IGZpbGxfaGVhZGVyKEdQUl9TTElDRV9TVEFSVF9QVFIob3V0cHV0KSwgNiAqIG4sIDApOworCisgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgaWYgKG5ld1tpXSAhPSBvbGRbaV0gfHwgKGZvcmNlX21hc2sgJiAoMXUgPDwgaSkpICE9IDApIHsKKyAgICAgIEdQUl9BU1NFUlQoaSk7CisgICAgICAqcCsrID0gKHVpbnQ4X3QpKGkgPj4gOCk7CisgICAgICAqcCsrID0gKHVpbnQ4X3QpKGkpOworICAgICAgKnArKyA9ICh1aW50OF90KShuZXdbaV0gPj4gMjQpOworICAgICAgKnArKyA9ICh1aW50OF90KShuZXdbaV0gPj4gMTYpOworICAgICAgKnArKyA9ICh1aW50OF90KShuZXdbaV0gPj4gOCk7CisgICAgICAqcCsrID0gKHVpbnQ4X3QpKG5ld1tpXSk7CisgICAgICBvbGRbaV0gPSBuZXdbaV07CisgICAgfQorICB9CisKKyAgR1BSX0FTU0VSVChwID09IEdQUl9TTElDRV9FTkRfUFRSKG91dHB1dCkpOworCisgIHJldHVybiBvdXRwdXQ7Cit9CisKK2dwcl9zbGljZSBncnBjX2NodHRwMl9zZXR0aW5nc19hY2tfY3JlYXRlKHZvaWQpIHsKKyAgZ3ByX3NsaWNlIG91dHB1dCA9IGdwcl9zbGljZV9tYWxsb2MoOSk7CisgIGZpbGxfaGVhZGVyKEdQUl9TTElDRV9TVEFSVF9QVFIob3V0cHV0KSwgMCwgR1JQQ19DSFRUUDJfRkxBR19BQ0spOworICByZXR1cm4gb3V0cHV0OworfQorCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncywKKyAgICB1aW50MzJfdCAqc2V0dGluZ3MpIHsKKyAgcGFyc2VyLT50YXJnZXRfc2V0dGluZ3MgPSBzZXR0aW5nczsKKyAgbWVtY3B5KHBhcnNlci0+aW5jb21pbmdfc2V0dGluZ3MsIHNldHRpbmdzLAorICAgICAgICAgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTICogc2l6ZW9mKHVpbnQzMl90KSk7CisgIHBhcnNlci0+aXNfYWNrID0gMDsKKyAgcGFyc2VyLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX1NQU19JRDA7CisgIGlmIChmbGFncyA9PSBHUlBDX0NIVFRQMl9GTEFHX0FDSykgeworICAgIHBhcnNlci0+aXNfYWNrID0gMTsKKyAgICBpZiAobGVuZ3RoICE9IDApIHsKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAibm9uLWVtcHR5IHNldHRpbmdzIGFjayBmcmFtZSByZWNlaXZlZCIpOworICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7CisgICAgfQorICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgfSBlbHNlIGlmIChmbGFncyAhPSAwKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJpbnZhbGlkIGZsYWdzIG9uIHNldHRpbmdzIGZyYW1lIik7CisgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7CisgIH0gZWxzZSBpZiAobGVuZ3RoICUgNiAhPSAwKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJzZXR0aW5ncyBmcmFtZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHNpeCBieXRlcyIpOworICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICB9IGVsc2UgeworICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgfQorfQorCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfcGFyc2UoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnAsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgeworICBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXIgKnBhcnNlciA9IHA7CisgIGNvbnN0IHVpbnQ4X3QgKmN1ciA9IEdQUl9TTElDRV9TVEFSVF9QVFIoc2xpY2UpOworICBjb25zdCB1aW50OF90ICplbmQgPSBHUFJfU0xJQ0VfRU5EX1BUUihzbGljZSk7CisKKyAgaWYgKHBhcnNlci0+aXNfYWNrKSB7CisgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICB9CisKKyAgZm9yICg7OykgeworICAgIHN3aXRjaCAocGFyc2VyLT5zdGF0ZSkgeworICAgICAgY2FzZSBHUlBDX0NIVFRQMl9TUFNfSUQwOgorICAgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICAgIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfSUQwOworICAgICAgICAgIGlmIChpc19sYXN0KSB7CisgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+c2V0dGluZ3NfdXBkYXRlZCA9IDE7CisgICAgICAgICAgICBtZW1jcHkocGFyc2VyLT50YXJnZXRfc2V0dGluZ3MsIHBhcnNlci0+aW5jb21pbmdfc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X3BhcnNpbmctPnFidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zZXR0aW5nc19hY2tfY3JlYXRlKCkpOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT5pZCA9ICh1aW50MTZfdCkoKCh1aW50MTZfdCkqY3VyKSA8PCA4KTsKKyAgICAgICAgY3VyKys7CisgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgY2FzZSBHUlBDX0NIVFRQMl9TUFNfSUQxOgorICAgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICAgIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfSUQxOworICAgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgICAgfQorICAgICAgICBwYXJzZXItPmlkID0gKHVpbnQxNl90KShwYXJzZXItPmlkIHwgKCpjdXIpKTsKKyAgICAgICAgY3VyKys7CisgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgICAgY2FzZSBHUlBDX0NIVFRQMl9TUFNfVkFMMDoKKyAgICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX1ZBTDA7CisgICAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOworICAgICAgICB9CisgICAgICAgIHBhcnNlci0+dmFsdWUgPSAoKHVpbnQzMl90KSpjdXIpIDw8IDI0OworICAgICAgICBjdXIrKzsKKyAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICBjYXNlIEdSUENfQ0hUVFAyX1NQU19WQUwxOgorICAgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICAgIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfVkFMMTsKKyAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT52YWx1ZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDE2OworICAgICAgICBjdXIrKzsKKyAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICBjYXNlIEdSUENfQ0hUVFAyX1NQU19WQUwyOgorICAgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICAgIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfVkFMMjsKKyAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT52YWx1ZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDg7CisgICAgICAgIGN1cisrOworICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICAgIGNhc2UgR1JQQ19DSFRUUDJfU1BTX1ZBTDM6CisgICAgICAgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgICAgICAgcGFyc2VyLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX1NQU19WQUwzOworICAgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX0lEMDsKKyAgICAgICAgfQorICAgICAgICBwYXJzZXItPnZhbHVlIHw9ICpjdXI7CisgICAgICAgIGN1cisrOworCisgICAgICAgIGlmIChwYXJzZXItPmlkID4gMCAmJiBwYXJzZXItPmlkIDwgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTKSB7CisgICAgICAgICAgY29uc3QgZ3JwY19jaHR0cDJfc2V0dGluZ19wYXJhbWV0ZXJzICpzcCA9CisgICAgICAgICAgICAgICZncnBjX2NodHRwMl9zZXR0aW5nc19wYXJhbWV0ZXJzW3BhcnNlci0+aWRdOworICAgICAgICAgIGlmIChwYXJzZXItPnZhbHVlIDwgc3AtPm1pbl92YWx1ZSB8fCBwYXJzZXItPnZhbHVlID4gc3AtPm1heF92YWx1ZSkgeworICAgICAgICAgICAgc3dpdGNoIChzcC0+aW52YWxpZF92YWx1ZV9iZWhhdmlvcikgeworICAgICAgICAgICAgICBjYXNlIEdSUENfQ0hUVFAyX0NMQU1QX0lOVkFMSURfVkFMVUU6CisgICAgICAgICAgICAgICAgcGFyc2VyLT52YWx1ZSA9CisgICAgICAgICAgICAgICAgICAgIEdQUl9DTEFNUChwYXJzZXItPnZhbHVlLCBzcC0+bWluX3ZhbHVlLCBzcC0+bWF4X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUU6CisgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfZ29hd2F5X2FwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmxhc3RfaW5jb21pbmdfc3RyZWFtX2lkLCBzcC0+ZXJyb3JfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9mcm9tX3N0YXRpY19zdHJpbmcoIkhUVFAyIHNldHRpbmdzIGVycm9yIiksCisgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfcGFyc2luZy0+cWJ1Zik7CisgICAgICAgICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJpbnZhbGlkIHZhbHVlICV1IHBhc3NlZCBmb3IgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT52YWx1ZSwgc3AtPm5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpZiAocGFyc2VyLT5pZCA9PSBHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFICYmCisgICAgICAgICAgICAgIHBhcnNlci0+aW5jb21pbmdfc2V0dGluZ3NbcGFyc2VyLT5pZF0gIT0gcGFyc2VyLT52YWx1ZSkgeworICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluaXRpYWxfd2luZG93X3VwZGF0ZSA9CisgICAgICAgICAgICAgICAgKGludDY0X3QpcGFyc2VyLT52YWx1ZSAtIHBhcnNlci0+aW5jb21pbmdfc2V0dGluZ3NbcGFyc2VyLT5pZF07CisgICAgICAgICAgICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7CisgICAgICAgICAgICAgIGdwcl9sb2coR1BSX0RFQlVHLCAiYWRkaW5nICVkIGZvciBpbml0aWFsX3dpbmRvdyBjaGFuZ2UiLAorICAgICAgICAgICAgICAgICAgICAgIChpbnQpdHJhbnNwb3J0X3BhcnNpbmctPmluaXRpYWxfd2luZG93X3VwZGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIHBhcnNlci0+aW5jb21pbmdfc2V0dGluZ3NbcGFyc2VyLT5pZF0gPSBwYXJzZXItPnZhbHVlOworICAgICAgICAgIGlmIChncnBjX2h0dHBfdHJhY2UpIHsKKyAgICAgICAgICAgIGdwcl9sb2coR1BSX0RFQlVHLCAiQ0hUVFAyOiVzOiBnb3Qgc2V0dGluZyAlZCA9ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmlzX2NsaWVudCA/ICJDTEkiIDogIlNWUiIsIHBhcnNlci0+aWQsCisgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+dmFsdWUpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIkNIVFRQMjogSWdub3JpbmcgdW5rbm93biBzZXR0aW5nICVkICh2YWx1ZSAlZCkiLAorICAgICAgICAgICAgICAgICAgcGFyc2VyLT5pZCwgcGFyc2VyLT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNTI0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX1NFVFRJTkdTX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9TRVRUSU5HU19ICisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgorCit0eXBlZGVmIGVudW0geworICBHUlBDX0NIVFRQMl9TUFNfSUQwLAorICBHUlBDX0NIVFRQMl9TUFNfSUQxLAorICBHUlBDX0NIVFRQMl9TUFNfVkFMMCwKKyAgR1JQQ19DSFRUUDJfU1BTX1ZBTDEsCisgIEdSUENfQ0hUVFAyX1NQU19WQUwyLAorICBHUlBDX0NIVFRQMl9TUFNfVkFMMworfSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZV9zdGF0ZTsKKworLyogVGhlIHRoaW5ncyBIVFRQLzIgZGVmaW5lcyBhcyBjb25uZWN0aW9uIGxldmVsIHNldHRpbmdzICovCit0eXBlZGVmIGVudW0geworICBHUlBDX0NIVFRQMl9TRVRUSU5HU19IRUFERVJfVEFCTEVfU0laRSA9IDEsCisgIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0VOQUJMRV9QVVNIID0gMiwKKyAgR1JQQ19DSFRUUDJfU0VUVElOR1NfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9IDMsCisgIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0lOSVRJQUxfV0lORE9XX1NJWkUgPSA0LAorICBHUlBDX0NIVFRQMl9TRVRUSU5HU19NQVhfRlJBTUVfU0laRSA9IDUsCisgIEdSUENfQ0hUVFAyX1NFVFRJTkdTX01BWF9IRUFERVJfTElTVF9TSVpFID0gNiwKKyAgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTCit9IGdycGNfY2h0dHAyX3NldHRpbmdfaWQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2Vfc3RhdGUgc3RhdGU7CisgIHVpbnQzMl90ICp0YXJnZXRfc2V0dGluZ3M7CisgIHVpbnQ4X3QgaXNfYWNrOworICB1aW50MTZfdCBpZDsKKyAgdWludDMyX3QgdmFsdWU7CisgIHVpbnQzMl90IGluY29taW5nX3NldHRpbmdzW0dSUENfQ0hUVFAyX05VTV9TRVRUSU5HU107Cit9IGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcnNlcjsKKwordHlwZWRlZiBlbnVtIHsKKyAgR1JQQ19DSFRUUDJfQ0xBTVBfSU5WQUxJRF9WQUxVRSwKKyAgR1JQQ19DSFRUUDJfRElTQ09OTkVDVF9PTl9JTlZBTElEX1ZBTFVFCit9IGdycGNfY2h0dHAyX2ludmFsaWRfdmFsdWVfYmVoYXZpb3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgY29uc3QgY2hhciAqbmFtZTsKKyAgdWludDMyX3QgZGVmYXVsdF92YWx1ZTsKKyAgdWludDMyX3QgbWluX3ZhbHVlOworICB1aW50MzJfdCBtYXhfdmFsdWU7CisgIGdycGNfY2h0dHAyX2ludmFsaWRfdmFsdWVfYmVoYXZpb3IgaW52YWxpZF92YWx1ZV9iZWhhdmlvcjsKKyAgdWludDMyX3QgZXJyb3JfdmFsdWU7Cit9IGdycGNfY2h0dHAyX3NldHRpbmdfcGFyYW1ldGVyczsKKworLyogSFRUUC8yIG1hbmRhdGVkIGNvbm5lY3Rpb24gc2V0dGluZyBwYXJhbWV0ZXJzICovCitleHRlcm4gY29uc3QgZ3JwY19jaHR0cDJfc2V0dGluZ19wYXJhbWV0ZXJzCisgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyYW1ldGVyc1tHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1NdOworCisvKiBDcmVhdGUgYSBzZXR0aW5ncyBmcmFtZSBieSBkaWZmaW5nIG9sZCAmIG5ldywgYW5kIHVwZGF0aW5nIG9sZCB0byBiZSBuZXcgKi8KK2dwcl9zbGljZSBncnBjX2NodHRwMl9zZXR0aW5nc19jcmVhdGUodWludDMyX3QgKm9sZCwgY29uc3QgdWludDMyX3QgKm5ldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZm9yY2VfbWFzaywgc2l6ZV90IGNvdW50KTsKKy8qIENyZWF0ZSBhbiBhY2sgc2V0dGluZ3MgZnJhbWUgKi8KK2dwcl9zbGljZSBncnBjX2NodHRwMl9zZXR0aW5nc19hY2tfY3JlYXRlKHZvaWQpOworCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncywKKyAgICB1aW50MzJfdCAqc2V0dGluZ3MpOworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyX3BhcnNlKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0ZSQU1FX1NFVFRJTkdTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNTYxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKworZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfY3JlYXRlKHVpbnQzMl90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdpbmRvd191cGRhdGUpIHsKKyAgZ3ByX3NsaWNlIHNsaWNlID0gZ3ByX3NsaWNlX21hbGxvYygxMyk7CisgIHVpbnQ4X3QgKnAgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKKworICBHUFJfQVNTRVJUKHdpbmRvd191cGRhdGUpOworCisgICpwKysgPSAwOworICAqcCsrID0gMDsKKyAgKnArKyA9IDQ7CisgICpwKysgPSBHUlBDX0NIVFRQMl9GUkFNRV9XSU5ET1dfVVBEQVRFOworICAqcCsrID0gMDsKKyAgKnArKyA9ICh1aW50OF90KShpZCA+PiAyNCk7CisgICpwKysgPSAodWludDhfdCkoaWQgPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKGlkKTsKKyAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDI0KTsKKyAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDE2KTsKKyAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDgpOworICAqcCsrID0gKHVpbnQ4X3QpKHdpbmRvd191cGRhdGUpOworCisgIHJldHVybiBzbGljZTsKK30KKworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7CisgIGlmIChmbGFncyB8fCBsZW5ndGggIT0gNCkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCB3aW5kb3cgdXBkYXRlOiBsZW5ndGg9JWQsIGZsYWdzPSUwMngiLCBsZW5ndGgsCisgICAgICAgICAgICBmbGFncyk7CisgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7CisgIH0KKyAgcGFyc2VyLT5ieXRlID0gMDsKKyAgcGFyc2VyLT5hbW91bnQgPSAwOworICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Cit9CisKK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX3BhcnNlKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgeworICB1aW50OF90ICpjb25zdCBiZWcgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKKyAgdWludDhfdCAqY29uc3QgZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOworICB1aW50OF90ICpjdXIgPSBiZWc7CisgIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyICpwID0gcGFyc2VyOworCisgIHdoaWxlIChwLT5ieXRlICE9IDQgJiYgY3VyICE9IGVuZCkgeworICAgIHAtPmFtb3VudCB8PSAoKHVpbnQzMl90KSpjdXIpIDw8ICg4ICogKDMgLSBwLT5ieXRlKSk7CisgICAgY3VyKys7CisgICAgcC0+Ynl0ZSsrOworICB9CisKKyAgaWYgKHAtPmJ5dGUgPT0gNCkgeworICAgIHVpbnQzMl90IHJlY2VpdmVkX3VwZGF0ZSA9IHAtPmFtb3VudDsKKyAgICBpZiAocmVjZWl2ZWRfdXBkYXRlID09IDAgfHwgKHJlY2VpdmVkX3VwZGF0ZSAmIDB4ODAwMDAwMDB1KSkgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJpbnZhbGlkIHdpbmRvdyB1cGRhdGUgYnl0ZXM6ICVkIiwgcC0+YW1vdW50KTsKKyAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICAgIH0KKyAgICBHUFJfQVNTRVJUKGlzX2xhc3QpOworCisgICAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgIT0gMCkgeworICAgICAgaWYgKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwpIHsKKyAgICAgICAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmcsIG91dGdvaW5nX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkX3VwZGF0ZSk7CisgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmcpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9UUkFOU1BPUlQoInBhcnNlIiwgdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCByZWNlaXZlZF91cGRhdGUpOworICAgIH0KKyAgfQorCisgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZjY3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9XSU5ET1dfVVBEQVRFX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9GUkFNRV9XSU5ET1dfVVBEQVRFX0gKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgIHVpbnQ4X3QgYnl0ZTsKKyAgdWludDhfdCBpc19jb25uZWN0aW9uX3VwZGF0ZTsKKyAgdWludDMyX3QgYW1vdW50OworfSBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX3BhcnNlcjsKKworZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfY3JlYXRlKHVpbnQzMl90IGlkLCB1aW50MzJfdCB3aW5kb3dfZGVsdGEpOworCitncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX3BhcnNlcl9iZWdpbl9mcmFtZSgKKyAgICBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MpOworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXJfcGFyc2UoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnBhcnNlciwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfRlJBTUVfV0lORE9XX1VQREFURV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTlhZGRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuYwpAQCAtMCwwICsxLDU2OCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyogVGhpcyBpcyBoZXJlIGZvciBncnBjX2lzX2JpbmFyeV9oZWFkZXIKKyAqIFRPRE8obXVyZ2F0cm9pZDk5KTogUmVtb3ZlIHRoaXMKKyAqLworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCisKKyNkZWZpbmUgSEFTSF9GUkFHTUVOVF8xKHgpICgoeCkmMjU1KQorI2RlZmluZSBIQVNIX0ZSQUdNRU5UXzIoeCkgKCh4ID4+IDgpICYgMjU1KQorI2RlZmluZSBIQVNIX0ZSQUdNRU5UXzMoeCkgKCh4ID4+IDE2KSAmIDI1NSkKKyNkZWZpbmUgSEFTSF9GUkFHTUVOVF80KHgpICgoeCA+PiAyNCkgJiAyNTUpCisKKy8qIGlmIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGlzIGl0ZW0gYmVpbmcgc2VlbiBhZ2FpbiBpcyA8IDEveCB0aGVuIGRvbid0IGFkZAorICAgaXQgdG8gdGhlIHRhYmxlICovCisjZGVmaW5lIE9ORV9PTl9BRERfUFJPQkFCSUxJVFkgMTI4CisvKiBkb24ndCBjb25zaWRlciBhZGRpbmcgYW55dGhpbmcgYmlnZ2VyIHRoYW4gdGhpcyB0byB0aGUgaHBhY2sgdGFibGUgKi8KKyNkZWZpbmUgTUFYX0RFQ09ERVJfU1BBQ0VfVVNBR0UgNTEyCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgaW50IGlzX2ZpcnN0X2ZyYW1lOworICAvKiBudW1iZXIgb2YgYnl0ZXMgaW4gJ291dHB1dCcgd2hlbiB3ZSBzdGFydGVkIHRoZSBmcmFtZSAtIHVzZWQgdG8gY2FsY3VsYXRlCisgICAgIGZyYW1lIGxlbmd0aCAqLworICBzaXplX3Qgb3V0cHV0X2xlbmd0aF9hdF9zdGFydF9vZl9mcmFtZTsKKyAgLyogaW5kZXggKGluIG91dHB1dCkgb2YgdGhlIGhlYWRlciBmb3IgdGhlIGN1cnJlbnQgZnJhbWUgKi8KKyAgc2l6ZV90IGhlYWRlcl9pZHg7CisgIC8qIGhhdmUgd2Ugc2VlbiBhIHJlZ3VsYXIgKG5vbi1jb2xvbi1wcmVmaXhlZCkgaGVhZGVyIHlldD8gKi8KKyAgdWludDhfdCBzZWVuX3JlZ3VsYXJfaGVhZGVyOworICAvKiBvdXRwdXQgc3RyZWFtIGlkICovCisgIHVpbnQzMl90IHN0cmVhbV9pZDsKKyAgZ3ByX3NsaWNlX2J1ZmZlciAqb3V0cHV0OworfSBmcmFtZXJfc3RhdGU7CisKKy8qIGZpbGxzIHAgKHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIDkgYnl0ZXMgbG9uZykgd2l0aCBhIGRhdGEgZnJhbWUgaGVhZGVyICovCitzdGF0aWMgdm9pZCBmaWxsX2hlYWRlcih1aW50OF90ICpwLCB1aW50OF90IHR5cGUsIHVpbnQzMl90IGlkLCBzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmbGFncykgeworICBHUFJfQVNTRVJUKGxlbiA8IDE2Nzc3MzE2KTsKKyAgKnArKyA9ICh1aW50OF90KShsZW4gPj4gMTYpOworICAqcCsrID0gKHVpbnQ4X3QpKGxlbiA+PiA4KTsKKyAgKnArKyA9ICh1aW50OF90KShsZW4pOworICAqcCsrID0gdHlwZTsKKyAgKnArKyA9IGZsYWdzOworICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDI0KTsKKyAgKnArKyA9ICh1aW50OF90KShpZCA+PiAxNik7CisgICpwKysgPSAodWludDhfdCkoaWQgPj4gOCk7CisgICpwKysgPSAodWludDhfdCkoaWQpOworfQorCisvKiBmaW5pc2ggYSBmcmFtZSAtIGZpbGwgaW4gdGhlIHByZXZpb3VzbHkgcmVzZXJ2ZWQgaGVhZGVyICovCitzdGF0aWMgdm9pZCBmaW5pc2hfZnJhbWUoZnJhbWVyX3N0YXRlICpzdCwgaW50IGlzX2hlYWRlcl9ib3VuZGFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNfbGFzdF9pbl9zdHJlYW0pIHsKKyAgdWludDhfdCB0eXBlID0gMHhmZjsKKyAgdHlwZSA9IHN0LT5pc19maXJzdF9mcmFtZSA/IEdSUENfQ0hUVFAyX0ZSQU1FX0hFQURFUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogR1JQQ19DSFRUUDJfRlJBTUVfQ09OVElOVUFUSU9OOworICBmaWxsX2hlYWRlcigKKyAgICAgIEdQUl9TTElDRV9TVEFSVF9QVFIoc3QtPm91dHB1dC0+c2xpY2VzW3N0LT5oZWFkZXJfaWR4XSksIHR5cGUsCisgICAgICBzdC0+c3RyZWFtX2lkLCBzdC0+b3V0cHV0LT5sZW5ndGggLSBzdC0+b3V0cHV0X2xlbmd0aF9hdF9zdGFydF9vZl9mcmFtZSwKKyAgICAgICh1aW50OF90KSgoaXNfbGFzdF9pbl9zdHJlYW0gPyBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSA6IDApIHwKKyAgICAgICAgICAgICAgICAoaXNfaGVhZGVyX2JvdW5kYXJ5ID8gR1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9IRUFERVJTIDogMCkpKTsKKyAgc3QtPmlzX2ZpcnN0X2ZyYW1lID0gMDsKK30KKworLyogYmVnaW4gYSBuZXcgZnJhbWU6IHJlc2VydmUgb2ZmIGhlYWRlciBzcGFjZSwgcmVtZW1iZXIgaG93IG1hbnkgYnl0ZXMgd2UnZAorICAgb3V0cHV0IGJlZm9yZSBiZWdpbm5pbmcgKi8KK3N0YXRpYyB2b2lkIGJlZ2luX2ZyYW1lKGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgc3QtPmhlYWRlcl9pZHggPQorICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGRfaW5kZXhlZChzdC0+b3V0cHV0LCBncHJfc2xpY2VfbWFsbG9jKDkpKTsKKyAgc3QtPm91dHB1dF9sZW5ndGhfYXRfc3RhcnRfb2ZfZnJhbWUgPSBzdC0+b3V0cHV0LT5sZW5ndGg7Cit9CisKKy8qIG1ha2Ugc3VyZSB0aGF0IHRoZSBjdXJyZW50IGZyYW1lIGlzIG9mIHRoZSB0eXBlIGRlc2lyZWQsIGFuZCBoYXMgc3VmZmljaWVudAorICAgc3BhY2UgdG8gYWRkIGF0IGxlYXN0IGFib3V0X3RvX2FkZCBieXRlcyAtLSBmaW5pc2hlcyB0aGUgY3VycmVudCBmcmFtZSBpZgorICAgbmVlZGVkICovCitzdGF0aWMgdm9pZCBlbnN1cmVfc3BhY2UoZnJhbWVyX3N0YXRlICpzdCwgc2l6ZV90IG5lZWRfYnl0ZXMpIHsKKyAgaWYgKHN0LT5vdXRwdXQtPmxlbmd0aCAtIHN0LT5vdXRwdXRfbGVuZ3RoX2F0X3N0YXJ0X29mX2ZyYW1lICsgbmVlZF9ieXRlcyA8PQorICAgICAgR1JQQ19DSFRUUDJfTUFYX1BBWUxPQURfTEVOR1RIKSB7CisgICAgcmV0dXJuOworICB9CisgIGZpbmlzaF9mcmFtZShzdCwgMCwgMCk7CisgIGJlZ2luX2ZyYW1lKHN0KTsKK30KKworLyogaW5jcmVtZW50IGEgZmlsdGVyIGNvdW50LCBoYWx2ZSBhbGwgY291bnRzIGlmIG9uZSBlbGVtZW50IHJlYWNoZXMgbWF4ICovCitzdGF0aWMgdm9pZCBpbmNfZmlsdGVyKHVpbnQ4X3QgaWR4LCB1aW50MzJfdCAqc3VtLCB1aW50OF90ICplbGVtcykgeworICBlbGVtc1tpZHhdKys7CisgIGlmIChlbGVtc1tpZHhdIDwgMjU1KSB7CisgICAgKCpzdW0pKys7CisgIH0gZWxzZSB7CisgICAgaW50IGk7CisgICAgKnN1bSA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IEdSUENfQ0hUVFAyX0hQQUNLQ19OVU1fRklMVEVSUzsgaSsrKSB7CisgICAgICBlbGVtc1tpXSAvPSAyOworICAgICAgKCpzdW0pICs9IGVsZW1zW2ldOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBhZGRfaGVhZGVyX2RhdGEoZnJhbWVyX3N0YXRlICpzdCwgZ3ByX3NsaWNlIHNsaWNlKSB7CisgIHNpemVfdCBsZW4gPSBHUFJfU0xJQ0VfTEVOR1RIKHNsaWNlKTsKKyAgc2l6ZV90IHJlbWFpbmluZzsKKyAgaWYgKGxlbiA9PSAwKSByZXR1cm47CisgIHJlbWFpbmluZyA9IEdSUENfQ0hUVFAyX01BWF9QQVlMT0FEX0xFTkdUSCArCisgICAgICAgICAgICAgIHN0LT5vdXRwdXRfbGVuZ3RoX2F0X3N0YXJ0X29mX2ZyYW1lIC0gc3QtPm91dHB1dC0+bGVuZ3RoOworICBpZiAobGVuIDw9IHJlbWFpbmluZykgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKHN0LT5vdXRwdXQsIHNsaWNlKTsKKyAgfSBlbHNlIHsKKyAgICBncHJfc2xpY2VfYnVmZmVyX2FkZChzdC0+b3V0cHV0LCBncHJfc2xpY2Vfc3BsaXRfaGVhZCgmc2xpY2UsIHJlbWFpbmluZykpOworICAgIGZpbmlzaF9mcmFtZShzdCwgMCwgMCk7CisgICAgYmVnaW5fZnJhbWUoc3QpOworICAgIGFkZF9oZWFkZXJfZGF0YShzdCwgc2xpY2UpOworICB9Cit9CisKK3N0YXRpYyB1aW50OF90ICphZGRfdGlueV9oZWFkZXJfZGF0YShmcmFtZXJfc3RhdGUgKnN0LCBzaXplX3QgbGVuKSB7CisgIGVuc3VyZV9zcGFjZShzdCwgbGVuKTsKKyAgcmV0dXJuIGdwcl9zbGljZV9idWZmZXJfdGlueV9hZGQoc3QtPm91dHB1dCwgbGVuKTsKK30KKworc3RhdGljIHZvaWQgZXZpY3RfZW50cnkoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYykgeworICBjLT50YWlsX3JlbW90ZV9pbmRleCsrOworICBHUFJfQVNTRVJUKGMtPnRhaWxfcmVtb3RlX2luZGV4ID4gMCk7CisgIEdQUl9BU1NFUlQoYy0+dGFibGVfc2l6ZSA+PQorICAgICAgICAgICAgIGMtPnRhYmxlX2VsZW1fc2l6ZVtjLT50YWlsX3JlbW90ZV9pbmRleCAlIGMtPmNhcF90YWJsZV9lbGVtc10pOworICBHUFJfQVNTRVJUKGMtPnRhYmxlX2VsZW1zID4gMCk7CisgIGMtPnRhYmxlX3NpemUgPQorICAgICAgKHVpbnQxNl90KShjLT50YWJsZV9zaXplIC0KKyAgICAgICAgICAgICAgICAgYy0+dGFibGVfZWxlbV9zaXplW2MtPnRhaWxfcmVtb3RlX2luZGV4ICUgYy0+Y2FwX3RhYmxlX2VsZW1zXSk7CisgIGMtPnRhYmxlX2VsZW1zLS07Cit9CisKKy8qIGFkZCBhbiBlbGVtZW50IHRvIHRoZSBkZWNvZGVyIHRhYmxlICovCitzdGF0aWMgdm9pZCBhZGRfZWxlbShncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCBncnBjX21kZWxlbSAqZWxlbSkgeworICB1aW50MzJfdCBrZXlfaGFzaCA9IGVsZW0tPmtleS0+aGFzaDsKKyAgdWludDMyX3QgZWxlbV9oYXNoID0gR1JQQ19NRFNUUl9LVl9IQVNIKGtleV9oYXNoLCBlbGVtLT52YWx1ZS0+aGFzaCk7CisgIHVpbnQzMl90IG5ld19pbmRleCA9IGMtPnRhaWxfcmVtb3RlX2luZGV4ICsgYy0+dGFibGVfZWxlbXMgKyAxOworICBzaXplX3QgZWxlbV9zaXplID0gMzIgKyBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpICsKKyAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgoZWxlbS0+dmFsdWUtPnNsaWNlKTsKKworICBHUFJfQVNTRVJUKGVsZW1fc2l6ZSA8IDY1NTM2KTsKKworICBpZiAoZWxlbV9zaXplID4gYy0+bWF4X3RhYmxlX3NpemUpIHsKKyAgICB3aGlsZSAoYy0+dGFibGVfc2l6ZSA+IDApIHsKKyAgICAgIGV2aWN0X2VudHJ5KGMpOworICAgIH0KKyAgICByZXR1cm47CisgIH0KKworICAvKiBSZXNlcnZlIHNwYWNlIGZvciB0aGlzIGVsZW1lbnQgaW4gdGhlIHJlbW90ZSB0YWJsZTogaWYgdGhpcyBvdmVyZmxvd3MKKyAgICAgdGhlIGN1cnJlbnQgdGFibGUsIGRyb3AgZWxlbWVudHMgdW50aWwgaXQgZml0cywgbWF0Y2hpbmcgdGhlIGRlY29tcHJlc3NvcgorICAgICBhbGdvcml0aG0gKi8KKyAgd2hpbGUgKGMtPnRhYmxlX3NpemUgKyBlbGVtX3NpemUgPiBjLT5tYXhfdGFibGVfc2l6ZSkgeworICAgIGV2aWN0X2VudHJ5KGMpOworICB9CisgIEdQUl9BU1NFUlQoYy0+dGFibGVfZWxlbXMgPCBjLT5tYXhfdGFibGVfc2l6ZSk7CisgIGMtPnRhYmxlX2VsZW1fc2l6ZVtuZXdfaW5kZXggJSBjLT5jYXBfdGFibGVfZWxlbXNdID0gKHVpbnQxNl90KWVsZW1fc2l6ZTsKKyAgYy0+dGFibGVfc2l6ZSA9ICh1aW50MTZfdCkoYy0+dGFibGVfc2l6ZSArIGVsZW1fc2l6ZSk7CisgIGMtPnRhYmxlX2VsZW1zKys7CisKKyAgLyogU3RvcmUgdGhpcyBlbGVtZW50IGludG8ge2VudHJpZXMsaW5kaWNlc31fZWxlbSAqLworICBpZiAoYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0gPT0gZWxlbSkgeworICAgIC8qIGFscmVhZHkgdGhlcmU6IHVwZGF0ZSB3aXRoIG5ldyBpbmRleCAqLworICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID0gbmV3X2luZGV4OworICB9IGVsc2UgaWYgKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID09IGVsZW0pIHsKKyAgICAvKiBhbHJlYWR5IHRoZXJlIChjdWNrb28pOiB1cGRhdGUgd2l0aCBuZXcgaW5kZXggKi8KKyAgICBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSA9IG5ld19pbmRleDsKKyAgfSBlbHNlIGlmIChjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA9PSBOVUxMKSB7CisgICAgLyogbm90IHRoZXJlLCBidXQgYSBmcmVlIGVsZW1lbnQ6IGFkZCAqLworICAgIGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID0gR1JQQ19NREVMRU1fUkVGKGVsZW0pOworICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID0gbmV3X2luZGV4OworICB9IGVsc2UgaWYgKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID09IE5VTEwpIHsKKyAgICAvKiBub3QgdGhlcmUgKGN1Y2tvbyksIGJ1dCBhIGZyZWUgZWxlbWVudDogYWRkICovCisgICAgYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPSBHUlBDX01ERUxFTV9SRUYoZWxlbSk7CisgICAgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPSBuZXdfaW5kZXg7CisgIH0gZWxzZSBpZiAoYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0gPAorICAgICAgICAgICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldKSB7CisgICAgLyogbm90IHRoZXJlOiByZXBsYWNlIG9sZGVzdCAqLworICAgIEdSUENfTURFTEVNX1VOUkVGKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldKTsKKyAgICBjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA9IEdSUENfTURFTEVNX1JFRihlbGVtKTsKKyAgICBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA9IG5ld19pbmRleDsKKyAgfSBlbHNlIHsKKyAgICAvKiBub3QgdGhlcmU6IHJlcGxhY2Ugb2xkZXN0ICovCisgICAgR1JQQ19NREVMRU1fVU5SRUYoYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0pOworICAgIGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID0gR1JQQ19NREVMRU1fUkVGKGVsZW0pOworICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID0gbmV3X2luZGV4OworICB9CisKKyAgLyogZG8gZXhhY3RseSB0aGUgc2FtZSBmb3IgdGhlIGtleSAoc28gd2UgY2FuIGZpbmQgYnkgdGhhdCBhZ2FpbiB0b28pICovCisKKyAgaWYgKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSA9PSBlbGVtLT5rZXkpIHsKKyAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPSBuZXdfaW5kZXg7CisgIH0gZWxzZSBpZiAoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID09IGVsZW0tPmtleSkgeworICAgIGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSA9IG5ld19pbmRleDsKKyAgfSBlbHNlIGlmIChjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPT0gTlVMTCkgeworICAgIGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSA9IEdSUENfTURTVFJfUkVGKGVsZW0tPmtleSk7CisgICAgYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldID0gbmV3X2luZGV4OworICB9IGVsc2UgaWYgKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSA9PSBOVUxMKSB7CisgICAgYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID0gR1JQQ19NRFNUUl9SRUYoZWxlbS0+a2V5KTsKKyAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0gPSBuZXdfaW5kZXg7CisgIH0gZWxzZSBpZiAoYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldIDwKKyAgICAgICAgICAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0pIHsKKyAgICBHUlBDX01EU1RSX1VOUkVGKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSk7CisgICAgYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldID0gR1JQQ19NRFNUUl9SRUYoZWxlbS0+a2V5KTsKKyAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPSBuZXdfaW5kZXg7CisgIH0gZWxzZSB7CisgICAgR1JQQ19NRFNUUl9VTlJFRihjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0pOworICAgIGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSA9IEdSUENfTURTVFJfUkVGKGVsZW0tPmtleSk7CisgICAgYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID0gbmV3X2luZGV4OworICB9Cit9CisKK3N0YXRpYyB2b2lkIGVtaXRfaW5kZXhlZChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBlbGVtX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgdWludDMyX3QgbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChlbGVtX2luZGV4LCAxKTsKKyAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGVsZW1faW5kZXgsIDEsIDB4ODAsIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKK30KKworc3RhdGljIGdwcl9zbGljZSBnZXRfd2lyZV92YWx1ZShncnBjX21kZWxlbSAqZWxlbSwgdWludDhfdCAqaHVmZm1hbl9wcmVmaXgpIHsKKyAgaWYgKGdycGNfaXNfYmluYXJ5X2hlYWRlcigoY29uc3QgY2hhciAqKUdQUl9TTElDRV9TVEFSVF9QVFIoZWxlbS0+a2V5LT5zbGljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChlbGVtLT5rZXktPnNsaWNlKSkpIHsKKyAgICAqaHVmZm1hbl9wcmVmaXggPSAweDgwOworICAgIHJldHVybiBncnBjX21kc3RyX2FzX2Jhc2U2NF9lbmNvZGVkX2FuZF9odWZmbWFuX2NvbXByZXNzZWQoZWxlbS0+dmFsdWUpOworICB9CisgIC8qIFRPRE8oY3RpbGxlcik6IG9wcG9ydHVuaXN0aWNhbGx5IGNvbXByZXNzIG5vbi1iaW5hcnkgaGVhZGVycyAqLworICAqaHVmZm1hbl9wcmVmaXggPSAweDAwOworICByZXR1cm4gZWxlbS0+dmFsdWUtPnNsaWNlOworfQorCitzdGF0aWMgdm9pZCBlbWl0X2xpdGhkcl9pbmNpZHgoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBrZXlfaW5kZXgsIGdycGNfbWRlbGVtICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgdWludDMyX3QgbGVuX3BmeCA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgoa2V5X2luZGV4LCAyKTsKKyAgdWludDhfdCBodWZmbWFuX3ByZWZpeDsKKyAgZ3ByX3NsaWNlIHZhbHVlX3NsaWNlID0gZ2V0X3dpcmVfdmFsdWUoZWxlbSwgJmh1ZmZtYW5fcHJlZml4KTsKKyAgc2l6ZV90IGxlbl92YWwgPSBHUFJfU0xJQ0VfTEVOR1RIKHZhbHVlX3NsaWNlKTsKKyAgdWludDMyX3QgbGVuX3ZhbF9sZW47CisgIEdQUl9BU1NFUlQobGVuX3ZhbCA8PSBVSU5UMzJfTUFYKTsKKyAgbGVuX3ZhbF9sZW4gPSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKCh1aW50MzJfdClsZW5fdmFsLCAxKTsKKyAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGtleV9pbmRleCwgMiwgMHg0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fcGZ4KSwgbGVuX3BmeCk7CisgIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVCgodWludDMyX3QpbGVuX3ZhbCwgMSwgaHVmZm1hbl9wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgbGVuX3ZhbF9sZW4pLCBsZW5fdmFsX2xlbik7CisgIGFkZF9oZWFkZXJfZGF0YShzdCwgZ3ByX3NsaWNlX3JlZih2YWx1ZV9zbGljZSkpOworfQorCitzdGF0aWMgdm9pZCBlbWl0X2xpdGhkcl9ub2lkeChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qga2V5X2luZGV4LCBncnBjX21kZWxlbSAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgdWludDMyX3QgbGVuX3BmeCA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgoa2V5X2luZGV4LCA0KTsKKyAgdWludDhfdCBodWZmbWFuX3ByZWZpeDsKKyAgZ3ByX3NsaWNlIHZhbHVlX3NsaWNlID0gZ2V0X3dpcmVfdmFsdWUoZWxlbSwgJmh1ZmZtYW5fcHJlZml4KTsKKyAgc2l6ZV90IGxlbl92YWwgPSBHUFJfU0xJQ0VfTEVOR1RIKHZhbHVlX3NsaWNlKTsKKyAgdWludDMyX3QgbGVuX3ZhbF9sZW47CisgIEdQUl9BU1NFUlQobGVuX3ZhbCA8PSBVSU5UMzJfTUFYKTsKKyAgbGVuX3ZhbF9sZW4gPSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKCh1aW50MzJfdClsZW5fdmFsLCAxKTsKKyAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGtleV9pbmRleCwgNCwgMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fcGZ4KSwgbGVuX3BmeCk7CisgIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVCgodWludDMyX3QpbGVuX3ZhbCwgMSwgaHVmZm1hbl9wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgbGVuX3ZhbF9sZW4pLCBsZW5fdmFsX2xlbik7CisgIGFkZF9oZWFkZXJfZGF0YShzdCwgZ3ByX3NsaWNlX3JlZih2YWx1ZV9zbGljZSkpOworfQorCitzdGF0aWMgdm9pZCBlbWl0X2xpdGhkcl9pbmNpZHhfdihncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19tZGVsZW0gKmVsZW0sIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgdWludDMyX3QgbGVuX2tleSA9ICh1aW50MzJfdClHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpOworICB1aW50OF90IGh1ZmZtYW5fcHJlZml4OworICBncHJfc2xpY2UgdmFsdWVfc2xpY2UgPSBnZXRfd2lyZV92YWx1ZShlbGVtLCAmaHVmZm1hbl9wcmVmaXgpOworICB1aW50MzJfdCBsZW5fdmFsID0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpOworICB1aW50MzJfdCBsZW5fa2V5X2xlbiA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgobGVuX2tleSwgMSk7CisgIHVpbnQzMl90IGxlbl92YWxfbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChsZW5fdmFsLCAxKTsKKyAgR1BSX0FTU0VSVChsZW5fa2V5IDw9IFVJTlQzMl9NQVgpOworICBHUFJfQVNTRVJUKEdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpIDw9IFVJTlQzMl9NQVgpOworICAqYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIDEpID0gMHg0MDsKKyAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGxlbl9rZXksIDEsIDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgbGVuX2tleV9sZW4pLCBsZW5fa2V5X2xlbik7CisgIGFkZF9oZWFkZXJfZGF0YShzdCwgZ3ByX3NsaWNlX3JlZihlbGVtLT5rZXktPnNsaWNlKSk7CisgIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVChsZW5fdmFsLCAxLCBodWZmbWFuX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fdmFsX2xlbiksIGxlbl92YWxfbGVuKTsKKyAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKHZhbHVlX3NsaWNlKSk7Cit9CisKK3N0YXRpYyB2b2lkIGVtaXRfbGl0aGRyX25vaWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19tZGVsZW0gKmVsZW0sIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgdWludDMyX3QgbGVuX2tleSA9ICh1aW50MzJfdClHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpOworICB1aW50OF90IGh1ZmZtYW5fcHJlZml4OworICBncHJfc2xpY2UgdmFsdWVfc2xpY2UgPSBnZXRfd2lyZV92YWx1ZShlbGVtLCAmaHVmZm1hbl9wcmVmaXgpOworICB1aW50MzJfdCBsZW5fdmFsID0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpOworICB1aW50MzJfdCBsZW5fa2V5X2xlbiA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgobGVuX2tleSwgMSk7CisgIHVpbnQzMl90IGxlbl92YWxfbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChsZW5fdmFsLCAxKTsKKyAgR1BSX0FTU0VSVChsZW5fa2V5IDw9IFVJTlQzMl9NQVgpOworICBHUFJfQVNTRVJUKEdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpIDw9IFVJTlQzMl9NQVgpOworICAqYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIDEpID0gMHgwMDsKKyAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGxlbl9rZXksIDEsIDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgbGVuX2tleV9sZW4pLCBsZW5fa2V5X2xlbik7CisgIGFkZF9oZWFkZXJfZGF0YShzdCwgZ3ByX3NsaWNlX3JlZihlbGVtLT5rZXktPnNsaWNlKSk7CisgIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVChsZW5fdmFsLCAxLCBodWZmbWFuX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fdmFsX2xlbiksIGxlbl92YWxfbGVuKTsKKyAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKHZhbHVlX3NsaWNlKSk7Cit9CisKK3N0YXRpYyB2b2lkIGVtaXRfYWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXJfc3RhdGUgKnN0KSB7CisgIHVpbnQzMl90IGxlbiA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgoYy0+bWF4X3RhYmxlX3NpemUsIDMpOworICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQoYy0+bWF4X3RhYmxlX3NpemUsIDMsIDB4MjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgbGVuKSwgbGVuKTsKKyAgYy0+YWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlID0gMDsKK30KKworc3RhdGljIHVpbnQzMl90IGR5bmlkeChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBlbGVtX2luZGV4KSB7CisgIHJldHVybiAxICsgR1JQQ19DSFRUUDJfTEFTVF9TVEFUSUNfRU5UUlkgKyBjLT50YWlsX3JlbW90ZV9pbmRleCArCisgICAgICAgICBjLT50YWJsZV9lbGVtcyAtIGVsZW1faW5kZXg7Cit9CisKKy8qIGVuY29kZSBhbiBtZGVsZW0gKi8KK3N0YXRpYyB2b2lkIGhwYWNrX2VuYyhncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCBncnBjX21kZWxlbSAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICBmcmFtZXJfc3RhdGUgKnN0KSB7CisgIHVpbnQzMl90IGtleV9oYXNoID0gZWxlbS0+a2V5LT5oYXNoOworICB1aW50MzJfdCBlbGVtX2hhc2ggPSBHUlBDX01EU1RSX0tWX0hBU0goa2V5X2hhc2gsIGVsZW0tPnZhbHVlLT5oYXNoKTsKKyAgc2l6ZV90IGRlY29kZXJfc3BhY2VfdXNhZ2U7CisgIHVpbnQzMl90IGluZGljZXNfa2V5OworICBpbnQgc2hvdWxkX2FkZF9lbGVtOworCisgIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSChlbGVtLT5rZXktPnNsaWNlKSA+IDApOworICBpZiAoR1BSX1NMSUNFX1NUQVJUX1BUUihlbGVtLT5rZXktPnNsaWNlKVswXSAhPSAnOicpIHsgLyogcmVndWxhciBoZWFkZXIgKi8KKyAgICBzdC0+c2Vlbl9yZWd1bGFyX2hlYWRlciA9IDE7CisgIH0gZWxzZSB7CisgICAgR1BSX0FTU0VSVCgKKyAgICAgICAgc3QtPnNlZW5fcmVndWxhcl9oZWFkZXIgPT0gMCAmJgorICAgICAgICAiUmVzZXJ2ZWQgaGVhZGVyIChjb2xvbi1wcmVmaXhlZCkgaGFwcGVuaW5nIGFmdGVyIHJlZ3VsYXIgb25lcy4iKTsKKyAgfQorCisgIGluY19maWx0ZXIoSEFTSF9GUkFHTUVOVF8xKGVsZW1faGFzaCksICZjLT5maWx0ZXJfZWxlbXNfc3VtLCBjLT5maWx0ZXJfZWxlbXMpOworCisgIC8qIGlzIHRoaXMgZWxlbSBjdXJyZW50bHkgaW4gdGhlIGRlY29kZXJzIHRhYmxlPyAqLworCisgIGlmIChjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA9PSBlbGVtICYmCisgICAgICBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA+IGMtPnRhaWxfcmVtb3RlX2luZGV4KSB7CisgICAgLyogSElUOiBjb21wbGV0ZSBlbGVtZW50IChmaXJzdCBjdWNrb28gaGFzaCkgKi8KKyAgICBlbWl0X2luZGV4ZWQoYywgZHluaWR4KGMsIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldKSwKKyAgICAgICAgICAgICAgICAgc3QpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSA9PSBlbGVtICYmCisgICAgICBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSA+IGMtPnRhaWxfcmVtb3RlX2luZGV4KSB7CisgICAgLyogSElUOiBjb21wbGV0ZSBlbGVtZW50IChzZWNvbmQgY3Vja29vIGhhc2gpICovCisgICAgZW1pdF9pbmRleGVkKGMsIGR5bmlkeChjLCBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSksCisgICAgICAgICAgICAgICAgIHN0KTsKKyAgICByZXR1cm47CisgIH0KKworICAvKiBzaG91bGQgdGhpcyBlbGVtIGJlIGluIHRoZSB0YWJsZT8gKi8KKyAgZGVjb2Rlcl9zcGFjZV91c2FnZSA9IDMyICsgR1BSX1NMSUNFX0xFTkdUSChlbGVtLT5rZXktPnNsaWNlKSArCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPnZhbHVlLT5zbGljZSk7CisgIHNob3VsZF9hZGRfZWxlbSA9IGRlY29kZXJfc3BhY2VfdXNhZ2UgPCBNQVhfREVDT0RFUl9TUEFDRV9VU0FHRSAmJgorICAgICAgICAgICAgICAgICAgICBjLT5maWx0ZXJfZWxlbXNbSEFTSF9GUkFHTUVOVF8xKGVsZW1faGFzaCldID49CisgICAgICAgICAgICAgICAgICAgICAgICBjLT5maWx0ZXJfZWxlbXNfc3VtIC8gT05FX09OX0FERF9QUk9CQUJJTElUWTsKKworICAvKiBubyBoaXRzIGZvciB0aGUgZWxlbS4uLiBtYXliZSB0aGVyZSdzIGEga2V5PyAqLworCisgIGluZGljZXNfa2V5ID0gYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldOworICBpZiAoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldID09IGVsZW0tPmtleSAmJgorICAgICAgaW5kaWNlc19rZXkgPiBjLT50YWlsX3JlbW90ZV9pbmRleCkgeworICAgIC8qIEhJVDoga2V5IChmaXJzdCBjdWNrb28gaGFzaCkgKi8KKyAgICBpZiAoc2hvdWxkX2FkZF9lbGVtKSB7CisgICAgICBlbWl0X2xpdGhkcl9pbmNpZHgoYywgZHluaWR4KGMsIGluZGljZXNfa2V5KSwgZWxlbSwgc3QpOworICAgICAgYWRkX2VsZW0oYywgZWxlbSk7CisgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgIGVtaXRfbGl0aGRyX25vaWR4KGMsIGR5bmlkeChjLCBpbmRpY2VzX2tleSksIGVsZW0sIHN0KTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuICk7CisgIH0KKworICBpbmRpY2VzX2tleSA9IGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXTsKKyAgaWYgKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSA9PSBlbGVtLT5rZXkgJiYKKyAgICAgIGluZGljZXNfa2V5ID4gYy0+dGFpbF9yZW1vdGVfaW5kZXgpIHsKKyAgICAvKiBISVQ6IGtleSAoZmlyc3QgY3Vja29vIGhhc2gpICovCisgICAgaWYgKHNob3VsZF9hZGRfZWxlbSkgeworICAgICAgZW1pdF9saXRoZHJfaW5jaWR4KGMsIGR5bmlkeChjLCBpbmRpY2VzX2tleSksIGVsZW0sIHN0KTsKKyAgICAgIGFkZF9lbGVtKGMsIGVsZW0pOworICAgICAgcmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICBlbWl0X2xpdGhkcl9ub2lkeChjLCBkeW5pZHgoYywgaW5kaWNlc19rZXkpLCBlbGVtLCBzdCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiApOworICB9CisKKyAgLyogbm8gZWxlbSwga2V5IGluIHRoZSB0YWJsZS4uLiBmYWxsIGJhY2sgdG8gbGl0ZXJhbCBlbWlzc2lvbiAqLworCisgIGlmIChzaG91bGRfYWRkX2VsZW0pIHsKKyAgICBlbWl0X2xpdGhkcl9pbmNpZHhfdihjLCBlbGVtLCBzdCk7CisgICAgYWRkX2VsZW0oYywgZWxlbSk7CisgICAgcmV0dXJuOworICB9IGVsc2UgeworICAgIGVtaXRfbGl0aGRyX25vaWR4X3YoYywgZWxlbSwgc3QpOworICAgIHJldHVybjsKKyAgfQorICBHUFJfVU5SRUFDSEFCTEVfQ09ERShyZXR1cm4gKTsKK30KKworI2RlZmluZSBTVFJMRU5fTElUKHgpIChzaXplb2YoeCkgLSAxKQorI2RlZmluZSBUSU1FT1VUX0tFWSAiZ3JwYy10aW1lb3V0IgorCitzdGF0aWMgdm9pZCBkZWFkbGluZV9lbmMoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywgZ3ByX3RpbWVzcGVjIGRlYWRsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKKyAgY2hhciB0aW1lb3V0X3N0cltHUlBDX0NIVFRQMl9USU1FT1VUX0VOQ09ERV9NSU5fQlVGU0laRV07CisgIGdycGNfbWRlbGVtICptZGVsZW07CisgIGdycGNfY2h0dHAyX2VuY29kZV90aW1lb3V0KAorICAgICAgZ3ByX3RpbWVfc3ViKGRlYWRsaW5lLCBncHJfbm93KGRlYWRsaW5lLmNsb2NrX3R5cGUpKSwgdGltZW91dF9zdHIpOworICBtZGVsZW0gPSBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3MoCisgICAgICBHUlBDX01EU1RSX0dSUENfVElNRU9VVCwgZ3JwY19tZHN0cl9mcm9tX3N0cmluZyh0aW1lb3V0X3N0cikpOworICBocGFja19lbmMoYywgbWRlbGVtLCBzdCk7CisgIEdSUENfTURFTEVNX1VOUkVGKG1kZWxlbSk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBlbGVtc19mb3JfYnl0ZXModWludDMyX3QgYnl0ZXMpIHsgcmV0dXJuIChieXRlcyArIDMxKSAvIDMyOyB9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9pbml0KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMpIHsKKyAgbWVtc2V0KGMsIDAsIHNpemVvZigqYykpOworICBjLT5tYXhfdGFibGVfc2l6ZSA9IEdSUENfQ0hUVFAyX0hQQUNLQ19JTklUSUFMX1RBQkxFX1NJWkU7CisgIGMtPmNhcF90YWJsZV9lbGVtcyA9IGVsZW1zX2Zvcl9ieXRlcyhjLT5tYXhfdGFibGVfc2l6ZSk7CisgIGMtPm1heF90YWJsZV9lbGVtcyA9IGMtPmNhcF90YWJsZV9lbGVtczsKKyAgYy0+bWF4X3VzYWJsZV9zaXplID0gR1JQQ19DSFRUUDJfSFBBQ0tDX0lOSVRJQUxfVEFCTEVfU0laRTsKKyAgYy0+dGFibGVfZWxlbV9zaXplID0KKyAgICAgIGdwcl9tYWxsb2Moc2l6ZW9mKCpjLT50YWJsZV9lbGVtX3NpemUpICogYy0+Y2FwX3RhYmxlX2VsZW1zKTsKKyAgbWVtc2V0KGMtPnRhYmxlX2VsZW1fc2l6ZSwgMCwKKyAgICAgICAgIHNpemVvZigqYy0+dGFibGVfZWxlbV9zaXplKSAqIGMtPmNhcF90YWJsZV9lbGVtcyk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9kZXN0cm95KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMpIHsKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBHUlBDX0NIVFRQMl9IUEFDS0NfTlVNX1ZBTFVFUzsgaSsrKSB7CisgICAgaWYgKGMtPmVudHJpZXNfa2V5c1tpXSkgR1JQQ19NRFNUUl9VTlJFRihjLT5lbnRyaWVzX2tleXNbaV0pOworICAgIGlmIChjLT5lbnRyaWVzX2VsZW1zW2ldKSBHUlBDX01ERUxFTV9VTlJFRihjLT5lbnRyaWVzX2VsZW1zW2ldKTsKKyAgfQorICBncHJfZnJlZShjLT50YWJsZV9lbGVtX3NpemUpOworfQorCit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3Jfc2V0X21heF91c2FibGVfc2l6ZSgKKyAgICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZSkgeworICBjLT5tYXhfdXNhYmxlX3NpemUgPSBtYXhfdGFibGVfc2l6ZTsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9zZXRfbWF4X3RhYmxlX3NpemUoCisgICAgICBjLCBHUFJfTUlOKGMtPm1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSkpOworfQorCitzdGF0aWMgdm9pZCByZWJ1aWxkX2VsZW1zKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIHVpbnQzMl90IG5ld19jYXApIHsKKyAgdWludDE2X3QgKnRhYmxlX2VsZW1fc2l6ZSA9IGdwcl9tYWxsb2Moc2l6ZW9mKCp0YWJsZV9lbGVtX3NpemUpICogbmV3X2NhcCk7CisgIHVpbnQzMl90IGk7CisKKyAgbWVtc2V0KHRhYmxlX2VsZW1fc2l6ZSwgMCwgc2l6ZW9mKCp0YWJsZV9lbGVtX3NpemUpICogbmV3X2NhcCk7CisgIEdQUl9BU1NFUlQoYy0+dGFibGVfZWxlbXMgPD0gbmV3X2NhcCk7CisKKyAgZm9yIChpID0gMDsgaSA8IGMtPnRhYmxlX2VsZW1zOyBpKyspIHsKKyAgICB1aW50MzJfdCBvZnMgPSBjLT50YWlsX3JlbW90ZV9pbmRleCArIGkgKyAxOworICAgIHRhYmxlX2VsZW1fc2l6ZVtvZnMgJSBuZXdfY2FwXSA9CisgICAgICAgIGMtPnRhYmxlX2VsZW1fc2l6ZVtvZnMgJSBjLT5jYXBfdGFibGVfZWxlbXNdOworICB9CisKKyAgYy0+Y2FwX3RhYmxlX2VsZW1zID0gbmV3X2NhcDsKKyAgZ3ByX2ZyZWUoYy0+dGFibGVfZWxlbV9zaXplKTsKKyAgYy0+dGFibGVfZWxlbV9zaXplID0gdGFibGVfZWxlbV9zaXplOworfQorCit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3Jfc2V0X21heF90YWJsZV9zaXplKAorICAgIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIHVpbnQzMl90IG1heF90YWJsZV9zaXplKSB7CisgIG1heF90YWJsZV9zaXplID0gR1BSX01JTihtYXhfdGFibGVfc2l6ZSwgYy0+bWF4X3VzYWJsZV9zaXplKTsKKyAgaWYgKG1heF90YWJsZV9zaXplID09IGMtPm1heF90YWJsZV9zaXplKSB7CisgICAgcmV0dXJuOworICB9CisgIHdoaWxlIChjLT50YWJsZV9zaXplID4gMCAmJiBjLT50YWJsZV9zaXplID4gbWF4X3RhYmxlX3NpemUpIHsKKyAgICBldmljdF9lbnRyeShjKTsKKyAgfQorICBjLT5tYXhfdGFibGVfc2l6ZSA9IG1heF90YWJsZV9zaXplOworICBjLT5tYXhfdGFibGVfZWxlbXMgPSBlbGVtc19mb3JfYnl0ZXMobWF4X3RhYmxlX3NpemUpOworICBpZiAoYy0+bWF4X3RhYmxlX2VsZW1zID4gYy0+Y2FwX3RhYmxlX2VsZW1zKSB7CisgICAgcmVidWlsZF9lbGVtcyhjLCBHUFJfTUFYKGMtPm1heF90YWJsZV9lbGVtcywgMiAqIGMtPmNhcF90YWJsZV9lbGVtcykpOworICB9IGVsc2UgaWYgKGMtPm1heF90YWJsZV9lbGVtcyA8IGMtPmNhcF90YWJsZV9lbGVtcyAvIDMpIHsKKyAgICB1aW50MzJfdCBuZXdfY2FwID0gR1BSX01BWChjLT5tYXhfdGFibGVfZWxlbXMsIDE2KTsKKyAgICBpZiAobmV3X2NhcCAhPSBjLT5jYXBfdGFibGVfZWxlbXMpIHsKKyAgICAgIHJlYnVpbGRfZWxlbXMoYywgbmV3X2NhcCk7CisgICAgfQorICB9CisgIGMtPmFkdmVydGlzZV90YWJsZV9zaXplX2NoYW5nZSA9IDE7CisgIGdwcl9sb2coR1BSX0RFQlVHLCAic2V0IG1heCB0YWJsZSBzaXplIGZyb20gZW5jb2RlciB0byAlZCIsIG1heF90YWJsZV9zaXplKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9lbmNvZGVfaGVhZGVyKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKm1ldGFkYXRhLCBpbnQgaXNfZW9mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9idWZmZXIgKm91dGJ1ZikgeworICBmcmFtZXJfc3RhdGUgc3Q7CisgIGdycGNfbGlua2VkX21kZWxlbSAqbDsKKyAgZ3ByX3RpbWVzcGVjIGRlYWRsaW5lOworCisgIEdQUl9BU1NFUlQoc3RyZWFtX2lkICE9IDApOworCisgIHN0LnNlZW5fcmVndWxhcl9oZWFkZXIgPSAwOworICBzdC5zdHJlYW1faWQgPSBzdHJlYW1faWQ7CisgIHN0Lm91dHB1dCA9IG91dGJ1ZjsKKyAgc3QuaXNfZmlyc3RfZnJhbWUgPSAxOworCisgIC8qIEVuY29kZSBhIG1ldGFkYXRhIGJhdGNoOyBzdG9yZSB0aGUgcmV0dXJuZWQgdmFsdWVzLCByZXByZXNlbnRpbmcKKyAgICAgYSBtZXRhZGF0YSBlbGVtZW50IHRoYXQgbmVlZHMgdG8gYmUgdW5yZWZmZWQgYmFjayBpbnRvIHRoZSBtZXRhZGF0YQorICAgICBzbG90LiBUSElTIE1BWSBOT1QgQkUgVEhFIFNBTUUgRUxFTUVOVCAoaWYgYSBkZWNvZGVyIHRhYmxlIHNsb3QgZ290CisgICAgIHVwZGF0ZWQpLiBBZnRlciB0aGlzIGxvb3AsIHdlJ2xsIGRvIGEgYmF0Y2ggdW5yZWYgb2YgZWxlbWVudHMuICovCisgIGJlZ2luX2ZyYW1lKCZzdCk7CisgIGlmIChjLT5hZHZlcnRpc2VfdGFibGVfc2l6ZV9jaGFuZ2UgIT0gMCkgeworICAgIGVtaXRfYWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlKGMsICZzdCk7CisgIH0KKyAgZ3JwY19tZXRhZGF0YV9iYXRjaF9hc3NlcnRfb2sobWV0YWRhdGEpOworICBmb3IgKGwgPSBtZXRhZGF0YS0+bGlzdC5oZWFkOyBsOyBsID0gbC0+bmV4dCkgeworICAgIGhwYWNrX2VuYyhjLCBsLT5tZCwgJnN0KTsKKyAgfQorICBkZWFkbGluZSA9IG1ldGFkYXRhLT5kZWFkbGluZTsKKyAgaWYgKGdwcl90aW1lX2NtcChkZWFkbGluZSwgZ3ByX2luZl9mdXR1cmUoZGVhZGxpbmUuY2xvY2tfdHlwZSkpICE9IDApIHsKKyAgICBkZWFkbGluZV9lbmMoYywgZGVhZGxpbmUsICZzdCk7CisgIH0KKworICBmaW5pc2hfZnJhbWUoJnN0LCAxLCBpc19lb2YpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5ZGUzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hQQUNLX0VOQ09ERVJfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hQQUNLX0VOQ09ERVJfSAorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2VfYnVmZmVyLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaCIKKworI2RlZmluZSBHUlBDX0NIVFRQMl9IUEFDS0NfTlVNX0ZJTFRFUlMgMjU2CisjZGVmaW5lIEdSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTIDI1NgorLyogaW5pdGlhbCB0YWJsZSBzaXplLCBwZXIgc3BlYyAqLworI2RlZmluZSBHUlBDX0NIVFRQMl9IUEFDS0NfSU5JVElBTF9UQUJMRV9TSVpFIDQwOTYKKy8qIG1heGltdW0gdGFibGUgc2l6ZSB3ZSdsbCBhY3R1YWxseSB1c2UgKi8KKyNkZWZpbmUgR1JQQ19DSFRUUDJfSFBBQ0tDX01BWF9UQUJMRV9TSVpFICgxMDI0ICogMTAyNCkKKwordHlwZWRlZiBzdHJ1Y3QgeworICB1aW50MzJfdCBmaWx0ZXJfZWxlbXNfc3VtOworICB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZTsKKyAgdWludDMyX3QgbWF4X3RhYmxlX2VsZW1zOworICB1aW50MzJfdCBjYXBfdGFibGVfZWxlbXM7CisgIC8qKiBpZiBub24temVybywgYWR2ZXJ0aXNlIHRvIHRoZSBkZWNvZGVyIHRoYXQgd2UnbGwgc3RhcnQgdXNpbmcgYSB0YWJsZQorICAgICAgb2YgdGhpcyBzaXplICovCisgIHVpbnQ4X3QgYWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlOworICAvKiogbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgd2UnbGwgdXNlIGZvciB0aGUgZGVjb2RlIHRhYmxlICh0byBndWFyZCBhZ2FpbnN0CisgICAgICBwZWVycyBvb21pbmcgdXMgYnkgc2V0dGluZyBkZWNvZGUgdGFibGUgc2l6ZSBoaWdoKSAqLworICB1aW50MzJfdCBtYXhfdXNhYmxlX3NpemU7CisgIC8qIG9uZSBiZWZvcmUgdGhlIGxvd2VzdCB1c2FibGUgdGFibGUgaW5kZXggKi8KKyAgdWludDMyX3QgdGFpbF9yZW1vdGVfaW5kZXg7CisgIHVpbnQzMl90IHRhYmxlX3NpemU7CisgIHVpbnQzMl90IHRhYmxlX2VsZW1zOworCisgIC8qIGZpbHRlciB0YWJsZXMgZm9yIGVsZW1zOiB0aGlzIHRhYmxlcyBwcm92aWRlcyBhbiBhcHByb3hpbWF0ZQorICAgICBwb3B1bGFyaXR5IGNvdW50IGZvciBwYXJ0aWN1bGFyIGhhc2hlcywgYW5kIGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyCisgICAgIGEgbmV3IGxpdGVyYWwgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb21wcmVzc2lvbiB0YWJsZSBvciBub3QuCisgICAgIFRoZXkgdHJhY2sgYSBzaW5nbGUgaW50ZWdlciB0aGF0IGNvdW50cyBob3cgb2Z0ZW4gYSBwYXJ0aWN1bGFyIHZhbHVlIGhhcworICAgICBiZWVuIHNlZW4uIFdoZW4gdGhhdCBjb3VudCByZWFjaGVzIG1heCAoMjU1KSwgYWxsIHZhbHVlcyBhcmUgaGFsdmVkLiAqLworICB1aW50OF90IGZpbHRlcl9lbGVtc1tHUlBDX0NIVFRQMl9IUEFDS0NfTlVNX0ZJTFRFUlNdOworCisgIC8qIGVudHJ5IHRhYmxlcyBmb3Iga2V5cyAmIGVsZW1zOiB0aGVzZSB0YWJsZXMgdHJhY2sgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuCisgICAgIHNlZW4gYW5kICptYXkqIGJlIGluIHRoZSBkZWNvbXByZXNzb3IgdGFibGUgKi8KKyAgZ3JwY19tZHN0ciAqZW50cmllc19rZXlzW0dSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTXTsKKyAgZ3JwY19tZGVsZW0gKmVudHJpZXNfZWxlbXNbR1JQQ19DSFRUUDJfSFBBQ0tDX05VTV9WQUxVRVNdOworICB1aW50MzJfdCBpbmRpY2VzX2tleXNbR1JQQ19DSFRUUDJfSFBBQ0tDX05VTV9WQUxVRVNdOworICB1aW50MzJfdCBpbmRpY2VzX2VsZW1zW0dSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTXTsKKworICB1aW50MTZfdCAqdGFibGVfZWxlbV9zaXplOworfSBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yOworCit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3JfaW5pdChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjKTsKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9kZXN0cm95KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMpOwordm9pZCBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX3NldF9tYXhfdGFibGVfc2l6ZSgKKyAgICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZSk7Cit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3Jfc2V0X21heF91c2FibGVfc2l6ZSgKKyAgICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZSk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfZW5jb2RlX2hlYWRlcihncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX21ldGFkYXRhX2JhdGNoICptZXRhZGF0YSwgaW50IGlzX2VvZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfYnVmZmVyICpvdXRidWYpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IUEFDS19FTkNPREVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzMzODdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jCkBAIC0wLDAgKzEsMTQ2MyBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisvKiBUaGlzIGlzIGhlcmUgZm9yIGdycGNfaXNfYmluYXJ5X2hlYWRlcgorICogVE9ETyhtdXJnYXRyb2lkOTkpOiBSZW1vdmUgdGhpcworICovCisjaW5jbHVkZSA8Z3JwYy9ncnBjLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgorCitleHRlcm4gaW50IGdycGNfaHR0cF90cmFjZTsKKwordHlwZWRlZiBlbnVtIHsKKyAgTk9UX0JJTkFSWSwKKyAgQjY0X0JZVEUwLAorICBCNjRfQllURTEsCisgIEI2NF9CWVRFMiwKKyAgQjY0X0JZVEUzCit9IGJpbmFyeV9zdGF0ZTsKKworLyogSG93IHBhcnNpbmcgd29ya3M6CisKKyAgIFRoZSBwYXJzZXIgb2JqZWN0IGtlZXBzIHRyYWNrIG9mIGEgZnVuY3Rpb24gcG9pbnRlciB3aGljaCByZXByZXNlbnRzIHRoZQorICAgY3VycmVudCBwYXJzZSBzdGF0ZS4KKworICAgRWFjaCB0aW1lIG5ldyBieXRlcyBhcmUgcHJlc2VudGVkLCB3ZSBjYWxsIGludG8gdGhlIGN1cnJlbnQgc3RhdGUsIHdoaWNoCisgICByZWN1cnNpdmVseSBwYXJzZXMgdW50aWwgYWxsIGJ5dGVzIGluIHRoZSBnaXZlbiBjaHVuayBhcmUgZXhoYXVzdGVkLgorCisgICBUaGUgcGFyc2Ugc3RhdGUgdGhhdCB0ZXJtaW5hdGVzIHRoZW4gc2F2ZXMgaXRzIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYmUgdGhlCisgICBjdXJyZW50IHN0YXRlIHNvIHRoYXQgaXQgY2FuIHJlc3VtZSB3aGVuIG1vcmUgYnl0ZXMgYXJlIGF2YWlsYWJsZS4KKworICAgSXQncyBleHBlY3RlZCB0aGF0IG1vc3Qgb3B0aW1pemluZyBjb21waWxlcnMgd2lsbCB0dXJuIHRoaXMgY29kZSBpbnRvCisgICBhIHNldCBvZiBpbmRpcmVjdCBqdW1wcywgYW5kIHNvIG5vdCB3YXN0ZSBzdGFjayBzcGFjZS4gKi8KKworLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIHBhcnNpbmcgc3RhdGVzICovCitzdGF0aWMgaW50IHBhcnNlX2JlZ2luKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9lcnJvcihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfaWxsZWdhbF9vcChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworCitzdGF0aWMgaW50IHBhcnNlX3N0cmluZ19wcmVmaXgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2Vfa2V5X3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9pbmRleGVkX2tleShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfbGl0ZXJhbF9rZXkoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7CisKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUwKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUxKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWU0KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWU1dXAoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7CisKK3N0YXRpYyBpbnQgcGFyc2VfaW5kZXhlZF9maWVsZChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9pbmRleGVkX2ZpZWxkX3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9saXRoZHJfaW5jaWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7CitzdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9pbmNpZHhfeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCk7CitzdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9pbmNpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCk7CitzdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9ub3RpZHgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeF92KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKTsKK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX252cmlkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbnZyaWR4X3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbnZyaWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9tYXhfdGJsX3NpemUoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOworc3RhdGljIGludCBwYXJzZV9tYXhfdGJsX3NpemVfeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKKworLyogd2UgdHJhbnNsYXRlIHRoZSBmaXJzdCBieXRlIG9mIGEgaHBhY2sgZmllbGQgaW50byBvbmUgb2YgdGhlc2UgZGVjb2RpbmcKKyAgIGNhc2VzLCB0aGVuIHVzZSBhIGxvb2t1cCB0YWJsZSB0byBqdW1wIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ByaWF0ZSBwYXJzZXIuCisKKyAgIF9YID0+IHRoZSBpbnRlZ2VyIGluZGV4IGlzIGFsbCBvbmVzLCBtZWFuaW5nIHdlIG5lZWQgdG8gZG8gdmFyaW50IGRlY29kaW5nCisgICBfViA9PiB0aGUgaW50ZWdlciBpbmRleCBpcyBhbGwgemVyb3MsIG1lYW5pbmcgd2UgbmVlZCB0byBkZWNvZGUgYW4gYWRkaXRpb25hbAorICAgICAgICAgc3RyaW5nIHZhbHVlICovCit0eXBlZGVmIGVudW0geworICBJTkRFWEVEX0ZJRUxELAorICBJTkRFWEVEX0ZJRUxEX1gsCisgIExJVEhEUl9JTkNJRFgsCisgIExJVEhEUl9JTkNJRFhfWCwKKyAgTElUSERSX0lOQ0lEWF9WLAorICBMSVRIRFJfTk9USURYLAorICBMSVRIRFJfTk9USURYX1gsCisgIExJVEhEUl9OT1RJRFhfViwKKyAgTElUSERSX05WUklEWCwKKyAgTElUSERSX05WUklEWF9YLAorICBMSVRIRFJfTlZSSURYX1YsCisgIE1BWF9UQkxfU0laRSwKKyAgTUFYX1RCTF9TSVpFX1gsCisgIElMTEVHQUwKK30gZmlyc3RfYnl0ZV90eXBlOworCisvKiBqdW1wIHRhYmxlIG9mIHBhcnNlIHN0YXRlIGZ1bmN0aW9ucyAtLSBvcmRlciBtdXN0IG1hdGNoIGZpcnN0X2J5dGVfdHlwZQorICAgYWJvdmUgKi8KK3N0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgZmlyc3RfYnl0ZV9hY3Rpb25bXSA9IHsKKyAgICBwYXJzZV9pbmRleGVkX2ZpZWxkLCAgIHBhcnNlX2luZGV4ZWRfZmllbGRfeCwgcGFyc2VfbGl0aGRyX2luY2lkeCwKKyAgICBwYXJzZV9saXRoZHJfaW5jaWR4X3gsIHBhcnNlX2xpdGhkcl9pbmNpZHhfdiwgcGFyc2VfbGl0aGRyX25vdGlkeCwKKyAgICBwYXJzZV9saXRoZHJfbm90aWR4X3gsIHBhcnNlX2xpdGhkcl9ub3RpZHhfdiwgcGFyc2VfbGl0aGRyX252cmlkeCwKKyAgICBwYXJzZV9saXRoZHJfbnZyaWR4X3gsIHBhcnNlX2xpdGhkcl9udnJpZHhfdiwgcGFyc2VfbWF4X3RibF9zaXplLAorICAgIHBhcnNlX21heF90Ymxfc2l6ZV94LCAgcGFyc2VfaWxsZWdhbF9vcH07CisKKy8qIGluZGV4ZXMgdGhlIGZpcnN0IGJ5dGUgdG8gYSBwYXJzZSBzdGF0ZSBmdW5jdGlvbiAtIGdlbmVyYXRlZCBieQorICAgZ2VuX2hwYWNrX3RhYmxlcy5jICovCitzdGF0aWMgY29uc3QgdWludDhfdCBmaXJzdF9ieXRlX2x1dFsyNTZdID0geworICAgIExJVEhEUl9OT1RJRFhfViwgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWCwKKyAgICBMSVRIRFJfTk9USURYLCAgIExJVEhEUl9OT1RJRFgsIExJVEhEUl9OT1RJRFgsIExJVEhEUl9OT1RJRFgsCisgICAgTElUSERSX05PVElEWCwgICBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYLAorICAgIExJVEhEUl9OT1RJRFgsICAgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWF9YLAorICAgIExJVEhEUl9OVlJJRFhfViwgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWCwKKyAgICBMSVRIRFJfTlZSSURYLCAgIExJVEhEUl9OVlJJRFgsIExJVEhEUl9OVlJJRFgsIExJVEhEUl9OVlJJRFgsCisgICAgTElUSERSX05WUklEWCwgICBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYLAorICAgIExJVEhEUl9OVlJJRFgsICAgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWF9YLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLAorICAgIE1BWF9UQkxfU0laRSwgICAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFLCAgTUFYX1RCTF9TSVpFX1gsCisgICAgTElUSERSX0lOQ0lEWF9WLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAorICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKKyAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCisgICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAorICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKKyAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCisgICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAorICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKKyAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCisgICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAorICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKKyAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCisgICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAorICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKKyAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCisgICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYX1gsCisgICAgSUxMRUdBTCwgICAgICAgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKKyAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCisgICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAorICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRF9YLAorfTsKKworLyogc3RhdGUgdGFibGUgZm9yIGh1ZmZtYW4gZGVjb2Rpbmc6IGdpdmVuIGEgc3RhdGUsIGdpdmVzIGFuIGluZGV4LzE2IGludG8KKyAgIG5leHRfc3ViX3RibC4gVGFraW5nIHRoYXQgaW5kZXggYW5kIGFkZGluZyB0aGUgdmFsdWUgb2YgdGhlIG5pYmJsZSBiZWluZworICAgY29uc2lkZXJlZCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlLgorCisgICBnZW5lcmF0ZWQgYnkgZ2VuX2hwYWNrX3RhYmxlcy5jICovCitzdGF0aWMgY29uc3QgdWludDhfdCBuZXh0X3RibFsyNTZdID0geworICAgIDAsICAxLCAgMiwgIDMsICA0LCAgMSwgIDIsIDUsICA2LCAgMSwgNywgIDgsICAxLCAgMywgIDMsICA5LCAgMTAsIDExLCAxLCAgMSwKKyAgICAxLCAgMTIsIDEsICAyLCAgMTMsIDEsICAxLCAxLCAgMSwgIDEsIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDIsCisgICAgMTQsIDEsICAxNSwgMTYsIDEsICAxNywgMSwgMTUsIDIsICA3LCAzLCAgMTgsIDE5LCAxLCAgMSwgIDEsICAxLCAgMjAsIDEsICAxLAorICAgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsIDEsICAxNSwgMiwgMiwgIDcsICAyMSwgMSwgIDIyLCAxLCAgMSwgIDEsICAxLCAgMSwKKyAgICAxLCAgMSwgIDEsICAxNSwgMiwgIDIsICAyLCAyLCAgMiwgIDIsIDIzLCAyNCwgMjUsIDEsICAxLCAgMSwgIDEsICAyLCAgMiwgIDIsCisgICAgMjYsIDMsICAzLCAgMjcsIDEwLCAyOCwgMSwgMSwgIDEsICAxLCAxLCAgMSwgIDIsICAzLCAgMjksIDEwLCAzMCwgMSwgIDEsICAxLAorICAgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsIDEsICAxLCAgMSwgMSwgIDMxLCAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMiwKKyAgICAyLCAgMiwgIDIsICAyLCAgMiwgIDIsICAyLCAzMiwgMSwgIDEsIDE1LCAzMywgMSwgIDM0LCAzNSwgOSwgIDM2LCAxLCAgMSwgIDEsCisgICAgMSwgIDEsICAxLCAgMSwgIDM3LCAxLCAgMSwgMSwgIDEsICAxLCAxLCAgMiwgIDIsICAyLCAgMiwgIDIsICAyLCAgMiwgIDI2LCA5LAorICAgIDM4LCAxLCAgMSwgIDEsICAxLCAgMSwgIDEsIDEsICAxNSwgMiwgMiwgIDIsICAyLCAgMjYsIDMsICAzLCAgMzksIDEsICAxLCAgMSwKKyAgICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAxLCAgMiwgIDIsIDIsICAyLCAgMiwgIDIsICA3LCAgMywgIDMsICAzLCAgNDAsIDIsCisgICAgNDEsIDEsICAxLCAgMSwgIDQyLCA0MywgMSwgMSwgIDQ0LCAxLCAxLCAgMSwgIDEsICAxNSwgMiwgIDIsICAyLCAgMiwgIDIsICAyLAorICAgIDMsICAzLCAgMywgIDQ1LCA0NiwgMSwgIDEsIDIsICAyLCAgMiwgMzUsIDMsICAzLCAgMTgsIDQ3LCAyLAorfTsKKworLyogbmV4dCBzdGF0ZSwgYmFzZWQgdXBvbiBjdXJyZW50IHN0YXRlIGFuZCB0aGUgY3VycmVudCBuaWJibGU6IHNlZSBhYm92ZS4KKyAgIGdlbmVyYXRlZCBieSBnZW5faHBhY2tfdGFibGVzLmMgKi8KK3N0YXRpYyBjb25zdCBpbnQxNl90IG5leHRfc3ViX3RibFs0OCAqIDE2XSA9IHsKKyAgICAxLCAgIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LAorICAgIDIxOCwgMiwgICA2LCAgIDEwLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDIsICAgNiwgICAxMCwgIDEzLCAgMTQsICAxNSwKKyAgICAxNiwgIDE3LCAgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwgIDI0LCAgMywKKyAgICA3LCAgIDExLCAgMjQsICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNSwKKyAgICAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA5LCAgIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLAorICAgIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsICAgMTEsICAyNCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEyLCAgMTMyLCA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTgsICAxOSwgIDIwLCAgMjEsICA0LCAgIDgsICAgNCwKKyAgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDIyLCAgMjMsICA5MSwgIDI1LCAgMjYsCisgICAgMjcsICAyOCwgIDI5LCAgMzAsICAzMSwgIDMyLCAgMzMsICAzNCwgIDM1LCAgMzYsICAzNywgIDM4LCAgMzksICA0MCwgIDMsCisgICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLCAgMjQsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDEsICA0MiwgIDQzLAorICAgIDIsICAgNiwgICAxMCwgIDEzLCAgMTQsICAxNSwgIDE2LCAgMTcsICAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwKKyAgICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwKKyAgICA0NCwgIDQ1LCAgMiwgICA2LCAgIDEwLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDQ2LCAgNDcsICA0OCwgIDQ5LCAgNTAsCisgICAgNTEsICA1MiwgIDU3LCAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMCwgICA1MywgIDU0LCAgNTUsICA1NiwgIDU4LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywgIDY0LCAgNjUsICA2NiwgIDY3LAorICAgIDY4LCAgNjksICA3MCwgIDcxLCAgNzIsICA3NCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDczLCAgNzUsICA3NiwgIDc3LCAgNzgsICA3OSwgIDgwLCAgODEsICA4MiwKKyAgICA4MywgIDg0LCAgODUsICA4NiwgIDg3LCAgODgsICA4OSwgIDkwLCAgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsICAgMTEsCisgICAgMjQsICAzLCAgIDcsICAgMTEsICAyNCwgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsCisgICAgMTEsICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwgICA5MywgIDk0LAorICAgIDk1LCAgOTYsICA5NywgIDk4LCAgOTksICAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAzLCAgIDcsICAgMTEsICAyNCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwKKyAgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgNCwKKyAgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwKKyAgICAwLCAgIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLAorICAgIDEzMSwgMiwgICA2LCAgIDEwLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LAorICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAxNDgsCisgICAgMTQ5LCAxNTAsIDE1MSwgMywgICA3LCAgIDExLCAgMjQsICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDE1MiwgMTUzLCAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLAorICAgIDI0LCAgMTU0LCAxNTUsIDE1NiwgMTY0LCAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LAorICAgIDExLCAgMjQsICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsCisgICAgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywKKyAgICAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMTk3LCAxOTgsIDQsICAgOCwgICA0LCAgIDgsICAgNCwKKyAgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyMTksIDIyMCwgMywgICA3LCAgIDExLCAgMjQsCisgICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDIyMSwgMjIyLCAyMjMsIDIyNCwgMywgICA3LCAgIDExLAorICAgIDI0LCAgMywgICA3LCAgIDExLCAgMjQsICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAyMjUsIDIyOCwgNCwgICA4LAorICAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIyNiwgMjI3LCAyMjksCisgICAgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCAyNDAsIDI0MSwgMjQyLCAyNDMsIDI0NCwKKyAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLAorICAgIDI1MywgMjU0LCAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDAsICAgMCwgICAyNTUsCit9OworCisvKiBlbWlzc2lvbiB0YWJsZTogaW5kZXhlZCBsaWtlIG5leHRfdGJsLCB1bHRpbWF0ZWx5IGdpdmVzIHRoZSBieXRlIHRvIGJlCisgICBlbWl0dGVkLCBvciAtMSBmb3Igbm8gYnl0ZSwgb3IgMjU2IGZvciBlbmQgb2Ygc3RyZWFtCisKKyAgIGdlbmVyYXRlZCBieSBnZW5faHBhY2tfdGFibGVzLmMgKi8KK3N0YXRpYyBjb25zdCB1aW50MTZfdCBlbWl0X3RibFsyNTZdID0geworICAgIDAsICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICAwLCAgIDgsICAgOSwgICAxMCwgIDExLCAgMTIsICAxMywKKyAgICAxNCwgIDE1LCAgMTYsICAxNywgIDE4LCAgMTksICAyMCwgIDIxLCAgMjIsICAwLCAgIDIzLCAgMjQsICAyNSwgIDI2LCAgMjcsCisgICAgMjgsICAyOSwgIDMwLCAgMzEsICAzMiwgIDMzLCAgMzQsICAzNSwgIDM2LCAgMzcsICAzOCwgIDM5LCAgNDAsICA0MSwgIDQyLAorICAgIDQzLCAgNDQsICA0NSwgIDQ2LCAgNDcsICA0OCwgIDQ5LCAgNTAsICA1MSwgIDUyLCAgNTMsICA1NCwgIDAsICAgNTUsICA1NiwKKyAgICA1NywgIDU4LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywgIDY0LCAgNjUsICA2NiwgIDY3LCAgNjgsICA2OSwgIDcwLCAgMCwKKyAgICA3MSwgIDcyLCAgNzMsICA3NCwgIDc1LCAgNzYsICA3NywgIDc4LCAgNzksICA4MCwgIDgxLCAgODIsICA4MywgIDg0LCAgODUsCisgICAgODYsICA4NywgIDg4LCAgODksICA5MCwgIDkxLCAgOTIsICA5MywgIDk0LCAgOTUsICA5NiwgIDk3LCAgOTgsICA5OSwgIDEwMCwKKyAgICAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LAorICAgIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsCisgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwKKyAgICAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMCwKKyAgICAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LAorICAgIDAsICAgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsCisgICAgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywKKyAgICAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LAorICAgIDIxOSwgMjIwLCAyMjEsIDAsICAgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsCisgICAgMjMzLCAyMzQsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCAyNDAsIDI0MSwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAyNDYsIDI0NywKKyAgICAyNDgsCit9OworCisvKiBnZW5lcmF0ZWQgYnkgZ2VuX2hwYWNrX3RhYmxlcy5jICovCitzdGF0aWMgY29uc3QgaW50MTZfdCBlbWl0X3N1Yl90YmxbMjQ5ICogMTZdID0geworICAgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwKKyAgICAtMSwgIDQ4LCAgNDgsICA0OCwgIDQ4LCAgNDgsICA0OCwgIDQ4LCAgNDgsICA0OSwgIDQ5LCAgNDksICA0OSwgIDQ5LCAgNDksCisgICAgNDksICA0OSwgIDQ4LCAgNDgsICA0OCwgIDQ4LCAgNDksICA0OSwgIDQ5LCAgNDksICA1MCwgIDUwLCAgNTAsICA1MCwgIDk3LAorICAgIDk3LCAgOTcsICA5NywgIDQ4LCAgNDgsICA0OSwgIDQ5LCAgNTAsICA1MCwgIDk3LCAgOTcsICA5OSwgIDk5LCAgMTAxLCAxMDEsCisgICAgMTA1LCAxMDUsIDExMSwgMTExLCA0OCwgIDQ5LCAgNTAsICA5NywgIDk5LCAgMTAxLCAxMDUsIDExMSwgMTE1LCAxMTYsIC0xLAorICAgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAzMiwgIDMyLCAgMzIsICAzMiwgIDMyLCAgMzIsICAzMiwgIDMyLCAgMzcsICAzNywKKyAgICAzNywgIDM3LCAgMzcsICAzNywgIDM3LCAgMzcsICA5OSwgIDk5LCAgOTksICA5OSwgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTA1LAorICAgIDEwNSwgMTA1LCAxMDUsIDExMSwgMTExLCAxMTEsIDExMSwgMTE1LCAxMTUsIDExNiwgMTE2LCAzMiwgIDM3LCAgNDUsICA0NiwKKyAgICA0NywgIDUxLCAgNTIsICA1MywgIDU0LCAgNTUsICA1NiwgIDU3LCAgNjEsICA2MSwgIDYxLCAgNjEsICA2MSwgIDYxLCAgNjEsCisgICAgNjEsICA2NSwgIDY1LCAgNjUsICA2NSwgIDY1LCAgNjUsICA2NSwgIDY1LCAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTYsIDExNiwKKyAgICAxMTYsIDExNiwgMzIsICAzMiwgIDM3LCAgMzcsICA0NSwgIDQ1LCAgNDYsICA0NiwgIDYxLCAgNjUsICA5NSwgIDk4LCAgMTAwLAorICAgIDEwMiwgMTAzLCAxMDQsIDEwOCwgMTA5LCAxMTAsIDExMiwgMTE0LCAxMTcsIC0xLCAgLTEsICA1OCwgIDU4LCAgNTgsICA1OCwKKyAgICA1OCwgIDU4LCAgNTgsICA1OCwgIDY2LCAgNjYsICA2NiwgIDY2LCAgNjYsICA2NiwgIDY2LCAgNjYsICA0NywgIDQ3LCAgNTEsCisgICAgNTEsICA1MiwgIDUyLCAgNTMsICA1MywgIDU0LCAgNTQsICA1NSwgIDU1LCAgNTYsICA1NiwgIDU3LCAgNTcsICA2MSwgIDYxLAorICAgIDY1LCAgNjUsICA5NSwgIDk1LCAgOTgsICA5OCwgIDEwMCwgMTAwLCAxMDIsIDEwMiwgMTAzLCAxMDMsIDEwNCwgMTA0LCAxMDgsCisgICAgMTA4LCAxMDksIDEwOSwgMTEwLCAxMTAsIDExMiwgMTEyLCAxMTQsIDExNCwgMTE3LCAxMTcsIDU4LCAgNjYsICA2NywgIDY4LAorICAgIDY5LCAgNzAsICA3MSwgIDcyLCAgNzMsICA3NCwgIDc1LCAgNzYsICA3NywgIDc4LCAgNzksICA4MCwgIDgxLCAgODIsICA4MywKKyAgICA4NCwgIDg1LCAgODYsICA4NywgIDg5LCAgMTA2LCAxMDcsIDExMywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIC0xLCAgLTEsCisgICAgLTEsICAtMSwgIDM4LCAgMzgsICAzOCwgIDM4LCAgMzgsICAzOCwgIDM4LCAgMzgsICA0MiwgIDQyLCAgNDIsICA0MiwgIDQyLAorICAgIDQyLCAgNDIsICA0MiwgIDQ0LCAgNDQsICA0NCwgIDQ0LCAgNDQsICA0NCwgIDQ0LCAgNDQsICA1OSwgIDU5LCAgNTksICA1OSwKKyAgICA1OSwgIDU5LCAgNTksICA1OSwgIDg4LCAgODgsICA4OCwgIDg4LCAgODgsICA4OCwgIDg4LCAgODgsICA5MCwgIDkwLCAgOTAsCisgICAgOTAsICA5MCwgIDkwLCAgOTAsICA5MCwgIDMzLCAgMzMsICAzNCwgIDM0LCAgNDAsICA0MCwgIDQxLCAgNDEsICA2MywgIDYzLAorICAgIDM5LCAgNDMsICAxMjQsIC0xLCAgLTEsICAtMSwgIDM1LCAgMzUsICAzNSwgIDM1LCAgMzUsICAzNSwgIDM1LCAgMzUsICA2MiwKKyAgICA2MiwgIDYyLCAgNjIsICA2MiwgIDYyLCAgNjIsICA2MiwgIDAsICAgMCwgICAwLCAgIDAsICAgMzYsICAzNiwgIDM2LCAgMzYsCisgICAgNjQsICA2NCwgIDY0LCAgNjQsICA5MSwgIDkxLCAgOTEsICA5MSwgIDY5LCAgNjksICA2OSwgIDY5LCAgNjksICA2OSwgIDY5LAorICAgIDY5LCAgNzAsICA3MCwgIDcwLCAgNzAsICA3MCwgIDcwLCAgNzAsICA3MCwgIDcxLCAgNzEsICA3MSwgIDcxLCAgNzEsICA3MSwKKyAgICA3MSwgIDcxLCAgNzIsICA3MiwgIDcyLCAgNzIsICA3MiwgIDcyLCAgNzIsICA3MiwgIDczLCAgNzMsICA3MywgIDczLCAgNzMsCisgICAgNzMsICA3MywgIDczLCAgNzQsICA3NCwgIDc0LCAgNzQsICA3NCwgIDc0LCAgNzQsICA3NCwgIDc1LCAgNzUsICA3NSwgIDc1LAorICAgIDc1LCAgNzUsICA3NSwgIDc1LCAgNzYsICA3NiwgIDc2LCAgNzYsICA3NiwgIDc2LCAgNzYsICA3NiwgIDc3LCAgNzcsICA3NywKKyAgICA3NywgIDc3LCAgNzcsICA3NywgIDc3LCAgNzgsICA3OCwgIDc4LCAgNzgsICA3OCwgIDc4LCAgNzgsICA3OCwgIDc5LCAgNzksCisgICAgNzksICA3OSwgIDc5LCAgNzksICA3OSwgIDc5LCAgODAsICA4MCwgIDgwLCAgODAsICA4MCwgIDgwLCAgODAsICA4MCwgIDgxLAorICAgIDgxLCAgODEsICA4MSwgIDgxLCAgODEsICA4MSwgIDgxLCAgODIsICA4MiwgIDgyLCAgODIsICA4MiwgIDgyLCAgODIsICA4MiwKKyAgICA4MywgIDgzLCAgODMsICA4MywgIDgzLCAgODMsICA4MywgIDgzLCAgODQsICA4NCwgIDg0LCAgODQsICA4NCwgIDg0LCAgODQsCisgICAgODQsICA4NSwgIDg1LCAgODUsICA4NSwgIDg1LCAgODUsICA4NSwgIDg1LCAgODYsICA4NiwgIDg2LCAgODYsICA4NiwgIDg2LAorICAgIDg2LCAgODYsICA4NywgIDg3LCAgODcsICA4NywgIDg3LCAgODcsICA4NywgIDg3LCAgODksICA4OSwgIDg5LCAgODksICA4OSwKKyAgICA4OSwgIDg5LCAgODksICAxMDYsIDEwNiwgMTA2LCAxMDYsIDEwNiwgMTA2LCAxMDYsIDEwNiwgMTA3LCAxMDcsIDEwNywgMTA3LAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExOCwgMTE4LCAxMTgsCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMjAsIDEyMCwKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIyLAorICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMzgsICAzOCwgIDM4LCAgMzgsICA0MiwgIDQyLCAgNDIsICA0MiwKKyAgICA0NCwgIDQ0LCAgNDQsICA0NCwgIDU5LCAgNTksICA1OSwgIDU5LCAgODgsICA4OCwgIDg4LCAgODgsICA5MCwgIDkwLCAgOTAsCisgICAgOTAsICAzMywgIDM0LCAgNDAsICA0MSwgIDYzLCAgLTEsICAtMSwgIC0xLCAgMzksICAzOSwgIDM5LCAgMzksICAzOSwgIDM5LAorICAgIDM5LCAgMzksICA0MywgIDQzLCAgNDMsICA0MywgIDQzLCAgNDMsICA0MywgIDQzLCAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsCisgICAgMTI0LCAxMjQsIDEyNCwgMzUsICAzNSwgIDM1LCAgMzUsICA2MiwgIDYyLCAgNjIsICA2MiwgIDAsICAgMCwgICAzNiwgIDM2LAorICAgIDY0LCAgNjQsICA5MSwgIDkxLCAgOTMsICA5MywgIDEyNiwgMTI2LCA5NCwgIDEyNSwgLTEsICAtMSwgIDYwLCAgNjAsICA2MCwKKyAgICA2MCwgIDYwLCAgNjAsICA2MCwgIDYwLCAgOTYsICA5NiwgIDk2LCAgOTYsICA5NiwgIDk2LCAgOTYsICA5NiwgIDEyMywgMTIzLAorICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICA5MiwKKyAgICA5MiwgIDkyLCAgOTIsICA5MiwgIDkyLCAgOTIsICA5MiwgIDE5NSwgMTk1LCAxOTUsIDE5NSwgMTk1LCAxOTUsIDE5NSwgMTk1LAorICAgIDIwOCwgMjA4LCAyMDgsIDIwOCwgMjA4LCAyMDgsIDIwOCwgMjA4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEzMCwgMTMwLCAxMzAsCisgICAgMTMwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDE2MiwgMTYyLCAxNjIsIDE2MiwgMTg0LCAxODQsIDE4NCwgMTg0LCAxOTQsIDE5NCwKKyAgICAxOTQsIDE5NCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDE1MywgMTUzLCAxNjEsIDE2MSwgMTY3LAorICAgIDE2NywgMTcyLCAxNzIsIDE3NiwgMTc2LCAxNzcsIDE3NywgMTc5LCAxNzksIDIwOSwgMjA5LCAyMTYsIDIxNiwgMjE3LCAyMTcsCisgICAgMjI3LCAyMjcsIDIyOSwgMjI5LCAyMzAsIDIzMCwgMTI5LCAxMzIsIDEzMywgMTM0LCAxMzYsIDE0NiwgMTU0LCAxNTYsIDE2MCwKKyAgICAxNjMsIDE2NCwgMTY5LCAxNzAsIDE3MywgMTc4LCAxODEsIDE4NSwgMTg2LCAxODcsIDE4OSwgMTkwLCAxOTYsIDE5OCwgMjI4LAorICAgIDIzMiwgMjMzLCAtMSwgIC0xLCAgLTEsICAtMSwgIDEsICAgMSwgICAxLCAgIDEsICAgMSwgICAxLCAgIDEsICAgMSwgICAxMzUsCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzcsIDEzNywgMTM3LCAxMzcsIDEzNywgMTM3LCAxMzcsIDEzNywKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LAorICAgIDEzOSwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsCisgICAgMTQxLCAxNDEsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDcsIDE0NywgMTQ3LCAxNDcsIDE0NywKKyAgICAxNDcsIDE0NywgMTQ3LCAxNDksIDE0OSwgMTQ5LCAxNDksIDE0OSwgMTQ5LCAxNDksIDE0OSwgMTUwLCAxNTAsIDE1MCwgMTUwLAorICAgIDE1MCwgMTUwLCAxNTAsIDE1MCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsCisgICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1NSwgMTU1LCAxNTUsIDE1NSwgMTU1LCAxNTUsIDE1NSwgMTU1LCAxNTcsIDE1NywKKyAgICAxNTcsIDE1NywgMTU3LCAxNTcsIDE1NywgMTU3LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTY1LAorICAgIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsCisgICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwKKyAgICAxNzQsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxODAsIDE4MCwgMTgwLCAxODAsIDE4MCwgMTgwLAorICAgIDE4MCwgMTgwLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsCisgICAgMTgzLCAxODMsIDE4MywgMTg4LCAxODgsIDE4OCwgMTg4LCAxODgsIDE4OCwgMTg4LCAxODgsIDE5MSwgMTkxLCAxOTEsIDE5MSwKKyAgICAxOTEsIDE5MSwgMTkxLCAxOTEsIDE5NywgMTk3LCAxOTcsIDE5NywgMTk3LCAxOTcsIDE5NywgMTk3LCAyMzEsIDIzMSwgMjMxLAorICAgIDIzMSwgMjMxLCAyMzEsIDIzMSwgMjMxLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgOSwgICA5LAorICAgIDksICAgOSwgICAxNDIsIDE0MiwgMTQyLCAxNDIsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDgsCisgICAgMTQ4LCAxNDgsIDE0OCwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDIwNiwgMjA2LCAyMDYsIDIwNiwKKyAgICAyMTUsIDIxNSwgMjE1LCAyMTUsIDIyNSwgMjI1LCAyMjUsIDIyNSwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzcsIDIzNywgMjM3LAorICAgIDIzNywgMTk5LCAxOTksIDIwNywgMjA3LCAyMzQsIDIzNCwgMjM1LCAyMzUsIDE5MiwgMTkzLCAyMDAsIDIwMSwgMjAyLCAyMDUsCisgICAgMjEwLCAyMTMsIDIxOCwgMjE5LCAyMzgsIDI0MCwgMjQyLCAyNDMsIDI1NSwgLTEsICAyMDMsIDIwMywgMjAzLCAyMDMsIDIwMywKKyAgICAyMDMsIDIwMywgMjAzLCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjExLCAyMTEsIDIxMSwgMjExLAorICAgIDIxMSwgMjExLCAyMTEsIDIxMSwgMjEyLCAyMTIsIDIxMiwgMjEyLCAyMTIsIDIxMiwgMjEyLCAyMTIsIDIxNCwgMjE0LCAyMTQsCisgICAgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIyMSwgMjIxLCAyMjEsIDIyMSwgMjIxLCAyMjEsIDIyMSwgMjIxLCAyMjIsIDIyMiwKKyAgICAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjQxLAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsCisgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwKKyAgICAyNDYsIDI0NywgMjQ3LCAyNDcsIDI0NywgMjQ3LCAyNDcsIDI0NywgMjQ3LCAyNDgsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjQ4LAorICAgIDI0OCwgMjQ4LCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsCisgICAgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MywgMjUzLCAyNTMsIDI1MywKKyAgICAyNTMsIDI1MywgMjUzLCAyNTMsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyLCAgIDIsICAgMiwKKyAgICAyLCAgIDMsICAgMywgICAzLCAgIDMsICAgNCwgICA0LCAgIDQsICAgNCwgICA1LCAgIDUsICAgNSwgICA1LCAgIDYsICAgNiwKKyAgICA2LCAgIDYsICAgNywgICA3LCAgIDcsICAgNywgICA4LCAgIDgsICAgOCwgICA4LCAgIDExLCAgMTEsICAxMSwgIDExLCAgMTIsCisgICAgMTIsICAxMiwgIDEyLCAgMTQsICAxNCwgIDE0LCAgMTQsICAxNSwgIDE1LCAgMTUsICAxNSwgIDE2LCAgMTYsICAxNiwgIDE2LAorICAgIDE3LCAgMTcsICAxNywgIDE3LCAgMTgsICAxOCwgIDE4LCAgMTgsICAxOSwgIDE5LCAgMTksICAxOSwgIDIwLCAgMjAsICAyMCwKKyAgICAyMCwgIDIxLCAgMjEsICAyMSwgIDIxLCAgMjMsICAyMywgIDIzLCAgMjMsICAyNCwgIDI0LCAgMjQsICAyNCwgIDI1LCAgMjUsCisgICAgMjUsICAyNSwgIDI2LCAgMjYsICAyNiwgIDI2LCAgMjcsICAyNywgIDI3LCAgMjcsICAyOCwgIDI4LCAgMjgsICAyOCwgIDI5LAorICAgIDI5LCAgMjksICAyOSwgIDMwLCAgMzAsICAzMCwgIDMwLCAgMzEsICAzMSwgIDMxLCAgMzEsICAxMjcsIDEyNywgMTI3LCAxMjcsCisgICAgMjIwLCAyMjAsIDIyMCwgMjIwLCAyNDksIDI0OSwgMjQ5LCAyNDksIDEwLCAgMTMsICAyMiwgIDI1NiwgOTMsICA5MywgIDkzLAorICAgIDkzLCAgMTI2LCAxMjYsIDEyNiwgMTI2LCA5NCwgIDk0LCAgMTI1LCAxMjUsIDYwLCAgOTYsICAxMjMsIC0xLCAgOTIsICAxOTUsCisgICAgMjA4LCAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDEyOCwKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxNjIsIDE2MiwgMTYyLCAxNjIsIDE2MiwgMTYyLCAxNjIsCisgICAgMTYyLCAxODQsIDE4NCwgMTg0LCAxODQsIDE4NCwgMTg0LCAxODQsIDE4NCwgMTk0LCAxOTQsIDE5NCwgMTk0LCAxOTQsIDE5NCwKKyAgICAxOTQsIDE5NCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LAorICAgIDIyNiwgMjI2LCAyMjYsIDE1MywgMTUzLCAxNTMsIDE1MywgMTYxLCAxNjEsIDE2MSwgMTYxLCAxNjcsIDE2NywgMTY3LCAxNjcsCisgICAgMTcyLCAxNzIsIDE3MiwgMTcyLCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NywgMTc3LCAxNzcsIDE3NywgMTc5LCAxNzksIDE3OSwKKyAgICAxNzksIDIwOSwgMjA5LCAyMDksIDIwOSwgMjE2LCAyMTYsIDIxNiwgMjE2LCAyMTcsIDIxNywgMjE3LCAyMTcsIDIyNywgMjI3LAorICAgIDIyNywgMjI3LCAyMjksIDIyOSwgMjI5LCAyMjksIDIzMCwgMjMwLCAyMzAsIDIzMCwgMTI5LCAxMjksIDEzMiwgMTMyLCAxMzMsCisgICAgMTMzLCAxMzQsIDEzNCwgMTM2LCAxMzYsIDE0NiwgMTQ2LCAxNTQsIDE1NCwgMTU2LCAxNTYsIDE2MCwgMTYwLCAxNjMsIDE2MywKKyAgICAxNjQsIDE2NCwgMTY5LCAxNjksIDE3MCwgMTcwLCAxNzMsIDE3MywgMTc4LCAxNzgsIDE4MSwgMTgxLCAxODUsIDE4NSwgMTg2LAorICAgIDE4NiwgMTg3LCAxODcsIDE4OSwgMTg5LCAxOTAsIDE5MCwgMTk2LCAxOTYsIDE5OCwgMTk4LCAyMjgsIDIyOCwgMjMyLCAyMzIsCisgICAgMjMzLCAyMzMsIDEsICAgMTM1LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQzLCAxNDcsIDE0OSwgMTUwLCAxNTEsIDE1MiwKKyAgICAxNTUsIDE1NywgMTU4LCAxNjUsIDE2NiwgMTY4LCAxNzQsIDE3NSwgMTgwLCAxODIsIDE4MywgMTg4LCAxOTEsIDE5NywgMjMxLAorICAgIDIzOSwgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDksICAgOSwgICA5LAorICAgIDksICAgOSwgICA5LCAgIDksICAgOSwgICAxNDIsIDE0MiwgMTQyLCAxNDIsIDE0MiwgMTQyLCAxNDIsIDE0MiwgMTQ0LCAxNDQsCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0OCwKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAyMDYsIDIwNiwgMjA2LCAyMDYsIDIwNiwgMjA2LCAyMDYsCisgICAgMjA2LCAyMTUsIDIxNSwgMjE1LCAyMTUsIDIxNSwgMjE1LCAyMTUsIDIxNSwgMjI1LCAyMjUsIDIyNSwgMjI1LCAyMjUsIDIyNSwKKyAgICAyMjUsIDIyNSwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LAorICAgIDIzNywgMjM3LCAyMzcsIDE5OSwgMTk5LCAxOTksIDE5OSwgMjA3LCAyMDcsIDIwNywgMjA3LCAyMzQsIDIzNCwgMjM0LCAyMzQsCisgICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAxOTIsIDE5MiwgMTkzLCAxOTMsIDIwMCwgMjAwLCAyMDEsIDIwMSwgMjAyLCAyMDIsIDIwNSwKKyAgICAyMDUsIDIxMCwgMjEwLCAyMTMsIDIxMywgMjE4LCAyMTgsIDIxOSwgMjE5LCAyMzgsIDIzOCwgMjQwLCAyNDAsIDI0MiwgMjQyLAorICAgIDI0MywgMjQzLCAyNTUsIDI1NSwgMjAzLCAyMDQsIDIxMSwgMjEyLCAyMTQsIDIyMSwgMjIyLCAyMjMsIDI0MSwgMjQ0LCAyNDUsCisgICAgMjQ2LCAyNDcsIDI0OCwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLAorICAgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAyLCAgIDIsICAgMiwgICAyLCAgIDIsICAgMiwgICAyLAorICAgIDIsICAgMywgICAzLCAgIDMsICAgMywgICAzLCAgIDMsICAgMywgICAzLCAgIDQsICAgNCwgICA0LCAgIDQsICAgNCwgICA0LAorICAgIDQsICAgNCwgICA1LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNiwgICA2LCAgIDYsICAgNiwgICA2LAorICAgIDYsICAgNiwgICA2LCAgIDcsICAgNywgICA3LCAgIDcsICAgNywgICA3LCAgIDcsICAgNywgICA4LCAgIDgsICAgOCwgICA4LAorICAgIDgsICAgOCwgICA4LCAgIDgsICAgMTEsICAxMSwgIDExLCAgMTEsICAxMSwgIDExLCAgMTEsICAxMSwgIDEyLCAgMTIsICAxMiwKKyAgICAxMiwgIDEyLCAgMTIsICAxMiwgIDEyLCAgMTQsICAxNCwgIDE0LCAgMTQsICAxNCwgIDE0LCAgMTQsICAxNCwgIDE1LCAgMTUsCisgICAgMTUsICAxNSwgIDE1LCAgMTUsICAxNSwgIDE1LCAgMTYsICAxNiwgIDE2LCAgMTYsICAxNiwgIDE2LCAgMTYsICAxNiwgIDE3LAorICAgIDE3LCAgMTcsICAxNywgIDE3LCAgMTcsICAxNywgIDE3LCAgMTgsICAxOCwgIDE4LCAgMTgsICAxOCwgIDE4LCAgMTgsICAxOCwKKyAgICAxOSwgIDE5LCAgMTksICAxOSwgIDE5LCAgMTksICAxOSwgIDE5LCAgMjAsICAyMCwgIDIwLCAgMjAsICAyMCwgIDIwLCAgMjAsCisgICAgMjAsICAyMSwgIDIxLCAgMjEsICAyMSwgIDIxLCAgMjEsICAyMSwgIDIxLCAgMjMsICAyMywgIDIzLCAgMjMsICAyMywgIDIzLAorICAgIDIzLCAgMjMsICAyNCwgIDI0LCAgMjQsICAyNCwgIDI0LCAgMjQsICAyNCwgIDI0LCAgMjUsICAyNSwgIDI1LCAgMjUsICAyNSwKKyAgICAyNSwgIDI1LCAgMjUsICAyNiwgIDI2LCAgMjYsICAyNiwgIDI2LCAgMjYsICAyNiwgIDI2LCAgMjcsICAyNywgIDI3LCAgMjcsCisgICAgMjcsICAyNywgIDI3LCAgMjcsICAyOCwgIDI4LCAgMjgsICAyOCwgIDI4LCAgMjgsICAyOCwgIDI4LCAgMjksICAyOSwgIDI5LAorICAgIDI5LCAgMjksICAyOSwgIDI5LCAgMjksICAzMCwgIDMwLCAgMzAsICAzMCwgIDMwLCAgMzAsICAzMCwgIDMwLCAgMzEsICAzMSwKKyAgICAzMSwgIDMxLCAgMzEsICAzMSwgIDMxLCAgMzEsICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjIwLAorICAgIDIyMCwgMjIwLCAyMjAsIDIyMCwgMjIwLCAyMjAsIDIyMCwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksCisgICAgMTAsICAxMCwgIDEzLCAgMTMsICAyMiwgIDIyLCAgMjU2LCAyNTYsIDY3LCAgNjcsICA2NywgIDY3LCAgNjcsICA2NywgIDY3LAorICAgIDY3LCAgNjgsICA2OCwgIDY4LCAgNjgsICA2OCwgIDY4LCAgNjgsICA2OCwgIDk1LCAgOTUsICA5NSwgIDk1LCAgOTUsICA5NSwKKyAgICA5NSwgIDk1LCAgOTgsICA5OCwgIDk4LCAgOTgsICA5OCwgIDk4LCAgOTgsICA5OCwgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLAorICAgIDEwMCwgMTAwLCAxMDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDMsIDEwMywgMTAzLCAxMDMsCisgICAgMTAzLCAxMDMsIDEwMywgMTAzLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA4LCAxMDgsIDEwOCwKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA5LCAxMDksIDEwOSwgMTA5LCAxMDksIDEwOSwgMTA5LCAxMDksIDExMCwgMTEwLAorICAgIDExMCwgMTEwLCAxMTAsIDExMCwgMTEwLCAxMTAsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTQsCisgICAgMTE0LCAxMTQsIDExNCwgMTE0LCAxMTQsIDExNCwgMTE0LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywKKyAgICA1OCwgIDU4LCAgNTgsICA1OCwgIDY2LCAgNjYsICA2NiwgIDY2LCAgNjcsICA2NywgIDY3LCAgNjcsICA2OCwgIDY4LCAgNjgsCisgICAgNjgsICA2OSwgIDY5LCAgNjksICA2OSwgIDcwLCAgNzAsICA3MCwgIDcwLCAgNzEsICA3MSwgIDcxLCAgNzEsICA3MiwgIDcyLAorICAgIDcyLCAgNzIsICA3MywgIDczLCAgNzMsICA3MywgIDc0LCAgNzQsICA3NCwgIDc0LCAgNzUsICA3NSwgIDc1LCAgNzUsICA3NiwKKyAgICA3NiwgIDc2LCAgNzYsICA3NywgIDc3LCAgNzcsICA3NywgIDc4LCAgNzgsICA3OCwgIDc4LCAgNzksICA3OSwgIDc5LCAgNzksCisgICAgODAsICA4MCwgIDgwLCAgODAsICA4MSwgIDgxLCAgODEsICA4MSwgIDgyLCAgODIsICA4MiwgIDgyLCAgODMsICA4MywgIDgzLAorICAgIDgzLCAgODQsICA4NCwgIDg0LCAgODQsICA4NSwgIDg1LCAgODUsICA4NSwgIDg2LCAgODYsICA4NiwgIDg2LCAgODcsICA4NywKKyAgICA4NywgIDg3LCAgODksICA4OSwgIDg5LCAgODksICAxMDYsIDEwNiwgMTA2LCAxMDYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTEzLAorICAgIDExMywgMTEzLCAxMTMsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMjAsIDEyMCwgMTIwLCAxMjAsCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIyLCAxMjIsIDM4LCAgMzgsICA0MiwgIDQyLCAgNDQsICA0NCwgIDU5LAorICAgIDU5LCAgODgsICA4OCwgIDkwLCAgOTAsICAtMSwgIC0xLCAgLTEsICAtMSwgIDMzLCAgMzMsICAzMywgIDMzLCAgMzMsICAzMywKKyAgICAzMywgIDMzLCAgMzQsICAzNCwgIDM0LCAgMzQsICAzNCwgIDM0LCAgMzQsICAzNCwgIDQwLCAgNDAsICA0MCwgIDQwLCAgNDAsCisgICAgNDAsICA0MCwgIDQwLCAgNDEsICA0MSwgIDQxLCAgNDEsICA0MSwgIDQxLCAgNDEsICA0MSwgIDYzLCAgNjMsICA2MywgIDYzLAorICAgIDYzLCAgNjMsICA2MywgIDYzLCAgMzksICAzOSwgIDM5LCAgMzksICA0MywgIDQzLCAgNDMsICA0MywgIDEyNCwgMTI0LCAxMjQsCisgICAgMTI0LCAzNSwgIDM1LCAgNjIsICA2MiwgIDAsICAgMzYsICA2NCwgIDkxLCAgOTMsICAxMjYsIC0xLCAgLTEsICA5NCwgIDk0LAorICAgIDk0LCAgOTQsICA5NCwgIDk0LCAgOTQsICA5NCwgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCA2MCwKKyAgICA2MCwgIDYwLCAgNjAsICA5NiwgIDk2LCAgOTYsICA5NiwgIDEyMywgMTIzLCAxMjMsIDEyMywgLTEsICAtMSwgIC0xLCAgLTEsCisgICAgOTIsICA5MiwgIDkyLCAgOTIsICAxOTUsIDE5NSwgMTk1LCAxOTUsIDIwOCwgMjA4LCAyMDgsIDIwOCwgMTI4LCAxMjgsIDEzMCwKKyAgICAxMzAsIDEzMSwgMTMxLCAxNjIsIDE2MiwgMTg0LCAxODQsIDE5NCwgMTk0LCAyMjQsIDIyNCwgMjI2LCAyMjYsIDE1MywgMTYxLAorICAgIDE2NywgMTcyLCAxNzYsIDE3NywgMTc5LCAyMDksIDIxNiwgMjE3LCAyMjcsIDIyOSwgMjMwLCAtMSwgIC0xLCAgLTEsICAtMSwKKyAgICAtMSwgIC0xLCAgLTEsICAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTMyLCAxMzIsIDEzMiwgMTMyLAorICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzNCwgMTM0LCAxMzQsCisgICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxNDYsIDE0NiwKKyAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNTQsIDE1NCwgMTU0LCAxNTQsIDE1NCwgMTU0LCAxNTQsIDE1NCwgMTU2LAorICAgIDE1NiwgMTU2LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxNjAsCisgICAgMTYzLCAxNjMsIDE2MywgMTYzLCAxNjMsIDE2MywgMTYzLCAxNjMsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwKKyAgICAxNjQsIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLAorICAgIDE3MCwgMTcwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsCisgICAgMTc4LCAxNzgsIDE3OCwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4NSwgMTg1LCAxODUsIDE4NSwKKyAgICAxODUsIDE4NSwgMTg1LCAxODUsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODksIDE4OSwgMTg5LCAxODksIDE4OSwgMTg5LCAxODksIDE4OSwgMTkwLCAxOTAsCisgICAgMTkwLCAxOTAsIDE5MCwgMTkwLCAxOTAsIDE5MCwgMTk2LCAxOTYsIDE5NiwgMTk2LCAxOTYsIDE5NiwgMTk2LCAxOTYsIDE5OCwKKyAgICAxOTgsIDE5OCwgMTk4LCAxOTgsIDE5OCwgMTk4LCAxOTgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzMsCisgICAgMjMzLCAxLCAgIDEsICAgMSwgICAxLCAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM3LCAxMzcsIDEzNywgMTM3LCAxMzgsIDEzOCwKKyAgICAxMzgsIDEzOCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQzLAorICAgIDE0MywgMTQzLCAxNDMsIDE0NywgMTQ3LCAxNDcsIDE0NywgMTQ5LCAxNDksIDE0OSwgMTQ5LCAxNTAsIDE1MCwgMTUwLCAxNTAsCisgICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1NSwgMTU1LCAxNTUsIDE1NSwgMTU3LCAxNTcsIDE1NywKKyAgICAxNTcsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2OCwgMTY4LAorICAgIDE2OCwgMTY4LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTgwLCAxODAsIDE4MCwgMTgwLCAxODIsCisgICAgMTgyLCAxODIsIDE4MiwgMTgzLCAxODMsIDE4MywgMTgzLCAxODgsIDE4OCwgMTg4LCAxODgsIDE5MSwgMTkxLCAxOTEsIDE5MSwKKyAgICAxOTcsIDE5NywgMTk3LCAxOTcsIDIzMSwgMjMxLCAyMzEsIDIzMSwgMjM5LCAyMzksIDIzOSwgMjM5LCA5LCAgIDksICAgMTQyLAorICAgIDE0MiwgMTQ0LCAxNDQsIDE0NSwgMTQ1LCAxNDgsIDE0OCwgMTU5LCAxNTksIDE3MSwgMTcxLCAyMDYsIDIwNiwgMjE1LCAyMTUsCisgICAgMjI1LCAyMjUsIDIzNiwgMjM2LCAyMzcsIDIzNywgMTk5LCAyMDcsIDIzNCwgMjM1LCAxOTIsIDE5MiwgMTkyLCAxOTIsIDE5MiwKKyAgICAxOTIsIDE5MiwgMTkyLCAxOTMsIDE5MywgMTkzLCAxOTMsIDE5MywgMTkzLCAxOTMsIDE5MywgMjAwLCAyMDAsIDIwMCwgMjAwLAorICAgIDIwMCwgMjAwLCAyMDAsIDIwMCwgMjAxLCAyMDEsIDIwMSwgMjAxLCAyMDEsIDIwMSwgMjAxLCAyMDEsIDIwMiwgMjAyLCAyMDIsCisgICAgMjAyLCAyMDIsIDIwMiwgMjAyLCAyMDIsIDIwNSwgMjA1LCAyMDUsIDIwNSwgMjA1LCAyMDUsIDIwNSwgMjA1LCAyMTAsIDIxMCwKKyAgICAyMTAsIDIxMCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTMsIDIxMywgMjEzLCAyMTMsIDIxMywgMjEzLCAyMTMsIDIxMywgMjE4LAorICAgIDIxOCwgMjE4LCAyMTgsIDIxOCwgMjE4LCAyMTgsIDIxOCwgMjE5LCAyMTksIDIxOSwgMjE5LCAyMTksIDIxOSwgMjE5LCAyMTksCisgICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwKKyAgICAyNDAsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLAorICAgIDI0MywgMjQzLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjAzLCAyMDMsIDIwMywgMjAzLCAyMDQsCisgICAgMjA0LCAyMDQsIDIwNCwgMjExLCAyMTEsIDIxMSwgMjExLCAyMTIsIDIxMiwgMjEyLCAyMTIsIDIxNCwgMjE0LCAyMTQsIDIxNCwKKyAgICAyMjEsIDIyMSwgMjIxLCAyMjEsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyNDEsIDI0MSwgMjQxLAorICAgIDI0MSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ3LCAyNDcsCisgICAgMjQ3LCAyNDcsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwKKyAgICAyNTIsIDI1MiwgMjUyLCAyNTMsIDI1MywgMjUzLCAyNTMsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMiwgICAyLCAgIDMsICAgMywKKyAgICA0LCAgIDQsICAgNSwgICA1LCAgIDYsICAgNiwgICA3LCAgIDcsICAgOCwgICA4LCAgIDExLCAgMTEsICAxMiwgIDEyLCAgMTQsCisgICAgMTQsICAxNSwgIDE1LCAgMTYsICAxNiwgIDE3LCAgMTcsICAxOCwgIDE4LCAgMTksICAxOSwgIDIwLCAgMjAsICAyMSwgIDIxLAorICAgIDIzLCAgMjMsICAyNCwgIDI0LCAgMjUsICAyNSwgIDI2LCAgMjYsICAyNywgIDI3LCAgMjgsICAyOCwgIDI5LCAgMjksICAzMCwKKyAgICAzMCwgIDMxLCAgMzEsICAxMjcsIDEyNywgMjIwLCAyMjAsIDI0OSwgMjQ5LCAtMSwgIC0xLCAgMTAsICAxMCwgIDEwLCAgMTAsCisgICAgMTAsICAxMCwgIDEwLCAgMTAsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMjIsICAyMiwgIDIyLAorICAgIDIyLCAgMjIsICAyMiwgIDIyLCAgMjIsICAyNTYsIDI1NiwgMjU2LCAyNTYsIDI1NiwgMjU2LCAyNTYsIDI1NiwgNDUsICA0NSwKKyAgICA0NSwgIDQ1LCAgNDUsICA0NSwgIDQ1LCAgNDUsICA0NiwgIDQ2LCAgNDYsICA0NiwgIDQ2LCAgNDYsICA0NiwgIDQ2LCAgNDcsCisgICAgNDcsICA0NywgIDQ3LCAgNDcsICA0NywgIDQ3LCAgNDcsICA1MSwgIDUxLCAgNTEsICA1MSwgIDUxLCAgNTEsICA1MSwgIDUxLAorICAgIDUyLCAgNTIsICA1MiwgIDUyLCAgNTIsICA1MiwgIDUyLCAgNTIsICA1MywgIDUzLCAgNTMsICA1MywgIDUzLCAgNTMsICA1MywKKyAgICA1MywgIDU0LCAgNTQsICA1NCwgIDU0LCAgNTQsICA1NCwgIDU0LCAgNTQsICA1NSwgIDU1LCAgNTUsICA1NSwgIDU1LCAgNTUsCisgICAgNTUsICA1NSwgIDU2LCAgNTYsICA1NiwgIDU2LCAgNTYsICA1NiwgIDU2LCAgNTYsICA1NywgIDU3LCAgNTcsICA1NywgIDU3LAorICAgIDU3LCAgNTcsICA1NywgIDUwLCAgNTAsICA1MCwgIDUwLCAgNTAsICA1MCwgIDUwLCAgNTAsICA5NywgIDk3LCAgOTcsICA5NywKKyAgICA5NywgIDk3LCAgOTcsICA5NywgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICAxMDEsIDEwMSwgMTAxLAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTExLCAxMTEsCisgICAgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwKKyAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDMyLCAgMzIsICAzMiwgIDMyLCAgMzcsICAzNywgIDM3LCAgMzcsCisgICAgNDUsICA0NSwgIDQ1LCAgNDUsICA0NiwgIDQ2LCAgNDYsICA0NiwgIDQ3LCAgNDcsICA0NywgIDQ3LCAgNTEsICA1MSwgIDUxLAorICAgIDUxLCAgNTIsICA1MiwgIDUyLCAgNTIsICA1MywgIDUzLCAgNTMsICA1MywgIDU0LCAgNTQsICA1NCwgIDU0LCAgNTUsICA1NSwKKyAgICA1NSwgIDU1LCAgNTYsICA1NiwgIDU2LCAgNTYsICA1NywgIDU3LCAgNTcsICA1NywgIDYxLCAgNjEsICA2MSwgIDYxLCAgNjUsCisgICAgNjUsICA2NSwgIDY1LCAgOTUsICA5NSwgIDk1LCAgOTUsICA5OCwgIDk4LCAgOTgsICA5OCwgIDEwMCwgMTAwLCAxMDAsIDEwMCwKKyAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMywgMTAzLCAxMDMsIDEwMywgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDgsIDEwOCwgMTA4LAorICAgIDEwOCwgMTA5LCAxMDksIDEwOSwgMTA5LCAxMTAsIDExMCwgMTEwLCAxMTAsIDExMiwgMTEyLCAxMTIsIDExMiwgMTE0LCAxMTQsCisgICAgMTE0LCAxMTQsIDExNywgMTE3LCAxMTcsIDExNywgNTgsICA1OCwgIDY2LCAgNjYsICA2NywgIDY3LCAgNjgsICA2OCwgIDY5LAorICAgIDY5LCAgNzAsICA3MCwgIDcxLCAgNzEsICA3MiwgIDcyLCAgNzMsICA3MywgIDc0LCAgNzQsICA3NSwgIDc1LCAgNzYsICA3NiwKKyAgICA3NywgIDc3LCAgNzgsICA3OCwgIDc5LCAgNzksICA4MCwgIDgwLCAgODEsICA4MSwgIDgyLCAgODIsICA4MywgIDgzLCAgODQsCisgICAgODQsICA4NSwgIDg1LCAgODYsICA4NiwgIDg3LCAgODcsICA4OSwgIDg5LCAgMTA2LCAxMDYsIDEwNywgMTA3LCAxMTMsIDExMywKKyAgICAxMTgsIDExOCwgMTE5LCAxMTksIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIyLCAxMjIsIDM4LCAgNDIsICA0NCwgIDU5LCAgODgsCisgICAgOTAsICAtMSwgIC0xLCAgMzMsICAzMywgIDMzLCAgMzMsICAzNCwgIDM0LCAgMzQsICAzNCwgIDQwLCAgNDAsICA0MCwgIDQwLAorICAgIDQxLCAgNDEsICA0MSwgIDQxLCAgNjMsICA2MywgIDYzLCAgNjMsICAzOSwgIDM5LCAgNDMsICA0MywgIDEyNCwgMTI0LCAzNSwKKyAgICA2MiwgIC0xLCAgLTEsICAtMSwgIC0xLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDM2LCAgMzYsCisgICAgMzYsICAzNiwgIDM2LCAgMzYsICAzNiwgIDM2LCAgNjQsICA2NCwgIDY0LCAgNjQsICA2NCwgIDY0LCAgNjQsICA2NCwgIDkxLAorICAgIDkxLCAgOTEsICA5MSwgIDkxLCAgOTEsICA5MSwgIDkxLCAgOTMsICA5MywgIDkzLCAgOTMsICA5MywgIDkzLCAgOTMsICA5MywKKyAgICAxMjYsIDEyNiwgMTI2LCAxMjYsIDEyNiwgMTI2LCAxMjYsIDEyNiwgOTQsICA5NCwgIDk0LCAgOTQsICAxMjUsIDEyNSwgMTI1LAorICAgIDEyNSwgNjAsICA2MCwgIDk2LCAgOTYsICAxMjMsIDEyMywgLTEsICAtMSwgIDkyLCAgOTIsICAxOTUsIDE5NSwgMjA4LCAyMDgsCisgICAgMTI4LCAxMzAsIDEzMSwgMTYyLCAxODQsIDE5NCwgMjI0LCAyMjYsIC0xLCAgLTEsICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywKKyAgICAxNTMsIDE1MywgMTUzLCAxNjEsIDE2MSwgMTYxLCAxNjEsIDE2MSwgMTYxLCAxNjEsIDE2MSwgMTY3LCAxNjcsIDE2NywgMTY3LAorICAgIDE2NywgMTY3LCAxNjcsIDE2NywgMTcyLCAxNzIsIDE3MiwgMTcyLCAxNzIsIDE3MiwgMTcyLCAxNzIsIDE3NiwgMTc2LCAxNzYsCisgICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NywgMTc3LCAxNzcsIDE3NywgMTc3LCAxNzcsIDE3NywgMTc3LCAxNzksIDE3OSwKKyAgICAxNzksIDE3OSwgMTc5LCAxNzksIDE3OSwgMTc5LCAyMDksIDIwOSwgMjA5LCAyMDksIDIwOSwgMjA5LCAyMDksIDIwOSwgMjE2LAorICAgIDIxNiwgMjE2LCAyMTYsIDIxNiwgMjE2LCAyMTYsIDIxNiwgMjE3LCAyMTcsIDIxNywgMjE3LCAyMTcsIDIxNywgMjE3LCAyMTcsCisgICAgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwKKyAgICAyMjksIDIzMCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAxMjksIDEyOSwgMTI5LCAxMjksIDEzMiwgMTMyLAorICAgIDEzMiwgMTMyLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxNDYsCisgICAgMTQ2LCAxNDYsIDE0NiwgMTU0LCAxNTQsIDE1NCwgMTU0LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDE2MCwgMTYwLCAxNjAsIDE2MCwKKyAgICAxNjMsIDE2MywgMTYzLCAxNjMsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNzAsIDE3MCwgMTcwLAorICAgIDE3MCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTg1LCAxODUsCisgICAgMTg1LCAxODUsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODksIDE4OSwgMTg5LCAxODksIDE5MCwKKyAgICAxOTAsIDE5MCwgMTkwLCAxOTYsIDE5NiwgMTk2LCAxOTYsIDE5OCwgMTk4LCAxOTgsIDE5OCwgMjI4LCAyMjgsIDIyOCwgMjI4LAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMzLCAyMzMsIDIzMywgMjMzLCAxLCAgIDEsICAgMTM1LCAxMzUsIDEzNywgMTM3LCAxMzgsCisgICAgMTM4LCAxMzksIDEzOSwgMTQwLCAxNDAsIDE0MSwgMTQxLCAxNDMsIDE0MywgMTQ3LCAxNDcsIDE0OSwgMTQ5LCAxNTAsIDE1MCwKKyAgICAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1NSwgMTU1LCAxNTcsIDE1NywgMTU4LCAxNTgsIDE2NSwgMTY1LCAxNjYsIDE2NiwgMTY4LAorICAgIDE2OCwgMTc0LCAxNzQsIDE3NSwgMTc1LCAxODAsIDE4MCwgMTgyLCAxODIsIDE4MywgMTgzLCAxODgsIDE4OCwgMTkxLCAxOTEsCisgICAgMTk3LCAxOTcsIDIzMSwgMjMxLCAyMzksIDIzOSwgOSwgICAxNDIsIDE0NCwgMTQ1LCAxNDgsIDE1OSwgMTcxLCAyMDYsIDIxNSwKKyAgICAyMjUsIDIzNiwgMjM3LCAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDE5OSwgMTk5LAorICAgIDE5OSwgMTk5LCAxOTksIDE5OSwgMTk5LCAxOTksIDIwNywgMjA3LCAyMDcsIDIwNywgMjA3LCAyMDcsIDIwNywgMjA3LCAyMzQsCisgICAgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwKKyAgICAxOTIsIDE5MiwgMTkyLCAxOTIsIDE5MywgMTkzLCAxOTMsIDE5MywgMjAwLCAyMDAsIDIwMCwgMjAwLCAyMDEsIDIwMSwgMjAxLAorICAgIDIwMSwgMjAyLCAyMDIsIDIwMiwgMjAyLCAyMDUsIDIwNSwgMjA1LCAyMDUsIDIxMCwgMjEwLCAyMTAsIDIxMCwgMjEzLCAyMTMsCisgICAgMjEzLCAyMTMsIDIxOCwgMjE4LCAyMTgsIDIxOCwgMjE5LCAyMTksIDIxOSwgMjE5LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDI0MCwKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDMsIDI0MywgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgIDIwMywgMjAzLCAyMDQsIDIwNCwgMjExLCAyMTEsIDIxMiwgMjEyLCAyMTQsIDIxNCwgMjIxLCAyMjEsIDIyMiwgMjIyLCAyMjMsCisgICAgMjIzLCAyNDEsIDI0MSwgMjQ0LCAyNDQsIDI0NSwgMjQ1LCAyNDYsIDI0NiwgMjQ3LCAyNDcsIDI0OCwgMjQ4LCAyNTAsIDI1MCwKKyAgICAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MywgMjUzLCAyNTQsIDI1NCwgMiwgICAzLCAgIDQsICAgNSwgICA2LCAgIDcsICAgOCwKKyAgICAxMSwgIDEyLCAgMTQsICAxNSwgIDE2LCAgMTcsICAxOCwgIDE5LCAgMjAsICAyMSwgIDIzLCAgMjQsICAyNSwgIDI2LCAgMjcsCisgICAgMjgsICAyOSwgIDMwLCAgMzEsICAxMjcsIDIyMCwgMjQ5LCAtMSwgIDEwLCAgMTAsICAxMCwgIDEwLCAgMTMsICAxMywgIDEzLAorICAgIDEzLCAgMjIsICAyMiwgIDIyLCAgMjIsICAyNTYsIDI1NiwgMjU2LCAyNTYsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBpbnZlcnNlX2Jhc2U2NFsyNTZdID0geworICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDYyLCAgMjU1LAorICAgIDI1NSwgMjU1LCA2MywgIDUyLCAgNTMsICA1NCwgIDU1LCAgNTYsICA1NywgIDU4LCAgNTksICA2MCwgIDYxLCAgMjU1LCAyNTUsCisgICAgMjU1LCA2NCwgIDI1NSwgMjU1LCAyNTUsIDAsICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICA4LCAgIDksCisgICAgMTAsICAxMSwgIDEyLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDE4LCAgMTksICAyMCwgIDIxLCAgMjIsICAyMywgIDI0LAorICAgIDI1LCAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjYsICAyNywgIDI4LCAgMjksICAzMCwgIDMxLCAgMzIsICAzMywKKyAgICAzNCwgIDM1LCAgMzYsICAzNywgIDM4LCAgMzksICA0MCwgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA0NiwgIDQ3LCAgNDgsCisgICAgNDksICA1MCwgIDUxLCAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgMjU1LAorfTsKKworLyogZW1pc3Npb24gaGVscGVycyAqLworc3RhdGljIGludCBvbl9oZHIoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBncnBjX21kZWxlbSAqbWQsCisgICAgICAgICAgICAgICAgICBpbnQgYWRkX3RvX3RhYmxlKSB7CisgIGlmIChhZGRfdG9fdGFibGUpIHsKKyAgICBpZiAoIWdycGNfY2h0dHAyX2hwdGJsX2FkZCgmcC0+dGFibGUsIG1kKSkgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorICB9CisgIHAtPm9uX2hlYWRlcihwLT5vbl9oZWFkZXJfdXNlcl9kYXRhLCBtZCk7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgZ3JwY19tZHN0ciAqdGFrZV9zdHJpbmcoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcgKnN0cikgeworICBncnBjX21kc3RyICpzID0gZ3JwY19tZHN0cl9mcm9tX2J1ZmZlcigodWludDhfdCAqKXN0ci0+c3RyLCBzdHItPmxlbmd0aCk7CisgIHN0ci0+bGVuZ3RoID0gMDsKKyAgcmV0dXJuIHM7Cit9CisKKy8qIGp1bXAgdG8gdGhlIG5leHQgc3RhdGUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfbmV4dChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcC0+c3RhdGUgPSAqcC0+bmV4dF9zdGF0ZSsrOworICByZXR1cm4gcC0+c3RhdGUocCwgY3VyLCBlbmQpOworfQorCisvKiBiZWdpbiBwYXJzaW5nIGEgaGVhZGVyOiBhbGwgZnVuY3Rpb25hbGl0eSBpcyBlbmNvZGVkIGludG8gbG9va3VwIHRhYmxlcworICAgYWJvdmUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfYmVnaW4oZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBpZiAoY3VyID09IGVuZCkgeworICAgIHAtPnN0YXRlID0gcGFyc2VfYmVnaW47CisgICAgcmV0dXJuIDE7CisgIH0KKworICByZXR1cm4gZmlyc3RfYnl0ZV9hY3Rpb25bZmlyc3RfYnl0ZV9sdXRbKmN1cl1dKHAsIGN1ciwgZW5kKTsKK30KKworLyogc3RyZWFtIGRlcGVuZGVuY3kgYW5kIHByaW9yaXRpemF0aW9uIGRhdGE6IHdlIGp1c3Qgc2tpcCBpdCAqLworc3RhdGljIGludCBwYXJzZV9zdHJlYW1fd2VpZ2h0KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBpZiAoY3VyID09IGVuZCkgeworICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX3dlaWdodDsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHJldHVybiBwLT5hZnRlcl9wcmlvcml0aXphdGlvbihwLCBjdXIgKyAxLCBlbmQpOworfQorCitzdGF0aWMgaW50IHBhcnNlX3N0cmVhbV9kZXAzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICBwLT5zdGF0ZSA9IHBhcnNlX3N0cmVhbV9kZXAzOworICAgIHJldHVybiAxOworICB9CisKKyAgcmV0dXJuIHBhcnNlX3N0cmVhbV93ZWlnaHQocCwgY3VyICsgMSwgZW5kKTsKK30KKworc3RhdGljIGludCBwYXJzZV9zdHJlYW1fZGVwMihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgcC0+c3RhdGUgPSBwYXJzZV9zdHJlYW1fZGVwMjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHJldHVybiBwYXJzZV9zdHJlYW1fZGVwMyhwLCBjdXIgKyAxLCBlbmQpOworfQorCitzdGF0aWMgaW50IHBhcnNlX3N0cmVhbV9kZXAxKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICBwLT5zdGF0ZSA9IHBhcnNlX3N0cmVhbV9kZXAxOworICAgIHJldHVybiAxOworICB9CisKKyAgcmV0dXJuIHBhcnNlX3N0cmVhbV9kZXAyKHAsIGN1ciArIDEsIGVuZCk7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2Vfc3RyZWFtX2RlcDAoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBpZiAoY3VyID09IGVuZCkgeworICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX2RlcDA7CisgICAgcmV0dXJuIDE7CisgIH0KKworICByZXR1cm4gcGFyc2Vfc3RyZWFtX2RlcDEocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogZW1pdCBhbiBpbmRleGVkIGZpZWxkOyBmb3Igbm93IGp1c3QgbG9ncyBpdCB0byBjb25zb2xlOyBqdW1wcyB0bworICAgYmVnaW4gdGhlIG5leHQgZmllbGQgb24gY29tcGxldGlvbiAqLworc3RhdGljIGludCBmaW5pc2hfaW5kZXhlZF9maWVsZChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGdycGNfbWRlbGVtICptZCA9IGdycGNfY2h0dHAyX2hwdGJsX2xvb2t1cCgmcC0+dGFibGUsIHAtPmluZGV4KTsKKyAgaWYgKG1kID09IE5VTEwpIHsKKyAgICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIkludmFsaWQgSFBBQ0sgaW5kZXggcmVjZWl2ZWQ6ICVkIiwgcC0+aW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfQorICBHUlBDX01ERUxFTV9SRUYobWQpOworICByZXR1cm4gb25faGRyKHAsIG1kLCAwKSAmJiBwYXJzZV9iZWdpbihwLCBjdXIsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGFuIGluZGV4ZWQgZmllbGQgd2l0aCBpbmRleCA8IDEyNyAqLworc3RhdGljIGludCBwYXJzZV9pbmRleGVkX2ZpZWxkKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+aW5kZXggPSAoKmN1cikgJiAweDdmOworICByZXR1cm4gZmluaXNoX2luZGV4ZWRfZmllbGQocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogcGFyc2UgYW4gaW5kZXhlZCBmaWVsZCB3aXRoIGluZGV4ID49IDEyNyAqLworc3RhdGljIGludCBwYXJzZV9pbmRleGVkX2ZpZWxkX3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0geworICAgICAgZmluaXNoX2luZGV4ZWRfZmllbGR9OworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICBwLT5pbmRleCA9IDB4N2Y7CisgIHAtPnBhcnNpbmcudmFsdWUgPSAmcC0+aW5kZXg7CisgIHJldHVybiBwYXJzZV92YWx1ZTAocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogZmluaXNoIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aCBpbmNyZW1lbnRhbCBpbmRleGluZzoganVzdCBsb2csIGFuZCBqdW1wIHRvICcKKyAgIGJlZ2luICovCitzdGF0aWMgaW50IGZpbmlzaF9saXRoZHJfaW5jaWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgZ3JwY19tZGVsZW0gKm1kID0gZ3JwY19jaHR0cDJfaHB0YmxfbG9va3VwKCZwLT50YWJsZSwgcC0+aW5kZXgpOworICBHUFJfQVNTRVJUKG1kICE9IE5VTEwpOyAvKiBoYW5kbGVkIGluIHN0cmluZyBwYXJzaW5nICovCisgIHJldHVybiBvbl9oZHIocCwgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKEdSUENfTURTVFJfUkVGKG1kLT5rZXkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX3N0cmluZyhwLCAmcC0+dmFsdWUpKSwKKyAgICAgICAgICAgICAgICAxKSAmJgorICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOworfQorCisvKiBmaW5pc2ggYSBsaXRlcmFsIGhlYWRlciB3aXRoIGluY3JlbWVudGFsIGluZGV4aW5nIHdpdGggbm8gaW5kZXggKi8KK3N0YXRpYyBpbnQgZmluaXNoX2xpdGhkcl9pbmNpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcmV0dXJuIG9uX2hkcihwLCBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3ModGFrZV9zdHJpbmcocCwgJnAtPmtleSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfc3RyaW5nKHAsICZwLT52YWx1ZSkpLAorICAgICAgICAgICAgICAgIDEpICYmCisgICAgICAgICBwYXJzZV9iZWdpbihwLCBjdXIsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPCA2MyAqLworc3RhdGljIGludCBwYXJzZV9saXRoZHJfaW5jaWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7CisgICAgICBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9pbmRleGVkX2tleSwgZmluaXNoX2xpdGhkcl9pbmNpZHh9OworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICBwLT5pbmRleCA9ICgqY3VyKSAmIDB4M2Y7CisgIHJldHVybiBwYXJzZV9zdHJpbmdfcHJlZml4KHAsIGN1ciArIDEsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPj0gNjMgKi8KK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX2luY2lkeF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKKyAgICAgIHBhcnNlX3N0cmluZ19wcmVmaXgsIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5LAorICAgICAgZmluaXNoX2xpdGhkcl9pbmNpZHh9OworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICBwLT5pbmRleCA9IDB4M2Y7CisgIHAtPnBhcnNpbmcudmFsdWUgPSAmcC0+aW5kZXg7CisgIHJldHVybiBwYXJzZV92YWx1ZTAocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogcGFyc2UgYSBsaXRlcmFsIGhlYWRlciB3aXRoIGluY3JlbWVudGFsIGluZGV4aW5nOyBpbmRleCA9IDAgKi8KK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX2luY2lkeF92KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKKyAgICAgIHBhcnNlX2tleV9zdHJpbmcsIHBhcnNlX3N0cmluZ19wcmVmaXgsCisgICAgICBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9saXRlcmFsX2tleSwgZmluaXNoX2xpdGhkcl9pbmNpZHhfdn07CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAwOworICBwLT5uZXh0X3N0YXRlID0gYW5kX3RoZW47CisgIHJldHVybiBwYXJzZV9zdHJpbmdfcHJlZml4KHAsIGN1ciArIDEsIGVuZCk7Cit9CisKKy8qIGZpbmlzaCBhIGxpdGVyYWwgaGVhZGVyIHdpdGhvdXQgaW5jcmVtZW50YWwgaW5kZXhpbmcgKi8KK3N0YXRpYyBpbnQgZmluaXNoX2xpdGhkcl9ub3RpZHgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBncnBjX21kZWxlbSAqbWQgPSBncnBjX2NodHRwMl9ocHRibF9sb29rdXAoJnAtPnRhYmxlLCBwLT5pbmRleCk7CisgIEdQUl9BU1NFUlQobWQgIT0gTlVMTCk7IC8qIGhhbmRsZWQgaW4gc3RyaW5nIHBhcnNpbmcgKi8KKyAgcmV0dXJuIG9uX2hkcihwLCBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3MoR1JQQ19NRFNUUl9SRUYobWQtPmtleSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfc3RyaW5nKHAsICZwLT52YWx1ZSkpLAorICAgICAgICAgICAgICAgIDApICYmCisgICAgICAgICBwYXJzZV9iZWdpbihwLCBjdXIsIGVuZCk7Cit9CisKKy8qIGZpbmlzaCBhIGxpdGVyYWwgaGVhZGVyIHdpdGhvdXQgaW5jcmVtZW50YWwgaW5kZXhpbmcgd2l0aCBpbmRleCA9IDAgKi8KK3N0YXRpYyBpbnQgZmluaXNoX2xpdGhkcl9ub3RpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcmV0dXJuIG9uX2hkcihwLCBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3ModGFrZV9zdHJpbmcocCwgJnAtPmtleSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfc3RyaW5nKHAsICZwLT52YWx1ZSkpLAorICAgICAgICAgICAgICAgIDApICYmCisgICAgICAgICBwYXJzZV9iZWdpbihwLCBjdXIsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aG91dCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPCAxNSAqLworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbm90aWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7CisgICAgICBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9pbmRleGVkX2tleSwgZmluaXNoX2xpdGhkcl9ub3RpZHh9OworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICBwLT5pbmRleCA9ICgqY3VyKSAmIDB4ZjsKKyAgcmV0dXJuIHBhcnNlX3N0cmluZ19wcmVmaXgocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogcGFyc2UgYSBsaXRlcmFsIGhlYWRlciB3aXRob3V0IGluY3JlbWVudGFsIGluZGV4aW5nOyBpbmRleCA+PSAxNSAqLworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbm90aWR4X3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0geworICAgICAgcGFyc2Vfc3RyaW5nX3ByZWZpeCwgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfaW5kZXhlZF9rZXksCisgICAgICBmaW5pc2hfbGl0aGRyX25vdGlkeH07CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAwOworICBwLT5uZXh0X3N0YXRlID0gYW5kX3RoZW47CisgIHAtPmluZGV4ID0gMHhmOworICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPmluZGV4OworICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aG91dCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPT0gMCAqLworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbm90aWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0geworICAgICAgcGFyc2Vfa2V5X3N0cmluZywgcGFyc2Vfc3RyaW5nX3ByZWZpeCwKKyAgICAgIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2xpdGVyYWxfa2V5LCBmaW5pc2hfbGl0aGRyX25vdGlkeF92fTsKKyAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7CisgIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKKyAgcmV0dXJuIHBhcnNlX3N0cmluZ19wcmVmaXgocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogZmluaXNoIGEgbGl0ZXJhbCBoZWFkZXIgdGhhdCBpcyBuZXZlciBpbmRleGVkICovCitzdGF0aWMgaW50IGZpbmlzaF9saXRoZHJfbnZyaWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgZ3JwY19tZGVsZW0gKm1kID0gZ3JwY19jaHR0cDJfaHB0YmxfbG9va3VwKCZwLT50YWJsZSwgcC0+aW5kZXgpOworICBHUFJfQVNTRVJUKG1kICE9IE5VTEwpOyAvKiBoYW5kbGVkIGluIHN0cmluZyBwYXJzaW5nICovCisgIHJldHVybiBvbl9oZHIocCwgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKEdSUENfTURTVFJfUkVGKG1kLT5rZXkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX3N0cmluZyhwLCAmcC0+dmFsdWUpKSwKKyAgICAgICAgICAgICAgICAwKSAmJgorICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOworfQorCisvKiBmaW5pc2ggYSBsaXRlcmFsIGhlYWRlciB0aGF0IGlzIG5ldmVyIGluZGV4ZWQgd2l0aCBhbiBleHRyYSB2YWx1ZSAqLworc3RhdGljIGludCBmaW5pc2hfbGl0aGRyX252cmlkeF92KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICByZXR1cm4gb25faGRyKHAsIGdycGNfbWRlbGVtX2Zyb21fbWV0YWRhdGFfc3RyaW5ncyh0YWtlX3N0cmluZyhwLCAmcC0+a2V5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9zdHJpbmcocCwgJnAtPnZhbHVlKSksCisgICAgICAgICAgICAgICAgMCkgJiYKKyAgICAgICAgIHBhcnNlX2JlZ2luKHAsIGN1ciwgZW5kKTsKK30KKworLyogcGFyc2UgYSBsaXRlcmFsIGhlYWRlciB0aGF0IGlzIG5ldmVyIGluZGV4ZWQ7IGluZGV4IDwgMTUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX252cmlkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0geworICAgICAgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfaW5kZXhlZF9rZXksIGZpbmlzaF9saXRoZHJfbnZyaWR4fTsKKyAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7CisgIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKKyAgcC0+aW5kZXggPSAoKmN1cikgJiAweGY7CisgIHJldHVybiBwYXJzZV9zdHJpbmdfcHJlZml4KHAsIGN1ciArIDEsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgdGhhdCBpcyBuZXZlciBpbmRleGVkOyBpbmRleCA+PSAxNSAqLworc3RhdGljIGludCBwYXJzZV9saXRoZHJfbnZyaWR4X3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0geworICAgICAgcGFyc2Vfc3RyaW5nX3ByZWZpeCwgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfaW5kZXhlZF9rZXksCisgICAgICBmaW5pc2hfbGl0aGRyX252cmlkeH07CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAwOworICBwLT5uZXh0X3N0YXRlID0gYW5kX3RoZW47CisgIHAtPmluZGV4ID0gMHhmOworICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPmluZGV4OworICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgdGhhdCBpcyBuZXZlciBpbmRleGVkOyBpbmRleCA9PSAwICovCitzdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9udnJpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7CisgICAgICBwYXJzZV9rZXlfc3RyaW5nLCBwYXJzZV9zdHJpbmdfcHJlZml4LAorICAgICAgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfbGl0ZXJhbF9rZXksIGZpbmlzaF9saXRoZHJfbnZyaWR4X3Z9OworICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICByZXR1cm4gcGFyc2Vfc3RyaW5nX3ByZWZpeChwLCBjdXIgKyAxLCBlbmQpOworfQorCisvKiBmaW5pc2ggcGFyc2luZyBhIG1heCB0YWJsZSBzaXplIGNoYW5nZSAqLworc3RhdGljIGludCBmaW5pc2hfbWF4X3RibF9zaXplKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7CisgICAgZ3ByX2xvZyhHUFJfSU5GTywgIk1BWCBUQUJMRSBTSVpFOiAlZCIsIHAtPmluZGV4KTsKKyAgfQorICByZXR1cm4gZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X2N1cnJlbnRfdGFibGVfc2l6ZSgmcC0+dGFibGUsIHAtPmluZGV4KSAmJgorICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOworfQorCisvKiBwYXJzZSBhIG1heCB0YWJsZSBzaXplIGNoYW5nZSwgbWF4IHNpemUgPCAxNSAqLworc3RhdGljIGludCBwYXJzZV9tYXhfdGJsX3NpemUoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgaWYgKHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPT0gMCkgeworICAgIHJldHVybiAwOworICB9CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQtLTsKKyAgcC0+aW5kZXggPSAoKmN1cikgJiAweDFmOworICByZXR1cm4gZmluaXNoX21heF90Ymxfc2l6ZShwLCBjdXIgKyAxLCBlbmQpOworfQorCisvKiBwYXJzZSBhIG1heCB0YWJsZSBzaXplIGNoYW5nZSwgbWF4IHNpemUgPj0gMTUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfbWF4X3RibF9zaXplX3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7CisgICAgICBmaW5pc2hfbWF4X3RibF9zaXplfTsKKyAgaWYgKHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPT0gMCkgeworICAgIHJldHVybiAwOworICB9CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQtLTsKKyAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOworICBwLT5pbmRleCA9IDB4MWY7CisgIHAtPnBhcnNpbmcudmFsdWUgPSAmcC0+aW5kZXg7CisgIHJldHVybiBwYXJzZV92YWx1ZTAocCwgY3VyICsgMSwgZW5kKTsKK30KKworLyogYSBwYXJzZSBlcnJvcjogamFtIHRoZSBwYXJzZSBzdGF0ZSBpbnRvIHBhcnNlX2Vycm9yLCBhbmQgcmV0dXJuIGVycm9yICovCitzdGF0aWMgaW50IHBhcnNlX2Vycm9yKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcC0+c3RhdGUgPSBwYXJzZV9lcnJvcjsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfaWxsZWdhbF9vcChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgR1BSX0FTU0VSVChjdXIgIT0gZW5kKTsKKyAgaWYgKGdycGNfaHR0cF90cmFjZSkgeworICAgIGdwcl9sb2coR1BSX0RFQlVHLCAiSWxsZWdhbCBocGFjayBvcCBjb2RlICVkIiwgKmN1cik7CisgIH0KKyAgcmV0dXJuIHBhcnNlX2Vycm9yKHAsIGN1ciwgZW5kKTsKK30KKworLyogcGFyc2UgdGhlIDFzdCBieXRlIG9mIGEgdmFyaW50IGludG8gcC0+cGFyc2luZy52YWx1ZQorICAgbm8gb3ZlcmZsb3cgaXMgcG9zc2libGUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUwKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgcC0+c3RhdGUgPSBwYXJzZV92YWx1ZTA7CisgICAgcmV0dXJuIDE7CisgIH0KKworICAqcC0+cGFyc2luZy52YWx1ZSArPSAoKmN1cikgJiAweDdmOworCisgIGlmICgoKmN1cikgJiAweDgwKSB7CisgICAgcmV0dXJuIHBhcnNlX3ZhbHVlMShwLCBjdXIgKyAxLCBlbmQpOworICB9IGVsc2UgeworICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7CisgIH0KK30KKworLyogcGFyc2UgdGhlIDJuZCBieXRlIG9mIGEgdmFyaW50IGludG8gcC0+cGFyc2luZy52YWx1ZQorICAgbm8gb3ZlcmZsb3cgaXMgcG9zc2libGUgKi8KK3N0YXRpYyBpbnQgcGFyc2VfdmFsdWUxKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgcC0+c3RhdGUgPSBwYXJzZV92YWx1ZTE7CisgICAgcmV0dXJuIDE7CisgIH0KKworICAqcC0+cGFyc2luZy52YWx1ZSArPSAoKCh1aW50MzJfdCkqY3VyKSAmIDB4N2YpIDw8IDc7CisKKyAgaWYgKCgqY3VyKSAmIDB4ODApIHsKKyAgICByZXR1cm4gcGFyc2VfdmFsdWUyKHAsIGN1ciArIDEsIGVuZCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKKyAgfQorfQorCisvKiBwYXJzZSB0aGUgM3JkIGJ5dGUgb2YgYSB2YXJpbnQgaW50byBwLT5wYXJzaW5nLnZhbHVlCisgICBubyBvdmVyZmxvdyBpcyBwb3NzaWJsZSAqLworc3RhdGljIGludCBwYXJzZV92YWx1ZTIoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICBwLT5zdGF0ZSA9IHBhcnNlX3ZhbHVlMjsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgICpwLT5wYXJzaW5nLnZhbHVlICs9ICgoKHVpbnQzMl90KSpjdXIpICYgMHg3ZikgPDwgMTQ7CisKKyAgaWYgKCgqY3VyKSAmIDB4ODApIHsKKyAgICByZXR1cm4gcGFyc2VfdmFsdWUzKHAsIGN1ciArIDEsIGVuZCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKKyAgfQorfQorCisvKiBwYXJzZSB0aGUgNHRoIGJ5dGUgb2YgYSB2YXJpbnQgaW50byBwLT5wYXJzaW5nLnZhbHVlCisgICBubyBvdmVyZmxvdyBpcyBwb3NzaWJsZSAqLworc3RhdGljIGludCBwYXJzZV92YWx1ZTMoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICBwLT5zdGF0ZSA9IHBhcnNlX3ZhbHVlMzsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgICpwLT5wYXJzaW5nLnZhbHVlICs9ICgoKHVpbnQzMl90KSpjdXIpICYgMHg3ZikgPDwgMjE7CisKKyAgaWYgKCgqY3VyKSAmIDB4ODApIHsKKyAgICByZXR1cm4gcGFyc2VfdmFsdWU0KHAsIGN1ciArIDEsIGVuZCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKKyAgfQorfQorCisvKiBwYXJzZSB0aGUgNXRoIGJ5dGUgb2YgYSB2YXJpbnQgaW50byBwLT5wYXJzaW5nLnZhbHVlCisgICBkZXBlbmRpbmcgb24gdGhlIGJ5dGUsIHdlIG1heSBvdmVyZmxvdywgYW5kIGNhcmUgbXVzdCBiZSB0YWtlbiAqLworc3RhdGljIGludCBwYXJzZV92YWx1ZTQoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgdWludDhfdCBjOworICB1aW50MzJfdCBjdXJfdmFsdWU7CisgIHVpbnQzMl90IGFkZF92YWx1ZTsKKworICBpZiAoY3VyID09IGVuZCkgeworICAgIHAtPnN0YXRlID0gcGFyc2VfdmFsdWU0OworICAgIHJldHVybiAxOworICB9CisKKyAgYyA9ICgqY3VyKSAmIDB4N2Y7CisgIGlmIChjID4gMHhmKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGN1cl92YWx1ZSA9ICpwLT5wYXJzaW5nLnZhbHVlOworICBhZGRfdmFsdWUgPSAoKHVpbnQzMl90KWMpIDw8IDI4OworICBpZiAoYWRkX3ZhbHVlID4gMHhmZmZmZmZmZnUgLSBjdXJfdmFsdWUpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgKnAtPnBhcnNpbmcudmFsdWUgPSBjdXJfdmFsdWUgKyBhZGRfdmFsdWU7CisKKyAgaWYgKCgqY3VyKSAmIDB4ODApIHsKKyAgICByZXR1cm4gcGFyc2VfdmFsdWU1dXAocCwgY3VyICsgMSwgZW5kKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gcGFyc2VfbmV4dChwLCBjdXIgKyAxLCBlbmQpOworICB9CisKK2Vycm9yOgorICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsCisgICAgICAgICAgICAiaW50ZWdlciBvdmVyZmxvdyBpbiBocGFjayBpbnRlZ2VyIGRlY29kaW5nOiBoYXZlIDB4JTA4eCwgIgorICAgICAgICAgICAgImdvdCBieXRlIDB4JTAyeCBvbiBieXRlIDUiLAorICAgICAgICAgICAgKnAtPnBhcnNpbmcudmFsdWUsICpjdXIpOworICB9CisgIHJldHVybiBwYXJzZV9lcnJvcihwLCBjdXIsIGVuZCk7Cit9CisKKy8qIHBhcnNlIGFueSB0cmFpbGluZyBieXRlcyBpbiBhIHZhcmludDogaXQncyBwb3NzaWJsZSB0byBhcHBlbmQgYW4gYXJiaXRyYXJ5CisgICBudW1iZXIgb2YgMHg4MCdzIGFuZCBub3QgYWZmZWN0IHRoZSB2YWx1ZSAtIGEgemVybyB3aWxsIHRlcm1pbmF0ZSAtIGFuZAorICAgYW55dGhpbmcgZWxzZSB3aWxsIG92ZXJmbG93ICovCitzdGF0aWMgaW50IHBhcnNlX3ZhbHVlNXVwKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgd2hpbGUgKGN1ciAhPSBlbmQgJiYgKmN1ciA9PSAweDgwKSB7CisgICAgKytjdXI7CisgIH0KKworICBpZiAoY3VyID09IGVuZCkgeworICAgIHAtPnN0YXRlID0gcGFyc2VfdmFsdWU1dXA7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBpZiAoKmN1ciA9PSAwKSB7CisgICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKKyAgfQorCisgIGlmIChncnBjX2h0dHBfdHJhY2UpIHsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwKKyAgICAgICAgICAgICJpbnRlZ2VyIG92ZXJmbG93IGluIGhwYWNrIGludGVnZXIgZGVjb2Rpbmc6IGhhdmUgMHglMDh4LCAiCisgICAgICAgICAgICAiZ290IGJ5dGUgMHglMDJ4IHNvbWV0aW1lIGFmdGVyIGJ5dGUgNSIsCisgICAgICAgICAgICAqcC0+cGFyc2luZy52YWx1ZSwgKmN1cik7CisgIH0KKyAgcmV0dXJuIHBhcnNlX2Vycm9yKHAsIGN1ciwgZW5kKTsKK30KKworLyogcGFyc2UgYSBzdHJpbmcgcHJlZml4ICovCitzdGF0aWMgaW50IHBhcnNlX3N0cmluZ19wcmVmaXgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgcC0+c3RhdGUgPSBwYXJzZV9zdHJpbmdfcHJlZml4OworICAgIHJldHVybiAxOworICB9CisKKyAgcC0+c3RybGVuID0gKCpjdXIpICYgMHg3ZjsKKyAgcC0+aHVmZiA9ICgqY3VyKSA+PiA3OworICBpZiAocC0+c3RybGVuID09IDB4N2YpIHsKKyAgICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPnN0cmxlbjsKKyAgICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKKyAgfQorfQorCisvKiBhcHBlbmQgc29tZSBieXRlcyB0byBhIHN0cmluZyAqLworc3RhdGljIHZvaWQgYXBwZW5kX2J5dGVzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuZ3RoKSB7CisgIGlmIChsZW5ndGggKyBzdHItPmxlbmd0aCA+IHN0ci0+Y2FwYWNpdHkpIHsKKyAgICBHUFJfQVNTRVJUKHN0ci0+bGVuZ3RoICsgbGVuZ3RoIDw9IFVJTlQzMl9NQVgpOworICAgIHN0ci0+Y2FwYWNpdHkgPSAodWludDMyX3QpKHN0ci0+bGVuZ3RoICsgbGVuZ3RoKTsKKyAgICBzdHItPnN0ciA9IGdwcl9yZWFsbG9jKHN0ci0+c3RyLCBzdHItPmNhcGFjaXR5KTsKKyAgfQorICBtZW1jcHkoc3RyLT5zdHIgKyBzdHItPmxlbmd0aCwgZGF0YSwgbGVuZ3RoKTsKKyAgR1BSX0FTU0VSVChsZW5ndGggPD0gVUlOVDMyX01BWCAtIHN0ci0+bGVuZ3RoKTsKKyAgc3RyLT5sZW5ndGggKz0gKHVpbnQzMl90KWxlbmd0aDsKK30KKworc3RhdGljIGludCBhcHBlbmRfc3RyaW5nKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nICpzdHIgPSBwLT5wYXJzaW5nLnN0cjsKKyAgdWludDMyX3QgYml0czsKKyAgdWludDhfdCBkZWNvZGVkWzNdOworICBzd2l0Y2ggKChiaW5hcnlfc3RhdGUpcC0+YmluYXJ5KSB7CisgICAgY2FzZSBOT1RfQklOQVJZOgorICAgICAgYXBwZW5kX2J5dGVzKHN0ciwgY3VyLCAoc2l6ZV90KShlbmQgLSBjdXIpKTsKKyAgICAgIHJldHVybiAxOworICAgIGI2NF9ieXRlMDoKKyAgICBjYXNlIEI2NF9CWVRFMDoKKyAgICAgIGlmIChjdXIgPT0gZW5kKSB7CisgICAgICAgIHAtPmJpbmFyeSA9IEI2NF9CWVRFMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgICBiaXRzID0gaW52ZXJzZV9iYXNlNjRbKmN1cl07CisgICAgICArK2N1cjsKKyAgICAgIGlmIChiaXRzID09IDI1NSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICBlbHNlIGlmIChiaXRzID09IDY0KQorICAgICAgICBnb3RvIGI2NF9ieXRlMDsKKyAgICAgIHAtPmJhc2U2NF9idWZmZXIgPSBiaXRzIDw8IDE4OworICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgYjY0X2J5dGUxOgorICAgIGNhc2UgQjY0X0JZVEUxOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+YmluYXJ5ID0gQjY0X0JZVEUxOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIGJpdHMgPSBpbnZlcnNlX2Jhc2U2NFsqY3VyXTsKKyAgICAgICsrY3VyOworICAgICAgaWYgKGJpdHMgPT0gMjU1KQorICAgICAgICByZXR1cm4gMDsKKyAgICAgIGVsc2UgaWYgKGJpdHMgPT0gNjQpCisgICAgICAgIGdvdG8gYjY0X2J5dGUxOworICAgICAgcC0+YmFzZTY0X2J1ZmZlciB8PSBiaXRzIDw8IDEyOworICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgYjY0X2J5dGUyOgorICAgIGNhc2UgQjY0X0JZVEUyOgorICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKKyAgICAgICAgcC0+YmluYXJ5ID0gQjY0X0JZVEUyOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIGJpdHMgPSBpbnZlcnNlX2Jhc2U2NFsqY3VyXTsKKyAgICAgICsrY3VyOworICAgICAgaWYgKGJpdHMgPT0gMjU1KQorICAgICAgICByZXR1cm4gMDsKKyAgICAgIGVsc2UgaWYgKGJpdHMgPT0gNjQpCisgICAgICAgIGdvdG8gYjY0X2J5dGUyOworICAgICAgcC0+YmFzZTY0X2J1ZmZlciB8PSBiaXRzIDw8IDY7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBiNjRfYnl0ZTM6CisgICAgY2FzZSBCNjRfQllURTM6CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICBwLT5iaW5hcnkgPSBCNjRfQllURTM7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgICAgYml0cyA9IGludmVyc2VfYmFzZTY0WypjdXJdOworICAgICAgKytjdXI7CisgICAgICBpZiAoYml0cyA9PSAyNTUpCisgICAgICAgIHJldHVybiAwOworICAgICAgZWxzZSBpZiAoYml0cyA9PSA2NCkKKyAgICAgICAgZ290byBiNjRfYnl0ZTM7CisgICAgICBwLT5iYXNlNjRfYnVmZmVyIHw9IGJpdHM7CisgICAgICBiaXRzID0gcC0+YmFzZTY0X2J1ZmZlcjsKKyAgICAgIGRlY29kZWRbMF0gPSAodWludDhfdCkoYml0cyA+PiAxNik7CisgICAgICBkZWNvZGVkWzFdID0gKHVpbnQ4X3QpKGJpdHMgPj4gOCk7CisgICAgICBkZWNvZGVkWzJdID0gKHVpbnQ4X3QpKGJpdHMpOworICAgICAgYXBwZW5kX2J5dGVzKHN0ciwgZGVjb2RlZCwgMyk7CisgICAgICBnb3RvIGI2NF9ieXRlMDsKKyAgfQorICBHUFJfVU5SRUFDSEFCTEVfQ09ERShyZXR1cm4gMSk7Cit9CisKKy8qIGFwcGVuZCBhIG51bGwgdGVybWluYXRvciB0byBhIHN0cmluZyAqLworc3RhdGljIGludCBmaW5pc2hfc3RyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCkgeworICB1aW50OF90IHRlcm1pbmF0b3IgPSAwOworICB1aW50OF90IGRlY29kZWRbMl07CisgIHVpbnQzMl90IGJpdHM7CisgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcgKnN0ciA9IHAtPnBhcnNpbmcuc3RyOworICBzd2l0Y2ggKChiaW5hcnlfc3RhdGUpcC0+YmluYXJ5KSB7CisgICAgY2FzZSBOT1RfQklOQVJZOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBCNjRfQllURTA6CisgICAgICBicmVhazsKKyAgICBjYXNlIEI2NF9CWVRFMToKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaWxsZWdhbCBiYXNlNjQgZW5jb2RpbmciKTsKKyAgICAgIHJldHVybiAwOyAvKiBpbGxlZ2FsIGVuY29kaW5nICovCisgICAgY2FzZSBCNjRfQllURTI6CisgICAgICBiaXRzID0gcC0+YmFzZTY0X2J1ZmZlcjsKKyAgICAgIGlmIChiaXRzICYgMHhmZmZmKSB7CisgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAidHJhaWxpbmcgYml0cyBpbiBiYXNlNjQgZW5jb2Rpbmc6IDB4JTA0eCIsCisgICAgICAgICAgICAgICAgYml0cyAmIDB4ZmZmZik7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgICAgZGVjb2RlZFswXSA9ICh1aW50OF90KShiaXRzID4+IDE2KTsKKyAgICAgIGFwcGVuZF9ieXRlcyhzdHIsIGRlY29kZWQsIDEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBCNjRfQllURTM6CisgICAgICBiaXRzID0gcC0+YmFzZTY0X2J1ZmZlcjsKKyAgICAgIGlmIChiaXRzICYgMHhmZikgeworICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgInRyYWlsaW5nIGJpdHMgaW4gYmFzZTY0IGVuY29kaW5nOiAweCUwMngiLAorICAgICAgICAgICAgICAgIGJpdHMgJiAweGZmKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBkZWNvZGVkWzBdID0gKHVpbnQ4X3QpKGJpdHMgPj4gMTYpOworICAgICAgZGVjb2RlZFsxXSA9ICh1aW50OF90KShiaXRzID4+IDgpOworICAgICAgYXBwZW5kX2J5dGVzKHN0ciwgZGVjb2RlZCwgMik7CisgICAgICBicmVhazsKKyAgfQorICBhcHBlbmRfYnl0ZXMoc3RyLCAmdGVybWluYXRvciwgMSk7CisgIHAtPnBhcnNpbmcuc3RyLT5sZW5ndGgtLTsgLyogZG9uJ3QgYWN0dWFsbHkgY291bnQgdGhlIG51bGwgdGVybWluYXRvciAqLworICByZXR1cm4gMTsKK30KKworLyogZGVjb2RlIGEgbmliYmxlIGZyb20gYSBodWZmbWFuIGVuY29kZWQgc3RyZWFtICovCitzdGF0aWMgaW50IGh1ZmZfbmliYmxlKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgdWludDhfdCBuaWJibGUpIHsKKyAgaW50MTZfdCBlbWl0ID0gZW1pdF9zdWJfdGJsWzE2ICogZW1pdF90YmxbcC0+aHVmZl9zdGF0ZV0gKyBuaWJibGVdOworICBpbnQxNl90IG5leHQgPSBuZXh0X3N1Yl90YmxbMTYgKiBuZXh0X3RibFtwLT5odWZmX3N0YXRlXSArIG5pYmJsZV07CisgIGlmIChlbWl0ICE9IC0xKSB7CisgICAgaWYgKGVtaXQgPj0gMCAmJiBlbWl0IDwgMjU2KSB7CisgICAgICB1aW50OF90IGMgPSAodWludDhfdCllbWl0OworICAgICAgaWYgKCFhcHBlbmRfc3RyaW5nKHAsICZjLCAoJmMpICsgMSkpIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICBhc3NlcnQoZW1pdCA9PSAyNTYpOworICAgIH0KKyAgfQorICBwLT5odWZmX3N0YXRlID0gbmV4dDsKKyAgcmV0dXJuIDE7Cit9CisKKy8qIGRlY29kZSBmdWxsIGJ5dGVzIGZyb20gYSBodWZmbWFuIGVuY29kZWQgc3RyZWFtICovCitzdGF0aWMgaW50IGFkZF9odWZmX2J5dGVzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgZm9yICg7IGN1ciAhPSBlbmQ7ICsrY3VyKSB7CisgICAgaWYgKCFodWZmX25pYmJsZShwLCAqY3VyID4+IDQpIHx8ICFodWZmX25pYmJsZShwLCAqY3VyICYgMHhmKSkgcmV0dXJuIDA7CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKKy8qIGRlY29kZSBzb21lIHN0cmluZyBieXRlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBkZWNvZGluZyBtb2RlCisgICAoaHVmZm1hbiBvciBub3QpICovCitzdGF0aWMgaW50IGFkZF9zdHJfYnl0ZXMoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIGlmIChwLT5odWZmKSB7CisgICAgcmV0dXJuIGFkZF9odWZmX2J5dGVzKHAsIGN1ciwgZW5kKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gYXBwZW5kX3N0cmluZyhwLCBjdXIsIGVuZCk7CisgIH0KK30KKworLyogcGFyc2UgYSBzdHJpbmcgLSB0cmllcyB0byBkbyBsYXJnZSBjaHVua3MgYXQgYSB0aW1lICovCitzdGF0aWMgaW50IHBhcnNlX3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICBzaXplX3QgcmVtYWluaW5nID0gcC0+c3RybGVuIC0gcC0+c3RyZ290OworICBzaXplX3QgZ2l2ZW4gPSAoc2l6ZV90KShlbmQgLSBjdXIpOworICBpZiAocmVtYWluaW5nIDw9IGdpdmVuKSB7CisgICAgcmV0dXJuIGFkZF9zdHJfYnl0ZXMocCwgY3VyLCBjdXIgKyByZW1haW5pbmcpICYmIGZpbmlzaF9zdHIocCkgJiYKKyAgICAgICAgICAgcGFyc2VfbmV4dChwLCBjdXIgKyByZW1haW5pbmcsIGVuZCk7CisgIH0gZWxzZSB7CisgICAgaWYgKCFhZGRfc3RyX2J5dGVzKHAsIGN1ciwgY3VyICsgZ2l2ZW4pKSByZXR1cm4gMDsKKyAgICBHUFJfQVNTRVJUKGdpdmVuIDw9IFVJTlQzMl9NQVggLSBwLT5zdHJnb3QpOworICAgIHAtPnN0cmdvdCArPSAodWludDMyX3QpZ2l2ZW47CisgICAgcC0+c3RhdGUgPSBwYXJzZV9zdHJpbmc7CisgICAgcmV0dXJuIDE7CisgIH0KK30KKworLyogYmVnaW4gcGFyc2luZyBhIHN0cmluZyAtIHBlcmZvcm1zIHNldHVwLCBjYWxscyBwYXJzZV9zdHJpbmcgKi8KK3N0YXRpYyBpbnQgYmVnaW5fcGFyc2Vfc3RyaW5nKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kLCB1aW50OF90IGJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcgKnN0cikgeworICBwLT5zdHJnb3QgPSAwOworICBzdHItPmxlbmd0aCA9IDA7CisgIHAtPnBhcnNpbmcuc3RyID0gc3RyOworICBwLT5odWZmX3N0YXRlID0gMDsKKyAgcC0+YmluYXJ5ID0gYmluYXJ5OworICByZXR1cm4gcGFyc2Vfc3RyaW5nKHAsIGN1ciwgZW5kKTsKK30KKworLyogcGFyc2UgdGhlIGtleSBzdHJpbmcgKi8KK3N0YXRpYyBpbnQgcGFyc2Vfa2V5X3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcmV0dXJuIGJlZ2luX3BhcnNlX3N0cmluZyhwLCBjdXIsIGVuZCwgTk9UX0JJTkFSWSwgJnAtPmtleSk7Cit9CisKKy8qIGNoZWNrIGlmIGEga2V5IHJlcHJlc2VudHMgYSBiaW5hcnkgaGVhZGVyIG9yIG5vdCAqLwordHlwZWRlZiBlbnVtIHsgQklOQVJZX0hFQURFUiwgUExBSU5URVhUX0hFQURFUiwgRVJST1JfSEVBREVSIH0gaXNfYmluYXJ5X2hlYWRlcjsKKworc3RhdGljIGlzX2JpbmFyeV9oZWFkZXIgaXNfYmluYXJ5X2xpdGVyYWxfaGVhZGVyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCkgeworICByZXR1cm4gZ3JwY19pc19iaW5hcnlfaGVhZGVyKHAtPmtleS5zdHIsIHAtPmtleS5sZW5ndGgpID8gQklOQVJZX0hFQURFUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUExBSU5URVhUX0hFQURFUjsKK30KKworc3RhdGljIGlzX2JpbmFyeV9oZWFkZXIgaXNfYmluYXJ5X2luZGV4ZWRfaGVhZGVyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCkgeworICBncnBjX21kZWxlbSAqZWxlbSA9IGdycGNfY2h0dHAyX2hwdGJsX2xvb2t1cCgmcC0+dGFibGUsIHAtPmluZGV4KTsKKyAgaWYgKCFlbGVtKSB7CisgICAgaWYgKGdycGNfaHR0cF90cmFjZSkgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJJbnZhbGlkIEhQQUNLIGluZGV4IHJlY2VpdmVkOiAlZCIsIHAtPmluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIEVSUk9SX0hFQURFUjsKKyAgfQorICByZXR1cm4gZ3JwY19pc19iaW5hcnlfaGVhZGVyKAorICAgICAgICAgICAgIChjb25zdCBjaGFyICopR1BSX1NMSUNFX1NUQVJUX1BUUihlbGVtLT5rZXktPnNsaWNlKSwKKyAgICAgICAgICAgICBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpKQorICAgICAgICAgICAgID8gQklOQVJZX0hFQURFUgorICAgICAgICAgICAgIDogUExBSU5URVhUX0hFQURFUjsKK30KKworLyogcGFyc2UgdGhlIHZhbHVlIHN0cmluZyAqLworc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmcoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQsIGlzX2JpbmFyeV9oZWFkZXIgdHlwZSkgeworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEJJTkFSWV9IRUFERVI6CisgICAgICByZXR1cm4gYmVnaW5fcGFyc2Vfc3RyaW5nKHAsIGN1ciwgZW5kLCBCNjRfQllURTAsICZwLT52YWx1ZSk7CisgICAgY2FzZSBQTEFJTlRFWFRfSEVBREVSOgorICAgICAgcmV0dXJuIGJlZ2luX3BhcnNlX3N0cmluZyhwLCBjdXIsIGVuZCwgTk9UX0JJTkFSWSwgJnAtPnZhbHVlKTsKKyAgICBjYXNlIEVSUk9SX0hFQURFUjoKKyAgICAgIHJldHVybiAwOworICB9CisgIC8qIEFkZCBjb2RlIHRvIHByZXZlbnQgcmV0dXJuIHdpdGhvdXQgdmFsdWUgZXJyb3IgKi8KKyAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuIDApOworfQorCitzdGF0aWMgaW50IHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKKyAgcmV0dXJuIHBhcnNlX3ZhbHVlX3N0cmluZyhwLCBjdXIsIGVuZCwgaXNfYmluYXJ5X2luZGV4ZWRfaGVhZGVyKHApKTsKK30KKworc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9saXRlcmFsX2tleShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7CisgIHJldHVybiBwYXJzZV92YWx1ZV9zdHJpbmcocCwgY3VyLCBlbmQsIGlzX2JpbmFyeV9saXRlcmFsX2hlYWRlcihwKSk7Cit9CisKKy8qIFBVQkxJQyBJTlRFUkZBQ0UgKi8KKworc3RhdGljIHZvaWQgb25faGVhZGVyX25vdF9zZXQodm9pZCAqdXNlcl9kYXRhLCBncnBjX21kZWxlbSAqbWQpIHsKKyAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuICk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2luaXQoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7CisgIHAtPm9uX2hlYWRlciA9IG9uX2hlYWRlcl9ub3Rfc2V0OworICBwLT5vbl9oZWFkZXJfdXNlcl9kYXRhID0gTlVMTDsKKyAgcC0+c3RhdGUgPSBwYXJzZV9iZWdpbjsKKyAgcC0+a2V5LnN0ciA9IE5VTEw7CisgIHAtPmtleS5jYXBhY2l0eSA9IDA7CisgIHAtPmtleS5sZW5ndGggPSAwOworICBwLT52YWx1ZS5zdHIgPSBOVUxMOworICBwLT52YWx1ZS5jYXBhY2l0eSA9IDA7CisgIHAtPnZhbHVlLmxlbmd0aCA9IDA7CisgIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAyOworICBncnBjX2NodHRwMl9ocHRibF9pbml0KCZwLT50YWJsZSk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3NldF9oYXNfcHJpb3JpdHkoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7CisgIHAtPmFmdGVyX3ByaW9yaXRpemF0aW9uID0gcC0+c3RhdGU7CisgIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX2RlcDA7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2Rlc3Ryb3koZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7CisgIGdycGNfY2h0dHAyX2hwdGJsX2Rlc3Ryb3koJnAtPnRhYmxlKTsKKyAgZ3ByX2ZyZWUocC0+a2V5LnN0cik7CisgIGdwcl9mcmVlKHAtPnZhbHVlLnN0cik7Cit9CisKK2ludCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiZWcsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgeworICAvKiBUT0RPKGN0aWxsZXIpOiBsaW1pdCB0aGUgZGlzdGFuY2Ugb2YgZW5kIGZyb20gYmVnLCBhbmQgcGVyZm9ybSBtdWx0aXBsZQorICAgICBzdGVwcyBpbiB0aGUgZXZlbnQgb2YgYSBsYXJnZSBjaHVuayBvZiBkYXRhIHRvIGxpbWl0CisgICAgIHN0YWNrIHNwYWNlIHVzYWdlIHdoZW4gbm8gdGFpbCBjYWxsIG9wdGltaXphdGlvbiBpcworICAgICBhdmFpbGFibGUgKi8KKyAgcmV0dXJuIHAtPnN0YXRlKHAsIGJlZywgZW5kKTsKK30KKworZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfaGVhZGVyX3BhcnNlcl9wYXJzZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqaHBhY2tfcGFyc2VyLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwYXJzZXIgPSBocGFja19wYXJzZXI7CisgIEdQUl9USU1FUl9CRUdJTigiZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlIiwgMCk7CisgIGlmICghZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlKHBhcnNlciwgR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKSkpIHsKKyAgICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UiLCAwKTsKKyAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKKyAgfQorICBpZiAoaXNfbGFzdCkgeworICAgIGlmIChwYXJzZXItPmlzX2JvdW5kYXJ5ICYmIHBhcnNlci0+c3RhdGUgIT0gcGFyc2VfYmVnaW4pIHsKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLAorICAgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBmcmFtZSBub3QgYWxpZ25lZCB3aXRoIGEgaHBhY2sgcmVjb3JkIGJvdW5kYXJ5Iik7CisgICAgICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UiLCAwKTsKKyAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICAgIH0KKyAgICAvKiBuZWVkIHRvIGNoZWNrIGZvciBudWxsIHN0cmVhbTogdGhpcyBjYW4gb2NjdXIgaWYgd2UgcmVjZWl2ZSBhbiBpbnZhbGlkCisgICAgICAgc3RyZWFtIGlkIG9uIGEgaGVhZGVyICovCisgICAgaWYgKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwpIHsKKyAgICAgIGlmIChwYXJzZXItPmlzX2JvdW5kYXJ5KSB7CisgICAgICAgIHN0cmVhbV9wYXJzaW5nCisgICAgICAgICAgICAtPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVtzdHJlYW1fcGFyc2luZy0+aGVhZGVyX2ZyYW1lc19yZWNlaXZlZF0gPSAxOworICAgICAgICBzdHJlYW1fcGFyc2luZy0+aGVhZGVyX2ZyYW1lc19yZWNlaXZlZCsrOworICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKKyAgICAgIH0KKyAgICAgIGlmIChwYXJzZXItPmlzX2VvZikgeworICAgICAgICBzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfY2xvc2UgPSAxOworICAgICAgfQorICAgIH0KKyAgICBwYXJzZXItPm9uX2hlYWRlciA9IG9uX2hlYWRlcl9ub3Rfc2V0OworICAgIHBhcnNlci0+b25faGVhZGVyX3VzZXJfZGF0YSA9IE5VTEw7CisgICAgcGFyc2VyLT5pc19ib3VuZGFyeSA9IDB4ZGU7CisgICAgcGFyc2VyLT5pc19lb2YgPSAweGRlOworICAgIHBhcnNlci0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDI7CisgIH0KKyAgR1BSX1RJTUVSX0VORCgiZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlIiwgMCk7CisgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWFkZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSFBBQ0tfUEFSU0VSX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IUEFDS19QQVJTRVJfSAorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCIKKwordHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcjsKKwordHlwZWRlZiBpbnQgKCpncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUpKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjaGFyICpzdHI7CisgIHVpbnQzMl90IGxlbmd0aDsKKyAgdWludDMyX3QgY2FwYWNpdHk7Cit9IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmc7CisKK3N0cnVjdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXIgeworICAvKiB1c2VyIHNwZWNpZmllZCBjYWxsYmFjayBmb3IgZWFjaCBoZWFkZXIgb3V0cHV0ICovCisgIHZvaWQgKCpvbl9oZWFkZXIpKHZvaWQgKnVzZXJfZGF0YSwgZ3JwY19tZGVsZW0gKm1kKTsKKyAgdm9pZCAqb25faGVhZGVyX3VzZXJfZGF0YTsKKworICAvKiBjdXJyZW50IHBhcnNlIHN0YXRlIC0gb3IgYSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIHN0YXRlOworICAvKiBmdXR1cmUgc3RhdGVzIGRlcGVuZGVudCBvbiB0aGUgb3BlbmluZyBvcCBjb2RlICovCisgIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSAqbmV4dF9zdGF0ZTsKKyAgLyogd2hhdCB0byBkbyBhZnRlciBza2lwcGluZyBwcmlvcml0aXphdGlvbiBkYXRhICovCisgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhZnRlcl9wcmlvcml0aXphdGlvbjsKKyAgLyogdGhlIHZhbHVlIHdlJ3JlIGN1cnJlbnRseSBwYXJzaW5nICovCisgIHVuaW9uIHsKKyAgICB1aW50MzJfdCAqdmFsdWU7CisgICAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0cmluZyAqc3RyOworICB9IHBhcnNpbmc7CisgIC8qIHN0cmluZyBwYXJhbWV0ZXJzIGZvciBlYWNoIGNodW5rICovCisgIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcga2V5OworICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nIHZhbHVlOworICAvKiBwYXJzZWQgaW5kZXggKi8KKyAgdWludDMyX3QgaW5kZXg7CisgIC8qIGxlbmd0aCBvZiBzb3VyY2UgYnl0ZXMgZm9yIHRoZSBjdXJyZW50bHkgcGFyc2luZyBzdHJpbmcgKi8KKyAgdWludDMyX3Qgc3RybGVuOworICAvKiBudW1iZXIgb2Ygc291cmNlIGJ5dGVzIHJlYWQgZm9yIHRoZSBjdXJyZW50bHkgcGFyc2luZyBzdHJpbmcgKi8KKyAgdWludDMyX3Qgc3RyZ290OworICAvKiBodWZmbWFuIGRlY29kaW5nIHN0YXRlICovCisgIGludDE2X3QgaHVmZl9zdGF0ZTsKKyAgLyogaXMgdGhlIHN0cmluZyBiZWluZyBkZWNvZGVkIGJpbmFyeT8gKi8KKyAgdWludDhfdCBiaW5hcnk7CisgIC8qIGlzIHRoZSBjdXJyZW50IHN0cmluZyBodWZmbWFuIGVuY29kZWQ/ICovCisgIHVpbnQ4X3QgaHVmZjsKKyAgLyogaXMgYSBkeW5hbWljIHRhYmxlIHVwZGF0ZSBhbGxvd2VkPyAqLworICB1aW50OF90IGR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQ7CisgIC8qIHNldCBieSBoaWdoZXIgbGF5ZXJzLCB1c2VkIGJ5IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2UgdG8gc2lnbmFsCisgICAgIGl0IHNob3VsZCBhcHBlbmQgYSBtZXRhZGF0YSBib3VuZGFyeSBhdCB0aGUgZW5kIG9mIGZyYW1lICovCisgIHVpbnQ4X3QgaXNfYm91bmRhcnk7CisgIHVpbnQ4X3QgaXNfZW9mOworICB1aW50MzJfdCBiYXNlNjRfYnVmZmVyOworCisgIC8qIGhwYWNrIHRhYmxlICovCisgIGdycGNfY2h0dHAyX2hwdGJsIHRhYmxlOworfTsKKwordm9pZCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfaW5pdChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApOwordm9pZCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfZGVzdHJveShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApOworCit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zZXRfaGFzX3ByaW9yaXR5KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCk7CisKKy8qIHJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yICovCitpbnQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmVnLCBjb25zdCB1aW50OF90ICplbmQpOworCisvKiB3cmFwcyBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UgdG8gcHJvdmlkZSBhIGZyYW1lIGxldmVsIHBhcnNlciBmb3IKKyAgIHRoZSB0cmFuc3BvcnQgKi8KK2dycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2UoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmhwYWNrX3BhcnNlciwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSFBBQ0tfUEFSU0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdjZDFiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5jCkBAIC0wLDAgKzEsMzY5IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmgiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L211cm11cl9oYXNoLmgiCisKK2V4dGVybiBpbnQgZ3JwY19odHRwX3RyYWNlOworCitzdGF0aWMgc3RydWN0IHsKKyAgY29uc3QgY2hhciAqa2V5OworICBjb25zdCBjaGFyICp2YWx1ZTsKK30gc3RhdGljX3RhYmxlW10gPSB7CisgICAgLyogMDogKi8KKyAgICB7TlVMTCwgTlVMTH0sCisgICAgLyogMTogKi8KKyAgICB7IjphdXRob3JpdHkiLCAiIn0sCisgICAgLyogMjogKi8KKyAgICB7IjptZXRob2QiLCAiR0VUIn0sCisgICAgLyogMzogKi8KKyAgICB7IjptZXRob2QiLCAiUE9TVCJ9LAorICAgIC8qIDQ6ICovCisgICAgeyI6cGF0aCIsICIvIn0sCisgICAgLyogNTogKi8KKyAgICB7IjpwYXRoIiwgIi9pbmRleC5odG1sIn0sCisgICAgLyogNjogKi8KKyAgICB7IjpzY2hlbWUiLCAiaHR0cCJ9LAorICAgIC8qIDc6ICovCisgICAgeyI6c2NoZW1lIiwgImh0dHBzIn0sCisgICAgLyogODogKi8KKyAgICB7IjpzdGF0dXMiLCAiMjAwIn0sCisgICAgLyogOTogKi8KKyAgICB7IjpzdGF0dXMiLCAiMjA0In0sCisgICAgLyogMTA6ICovCisgICAgeyI6c3RhdHVzIiwgIjIwNiJ9LAorICAgIC8qIDExOiAqLworICAgIHsiOnN0YXR1cyIsICIzMDQifSwKKyAgICAvKiAxMjogKi8KKyAgICB7IjpzdGF0dXMiLCAiNDAwIn0sCisgICAgLyogMTM6ICovCisgICAgeyI6c3RhdHVzIiwgIjQwNCJ9LAorICAgIC8qIDE0OiAqLworICAgIHsiOnN0YXR1cyIsICI1MDAifSwKKyAgICAvKiAxNTogKi8KKyAgICB7ImFjY2VwdC1jaGFyc2V0IiwgIiJ9LAorICAgIC8qIDE2OiAqLworICAgIHsiYWNjZXB0LWVuY29kaW5nIiwgImd6aXAsIGRlZmxhdGUifSwKKyAgICAvKiAxNzogKi8KKyAgICB7ImFjY2VwdC1sYW5ndWFnZSIsICIifSwKKyAgICAvKiAxODogKi8KKyAgICB7ImFjY2VwdC1yYW5nZXMiLCAiIn0sCisgICAgLyogMTk6ICovCisgICAgeyJhY2NlcHQiLCAiIn0sCisgICAgLyogMjA6ICovCisgICAgeyJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAiIn0sCisgICAgLyogMjE6ICovCisgICAgeyJhZ2UiLCAiIn0sCisgICAgLyogMjI6ICovCisgICAgeyJhbGxvdyIsICIifSwKKyAgICAvKiAyMzogKi8KKyAgICB7ImF1dGhvcml6YXRpb24iLCAiIn0sCisgICAgLyogMjQ6ICovCisgICAgeyJjYWNoZS1jb250cm9sIiwgIiJ9LAorICAgIC8qIDI1OiAqLworICAgIHsiY29udGVudC1kaXNwb3NpdGlvbiIsICIifSwKKyAgICAvKiAyNjogKi8KKyAgICB7ImNvbnRlbnQtZW5jb2RpbmciLCAiIn0sCisgICAgLyogMjc6ICovCisgICAgeyJjb250ZW50LWxhbmd1YWdlIiwgIiJ9LAorICAgIC8qIDI4OiAqLworICAgIHsiY29udGVudC1sZW5ndGgiLCAiIn0sCisgICAgLyogMjk6ICovCisgICAgeyJjb250ZW50LWxvY2F0aW9uIiwgIiJ9LAorICAgIC8qIDMwOiAqLworICAgIHsiY29udGVudC1yYW5nZSIsICIifSwKKyAgICAvKiAzMTogKi8KKyAgICB7ImNvbnRlbnQtdHlwZSIsICIifSwKKyAgICAvKiAzMjogKi8KKyAgICB7ImNvb2tpZSIsICIifSwKKyAgICAvKiAzMzogKi8KKyAgICB7ImRhdGUiLCAiIn0sCisgICAgLyogMzQ6ICovCisgICAgeyJldGFnIiwgIiJ9LAorICAgIC8qIDM1OiAqLworICAgIHsiZXhwZWN0IiwgIiJ9LAorICAgIC8qIDM2OiAqLworICAgIHsiZXhwaXJlcyIsICIifSwKKyAgICAvKiAzNzogKi8KKyAgICB7ImZyb20iLCAiIn0sCisgICAgLyogMzg6ICovCisgICAgeyJob3N0IiwgIiJ9LAorICAgIC8qIDM5OiAqLworICAgIHsiaWYtbWF0Y2giLCAiIn0sCisgICAgLyogNDA6ICovCisgICAgeyJpZi1tb2RpZmllZC1zaW5jZSIsICIifSwKKyAgICAvKiA0MTogKi8KKyAgICB7ImlmLW5vbmUtbWF0Y2giLCAiIn0sCisgICAgLyogNDI6ICovCisgICAgeyJpZi1yYW5nZSIsICIifSwKKyAgICAvKiA0MzogKi8KKyAgICB7ImlmLXVubW9kaWZpZWQtc2luY2UiLCAiIn0sCisgICAgLyogNDQ6ICovCisgICAgeyJsYXN0LW1vZGlmaWVkIiwgIiJ9LAorICAgIC8qIDQ1OiAqLworICAgIHsibGluayIsICIifSwKKyAgICAvKiA0NjogKi8KKyAgICB7ImxvY2F0aW9uIiwgIiJ9LAorICAgIC8qIDQ3OiAqLworICAgIHsibWF4LWZvcndhcmRzIiwgIiJ9LAorICAgIC8qIDQ4OiAqLworICAgIHsicHJveHktYXV0aGVudGljYXRlIiwgIiJ9LAorICAgIC8qIDQ5OiAqLworICAgIHsicHJveHktYXV0aG9yaXphdGlvbiIsICIifSwKKyAgICAvKiA1MDogKi8KKyAgICB7InJhbmdlIiwgIiJ9LAorICAgIC8qIDUxOiAqLworICAgIHsicmVmZXJlciIsICIifSwKKyAgICAvKiA1MjogKi8KKyAgICB7InJlZnJlc2giLCAiIn0sCisgICAgLyogNTM6ICovCisgICAgeyJyZXRyeS1hZnRlciIsICIifSwKKyAgICAvKiA1NDogKi8KKyAgICB7InNlcnZlciIsICIifSwKKyAgICAvKiA1NTogKi8KKyAgICB7InNldC1jb29raWUiLCAiIn0sCisgICAgLyogNTY6ICovCisgICAgeyJzdHJpY3QtdHJhbnNwb3J0LXNlY3VyaXR5IiwgIiJ9LAorICAgIC8qIDU3OiAqLworICAgIHsidHJhbnNmZXItZW5jb2RpbmciLCAiIn0sCisgICAgLyogNTg6ICovCisgICAgeyJ1c2VyLWFnZW50IiwgIiJ9LAorICAgIC8qIDU5OiAqLworICAgIHsidmFyeSIsICIifSwKKyAgICAvKiA2MDogKi8KKyAgICB7InZpYSIsICIifSwKKyAgICAvKiA2MTogKi8KKyAgICB7Ind3dy1hdXRoZW50aWNhdGUiLCAiIn0sCit9OworCitzdGF0aWMgdWludDMyX3QgZW50cmllc19mb3JfYnl0ZXModWludDMyX3QgYnl0ZXMpIHsKKyAgcmV0dXJuIChieXRlcyArIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEIC0gMSkgLworICAgICAgICAgR1JQQ19DSFRUUDJfSFBBQ0tfRU5UUllfT1ZFUkhFQUQ7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfaW5pdChncnBjX2NodHRwMl9ocHRibCAqdGJsKSB7CisgIHNpemVfdCBpOworCisgIG1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7CisgIHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyA9IHRibC0+bWF4X2J5dGVzID0KKyAgICAgIEdSUENfQ0hUVFAyX0lOSVRJQUxfSFBBQ0tfVEFCTEVfU0laRTsKKyAgdGJsLT5tYXhfZW50cmllcyA9IHRibC0+Y2FwX2VudHJpZXMgPQorICAgICAgZW50cmllc19mb3JfYnl0ZXModGJsLT5jdXJyZW50X3RhYmxlX2J5dGVzKTsKKyAgdGJsLT5lbnRzID0gZ3ByX21hbGxvYyhzaXplb2YoKnRibC0+ZW50cykgKiB0YmwtPmNhcF9lbnRyaWVzKTsKKyAgbWVtc2V0KHRibC0+ZW50cywgMCwgc2l6ZW9mKCp0YmwtPmVudHMpICogdGJsLT5jYXBfZW50cmllcyk7CisgIGZvciAoaSA9IDE7IGkgPD0gR1JQQ19DSFRUUDJfTEFTVF9TVEFUSUNfRU5UUlk7IGkrKykgeworICAgIHRibC0+c3RhdGljX2VudHNbaSAtIDFdID0KKyAgICAgICAgZ3JwY19tZGVsZW1fZnJvbV9zdHJpbmdzKHN0YXRpY190YWJsZVtpXS5rZXksIHN0YXRpY190YWJsZVtpXS52YWx1ZSk7CisgIH0KK30KKwordm9pZCBncnBjX2NodHRwMl9ocHRibF9kZXN0cm95KGdycGNfY2h0dHAyX2hwdGJsICp0YmwpIHsKKyAgc2l6ZV90IGk7CisgIGZvciAoaSA9IDA7IGkgPCBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWTsgaSsrKSB7CisgICAgR1JQQ19NREVMRU1fVU5SRUYodGJsLT5zdGF0aWNfZW50c1tpXSk7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IHRibC0+bnVtX2VudHM7IGkrKykgeworICAgIEdSUENfTURFTEVNX1VOUkVGKHRibC0+ZW50c1sodGJsLT5maXJzdF9lbnQgKyBpKSAlIHRibC0+Y2FwX2VudHJpZXNdKTsKKyAgfQorICBncHJfZnJlZSh0YmwtPmVudHMpOworfQorCitncnBjX21kZWxlbSAqZ3JwY19jaHR0cDJfaHB0YmxfbG9va3VwKGNvbnN0IGdycGNfY2h0dHAyX2hwdGJsICp0YmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRibF9pbmRleCkgeworICAvKiBTdGF0aWMgdGFibGUgY29tZXMgZmlyc3QsIGp1c3QgcmV0dXJuIGFuIGVudHJ5IGZyb20gaXQgKi8KKyAgaWYgKHRibF9pbmRleCA8PSBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSkgeworICAgIHJldHVybiB0YmwtPnN0YXRpY19lbnRzW3RibF9pbmRleCAtIDFdOworICB9CisgIC8qIE90aGVyd2lzZSwgZmluZCB0aGUgdmFsdWUgaW4gdGhlIGxpc3Qgb2YgdmFsaWQgZW50cmllcyAqLworICB0YmxfaW5kZXggLT0gKEdSUENfQ0hUVFAyX0xBU1RfU1RBVElDX0VOVFJZICsgMSk7CisgIGlmICh0YmxfaW5kZXggPCB0YmwtPm51bV9lbnRzKSB7CisgICAgdWludDMyX3Qgb2Zmc2V0ID0KKyAgICAgICAgKHRibC0+bnVtX2VudHMgLSAxdSAtIHRibF9pbmRleCArIHRibC0+Zmlyc3RfZW50KSAlIHRibC0+Y2FwX2VudHJpZXM7CisgICAgcmV0dXJuIHRibC0+ZW50c1tvZmZzZXRdOworICB9CisgIC8qIEludmFsaWQgZW50cnk6IHJldHVybiBlcnJvciAqLworICByZXR1cm4gTlVMTDsKK30KKworLyogRXZpY3Qgb25lIGVsZW1lbnQgZnJvbSB0aGUgdGFibGUgKi8KK3N0YXRpYyB2b2lkIGV2aWN0MShncnBjX2NodHRwMl9ocHRibCAqdGJsKSB7CisgIGdycGNfbWRlbGVtICpmaXJzdF9lbnQgPSB0YmwtPmVudHNbdGJsLT5maXJzdF9lbnRdOworICBzaXplX3QgZWxlbV9ieXRlcyA9IEdQUl9TTElDRV9MRU5HVEgoZmlyc3RfZW50LT5rZXktPnNsaWNlKSArCisgICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChmaXJzdF9lbnQtPnZhbHVlLT5zbGljZSkgKworICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEOworICBHUFJfQVNTRVJUKGVsZW1fYnl0ZXMgPD0gdGJsLT5tZW1fdXNlZCk7CisgIHRibC0+bWVtX3VzZWQgLT0gKHVpbnQzMl90KWVsZW1fYnl0ZXM7CisgIHRibC0+Zmlyc3RfZW50ID0gKCh0YmwtPmZpcnN0X2VudCArIDEpICUgdGJsLT5jYXBfZW50cmllcyk7CisgIHRibC0+bnVtX2VudHMtLTsKKyAgR1JQQ19NREVMRU1fVU5SRUYoZmlyc3RfZW50KTsKK30KKworc3RhdGljIHZvaWQgcmVidWlsZF9lbnRzKGdycGNfY2h0dHAyX2hwdGJsICp0YmwsIHVpbnQzMl90IG5ld19jYXApIHsKKyAgZ3JwY19tZGVsZW0gKiplbnRzID0gZ3ByX21hbGxvYyhzaXplb2YoKmVudHMpICogbmV3X2NhcCk7CisgIHVpbnQzMl90IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHRibC0+bnVtX2VudHM7IGkrKykgeworICAgIGVudHNbaV0gPSB0YmwtPmVudHNbKHRibC0+Zmlyc3RfZW50ICsgaSkgJSB0YmwtPmNhcF9lbnRyaWVzXTsKKyAgfQorICBncHJfZnJlZSh0YmwtPmVudHMpOworICB0YmwtPmVudHMgPSBlbnRzOworICB0YmwtPmNhcF9lbnRyaWVzID0gbmV3X2NhcDsKKyAgdGJsLT5maXJzdF9lbnQgPSAwOworfQorCit2b2lkIGdycGNfY2h0dHAyX2hwdGJsX3NldF9tYXhfYnl0ZXMoZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtYXhfYnl0ZXMpIHsKKyAgaWYgKHRibC0+bWF4X2J5dGVzID09IG1heF9ieXRlcykgeworICAgIHJldHVybjsKKyAgfQorICBncHJfbG9nKEdQUl9ERUJVRywgIlVwZGF0ZSBocGFjayBwYXJzZXIgbWF4IHNpemUgdG8gJWQiLCBtYXhfYnl0ZXMpOworICB3aGlsZSAodGJsLT5tZW1fdXNlZCA+IG1heF9ieXRlcykgeworICAgIGV2aWN0MSh0YmwpOworICB9CisgIHRibC0+bWF4X2J5dGVzID0gbWF4X2J5dGVzOworfQorCitpbnQgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X2N1cnJlbnRfdGFibGVfc2l6ZShncnBjX2NodHRwMl9ocHRibCAqdGJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnl0ZXMpIHsKKyAgaWYgKHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyA9PSBieXRlcykgeworICAgIHJldHVybiAxOworICB9CisgIGlmIChieXRlcyA+IHRibC0+bWF4X2J5dGVzKSB7CisgICAgaWYgKGdycGNfaHR0cF90cmFjZSkgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsCisgICAgICAgICAgICAgICJBdHRlbXB0IHRvIG1ha2UgaHBhY2sgdGFibGUgJWQgYnl0ZXMgd2hlbiBtYXggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICBieXRlcywgdGJsLT5tYXhfYnl0ZXMpOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfQorICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7CisgICAgZ3ByX2xvZyhHUFJfREVCVUcsICJVcGRhdGUgaHBhY2sgcGFyc2VyIHRhYmxlIHNpemUgdG8gJWQiLCBieXRlcyk7CisgIH0KKyAgd2hpbGUgKHRibC0+bWVtX3VzZWQgPiBieXRlcykgeworICAgIGV2aWN0MSh0YmwpOworICB9CisgIHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyA9IGJ5dGVzOworICB0YmwtPm1heF9lbnRyaWVzID0gZW50cmllc19mb3JfYnl0ZXMoYnl0ZXMpOworICBpZiAodGJsLT5tYXhfZW50cmllcyA+IHRibC0+Y2FwX2VudHJpZXMpIHsKKyAgICByZWJ1aWxkX2VudHModGJsLCBHUFJfTUFYKHRibC0+bWF4X2VudHJpZXMsIDIgKiB0YmwtPmNhcF9lbnRyaWVzKSk7CisgIH0gZWxzZSBpZiAodGJsLT5tYXhfZW50cmllcyA8IHRibC0+Y2FwX2VudHJpZXMgLyAzKSB7CisgICAgdWludDMyX3QgbmV3X2NhcCA9IEdQUl9NQVgodGJsLT5tYXhfZW50cmllcywgMTZ1KTsKKyAgICBpZiAobmV3X2NhcCAhPSB0YmwtPmNhcF9lbnRyaWVzKSB7CisgICAgICByZWJ1aWxkX2VudHModGJsLCBuZXdfY2FwKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKK2ludCBncnBjX2NodHRwMl9ocHRibF9hZGQoZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwgZ3JwY19tZGVsZW0gKm1kKSB7CisgIC8qIGRldGVybWluZSBob3cgbWFueSBieXRlcyBvZiBidWZmZXIgdGhpcyBlbnRyeSByZXByZXNlbnRzICovCisgIHNpemVfdCBlbGVtX2J5dGVzID0gR1BSX1NMSUNFX0xFTkdUSChtZC0+a2V5LT5zbGljZSkgKworICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgobWQtPnZhbHVlLT5zbGljZSkgKworICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEOworCisgIGlmICh0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMgPiB0YmwtPm1heF9ieXRlcykgeworICAgIGlmIChncnBjX2h0dHBfdHJhY2UpIHsKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLAorICAgICAgICAgICAgICAiSFBBQ0sgbWF4IHRhYmxlIHNpemUgcmVkdWNlZCB0byAlZCBidXQgbm90IHJlZmxlY3RlZCBieSBocGFjayAiCisgICAgICAgICAgICAgICJzdHJlYW0gKHN0aWxsIGF0ICVkKSIsCisgICAgICAgICAgICAgIHRibC0+bWF4X2J5dGVzLCB0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMpOworICAgIH0KKyAgICByZXR1cm4gMDsKKyAgfQorCisgIC8qIHdlIGNhbid0IGFkZCBlbGVtZW50cyBiaWdnZXIgdGhhbiB0aGUgbWF4IHRhYmxlIHNpemUgKi8KKyAgaWYgKGVsZW1fYnl0ZXMgPiB0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMpIHsKKyAgICAvKiBIUEFDSyBkcmFmdCAxMCBzZWN0aW9uIDQuNCBzdGF0ZXM6CisgICAgICogSWYgdGhlIHNpemUgb2YgdGhlIG5ldyBlbnRyeSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0KKyAgICAgKiBzaXplLCB0aGF0IGVudHJ5IGlzIGFkZGVkIHRvIHRoZSB0YWJsZS4gIEl0IGlzIG5vdCBhbiBlcnJvciB0bworICAgICAqIGF0dGVtcHQgdG8gYWRkIGFuIGVudHJ5IHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc2l6ZTsgYW4KKyAgICAgKiBhdHRlbXB0IHRvIGFkZCBhbiBlbnRyeSBsYXJnZXIgdGhhbiB0aGUgZW50aXJlIHRhYmxlIGNhdXNlcworICAgICAqIHRoZSB0YWJsZQorICAgICAqIHRvIGJlIGVtcHRpZWQgb2YgYWxsIGV4aXN0aW5nIGVudHJpZXMsIGFuZCByZXN1bHRzIGluIGFuCisgICAgICogZW1wdHkgdGFibGUuCisgICAgICovCisgICAgd2hpbGUgKHRibC0+bnVtX2VudHMpIHsKKyAgICAgIGV2aWN0MSh0YmwpOworICAgIH0KKyAgICByZXR1cm4gMTsKKyAgfQorCisgIC8qIGV2aWN0IGVudHJpZXMgdG8gZW5zdXJlIG5vIG92ZXJmbG93ICovCisgIHdoaWxlIChlbGVtX2J5dGVzID4gKHNpemVfdCl0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMgLSB0YmwtPm1lbV91c2VkKSB7CisgICAgZXZpY3QxKHRibCk7CisgIH0KKworICAvKiBjb3B5IHRoZSBmaW5hbGl6ZWQgZW50cnkgaW4gKi8KKyAgdGJsLT5lbnRzWyh0YmwtPmZpcnN0X2VudCArIHRibC0+bnVtX2VudHMpICUgdGJsLT5jYXBfZW50cmllc10gPQorICAgICAgR1JQQ19NREVMRU1fUkVGKG1kKTsKKworICAvKiB1cGRhdGUgYWNjb3VudGluZyB2YWx1ZXMgKi8KKyAgdGJsLT5udW1fZW50cysrOworICB0YmwtPm1lbV91c2VkICs9ICh1aW50MzJfdCllbGVtX2J5dGVzOworICByZXR1cm4gMTsKK30KKworZ3JwY19jaHR0cDJfaHB0YmxfZmluZF9yZXN1bHQgZ3JwY19jaHR0cDJfaHB0YmxfZmluZCgKKyAgICBjb25zdCBncnBjX2NodHRwMl9ocHRibCAqdGJsLCBncnBjX21kZWxlbSAqbWQpIHsKKyAgZ3JwY19jaHR0cDJfaHB0YmxfZmluZF9yZXN1bHQgciA9IHswLCAwfTsKKyAgdWludDMyX3QgaTsKKworICAvKiBTZWUgaWYgdGhlIHN0cmluZyBpcyBpbiB0aGUgc3RhdGljIHRhYmxlICovCisgIGZvciAoaSA9IDA7IGkgPCBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWTsgaSsrKSB7CisgICAgZ3JwY19tZGVsZW0gKmVudCA9IHRibC0+c3RhdGljX2VudHNbaV07CisgICAgaWYgKG1kLT5rZXkgIT0gZW50LT5rZXkpIGNvbnRpbnVlOworICAgIHIuaW5kZXggPSBpICsgMXU7CisgICAgci5oYXNfdmFsdWUgPSBtZC0+dmFsdWUgPT0gZW50LT52YWx1ZTsKKyAgICBpZiAoci5oYXNfdmFsdWUpIHJldHVybiByOworICB9CisKKyAgLyogU2NhbiB0aGUgZHluYW1pYyB0YWJsZSAqLworICBmb3IgKGkgPSAwOyBpIDwgdGJsLT5udW1fZW50czsgaSsrKSB7CisgICAgdWludDMyX3QgaWR4ID0KKyAgICAgICAgKHVpbnQzMl90KSh0YmwtPm51bV9lbnRzIC0gaSArIEdSUENfQ0hUVFAyX0xBU1RfU1RBVElDX0VOVFJZKTsKKyAgICBncnBjX21kZWxlbSAqZW50ID0gdGJsLT5lbnRzWyh0YmwtPmZpcnN0X2VudCArIGkpICUgdGJsLT5jYXBfZW50cmllc107CisgICAgaWYgKG1kLT5rZXkgIT0gZW50LT5rZXkpIGNvbnRpbnVlOworICAgIHIuaW5kZXggPSBpZHg7CisgICAgci5oYXNfdmFsdWUgPSBtZC0+dmFsdWUgPT0gZW50LT52YWx1ZTsKKyAgICBpZiAoci5oYXNfdmFsdWUpIHJldHVybiByOworICB9CisKKyAgcmV0dXJuIHI7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDc1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hQQUNLX1RBQkxFX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IUEFDS19UQUJMRV9ICisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCIKKworLyogSFBBQ0sgaGVhZGVyIHRhYmxlICovCisKKy8qIGxhc3QgaW5kZXggaW4gdGhlIHN0YXRpYyB0YWJsZSAqLworI2RlZmluZSBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSA2MQorCisvKiBJbml0aWFsIHRhYmxlIHNpemUgYXMgcGVyIHRoZSBzcGVjICovCisjZGVmaW5lIEdSUENfQ0hUVFAyX0lOSVRJQUxfSFBBQ0tfVEFCTEVfU0laRSA0MDk2CisvKiBNYXhpbXVtIHRhYmxlIHNpemUgdGhhdCB3ZSdsbCB1c2UgKi8KKyNkZWZpbmUgR1JQQ19DSFRUUDJfTUFYX0hQQUNLX1RBQkxFX1NJWkUgR1JQQ19DSFRUUDJfSU5JVElBTF9IUEFDS19UQUJMRV9TSVpFCisvKiBQZXIgZW50cnkgb3ZlcmhlYWQgYnl0ZXMgYXMgcGVyIHRoZSBzcGVjICovCisjZGVmaW5lIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEIDMyCisjaWYgMAorLyogTWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB3ZSBjb3VsZCBwb3NzaWJseSBmaXQgaW4gdGhlIHRhYmxlLCBnaXZlbiBkZWZpbmVkCisgICBvdmVyaGVhZHMgKi8KKyNkZWZpbmUgR1JQQ19DSFRUUDJfTUFYX1RBQkxFX0NPVU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoR1JQQ19DSFRUUDJfTUFYX0hQQUNLX1RBQkxFX1NJWkUgKyBHUlBDX0NIVFRQMl9IUEFDS19FTlRSWV9PVkVSSEVBRCAtIDEpIC8gXAorICAgR1JQQ19DSFRUUDJfSFBBQ0tfRU5UUllfT1ZFUkhFQUQpCisjZW5kaWYKKworLyogaHBhY2sgZGVjb2RlciB0YWJsZSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAvKiB0aGUgZmlyc3QgdXNlZCBlbnRyeSBpbiBlbnRzICovCisgIHVpbnQzMl90IGZpcnN0X2VudDsKKyAgLyogaG93IG1hbnkgZW50cmllcyBhcmUgaW4gdGhlIHRhYmxlICovCisgIHVpbnQzMl90IG51bV9lbnRzOworICAvKiB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoZSB0YWJsZSwgYWNjb3JkaW5nIHRvIHRoZSBocGFjayBhbGdvcml0aG0gKi8KKyAgdWludDMyX3QgbWVtX3VzZWQ7CisgIC8qIHRoZSBtYXggbWVtb3J5IGFsbG93ZWQgdG8gYmUgdXNlZCBieSB0aGUgdGFibGUsIGFjY29yZGluZyB0byB0aGUgaHBhY2sKKyAgICAgYWxnb3JpdGhtICovCisgIHVpbnQzMl90IG1heF9ieXRlczsKKyAgLyogdGhlIGN1cnJlbnRseSBhZ3JlZWQgc2l6ZSBvZiB0aGUgdGFibGUsIGFjY29yZGluZyB0byB0aGUgaHBhY2sgYWxnb3JpdGhtICovCisgIHVpbnQzMl90IGN1cnJlbnRfdGFibGVfYnl0ZXM7CisgIC8qIE1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgd2UgY291bGQgcG9zc2libHkgZml0IGluIHRoZSB0YWJsZSwgZ2l2ZW4gZGVmaW5lZAorICAgICBvdmVyaGVhZHMgKi8KKyAgdWludDMyX3QgbWF4X2VudHJpZXM7CisgIC8qIE51bWJlciBvZiBlbnRyaWVzIGFsbG9jYXRlZCBpbiBlbnRzICovCisgIHVpbnQzMl90IGNhcF9lbnRyaWVzOworICAvKiBhIGNpcmN1bGFyIGJ1ZmZlciBvZiBoZWFkZXJzIC0gdGhpcyBpcyBzdG9yZWQgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvCisgICAgIHdoYXQgaHBhY2sgc3BlY2lmaWVzLCBpbiBvcmRlciB0byBzaW1wbGlmeSB0YWJsZSBtYW5hZ2VtZW50IGEgbGl0dGxlLi4uCisgICAgIG1lYW5pbmcgbG9va3VwcyBuZWVkIHRvIFNVQlRSQUNUIGZyb20gdGhlIGVuZCBwb3NpdGlvbiAqLworICBncnBjX21kZWxlbSAqKmVudHM7CisgIGdycGNfbWRlbGVtICpzdGF0aWNfZW50c1tHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWV07Cit9IGdycGNfY2h0dHAyX2hwdGJsOworCisvKiBpbml0aWFsaXplIGEgaHBhY2sgdGFibGUgKi8KK3ZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfaW5pdChncnBjX2NodHRwMl9ocHRibCAqdGJsKTsKK3ZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfZGVzdHJveShncnBjX2NodHRwMl9ocHRibCAqdGJsKTsKK3ZvaWQgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X21heF9ieXRlcyhncnBjX2NodHRwMl9ocHRibCAqdGJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1heF9ieXRlcyk7CitpbnQgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X2N1cnJlbnRfdGFibGVfc2l6ZShncnBjX2NodHRwMl9ocHRibCAqdGJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnl0ZXMpOworCisvKiBsb29rdXAgYSB0YWJsZSBlbnRyeSBiYXNlZCBvbiBpdHMgaHBhY2sgaW5kZXggKi8KK2dycGNfbWRlbGVtICpncnBjX2NodHRwMl9ocHRibF9sb29rdXAoY29uc3QgZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpOworLyogYWRkIGEgdGFibGUgZW50cnkgdG8gdGhlIGluZGV4ICovCitpbnQgZ3JwY19jaHR0cDJfaHB0YmxfYWRkKGdycGNfY2h0dHAyX2hwdGJsICp0YmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWRlbGVtICptZCkgR1JQQ19NVVNUX1VTRV9SRVNVTFQ7CisvKiBGaW5kIGEga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIHRhYmxlLi4uIHJldHVybnMgdGhlIGluZGV4IGluIHRoZSB0YWJsZSBvZiB0aGUKKyAgIG1vc3Qgc2ltaWxhciBlbnRyeSwgb3IgMCBpZiB0aGUgdmFsdWUgd2FzIG5vdCBmb3VuZCAqLwordHlwZWRlZiBzdHJ1Y3QgeworICB1aW50MzJfdCBpbmRleDsKKyAgaW50IGhhc192YWx1ZTsKK30gZ3JwY19jaHR0cDJfaHB0YmxfZmluZF9yZXN1bHQ7CitncnBjX2NodHRwMl9ocHRibF9maW5kX3Jlc3VsdCBncnBjX2NodHRwMl9ocHRibF9maW5kKAorICAgIGNvbnN0IGdycGNfY2h0dHAyX2hwdGJsICp0YmwsIGdycGNfbWRlbGVtICptZCk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hQQUNLX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlcy50eHQgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGVzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGVzLnR4dApyZW5hbWUgdG8gc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlcy50eHQKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTU0MmUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IVFRQMl9FUlJPUlNfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hUVFAyX0VSUk9SU19ICisKKy8qIGVycm9yIGNvZGVzIGZvciBSU1RfU1RSRUFNIGZyb20gaHR0cDIgZHJhZnQgMTQgc2VjdGlvbiA3ICovCit0eXBlZGVmIGVudW0geworICBHUlBDX0NIVFRQMl9OT19FUlJPUiA9IDB4MCwKKyAgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1IgPSAweDEsCisgIEdSUENfQ0hUVFAyX0lOVEVSTkFMX0VSUk9SID0gMHgyLAorICBHUlBDX0NIVFRQMl9GTE9XX0NPTlRST0xfRVJST1IgPSAweDMsCisgIEdSUENfQ0hUVFAyX1NFVFRJTkdTX1RJTUVPVVQgPSAweDQsCisgIEdSUENfQ0hUVFAyX1NUUkVBTV9DTE9TRUQgPSAweDUsCisgIEdSUENfQ0hUVFAyX0ZSQU1FX1NJWkVfRVJST1IgPSAweDYsCisgIEdSUENfQ0hUVFAyX1JFRlVTRURfU1RSRUFNID0gMHg3LAorICBHUlBDX0NIVFRQMl9DQU5DRUwgPSAweDgsCisgIEdSUENfQ0hUVFAyX0NPTVBSRVNTSU9OX0VSUk9SID0gMHg5LAorICBHUlBDX0NIVFRQMl9DT05ORUNUX0VSUk9SID0gMHhhLAorICBHUlBDX0NIVFRQMl9FTkhBTkNFX1lPVVJfQ0FMTSA9IDB4YiwKKyAgR1JQQ19DSFRUUDJfSU5BREVRVUFURV9TRUNVUklUWSA9IDB4YywKKyAgLyogZm9yY2UgdXNlIG9mIGEgZGVmYXVsdCBjbGF1c2UgKi8KKyAgR1JQQ19DSFRUUDJfX0VSUk9SX0RPX05PVF9VU0UgPSAtMQorfSBncnBjX2NodHRwMl9lcnJvcl9jb2RlOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IVFRQMl9FUlJPUlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWY2MmJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmMKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuaCIKKworLyogQ29uc3RhbnRzIHB1bGxlZCBmcm9tIHRoZSBIUEFDSyBzcGVjLCBhbmQgY29udmVydGVkIHRvIEMgdXNpbmcgdGhlIHZpbQorICAgY29tbWFuZDoKKyAgIDolcy8uKiAgIFwoWzAtOWEtZl1cK1wpICBcWyAqXChbMC05XVwrXClcXS97MHhcMSwgXDJ9LC9nICovCitjb25zdCBncnBjX2NodHRwMl9odWZmc3ltIGdycGNfY2h0dHAyX2h1ZmZzeW1zW0dSUENfQ0hUVFAyX05VTV9IVUZGU1lNU10gPSB7CisgICAgezB4MWZmOCwgMTN9LCAgICAgezB4N2ZmZmQ4LCAyM30sICAgezB4ZmZmZmZlMiwgMjh9LCAgezB4ZmZmZmZlMywgMjh9LAorICAgIHsweGZmZmZmZTQsIDI4fSwgIHsweGZmZmZmZTUsIDI4fSwgIHsweGZmZmZmZTYsIDI4fSwgIHsweGZmZmZmZTcsIDI4fSwKKyAgICB7MHhmZmZmZmU4LCAyOH0sICB7MHhmZmZmZWEsIDI0fSwgICB7MHgzZmZmZmZmYywgMzB9LCB7MHhmZmZmZmU5LCAyOH0sCisgICAgezB4ZmZmZmZlYSwgMjh9LCAgezB4M2ZmZmZmZmQsIDMwfSwgezB4ZmZmZmZlYiwgMjh9LCAgezB4ZmZmZmZlYywgMjh9LAorICAgIHsweGZmZmZmZWQsIDI4fSwgIHsweGZmZmZmZWUsIDI4fSwgIHsweGZmZmZmZWYsIDI4fSwgIHsweGZmZmZmZjAsIDI4fSwKKyAgICB7MHhmZmZmZmYxLCAyOH0sICB7MHhmZmZmZmYyLCAyOH0sICB7MHgzZmZmZmZmZSwgMzB9LCB7MHhmZmZmZmYzLCAyOH0sCisgICAgezB4ZmZmZmZmNCwgMjh9LCAgezB4ZmZmZmZmNSwgMjh9LCAgezB4ZmZmZmZmNiwgMjh9LCAgezB4ZmZmZmZmNywgMjh9LAorICAgIHsweGZmZmZmZjgsIDI4fSwgIHsweGZmZmZmZjksIDI4fSwgIHsweGZmZmZmZmEsIDI4fSwgIHsweGZmZmZmZmIsIDI4fSwKKyAgICB7MHgxNCwgNn0sICAgICAgICB7MHgzZjgsIDEwfSwgICAgICB7MHgzZjksIDEwfSwgICAgICB7MHhmZmEsIDEyfSwKKyAgICB7MHgxZmY5LCAxM30sICAgICB7MHgxNSwgNn0sICAgICAgICB7MHhmOCwgOH0sICAgICAgICB7MHg3ZmEsIDExfSwKKyAgICB7MHgzZmEsIDEwfSwgICAgICB7MHgzZmIsIDEwfSwgICAgICB7MHhmOSwgOH0sICAgICAgICB7MHg3ZmIsIDExfSwKKyAgICB7MHhmYSwgOH0sICAgICAgICB7MHgxNiwgNn0sICAgICAgICB7MHgxNywgNn0sICAgICAgICB7MHgxOCwgNn0sCisgICAgezB4MCwgNX0sICAgICAgICAgezB4MSwgNX0sICAgICAgICAgezB4MiwgNX0sICAgICAgICAgezB4MTksIDZ9LAorICAgIHsweDFhLCA2fSwgICAgICAgIHsweDFiLCA2fSwgICAgICAgIHsweDFjLCA2fSwgICAgICAgIHsweDFkLCA2fSwKKyAgICB7MHgxZSwgNn0sICAgICAgICB7MHgxZiwgNn0sICAgICAgICB7MHg1YywgN30sICAgICAgICB7MHhmYiwgOH0sCisgICAgezB4N2ZmYywgMTV9LCAgICAgezB4MjAsIDZ9LCAgICAgICAgezB4ZmZiLCAxMn0sICAgICAgezB4M2ZjLCAxMH0sCisgICAgezB4MWZmYSwgMTN9LCAgICAgezB4MjEsIDZ9LCAgICAgICAgezB4NWQsIDd9LCAgICAgICAgezB4NWUsIDd9LAorICAgIHsweDVmLCA3fSwgICAgICAgIHsweDYwLCA3fSwgICAgICAgIHsweDYxLCA3fSwgICAgICAgIHsweDYyLCA3fSwKKyAgICB7MHg2MywgN30sICAgICAgICB7MHg2NCwgN30sICAgICAgICB7MHg2NSwgN30sICAgICAgICB7MHg2NiwgN30sCisgICAgezB4NjcsIDd9LCAgICAgICAgezB4NjgsIDd9LCAgICAgICAgezB4NjksIDd9LCAgICAgICAgezB4NmEsIDd9LAorICAgIHsweDZiLCA3fSwgICAgICAgIHsweDZjLCA3fSwgICAgICAgIHsweDZkLCA3fSwgICAgICAgIHsweDZlLCA3fSwKKyAgICB7MHg2ZiwgN30sICAgICAgICB7MHg3MCwgN30sICAgICAgICB7MHg3MSwgN30sICAgICAgICB7MHg3MiwgN30sCisgICAgezB4ZmMsIDh9LCAgICAgICAgezB4NzMsIDd9LCAgICAgICAgezB4ZmQsIDh9LCAgICAgICAgezB4MWZmYiwgMTN9LAorICAgIHsweDdmZmYwLCAxOX0sICAgIHsweDFmZmMsIDEzfSwgICAgIHsweDNmZmMsIDE0fSwgICAgIHsweDIyLCA2fSwKKyAgICB7MHg3ZmZkLCAxNX0sICAgICB7MHgzLCA1fSwgICAgICAgICB7MHgyMywgNn0sICAgICAgICB7MHg0LCA1fSwKKyAgICB7MHgyNCwgNn0sICAgICAgICB7MHg1LCA1fSwgICAgICAgICB7MHgyNSwgNn0sICAgICAgICB7MHgyNiwgNn0sCisgICAgezB4MjcsIDZ9LCAgICAgICAgezB4NiwgNX0sICAgICAgICAgezB4NzQsIDd9LCAgICAgICAgezB4NzUsIDd9LAorICAgIHsweDI4LCA2fSwgICAgICAgIHsweDI5LCA2fSwgICAgICAgIHsweDJhLCA2fSwgICAgICAgIHsweDcsIDV9LAorICAgIHsweDJiLCA2fSwgICAgICAgIHsweDc2LCA3fSwgICAgICAgIHsweDJjLCA2fSwgICAgICAgIHsweDgsIDV9LAorICAgIHsweDksIDV9LCAgICAgICAgIHsweDJkLCA2fSwgICAgICAgIHsweDc3LCA3fSwgICAgICAgIHsweDc4LCA3fSwKKyAgICB7MHg3OSwgN30sICAgICAgICB7MHg3YSwgN30sICAgICAgICB7MHg3YiwgN30sICAgICAgICB7MHg3ZmZlLCAxNX0sCisgICAgezB4N2ZjLCAxMX0sICAgICAgezB4M2ZmZCwgMTR9LCAgICAgezB4MWZmZCwgMTN9LCAgICAgezB4ZmZmZmZmYywgMjh9LAorICAgIHsweGZmZmU2LCAyMH0sICAgIHsweDNmZmZkMiwgMjJ9LCAgIHsweGZmZmU3LCAyMH0sICAgIHsweGZmZmU4LCAyMH0sCisgICAgezB4M2ZmZmQzLCAyMn0sICAgezB4M2ZmZmQ0LCAyMn0sICAgezB4M2ZmZmQ1LCAyMn0sICAgezB4N2ZmZmQ5LCAyM30sCisgICAgezB4M2ZmZmQ2LCAyMn0sICAgezB4N2ZmZmRhLCAyM30sICAgezB4N2ZmZmRiLCAyM30sICAgezB4N2ZmZmRjLCAyM30sCisgICAgezB4N2ZmZmRkLCAyM30sICAgezB4N2ZmZmRlLCAyM30sICAgezB4ZmZmZmViLCAyNH0sICAgezB4N2ZmZmRmLCAyM30sCisgICAgezB4ZmZmZmVjLCAyNH0sICAgezB4ZmZmZmVkLCAyNH0sICAgezB4M2ZmZmQ3LCAyMn0sICAgezB4N2ZmZmUwLCAyM30sCisgICAgezB4ZmZmZmVlLCAyNH0sICAgezB4N2ZmZmUxLCAyM30sICAgezB4N2ZmZmUyLCAyM30sICAgezB4N2ZmZmUzLCAyM30sCisgICAgezB4N2ZmZmU0LCAyM30sICAgezB4MWZmZmRjLCAyMX0sICAgezB4M2ZmZmQ4LCAyMn0sICAgezB4N2ZmZmU1LCAyM30sCisgICAgezB4M2ZmZmQ5LCAyMn0sICAgezB4N2ZmZmU2LCAyM30sICAgezB4N2ZmZmU3LCAyM30sICAgezB4ZmZmZmVmLCAyNH0sCisgICAgezB4M2ZmZmRhLCAyMn0sICAgezB4MWZmZmRkLCAyMX0sICAgezB4ZmZmZTksIDIwfSwgICAgezB4M2ZmZmRiLCAyMn0sCisgICAgezB4M2ZmZmRjLCAyMn0sICAgezB4N2ZmZmU4LCAyM30sICAgezB4N2ZmZmU5LCAyM30sICAgezB4MWZmZmRlLCAyMX0sCisgICAgezB4N2ZmZmVhLCAyM30sICAgezB4M2ZmZmRkLCAyMn0sICAgezB4M2ZmZmRlLCAyMn0sICAgezB4ZmZmZmYwLCAyNH0sCisgICAgezB4MWZmZmRmLCAyMX0sICAgezB4M2ZmZmRmLCAyMn0sICAgezB4N2ZmZmViLCAyM30sICAgezB4N2ZmZmVjLCAyM30sCisgICAgezB4MWZmZmUwLCAyMX0sICAgezB4MWZmZmUxLCAyMX0sICAgezB4M2ZmZmUwLCAyMn0sICAgezB4MWZmZmUyLCAyMX0sCisgICAgezB4N2ZmZmVkLCAyM30sICAgezB4M2ZmZmUxLCAyMn0sICAgezB4N2ZmZmVlLCAyM30sICAgezB4N2ZmZmVmLCAyM30sCisgICAgezB4ZmZmZWEsIDIwfSwgICAgezB4M2ZmZmUyLCAyMn0sICAgezB4M2ZmZmUzLCAyMn0sICAgezB4M2ZmZmU0LCAyMn0sCisgICAgezB4N2ZmZmYwLCAyM30sICAgezB4M2ZmZmU1LCAyMn0sICAgezB4M2ZmZmU2LCAyMn0sICAgezB4N2ZmZmYxLCAyM30sCisgICAgezB4M2ZmZmZlMCwgMjZ9LCAgezB4M2ZmZmZlMSwgMjZ9LCAgezB4ZmZmZWIsIDIwfSwgICAgezB4N2ZmZjEsIDE5fSwKKyAgICB7MHgzZmZmZTcsIDIyfSwgICB7MHg3ZmZmZjIsIDIzfSwgICB7MHgzZmZmZTgsIDIyfSwgICB7MHgxZmZmZmVjLCAyNX0sCisgICAgezB4M2ZmZmZlMiwgMjZ9LCAgezB4M2ZmZmZlMywgMjZ9LCAgezB4M2ZmZmZlNCwgMjZ9LCAgezB4N2ZmZmZkZSwgMjd9LAorICAgIHsweDdmZmZmZGYsIDI3fSwgIHsweDNmZmZmZTUsIDI2fSwgIHsweGZmZmZmMSwgMjR9LCAgIHsweDFmZmZmZWQsIDI1fSwKKyAgICB7MHg3ZmZmMiwgMTl9LCAgICB7MHgxZmZmZTMsIDIxfSwgICB7MHgzZmZmZmU2LCAyNn0sICB7MHg3ZmZmZmUwLCAyN30sCisgICAgezB4N2ZmZmZlMSwgMjd9LCAgezB4M2ZmZmZlNywgMjZ9LCAgezB4N2ZmZmZlMiwgMjd9LCAgezB4ZmZmZmYyLCAyNH0sCisgICAgezB4MWZmZmU0LCAyMX0sICAgezB4MWZmZmU1LCAyMX0sICAgezB4M2ZmZmZlOCwgMjZ9LCAgezB4M2ZmZmZlOSwgMjZ9LAorICAgIHsweGZmZmZmZmQsIDI4fSwgIHsweDdmZmZmZTMsIDI3fSwgIHsweDdmZmZmZTQsIDI3fSwgIHsweDdmZmZmZTUsIDI3fSwKKyAgICB7MHhmZmZlYywgMjB9LCAgICB7MHhmZmZmZjMsIDI0fSwgICB7MHhmZmZlZCwgMjB9LCAgICB7MHgxZmZmZTYsIDIxfSwKKyAgICB7MHgzZmZmZTksIDIyfSwgICB7MHgxZmZmZTcsIDIxfSwgICB7MHgxZmZmZTgsIDIxfSwgICB7MHg3ZmZmZjMsIDIzfSwKKyAgICB7MHgzZmZmZWEsIDIyfSwgICB7MHgzZmZmZWIsIDIyfSwgICB7MHgxZmZmZmVlLCAyNX0sICB7MHgxZmZmZmVmLCAyNX0sCisgICAgezB4ZmZmZmY0LCAyNH0sICAgezB4ZmZmZmY1LCAyNH0sICAgezB4M2ZmZmZlYSwgMjZ9LCAgezB4N2ZmZmY0LCAyM30sCisgICAgezB4M2ZmZmZlYiwgMjZ9LCAgezB4N2ZmZmZlNiwgMjd9LCAgezB4M2ZmZmZlYywgMjZ9LCAgezB4M2ZmZmZlZCwgMjZ9LAorICAgIHsweDdmZmZmZTcsIDI3fSwgIHsweDdmZmZmZTgsIDI3fSwgIHsweDdmZmZmZTksIDI3fSwgIHsweDdmZmZmZWEsIDI3fSwKKyAgICB7MHg3ZmZmZmViLCAyN30sICB7MHhmZmZmZmZlLCAyOH0sICB7MHg3ZmZmZmVjLCAyN30sICB7MHg3ZmZmZmVkLCAyN30sCisgICAgezB4N2ZmZmZlZSwgMjd9LCAgezB4N2ZmZmZlZiwgMjd9LCAgezB4N2ZmZmZmMCwgMjd9LCAgezB4M2ZmZmZlZSwgMjZ9LAorICAgIHsweDNmZmZmZmZmLCAzMH0sCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODBiYWVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0hVRkZTWU1TX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9IVUZGU1lNU19ICisKKy8qIEhQQUNLIHN0YXRpYyBodWZmbWFuIHRhYmxlICovCisKKyNkZWZpbmUgR1JQQ19DSFRUUDJfTlVNX0hVRkZTWU1TIDI1NworCit0eXBlZGVmIHN0cnVjdCB7CisgIHVuc2lnbmVkIGJpdHM7CisgIHVuc2lnbmVkIGxlbmd0aDsKK30gZ3JwY19jaHR0cDJfaHVmZnN5bTsKKworZXh0ZXJuIGNvbnN0IGdycGNfY2h0dHAyX2h1ZmZzeW0gZ3JwY19jaHR0cDJfaHVmZnN5bXNbR1JQQ19DSFRUUDJfTlVNX0hVRkZTWU1TXTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSFVGRlNZTVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjVmZDRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmMKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlcikgeworICBidWZmZXItPmRlYWRsaW5lID0gZ3ByX2luZl9mdXR1cmUoR1BSX0NMT0NLX1JFQUxUSU1FKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfZGVzdHJveSgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlcikgeworICBzaXplX3QgaTsKKyAgaWYgKCFidWZmZXItPnB1Ymxpc2hlZCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBidWZmZXItPmNvdW50OyBpKyspIHsKKyAgICAgIEdSUENfTURFTEVNX1VOUkVGKGJ1ZmZlci0+ZWxlbXNbaV0ubWQpOworICAgIH0KKyAgfQorICBncHJfZnJlZShidWZmZXItPmVsZW1zKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAorICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciAqYnVmZmVyLCBncnBjX21kZWxlbSAqZWxlbSkgeworICBHUFJfQVNTRVJUKCFidWZmZXItPnB1Ymxpc2hlZCk7CisgIGlmIChidWZmZXItPmNhcGFjaXR5ID09IGJ1ZmZlci0+Y291bnQpIHsKKyAgICBidWZmZXItPmNhcGFjaXR5ID0gR1BSX01BWCg4LCAyICogYnVmZmVyLT5jYXBhY2l0eSk7CisgICAgYnVmZmVyLT5lbGVtcyA9CisgICAgICAgIGdwcl9yZWFsbG9jKGJ1ZmZlci0+ZWxlbXMsIHNpemVvZigqYnVmZmVyLT5lbGVtcykgKiBidWZmZXItPmNhcGFjaXR5KTsKKyAgfQorICBidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQrK10ubWQgPSBlbGVtOworfQorCit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9zZXRfZGVhZGxpbmUoCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIsIGdwcl90aW1lc3BlYyBkZWFkbGluZSkgeworICBHUFJfQVNTRVJUKCFidWZmZXItPnB1Ymxpc2hlZCk7CisgIGJ1ZmZlci0+ZGVhZGxpbmUgPSBkZWFkbGluZTsKK30KKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfcHVibGlzaCgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlciwgZ3JwY19tZXRhZGF0YV9iYXRjaCAqYmF0Y2gpIHsKKyAgR1BSX0FTU0VSVCghYnVmZmVyLT5wdWJsaXNoZWQpOworICBidWZmZXItPnB1Ymxpc2hlZCA9IDE7CisgIGlmIChidWZmZXItPmNvdW50ID4gMCkgeworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDE7IGkgPCBidWZmZXItPmNvdW50OyBpKyspIHsKKyAgICAgIGJ1ZmZlci0+ZWxlbXNbaV0ucHJldiA9ICZidWZmZXItPmVsZW1zW2kgLSAxXTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlci0+Y291bnQgLSAxOyBpKyspIHsKKyAgICAgIGJ1ZmZlci0+ZWxlbXNbaV0ubmV4dCA9ICZidWZmZXItPmVsZW1zW2kgKyAxXTsKKyAgICB9CisgICAgYnVmZmVyLT5lbGVtc1swXS5wcmV2ID0gTlVMTDsKKyAgICBidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQgLSAxXS5uZXh0ID0gTlVMTDsKKyAgICBiYXRjaC0+bGlzdC5oZWFkID0gJmJ1ZmZlci0+ZWxlbXNbMF07CisgICAgYmF0Y2gtPmxpc3QudGFpbCA9ICZidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQgLSAxXTsKKyAgfSBlbHNlIHsKKyAgICBiYXRjaC0+bGlzdC5oZWFkID0gYmF0Y2gtPmxpc3QudGFpbCA9IE5VTEw7CisgIH0KKyAgYmF0Y2gtPmRlYWRsaW5lID0gYnVmZmVyLT5kZWFkbGluZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUxZGM3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9JTkNPTUlOR19NRVRBREFUQV9ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSU5DT01JTkdfTUVUQURBVEFfSAorCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaCIKKwordHlwZWRlZiBzdHJ1Y3QgeworICBncnBjX2xpbmtlZF9tZGVsZW0gKmVsZW1zOworICBzaXplX3QgY291bnQ7CisgIHNpemVfdCBjYXBhY2l0eTsKKyAgZ3ByX3RpbWVzcGVjIGRlYWRsaW5lOworICBpbnQgcHVibGlzaGVkOworfSBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXI7CisKKy8qKiBhc3N1bWVzIGV2ZXJ5dGhpbmcgaW5pdGlhbGx5IHplcm9lZCAqLwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlcik7Cit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9kZXN0cm95KAorICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciAqYnVmZmVyKTsKK3ZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX3B1Ymxpc2goCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIsIGdycGNfbWV0YWRhdGFfYmF0Y2ggKmJhdGNoKTsKKwordm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAorICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciAqYnVmZmVyLCBncnBjX21kZWxlbSAqZWxlbSk7Cit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9zZXRfZGVhZGxpbmUoCisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIsIGdwcl90aW1lc3BlYyBkZWFkbGluZSk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0lOQ09NSU5HX01FVEFEQVRBX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhZTY1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oCkBAIC0wLDAgKzEsNzgwIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSU5URVJOQUxfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0lOVEVSTkFMX0gKKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9pbXBsLmgiCisKK3R5cGVkZWYgc3RydWN0IGdycGNfY2h0dHAyX3RyYW5zcG9ydCBncnBjX2NodHRwMl90cmFuc3BvcnQ7Cit0eXBlZGVmIHN0cnVjdCBncnBjX2NodHRwMl9zdHJlYW0gZ3JwY19jaHR0cDJfc3RyZWFtOworCisvKiBzdHJlYW1zIGFyZSBrZXB0IGluIHZhcmlvdXMgbGlua2VkIGxpc3RzIGRlcGVuZGluZyBvbiB3aGF0IHRoaW5ncyBuZWVkIHRvCisgICBoYXBwZW4gdG8gdGhlbS4uLiB0aGlzIGVudW0gbGFiZWxzIGVhY2ggbGlzdCAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1JQQ19DSFRUUDJfTElTVF9BTExfU1RSRUFNUywKKyAgR1JQQ19DSFRUUDJfTElTVF9DSEVDS19SRUFEX09QUywKKyAgR1JQQ19DSFRUUDJfTElTVF9VTkFOTk9VTkNFRF9JTkNPTUlOR19XSU5ET1dfQVZBSUxBQkxFLAorICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRBQkxFLAorICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRJTkcsCisgIEdSUENfQ0hUVFAyX0xJU1RfV1JJVFRFTiwKKyAgR1JQQ19DSFRUUDJfTElTVF9QQVJTSU5HX1NFRU4sCisgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1BBUlNJTkcsCisgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1dSSVRJTkcsCisgIEdSUENfQ0hUVFAyX0xJU1RfU1RBTExFRF9CWV9UUkFOU1BPUlQsCisgIC8qIHN0cmVhbXMgd2FpdGluZyBmb3IgdGhlIG91dGdvaW5nIHdpbmRvdyBpbiB0aGUgd3JpdGluZyBwYXRoLCB0aGV5IHdpbGwgYmUKKyAgICogbWVyZ2VkIHRvIHRoZSBzdGFsbGVkIGxpc3Qgb3Igd3JpdGFibGUgbGlzdCB1bmRlciB0cmFuc3BvcnQgbG9jay4gKi8KKyAgR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HX1NUQUxMRURfQllfVFJBTlNQT1JULAorICAvKiogc3RyZWFtcyB0aGF0IGFyZSB3YWl0aW5nIHRvIHN0YXJ0IGJlY2F1c2UgdGhlcmUgYXJlIHRvbyBtYW55IGNvbmN1cnJlbnQKKyAgICAgIHN0cmVhbXMgb24gdGhlIGNvbm5lY3Rpb24gKi8KKyAgR1JQQ19DSFRUUDJfTElTVF9XQUlUSU5HX0ZPUl9DT05DVVJSRU5DWSwKKyAgU1RSRUFNX0xJU1RfQ09VTlQgLyogbXVzdCBiZSBsYXN0ICovCit9IGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkOworCisvKiBkZWZyYW1lciBzdGF0ZSBmb3IgdGhlIG92ZXJhbGwgaHR0cDIgc3RyZWFtIG9mIGJ5dGVzICovCit0eXBlZGVmIGVudW0geworICAvKiBwcmVmaXg6IG9uZSBlbnRyeSBwZXIgaHR0cDIgY29ubmVjdGlvbiBwcmVmaXggYnl0ZSAqLworICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzAgPSAwLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEsCisgIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMiwKKyAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8zLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzQsCisgIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfNSwKKyAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF82LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzcsCisgIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfOCwKKyAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF85LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEwLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzExLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEyLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEzLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE0LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE1LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE2LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE3LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE4LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE5LAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIwLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIxLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIyLAorICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIzLAorICAvKiBmcmFtZSBoZWFkZXIgYnl0ZSAwLi4uICovCisgIC8qIG11c3QgZm9sbG93IGZyb20gdGhlIHByZWZpeCBzdGF0ZXMgKi8KKyAgR1JQQ19EVFNfRkhfMCwKKyAgR1JQQ19EVFNfRkhfMSwKKyAgR1JQQ19EVFNfRkhfMiwKKyAgR1JQQ19EVFNfRkhfMywKKyAgR1JQQ19EVFNfRkhfNCwKKyAgR1JQQ19EVFNfRkhfNSwKKyAgR1JQQ19EVFNfRkhfNiwKKyAgR1JQQ19EVFNfRkhfNywKKyAgLyogLi4uIGZyYW1lIGhlYWRlciBieXRlIDggKi8KKyAgR1JQQ19EVFNfRkhfOCwKKyAgLyogaW5zaWRlIGEgaHR0cDIgZnJhbWUgKi8KKyAgR1JQQ19EVFNfRlJBTUUKK30gZ3JwY19jaHR0cDJfZGVmcmFtZV90cmFuc3BvcnRfc3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpoZWFkOworICBncnBjX2NodHRwMl9zdHJlYW0gKnRhaWw7Cit9IGdycGNfY2h0dHAyX3N0cmVhbV9saXN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqbmV4dDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpwcmV2OworfSBncnBjX2NodHRwMl9zdHJlYW1fbGluazsKKworLyogV2Uga2VlcCBzZXZlcmFsIHNldHMgb2YgY29ubmVjdGlvbiB3aWRlIHBhcmFtZXRlcnMgKi8KK3R5cGVkZWYgZW51bSB7CisgIC8qIFRoZSBzZXR0aW5ncyBvdXIgcGVlciBoYXMgYXNrZWQgZm9yIChhbmQgd2UgaGF2ZSBhY2tlZCkgKi8KKyAgR1JQQ19QRUVSX1NFVFRJTkdTID0gMCwKKyAgLyogVGhlIHNldHRpbmdzIHdlJ2QgbGlrZSB0byBoYXZlICovCisgIEdSUENfTE9DQUxfU0VUVElOR1MsCisgIC8qIFRoZSBzZXR0aW5ncyB3ZSd2ZSBwdWJsaXNoZWQgdG8gb3VyIHBlZXIgKi8KKyAgR1JQQ19TRU5UX1NFVFRJTkdTLAorICAvKiBUaGUgc2V0dGluZ3MgdGhlIHBlZXIgaGFzIGFja2VkICovCisgIEdSUENfQUNLRURfU0VUVElOR1MsCisgIEdSUENfTlVNX1NFVFRJTkdfU0VUUworfSBncnBjX2NodHRwMl9zZXR0aW5nX3NldDsKKworLyogT3V0c3RhbmRpbmcgcGluZyByZXF1ZXN0IGRhdGEgKi8KK3R5cGVkZWYgc3RydWN0IGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3BpbmcgeworICB1aW50OF90IGlkWzhdOworICBncnBjX2Nsb3N1cmUgKm9uX3JlY3Y7CisgIHN0cnVjdCBncnBjX2NodHRwMl9vdXRzdGFuZGluZ19waW5nICpuZXh0OworICBzdHJ1Y3QgZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZyAqcHJldjsKK30gZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZzsKKworLyogZm9yd2FyZCBkZWNsYXJlZCBpbiBmcmFtZV9kYXRhLmggKi8KK3N0cnVjdCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSB7CisgIGdycGNfYnl0ZV9zdHJlYW0gYmFzZTsKKyAgZ3ByX3JlZmNvdW50IHJlZnM7CisgIHN0cnVjdCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqbmV4dF9tZXNzYWdlOworICBpbnQgZmFpbGVkOworCisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKKyAgaW50IGlzX3RhaWw7CisgIGdwcl9zbGljZV9idWZmZXIgc2xpY2VzOworICBncnBjX2Nsb3N1cmUgKm9uX25leHQ7CisgIGdwcl9zbGljZSAqbmV4dDsKK307CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgLyoqIGRhdGEgdG8gd3JpdGUgbmV4dCB3cml0ZSAqLworICBncHJfc2xpY2VfYnVmZmVyIHFidWY7CisKKyAgLyoqIHdpbmRvdyBhdmFpbGFibGUgZm9yIHVzIHRvIHNlbmQgdG8gcGVlciAqLworICBpbnQ2NF90IG91dGdvaW5nX3dpbmRvdzsKKyAgLyoqIHdpbmRvdyBhdmFpbGFibGUgdG8gYW5ub3VuY2UgdG8gcGVlciAqLworICBpbnQ2NF90IGFubm91bmNlX2luY29taW5nX3dpbmRvdzsKKyAgLyoqIGhvdyBtdWNoIHdpbmRvdyB3b3VsZCB3ZSBsaWtlIHRvIGhhdmUgZm9yIGluY29taW5nX3dpbmRvdyAqLworICB1aW50MzJfdCBjb25uZWN0aW9uX3dpbmRvd190YXJnZXQ7CisKKyAgLyoqIGhhdmUgd2Ugc2VlbiBhIGdvYXdheSAqLworICB1aW50OF90IHNlZW5fZ29hd2F5OworICAvKiogaGF2ZSB3ZSBzZW50IGEgZ29hd2F5ICovCisgIHVpbnQ4X3Qgc2VudF9nb2F3YXk7CisKKyAgLyoqIGlzIHRoaXMgdHJhbnNwb3J0IGEgY2xpZW50PyAqLworICB1aW50OF90IGlzX2NsaWVudDsKKyAgLyoqIGFyZSB0aGUgbG9jYWwgc2V0dGluZ3MgZGlydHkgYW5kIG5lZWQgdG8gYmUgc2VudD8gKi8KKyAgdWludDhfdCBkaXJ0aWVkX2xvY2FsX3NldHRpbmdzOworICAvKiogaGF2ZSBsb2NhbCBzZXR0aW5ncyBiZWVuIHNlbnQ/ICovCisgIHVpbnQ4X3Qgc2VudF9sb2NhbF9zZXR0aW5nczsKKyAgLyoqIGJpdG1hc2sgb2Ygc2V0dGluZyBpbmRleGVzIHRvIHNlbmQgb3V0ICovCisgIHVpbnQzMl90IGZvcmNlX3NlbmRfc2V0dGluZ3M7CisgIC8qKiBzZXR0aW5ncyB2YWx1ZXMgKi8KKyAgdWludDMyX3Qgc2V0dGluZ3NbR1JQQ19OVU1fU0VUVElOR19TRVRTXVtHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1NdOworCisgIC8qKiB3aGF0IGlzIHRoZSBuZXh0IHN0cmVhbSBpZCB0byBiZSBhbGxvY2F0ZWQgYnkgdGhpcyBwZWVyPworICAgICAgY29waWVkIHRvIG5leHRfc3RyZWFtX2lkIGluIHBhcnNpbmcgd2hlbiBwYXJzaW5nIGNvbW1lbmNlcyAqLworICB1aW50MzJfdCBuZXh0X3N0cmVhbV9pZDsKKworICAvKiogaG93IGZhciB0byBsb29rYWhlYWQgaW4gYSBzdHJlYW0/ICovCisgIHVpbnQzMl90IHN0cmVhbV9sb29rYWhlYWQ7CisKKyAgLyoqIGxhc3QgcmVjZWl2ZWQgc3RyZWFtIGlkICovCisgIHVpbnQzMl90IGxhc3RfaW5jb21pbmdfc3RyZWFtX2lkOworCisgIC8qKiBwaW5ncyBhd2FpdGluZyByZXNwb25zZXMgKi8KKyAgZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZyBwaW5nczsKKyAgLyoqIG5leHQgcGF5bG9hZCBmb3IgYW4gb3V0Z29pbmcgcGluZyAqLworICB1aW50NjRfdCBwaW5nX2NvdW50ZXI7CisKKyAgLyoqIGNvbmN1cnJlbnQgc3RyZWFtIGNvdW50OiB1cGRhdGVkIHdoZW4gbm90IHBhcnNpbmcsCisgICAgICBzbyB0aGlzIGlzIGEgc3RyaWN0IG92ZXItZXN0aW1hdGlvbiBvbiB0aGUgY2xpZW50ICovCisgIHVpbnQzMl90IGNvbmN1cnJlbnRfc3RyZWFtX2NvdW50OworfSBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsOworCit0eXBlZGVmIHN0cnVjdCB7CisgIC8qKiBkYXRhIHRvIHdyaXRlIG5vdyAqLworICBncHJfc2xpY2VfYnVmZmVyIG91dGJ1ZjsKKyAgLyoqIGhwYWNrIGVuY29kaW5nICovCisgIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgaHBhY2tfY29tcHJlc3NvcjsKKyAgaW50NjRfdCBvdXRnb2luZ193aW5kb3c7CisgIC8qKiBpcyB0aGlzIGEgY2xpZW50PyAqLworICB1aW50OF90IGlzX2NsaWVudDsKKyAgLyoqIGNhbGxiYWNrIGZvciB3aGVuIHdyaXRpbmcgaXMgZG9uZSAqLworICBncnBjX2Nsb3N1cmUgZG9uZV9jYjsKK30gZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmc7CisKK3N0cnVjdCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyB7CisgIC8qKiBpcyB0aGlzIHRyYW5zcG9ydCBhIGNsaWVudD8gKGJvb2xlYW4pICovCisgIHVpbnQ4X3QgaXNfY2xpZW50OworCisgIC8qKiB3ZXJlIHNldHRpbmdzIHVwZGF0ZWQ/ICovCisgIHVpbnQ4X3Qgc2V0dGluZ3NfdXBkYXRlZDsKKyAgLyoqIHdhcyBhIHNldHRpbmdzIGFjayByZWNlaXZlZD8gKi8KKyAgdWludDhfdCBzZXR0aW5nc19hY2tfcmVjZWl2ZWQ7CisgIC8qKiB3YXMgYSBnb2F3YXkgZnJhbWUgcmVjZWl2ZWQ/ICovCisgIHVpbnQ4X3QgZ29hd2F5X3JlY2VpdmVkOworCisgIC8qKiB0aGUgbGFzdCBzZW50IG1heF90YWJsZV9zaXplIHNldHRpbmcgKi8KKyAgdWludDMyX3QgbGFzdF9zZW50X21heF90YWJsZV9zaXplOworCisgIC8qKiBpbml0aWFsIHdpbmRvdyBjaGFuZ2UgKi8KKyAgaW50NjRfdCBpbml0aWFsX3dpbmRvd191cGRhdGU7CisKKyAgLyoqIGRhdGEgdG8gd3JpdGUgbGF0ZXIgLSBhZnRlciBwYXJzaW5nICovCisgIGdwcl9zbGljZV9idWZmZXIgcWJ1ZjsKKyAgLyoqIHBhcnNlciBmb3IgaGVhZGVycyAqLworICBncnBjX2NodHRwMl9ocGFja19wYXJzZXIgaHBhY2tfcGFyc2VyOworICAvKiogc2ltcGxlIG9uZSBzaG90IHBhcnNlcnMgKi8KKyAgdW5pb24geworICAgIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyIHdpbmRvd191cGRhdGU7CisgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyIHNldHRpbmdzOworICAgIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyIHBpbmc7CisgICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXIgcnN0X3N0cmVhbTsKKyAgfSBzaW1wbGU7CisgIC8qKiBwYXJzZXIgZm9yIGdvYXdheSBmcmFtZXMgKi8KKyAgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciBnb2F3YXlfcGFyc2VyOworCisgIC8qKiB3aW5kb3cgYXZhaWxhYmxlIGZvciBwZWVyIHRvIHNlbmQgdG8gdXMgKi8KKyAgaW50NjRfdCBpbmNvbWluZ193aW5kb3c7CisKKyAgLyoqIG5leHQgc3RyZWFtIGlkIGF2YWlsYWJsZSBhdCB0aGUgdGltZSBvZiBiZWdpbm5pbmcgcGFyc2luZyAqLworICB1aW50MzJfdCBuZXh0X3N0cmVhbV9pZDsKKyAgdWludDMyX3QgbGFzdF9pbmNvbWluZ19zdHJlYW1faWQ7CisKKyAgLyogZGVmcmFtaW5nICovCisgIGdycGNfY2h0dHAyX2RlZnJhbWVfdHJhbnNwb3J0X3N0YXRlIGRlZnJhbWVfc3RhdGU7CisgIHVpbnQ4X3QgaW5jb21pbmdfZnJhbWVfdHlwZTsKKyAgdWludDhfdCBpbmNvbWluZ19mcmFtZV9mbGFnczsKKyAgdWludDhfdCBoZWFkZXJfZW9mOworICB1aW50MzJfdCBleHBlY3RfY29udGludWF0aW9uX3N0cmVhbV9pZDsKKyAgdWludDMyX3QgaW5jb21pbmdfZnJhbWVfc2l6ZTsKKyAgdWludDMyX3QgaW5jb21pbmdfc3RyZWFtX2lkOworCisgIC8qIGFjdGl2ZSBwYXJzZXIgKi8KKyAgdm9pZCAqcGFyc2VyX2RhdGE7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICppbmNvbWluZ19zdHJlYW07CisgIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yICgqcGFyc2VyKSgKKyAgICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXJfdXNlcl9kYXRhLAorICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKKworICAvKiByZWNlaXZlZCBzZXR0aW5ncyAqLworICB1aW50MzJfdCBzZXR0aW5nc1tHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1NdOworCisgIC8qIGdvYXdheSBkYXRhICovCisgIGdycGNfc3RhdHVzX2NvZGUgZ29hd2F5X2Vycm9yOworICB1aW50MzJfdCBnb2F3YXlfbGFzdF9zdHJlYW1faW5kZXg7CisgIGdwcl9zbGljZSBnb2F3YXlfdGV4dDsKKworICBpbnQ2NF90IG91dGdvaW5nX3dpbmRvdzsKK307CisKK3N0cnVjdCBncnBjX2NodHRwMl90cmFuc3BvcnQgeworICBncnBjX3RyYW5zcG9ydCBiYXNlOyAvKiBtdXN0IGJlIGZpcnN0ICovCisgIGdycGNfZW5kcG9pbnQgKmVwOworICBncHJfcmVmY291bnQgcmVmczsKKyAgY2hhciAqcGVlcl9zdHJpbmc7CisKKyAgLyoqIHdoZW4gdGhpcyBkcm9wcyB0byB6ZXJvIGl0J3Mgc2FmZSB0byBzaHV0ZG93biB0aGUgZW5kcG9pbnQgKi8KKyAgZ3ByX3JlZmNvdW50IHNodXRkb3duX2VwX3JlZnM7CisKKyAgZ3ByX211IG11OworCisgIC8qKiBpcyB0aGUgdHJhbnNwb3J0IGRlc3Ryb3lpbmcgaXRzZWxmPyAqLworICB1aW50OF90IGRlc3Ryb3lpbmc7CisgIC8qKiBoYXMgdGhlIHVwcGVyIGxheWVyIGNsb3NlZCB0aGUgdHJhbnNwb3J0PyAqLworICB1aW50OF90IGNsb3NlZDsKKworICAvKiogaXMgYSB0aHJlYWQgY3VycmVudGx5IHdyaXRpbmcgKi8KKyAgdWludDhfdCB3cml0aW5nX2FjdGl2ZTsKKyAgLyoqIGlzIGEgdGhyZWFkIGN1cnJlbnRseSBwYXJzaW5nICovCisgIHVpbnQ4X3QgcGFyc2luZ19hY3RpdmU7CisKKyAgLyoqIGlzIHRoZXJlIGEgcmVhZCByZXF1ZXN0IHRvIHRoZSBlbmRwb2ludCBvdXRzdGFuZGluZz8gKi8KKyAgdWludDhfdCBlbmRwb2ludF9yZWFkaW5nOworCisgIC8qKiB2YXJpb3VzIGxpc3RzIG9mIHN0cmVhbXMgKi8KKyAgZ3JwY19jaHR0cDJfc3RyZWFtX2xpc3QgbGlzdHNbU1RSRUFNX0xJU1RfQ09VTlRdOworCisgIC8qKiBnbG9iYWwgc3RhdGUgZm9yIHJlYWRpbmcvd3JpdGluZyAqLworICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsIGdsb2JhbDsKKyAgLyoqIHN0YXRlIG9ubHkgYWNjZXNzaWJsZSBieSB0aGUgY2hhaW4gb2YgZXhlY3V0aW9uIHRoYXQKKyAgICAgIHNldCB3cml0aW5nX2FjdGl2ZT0xICovCisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nIHdyaXRpbmc7CisgIC8qKiBzdGF0ZSBvbmx5IGFjY2Vzc2libGUgYnkgdGhlIGNoYWluIG9mIGV4ZWN1dGlvbiB0aGF0CisgICAgICBzZXQgcGFyc2luZ19hY3RpdmU9MSAqLworICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyBwYXJzaW5nOworCisgIC8qKiBtYXBzIHN0cmVhbSBpZCB0byBncnBjX2NodHRwMl9zdHJlYW0gb2JqZWN0czsKKyAgICAgIG93bmVkIGJ5IHRoZSBwYXJzaW5nIHRocmVhZCB3aGVuIHBhcnNpbmcgKi8KKyAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcCBwYXJzaW5nX3N0cmVhbV9tYXA7CisKKyAgLyoqIHN0cmVhbXMgY3JlYXRlZCBieSB0aGUgY2xpZW50IChwb3NzaWJseSBkdXJpbmcgcGFyc2luZyk7CisgICAgICBtZXJnZWQgd2l0aCBwYXJzaW5nX3N0cmVhbV9tYXAgZHVyaW5nIHVubG9jayB3aGVuIG5vCisgICAgICBwYXJzaW5nIGlzIG9jY3VycmluZyAqLworICBncnBjX2NodHRwMl9zdHJlYW1fbWFwIG5ld19zdHJlYW1fbWFwOworCisgIC8qKiBjbG9zdXJlIHRvIGV4ZWN1dGUgd3JpdGluZyAqLworICBncnBjX2Nsb3N1cmUgd3JpdGluZ19hY3Rpb247CisgIC8qKiBjbG9zdXJlIHRvIGZpbmlzaCByZWFkaW5nIGZyb20gdGhlIGVuZHBvaW50ICovCisgIGdycGNfY2xvc3VyZSByZWN2X2RhdGE7CisKKyAgLyoqIGluY29taW5nIHJlYWQgYnl0ZXMgKi8KKyAgZ3ByX3NsaWNlX2J1ZmZlciByZWFkX2J1ZmZlcjsKKworICAvKiogYWRkcmVzcyB0byBwbGFjZSBhIG5ld2x5IGFjY2VwdGVkIHN0cmVhbSAtIHNldCBhbmQgdW5zZXQgYnkKKyAgICAgIGdycGNfY2h0dHAyX3BhcnNpbmdfYWNjZXB0X3N0cmVhbTsgdXNlZCBieSBpbml0X3N0cmVhbSB0bworICAgICAgcHVibGlzaCB0aGUgYWNjZXB0ZWQgc2VydmVyIHN0cmVhbSAqLworICBncnBjX2NodHRwMl9zdHJlYW0gKiphY2NlcHRpbmdfc3RyZWFtOworCisgIHN0cnVjdCB7CisgICAgLyogYWNjZXB0IHN0cmVhbSBjYWxsYmFjayAqLworICAgIHZvaWQgKCphY2NlcHRfc3RyZWFtKShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RyYW5zcG9ydCAqdHJhbnNwb3J0LCBjb25zdCB2b2lkICpzZXJ2ZXJfZGF0YSk7CisgICAgdm9pZCAqYWNjZXB0X3N0cmVhbV91c2VyX2RhdGE7CisKKyAgICAvKiogY29ubmVjdGl2aXR5IHRyYWNraW5nICovCisgICAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfdHJhY2tlciBzdGF0ZV90cmFja2VyOworICB9IGNoYW5uZWxfY2FsbGJhY2s7CisKKyAgLyoqIFRyYW5zcG9ydCBvcCB0byBiZSBhcHBsaWVkIHBvc3QtcGFyc2luZyAqLworICBncnBjX3RyYW5zcG9ydF9vcCAqcG9zdF9wYXJzaW5nX29wOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAvKiogSFRUUDIgc3RyZWFtIGlkIGZvciB0aGlzIHN0cmVhbSwgb3IgemVybyBpZiBvbmUgaGFzIG5vdCBiZWVuIGFzc2lnbmVkICovCisgIHVpbnQzMl90IGlkOworCisgIC8qKiB3aW5kb3cgYXZhaWxhYmxlIGZvciB1cyB0byBzZW5kIHRvIHBlZXIgKi8KKyAgaW50NjRfdCBvdXRnb2luZ193aW5kb3c7CisgIC8qKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoZSB1cHBlciBsYXllcnMgaGF2ZSBvZmZlcmVkIHRvIHJlY2VpdmUuCisgICAgICBBcyB0aGUgdXBwZXIgbGF5ZXIgb2ZmZXJzIG1vcmUgYnl0ZXMsIHRoaXMgdmFsdWUgaW5jcmVhc2VzLgorICAgICAgQXMgYnl0ZXMgYXJlIHJlYWQsIHRoaXMgdmFsdWUgZGVjcmVhc2VzLiAqLworICB1aW50MzJfdCBtYXhfcmVjdl9ieXRlczsKKyAgLyoqIFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIHVwcGVyIGxheWVyIGhhcyBvZmZlcmVkIHRvIHJlYWQgYnV0IHdlIGhhdmUKKyAgICAgIG5vdCB5ZXQgYW5ub3VuY2VkIHRvIEhUVFAyIGZsb3cgY29udHJvbC4KKyAgICAgIEFzIHRoZSB1cHBlciBsYXllcnMgb2ZmZXIgdG8gcmVhZCBtb3JlIGJ5dGVzLCB0aGlzIHZhbHVlIGluY3JlYXNlcy4KKyAgICAgIEFzIHdlIGFkdmVydGlzZSBpbmNvbWluZyBmbG93IGNvbnRyb2wgd2luZG93LCB0aGlzIHZhbHVlIGRlY3JlYXNlcy4gKi8KKyAgdWludDMyX3QgdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2Zvcl9wYXJzZTsKKyAgdWludDMyX3QgdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2Zvcl93cml0aW5nOworICAvKiogdGhpbmdzIHRoZSB1cHBlciBsYXllcnMgd291bGQgbGlrZSB0byBzZW5kICovCisgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKnNlbmRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgZ3JwY19jbG9zdXJlICpzZW5kX2luaXRpYWxfbWV0YWRhdGFfZmluaXNoZWQ7CisgIGdycGNfYnl0ZV9zdHJlYW0gKnNlbmRfbWVzc2FnZTsKKyAgZ3JwY19jbG9zdXJlICpzZW5kX21lc3NhZ2VfZmluaXNoZWQ7CisgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKnNlbmRfdHJhaWxpbmdfbWV0YWRhdGE7CisgIGdycGNfY2xvc3VyZSAqc2VuZF90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZDsKKworICBncnBjX21ldGFkYXRhX2JhdGNoICpyZWN2X2luaXRpYWxfbWV0YWRhdGE7CisgIGdycGNfY2xvc3VyZSAqcmVjdl9pbml0aWFsX21ldGFkYXRhX3JlYWR5OworICBncnBjX2J5dGVfc3RyZWFtICoqcmVjdl9tZXNzYWdlOworICBncnBjX2Nsb3N1cmUgKnJlY3ZfbWVzc2FnZV9yZWFkeTsKKyAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqcmVjdl90cmFpbGluZ19tZXRhZGF0YTsKKyAgZ3JwY19jbG9zdXJlICpyZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkOworCisgIC8qKiB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0cyB3cml0ZXMgYmUgY2xvc2VkLCB0aGUgd3JpdGVfY2xvc2VkIGlzCisgICAgICAncXVldWVkJzsgd2hlbiB0aGUgY2xvc2UgaXMgZmxvdyBjb250cm9sbGVkIGludG8gdGhlIHNlbmQgcGF0aCwgd2UgYXJlCisgICAgICAnc2VuZGluZycgaXQ7IHdoZW4gdGhlIHdyaXRlIGhhcyBiZWVuIHBlcmZvcm1lZCBpdCBpcyAnc2VudCcgKi8KKyAgdWludDhfdCB3cml0ZV9jbG9zZWQ7CisgIC8qKiBpcyB0aGlzIHN0cmVhbSByZWFkaW5nIGhhbGYtY2xvc2VkIChib29sZWFuKSAqLworICB1aW50OF90IHJlYWRfY2xvc2VkOworICAvKiogaXMgdGhpcyBzdHJlYW0gaW4gdGhlIHN0cmVhbSBtYXA/IChib29sZWFuKSAqLworICB1aW50OF90IGluX3N0cmVhbV9tYXA7CisgIC8qKiBoYXMgdGhpcyBzdHJlYW0gc2VlbiBhbiBlcnJvcj8gaWYgMSwgdGhlbiBwZW5kaW5nIGluY29taW5nIGZyYW1lcworICAgICAgY2FuIGJlIHRocm93biBhd2F5ICovCisgIHVpbnQ4X3Qgc2Vlbl9lcnJvcjsKKworICB1aW50OF90IHB1Ymxpc2hlZF9pbml0aWFsX21ldGFkYXRhOworICB1aW50OF90IHB1Ymxpc2hlZF90cmFpbGluZ19tZXRhZGF0YTsKKyAgdWludDhfdCBmYWtlZF90cmFpbGluZ19tZXRhZGF0YTsKKworICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgcmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyIHJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhOworCisgIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlIGluY29taW5nX2ZyYW1lczsKK30gZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAvKiogSFRUUDIgc3RyZWFtIGlkIGZvciB0aGlzIHN0cmVhbSwgb3IgemVybyBpZiBvbmUgaGFzIG5vdCBiZWVuIGFzc2lnbmVkICovCisgIHVpbnQzMl90IGlkOworICB1aW50OF90IGZldGNoaW5nOworICBib29sIHNlbnRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgdWludDhfdCBzZW50X21lc3NhZ2U7CisgIHVpbnQ4X3Qgc2VudF90cmFpbGluZ19tZXRhZGF0YTsKKyAgdWludDhfdCByZWFkX2Nsb3NlZDsKKyAgLyoqIHNlbmQgdGhpcyBpbml0aWFsIG1ldGFkYXRhICovCisgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKnNlbmRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgZ3JwY19ieXRlX3N0cmVhbSAqc2VuZF9tZXNzYWdlOworICBncnBjX21ldGFkYXRhX2JhdGNoICpzZW5kX3RyYWlsaW5nX21ldGFkYXRhOworICBpbnQ2NF90IG91dGdvaW5nX3dpbmRvdzsKKyAgLyoqIGhvdyBtdWNoIHdpbmRvdyBzaG91bGQgd2UgYW5ub3VuY2U/ICovCisgIHVpbnQzMl90IGFubm91bmNlX3dpbmRvdzsKKyAgZ3ByX3NsaWNlX2J1ZmZlciBmbG93X2NvbnRyb2xsZWRfYnVmZmVyOworICBncHJfc2xpY2UgZmV0Y2hpbmdfc2xpY2U7CisgIHNpemVfdCBzdHJlYW1fZmV0Y2hlZDsKKyAgZ3JwY19jbG9zdXJlIGZpbmlzaGVkX2ZldGNoOworfSBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZzsKKworc3RydWN0IGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nIHsKKyAgLyoqIEhUVFAyIHN0cmVhbSBpZCBmb3IgdGhpcyBzdHJlYW0sIG9yIHplcm8gaWYgb25lIGhhcyBub3QgYmVlbiBhc3NpZ25lZCAqLworICB1aW50MzJfdCBpZDsKKyAgLyoqIGhhcyB0aGlzIHN0cmVhbSByZWNlaXZlZCBhIGNsb3NlICovCisgIHVpbnQ4X3QgcmVjZWl2ZWRfY2xvc2U7CisgIC8qKiBzYXcgYSByc3Rfc3RyZWFtICovCisgIHVpbnQ4X3Qgc2F3X3JzdF9zdHJlYW07CisgIC8qKiBob3cgbWFueSBoZWFkZXIgZnJhbWVzIGhhdmUgd2UgcmVjZWl2ZWQ/ICovCisgIHVpbnQ4X3QgaGVhZGVyX2ZyYW1lc19yZWNlaXZlZDsKKyAgLyoqIHdoaWNoIG1ldGFkYXRhIGRpZCB3ZSBnZXQgKG9uIHRoaXMgcGFyc2UpICovCisgIHVpbnQ4X3QgZ290X21ldGFkYXRhX29uX3BhcnNlWzJdOworICAvKiogc2hvdWxkIHdlIHJhaXNlIHRoZSBzZWVuX2Vycm9yIGZsYWcgaW4gdHJhbnNwb3J0X2dsb2JhbCAqLworICB1aW50OF90IHNlZW5fZXJyb3I7CisgIC8qKiB3aW5kb3cgYXZhaWxhYmxlIGZvciBwZWVyIHRvIHNlbmQgdG8gdXMgKi8KKyAgaW50NjRfdCBpbmNvbWluZ193aW5kb3c7CisgIC8qKiBwYXJzaW5nIHN0YXRlIGZvciBkYXRhIGZyYW1lcyAqLworICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciBkYXRhX3BhcnNlcjsKKyAgLyoqIHJlYXNvbiBnaXZlIHRvIHJzdF9zdHJlYW0gKi8KKyAgdWludDMyX3QgcnN0X3N0cmVhbV9yZWFzb247CisgIC8qKiBhbW91bnQgb2Ygd2luZG93IGdpdmVuICovCisgIGludDY0X3Qgb3V0Z29pbmdfd2luZG93OworICAvKiogbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIC0gcmVzZXQgYXQgZW5kIG9mIHBhcnNlIHRocmVhZCBleGVjdXRpb24gKi8KKyAgaW50NjRfdCByZWNlaXZlZF9ieXRlczsKKworICAvKiogaW5jb21pbmcgbWV0YWRhdGEgKi8KKyAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyIG1ldGFkYXRhX2J1ZmZlclsyXTsKK307CisKK3N0cnVjdCBncnBjX2NodHRwMl9zdHJlYW0geworICBncnBjX3N0cmVhbV9yZWZjb3VudCAqcmVmY291bnQ7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgZ2xvYmFsOworICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyB3cml0aW5nOworICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyBwYXJzaW5nOworCisgIGdycGNfY2h0dHAyX3N0cmVhbV9saW5rIGxpbmtzW1NUUkVBTV9MSVNUX0NPVU5UXTsKKyAgdWludDhfdCBpbmNsdWRlZFtTVFJFQU1fTElTVF9DT1VOVF07Cit9OworCisvKiogVHJhbnNwb3J0IHdyaXRpbmcgY2FsbCBmbG93OgorICAgIGNodHRwMl90cmFuc3BvcnQuYyBjYWxscyBncnBjX2NodHRwMl91bmxvY2tpbmdfY2hlY2tfd3JpdGVzIHRvIHNlZSBpZiB3cml0ZXMKKyAgIGFyZSByZXF1aXJlZDsKKyAgICBpZiB0aGV5IGFyZSwgY2h0dHAyX3RyYW5zcG9ydC5jIGNhbGxzIGdycGNfY2h0dHAyX3BlcmZvcm1fd3JpdGVzIHRvIGRvIHRoZQorICAgd3JpdGVzLgorICAgIE9uY2Ugd3JpdGVzIGhhdmUgYmVlbiBjb21wbGV0ZWQgKG1lYW5pbmcgYW5vdGhlciB3cml0ZSBjb3VsZCBwb3RlbnRpYWxseSBiZQorICAgc3RhcnRlZCksCisgICAgZ3JwY19jaHR0cDJfdGVybWluYXRlX3dyaXRpbmcgaXMgY2FsbGVkLiBUaGlzIHdpbGwgY2FsbAorICAgZ3JwY19jaHR0cDJfY2xlYW51cF93cml0aW5nLCBhdCB3aGljaAorICAgIHBvaW50IHRoZSB3cml0ZSBwaGFzZSBpcyBjb21wbGV0ZS4gKi8KKworLyoqIFNvbWVvbmUgaXMgdW5sb2NraW5nIHRoZSB0cmFuc3BvcnQgbXV0ZXg6IGNoZWNrIHRvIHNlZSBpZiB3cml0ZXMKKyAgICBhcmUgcmVxdWlyZWQsIGFuZCBzY2hlZHVsZSB0aGVtIGlmIHNvICovCitpbnQgZ3JwY19jaHR0cDJfdW5sb2NraW5nX2NoZWNrX3dyaXRlcyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKmdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp3cml0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzX3BhcnNpbmcpOwordm9pZCBncnBjX2NodHRwMl9wZXJmb3JtX3dyaXRlcygKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfZW5kcG9pbnQgKmVuZHBvaW50KTsKK3ZvaWQgZ3JwY19jaHR0cDJfdGVybWluYXRlX3dyaXRpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRyYW5zcG9ydF93cml0aW5nLCBib29sIHN1Y2Nlc3MpOwordm9pZCBncnBjX2NodHRwMl9jbGVhbnVwX3dyaXRpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICpnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqd3JpdGluZyk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkKGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKmdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICpwYXJzaW5nKTsKKy8qKiBQcm9jZXNzIG9uZSBzbGljZSBvZiBpbmNvbWluZyBkYXRhOyByZXR1cm4gMSBpZiB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbAorICAgIHZpYWJsZSBhZnRlciByZWFkaW5nLCBvciAwIGlmIHRoZSBjb25uZWN0aW9uIHNob3VsZCBiZSB0b3JuIGRvd24gKi8KK2ludCBncnBjX2NodHRwMl9wZXJmb3JtX3JlYWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlIHNsaWNlKTsKK3ZvaWQgZ3JwY19jaHR0cDJfcHVibGlzaF9yZWFkcyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICpnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnBhcnNpbmcpOworCitib29sIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRhYmxlX3N0cmVhbSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOworLyoqIEdldCBhIHdyaXRhYmxlIHN0cmVhbQorICAgIHJldHVybnMgbm9uLXplcm8gaWYgdGhlcmUgd2FzIGEgc3RyZWFtIGF2YWlsYWJsZSAqLworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXRhYmxlX3N0cmVhbSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqKnN0cmVhbV93cml0aW5nKTsKK2Jvb2wgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfd3JpdGFibGVfc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgR1JQQ19NVVNUX1VTRV9SRVNVTFQ7CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZyk7CitpbnQgZ3JwY19jaHR0cDJfbGlzdF9oYXZlX3dyaXRpbmdfc3RyZWFtcygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcpOworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXRpbmdfc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqKnN0cmVhbV93cml0aW5nKTsKKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF93cml0dGVuX3N0cmVhbSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nKTsKK2ludCBncnBjX2NodHRwMl9saXN0X3BvcF93cml0dGVuX3N0cmVhbSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqKnN0cmVhbV93cml0aW5nKTsKKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcpOworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3BhcnNpbmdfc2Vlbl9zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKipzdHJlYW1fcGFyc2luZyk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd2FpdGluZ19mb3JfY29uY3VycmVuY3koCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKK2ludCBncnBjX2NodHRwMl9saXN0X3BvcF93YWl0aW5nX2Zvcl9jb25jdXJyZW5jeSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKTsKKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX2NoZWNrX3JlYWRfb3BzKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpOworCit2b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZyk7Cit2b2lkIGdycGNfY2h0dHAyX2xpc3RfZmx1c2hfd3JpdGluZ19zdGFsbGVkX2J5X3RyYW5zcG9ydCgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGJvb2wgaXNfd2luZG93X2F2YWlsYWJsZSk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZyk7CitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCk7Cit2b2lkIGdycGNfY2h0dHAyX2xpc3RfcmVtb3ZlX3N0YWxsZWRfYnlfdHJhbnNwb3J0KAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOwordm9pZCBncnBjX2NodHRwMl9saXN0X3JlbW92ZV91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7CitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqKnN0cmVhbV9wYXJzaW5nKTsKKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX2Nsb3NlZF93YWl0aW5nX2Zvcl9wYXJzaW5nKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpOworCit2b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7CitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2xvc2VkX3dhaXRpbmdfZm9yX3dyaXRpbmcoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCk7CisKK2dycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpncnBjX2NodHRwMl9wYXJzaW5nX2xvb2t1cF9zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLCB1aW50MzJfdCBpZCk7CitncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqZ3JwY19jaHR0cDJfcGFyc2luZ19hY2NlcHRfc3RyZWFtKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgdWludDMyX3QgaWQpOworCit2b2lkIGdycGNfY2h0dHAyX2FkZF9pbmNvbWluZ19nb2F3YXkoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgdWludDMyX3QgZ29hd2F5X2Vycm9yLCBncHJfc2xpY2UgZ29hd2F5X3RleHQpOworCit2b2lkIGdycGNfY2h0dHAyX3JlZ2lzdGVyX3N0cmVhbShncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMpOworLyogcmV0dXJucyAxIGlmIHRoaXMgaXMgdGhlIGxhc3Qgc3RyZWFtLCAwIG90aGVyd2lzZSAqLworaW50IGdycGNfY2h0dHAyX3VucmVnaXN0ZXJfc3RyZWFtKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMpIEdSUENfTVVTVF9VU0VfUkVTVUxUOworaW50IGdycGNfY2h0dHAyX2hhc19zdHJlYW1zKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCk7Cit2b2lkIGdycGNfY2h0dHAyX2Zvcl9hbGxfc3RyZWFtcygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLCB2b2lkICp1c2VyX2RhdGEsCisgICAgdm9pZCAoKmNiKShncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLCB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZyk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICoqcGNsb3N1cmUsIGludCBzdWNjZXNzKTsKKworI2RlZmluZSBHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJJTkcgIlBSSSAqIEhUVFAvMi4wXHJcblxyXG5TTVxyXG5cclxuIgorI2RlZmluZSBHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJMRU4gXAorICAoc2l6ZW9mKEdSUENfQ0hUVFAyX0NMSUVOVF9DT05ORUNUX1NUUklORykgLSAxKQorCitleHRlcm4gaW50IGdycGNfaHR0cF90cmFjZTsKK2V4dGVybiBpbnQgZ3JwY19mbG93Y3RsX3RyYWNlOworCisjZGVmaW5lIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoc3RtdCkgXAorICBpZiAoIShncnBjX2h0dHBfdHJhY2UpKSAgICAgICAgICAgIFwKKyAgICA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBzdG10CisKK3R5cGVkZWYgZW51bSB7CisgIEdSUENfQ0hUVFAyX0ZMT1dDVExfTU9WRSwKKyAgR1JQQ19DSFRUUDJfRkxPV0NUTF9DUkVESVQsCisgIEdSUENfQ0hUVFAyX0ZMT1dDVExfREVCSVQKK30gZ3JwY19jaHR0cDJfZmxvd2N0bF9vcDsKKworI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX01PVkVfQ09NTU9OKHBoYXNlLCB0cmFuc3BvcnQsIGlkMSwgaWQyLCBkc3RfY29udGV4dCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF92YXIsIHNyY19jb250ZXh0LCBzcmNfdmFyKSAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFzc2VydChpZDEgPT0gaWQyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChncnBjX2Zsb3djdGxfdHJhY2UpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ3JwY19jaHR0cDJfZmxvd2N0bF90cmFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgcGhhc2UsIEdSUENfQ0hUVFAyX0ZMT1dDVExfTU9WRSwgI2RzdF9jb250ZXh0LCAgXAorICAgICAgICAgICNkc3RfdmFyLCAjc3JjX2NvbnRleHQsICNzcmNfdmFyLCB0cmFuc3BvcnQtPmlzX2NsaWVudCwgaWQxLCAgICAgICAgXAorICAgICAgICAgIGRzdF9jb250ZXh0LT5kc3RfdmFyLCBzcmNfY29udGV4dC0+c3JjX3Zhcik7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRzdF9jb250ZXh0LT5kc3RfdmFyICs9IHNyY19jb250ZXh0LT5zcmNfdmFyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNyY19jb250ZXh0LT5zcmNfdmFyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9TVFJFQU0ocGhhc2UsIHRyYW5zcG9ydCwgZHN0X2NvbnRleHQsIGRzdF92YXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29udGV4dCwgc3JjX3ZhcikgICAgICAgICAgICAgICAgICAgXAorICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfQ09NTU9OKHBoYXNlLCB0cmFuc3BvcnQsIGRzdF9jb250ZXh0LT5pZCwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbnRleHQtPmlkLCBkc3RfY29udGV4dCwgZHN0X3ZhciwgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29udGV4dCwgc3JjX3ZhcikKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRkxPV19NT1ZFX1RSQU5TUE9SVChwaGFzZSwgZHN0X2NvbnRleHQsIGRzdF92YXIsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbnRleHQsIHNyY192YXIpICAgICAgICAgICAgICAgICAgXAorICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfQ09NTU9OKHBoYXNlLCBkc3RfY29udGV4dCwgMCwgMCwgZHN0X2NvbnRleHQsIGRzdF92YXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfY29udGV4dCwgc3JjX3ZhcikKKworI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9DT01NT04ocGhhc2UsIHRyYW5zcG9ydCwgaWQsIGRzdF9jb250ZXh0LCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF92YXIsIGFtb3VudCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChncnBjX2Zsb3djdGxfdHJhY2UpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdycGNfY2h0dHAyX2Zsb3djdGxfdHJhY2UoX19GSUxFX18sIF9fTElORV9fLCBwaGFzZSwgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0ZMT1dDVExfQ1JFRElULCAjZHN0X2NvbnRleHQsICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZHN0X3ZhciwgTlVMTCwgI2Ftb3VudCwgdHJhbnNwb3J0LT5pc19jbGllbnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsIGRzdF9jb250ZXh0LT5kc3RfdmFyLCBhbW91bnQpOyAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRzdF9jb250ZXh0LT5kc3RfdmFyICs9IGFtb3VudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9TVFJFQU0ocGhhc2UsIHRyYW5zcG9ydCwgZHN0X2NvbnRleHQsIGRzdF92YXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX0NPTU1PTihwaGFzZSwgdHJhbnNwb3J0LCBkc3RfY29udGV4dC0+aWQsICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X2NvbnRleHQsIGRzdF92YXIsIGFtb3VudCkKKyNkZWZpbmUgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfVFJBTlNQT1JUKHBoYXNlLCBkc3RfY29udGV4dCwgZHN0X3ZhciwgYW1vdW50KSBcCisgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX0NPTU1PTihwaGFzZSwgZHN0X2NvbnRleHQsIDAsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQorCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfQ09NTU9OKHBoYXNlLCB0cmFuc3BvcnQsIGlkLCBkc3RfY29udGV4dCwgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfdmFyLCBhbW91bnQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGdycGNfZmxvd2N0bF90cmFjZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ3JwY19jaHR0cDJfZmxvd2N0bF90cmFjZShfX0ZJTEVfXywgX19MSU5FX18sIHBoYXNlLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfRkxPV0NUTF9ERUJJVCwgI2RzdF9jb250ZXh0LCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkc3RfdmFyLCBOVUxMLCAjYW1vdW50LCB0cmFuc3BvcnQtPmlzX2NsaWVudCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCwgZHN0X2NvbnRleHQtPmRzdF92YXIsIGFtb3VudCk7ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZHN0X2NvbnRleHQtPmRzdF92YXIgLT0gYW1vdW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfU1RSRUFNKHBoYXNlLCB0cmFuc3BvcnQsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfQ09NTU9OKHBoYXNlLCB0cmFuc3BvcnQsIGRzdF9jb250ZXh0LT5pZCwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBhbW91bnQpCisjZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfVFJBTlNQT1JUKHBoYXNlLCBkc3RfY29udGV4dCwgZHN0X3ZhciwgYW1vdW50KSBcCisgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfQ09NTU9OKHBoYXNlLCBkc3RfY29udGV4dCwgMCwgZHN0X2NvbnRleHQsIGRzdF92YXIsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkKKwordm9pZCBncnBjX2NodHRwMl9mbG93Y3RsX3RyYWNlKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9mbG93Y3RsX29wIG9wLCBjb25zdCBjaGFyICpjb250ZXh0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXIxLCBjb25zdCBjaGFyICpjb250ZXh0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXIyLCBpbnQgaXNfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0cmVhbV9pZCwgaW50NjRfdCB2YWwxLCBpbnQ2NF90IHZhbDIpOworCit2b2lkIGdycGNfY2h0dHAyX2Zha2Vfc3RhdHVzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzLCBncHJfc2xpY2UgKmRldGFpbHMpOwordm9pZCBncnBjX2NodHRwMl9tYXJrX3N0cmVhbV9jbG9zZWQoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwgaW50IGNsb3NlX3JlYWRzLAorICAgIGludCBjbG9zZV93cml0ZXMpOwordm9pZCBncnBjX2NodHRwMl9zdGFydF93cml0aW5nKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwpOworCisjaWZkZWYgR1JQQ19TVFJFQU1fUkVGQ09VTlRfREVCVUcKKyNkZWZpbmUgR1JQQ19DSFRUUDJfU1RSRUFNX1JFRihzdHJlYW1fZ2xvYmFsLCByZWFzb24pIFwKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihzdHJlYW1fZ2xvYmFsLCByZWFzb24pCisjZGVmaW5lIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgcmVhc29uKSBcCisgIGdycGNfY2h0dHAyX3N0cmVhbV91bnJlZihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgcmVhc29uKQordm9pZCBncnBjX2NodHRwMl9zdHJlYW1fcmVmKGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CisjZWxzZQorI2RlZmluZSBHUlBDX0NIVFRQMl9TVFJFQU1fUkVGKHN0cmVhbV9nbG9iYWwsIHJlYXNvbikgXAorICBncnBjX2NodHRwMl9zdHJlYW1fcmVmKHN0cmVhbV9nbG9iYWwpCisjZGVmaW5lIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgcmVhc29uKSBcCisgIGdycGNfY2h0dHAyX3N0cmVhbV91bnJlZihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCkKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7CisjZW5kaWYKKworZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2NyZWF0ZSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgdWludDMyX3QgZnJhbWVfc2l6ZSwKKyAgICB1aW50MzJfdCBmbGFncywgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgKmFkZF90b19xdWV1ZSk7Cit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX3B1c2goZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBzbGljZSk7Cit2b2lkIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2ZpbmlzaGVkKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqYnMsIGludCBzdWNjZXNzLAorICAgIGludCBmcm9tX3BhcnNpbmdfdGhyZWFkKTsKKwordm9pZCBncnBjX2NodHRwMl9hY2tfcGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnBhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKm9wYXF1ZV84Ynl0ZXMpOworCisvKiogYWRkIGEgcmVmIHRvIHRoZSBzdHJlYW0gYW5kIGFkZCBpdCB0byB0aGUgd3JpdGFibGUgbGlzdDsKKyAgICByZWYgd2lsbCBiZSBkcm9wcGVkIGluIHdyaXRpbmcuYyAqLwordm9pZCBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUoZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYwNDNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3BhcnNpbmcuYwpAQCAtMCwwICsxLDg2NiBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N0cmluZ191dGlsLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCisKK3N0YXRpYyBpbnQgaW5pdF9mcmFtZV9wYXJzZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZyk7CitzdGF0aWMgaW50IGluaXRfaGVhZGVyX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGludCBpc19jb250aW51YXRpb24pOworc3RhdGljIGludCBpbml0X2RhdGFfZnJhbWVfcGFyc2VyKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOworc3RhdGljIGludCBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOworc3RhdGljIGludCBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKTsKK3N0YXRpYyBpbnQgaW5pdF93aW5kb3dfdXBkYXRlX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKTsKK3N0YXRpYyBpbnQgaW5pdF9waW5nX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOworc3RhdGljIGludCBpbml0X2dvYXdheV9wYXJzZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOworc3RhdGljIGludCBpbml0X3NraXBfZnJhbWVfcGFyc2VyKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgaW50IGlzX2hlYWRlcik7CisKK3N0YXRpYyBpbnQgcGFyc2VfZnJhbWVfc2xpY2UoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7CisKK3ZvaWQgZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZzsKKworICBHUFJfVElNRVJfQkVHSU4oImdycGNfY2h0dHAyX3ByZXBhcmVfdG9fcmVhZCIsIDApOworCisgIHRyYW5zcG9ydF9wYXJzaW5nLT5uZXh0X3N0cmVhbV9pZCA9IHRyYW5zcG9ydF9nbG9iYWwtPm5leHRfc3RyZWFtX2lkOworICB0cmFuc3BvcnRfcGFyc2luZy0+bGFzdF9zZW50X21heF90YWJsZV9zaXplID0KKyAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPnNldHRpbmdzW0dSUENfU0VOVF9TRVRUSU5HU10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dSUENfQ0hUVFAyX1NFVFRJTkdTX0hFQURFUl9UQUJMRV9TSVpFXTsKKworICAvKiB1cGRhdGUgdGhlIHBhcnNpbmcgdmlldyBvZiBpbmNvbWluZyB3aW5kb3cgKi8KKyAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX3VuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19hdmFpbGFibGUoCisgICAgICB0cmFuc3BvcnRfZ2xvYmFsLCB0cmFuc3BvcnRfcGFyc2luZywgJnN0cmVhbV9nbG9iYWwsICZzdHJlYW1fcGFyc2luZykpIHsKKyAgICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLCBzdHJlYW1fcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3JfcGFyc2UpOworICB9CisKKyAgR1BSX1RJTUVSX0VORCgiZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkIiwgMCk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfcHVibGlzaF9yZWFkcygKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nOworICBpbnQgd2FzX3plcm87CisgIGludCBpc196ZXJvOworCisgIC8qIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCBpcyB1c2VkIGFzCisgICAgIGxhc3QtZ3JwY19jaHR0cDJfc3RyZWFtLWlkIHdoZW4KKyAgICAgc2VuZGluZyBHT0FXQVkgZnJhbWUuCisgICAgIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtaHR0cDItMTcjc2VjdGlvbi02LjgKKyAgICAgc2F5cyB0aGF0IGxhc3QtZ3JwY19jaHR0cDJfc3RyZWFtLWlkIGlzIHBlZXItaW5pdGlhdGVkIGdycGNfY2h0dHAyX3N0cmVhbQorICAgICBJRC4gIFNvLAorICAgICBzaW5jZSB3ZSBkb24ndCBoYXZlIHNlcnZlciBwdXNoZWQgc3RyZWFtcywgY2xpZW50IHNob3VsZCBzZW5kCisgICAgIEdPQVdBWSBsYXN0LWdycGNfY2h0dHAyX3N0cmVhbS1pZD0wIGluIHRoaXMgY2FzZS4gKi8KKyAgaWYgKCF0cmFuc3BvcnRfcGFyc2luZy0+aXNfY2xpZW50KSB7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+bGFzdF9pbmNvbWluZ19zdHJlYW1faWQgPQorICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkOworICB9CisKKyAgLyogdXBkYXRlIGdsb2JhbCBzZXR0aW5ncyAqLworICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX3VwZGF0ZWQpIHsKKyAgICBtZW1jcHkodHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19QRUVSX1NFVFRJTkdTXSwKKyAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzLCBzaXplb2YodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzKSk7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX3VwZGF0ZWQgPSAwOworICB9CisKKyAgLyogdXBkYXRlIHNldHRpbmdzIGJhc2VkIG9uIGFjayBpZiByZWNlaXZlZCAqLworICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCkgeworICAgIG1lbWNweSh0cmFuc3BvcnRfZ2xvYmFsLT5zZXR0aW5nc1tHUlBDX0FDS0VEX1NFVFRJTkdTXSwKKyAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19TRU5UX1NFVFRJTkdTXSwKKyAgICAgICAgICAgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCA9IDA7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2VudF9sb2NhbF9zZXR0aW5ncyA9IDA7CisgIH0KKworICAvKiBtb3ZlIGdvYXdheSB0byB0aGUgZ2xvYmFsIHN0YXRlIGlmIHdlIHJlY2VpdmVkIG9uZSAoaXQgd2lsbCBiZQorICAgICBwdWJsaXNoZWQgbGF0ZXIgKi8KKyAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQpIHsKKyAgICBncnBjX2NodHRwMl9hZGRfaW5jb21pbmdfZ29hd2F5KGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KXRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X3RleHQpOworICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfdGV4dCA9IGdwcl9lbXB0eV9zbGljZSgpOworICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQgPSAwOworICB9CisKKyAgLyogcHJvcGFnYXRlIGZsb3cgY29udHJvbCB0b2tlbnMgdG8gZ2xvYmFsIHN0YXRlICovCisgIHdhc196ZXJvID0gdHJhbnNwb3J0X2dsb2JhbC0+b3V0Z29pbmdfd2luZG93IDw9IDA7CisgIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9UUkFOU1BPUlQoInBhcnNlZCIsIHRyYW5zcG9ydF9nbG9iYWwsIG91dGdvaW5nX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZywgb3V0Z29pbmdfd2luZG93KTsKKyAgaXNfemVybyA9IHRyYW5zcG9ydF9nbG9iYWwtPm91dGdvaW5nX3dpbmRvdyA8PSAwOworICBpZiAod2FzX3plcm8gJiYgIWlzX3plcm8pIHsKKyAgICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3Bfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwpKSB7CisgICAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7CisgICAgfQorICB9CisKKyAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cgPAorICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+Y29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0ICogMyAvIDQpIHsKKyAgICBpbnQ2NF90IGFubm91bmNlX2J5dGVzID0gdHJhbnNwb3J0X2dsb2JhbC0+Y29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3dpbmRvdzsKKyAgICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9UUkFOU1BPUlQoInBhcnNlZCIsIHRyYW5zcG9ydF9nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm91bmNlX2luY29taW5nX3dpbmRvdywgYW5ub3VuY2VfYnl0ZXMpOworICAgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1RSQU5TUE9SVCgicGFyc2VkIiwgdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgYW5ub3VuY2VfYnl0ZXMpOworICB9CisKKyAgLyogZm9yIGVhY2ggc3RyZWFtIHRoYXQgc2F3IGFuIHVwZGF0ZSwgZml4dXAgZ2xvYmFsIHN0YXRlICovCisgIHdoaWxlIChncnBjX2NodHRwMl9saXN0X3BvcF9wYXJzaW5nX3NlZW5fc3RyZWFtKAorICAgICAgdHJhbnNwb3J0X2dsb2JhbCwgdHJhbnNwb3J0X3BhcnNpbmcsICZzdHJlYW1fZ2xvYmFsLCAmc3RyZWFtX3BhcnNpbmcpKSB7CisgICAgaWYgKHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yKSB7CisgICAgICBzdHJlYW1fZ2xvYmFsLT5zZWVuX2Vycm9yID0gMTsKKyAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICAgIH0KKworICAgIC8qIHVwZGF0ZSBvdXRnb2luZyBmbG93IGNvbnRyb2wgd2luZG93ICovCisgICAgd2FzX3plcm8gPSBzdHJlYW1fZ2xvYmFsLT5vdXRnb2luZ193aW5kb3cgPD0gMDsKKyAgICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKCJwYXJzZWQiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCBzdHJlYW1fcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3dpbmRvdyk7CisgICAgaXNfemVybyA9IHN0cmVhbV9nbG9iYWwtPm91dGdvaW5nX3dpbmRvdyA8PSAwOworICAgIGlmICh3YXNfemVybyAmJiAhaXNfemVybykgeworICAgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICAgIH0KKworICAgIHN0cmVhbV9nbG9iYWwtPm1heF9yZWN2X2J5dGVzIC09ICh1aW50MzJfdClHUFJfTUlOKAorICAgICAgICBzdHJlYW1fZ2xvYmFsLT5tYXhfcmVjdl9ieXRlcywgc3RyZWFtX3BhcnNpbmctPnJlY2VpdmVkX2J5dGVzKTsKKyAgICBzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfYnl0ZXMgPSAwOworCisgICAgLyogcHVibGlzaCBpbmNvbWluZyBzdHJlYW0gb3BzICovCisgICAgaWYgKHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy50YWlsICE9IE5VTEwpIHsKKyAgICAgIHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy50YWlsLT5pc190YWlsID0gMDsKKyAgICB9CisgICAgaWYgKHN0cmVhbV9wYXJzaW5nLT5kYXRhX3BhcnNlci5pbmNvbWluZ19mcmFtZXMuaGVhZCAhPSBOVUxMKSB7CisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgICB9CisgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfbWVyZ2UoCisgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMsCisgICAgICAgICZzdHJlYW1fcGFyc2luZy0+ZGF0YV9wYXJzZXIuaW5jb21pbmdfZnJhbWVzKTsKKyAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLnRhaWwgIT0gTlVMTCkgeworICAgICAgc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLnRhaWwtPmlzX3RhaWwgPSAxOworICAgIH0KKworICAgIGlmICghc3RyZWFtX2dsb2JhbC0+cHVibGlzaGVkX2luaXRpYWxfbWV0YWRhdGEgJiYKKyAgICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVswXSkgeworICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVswXSA9IDA7CisgICAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfaW5pdGlhbF9tZXRhZGF0YSA9IDE7CisgICAgICBHUFJfU1dBUChncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIsCisgICAgICAgICAgICAgICBzdHJlYW1fcGFyc2luZy0+bWV0YWRhdGFfYnVmZmVyWzBdLAorICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YSk7CisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKKyAgICB9CisgICAgaWYgKCFzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgJiYKKyAgICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVsxXSkgeworICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVsxXSA9IDA7CisgICAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgPSAxOworICAgICAgR1BSX1NXQVAoZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyLAorICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclsxXSwKKyAgICAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhKTsKKyAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOworICAgIH0KKworICAgIGlmIChzdHJlYW1fcGFyc2luZy0+c2F3X3JzdF9zdHJlYW0pIHsKKyAgICAgIGlmIChzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gIT0gR1JQQ19DSFRUUDJfTk9fRVJST1IpIHsKKyAgICAgICAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXNfY29kZSA9IGdycGNfY2h0dHAyX2h0dHAyX2Vycm9yX3RvX2dycGNfc3RhdHVzKAorICAgICAgICAgICAgKGdycGNfY2h0dHAyX2Vycm9yX2NvZGUpc3RyZWFtX3BhcnNpbmctPnJzdF9zdHJlYW1fcmVhc29uKTsKKyAgICAgICAgY2hhciAqc3RhdHVzX2RldGFpbHM7CisgICAgICAgIGdwcl9zbGljZSBzbGljZV9kZXRhaWxzOworICAgICAgICBncHJfYXNwcmludGYoJnN0YXR1c19kZXRhaWxzLCAiUmVjZWl2ZWQgUlNUX1NUUkVBTSBlcnI9JWQiLAorICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmctPnJzdF9zdHJlYW1fcmVhc29uKTsKKyAgICAgICAgc2xpY2VfZGV0YWlscyA9IGdwcl9zbGljZV9mcm9tX2NvcGllZF9zdHJpbmcoc3RhdHVzX2RldGFpbHMpOworICAgICAgICBncHJfZnJlZShzdGF0dXNfZGV0YWlscyk7CisgICAgICAgIGdycGNfY2h0dHAyX2Zha2Vfc3RhdHVzKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgJnNsaWNlX2RldGFpbHMpOworICAgICAgfQorICAgICAgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEpOworICAgIH0KKworICAgIGlmIChzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfY2xvc2UpIHsKKyAgICAgIGdycGNfY2h0dHAyX21hcmtfc3RyZWFtX2Nsb3NlZChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAwKTsKKyAgICB9CisgIH0KK30KKworaW50IGdycGNfY2h0dHAyX3BlcmZvcm1fcmVhZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Ugc2xpY2UpIHsKKyAgdWludDhfdCAqYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7CisgIHVpbnQ4X3QgKmVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKKyAgdWludDhfdCAqY3VyID0gYmVnOworCisgIGlmIChjdXIgPT0gZW5kKSByZXR1cm4gMTsKKworICBzd2l0Y2ggKHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlKSB7CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzA6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzI6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzM6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzQ6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzU6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzY6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzc6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzg6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzk6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEwOgorICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMToKKyAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTI6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEzOgorICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNDoKKyAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTU6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE2OgorICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNzoKKyAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTg6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE5OgorICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMDoKKyAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMjE6CisgICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIyOgorICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMzoKKyAgICAgIHdoaWxlIChjdXIgIT0gZW5kICYmIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlICE9IEdSUENfRFRTX0ZIXzApIHsKKyAgICAgICAgaWYgKCpjdXIgIT0gR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSSU5HW3RyYW5zcG9ydF9wYXJzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWZyYW1lX3N0YXRlXSkgeworICAgICAgICAgIGdwcl9sb2coR1BSX0lORk8sCisgICAgICAgICAgICAgICAgICAiQ29ubmVjdCBzdHJpbmcgbWlzbWF0Y2g6IGV4cGVjdGVkICclYycgKCVkKSBnb3QgJyVjJyAoJWQpICIKKyAgICAgICAgICAgICAgICAgICJhdCBieXRlICVkIiwKKyAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0NMSUVOVF9DT05ORUNUX1NUUklOR1t0cmFuc3BvcnRfcGFyc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmRlZnJhbWVfc3RhdGVdLAorICAgICAgICAgICAgICAgICAgKGludCkodWludDhfdClHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJJTkcKKyAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGVdLAorICAgICAgICAgICAgICAgICAgKmN1ciwgKGludCkqY3VyLCB0cmFuc3BvcnRfcGFyc2luZy0+ZGVmcmFtZV9zdGF0ZSk7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKytjdXI7CisgICAgICAgICsrdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGU7CisgICAgICB9CisgICAgICBpZiAoY3VyID09IGVuZCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGR0c19maF8wOgorICAgIGNhc2UgR1JQQ19EVFNfRkhfMDoKKyAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplID0gKCh1aW50MzJfdCkqY3VyKSA8PCAxNjsKKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8xOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19EVFNfRkhfMToKKyAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplIHw9ICgodWludDMyX3QpKmN1cikgPDwgODsKKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8yOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19EVFNfRkhfMjoKKyAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplIHw9ICpjdXI7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfMzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfRFRTX0ZIXzM6CisgICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7CisgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfdHlwZSA9ICpjdXI7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfRFRTX0ZIXzQ6CisgICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7CisgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MgPSAqY3VyOworICAgICAgaWYgKCsrY3VyID09IGVuZCkgeworICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZGVmcmFtZV9zdGF0ZSA9IEdSUENfRFRTX0ZIXzU7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgY2FzZSBHUlBDX0RUU19GSF81OgorICAgICAgR1BSX0FTU0VSVChjdXIgPCBlbmQpOworICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCA9ICgoKHVpbnQzMl90KSpjdXIpICYgMHg3ZikgPDwgMjQ7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfRFRTX0ZIXzY6CisgICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7CisgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkIHw9ICgodWludDMyX3QpKmN1cikgPDwgMTY7CisgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfRFRTX0ZIXzc6CisgICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7CisgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkIHw9ICgodWludDMyX3QpKmN1cikgPDwgODsKKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF84OworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgR1JQQ19EVFNfRkhfODoKKyAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKTsKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRlJBTUU7CisgICAgICBpZiAoIWluaXRfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCkgeworICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+bGFzdF9pbmNvbWluZ19zdHJlYW1faWQgPQorICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZDsKKyAgICAgIH0KKyAgICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSA9PSAwKSB7CisgICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCBncHJfZW1wdHlfc2xpY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBOVUxMOworICAgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7CisgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8wOworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGdvdG8gZHRzX2ZoXzA7IC8qIGxvb3AgKi8KKyAgICAgIH0KKyAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIEdSUENfRFRTX0ZSQU1FOgorICAgICAgR1BSX0FTU0VSVChjdXIgPCBlbmQpOworICAgICAgaWYgKCh1aW50MzJfdCkoZW5kIC0gY3VyKSA9PSB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSkgeworICAgICAgICBpZiAoIXBhcnNlX2ZyYW1lX3NsaWNlKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Vfc3ViX25vX3JlZihzbGljZSwgKHNpemVfdCkoY3VyIC0gYmVnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShlbmQgLSBiZWcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfMDsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IE5VTEw7CisgICAgICAgIHJldHVybiAxOworICAgICAgfSBlbHNlIGlmICgodWludDMyX3QpKGVuZCAtIGN1cikgPgorICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSkgeworICAgICAgICBzaXplX3QgY3VyX29mZnNldCA9IChzaXplX3QpKGN1ciAtIGJlZyk7CisgICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoCisgICAgICAgICAgICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgIGdwcl9zbGljZV9zdWJfbm9fcmVmKAorICAgICAgICAgICAgICAgICAgICBzbGljZSwgY3VyX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgY3VyX29mZnNldCArIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplKSwKKyAgICAgICAgICAgICAgICAxKSkgeworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGN1ciArPSB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZTsKKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IE5VTEw7CisgICAgICAgIGdvdG8gZHRzX2ZoXzA7IC8qIGxvb3AgKi8KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9zdWJfbm9fcmVmKHNsaWNlLCAoc2l6ZV90KShjdXIgLSBiZWcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3QpKGVuZCAtIGJlZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKSB7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUgLT0gKHVpbnQzMl90KShlbmQgLSBjdXIpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKKyAgfQorCisgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKK30KKworc3RhdGljIGludCBpbml0X2ZyYW1lX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgIT0gMCkgeworICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfdHlwZSAhPQorICAgICAgICBHUlBDX0NIVFRQMl9GUkFNRV9DT05USU5VQVRJT04pIHsKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiRXhwZWN0ZWQgQ09OVElOVUFUSU9OIGZyYW1lLCBnb3QgZnJhbWUgdHlwZSAlMDJ4IiwKKyAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3R5cGUpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgIT0KKyAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCkgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsCisgICAgICAgICAgICAgICJFeHBlY3RlZCBDT05USU5VQVRJT04gZnJhbWUgZm9yIGdycGNfY2h0dHAyX3N0cmVhbSAlMDh4LCBnb3QgIgorICAgICAgICAgICAgICAiZ3JwY19jaHR0cDJfc3RyZWFtICUwOHgiLAorICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQsCisgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKKyAgfQorICBzd2l0Y2ggKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV90eXBlKSB7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9EQVRBOgorICAgICAgcmV0dXJuIGluaXRfZGF0YV9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0hFQURFUjoKKyAgICAgIHJldHVybiBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAwKTsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0NPTlRJTlVBVElPTjoKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5leHBlY3RlZCBDT05USU5VQVRJT04gZnJhbWUiKTsKKyAgICAgIHJldHVybiAwOworICAgIGNhc2UgR1JQQ19DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTToKKyAgICAgIHJldHVybiBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZyk7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9TRVRUSU5HUzoKKyAgICAgIHJldHVybiBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcpOworICAgIGNhc2UgR1JQQ19DSFRUUDJfRlJBTUVfV0lORE9XX1VQREFURToKKyAgICAgIHJldHVybiBpbml0X3dpbmRvd191cGRhdGVfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZyk7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9QSU5HOgorICAgICAgcmV0dXJuIGluaXRfcGluZ19wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWToKKyAgICAgIHJldHVybiBpbml0X2dvYXdheV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgICBkZWZhdWx0OgorICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJVbmtub3duIGZyYW1lIHR5cGUgJTAyeCIsCisgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV90eXBlKTsKKyAgICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMCk7CisgIH0KK30KKworc3RhdGljIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIHNraXBfcGFyc2VyKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgeworICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Cit9CisKK3N0YXRpYyB2b2lkIHNraXBfaGVhZGVyKHZvaWQgKnRwLCBncnBjX21kZWxlbSAqbWQpIHsgR1JQQ19NREVMRU1fVU5SRUYobWQpOyB9CisKK3N0YXRpYyBpbnQgaW5pdF9za2lwX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGludCBpc19oZWFkZXIpIHsKKyAgaWYgKGlzX2hlYWRlcikgeworICAgIHVpbnQ4X3QgaXNfZW9oID0gdHJhbnNwb3J0X3BhcnNpbmctPmV4cGVjdF9jb250aW51YXRpb25fc3RyZWFtX2lkICE9IDA7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2U7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXI7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5vbl9oZWFkZXIgPSBza2lwX2hlYWRlcjsKKyAgICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLm9uX2hlYWRlcl91c2VyX2RhdGEgPSBOVUxMOworICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIuaXNfYm91bmRhcnkgPSBpc19lb2g7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5pc19lb2YgPQorICAgICAgICAodWludDhfdCkoaXNfZW9oID8gdHJhbnNwb3J0X3BhcnNpbmctPmhlYWRlcl9lb2YgOiAwKTsKKyAgfSBlbHNlIHsKKyAgICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyID0gc2tpcF9wYXJzZXI7CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZykgeworICBpbml0X3NraXBfZnJhbWVfcGFyc2VyKAorICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9PSBncnBjX2NodHRwMl9oZWFkZXJfcGFyc2VyX3BhcnNlKTsKK30KKworc3RhdGljIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIHVwZGF0ZV9pbmNvbWluZ193aW5kb3coCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcpIHsKKyAgdWludDMyX3QgaW5jb21pbmdfZnJhbWVfc2l6ZSA9IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplOworICBpZiAoaW5jb21pbmdfZnJhbWVfc2l6ZSA+IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cpIHsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwgImZyYW1lIG9mIHNpemUgJWQgb3ZlcmZsb3dzIGluY29taW5nIHdpbmRvdyBvZiAlZCIsCisgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cpOworICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOworICB9CisKKyAgaWYgKGluY29taW5nX2ZyYW1lX3NpemUgPiBzdHJlYW1fcGFyc2luZy0+aW5jb21pbmdfd2luZG93KSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJmcmFtZSBvZiBzaXplICVkIG92ZXJmbG93cyBpbmNvbWluZyB3aW5kb3cgb2YgJWQiLAorICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCisgICAgICAgICAgICBzdHJlYW1fcGFyc2luZy0+aW5jb21pbmdfd2luZG93KTsKKyAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKKyAgfQorCisgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfVFJBTlNQT1JUKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLCBpbmNvbWluZ193aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX2ZyYW1lX3NpemUpOworICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1NUUkVBTSgicGFyc2UiLCB0cmFuc3BvcnRfcGFyc2luZywgc3RyZWFtX3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgaW5jb21pbmdfZnJhbWVfc2l6ZSk7CisgIHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9ieXRlcyArPSBpbmNvbWluZ19mcmFtZV9zaXplOworCisgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKKworICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9kYXRhX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZyA9CisgICAgICBncnBjX2NodHRwMl9wYXJzaW5nX2xvb2t1cF9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7CisgIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGVyciA9IEdSUENfQ0hUVFAyX1BBUlNFX09LOworICBpZiAoIXN0cmVhbV9wYXJzaW5nIHx8IHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSkKKyAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOworICBpZiAoZXJyID09IEdSUENfQ0hUVFAyX1BBUlNFX09LKSB7CisgICAgZXJyID0gdXBkYXRlX2luY29taW5nX3dpbmRvdyhleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKKyAgfQorICBpZiAoZXJyID09IEdSUENfQ0hUVFAyX1BBUlNFX09LKSB7CisgICAgZXJyID0gZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgICAgICZzdHJlYW1fcGFyc2luZy0+ZGF0YV9wYXJzZXIsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyk7CisgIH0KKyAgc3dpdGNoIChlcnIpIHsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX1BBUlNFX09LOgorICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IHN0cmVhbV9wYXJzaW5nOworICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX3BhcnNlOworICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnN0cmVhbV9wYXJzaW5nLT5kYXRhX3BhcnNlcjsKKyAgICAgIHJldHVybiAxOworICAgIGNhc2UgR1JQQ19DSFRUUDJfU1RSRUFNX0VSUk9SOgorICAgICAgc3RyZWFtX3BhcnNpbmctPnJlY2VpdmVkX2Nsb3NlID0gMTsKKyAgICAgIHN0cmVhbV9wYXJzaW5nLT5zYXdfcnN0X3N0cmVhbSA9IDE7CisgICAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUjsKKyAgICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKAorICAgICAgICAgICZ0cmFuc3BvcnRfcGFyc2luZy0+cWJ1ZiwKKyAgICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SKSk7CisgICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOworICAgIGNhc2UgR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjoKKyAgICAgIHJldHVybiAwOworICB9CisgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV90aW1lb3V0KHZvaWQgKnApIHsgZ3ByX2ZyZWUocCk7IH0KKworc3RhdGljIHZvaWQgb25faW5pdGlhbF9oZWFkZXIodm9pZCAqdHAsIGdycGNfbWRlbGVtICptZCkgeworICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcgPSB0cDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nID0KKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW07CisKKyAgR1BSX1RJTUVSX0JFR0lOKCJvbl9pbml0aWFsX2hlYWRlciIsIDApOworCisgIEdQUl9BU1NFUlQoc3RyZWFtX3BhcnNpbmcpOworCisgIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoZ3ByX2xvZygKKyAgICAgIEdQUl9JTkZPLCAiSFRUUDolZDpIRFI6JXM6ICVzOiAlcyIsIHN0cmVhbV9wYXJzaW5nLT5pZCwKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQgPyAiQ0xJIiA6ICJTVlIiLAorICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+a2V5KSwgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKSk7CisKKyAgaWYgKG1kLT5rZXkgPT0gR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAmJiBtZCAhPSBHUlBDX01ERUxFTV9HUlBDX1NUQVRVU18wKSB7CisgICAgLyogVE9ETyhjdGlsbGVyKTogY2hlY2sgZm9yIGEgc3RhdHVzIGxpa2UgIiAwIiAqLworICAgIHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yID0gMTsKKyAgfQorCisgIGlmIChtZC0+a2V5ID09IEdSUENfTURTVFJfR1JQQ19USU1FT1VUKSB7CisgICAgZ3ByX3RpbWVzcGVjICpjYWNoZWRfdGltZW91dCA9IGdycGNfbWRlbGVtX2dldF91c2VyX2RhdGEobWQsIGZyZWVfdGltZW91dCk7CisgICAgaWYgKCFjYWNoZWRfdGltZW91dCkgeworICAgICAgLyogbm90IGFscmVhZHkgcGFyc2VkOiBwYXJzZSBpdCBub3csIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGF3YXkgKi8KKyAgICAgIGNhY2hlZF90aW1lb3V0ID0gZ3ByX21hbGxvYyhzaXplb2YoZ3ByX3RpbWVzcGVjKSk7CisgICAgICBpZiAoIWdycGNfY2h0dHAyX2RlY29kZV90aW1lb3V0KGdycGNfbWRzdHJfYXNfY19zdHJpbmcobWQtPnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3RpbWVvdXQpKSB7CisgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiSWdub3JpbmcgYmFkIHRpbWVvdXQgdmFsdWUgJyVzJyIsCisgICAgICAgICAgICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKTsKKyAgICAgICAgKmNhY2hlZF90aW1lb3V0ID0gZ3ByX2luZl9mdXR1cmUoR1BSX1RJTUVTUEFOKTsKKyAgICAgIH0KKyAgICAgIGdycGNfbWRlbGVtX3NldF91c2VyX2RhdGEobWQsIGZyZWVfdGltZW91dCwgY2FjaGVkX3RpbWVvdXQpOworICAgIH0KKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfc2V0X2RlYWRsaW5lKAorICAgICAgICAmc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclswXSwKKyAgICAgICAgZ3ByX3RpbWVfYWRkKGdwcl9ub3coR1BSX0NMT0NLX01PTk9UT05JQyksICpjYWNoZWRfdGltZW91dCkpOworICAgIEdSUENfTURFTEVNX1VOUkVGKG1kKTsKKyAgfSBlbHNlIHsKKyAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAorICAgICAgICAmc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclswXSwgbWQpOworICB9CisKKyAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfcGFyc2luZ19zZWVuX3N0cmVhbSh0cmFuc3BvcnRfcGFyc2luZywgc3RyZWFtX3BhcnNpbmcpOworCisgIEdQUl9USU1FUl9FTkQoIm9uX2luaXRpYWxfaGVhZGVyIiwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uX3RyYWlsaW5nX2hlYWRlcih2b2lkICp0cCwgZ3JwY19tZGVsZW0gKm1kKSB7CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZyA9IHRwOworICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcgPQorICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbTsKKworICBHUFJfVElNRVJfQkVHSU4oIm9uX3RyYWlsaW5nX2hlYWRlciIsIDApOworCisgIEdQUl9BU1NFUlQoc3RyZWFtX3BhcnNpbmcpOworCisgIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoZ3ByX2xvZygKKyAgICAgIEdQUl9JTkZPLCAiSFRUUDolZDpUUkw6JXM6ICVzOiAlcyIsIHN0cmVhbV9wYXJzaW5nLT5pZCwKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQgPyAiQ0xJIiA6ICJTVlIiLAorICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+a2V5KSwgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKSk7CisKKyAgaWYgKG1kLT5rZXkgPT0gR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAmJiBtZCAhPSBHUlBDX01ERUxFTV9HUlBDX1NUQVRVU18wKSB7CisgICAgLyogVE9ETyhjdGlsbGVyKTogY2hlY2sgZm9yIGEgc3RhdHVzIGxpa2UgIiAwIiAqLworICAgIHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yID0gMTsKKyAgfQorCisgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9hZGQoJnN0cmVhbV9wYXJzaW5nLT5tZXRhZGF0YV9idWZmZXJbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQpOworCisgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKKworICBHUFJfVElNRVJfRU5EKCJvbl90cmFpbGluZ19oZWFkZXIiLCAwKTsKK30KKworc3RhdGljIGludCBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBpbnQgaXNfY29udGludWF0aW9uKSB7CisgIHVpbnQ4X3QgaXNfZW9oID0gKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmCisgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfSEVBREVSUykgIT0gMDsKKyAgaW50IHZpYV9hY2NlcHQgPSAwOworICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmc7CisKKyAgLyogVE9ETyhjdGlsbGVyKTogd2hlbiB0byBpbmNyZW1lbnQgaGVhZGVyX2ZyYW1lc19yZWNlaXZlZD8gKi8KKworICBpZiAoaXNfZW9oKSB7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPmV4cGVjdF9jb250aW51YXRpb25fc3RyZWFtX2lkID0gMDsKKyAgfSBlbHNlIHsKKyAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgPQorICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkOworICB9CisKKyAgaWYgKCFpc19jb250aW51YXRpb24pIHsKKyAgICB0cmFuc3BvcnRfcGFyc2luZy0+aGVhZGVyX2VvZiA9ICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfU1RSRUFNKSAhPSAwOworICB9CisKKyAgLyogY291bGQgYmUgYSBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIG9yIGFuIGV4aXN0aW5nIGdycGNfY2h0dHAyX3N0cmVhbSAqLworICBzdHJlYW1fcGFyc2luZyA9IGdycGNfY2h0dHAyX3BhcnNpbmdfbG9va3VwX3N0cmVhbSgKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLCB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkKTsKKyAgaWYgKHN0cmVhbV9wYXJzaW5nID09IE5VTEwpIHsKKyAgICBpZiAoaXNfY29udGludWF0aW9uKSB7CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwKKyAgICAgICAgICAgICAgImdycGNfY2h0dHAyX3N0cmVhbSBkaXNiYW5kZWQgYmVmb3JlIENPTlRJTlVBVElPTiByZWNlaXZlZCIpOworICAgICAgcmV0dXJuIGluaXRfc2tpcF9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKKyAgICB9CisgICAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQpIHsKKyAgICAgIGlmICgodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCAmIDEpICYmCisgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCA8CisgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5uZXh0X3N0cmVhbV9pZCkgeworICAgICAgICAvKiB0aGlzIGlzIGFuIG9sZCAocHJvYmFibHkgY2FuY2VsbGVkKSBncnBjX2NodHRwMl9zdHJlYW0gKi8KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLAorICAgICAgICAgICAgICAgICJpZ25vcmluZyBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIGNyZWF0aW9uIG9uIGNsaWVudCIpOworICAgICAgfQorICAgICAgcmV0dXJuIGluaXRfc2tpcF9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKKyAgICB9IGVsc2UgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCA+CisgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkKSB7CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwKKyAgICAgICAgICAgICAgImlnbm9yaW5nIG91dCBvZiBvcmRlciBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIHJlcXVlc3Qgb24gc2VydmVyOyAiCisgICAgICAgICAgICAgICJsYXN0IGdycGNfY2h0dHAyX3N0cmVhbSAiCisgICAgICAgICAgICAgICJpZD0lZCwgbmV3IGdycGNfY2h0dHAyX3N0cmVhbSBpZD0lZCIsCisgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCwKKyAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7CisgICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOworICAgIH0gZWxzZSBpZiAoKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgJiAxKSA9PSAwKSB7CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwKKyAgICAgICAgICAgICAgImlnbm9yaW5nIGdycGNfY2h0dHAyX3N0cmVhbSB3aXRoIG5vbi1jbGllbnQgZ2VuZXJhdGVkIGluZGV4ICVkIiwKKyAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7CisgICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOworICAgIH0KKyAgICBzdHJlYW1fcGFyc2luZyA9IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPQorICAgICAgICBncnBjX2NodHRwMl9wYXJzaW5nX2FjY2VwdF9zdHJlYW0oCisgICAgICAgICAgICBleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOworICAgIGlmIChzdHJlYW1fcGFyc2luZyA9PSBOVUxMKSB7CisgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgImdycGNfY2h0dHAyX3N0cmVhbSBub3QgYWNjZXB0ZWQiKTsKKyAgICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMSk7CisgICAgfQorICAgIHZpYV9hY2NlcHQgPSAxOworICB9IGVsc2UgeworICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBzdHJlYW1fcGFyc2luZzsKKyAgfQorICBHUFJfQVNTRVJUKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwgJiYgKHZpYV9hY2NlcHQgPT0gMCB8fCB2aWFfYWNjZXB0ID09IDEpKTsKKyAgaWYgKHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAic2tpcHBpbmcgYWxyZWFkeSBjbG9zZWQgZ3JwY19jaHR0cDJfc3RyZWFtIGhlYWRlciIpOworICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBOVUxMOworICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMSk7CisgIH0KKyAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2U7CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyOworICBzd2l0Y2ggKHN0cmVhbV9wYXJzaW5nLT5oZWFkZXJfZnJhbWVzX3JlY2VpdmVkKSB7CisgICAgY2FzZSAwOgorICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5vbl9oZWFkZXIgPSBvbl9pbml0aWFsX2hlYWRlcjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIub25faGVhZGVyID0gb25fdHJhaWxpbmdfaGVhZGVyOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJ0b28gbWFueSBoZWFkZXIgZnJhbWVzIHJlY2VpdmVkIik7CisgICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOworICB9CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIub25faGVhZGVyX3VzZXJfZGF0YSA9IHRyYW5zcG9ydF9wYXJzaW5nOworICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLmlzX2JvdW5kYXJ5ID0gaXNfZW9oOworICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLmlzX2VvZiA9CisgICAgICAodWludDhfdCkoaXNfZW9oID8gdHJhbnNwb3J0X3BhcnNpbmctPmhlYWRlcl9lb2YgOiAwKTsKKyAgaWYgKCFpc19jb250aW51YXRpb24gJiYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9GTEFHX0hBU19QUklPUklUWSkpIHsKKyAgICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc2V0X2hhc19wcmlvcml0eSgmdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlcik7CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF93aW5kb3dfdXBkYXRlX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGludCBvayA9IEdSUENfQ0hUVFAyX1BBUlNFX09LID09IGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX2JlZ2luX2ZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zcG9ydF9wYXJzaW5nLT5zaW1wbGUud2luZG93X3VwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX2ZsYWdzKTsKKyAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpIHsKKyAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtID0gZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAorICAgICAgICB0cmFuc3BvcnRfcGFyc2luZywgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7CisgIH0KKyAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX3BhcnNlOworICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyX2RhdGEgPSAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS53aW5kb3dfdXBkYXRlOworICByZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9waW5nX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKKyAgaW50IG9rID0gR1JQQ19DSFRUUDJfUEFSU0VfT0sgPT0gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS5waW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MpOworICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyID0gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfcGFyc2U7CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnBpbmc7CisgIHJldHVybiBvazsKK30KKworc3RhdGljIGludCBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKKyAgaW50IG9rID0gR1JQQ19DSFRUUDJfUEFSU0VfT0sgPT0gZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS5yc3Rfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MpOworICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtID0gZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAorICAgICAgdHJhbnNwb3J0X3BhcnNpbmcsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOworICBpZiAoIXRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0pIHsKKyAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOworICB9CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlcl9wYXJzZTsKKyAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnRyYW5zcG9ydF9wYXJzaW5nLT5zaW1wbGUucnN0X3N0cmVhbTsKKyAgcmV0dXJuIG9rOworfQorCitzdGF0aWMgaW50IGluaXRfZ29hd2F5X3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGludCBvayA9IEdSUENfQ0hUVFAyX1BBUlNFX09LID09IGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyk7CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX3BhcnNlOworICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyX2RhdGEgPSAmdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV9wYXJzZXI7CisgIHJldHVybiBvazsKK30KKworc3RhdGljIGludCBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcigKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7CisgIGludCBvazsKKworICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCAhPSAwKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJzZXR0aW5ncyBmcmFtZSByZWNlaXZlZCBmb3IgZ3JwY19jaHR0cDJfc3RyZWFtICVkIiwKKyAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOworICAgIHJldHVybiAwOworICB9CisKKyAgb2sgPSBHUlBDX0NIVFRQMl9QQVJTRV9PSyA9PSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfYmVnaW5fZnJhbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+c2V0dGluZ3MpOworICBpZiAoIW9rKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmIEdSUENfQ0hUVFAyX0ZMQUdfQUNLKSB7CisgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCA9IDE7CisgICAgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X21heF9ieXRlcygKKyAgICAgICAgJnRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIudGFibGUsCisgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X3NlbnRfbWF4X3RhYmxlX3NpemUpOworICB9CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfcGFyc2U7CisgIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnNldHRpbmdzOworICByZXR1cm4gb2s7Cit9CisKKy8qCitzdGF0aWMgaW50IGlzX3dpbmRvd191cGRhdGVfbGVnYWwoaW50NjRfdCB3aW5kb3dfdXBkYXRlLCBpbnQ2NF90IHdpbmRvdykgeworICByZXR1cm4gd2luZG93ICsgd2luZG93X3VwZGF0ZSA8IE1BWF9XSU5ET1c7Cit9CisqLworCitzdGF0aWMgaW50IHBhcnNlX2ZyYW1lX3NsaWNlKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nID0KKyAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW07CisgIHN3aXRjaCAodHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nLCBzbGljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xhc3QpKSB7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9QQVJTRV9PSzoKKyAgICAgIGlmIChzdHJlYW1fcGFyc2luZykgeworICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKHRyYW5zcG9ydF9wYXJzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIGNhc2UgR1JQQ19DSFRUUDJfU1RSRUFNX0VSUk9SOgorICAgICAgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKKyAgICAgIGlmIChzdHJlYW1fcGFyc2luZykgeworICAgICAgICBzdHJlYW1fcGFyc2luZy0+c2F3X3JzdF9zdHJlYW0gPSAxOworICAgICAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUjsKKyAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCisgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnFidWYsCisgICAgICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1IpKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOworICAgIGNhc2UgR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjoKKyAgICAgIHJldHVybiAwOworICB9CisgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3OTU3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiCisKK2ludCBncnBjX2NodHRwMl9ncnBjX3N0YXR1c190b19odHRwMl9lcnJvcihncnBjX3N0YXR1c19jb2RlIHN0YXR1cykgeworICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgR1JQQ19TVEFUVVNfT0s6CisgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfTk9fRVJST1I7CisgICAgY2FzZSBHUlBDX1NUQVRVU19DQU5DRUxMRUQ6CisgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ0FOQ0VMOworICAgIGNhc2UgR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOgorICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0VOSEFOQ0VfWU9VUl9DQUxNOworICAgIGNhc2UgR1JQQ19TVEFUVVNfUEVSTUlTU0lPTl9ERU5JRUQ6CisgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfSU5BREVRVUFURV9TRUNVUklUWTsKKyAgICBjYXNlIEdSUENfU1RBVFVTX1VOQVZBSUxBQkxFOgorICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1JFRlVTRURfU1RSRUFNOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfSU5URVJOQUxfRVJST1I7CisgIH0KK30KKworZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9lcnJvcl90b19ncnBjX3N0YXR1cygKKyAgICBncnBjX2NodHRwMl9lcnJvcl9jb2RlIGVycm9yKSB7CisgIHN3aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX05PX0VSUk9SOgorICAgICAgLyogc2hvdWxkIG5ldmVyIGJlIHJlY2VpdmVkICovCisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfSU5URVJOQUw7CisgICAgY2FzZSBHUlBDX0NIVFRQMl9DQU5DRUw6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfQ0FOQ0VMTEVEOworICAgIGNhc2UgR1JQQ19DSFRUUDJfRU5IQU5DRV9ZT1VSX0NBTE06CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOworICAgIGNhc2UgR1JQQ19DSFRUUDJfSU5BREVRVUFURV9TRUNVUklUWToKKyAgICAgIHJldHVybiBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRDsKKyAgICBjYXNlIEdSUENfQ0hUVFAyX1JFRlVTRURfU1RSRUFNOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOQVZBSUxBQkxFOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfSU5URVJOQUw7CisgIH0KK30KKworZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9zdGF0dXNfdG9fZ3JwY19zdGF0dXMoaW50IHN0YXR1cykgeworICBzd2l0Y2ggKHN0YXR1cykgeworICAgIC8qIHRoZXNlIEhUVFAyIHN0YXR1cyBjb2RlcyBhcmUgY2FsbGVkIG91dCBleHBsaWNpdGx5IGluIHN0YXR1cy5wcm90byAqLworICAgIGNhc2UgMjAwOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX09LOworICAgIGNhc2UgNDAwOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0lOVkFMSURfQVJHVU1FTlQ7CisgICAgY2FzZSA0MDE6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfVU5BVVRIRU5USUNBVEVEOworICAgIGNhc2UgNDAzOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1BFUk1JU1NJT05fREVOSUVEOworICAgIGNhc2UgNDA0OgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX05PVF9GT1VORDsKKyAgICBjYXNlIDQwOToKKyAgICAgIHJldHVybiBHUlBDX1NUQVRVU19BQk9SVEVEOworICAgIGNhc2UgNDEyOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0ZBSUxFRF9QUkVDT05ESVRJT047CisgICAgY2FzZSA0Mjk6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOworICAgIGNhc2UgNDk5OgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0NBTkNFTExFRDsKKyAgICBjYXNlIDUwMDoKKyAgICAgIHJldHVybiBHUlBDX1NUQVRVU19VTktOT1dOOworICAgIGNhc2UgNTAxOgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOSU1QTEVNRU5URUQ7CisgICAgY2FzZSA1MDM6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfVU5BVkFJTEFCTEU7CisgICAgY2FzZSA1MDQ6CisgICAgICByZXR1cm4gR1JQQ19TVEFUVVNfREVBRExJTkVfRVhDRUVERUQ7CisgICAgLyogZXZlcnl0aGluZyBlbHNlIGlzIHVua25vd24gKi8KKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOS05PV047CisgIH0KK30KKworaW50IGdycGNfY2h0dHAyX2dycGNfc3RhdHVzX3RvX2h0dHAyX3N0YXR1cyhncnBjX3N0YXR1c19jb2RlIHN0YXR1cykgeworICByZXR1cm4gMjAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTJhNWY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX1NUQVRVU19DT05WRVJTSU9OX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9TVEFUVVNfQ09OVkVSU0lPTl9ICisKKyNpbmNsdWRlIDxncnBjL2dycGMuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiCisKKy8qIENvbnZlcnNpb24gb2YgZ3JwYyBzdGF0dXMgY29kZXMgdG8gaHR0cDIgZXJyb3IgY29kZXMgKGZvciBSU1RfU1RSRUFNKSAqLworZ3JwY19jaHR0cDJfZXJyb3JfY29kZSBncnBjX2NodHRwMl9ncnBjX3N0YXR1c190b19odHRwMl9lcnJvcigKKyAgICBncnBjX3N0YXR1c19jb2RlIHN0YXR1cyk7CitncnBjX3N0YXR1c19jb2RlIGdycGNfY2h0dHAyX2h0dHAyX2Vycm9yX3RvX2dycGNfc3RhdHVzKAorICAgIGdycGNfY2h0dHAyX2Vycm9yX2NvZGUgZXJyb3IpOworCisvKiBDb252ZXJzaW9uIG9mIEhUVFAgc3RhdHVzIGNvZGVzICg6c3RhdHVzKSB0byBncnBjIHN0YXR1cyBjb2RlcyAqLworZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9zdGF0dXNfdG9fZ3JwY19zdGF0dXMoaW50IHN0YXR1cyk7CitpbnQgZ3JwY19jaHR0cDJfZ3JwY19zdGF0dXNfdG9faHR0cDJfc3RhdHVzKGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzKTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfU1RBVFVTX0NPTlZFUlNJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZWQ0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX2xpc3RzLmMKQEAgLTAsMCArMSw0NDIgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKworI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHRnKS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbCkpKQorCisjZGVmaW5lIFNUUkVBTV9GUk9NX0dMT0JBTChzZykgXAorICAoKGdycGNfY2h0dHAyX3N0cmVhbSAqKSgoY2hhciAqKShzZyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfc3RyZWFtLCBnbG9iYWwpKSkKKworI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHR3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHR3KS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcpKSkKKworI2RlZmluZSBTVFJFQU1fRlJPTV9XUklUSU5HKHN3KSBcCisgICgoZ3JwY19jaHR0cDJfc3RyZWFtICopKChjaGFyICopKHN3KS1vZmZzZXRvZihncnBjX2NodHRwMl9zdHJlYW0sIHdyaXRpbmcpKSkKKworI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHRwKS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNpbmcpKSkKKworI2RlZmluZSBTVFJFQU1fRlJPTV9QQVJTSU5HKHNwKSBcCisgICgoZ3JwY19jaHR0cDJfc3RyZWFtICopKChjaGFyICopKHNwKS1vZmZzZXRvZihncnBjX2NodHRwMl9zdHJlYW0sIHBhcnNpbmcpKSkKKworLyogY29yZSBsaXN0IG1hbmFnZW1lbnQgKi8KKworc3RhdGljIGludCBzdHJlYW1fbGlzdF9lbXB0eShncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7CisgIHJldHVybiB0LT5saXN0c1tpZF0uaGVhZCA9PSBOVUxMOworfQorCitzdGF0aWMgaW50IHN0cmVhbV9saXN0X3BvcChncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKipzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fbGlzdF9pZCBpZCkgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPSB0LT5saXN0c1tpZF0uaGVhZDsKKyAgaWYgKHMpIHsKKyAgICBncnBjX2NodHRwMl9zdHJlYW0gKm5ld19oZWFkID0gcy0+bGlua3NbaWRdLm5leHQ7CisgICAgR1BSX0FTU0VSVChzLT5pbmNsdWRlZFtpZF0pOworICAgIGlmIChuZXdfaGVhZCkgeworICAgICAgdC0+bGlzdHNbaWRdLmhlYWQgPSBuZXdfaGVhZDsKKyAgICAgIG5ld19oZWFkLT5saW5rc1tpZF0ucHJldiA9IE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgIHQtPmxpc3RzW2lkXS5oZWFkID0gTlVMTDsKKyAgICAgIHQtPmxpc3RzW2lkXS50YWlsID0gTlVMTDsKKyAgICB9CisgICAgcy0+aW5jbHVkZWRbaWRdID0gMDsKKyAgfQorICAqc3RyZWFtID0gczsKKyAgcmV0dXJuIHMgIT0gMDsKK30KKworc3RhdGljIHZvaWQgc3RyZWFtX2xpc3RfcmVtb3ZlKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwgZ3JwY19jaHR0cDJfc3RyZWFtICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7CisgIEdQUl9BU1NFUlQocy0+aW5jbHVkZWRbaWRdKTsKKyAgcy0+aW5jbHVkZWRbaWRdID0gMDsKKyAgaWYgKHMtPmxpbmtzW2lkXS5wcmV2KSB7CisgICAgcy0+bGlua3NbaWRdLnByZXYtPmxpbmtzW2lkXS5uZXh0ID0gcy0+bGlua3NbaWRdLm5leHQ7CisgIH0gZWxzZSB7CisgICAgR1BSX0FTU0VSVCh0LT5saXN0c1tpZF0uaGVhZCA9PSBzKTsKKyAgICB0LT5saXN0c1tpZF0uaGVhZCA9IHMtPmxpbmtzW2lkXS5uZXh0OworICB9CisgIGlmIChzLT5saW5rc1tpZF0ubmV4dCkgeworICAgIHMtPmxpbmtzW2lkXS5uZXh0LT5saW5rc1tpZF0ucHJldiA9IHMtPmxpbmtzW2lkXS5wcmV2OworICB9IGVsc2UgeworICAgIHQtPmxpc3RzW2lkXS50YWlsID0gcy0+bGlua3NbaWRdLnByZXY7CisgIH0KK30KKworc3RhdGljIGJvb2wgc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2xpc3RfaWQgaWQpIHsKKyAgaWYgKHMtPmluY2x1ZGVkW2lkXSkgeworICAgIHN0cmVhbV9saXN0X3JlbW92ZSh0LCBzLCBpZCk7CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHN0cmVhbV9saXN0X2FkZF90YWlsKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqb2xkX3RhaWw7CisgIEdQUl9BU1NFUlQoIXMtPmluY2x1ZGVkW2lkXSk7CisgIG9sZF90YWlsID0gdC0+bGlzdHNbaWRdLnRhaWw7CisgIHMtPmxpbmtzW2lkXS5uZXh0ID0gTlVMTDsKKyAgcy0+bGlua3NbaWRdLnByZXYgPSBvbGRfdGFpbDsKKyAgaWYgKG9sZF90YWlsKSB7CisgICAgb2xkX3RhaWwtPmxpbmtzW2lkXS5uZXh0ID0gczsKKyAgfSBlbHNlIHsKKyAgICB0LT5saXN0c1tpZF0uaGVhZCA9IHM7CisgIH0KKyAgdC0+bGlzdHNbaWRdLnRhaWwgPSBzOworICBzLT5pbmNsdWRlZFtpZF0gPSAxOworfQorCitzdGF0aWMgYm9vbCBzdHJlYW1fbGlzdF9hZGQoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LCBncnBjX2NodHRwMl9zdHJlYW0gKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2xpc3RfaWQgaWQpIHsKKyAgaWYgKHMtPmluY2x1ZGVkW2lkXSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBzdHJlYW1fbGlzdF9hZGRfdGFpbCh0LCBzLCBpZCk7CisgIHJldHVybiB0cnVlOworfQorCisvKiB3cmFwcGVycyBmb3Igc3BlY2lhbGl6YXRpb25zICovCisKK2Jvb2wgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGFibGVfc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkICE9IDApOworICByZXR1cm4gc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUQUJMRSk7Cit9CisKK2ludCBncnBjX2NodHRwMl9saXN0X3BvcF93cml0YWJsZV9zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKipzdHJlYW1fd3JpdGluZykgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKKyAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRBQkxFKTsKKyAgaWYgKHIgIT0gMCkgeworICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOworICAgICpzdHJlYW1fd3JpdGluZyA9ICZzdHJlYW0tPndyaXRpbmc7CisgIH0KKyAgcmV0dXJuIHI7Cit9CisKK2Jvb2wgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfd3JpdGFibGVfc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICByZXR1cm4gc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUQUJMRSk7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZykgeworICBHUFJfQVNTRVJUKHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fV1JJVElORyhzdHJlYW1fd3JpdGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfV1JJVElORykpOworfQorCitpbnQgZ3JwY19jaHR0cDJfbGlzdF9oYXZlX3dyaXRpbmdfc3RyZWFtcygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcpIHsKKyAgcmV0dXJuICFzdHJlYW1fbGlzdF9lbXB0eShUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRJTkcpOworfQorCitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdGluZ19zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICoqc3RyZWFtX3dyaXRpbmcpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07CisgIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX1dSSVRJTkcodHJhbnNwb3J0X3dyaXRpbmcpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRJTkcpOworICBpZiAociAhPSAwKSB7CisgICAgKnN0cmVhbV93cml0aW5nID0gJnN0cmVhbS0+d3JpdGluZzsKKyAgfQorICByZXR1cm4gcjsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF93cml0dGVuX3N0cmVhbSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nKSB7CisgIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKKyAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpLAorICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUVEVOKTsKK30KKworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXR0ZW5fc3RyZWFtKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICoqc3RyZWFtX3dyaXRpbmcpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07CisgIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX1dSSVRJTkcodHJhbnNwb3J0X3dyaXRpbmcpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRURU4pOworICBpZiAociAhPSAwKSB7CisgICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7CisgICAgKnN0cmVhbV93cml0aW5nID0gJnN0cmVhbS0+d3JpdGluZzsKKyAgfQorICByZXR1cm4gcjsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkICE9IDApOworICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLAorICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLAorICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9VTkFOTk9VTkNFRF9JTkNPTUlOR19XSU5ET1dfQVZBSUxBQkxFKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X3JlbW92ZV91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBzdHJlYW1fbGlzdF9tYXliZV9yZW1vdmUoCisgICAgICBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCisgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCisgICAgICBHUlBDX0NIVFRQMl9MSVNUX1VOQU5OT1VOQ0VEX0lOQ09NSU5HX1dJTkRPV19BVkFJTEFCTEUpOworfQorCitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqKnN0cmVhbV9wYXJzaW5nKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOworICBpbnQgciA9CisgICAgICBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfVU5BTk5PVU5DRURfSU5DT01JTkdfV0lORE9XX0FWQUlMQUJMRSk7CisgIGlmIChyICE9IDApIHsKKyAgICAqc3RyZWFtX2dsb2JhbCA9ICZzdHJlYW0tPmdsb2JhbDsKKyAgICAqc3RyZWFtX3BhcnNpbmcgPSAmc3RyZWFtLT5wYXJzaW5nOworICB9CisgIHJldHVybiByOworfQorCit2b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZykgeworICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyksCisgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9QQVJTSU5HKHN0cmVhbV9wYXJzaW5nKSwKKyAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfUEFSU0lOR19TRUVOKTsKK30KKworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3BhcnNpbmdfc2Vlbl9zdHJlYW0oCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKipzdHJlYW1fcGFyc2luZykgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKKyAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyksICZzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfUEFSU0lOR19TRUVOKTsKKyAgaWYgKHIgIT0gMCkgeworICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOworICAgICpzdHJlYW1fcGFyc2luZyA9ICZzdHJlYW0tPnBhcnNpbmc7CisgIH0KKyAgcmV0dXJuIHI7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd2FpdGluZ19mb3JfY29uY3VycmVuY3koCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7CisgIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCisgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCisgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dBSVRJTkdfRk9SX0NPTkNVUlJFTkNZKTsKK30KKworaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dhaXRpbmdfZm9yX2NvbmN1cnJlbmN5KAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07CisgIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwgJnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XQUlUSU5HX0ZPUl9DT05DVVJSRU5DWSk7CisgIGlmIChyICE9IDApIHsKKyAgICAqc3RyZWFtX2dsb2JhbCA9ICZzdHJlYW0tPmdsb2JhbDsKKyAgfQorICByZXR1cm4gcjsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKKyAgc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0hFQ0tfUkVBRF9PUFMpOworfQorCitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2hlY2tfcmVhZF9vcHMoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCkgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKKyAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX0NIRUNLX1JFQURfT1BTKTsKKyAgaWYgKHIgIT0gMCkgeworICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOworICB9CisgIHJldHVybiByOworfQorCit2b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZykgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbSA9IFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpOworICBpZiAoIXN0cmVhbS0+aW5jbHVkZWRbR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HX1NUQUxMRURfQllfVFJBTlNQT1JUXSkgeworICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoJnN0cmVhbS0+Z2xvYmFsLCAiY2h0dHAyX3dyaXRpbmdfc3RhbGxlZCIpOworICB9CisgIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HX1NUQUxMRURfQllfVFJBTlNQT1JUKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2ZsdXNoX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKKyAgICBib29sIGlzX3dpbmRvd19hdmFpbGFibGUpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07CisgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gVFJBTlNQT1JUX0ZST01fV1JJVElORyh0cmFuc3BvcnRfd3JpdGluZyk7CisgIHdoaWxlIChzdHJlYW1fbGlzdF9wb3AodHJhbnNwb3J0LCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfV1JJVElOR19TVEFMTEVEX0JZX1RSQU5TUE9SVCkpIHsKKyAgICBpZiAoaXNfd2luZG93X2F2YWlsYWJsZSkgeworICAgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKCZ0cmFuc3BvcnQtPmdsb2JhbCwgJnN0cmVhbS0+Z2xvYmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtLT53cml0aW5nKTsKKyAgICB9CisgICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCAmc3RyZWFtLT5nbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaHR0cDJfd3JpdGluZ19zdGFsbGVkIik7CisgIH0KK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9zdGFsbGVkX2J5X3RyYW5zcG9ydCgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nKSB7CisgIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKKyAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpLAorICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9TVEFMTEVEX0JZX1RSQU5TUE9SVCk7Cit9CisKK2ludCBncnBjX2NodHRwMl9saXN0X3BvcF9zdGFsbGVkX2J5X3RyYW5zcG9ydCgKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOworICBpbnQgciA9IHN0cmVhbV9saXN0X3BvcChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksICZzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfU1RBTExFRF9CWV9UUkFOU1BPUlQpOworICBpZiAociAhPSAwKSB7CisgICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7CisgIH0KKyAgcmV0dXJuIHI7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfc3RhbGxlZF9ieV90cmFuc3BvcnQoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7CisgIHN0cmVhbV9saXN0X21heWJlX3JlbW92ZShUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1NUQUxMRURfQllfVFJBTlNQT1JUKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKKyAgc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKSwKKyAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1BBUlNJTkcpOworfQorCitpbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2xvc2VkX3dhaXRpbmdfZm9yX3BhcnNpbmcoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCkgeworICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKKyAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX0NMT1NFRF9XQUlUSU5HX0ZPUl9QQVJTSU5HKTsKKyAgaWYgKHIgIT0gMCkgeworICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOworICB9CisgIHJldHVybiByOworfQorCit2b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCisgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgeworICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLAorICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLAorICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9DTE9TRURfV0FJVElOR19GT1JfV1JJVElORyk7Cit9CisKK2ludCBncnBjX2NodHRwMl9saXN0X3BvcF9jbG9zZWRfd2FpdGluZ19mb3Jfd3JpdGluZygKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKSB7CisgIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOworICBpbnQgciA9IHN0cmVhbV9saXN0X3BvcChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksICZzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1dSSVRJTkcpOworICBpZiAociAhPSAwKSB7CisgICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7CisgIH0KKyAgcmV0dXJuIHI7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfcmVnaXN0ZXJfc3RyZWFtKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbSAqcykgeworICBzdHJlYW1fbGlzdF9hZGRfdGFpbCh0LCBzLCBHUlBDX0NIVFRQMl9MSVNUX0FMTF9TVFJFQU1TKTsKK30KKworaW50IGdycGNfY2h0dHAyX3VucmVnaXN0ZXJfc3RyZWFtKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMpIHsKKyAgc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKHQsIHMsIEdSUENfQ0hUVFAyX0xJU1RfQUxMX1NUUkVBTVMpOworICByZXR1cm4gc3RyZWFtX2xpc3RfZW1wdHkodCwgR1JQQ19DSFRUUDJfTElTVF9BTExfU1RSRUFNUyk7Cit9CisKK2ludCBncnBjX2NodHRwMl9oYXNfc3RyZWFtcyhncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKKyAgcmV0dXJuICFzdHJlYW1fbGlzdF9lbXB0eSh0LCBHUlBDX0NIVFRQMl9MSVNUX0FMTF9TVFJFQU1TKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9mb3JfYWxsX3N0cmVhbXMoCisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAorICAgIHZvaWQgKCpjYikoZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtICpzOworICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCk7CisgIGZvciAocyA9IHQtPmxpc3RzW0dSUENfQ0hUVFAyX0xJU1RfQUxMX1NUUkVBTVNdLmhlYWQ7IHMgIT0gTlVMTDsKKyAgICAgICBzID0gcy0+bGlua3NbR1JQQ19DSFRUUDJfTElTVF9BTExfU1RSRUFNU10ubmV4dCkgeworICAgIGNiKHRyYW5zcG9ydF9nbG9iYWwsIHVzZXJfZGF0YSwgJnMtPmdsb2JhbCk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjEzODkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKwordm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2luaXQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluaXRpYWxfY2FwYWNpdHkpIHsKKyAgR1BSX0FTU0VSVChpbml0aWFsX2NhcGFjaXR5ID4gMSk7CisgIG1hcC0+a2V5cyA9IGdwcl9tYWxsb2Moc2l6ZW9mKHVpbnQzMl90KSAqIGluaXRpYWxfY2FwYWNpdHkpOworICBtYXAtPnZhbHVlcyA9IGdwcl9tYWxsb2Moc2l6ZW9mKHZvaWQgKikgKiBpbml0aWFsX2NhcGFjaXR5KTsKKyAgbWFwLT5jb3VudCA9IDA7CisgIG1hcC0+ZnJlZSA9IDA7CisgIG1hcC0+Y2FwYWNpdHkgPSBpbml0aWFsX2NhcGFjaXR5OworfQorCit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVzdHJveShncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXApIHsKKyAgZ3ByX2ZyZWUobWFwLT5rZXlzKTsKKyAgZ3ByX2ZyZWUobWFwLT52YWx1ZXMpOworfQorCitzdGF0aWMgc2l6ZV90IGNvbXBhY3QodWludDMyX3QgKmtleXMsIHZvaWQgKip2YWx1ZXMsIHNpemVfdCBjb3VudCkgeworICBzaXplX3QgaSwgb3V0OworCisgIGZvciAoaSA9IDAsIG91dCA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgaWYgKHZhbHVlc1tpXSkgeworICAgICAga2V5c1tvdXRdID0ga2V5c1tpXTsKKyAgICAgIHZhbHVlc1tvdXRdID0gdmFsdWVzW2ldOworICAgICAgb3V0Kys7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG91dDsKK30KKwordm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2FkZChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsIHVpbnQzMl90IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpIHsKKyAgc2l6ZV90IGNvdW50ID0gbWFwLT5jb3VudDsKKyAgc2l6ZV90IGNhcGFjaXR5ID0gbWFwLT5jYXBhY2l0eTsKKyAgdWludDMyX3QgKmtleXMgPSBtYXAtPmtleXM7CisgIHZvaWQgKip2YWx1ZXMgPSBtYXAtPnZhbHVlczsKKworICBHUFJfQVNTRVJUKGNvdW50ID09IDAgfHwga2V5c1tjb3VudCAtIDFdIDwga2V5KTsKKyAgR1BSX0FTU0VSVCh2YWx1ZSk7CisKKyAgaWYgKGNvdW50ID09IGNhcGFjaXR5KSB7CisgICAgaWYgKG1hcC0+ZnJlZSA+IGNhcGFjaXR5IC8gNCkgeworICAgICAgY291bnQgPSBjb21wYWN0KGtleXMsIHZhbHVlcywgY291bnQpOworICAgICAgbWFwLT5mcmVlID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgLyogcmVzaXplIHdoZW4gbGVzcyB0aGFuIDI1JSBvZiB0aGUgdGFibGUgaXMgZnJlZSwgYmVjYXVzZSBjb21wYWN0aW9uCisgICAgICAgICB3b24ndCBoZWxwIG11Y2ggKi8KKyAgICAgIG1hcC0+Y2FwYWNpdHkgPSBjYXBhY2l0eSA9IDMgKiBjYXBhY2l0eSAvIDI7CisgICAgICBtYXAtPmtleXMgPSBrZXlzID0gZ3ByX3JlYWxsb2Moa2V5cywgY2FwYWNpdHkgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgIG1hcC0+dmFsdWVzID0gdmFsdWVzID0gZ3ByX3JlYWxsb2ModmFsdWVzLCBjYXBhY2l0eSAqIHNpemVvZih2b2lkICopKTsKKyAgICB9CisgIH0KKworICBrZXlzW2NvdW50XSA9IGtleTsKKyAgdmFsdWVzW2NvdW50XSA9IHZhbHVlOworICBtYXAtPmNvdW50ID0gY291bnQgKyAxOworfQorCit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfbW92ZV9pbnRvKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqZHN0KSB7CisgIC8qIGlmIHNyYyBpcyBlbXB0eSB3ZSBkb250IG5lZWQgdG8gZG8gYW55dGhpbmcgKi8KKyAgaWYgKHNyYy0+Y291bnQgPT0gc3JjLT5mcmVlKSB7CisgICAgcmV0dXJuOworICB9CisgIC8qIGlmIGRzdCBpcyBlbXB0eSB3ZSBzaW1wbHkgbmVlZCB0byBzd2FwICovCisgIGlmIChkc3QtPmNvdW50ID09IGRzdC0+ZnJlZSkgeworICAgIEdQUl9TV0FQKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAsICpzcmMsICpkc3QpOworICAgIHJldHVybjsKKyAgfQorICAvKiB0aGUgZmlyc3QgZWxlbWVudCBvZiBzcmMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxhc3Qgb2YgZHN0Li4uCisgICAqIGhvd2V2ZXIgdGhlIG1hcHMgbWF5IG5lZWQgY29tcGFjdGluZyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBob2xkICovCisgIGlmIChzcmMtPmtleXNbMF0gPD0gZHN0LT5rZXlzW2RzdC0+Y291bnQgLSAxXSkgeworICAgIHNyYy0+Y291bnQgPSBjb21wYWN0KHNyYy0+a2V5cywgc3JjLT52YWx1ZXMsIHNyYy0+Y291bnQpOworICAgIHNyYy0+ZnJlZSA9IDA7CisgICAgZHN0LT5jb3VudCA9IGNvbXBhY3QoZHN0LT5rZXlzLCBkc3QtPnZhbHVlcywgZHN0LT5jb3VudCk7CisgICAgZHN0LT5mcmVlID0gMDsKKyAgfQorICBHUFJfQVNTRVJUKHNyYy0+a2V5c1swXSA+IGRzdC0+a2V5c1tkc3QtPmNvdW50IC0gMV0pOworICAvKiBpZiBkc3QgZG9lc24ndCBoYXZlIGNhcGFjaXR5LCByZXNpemUgKi8KKyAgaWYgKGRzdC0+Y291bnQgKyBzcmMtPmNvdW50ID4gZHN0LT5jYXBhY2l0eSkgeworICAgIGRzdC0+Y2FwYWNpdHkgPSBHUFJfTUFYKGRzdC0+Y2FwYWNpdHkgKiAzIC8gMiwgZHN0LT5jb3VudCArIHNyYy0+Y291bnQpOworICAgIGRzdC0+a2V5cyA9IGdwcl9yZWFsbG9jKGRzdC0+a2V5cywgZHN0LT5jYXBhY2l0eSAqIHNpemVvZih1aW50MzJfdCkpOworICAgIGRzdC0+dmFsdWVzID0gZ3ByX3JlYWxsb2MoZHN0LT52YWx1ZXMsIGRzdC0+Y2FwYWNpdHkgKiBzaXplb2Yodm9pZCAqKSk7CisgIH0KKyAgbWVtY3B5KGRzdC0+a2V5cyArIGRzdC0+Y291bnQsIHNyYy0+a2V5cywgc3JjLT5jb3VudCAqIHNpemVvZih1aW50MzJfdCkpOworICBtZW1jcHkoZHN0LT52YWx1ZXMgKyBkc3QtPmNvdW50LCBzcmMtPnZhbHVlcywgc3JjLT5jb3VudCAqIHNpemVvZih2b2lkICopKTsKKyAgZHN0LT5jb3VudCArPSBzcmMtPmNvdW50OworICBkc3QtPmZyZWUgKz0gc3JjLT5mcmVlOworICBzcmMtPmNvdW50ID0gMDsKKyAgc3JjLT5mcmVlID0gMDsKK30KKworc3RhdGljIHZvaWQgKipmaW5kKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KSB7CisgIHNpemVfdCBtaW5faWR4ID0gMDsKKyAgc2l6ZV90IG1heF9pZHggPSBtYXAtPmNvdW50OworICBzaXplX3QgbWlkX2lkeDsKKyAgdWludDMyX3QgKmtleXMgPSBtYXAtPmtleXM7CisgIHZvaWQgKip2YWx1ZXMgPSBtYXAtPnZhbHVlczsKKyAgdWludDMyX3QgbWlkX2tleTsKKworICBpZiAobWF4X2lkeCA9PSAwKSByZXR1cm4gTlVMTDsKKworICB3aGlsZSAobWluX2lkeCA8IG1heF9pZHgpIHsKKyAgICAvKiBmaW5kIHRoZSBtaWRwb2ludCwgYXZvaWRpbmcgb3ZlcmZsb3cgKi8KKyAgICBtaWRfaWR4ID0gbWluX2lkeCArICgobWF4X2lkeCAtIG1pbl9pZHgpIC8gMik7CisgICAgbWlkX2tleSA9IGtleXNbbWlkX2lkeF07CisKKyAgICBpZiAobWlkX2tleSA8IGtleSkgeworICAgICAgbWluX2lkeCA9IG1pZF9pZHggKyAxOworICAgIH0gZWxzZSBpZiAobWlkX2tleSA+IGtleSkgeworICAgICAgbWF4X2lkeCA9IG1pZF9pZHg7CisgICAgfSBlbHNlIC8qIG1pZF9rZXkgPT0ga2V5ICovCisgICAgeworICAgICAgcmV0dXJuICZ2YWx1ZXNbbWlkX2lkeF07CisgICAgfQorICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgKmdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVsZXRlKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KSB7CisgIHZvaWQgKipwdmFsdWUgPSBmaW5kKG1hcCwga2V5KTsKKyAgdm9pZCAqb3V0ID0gTlVMTDsKKyAgaWYgKHB2YWx1ZSAhPSBOVUxMKSB7CisgICAgb3V0ID0gKnB2YWx1ZTsKKyAgICAqcHZhbHVlID0gTlVMTDsKKyAgICBtYXAtPmZyZWUgKz0gKG91dCAhPSBOVUxMKTsKKyAgICAvKiByZWNvZ25pemUgY29tcGxldGUgZW1wdHluZXNzIGFuZCBlbnN1cmUgd2UgY2FuIHNraXAKKyAgICAgKiBkZWZyYWdtZW50YXRpb24gbGF0ZXIgKi8KKyAgICBpZiAobWFwLT5mcmVlID09IG1hcC0+Y291bnQpIHsKKyAgICAgIG1hcC0+ZnJlZSA9IG1hcC0+Y291bnQgPSAwOworICAgIH0KKyAgfQorICByZXR1cm4gb3V0OworfQorCit2b2lkICpncnBjX2NodHRwMl9zdHJlYW1fbWFwX2ZpbmQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLCB1aW50MzJfdCBrZXkpIHsKKyAgdm9pZCAqKnB2YWx1ZSA9IGZpbmQobWFwLCBrZXkpOworICByZXR1cm4gcHZhbHVlICE9IE5VTEwgPyAqcHZhbHVlIDogTlVMTDsKK30KKworc2l6ZV90IGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZShncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXApIHsKKyAgcmV0dXJuIG1hcC0+Y291bnQgLSBtYXAtPmZyZWU7Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9mb3JfZWFjaChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmYpKHZvaWQgKnVzZXJfZGF0YSwgdWludDMyX3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKSB7CisgIHNpemVfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBtYXAtPmNvdW50OyBpKyspIHsKKyAgICBpZiAobWFwLT52YWx1ZXNbaV0pIHsKKyAgICAgIGYodXNlcl9kYXRhLCBtYXAtPmtleXNbaV0sIG1hcC0+dmFsdWVzW2ldKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlODU4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9TVFJFQU1fTUFQX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9TVFJFQU1fTUFQX0gKKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyogRGF0YSBzdHJ1Y3R1cmUgdG8gbWFwIGEgdWludDMyX3QgdG8gYSBkYXRhIG9iamVjdCAocmVwcmVzZW50ZWQgYnkgYSB2b2lkKikKKworICAgUmVwcmVzZW50ZWQgYXMgYSBzb3J0ZWQgYXJyYXkgb2Yga2V5cywgYW5kIGEgY29ycmVzcG9uZGluZyBhcnJheSBvZiB2YWx1ZXMuCisgICBMb29rdXBzIGFyZSBwZXJmb3JtZWQgd2l0aCBiaW5hcnkgc2VhcmNoLgorICAgQWRkcyBhcmUgcmVzdHJpY3RlZCB0byBzdHJpY3RseSBoaWdoZXIga2V5cyB0aGFuIHByZXZpb3VzbHkgc2VlbiAodGhpcyBpcworICAgZ3VhcmFudGVlZCBieSBodHRwMikuICovCit0eXBlZGVmIHN0cnVjdCB7CisgIHVpbnQzMl90ICprZXlzOworICB2b2lkICoqdmFsdWVzOworICBzaXplX3QgY291bnQ7CisgIHNpemVfdCBmcmVlOworICBzaXplX3QgY2FwYWNpdHk7Cit9IGdycGNfY2h0dHAyX3N0cmVhbV9tYXA7CisKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9pbml0KGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0aWFsX2NhcGFjaXR5KTsKK3ZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9kZXN0cm95KGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCk7CisKKy8qIEFkZCBhIG5ldyBrZXk6IGdpdmVuIGh0dHAyIHNlbWFudGljcywgbmV3IGtleXMgbXVzdCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuCisgICBleGlzdGluZyBrZXlzIC0gdGhpcyBpcyBhc3NlcnRlZCAqLwordm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2FkZChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsIHVpbnQzMl90IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpOworCisvKiBEZWxldGUgYW4gZXhpc3Rpbmcga2V5IC0gcmV0dXJucyB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGtleSBpZiBpdCBleGlzdGVkLAorICAgb3IgTlVMTCBvdGhlcndpc2UgKi8KK3ZvaWQgKmdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVsZXRlKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KTsKKworLyogTW92ZSBhbGwgZWxlbWVudHMgb2Ygc3JjIGludG8gZHN0ICovCit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfbW92ZV9pbnRvKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqZHN0KTsKKworLyogUmV0dXJuIGFuIGV4aXN0aW5nIGtleSwgb3IgTlVMTCBpZiBpdCBkb2VzIG5vdCBleGlzdCAqLwordm9pZCAqZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9maW5kKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KTsKKworLyogSG93IG1hbnkgKHBvcHVsYXRlZCkgZW50cmllcyBhcmUgaW4gdGhlIHN0cmVhbSBtYXA/ICovCitzaXplX3QgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9zaXplKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCk7CisKKy8qIENhbGxiYWNrIG9uIGVhY2ggc3RyZWFtICovCit2b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZm9yX2VhY2goZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmKSh2b2lkICp1c2VyX2RhdGEsIHVpbnQzMl90IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSk7CisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX1NUUkVBTV9NQVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDViOWRhOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdGltZW91dF9lbmNvZGluZy5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCisKK3N0YXRpYyBpbnQ2NF90IHJvdW5kX3VwKGludDY0X3QgeCwgaW50NjRfdCBkaXZpc29yKSB7CisgIHJldHVybiAoeCAvIGRpdmlzb3IgKyAoeCAlIGRpdmlzb3IgIT0gMCkpICogZGl2aXNvcjsKK30KKworLyogcm91bmQgYW4gaW50ZWdlciB1cCB0byB0aGUgbmV4dCB2YWx1ZSB3aXRoIHRocmVlIHNpZ25pZmljYW50IGZpZ3VyZXMgKi8KK3N0YXRpYyBpbnQ2NF90IHJvdW5kX3VwX3RvX3RocmVlX3NpZ19maWdzKGludDY0X3QgeCkgeworICBpZiAoeCA8IDEwMDApIHJldHVybiB4OworICBpZiAoeCA8IDEwMDAwKSByZXR1cm4gcm91bmRfdXAoeCwgMTApOworICBpZiAoeCA8IDEwMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMCk7CisgIGlmICh4IDwgMTAwMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMDApOworICBpZiAoeCA8IDEwMDAwMDAwKSByZXR1cm4gcm91bmRfdXAoeCwgMTAwMDApOworICBpZiAoeCA8IDEwMDAwMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMDAwMCk7CisgIGlmICh4IDwgMTAwMDAwMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMDAwMDApOworICByZXR1cm4gcm91bmRfdXAoeCwgMTAwMDAwMDApOworfQorCisvKiBlbmNvZGUgb3VyIG1pbmltdW0gdmlhYmxlIHRpbWVvdXQgdmFsdWUgKi8KK3N0YXRpYyB2b2lkIGVuY190aW55KGNoYXIgKmJ1ZmZlcikgeyBtZW1jcHkoYnVmZmVyLCAiMW4iLCAzKTsgfQorCitzdGF0aWMgdm9pZCBlbmNfZXh0KGNoYXIgKmJ1ZmZlciwgaW50NjRfdCB2YWx1ZSwgY2hhciBleHQpIHsKKyAgaW50IG4gPSBpbnQ2NF90dG9hKHZhbHVlLCBidWZmZXIpOworICBidWZmZXJbbl0gPSBleHQ7CisgIGJ1ZmZlcltuICsgMV0gPSAwOworfQorCitzdGF0aWMgdm9pZCBlbmNfc2Vjb25kcyhjaGFyICpidWZmZXIsIGludDY0X3Qgc2VjKSB7CisgIGlmIChzZWMgJSAzNjAwID09IDApIHsKKyAgICBlbmNfZXh0KGJ1ZmZlciwgc2VjIC8gMzYwMCwgJ0gnKTsKKyAgfSBlbHNlIGlmIChzZWMgJSA2MCA9PSAwKSB7CisgICAgZW5jX2V4dChidWZmZXIsIHNlYyAvIDYwLCAnTScpOworICB9IGVsc2UgeworICAgIGVuY19leHQoYnVmZmVyLCBzZWMsICdTJyk7CisgIH0KK30KKworc3RhdGljIHZvaWQgZW5jX25hbm9zKGNoYXIgKmJ1ZmZlciwgaW50NjRfdCB4KSB7CisgIHggPSByb3VuZF91cF90b190aHJlZV9zaWdfZmlncyh4KTsKKyAgaWYgKHggPCAxMDAwMDApIHsKKyAgICBpZiAoeCAlIDEwMDAgPT0gMCkgeworICAgICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwLCAndScpOworICAgIH0gZWxzZSB7CisgICAgICBlbmNfZXh0KGJ1ZmZlciwgeCwgJ24nKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoeCA8IDEwMDAwMDAwMCkgeworICAgIGlmICh4ICUgMTAwMDAwMCA9PSAwKSB7CisgICAgICBlbmNfZXh0KGJ1ZmZlciwgeCAvIDEwMDAwMDAsICdtJyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGVuY19leHQoYnVmZmVyLCB4IC8gMTAwMCwgJ3UnKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoeCA8IDEwMDAwMDAwMDApIHsKKyAgICBlbmNfZXh0KGJ1ZmZlciwgeCAvIDEwMDAwMDAsICdtJyk7CisgIH0gZWxzZSB7CisgICAgLyogbm90ZSB0aGF0IHRoaXMgaXMgb25seSBldmVyIGNhbGxlZCB3aXRoIHRpbWVzIG9mIGxlc3MgdGhhbiBvbmUgc2Vjb25kLAorICAgICAgIHNvIGlmIHdlIHJlYWNoIGhlcmUgdGhlIHRpbWUgbXVzdCBoYXZlIGJlZW4gcm91bmRlZCB1cCB0byBhIHdob2xlIHNlY29uZAorICAgICAgIChhbmQgbm8gbW9yZSkgKi8KKyAgICBtZW1jcHkoYnVmZmVyLCAiMVMiLCAzKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBlbmNfbWljcm9zKGNoYXIgKmJ1ZmZlciwgaW50NjRfdCB4KSB7CisgIHggPSByb3VuZF91cF90b190aHJlZV9zaWdfZmlncyh4KTsKKyAgaWYgKHggPCAxMDAwMDApIHsKKyAgICBpZiAoeCAlIDEwMDAgPT0gMCkgeworICAgICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwLCAnbScpOworICAgIH0gZWxzZSB7CisgICAgICBlbmNfZXh0KGJ1ZmZlciwgeCwgJ3UnKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoeCA8IDEwMDAwMDAwMCkgeworICAgIGlmICh4ICUgMTAwMDAwMCA9PSAwKSB7CisgICAgICBlbmNfZXh0KGJ1ZmZlciwgeCAvIDEwMDAwMDAsICdTJyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGVuY19leHQoYnVmZmVyLCB4IC8gMTAwMCwgJ20nKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwMDAwLCAnUycpOworICB9Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfZW5jb2RlX3RpbWVvdXQoZ3ByX3RpbWVzcGVjIHRpbWVvdXQsIGNoYXIgKmJ1ZmZlcikgeworICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CisgICAgZW5jX3RpbnkoYnVmZmVyKTsKKyAgfSBlbHNlIGlmICh0aW1lb3V0LnR2X3NlYyA9PSAwKSB7CisgICAgZW5jX25hbm9zKGJ1ZmZlciwgdGltZW91dC50dl9uc2VjKTsKKyAgfSBlbHNlIGlmICh0aW1lb3V0LnR2X3NlYyA8IDEwMDAgJiYgdGltZW91dC50dl9uc2VjICE9IDApIHsKKyAgICBlbmNfbWljcm9zKGJ1ZmZlciwKKyAgICAgICAgICAgICAgIChpbnQ2NF90KSh0aW1lb3V0LnR2X3NlYyAqIDEwMDAwMDApICsKKyAgICAgICAgICAgICAgICAgICAodGltZW91dC50dl9uc2VjIC8gMTAwMCArICh0aW1lb3V0LnR2X25zZWMgJSAxMDAwICE9IDApKSk7CisgIH0gZWxzZSB7CisgICAgZW5jX3NlY29uZHMoYnVmZmVyLCB0aW1lb3V0LnR2X3NlYyArICh0aW1lb3V0LnR2X25zZWMgIT0gMCkpOworICB9Cit9CisKK3N0YXRpYyBpbnQgaXNfYWxsX3doaXRlc3BhY2UoY29uc3QgY2hhciAqcCkgeworICB3aGlsZSAoKnAgPT0gJyAnKSBwKys7CisgIHJldHVybiAqcCA9PSAwOworfQorCitpbnQgZ3JwY19jaHR0cDJfZGVjb2RlX3RpbWVvdXQoY29uc3QgY2hhciAqYnVmZmVyLCBncHJfdGltZXNwZWMgKnRpbWVvdXQpIHsKKyAgaW50MzJfdCB4ID0gMDsKKyAgY29uc3QgdWludDhfdCAqcCA9IChjb25zdCB1aW50OF90ICopYnVmZmVyOworICBpbnQgaGF2ZV9kaWdpdCA9IDA7CisgIC8qIHNraXAgd2hpdGVzcGFjZSAqLworICBmb3IgKDsgKnAgPT0gJyAnOyBwKyspCisgICAgOworICAvKiBkZWNvZGUgbnVtZXJpYyBwYXJ0ICovCisgIGZvciAoOyAqcCA+PSAnMCcgJiYgKnAgPD0gJzknOyBwKyspIHsKKyAgICBpbnQzMl90IGRpZ2l0ID0gKGludDMyX3QpKCpwIC0gKHVpbnQ4X3QpJzAnKTsKKyAgICBoYXZlX2RpZ2l0ID0gMTsKKyAgICAvKiBzcGVjIGFsbG93cyBtYXguIDggZGlnaXRzLCBidXQgd2UgYWxsb3cgdmFsdWVzIHVwIHRvIDEsMDAwLDAwMCwwMDAgKi8KKyAgICBpZiAoeCA+PSAoMTAwICogMTAwMCAqIDEwMDApKSB7CisgICAgICBpZiAoeCAhPSAoMTAwICogMTAwMCAqIDEwMDApIHx8IGRpZ2l0ICE9IDApIHsKKyAgICAgICAgKnRpbWVvdXQgPSBncHJfaW5mX2Z1dHVyZShHUFJfVElNRVNQQU4pOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICB9CisgICAgeCA9IHggKiAxMCArIGRpZ2l0OworICB9CisgIGlmICghaGF2ZV9kaWdpdCkgcmV0dXJuIDA7CisgIC8qIHNraXAgd2hpdGVzcGFjZSAqLworICBmb3IgKDsgKnAgPT0gJyAnOyBwKyspCisgICAgOworICAvKiBkZWNvZGUgdW5pdCBzcGVjaWZpZXIgKi8KKyAgc3dpdGNoICgqcCkgeworICAgIGNhc2UgJ24nOgorICAgICAgKnRpbWVvdXQgPSBncHJfdGltZV9mcm9tX25hbm9zKHgsIEdQUl9USU1FU1BBTik7CisgICAgICBicmVhazsKKyAgICBjYXNlICd1JzoKKyAgICAgICp0aW1lb3V0ID0gZ3ByX3RpbWVfZnJvbV9taWNyb3MoeCwgR1BSX1RJTUVTUEFOKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ20nOgorICAgICAgKnRpbWVvdXQgPSBncHJfdGltZV9mcm9tX21pbGxpcyh4LCBHUFJfVElNRVNQQU4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnUyc6CisgICAgICAqdGltZW91dCA9IGdwcl90aW1lX2Zyb21fc2Vjb25kcyh4LCBHUFJfVElNRVNQQU4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnTSc6CisgICAgICAqdGltZW91dCA9IGdwcl90aW1lX2Zyb21fbWludXRlcyh4LCBHUFJfVElNRVNQQU4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnSCc6CisgICAgICAqdGltZW91dCA9IGdwcl90aW1lX2Zyb21faG91cnMoeCwgR1BSX1RJTUVTUEFOKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gMDsKKyAgfQorICBwKys7CisgIHJldHVybiBpc19hbGxfd2hpdGVzcGFjZSgoY29uc3QgY2hhciAqKXApOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM2NGY5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX1RJTUVPVVRfRU5DT0RJTkdfSAorI2RlZmluZSBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX1RJTUVPVVRfRU5DT0RJTkdfSAorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9zdHJpbmcuaCIKKworI2RlZmluZSBHUlBDX0NIVFRQMl9USU1FT1VUX0VOQ09ERV9NSU5fQlVGU0laRSAoR1BSX0xUT0FfTUlOX0JVRlNJWkUgKyAxKQorCisvKiBFbmNvZGUvZGVjb2RlIHRpbWVvdXRzIHRvIHRoZSBHUlBDIG92ZXIgSFRUUDIgZm9ybWF0OworICAgZW5jb2RpbmcgbWF5IHJvdW5kIHVwIGFyYml0cmFyaWx5ICovCit2b2lkIGdycGNfY2h0dHAyX2VuY29kZV90aW1lb3V0KGdwcl90aW1lc3BlYyB0aW1lb3V0LCBjaGFyICpidWZmZXIpOworaW50IGdycGNfY2h0dHAyX2RlY29kZV90aW1lb3V0KGNvbnN0IGNoYXIgKmJ1ZmZlciwgZ3ByX3RpbWVzcGVjICp0aW1lb3V0KTsKKworI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfVElNRU9VVF9FTkNPRElOR19IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcyMWQwNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYwpAQCAtMCwwICsxLDY1IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5oIgorCit1aW50MzJfdCBncnBjX2NodHRwMl9ocGFja192YXJpbnRfbGVuZ3RoKHVpbnQzMl90IHRhaWxfdmFsdWUpIHsKKyAgaWYgKHRhaWxfdmFsdWUgPCAoMSA8PCA3KSkgeworICAgIHJldHVybiAyOworICB9IGVsc2UgaWYgKHRhaWxfdmFsdWUgPCAoMSA8PCAxNCkpIHsKKyAgICByZXR1cm4gMzsKKyAgfSBlbHNlIGlmICh0YWlsX3ZhbHVlIDwgKDEgPDwgMjEpKSB7CisgICAgcmV0dXJuIDQ7CisgIH0gZWxzZSBpZiAodGFpbF92YWx1ZSA8ICgxIDw8IDI4KSkgeworICAgIHJldHVybiA1OworICB9IGVsc2UgeworICAgIHJldHVybiA2OworICB9Cit9CisKK3ZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfd3JpdGVfdmFyaW50X3RhaWwodWludDMyX3QgdGFpbF92YWx1ZSwgdWludDhfdCogdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0YWlsX2xlbmd0aCkgeworICBzd2l0Y2ggKHRhaWxfbGVuZ3RoKSB7CisgICAgY2FzZSA1OgorICAgICAgdGFyZ2V0WzRdID0gKHVpbnQ4X3QpKCh0YWlsX3ZhbHVlID4+IDI4KSB8IDB4ODApOworICAgIGNhc2UgNDoKKyAgICAgIHRhcmdldFszXSA9ICh1aW50OF90KSgodGFpbF92YWx1ZSA+PiAyMSkgfCAweDgwKTsKKyAgICBjYXNlIDM6CisgICAgICB0YXJnZXRbMl0gPSAodWludDhfdCkoKHRhaWxfdmFsdWUgPj4gMTQpIHwgMHg4MCk7CisgICAgY2FzZSAyOgorICAgICAgdGFyZ2V0WzFdID0gKHVpbnQ4X3QpKCh0YWlsX3ZhbHVlID4+IDcpIHwgMHg4MCk7CisgICAgY2FzZSAxOgorICAgICAgdGFyZ2V0WzBdID0gKHVpbnQ4X3QpKCh0YWlsX3ZhbHVlKSB8IDB4ODApOworICB9CisgIHRhcmdldFt0YWlsX2xlbmd0aCAtIDFdICY9IDB4N2Y7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmggYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0MmVhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaApAQCAtMCwwICsxLDc1IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIEdSUENfQ09SRV9FWFRfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfVkFSSU5UX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9UUkFOU1BPUlRfQ0hUVFAyX1RSQU5TUE9SVF9WQVJJTlRfSAorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KKworLyogSGVscGVycyBmb3IgaHBhY2sgdmFyaW50IGVuY29kaW5nICovCisKKy8qIGxlbmd0aCBvZiBhIHZhbHVlIHRoYXQgbmVlZHMgdmFyaW50IHRhaWwgZW5jb2RpbmcgKGl0J3MgYmlnZ2VyIHRoYW4gY2FuIGJlCisgICBiaXRwYWNrZWQgaW50byB0aGUgb3Bjb2RlIGJ5dGUpIC0gcmV0dXJuZWQgdmFsdWUgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUKKyAgIG9wY29kZSBieXRlICovCit1aW50MzJfdCBncnBjX2NodHRwMl9ocGFja192YXJpbnRfbGVuZ3RoKHVpbnQzMl90IHRhaWxfdmFsdWUpOworCit2b2lkIGdycGNfY2h0dHAyX2hwYWNrX3dyaXRlX3ZhcmludF90YWlsKHVpbnQzMl90IHRhaWxfdmFsdWUsIHVpbnQ4X3QqIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdGFpbF9sZW5ndGgpOworCisvKiBtYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIGJpdHBhY2tlZCB3aXRoIHRoZSBvcGNvZGUgaWYgdGhlIG9wY29kZSBoYXMgYQorICAgcHJlZml4CisgICBvZiBsZW5ndGggcHJlZml4X2JpdHMgKi8KKyNkZWZpbmUgR1JQQ19DSFRUUDJfTUFYX0lOX1BSRUZJWChwcmVmaXhfYml0cykgXAorICAoKHVpbnQzMl90KSgoMSA8PCAoOCAtIChwcmVmaXhfYml0cykpKSAtIDEpKQorCisvKiBsZW5ndGggcmVxdWlyZWQgdG8gYml0cGFjayBhIHZhbHVlICovCisjZGVmaW5lIEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgobiwgcHJlZml4X2JpdHMpIFwKKyAgKChuKSA8IEdSUENfQ0hUVFAyX01BWF9JTl9QUkVGSVgocHJlZml4X2JpdHMpICAgXAorICAgICAgID8gMXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgOiBncnBjX2NodHRwMl9ocGFja192YXJpbnRfbGVuZ3RoKCAgICAgICAgIFwKKyAgICAgICAgICAgICAobiktR1JQQ19DSFRUUDJfTUFYX0lOX1BSRUZJWChwcmVmaXhfYml0cykpKQorCisjZGVmaW5lIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVChuLCBwcmVmaXhfYml0cywgcHJlZml4X29yLCB0YXJnZXQsIGxlbmd0aCkgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDhfdCogdGd0ID0gdGFyZ2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChsZW5ndGgpID09IDF1KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAodGd0KVswXSA9ICh1aW50OF90KSgocHJlZml4X29yKSB8IChuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAodGd0KVswXSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKHByZWZpeF9vcikgfCAodWludDhfdClHUlBDX0NIVFRQMl9NQVhfSU5fUFJFRklYKHByZWZpeF9iaXRzKTsgICAgICBcCisgICAgICBncnBjX2NodHRwMl9ocGFja193cml0ZV92YXJpbnRfdGFpbCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKG4pLUdSUENfQ0hUVFAyX01BWF9JTl9QUkVGSVgocHJlZml4X2JpdHMpLCAodGd0KSArIDEsIChsZW5ndGgpLTEpOyBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCisKKyNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX1ZBUklOVF9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDU4ODZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYwpAQCAtMCwwICsxLDM1MCBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHR0cDJfZXJyb3JzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3Byb2ZpbGluZy90aW1lcnMuaCIKKworc3RhdGljIHZvaWQgZmluYWxpemVfb3V0YnVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZyk7CisKK2ludCBncnBjX2NodHRwMl91bmxvY2tpbmdfY2hlY2tfd3JpdGVzKAorICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAorICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywgaW50IGlzX3BhcnNpbmcpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nOworCisgIEdQUl9USU1FUl9CRUdJTigiZ3JwY19jaHR0cDJfdW5sb2NraW5nX2NoZWNrX3dyaXRlcyIsIDApOworCisgIC8qIHNpbXBsZSB3cml0ZXMgYXJlIHF1ZXVlZCB0byBxYnVmLCBhbmQgZmx1c2hlZCBoZXJlICovCisgIGdwcl9zbGljZV9idWZmZXJfc3dhcCgmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1ZiwgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOworICBHUFJfQVNTRVJUKHRyYW5zcG9ydF9nbG9iYWwtPnFidWYuY291bnQgPT0gMCk7CisKKyAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9zZXRfbWF4X3RhYmxlX3NpemUoCisgICAgICAmdHJhbnNwb3J0X3dyaXRpbmctPmhwYWNrX2NvbXByZXNzb3IsCisgICAgICB0cmFuc3BvcnRfZ2xvYmFsLT5zZXR0aW5nc1tHUlBDX1BFRVJfU0VUVElOR1NdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19IRUFERVJfVEFCTEVfU0laRV0pOworCisgIGlmICh0cmFuc3BvcnRfZ2xvYmFsLT5kaXJ0aWVkX2xvY2FsX3NldHRpbmdzICYmCisgICAgICAhdHJhbnNwb3J0X2dsb2JhbC0+c2VudF9sb2NhbF9zZXR0aW5ncyAmJiAhaXNfcGFyc2luZykgeworICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKAorICAgICAgICAmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1ZiwKKyAgICAgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfY3JlYXRlKAorICAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19TRU5UX1NFVFRJTkdTXSwKKyAgICAgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPnNldHRpbmdzW0dSUENfTE9DQUxfU0VUVElOR1NdLAorICAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+Zm9yY2Vfc2VuZF9zZXR0aW5ncywgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTKSk7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+Zm9yY2Vfc2VuZF9zZXR0aW5ncyA9IDA7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+ZGlydGllZF9sb2NhbF9zZXR0aW5ncyA9IDA7CisgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2VudF9sb2NhbF9zZXR0aW5ncyA9IDE7CisgIH0KKworICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfVFJBTlNQT1JUKCJ3cml0ZSIsIHRyYW5zcG9ydF93cml0aW5nLCBvdXRnb2luZ193aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbCwgb3V0Z29pbmdfd2luZG93KTsKKyAgYm9vbCBpc193aW5kb3dfYXZhaWxhYmxlID0gdHJhbnNwb3J0X3dyaXRpbmctPm91dGdvaW5nX3dpbmRvdyA+IDA7CisgIGdycGNfY2h0dHAyX2xpc3RfZmx1c2hfd3JpdGluZ19zdGFsbGVkX2J5X3RyYW5zcG9ydCgKKyAgICAgIGV4ZWNfY3R4LCB0cmFuc3BvcnRfd3JpdGluZywgaXNfd2luZG93X2F2YWlsYWJsZSk7CisKKyAgLyogZm9yIGVhY2ggZ3JwY19jaHR0cDJfc3RyZWFtIHRoYXQncyBiZWNvbWUgd3JpdGFibGUsIGZyYW1lIGl0J3MgZGF0YQorICAgICAoYWNjb3JkaW5nIHRvIGF2YWlsYWJsZSB3aW5kb3cgc2l6ZXMpIGFuZCBhZGQgdG8gdGhlIG91dHB1dCBidWZmZXIgKi8KKyAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXRhYmxlX3N0cmVhbSgKKyAgICAgIHRyYW5zcG9ydF9nbG9iYWwsIHRyYW5zcG9ydF93cml0aW5nLCAmc3RyZWFtX2dsb2JhbCwgJnN0cmVhbV93cml0aW5nKSkgeworICAgIGJvb2wgc2VudF9pbml0aWFsX21ldGFkYXRhID0gc3RyZWFtX3dyaXRpbmctPnNlbnRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgICBib29sIGJlY29tZV93cml0YWJsZSA9IGZhbHNlOworCisgICAgc3RyZWFtX3dyaXRpbmctPmlkID0gc3RyZWFtX2dsb2JhbC0+aWQ7CisgICAgc3RyZWFtX3dyaXRpbmctPnJlYWRfY2xvc2VkID0gc3RyZWFtX2dsb2JhbC0+cmVhZF9jbG9zZWQ7CisKKyAgICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKCJ3cml0ZSIsIHRyYW5zcG9ydF93cml0aW5nLCBzdHJlYW1fd3JpdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3dpbmRvdywgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3dpbmRvdyk7CisKKyAgICBpZiAoIXNlbnRfaW5pdGlhbF9tZXRhZGF0YSAmJiBzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEpIHsKKyAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEgPQorICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YTsKKyAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSA9IE5VTEw7CisgICAgICBiZWNvbWVfd3JpdGFibGUgPSB0cnVlOworICAgICAgc2VudF9pbml0aWFsX21ldGFkYXRhID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHNlbnRfaW5pdGlhbF9tZXRhZGF0YSkgeworICAgICAgaWYgKHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZSAhPSBOVUxMKSB7CisgICAgICAgIGdwcl9zbGljZSBoZHIgPSBncHJfc2xpY2VfbWFsbG9jKDUpOworICAgICAgICB1aW50OF90ICpwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihoZHIpOworICAgICAgICB1aW50MzJfdCBsZW4gPSBzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2UtPmxlbmd0aDsKKyAgICAgICAgR1BSX0FTU0VSVChzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID09IE5VTEwpOworICAgICAgICBwWzBdID0gKHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZS0+ZmxhZ3MgJgorICAgICAgICAgICAgICAgIEdSUENfV1JJVEVfSU5URVJOQUxfQ09NUFJFU1MpICE9IDA7CisgICAgICAgIHBbMV0gPSAodWludDhfdCkobGVuID4+IDI0KTsKKyAgICAgICAgcFsyXSA9ICh1aW50OF90KShsZW4gPj4gMTYpOworICAgICAgICBwWzNdID0gKHVpbnQ4X3QpKGxlbiA+PiA4KTsKKyAgICAgICAgcFs0XSA9ICh1aW50OF90KShsZW4pOworICAgICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIsIGhkcik7CisgICAgICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2UtPmxlbmd0aCA+IDApIHsKKyAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID0gc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0cmVhbV93cml0aW5nLT5zdHJlYW1fZmV0Y2hlZCA9IDA7CisgICAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZSA9IE5VTEw7CisgICAgICB9CisgICAgICBpZiAoKHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgIT0gTlVMTCB8fAorICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlci5sZW5ndGggPiAwKSAmJgorICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5vdXRnb2luZ193aW5kb3cgPiAwKSB7CisgICAgICAgIGlmICh0cmFuc3BvcnRfd3JpdGluZy0+b3V0Z29pbmdfd2luZG93ID4gMCkgeworICAgICAgICAgIGJlY29tZV93cml0YWJsZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmcpOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSkgeworICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSA9CisgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhOworICAgICAgICBzdHJlYW1fZ2xvYmFsLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhID0gTlVMTDsKKyAgICAgICAgYmVjb21lX3dyaXRhYmxlID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXN0cmVhbV9nbG9iYWwtPnJlYWRfY2xvc2VkICYmCisgICAgICAgIHN0cmVhbV9nbG9iYWwtPnVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3Jfd3JpdGluZyA+IDEwMjQpIHsKKyAgICAgIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9TVFJFQU0oIndyaXRlIiwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm91bmNlX3dpbmRvdywgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2Zvcl93cml0aW5nKTsKKyAgICAgIGJlY29tZV93cml0YWJsZSA9IHRydWU7CisgICAgfQorCisgICAgaWYgKGJlY29tZV93cml0YWJsZSkgeworICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdHJlYW0odHJhbnNwb3J0X3dyaXRpbmcsIHN0cmVhbV93cml0aW5nKTsKKyAgICB9IGVsc2UgeworICAgICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsLCAiY2h0dHAyX3dyaXRpbmciKTsKKyAgICB9CisgIH0KKworICAvKiBpZiB0aGUgZ3JwY19jaHR0cDJfdHJhbnNwb3J0IGlzIHJlYWR5IHRvIHNlbmQgYSB3aW5kb3cgdXBkYXRlLCBkbyBzbyBoZXJlCisgICAgIGFsc287IDMvNCBpcyBhIG1hZ2ljIG51bWJlciB0aGF0IHdpbGwgbGlrZWx5IGdldCB0dW5lZCBzb29uICovCisgIGlmICh0cmFuc3BvcnRfZ2xvYmFsLT5hbm5vdW5jZV9pbmNvbWluZ193aW5kb3cgPiAwKSB7CisgICAgdWludDMyX3QgYW5ub3VuY2VkID0gKHVpbnQzMl90KUdQUl9NSU4oCisgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPmFubm91bmNlX2luY29taW5nX3dpbmRvdywgVUlOVDMyX01BWCk7CisgICAgR1JQQ19DSFRUUDJfRkxPV19ERUJJVF9UUkFOU1BPUlQoIndyaXRlIiwgdHJhbnNwb3J0X2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdW5jZV9pbmNvbWluZ193aW5kb3csIGFubm91bmNlZCk7CisgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9jcmVhdGUoMCwgYW5ub3VuY2VkKSk7CisgIH0KKworICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl91bmxvY2tpbmdfY2hlY2tfd3JpdGVzIiwgMCk7CisKKyAgcmV0dXJuIHRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYuY291bnQgPiAwIHx8CisgICAgICAgICBncnBjX2NodHRwMl9saXN0X2hhdmVfd3JpdGluZ19zdHJlYW1zKHRyYW5zcG9ydF93cml0aW5nKTsKK30KKwordm9pZCBncnBjX2NodHRwMl9wZXJmb3JtX3dyaXRlcygKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAorICAgIGdycGNfZW5kcG9pbnQgKmVuZHBvaW50KSB7CisgIEdQUl9BU1NFUlQodHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zi5jb3VudCA+IDAgfHwKKyAgICAgICAgICAgICBncnBjX2NodHRwMl9saXN0X2hhdmVfd3JpdGluZ19zdHJlYW1zKHRyYW5zcG9ydF93cml0aW5nKSk7CisKKyAgZmluYWxpemVfb3V0YnVmKGV4ZWNfY3R4LCB0cmFuc3BvcnRfd3JpdGluZyk7CisKKyAgR1BSX0FTU0VSVChlbmRwb2ludCk7CisKKyAgaWYgKHRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYuY291bnQgPiAwKSB7CisgICAgZ3JwY19lbmRwb2ludF93cml0ZShleGVjX2N0eCwgZW5kcG9pbnQsICZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5kb25lX2NiKTsKKyAgfSBlbHNlIHsKKyAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsICZ0cmFuc3BvcnRfd3JpdGluZy0+ZG9uZV9jYiwgdHJ1ZSwgTlVMTCk7CisgIH0KK30KKworc3RhdGljIHZvaWQgZmluYWxpemVfb3V0YnVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZykgeworICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmc7CisKKyAgR1BSX1RJTUVSX0JFR0lOKCJmaW5hbGl6ZV9vdXRidWYiLCAwKTsKKworICB3aGlsZSAoCisgICAgICBncnBjX2NodHRwMl9saXN0X3BvcF93cml0aW5nX3N0cmVhbSh0cmFuc3BvcnRfd3JpdGluZywgJnN0cmVhbV93cml0aW5nKSkgeworICAgIHVpbnQzMl90IG1heF9vdXRnb2luZyA9CisgICAgICAgICh1aW50MzJfdClHUFJfTUlOKEdSUENfQ0hUVFAyX01BWF9QQVlMT0FEX0xFTkdUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR1BSX01JTihzdHJlYW1fd3JpdGluZy0+b3V0Z29pbmdfd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF93cml0aW5nLT5vdXRnb2luZ193aW5kb3cpKTsKKyAgICAvKiBzZW5kIGluaXRpYWwgbWV0YWRhdGEgaWYgaXQncyBhdmFpbGFibGUgKi8KKyAgICBpZiAoc3RyZWFtX3dyaXRpbmctPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSAhPSBOVUxMKSB7CisgICAgICBncnBjX2NodHRwMl9lbmNvZGVfaGVhZGVyKAorICAgICAgICAgICZ0cmFuc3BvcnRfd3JpdGluZy0+aHBhY2tfY29tcHJlc3Nvciwgc3RyZWFtX3dyaXRpbmctPmlkLAorICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEsIDAsICZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmKTsKKyAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEgPSBOVUxMOworICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbnRfaW5pdGlhbF9tZXRhZGF0YSA9IDE7CisgICAgfQorICAgIC8qIHNlbmQgYW55IHdpbmRvdyB1cGRhdGVzICovCisgICAgaWYgKHN0cmVhbV93cml0aW5nLT5hbm5vdW5jZV93aW5kb3cgPiAwICYmCisgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEgPT0gTlVMTCkgeworICAgICAgdWludDMyX3QgYW5ub3VuY2UgPSBzdHJlYW1fd3JpdGluZy0+YW5ub3VuY2Vfd2luZG93OworICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCisgICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYsCisgICAgICAgICAgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9jcmVhdGUoc3RyZWFtX3dyaXRpbmctPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5hbm5vdW5jZV93aW5kb3cpKTsKKyAgICAgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfU1RSRUFNKCJ3cml0ZSIsIHRyYW5zcG9ydF93cml0aW5nLCBzdHJlYW1fd3JpdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm91bmNlX3dpbmRvdywgYW5ub3VuY2UpOworICAgICAgc3RyZWFtX3dyaXRpbmctPmFubm91bmNlX3dpbmRvdyA9IDA7CisgICAgfQorICAgIC8qIGZldGNoIGFueSBib2R5IGJ5dGVzICovCisgICAgd2hpbGUgKCFzdHJlYW1fd3JpdGluZy0+ZmV0Y2hpbmcgJiYgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSAmJgorICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlci5sZW5ndGggPCBtYXhfb3V0Z29pbmcgJiYKKyAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnN0cmVhbV9mZXRjaGVkIDwKKyAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UtPmxlbmd0aCkgeworICAgICAgaWYgKGdycGNfYnl0ZV9zdHJlYW1fbmV4dChleGVjX2N0eCwgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV93cml0aW5nLT5mZXRjaGluZ19zbGljZSwgbWF4X291dGdvaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX3dyaXRpbmctPmZpbmlzaGVkX2ZldGNoKSkgeworICAgICAgICBzdHJlYW1fd3JpdGluZy0+c3RyZWFtX2ZldGNoZWQgKz0KKyAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgoc3RyZWFtX3dyaXRpbmctPmZldGNoaW5nX3NsaWNlKTsKKyAgICAgICAgaWYgKHN0cmVhbV93cml0aW5nLT5zdHJlYW1fZmV0Y2hlZCA9PQorICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZS0+bGVuZ3RoKSB7CisgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+ZmV0Y2hpbmdfc2xpY2UpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc3RyZWFtX3dyaXRpbmctPmZldGNoaW5nID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgLyogc2VuZCBhbnkgYm9keSBieXRlcyAqLworICAgIGlmIChzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlci5sZW5ndGggPiAwKSB7CisgICAgICBpZiAobWF4X291dGdvaW5nID4gMCkgeworICAgICAgICB1aW50MzJfdCBzZW5kX2J5dGVzID0gKHVpbnQzMl90KUdQUl9NSU4oCisgICAgICAgICAgICBtYXhfb3V0Z29pbmcsIHN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLmxlbmd0aCk7CisgICAgICAgIGludCBpc19sYXN0X2RhdGFfZnJhbWUgPQorICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSA9PSBOVUxMICYmCisgICAgICAgICAgICBzZW5kX2J5dGVzID09IHN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLmxlbmd0aDsKKyAgICAgICAgaW50IGlzX2xhc3RfZnJhbWUgPSBpc19sYXN0X2RhdGFfZnJhbWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19tZXRhZGF0YV9iYXRjaF9pc19lbXB0eSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEpOworICAgICAgICBncnBjX2NodHRwMl9lbmNvZGVfZGF0YSgKKyAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5pZCwgJnN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLAorICAgICAgICAgICAgc2VuZF9ieXRlcywgaXNfbGFzdF9mcmFtZSwgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOworICAgICAgICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1NUUkVBTSgid3JpdGUiLCB0cmFuc3BvcnRfd3JpdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmcsIG91dGdvaW5nX3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9ieXRlcyk7CisgICAgICAgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfVFJBTlNQT1JUKCJ3cml0ZSIsIHRyYW5zcG9ydF93cml0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRnb2luZ193aW5kb3csIHNlbmRfYnl0ZXMpOworICAgICAgICBpZiAoaXNfbGFzdF9mcmFtZSkgeworICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhID0gTlVMTDsKKyAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VudF90cmFpbGluZ19tZXRhZGF0YSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX2xhc3RfZGF0YV9mcmFtZSkgeworICAgICAgICAgIEdQUl9BU1NFUlQoc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSA9PSBOVUxMKTsKKyAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VudF9tZXNzYWdlID0gMTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlmICh0cmFuc3BvcnRfd3JpdGluZy0+b3V0Z29pbmdfd2luZG93ID09IDApIHsKKyAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdGFsbGVkX2J5X3RyYW5zcG9ydCh0cmFuc3BvcnRfd3JpdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZyk7CisgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXR0ZW5fc3RyZWFtKHRyYW5zcG9ydF93cml0aW5nLCBzdHJlYW1fd3JpdGluZyk7CisgICAgICB9CisgICAgfQorICAgIC8qIHNlbmQgdHJhaWxpbmcgbWV0YWRhdGEgaWYgaXQncyBhdmFpbGFibGUgYW5kIHdlJ3JlIHJlYWR5IGZvciBpdCAqLworICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID09IE5VTEwgJiYKKyAgICAgICAgc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIubGVuZ3RoID09IDAgJiYKKyAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgIT0gTlVMTCkgeworICAgICAgaWYgKGdycGNfbWV0YWRhdGFfYmF0Y2hfaXNfZW1wdHkoCisgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhKSkgeworICAgICAgICBncnBjX2NodHRwMl9lbmNvZGVfZGF0YShzdHJlYW1fd3JpdGluZy0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlciwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ3JwY19jaHR0cDJfZW5jb2RlX2hlYWRlcigmdHJhbnNwb3J0X3dyaXRpbmctPmhwYWNrX2NvbXByZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmKTsKKyAgICAgIH0KKyAgICAgIGlmICghdHJhbnNwb3J0X3dyaXRpbmctPmlzX2NsaWVudCAmJiAhc3RyZWFtX3dyaXRpbmctPnJlYWRfY2xvc2VkKSB7CisgICAgICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKCZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5pZCwgR1JQQ19DSFRUUDJfTk9fRVJST1IpKTsKKyAgICAgIH0KKyAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhID0gTlVMTDsKKyAgICAgIHN0cmVhbV93cml0aW5nLT5zZW50X3RyYWlsaW5nX21ldGFkYXRhID0gMTsKKyAgICB9CisgICAgLyogaWYgdGhlcmUncyBtb3JlIHRvIHdyaXRlLCB0aGVuIGxvb3AsIG90aGVyd2lzZSBwcmVwYXJlIHRvIGZpbmlzaCB0aGUKKyAgICAgKiB3cml0ZSAqLworICAgIGlmICgoc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIubGVuZ3RoID4gMCB8fAorICAgICAgICAgKHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgJiYgIXN0cmVhbV93cml0aW5nLT5mZXRjaGluZykpICYmCisgICAgICAgIHN0cmVhbV93cml0aW5nLT5vdXRnb2luZ193aW5kb3cgPiAwKSB7CisgICAgICBpZiAodHJhbnNwb3J0X3dyaXRpbmctPm91dGdvaW5nX3dpbmRvdyA+IDApIHsKKyAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdHJlYW0odHJhbnNwb3J0X3dyaXRpbmcsIHN0cmVhbV93cml0aW5nKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X3dyaXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmcpOworICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0dGVuX3N0cmVhbSh0cmFuc3BvcnRfd3JpdGluZywgc3RyZWFtX3dyaXRpbmcpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0dGVuX3N0cmVhbSh0cmFuc3BvcnRfd3JpdGluZywgc3RyZWFtX3dyaXRpbmcpOworICAgIH0KKyAgfQorCisgIEdQUl9USU1FUl9FTkQoImZpbmFsaXplX291dGJ1ZiIsIDApOworfQorCit2b2lkIGdycGNfY2h0dHAyX2NsZWFudXBfd3JpdGluZygKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKKyAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcpIHsKKyAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nOworICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsOworCisgIHdoaWxlIChncnBjX2NodHRwMl9saXN0X3BvcF93cml0dGVuX3N0cmVhbSgKKyAgICAgIHRyYW5zcG9ydF9nbG9iYWwsIHRyYW5zcG9ydF93cml0aW5nLCAmc3RyZWFtX2dsb2JhbCwgJnN0cmVhbV93cml0aW5nKSkgeworICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VudF9pbml0aWFsX21ldGFkYXRhKSB7CisgICAgICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoCisgICAgICAgICAgZXhlY19jdHgsICZzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGFfZmluaXNoZWQsIDEpOworICAgIH0KKyAgICBpZiAoc3RyZWFtX3dyaXRpbmctPnNlbnRfbWVzc2FnZSkgeworICAgICAgR1BSX0FTU0VSVChzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID09IE5VTEwpOworICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAorICAgICAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlX2ZpbmlzaGVkLCAxKTsKKyAgICAgIHN0cmVhbV93cml0aW5nLT5zZW50X21lc3NhZ2UgPSAwOworICAgIH0KKyAgICBpZiAoc3RyZWFtX3dyaXRpbmctPnNlbnRfdHJhaWxpbmdfbWV0YWRhdGEpIHsKKyAgICAgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKKyAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQsIDEpOworICAgIH0KKyAgICBpZiAoc3RyZWFtX3dyaXRpbmctPnNlbnRfdHJhaWxpbmdfbWV0YWRhdGEpIHsKKyAgICAgIGdycGNfY2h0dHAyX21hcmtfc3RyZWFtX2Nsb3NlZChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdHJhbnNwb3J0X2dsb2JhbC0+aXNfY2xpZW50LCAxKTsKKyAgICB9CisgICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsLCAiY2h0dHAyX3dyaXRpbmciKTsKKyAgfQorICBncHJfc2xpY2VfYnVmZmVyX3Jlc2V0X2FuZF91bnJlZigmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zik7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaHR0cC9wYXJzZXIuYyBiL3NyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jCmluZGV4IDVkNGUzMDQuLjI3ODJhZDcgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jCisrKyBiL3NyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KIAorZXh0ZXJuIGludCBncnBjX2h0dHBfdHJhY2U7CisKIHN0YXRpYyBjaGFyICpidWYyc3RyKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewogICBjaGFyICpvdXQgPSBncHJfbWFsbG9jKGxlbmd0aCArIDEpOwogICBtZW1jcHkob3V0LCBidWZmZXIsIGxlbmd0aCk7CkBAIC03Miw3ICs3NCw3IEBACiAgIHJldHVybiAxOwogCiBlcnJvcjoKLSAgZ3ByX2xvZyhHUFJfRVJST1IsICJGYWlsZWQgcGFyc2luZyByZXNwb25zZSBsaW5lIik7CisgIGlmIChncnBjX2h0dHBfdHJhY2UpIGdwcl9sb2coR1BSX0VSUk9SLCAiRmFpbGVkIHBhcnNpbmcgcmVzcG9uc2UgbGluZSIpOwogICByZXR1cm4gMDsKIH0KIApAQCAtMTI1LDcgKzEyNyw3IEBACiAgIHJldHVybiAxOwogCiBlcnJvcjoKLSAgZ3ByX2xvZyhHUFJfRVJST1IsICJGYWlsZWQgcGFyc2luZyByZXF1ZXN0IGxpbmUiKTsKKyAgaWYgKGdycGNfaHR0cF90cmFjZSkgZ3ByX2xvZyhHUFJfRVJST1IsICJGYWlsZWQgcGFyc2luZyByZXF1ZXN0IGxpbmUiKTsKICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE1MCw3ICsxNTIsOCBAQAogICBHUFJfQVNTRVJUKGN1ciAhPSBlbmQpOwogCiAgIGlmICgqY3VyID09ICcgJyB8fCAqY3VyID09ICdcdCcpIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgIkNvbnRpbnVlZCBoZWFkZXIgbGluZXMgbm90IHN1cHBvcnRlZCB5ZXQiKTsKKyAgICBpZiAoZ3JwY19odHRwX3RyYWNlKQorICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJDb250aW51ZWQgaGVhZGVyIGxpbmVzIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CiAgICAgZ290byBlcnJvcjsKICAgfQogCkBAIC0xNTgsNyArMTYxLDcgQEAKICAgICBjdXIrKzsKICAgfQogICBpZiAoY3VyID09IGVuZCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiRGlkbid0IGZpbmQgJzonIGluIGhlYWRlciBzdHJpbmciKTsKKyAgICBpZiAoZ3JwY19odHRwX3RyYWNlKSBncHJfbG9nKEdQUl9FUlJPUiwgIkRpZG4ndCBmaW5kICc6JyBpbiBoZWFkZXIgc3RyaW5nIik7CiAgICAgZ290byBlcnJvcjsKICAgfQogICBHUFJfQVNTRVJUKGN1ciA+PSBiZWcpOwpAQCAtMjQ5LDggKzI1Miw5IEBACiAgICAgY2FzZSBHUlBDX0hUVFBfRklSU1RfTElORToKICAgICBjYXNlIEdSUENfSFRUUF9IRUFERVJTOgogICAgICAgaWYgKHBhcnNlci0+Y3VyX2xpbmVfbGVuZ3RoID49IEdSUENfSFRUUF9QQVJTRVJfTUFYX0hFQURFUl9MRU5HVEgpIHsKLSAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJIVFRQIGNsaWVudCBtYXggbGluZSBsZW5ndGggKCVkKSBleGNlZWRlZCIsCi0gICAgICAgICAgICAgICAgR1JQQ19IVFRQX1BBUlNFUl9NQVhfSEVBREVSX0xFTkdUSCk7CisgICAgICAgIGlmIChncnBjX2h0dHBfdHJhY2UpCisgICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJIVFRQIGNsaWVudCBtYXggbGluZSBsZW5ndGggKCVkKSBleGNlZWRlZCIsCisgICAgICAgICAgICAgICAgICBHUlBDX0hUVFBfUEFSU0VSX01BWF9IRUFERVJfTEVOR1RIKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICB9CiAgICAgICBwYXJzZXItPmN1cl9saW5lW3BhcnNlci0+Y3VyX2xpbmVfbGVuZ3RoXSA9IGJ5dGU7CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3Ivc29ja2V0X3V0aWxzX2NvbW1vbl9wb3NpeC5jIGIvc3JjL2NvcmUvbGliL2lvbWdyL3NvY2tldF91dGlsc19jb21tb25fcG9zaXguYwppbmRleCA5ZGJjMjc4Li5iNDMzYWVlIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3Ivc29ja2V0X3V0aWxzX2NvbW1vbl9wb3NpeC5jCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci9zb2NrZXRfdXRpbHNfY29tbW9uX3Bvc2l4LmMKQEAgLTg5LDYgKzg5LDI4IEBACiAjZW5kaWYKIH0KIAoraW50IGdycGNfc2V0X3NvY2tldF9pcF9wa3RpbmZvX2lmX3Bvc3NpYmxlKGludCBmZCkgeworI2lmZGVmIEdQUl9IQVZFX0lQX1BLVElORk8KKyAgaW50IGdldF9sb2NhbF9pcCA9IDE7CisgIHJldHVybiAwID09IHNldHNvY2tvcHQoZmQsIElQUFJPVE9fSVAsIElQX1BLVElORk8sICZnZXRfbG9jYWxfaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdldF9sb2NhbF9pcCkpOworI2Vsc2UKKyAgKHZvaWQpZmQ7CisgIHJldHVybiAxOworI2VuZGlmCit9CisKK2ludCBncnBjX3NldF9zb2NrZXRfaXB2Nl9yZWN2cGt0aW5mb19pZl9wb3NzaWJsZShpbnQgZmQpIHsKKyNpZmRlZiBHUFJfSEFWRV9JUFY2X1JFQ1ZQS1RJTkZPCisgIGludCBnZXRfbG9jYWxfaXAgPSAxOworICByZXR1cm4gMCA9PSBzZXRzb2Nrb3B0KGZkLCBJUFBST1RPX0lQVjYsIElQVjZfUkVDVlBLVElORk8sICZnZXRfbG9jYWxfaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdldF9sb2NhbF9pcCkpOworI2Vsc2UKKyAgKHZvaWQpZmQ7CisgIHJldHVybiAxOworI2VuZGlmCit9CisKIC8qIHNldCBhIHNvY2tldCB0byBjbG9zZSBvbiBleGVjICovCiBpbnQgZ3JwY19zZXRfc29ja2V0X2Nsb2V4ZWMoaW50IGZkLCBpbnQgY2xvc2Vfb25fZXhlYykgewogICBpbnQgb2xkZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGRCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3Ivc29ja2V0X3V0aWxzX3Bvc2l4LmggYi9zcmMvY29yZS9saWIvaW9tZ3Ivc29ja2V0X3V0aWxzX3Bvc2l4LmgKaW5kZXggMDYzZjI5OC4uZjczYWQ2MyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2lvbWdyL3NvY2tldF91dGlsc19wb3NpeC5oCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci9zb2NrZXRfdXRpbHNfcG9zaXguaApAQCAtNjgsNiArNjgsMTYgQEAKICAgIElmIFNPX05PX1NJR1BJUEUgaXMgbm90IGF2YWlsYWJsZSwgcmV0dXJucyAxLiAqLwogaW50IGdycGNfc2V0X3NvY2tldF9ub19zaWdwaXBlX2lmX3Bvc3NpYmxlKGludCBmZCk7CiAKKy8qIFRyaWVzIHRvIHNldCBJUF9QS1RJTkZPIGlmIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLgorICAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKyAgIElmIElQX1BLVElORk8gaXMgbm90IGF2YWlsYWJsZSwgcmV0dXJucyAxLiAqLworaW50IGdycGNfc2V0X3NvY2tldF9pcF9wa3RpbmZvX2lmX3Bvc3NpYmxlKGludCBmZCk7CisKKy8qIFRyaWVzIHRvIHNldCBJUFY2X1JFQ1ZQS1RJTkZPIGlmIGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtLgorICAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKyAgIElmIElQVjZfUkVDVlBLVElORk8gaXMgbm90IGF2YWlsYWJsZSwgcmV0dXJucyAxLiAqLworaW50IGdycGNfc2V0X3NvY2tldF9pcHY2X3JlY3Zwa3RpbmZvX2lmX3Bvc3NpYmxlKGludCBmZCk7CisKIC8qIEFuIGVudW0gdG8ga2VlcCB0cmFjayBvZiBJUHY0L0lQdjYgc29ja2V0IG1vZGVzLgogCiAgICBDdXJyZW50bHksIHRoaXMgaW5mb3JtYXRpb24gaXMgb25seSB1c2VkIHdoZW4gYSBzb2NrZXQgaXMgZmlyc3QgY3JlYXRlZCwgYnV0CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3IvdWRwX3NlcnZlci5jIGIvc3JjL2NvcmUvbGliL2lvbWdyL3VkcF9zZXJ2ZXIuYwppbmRleCAzZDhiY2M5Li45MDY4MTA5IDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3IvdWRwX3NlcnZlci5jCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci91ZHBfc2VydmVyLmMKQEAgLTIwOCw4ICsyMDgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYWRkcl9sZW4pIHsKICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc29ja25hbWVfdGVtcDsKICAgc29ja2xlbl90IHNvY2tuYW1lX2xlbjsKLSAgaW50IGdldF9sb2NhbF9pcDsKLSAgaW50IHJjOwogCiAgIGlmIChmZCA8IDApIHsKICAgICBnb3RvIGVycm9yOwpAQCAtMjIwLDE0ICsyMTgsOSBAQAogICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKICAgfQogCi0gIGdldF9sb2NhbF9pcCA9IDE7Ci0gIHJjID0gc2V0c29ja29wdChmZCwgSVBQUk9UT19JUCwgSVBfUEtUSU5GTywgJmdldF9sb2NhbF9pcCwKLSAgICAgICAgICAgICAgICAgIHNpemVvZihnZXRfbG9jYWxfaXApKTsKLSAgaWYgKHJjID09IDAgJiYgYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQotICAgIHJjID0gc2V0c29ja29wdChmZCwgSVBQUk9UT19JUFY2LCBJUFY2X1JFQ1ZQS1RJTkZPLCAmZ2V0X2xvY2FsX2lwLAotICAgICAgICAgICAgICAgICAgICBzaXplb2YoZ2V0X2xvY2FsX2lwKSk7Ci0jZW5kaWYKKyAgaWYgKGdycGNfc2V0X3NvY2tldF9pcF9wa3RpbmZvX2lmX3Bvc3NpYmxlKGZkKSAmJgorICAgICAgYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgZ3JwY19zZXRfc29ja2V0X2lwdjZfcmVjdnBrdGluZm9faWZfcG9zc2libGUoZmQpOwogICB9CiAKICAgR1BSX0FTU0VSVChhZGRyX2xlbiA8IH4oc29ja2xlbl90KTApOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuYyBiL3NyYy9jb3JlL2xpYi9qc29uL2pzb25fcmVhZGVyLmMKaW5kZXggMDgwN2YwMi4uNGNmZjEzZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2pzb24vanNvbl9yZWFkZXIuYworKysgYi9zcmMvY29yZS9saWIvanNvbi9qc29uX3JlYWRlci5jCkBAIC0yODAsMTMgKzI4MCwxNCBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBjYXNlIEdSUENfSlNPTl9TVEFURV9PQkpFQ1RfS0VZX1NUUklORzoKLSAgICAgICAgICAgIEdQUl9BU1NFUlQocmVhZGVyLT51bmljb2RlX2hpZ2hfc3Vycm9nYXRlID09IDApOworICAgICAgICAgICAgaWYgKHJlYWRlci0+dW5pY29kZV9oaWdoX3N1cnJvZ2F0ZSAhPSAwKQorICAgICAgICAgICAgICByZXR1cm4gR1JQQ19KU09OX1BBUlNFX0VSUk9SOwogICAgICAgICAgICAgaWYgKGMgPT0gJyInKSB7CiAgICAgICAgICAgICAgIHJlYWRlci0+c3RhdGUgPSBHUlBDX0pTT05fU1RBVEVfT0JKRUNUX0tFWV9FTkQ7CiAgICAgICAgICAgICAgIGpzb25fcmVhZGVyX3NldF9rZXkocmVhZGVyKTsKICAgICAgICAgICAgICAganNvbl9yZWFkZXJfc3RyaW5nX2NsZWFyKHJlYWRlcik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBpZiAoYyA8PSAweDAwMWYpIHJldHVybiBHUlBDX0pTT05fUEFSU0VfRVJST1I7CisgICAgICAgICAgICAgIGlmIChjIDwgMzIpIHJldHVybiBHUlBDX0pTT05fUEFSU0VfRVJST1I7CiAgICAgICAgICAgICAgIGpzb25fcmVhZGVyX3N0cmluZ19hZGRfY2hhcihyZWFkZXIsIGMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNjIsNiArMzYzLDggQEAKICAgICAgICAgICAgICAgICByZWFkZXItPmluX29iamVjdCA9IDA7CiAgICAgICAgICAgICAgICAgcmVhZGVyLT5pbl9hcnJheSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIEdSUENfSlNPTl9QQVJTRV9FUlJPUjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmMgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmMKaW5kZXggNTQ3NGJjMy4uNDhiMjNhOSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5jCisrKyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb25uZWN0b3IuYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KIAorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9lbnYuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9sb2FkX2ZpbGUuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9zdHJpbmcuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RzaS9mYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90c2kvc3NsX3RyYW5zcG9ydF9zZWN1cml0eS5oIgogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc2VjdXJpdHkvc2VydmVyX3NlY3VyZV9jaHR0cDIuYyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzlkZDIyLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjY0ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlIDxncnBjL2dycGMuaD4KLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zeW5jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9yZXNvbHZlX2FkZHJlc3MuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvdGNwX3NlcnZlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlIHsKLSAgZ3JwY19zZXJ2ZXIgKnNlcnZlcjsKLSAgZ3JwY190Y3Bfc2VydmVyICp0Y3A7Ci0gIGdycGNfc2VydmVyX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2M7Ci0gIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzICpjcmVkczsKLSAgaW50IGlzX3NodXRkb3duOwotICBncHJfbXUgbXU7Ci0gIGdwcl9yZWZjb3VudCByZWZjb3VudDsKLSAgZ3JwY19jbG9zdXJlIGRlc3Ryb3lfY2xvc3VyZTsKLSAgZ3JwY19jbG9zdXJlICpkZXN0cm95X2NhbGxiYWNrOwotfSBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGU7Ci0KLXN0YXRpYyB2b2lkIHN0YXRlX3JlZihncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlKSB7Ci0gIGdwcl9yZWYoJnN0YXRlLT5yZWZjb3VudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0YXRlX3VucmVmKGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUpIHsKLSAgaWYgKGdwcl91bnJlZigmc3RhdGUtPnJlZmNvdW50KSkgewotICAgIC8qIGVuc3VyZSBhbGwgdGhyZWFkcyBoYXZlIHVubG9ja2VkICovCi0gICAgZ3ByX211X2xvY2soJnN0YXRlLT5tdSk7Ci0gICAgZ3ByX211X3VubG9jaygmc3RhdGUtPm11KTsKLSAgICAvKiBjbGVhbiB1cCAqLwotICAgIEdSUENfU0VDVVJJVFlfQ09OTkVDVE9SX1VOUkVGKCZzdGF0ZS0+c2MtPmJhc2UsICJzZXJ2ZXIiKTsKLSAgICBncnBjX3NlcnZlcl9jcmVkZW50aWFsc191bnJlZihzdGF0ZS0+Y3JlZHMpOwotICAgIGdwcl9mcmVlKHN0YXRlKTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBzZXR1cF90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnN0YXRlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RyYW5zcG9ydCAqdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfYXV0aF9jb250ZXh0ICphdXRoX2NvbnRleHQpIHsKLSAgZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlICpzdGF0ZSA9IHN0YXRlcDsKLSAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3NfY29weTsKLSAgZ3JwY19hcmcgYXJnc190b19hZGRbMl07Ci0gIGFyZ3NfdG9fYWRkWzBdID0gZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHNfdG9fYXJnKHN0YXRlLT5jcmVkcyk7Ci0gIGFyZ3NfdG9fYWRkWzFdID0gZ3JwY19hdXRoX2NvbnRleHRfdG9fYXJnKGF1dGhfY29udGV4dCk7Ci0gIGFyZ3NfY29weSA9IGdycGNfY2hhbm5lbF9hcmdzX2NvcHlfYW5kX2FkZCgKLSAgICAgIGdycGNfc2VydmVyX2dldF9jaGFubmVsX2FyZ3Moc3RhdGUtPnNlcnZlciksIGFyZ3NfdG9fYWRkLAotICAgICAgR1BSX0FSUkFZX1NJWkUoYXJnc190b19hZGQpKTsKLSAgZ3JwY19zZXJ2ZXJfc2V0dXBfdHJhbnNwb3J0KGV4ZWNfY3R4LCBzdGF0ZS0+c2VydmVyLCB0cmFuc3BvcnQsIGFyZ3NfY29weSk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koYXJnc19jb3B5KTsKLX0KLQotc3RhdGljIHZvaWQgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpzdGF0ZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zZWN1cml0eV9zdGF0dXMgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKnNlY3VyZV9lbmRwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2F1dGhfY29udGV4dCAqYXV0aF9jb250ZXh0KSB7Ci0gIGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUgPSBzdGF0ZXA7Ci0gIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7Ci0gIGlmIChzdGF0dXMgPT0gR1JQQ19TRUNVUklUWV9PSykgewotICAgIGlmIChzZWN1cmVfZW5kcG9pbnQpIHsKLSAgICAgIGdwcl9tdV9sb2NrKCZzdGF0ZS0+bXUpOwotICAgICAgaWYgKCFzdGF0ZS0+aXNfc2h1dGRvd24pIHsKLSAgICAgICAgdHJhbnNwb3J0ID0gZ3JwY19jcmVhdGVfY2h0dHAyX3RyYW5zcG9ydCgKLSAgICAgICAgICAgIGV4ZWNfY3R4LCBncnBjX3NlcnZlcl9nZXRfY2hhbm5lbF9hcmdzKHN0YXRlLT5zZXJ2ZXIpLAotICAgICAgICAgICAgc2VjdXJlX2VuZHBvaW50LCAwKTsKLSAgICAgICAgc2V0dXBfdHJhbnNwb3J0KGV4ZWNfY3R4LCBzdGF0ZSwgdHJhbnNwb3J0LCBhdXRoX2NvbnRleHQpOwotICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhleGVjX2N0eCwgdHJhbnNwb3J0LCBOVUxMLCAwKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFdlIG5lZWQgdG8gY29uc3VtZSB0aGlzIGhlcmUsIGJlY2F1c2UgdGhlIHNlcnZlciBtYXkgYWxyZWFkeSBoYXZlCi0gICAgICAgICAqIGdvbmUgYXdheS4gKi8KLSAgICAgICAgZ3JwY19lbmRwb2ludF9kZXN0cm95KGV4ZWNfY3R4LCBzZWN1cmVfZW5kcG9pbnQpOwotICAgICAgfQotICAgICAgZ3ByX211X3VubG9jaygmc3RhdGUtPm11KTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJTZWN1cmUgdHJhbnNwb3J0IGZhaWxlZCB3aXRoIGVycm9yICVkIiwgc3RhdHVzKTsKLSAgfQotICBzdGF0ZV91bnJlZihzdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIG9uX2FjY2VwdChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqc3RhdGVwLCBncnBjX2VuZHBvaW50ICp0Y3AsCi0gICAgICAgICAgICAgICAgICAgICAgZ3JwY190Y3Bfc2VydmVyX2FjY2VwdG9yICphY2NlcHRvcikgewotICBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gc3RhdGVwOwotICBzdGF0ZV9yZWYoc3RhdGUpOwotICBncnBjX3NlcnZlcl9zZWN1cml0eV9jb25uZWN0b3JfZG9faGFuZHNoYWtlKAotICAgICAgZXhlY19jdHgsIHN0YXRlLT5zYywgYWNjZXB0b3IsIHRjcCwgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lLCBzdGF0ZSk7Ci19Ci0KLS8qIFNlcnZlciBjYWxsYmFjazogc3RhcnQgbGlzdGVuaW5nIG9uIG91ciBwb3J0cyAqLwotc3RhdGljIHZvaWQgc3RhcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfc2VydmVyICpzZXJ2ZXIsIHZvaWQgKnN0YXRlcCwKLSAgICAgICAgICAgICAgICAgIGdycGNfcG9sbHNldCAqKnBvbGxzZXRzLCBzaXplX3QgcG9sbHNldF9jb3VudCkgewotICBncnBjX3NlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gc3RhdGVwOwotICBncnBjX3RjcF9zZXJ2ZXJfc3RhcnQoZXhlY19jdHgsIHN0YXRlLT50Y3AsIHBvbGxzZXRzLCBwb2xsc2V0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgb25fYWNjZXB0LCBzdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lfZG9uZShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqc3RhdGVwLCBib29sIHN1Y2Nlc3MpIHsKLSAgZ3JwY19zZXJ2ZXJfc2VjdXJlX3N0YXRlICpzdGF0ZSA9IHN0YXRlcDsKLSAgaWYgKHN0YXRlLT5kZXN0cm95X2NhbGxiYWNrICE9IE5VTEwpIHsKLSAgICBzdGF0ZS0+ZGVzdHJveV9jYWxsYmFjay0+Y2IoZXhlY19jdHgsIHN0YXRlLT5kZXN0cm95X2NhbGxiYWNrLT5jYl9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MpOwotICB9Ci0gIGdycGNfc2VydmVyX3NlY3VyaXR5X2Nvbm5lY3Rvcl9zaHV0ZG93bihleGVjX2N0eCwgc3RhdGUtPnNjKTsKLSAgc3RhdGVfdW5yZWYoc3RhdGUpOwotfQotCi0vKiBTZXJ2ZXIgY2FsbGJhY2s6IGRlc3Ryb3kgdGhlIHRjcCBsaXN0ZW5lciAoc28gd2UgZG9uJ3QgZ2VuZXJhdGUgZnVydGhlcgotICAgY2FsbGJhY2tzKSAqLwotc3RhdGljIHZvaWQgZGVzdHJveShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19zZXJ2ZXIgKnNlcnZlciwgdm9pZCAqc3RhdGVwLAotICAgICAgICAgICAgICAgICAgICBncnBjX2Nsb3N1cmUgKmNhbGxiYWNrKSB7Ci0gIGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUgPSBzdGF0ZXA7Ci0gIGdycGNfdGNwX3NlcnZlciAqdGNwOwotICBncHJfbXVfbG9jaygmc3RhdGUtPm11KTsKLSAgc3RhdGUtPmlzX3NodXRkb3duID0gMTsKLSAgc3RhdGUtPmRlc3Ryb3lfY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgdGNwID0gc3RhdGUtPnRjcDsKLSAgZ3ByX211X3VubG9jaygmc3RhdGUtPm11KTsKLSAgZ3JwY190Y3Bfc2VydmVyX3VucmVmKGV4ZWNfY3R4LCB0Y3ApOwotfQotCi1pbnQgZ3JwY19zZXJ2ZXJfYWRkX3NlY3VyZV9odHRwMl9wb3J0KGdycGNfc2VydmVyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKmFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzICpjcmVkcykgewotICBncnBjX3Jlc29sdmVkX2FkZHJlc3NlcyAqcmVzb2x2ZWQgPSBOVUxMOwotICBncnBjX3RjcF9zZXJ2ZXIgKnRjcCA9IE5VTEw7Ci0gIGdycGNfc2VydmVyX3NlY3VyZV9zdGF0ZSAqc3RhdGUgPSBOVUxMOwotICBzaXplX3QgaTsKLSAgdW5zaWduZWQgY291bnQgPSAwOwotICBpbnQgcG9ydF9udW0gPSAtMTsKLSAgaW50IHBvcnRfdGVtcDsKLSAgZ3JwY19zZWN1cml0eV9zdGF0dXMgc3RhdHVzID0gR1JQQ19TRUNVUklUWV9FUlJPUjsKLSAgZ3JwY19zZXJ2ZXJfc2VjdXJpdHlfY29ubmVjdG9yICpzYyA9IE5VTEw7Ci0gIGdycGNfZXhlY19jdHggZXhlY19jdHggPSBHUlBDX0VYRUNfQ1RYX0lOSVQ7Ci0KLSAgR1JQQ19BUElfVFJBQ0UoCi0gICAgICAiZ3JwY19zZXJ2ZXJfYWRkX3NlY3VyZV9odHRwMl9wb3J0KCIKLSAgICAgICJzZXJ2ZXI9JXAsIGFkZHI9JXMsIGNyZWRzPSVwKSIsCi0gICAgICAzLCAoc2VydmVyLCBhZGRyLCBjcmVkcykpOwotCi0gIC8qIGNyZWF0ZSBzZWN1cml0eSBjb250ZXh0ICovCi0gIGlmIChjcmVkcyA9PSBOVUxMKSBnb3RvIGVycm9yOwotICBzdGF0dXMgPSBncnBjX3NlcnZlcl9jcmVkZW50aWFsc19jcmVhdGVfc2VjdXJpdHlfY29ubmVjdG9yKGNyZWRzLCAmc2MpOwotICBpZiAoc3RhdHVzICE9IEdSUENfU0VDVVJJVFlfT0spIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwKLSAgICAgICAgICAgICJVbmFibGUgdG8gY3JlYXRlIHNlY3VyZSBzZXJ2ZXIgd2l0aCBjcmVkZW50aWFscyBvZiB0eXBlICVzLiIsCi0gICAgICAgICAgICBjcmVkcy0+dHlwZSk7Ci0gICAgZ290byBlcnJvcjsKLSAgfQotICBzYy0+Y2hhbm5lbF9hcmdzID0gZ3JwY19zZXJ2ZXJfZ2V0X2NoYW5uZWxfYXJncyhzZXJ2ZXIpOwotCi0gIC8qIHJlc29sdmUgYWRkcmVzcyAqLwotICByZXNvbHZlZCA9IGdycGNfYmxvY2tpbmdfcmVzb2x2ZV9hZGRyZXNzKGFkZHIsICJodHRwcyIpOwotICBpZiAoIXJlc29sdmVkKSB7Ci0gICAgZ290byBlcnJvcjsKLSAgfQotICBzdGF0ZSA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpzdGF0ZSkpOwotICBtZW1zZXQoc3RhdGUsIDAsIHNpemVvZigqc3RhdGUpKTsKLSAgZ3JwY19jbG9zdXJlX2luaXQoJnN0YXRlLT5kZXN0cm95X2Nsb3N1cmUsIGRlc3Ryb3lfZG9uZSwgc3RhdGUpOwotICB0Y3AgPSBncnBjX3RjcF9zZXJ2ZXJfY3JlYXRlKCZzdGF0ZS0+ZGVzdHJveV9jbG9zdXJlKTsKLSAgaWYgKCF0Y3ApIHsKLSAgICBnb3RvIGVycm9yOwotICB9Ci0KLSAgc3RhdGUtPnNlcnZlciA9IHNlcnZlcjsKLSAgc3RhdGUtPnRjcCA9IHRjcDsKLSAgc3RhdGUtPnNjID0gc2M7Ci0gIHN0YXRlLT5jcmVkcyA9IGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3JlZihjcmVkcyk7Ci0gIHN0YXRlLT5pc19zaHV0ZG93biA9IDA7Ci0gIGdwcl9tdV9pbml0KCZzdGF0ZS0+bXUpOwotICBncHJfcmVmX2luaXQoJnN0YXRlLT5yZWZjb3VudCwgMSk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IHJlc29sdmVkLT5uYWRkcnM7IGkrKykgewotICAgIHBvcnRfdGVtcCA9IGdycGNfdGNwX3NlcnZlcl9hZGRfcG9ydCgKLSAgICAgICAgdGNwLCAoc3RydWN0IHNvY2thZGRyICopJnJlc29sdmVkLT5hZGRyc1tpXS5hZGRyLAotICAgICAgICByZXNvbHZlZC0+YWRkcnNbaV0ubGVuKTsKLSAgICBpZiAocG9ydF90ZW1wID4gMCkgewotICAgICAgaWYgKHBvcnRfbnVtID09IC0xKSB7Ci0gICAgICAgIHBvcnRfbnVtID0gcG9ydF90ZW1wOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgR1BSX0FTU0VSVChwb3J0X251bSA9PSBwb3J0X3RlbXApOwotICAgICAgfQotICAgICAgY291bnQrKzsKLSAgICB9Ci0gIH0KLSAgaWYgKGNvdW50ID09IDApIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgIk5vIGFkZHJlc3MgYWRkZWQgb3V0IG9mIHRvdGFsICVkIHJlc29sdmVkIiwKLSAgICAgICAgICAgIHJlc29sdmVkLT5uYWRkcnMpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLSAgaWYgKGNvdW50ICE9IHJlc29sdmVkLT5uYWRkcnMpIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgIk9ubHkgJWQgYWRkcmVzc2VzIGFkZGVkIG91dCBvZiB0b3RhbCAlZCByZXNvbHZlZCIsCi0gICAgICAgICAgICBjb3VudCwgcmVzb2x2ZWQtPm5hZGRycyk7Ci0gICAgLyogaWYgaXQncyBhbiBlcnJvciwgZG9uJ3Qgd2Ugd2FudCB0byBnb3RvIGVycm9yOyBoZXJlID8gKi8KLSAgfQotICBncnBjX3Jlc29sdmVkX2FkZHJlc3Nlc19kZXN0cm95KHJlc29sdmVkKTsKLQotICAvKiBSZWdpc3RlciB3aXRoIHRoZSBzZXJ2ZXIgb25seSB1cG9uIHN1Y2Nlc3MgKi8KLSAgZ3JwY19zZXJ2ZXJfYWRkX2xpc3RlbmVyKCZleGVjX2N0eCwgc2VydmVyLCBzdGF0ZSwgc3RhcnQsIGRlc3Ryb3kpOwotCi0gIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7Ci0gIHJldHVybiBwb3J0X251bTsKLQotLyogRXJyb3IgcGF0aDogY2xlYW51cCBhbmQgcmV0dXJuICovCi1lcnJvcjoKLSAgaWYgKHJlc29sdmVkKSB7Ci0gICAgZ3JwY19yZXNvbHZlZF9hZGRyZXNzZXNfZGVzdHJveShyZXNvbHZlZCk7Ci0gIH0KLSAgaWYgKHRjcCkgewotICAgIGdycGNfdGNwX3NlcnZlcl91bnJlZigmZXhlY19jdHgsIHRjcCk7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKHNjKSB7Ci0gICAgICBHUlBDX1NFQ1VSSVRZX0NPTk5FQ1RPUl9VTlJFRigmc2MtPmJhc2UsICJzZXJ2ZXIiKTsKLSAgICB9Ci0gICAgaWYgKHN0YXRlKSB7Ci0gICAgICBncHJfZnJlZShzdGF0ZSk7Ci0gICAgfQotICB9Ci0gIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jcmVhdGUuYyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Nzc3Y2UuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jcmVhdGUuYworKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSA8Z3JwYy9ncnBjLmg+Ci0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jbGllbnRfY2hhbm5lbC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfY2xpZW50X2ZpbHRlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jbGllbnRfY29uZmlnL3Jlc29sdmVyX3JlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3RjcF9jbGllbnQuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgZ3JwY19jb25uZWN0b3IgYmFzZTsKLSAgZ3ByX3JlZmNvdW50IHJlZnM7Ci0KLSAgZ3JwY19jbG9zdXJlICpub3RpZnk7Ci0gIGdycGNfY29ubmVjdF9pbl9hcmdzIGFyZ3M7Ci0gIGdycGNfY29ubmVjdF9vdXRfYXJncyAqcmVzdWx0OwotICBncnBjX2Nsb3N1cmUgaW5pdGlhbF9zdHJpbmdfc2VudDsKLSAgZ3ByX3NsaWNlX2J1ZmZlciBpbml0aWFsX3N0cmluZ19idWZmZXI7Ci0KLSAgZ3JwY19lbmRwb2ludCAqdGNwOwotCi0gIGdycGNfY2xvc3VyZSBjb25uZWN0ZWQ7Ci19IGNvbm5lY3RvcjsKLQotc3RhdGljIHZvaWQgY29ubmVjdG9yX3JlZihncnBjX2Nvbm5lY3RvciAqY29uKSB7Ci0gIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247Ci0gIGdwcl9yZWYoJmMtPnJlZnMpOwotfQotCi1zdGF0aWMgdm9pZCBjb25uZWN0b3JfdW5yZWYoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24pIHsKLSAgY29ubmVjdG9yICpjID0gKGNvbm5lY3RvciAqKWNvbjsKLSAgaWYgKGdwcl91bnJlZigmYy0+cmVmcykpIHsKLSAgICAvKiBjLT5pbml0aWFsX3N0cmluZ19idWZmZXIgZG9lcyBub3QgbmVlZCB0byBiZSBkZXN0cm95ZWQgKi8KLSAgICBncHJfZnJlZShjKTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBvbl9pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nX3NlbnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MpIHsKLSAgY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCBhcmcpOwotfQotCi1zdGF0aWMgdm9pZCBjb25uZWN0ZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgYm9vbCBzdWNjZXNzKSB7Ci0gIGNvbm5lY3RvciAqYyA9IGFyZzsKLSAgZ3JwY19jbG9zdXJlICpub3RpZnk7Ci0gIGdycGNfZW5kcG9pbnQgKnRjcCA9IGMtPnRjcDsKLSAgaWYgKHRjcCAhPSBOVUxMKSB7Ci0gICAgaWYgKCFHUFJfU0xJQ0VfSVNfRU1QVFkoYy0+YXJncy5pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nKSkgewotICAgICAgZ3JwY19jbG9zdXJlX2luaXQoJmMtPmluaXRpYWxfc3RyaW5nX3NlbnQsIG9uX2luaXRpYWxfY29ubmVjdF9zdHJpbmdfc2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGMpOwotICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9pbml0KCZjLT5pbml0aWFsX3N0cmluZ19idWZmZXIpOwotICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmFyZ3MuaW5pdGlhbF9jb25uZWN0X3N0cmluZyk7Ci0gICAgICBjb25uZWN0b3JfcmVmKGFyZyk7Ci0gICAgICBncnBjX2VuZHBvaW50X3dyaXRlKGV4ZWNfY3R4LCB0Y3AsICZjLT5pbml0aWFsX3N0cmluZ19idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjLT5pbml0aWFsX3N0cmluZ19zZW50KTsKLSAgICB9Ci0gICAgYy0+cmVzdWx0LT50cmFuc3BvcnQgPQotICAgICAgICBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KGV4ZWNfY3R4LCBjLT5hcmdzLmNoYW5uZWxfYXJncywgdGNwLCAxKTsKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhleGVjX2N0eCwgYy0+cmVzdWx0LT50cmFuc3BvcnQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgR1BSX0FTU0VSVChjLT5yZXN1bHQtPnRyYW5zcG9ydCk7Ci0gICAgYy0+cmVzdWx0LT5jaGFubmVsX2FyZ3MgPSBjLT5hcmdzLmNoYW5uZWxfYXJnczsKLSAgfSBlbHNlIHsKLSAgICBtZW1zZXQoYy0+cmVzdWx0LCAwLCBzaXplb2YoKmMtPnJlc3VsdCkpOwotICB9Ci0gIG5vdGlmeSA9IGMtPm5vdGlmeTsKLSAgYy0+bm90aWZ5ID0gTlVMTDsKLSAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOwotfQotCi1zdGF0aWMgdm9pZCBjb25uZWN0b3Jfc2h1dGRvd24oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24pIHt9Ci0KLXN0YXRpYyB2b2lkIGNvbm5lY3Rvcl9jb25uZWN0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RvciAqY29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jb25uZWN0X2luX2FyZ3MgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nvbm5lY3Rfb3V0X2FyZ3MgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqbm90aWZ5KSB7Ci0gIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247Ci0gIEdQUl9BU1NFUlQoYy0+bm90aWZ5ID09IE5VTEwpOwotICBHUFJfQVNTRVJUKG5vdGlmeS0+Y2IpOwotICBjLT5ub3RpZnkgPSBub3RpZnk7Ci0gIGMtPmFyZ3MgPSAqYXJnczsKLSAgYy0+cmVzdWx0ID0gcmVzdWx0OwotICBjLT50Y3AgPSBOVUxMOwotICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+Y29ubmVjdGVkLCBjb25uZWN0ZWQsIGMpOwotICBncnBjX3RjcF9jbGllbnRfY29ubmVjdChleGVjX2N0eCwgJmMtPmNvbm5lY3RlZCwgJmMtPnRjcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+aW50ZXJlc3RlZF9wYXJ0aWVzLCBhcmdzLT5hZGRyLCBhcmdzLT5hZGRyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+ZGVhZGxpbmUpOwotfQotCi1zdGF0aWMgY29uc3QgZ3JwY19jb25uZWN0b3JfdnRhYmxlIGNvbm5lY3Rvcl92dGFibGUgPSB7Ci0gICAgY29ubmVjdG9yX3JlZiwgY29ubmVjdG9yX3VucmVmLCBjb25uZWN0b3Jfc2h1dGRvd24sIGNvbm5lY3Rvcl9jb25uZWN0fTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSBiYXNlOwotICBncHJfcmVmY291bnQgcmVmczsKLSAgZ3JwY19jaGFubmVsX2FyZ3MgKm1lcmdlX2FyZ3M7Ci0gIGdycGNfY2hhbm5lbCAqbWFzdGVyOwotfSBzdWJjaGFubmVsX2ZhY3Rvcnk7Ci0KLXN0YXRpYyB2b2lkIHN1YmNoYW5uZWxfZmFjdG9yeV9yZWYoZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnkgKnNjZikgewotICBzdWJjaGFubmVsX2ZhY3RvcnkgKmYgPSAoc3ViY2hhbm5lbF9mYWN0b3J5ICopc2NmOwotICBncHJfcmVmKCZmLT5yZWZzKTsKLX0KLQotc3RhdGljIHZvaWQgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5ICpzY2YpIHsKLSAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmID0gKHN1YmNoYW5uZWxfZmFjdG9yeSAqKXNjZjsKLSAgaWYgKGdwcl91bnJlZigmZi0+cmVmcykpIHsKLSAgICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfVU5SRUYoZXhlY19jdHgsIGYtPm1hc3RlciwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOwotICAgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZi0+bWVyZ2VfYXJncyk7Ci0gICAgZ3ByX2ZyZWUoZik7Ci0gIH0KLX0KLQotc3RhdGljIGdycGNfc3ViY2hhbm5lbCAqc3ViY2hhbm5lbF9mYWN0b3J5X2NyZWF0ZV9zdWJjaGFubmVsKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSAqc2NmLAotICAgIGdycGNfc3ViY2hhbm5lbF9hcmdzICphcmdzKSB7Ci0gIHN1YmNoYW5uZWxfZmFjdG9yeSAqZiA9IChzdWJjaGFubmVsX2ZhY3RvcnkgKilzY2Y7Ci0gIGNvbm5lY3RvciAqYyA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpjKSk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzICpmaW5hbF9hcmdzID0KLSAgICAgIGdycGNfY2hhbm5lbF9hcmdzX21lcmdlKGFyZ3MtPmFyZ3MsIGYtPm1lcmdlX2FyZ3MpOwotICBncnBjX3N1YmNoYW5uZWwgKnM7Ci0gIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKLSAgYy0+YmFzZS52dGFibGUgPSAmY29ubmVjdG9yX3Z0YWJsZTsKLSAgZ3ByX3JlZl9pbml0KCZjLT5yZWZzLCAxKTsKLSAgYXJncy0+YXJncyA9IGZpbmFsX2FyZ3M7Ci0gIHMgPSBncnBjX3N1YmNoYW5uZWxfY3JlYXRlKGV4ZWNfY3R4LCAmYy0+YmFzZSwgYXJncyk7Ci0gIGdycGNfY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCAmYy0+YmFzZSk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZmluYWxfYXJncyk7Ci0gIHJldHVybiBzOwotfQotCi1zdGF0aWMgY29uc3QgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdnRhYmxlIHN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGUgPSB7Ci0gICAgc3ViY2hhbm5lbF9mYWN0b3J5X3JlZiwgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmLAotICAgIHN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbH07Ci0KLS8qIENyZWF0ZSBhIGNsaWVudCBjaGFubmVsOgotICAgQXN5bmNocm9ub3VzbHk6IC0gcmVzb2x2ZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAtIGNvbm5lY3QgdG8gaXQgKHRyeWluZyBhbHRlcm5hdGl2ZXMgYXMgcHJlc2VudGVkKQotICAgICAgICAgICAgICAgICAgIC0gcGVyZm9ybSBoYW5kc2hha2VzICovCi1ncnBjX2NoYW5uZWwgKmdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUoY29uc3QgY2hhciAqdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJlc2VydmVkKSB7Ci0gIGdycGNfY2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7Ci0gIGdycGNfcmVzb2x2ZXIgKnJlc29sdmVyOwotICBzdWJjaGFubmVsX2ZhY3RvcnkgKmY7Ci0gIGdycGNfZXhlY19jdHggZXhlY19jdHggPSBHUlBDX0VYRUNfQ1RYX0lOSVQ7Ci0gIEdSUENfQVBJX1RSQUNFKAotICAgICAgImdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUodGFyZ2V0PSVwLCBhcmdzPSVwLCByZXNlcnZlZD0lcCkiLCAzLAotICAgICAgKHRhcmdldCwgYXJncywgcmVzZXJ2ZWQpKTsKLSAgR1BSX0FTU0VSVCghcmVzZXJ2ZWQpOwotCi0gIGNoYW5uZWwgPQotICAgICAgZ3JwY19jaGFubmVsX2NyZWF0ZSgmZXhlY19jdHgsIHRhcmdldCwgYXJncywgR1JQQ19DTElFTlRfQ0hBTk5FTCwgTlVMTCk7Ci0KLSAgZiA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpmKSk7Ci0gIGYtPmJhc2UudnRhYmxlID0gJnN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGU7Ci0gIGdwcl9yZWZfaW5pdCgmZi0+cmVmcywgMSk7Ci0gIGYtPm1lcmdlX2FyZ3MgPSBncnBjX2NoYW5uZWxfYXJnc19jb3B5KGFyZ3MpOwotICBmLT5tYXN0ZXIgPSBjaGFubmVsOwotICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfUkVGKGYtPm1hc3RlciwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOwotICByZXNvbHZlciA9IGdycGNfcmVzb2x2ZXJfY3JlYXRlKHRhcmdldCwgJmYtPmJhc2UpOwotICBpZiAoIXJlc29sdmVyKSB7Ci0gICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKCZleGVjX2N0eCwgZi0+bWFzdGVyLCAic3ViY2hhbm5lbF9mYWN0b3J5Iik7Ci0gICAgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdW5yZWYoJmV4ZWNfY3R4LCAmZi0+YmFzZSk7Ci0gICAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIGdycGNfY2xpZW50X2NoYW5uZWxfc2V0X3Jlc29sdmVyKAotICAgICAgJmV4ZWNfY3R4LCBncnBjX2NoYW5uZWxfZ2V0X2NoYW5uZWxfc3RhY2soY2hhbm5lbCksIHJlc29sdmVyKTsKLSAgR1JQQ19SRVNPTFZFUl9VTlJFRigmZXhlY19jdHgsIHJlc29sdmVyLCAiY3JlYXRlIik7Ci0gIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmKCZleGVjX2N0eCwgJmYtPmJhc2UpOwotCi0gIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7Ci0KLSAgcmV0dXJuIGNoYW5uZWw7Ci19CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgYi9zcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMKaW5kZXggZGNiOWM2Mi4uZGJmYzhhOSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jCisrKyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC90aW1lLmg+CiAvKiBUT0RPKGN0aWxsZXIpOiBmaW5kIGFub3RoZXIgd2F5PyAtIGJldHRlciBub3QgdG8gaW5jbHVkZSBjZW5zdXMgaGVyZSAqLworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jbGllbnRfY2hhbm5lbC5oIgpAQCAtNjcsNyArNjgsNiBAQAogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc3VyZmFjZV90cmFjZS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oIgogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc3VyZmFjZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmYzNTA0Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzE4ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlIDxncnBjL2dycGMuaD4KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlX2J1ZmZlci5oPgotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvY2xpZW50X2NvbmZpZy9yZXNvbHZlcl9yZWdpc3RyeS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci90Y3BfY2xpZW50LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3NlY3VyaXR5L2F1dGhfZmlsdGVycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9jcmVkZW50aWFscy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5X2ludGVyZmFjZS5oIgotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGdycGNfY29ubmVjdG9yIGJhc2U7Ci0gIGdwcl9yZWZjb3VudCByZWZzOwotCi0gIGdycGNfY2hhbm5lbF9zZWN1cml0eV9jb25uZWN0b3IgKnNlY3VyaXR5X2Nvbm5lY3RvcjsKLQotICBncnBjX2Nsb3N1cmUgKm5vdGlmeTsKLSAgZ3JwY19jb25uZWN0X2luX2FyZ3MgYXJnczsKLSAgZ3JwY19jb25uZWN0X291dF9hcmdzICpyZXN1bHQ7Ci0gIGdycGNfY2xvc3VyZSBpbml0aWFsX3N0cmluZ19zZW50OwotICBncHJfc2xpY2VfYnVmZmVyIGluaXRpYWxfc3RyaW5nX2J1ZmZlcjsKLQotICBncHJfbXUgbXU7Ci0gIGdycGNfZW5kcG9pbnQgKmNvbm5lY3RpbmdfZW5kcG9pbnQ7Ci0gIGdycGNfZW5kcG9pbnQgKm5ld2x5X2Nvbm5lY3RpbmdfZW5kcG9pbnQ7Ci0KLSAgZ3JwY19jbG9zdXJlIGNvbm5lY3RlZF9jbG9zdXJlOwotfSBjb25uZWN0b3I7Ci0KLXN0YXRpYyB2b2lkIGNvbm5lY3Rvcl9yZWYoZ3JwY19jb25uZWN0b3IgKmNvbikgewotICBjb25uZWN0b3IgKmMgPSAoY29ubmVjdG9yICopY29uOwotICBncHJfcmVmKCZjLT5yZWZzKTsKLX0KLQotc3RhdGljIHZvaWQgY29ubmVjdG9yX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RvciAqY29uKSB7Ci0gIGNvbm5lY3RvciAqYyA9IChjb25uZWN0b3IgKiljb247Ci0gIGlmIChncHJfdW5yZWYoJmMtPnJlZnMpKSB7Ci0gICAgLyogYy0+aW5pdGlhbF9zdHJpbmdfYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVzdHJveWVkICovCi0gICAgZ3ByX2ZyZWUoYyk7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zZWN1cml0eV9zdGF0dXMgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKnNlY3VyZV9lbmRwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2F1dGhfY29udGV4dCAqYXV0aF9jb250ZXh0KSB7Ci0gIGNvbm5lY3RvciAqYyA9IGFyZzsKLSAgZ3JwY19jbG9zdXJlICpub3RpZnk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzICphcmdzX2NvcHkgPSBOVUxMOwotICBncHJfbXVfbG9jaygmYy0+bXUpOwotICBpZiAoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKSB7Ci0gICAgbWVtc2V0KGMtPnJlc3VsdCwgMCwgc2l6ZW9mKCpjLT5yZXN1bHQpKTsKLSAgICBncHJfbXVfdW5sb2NrKCZjLT5tdSk7Ci0gIH0gZWxzZSBpZiAoc3RhdHVzICE9IEdSUENfU0VDVVJJVFlfT0spIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgIlNlY3VyZSBoYW5kc2hha2UgZmFpbGVkIHdpdGggZXJyb3IgJWQuIiwgc3RhdHVzKTsKLSAgICBtZW1zZXQoYy0+cmVzdWx0LCAwLCBzaXplb2YoKmMtPnJlc3VsdCkpOwotICAgIGMtPmNvbm5lY3RpbmdfZW5kcG9pbnQgPSBOVUxMOwotICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKLSAgfSBlbHNlIHsKLSAgICBncnBjX2FyZyBhdXRoX2NvbnRleHRfYXJnOwotICAgIGMtPmNvbm5lY3RpbmdfZW5kcG9pbnQgPSBOVUxMOwotICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKLSAgICBjLT5yZXN1bHQtPnRyYW5zcG9ydCA9IGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoCi0gICAgICAgIGV4ZWNfY3R4LCBjLT5hcmdzLmNoYW5uZWxfYXJncywgc2VjdXJlX2VuZHBvaW50LCAxKTsKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhleGVjX2N0eCwgYy0+cmVzdWx0LT50cmFuc3BvcnQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgYXV0aF9jb250ZXh0X2FyZyA9IGdycGNfYXV0aF9jb250ZXh0X3RvX2FyZyhhdXRoX2NvbnRleHQpOwotICAgIGFyZ3NfY29weSA9IGdycGNfY2hhbm5lbF9hcmdzX2NvcHlfYW5kX2FkZChjLT5hcmdzLmNoYW5uZWxfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF1dGhfY29udGV4dF9hcmcsIDEpOwotICAgIGMtPnJlc3VsdC0+Y2hhbm5lbF9hcmdzID0gYXJnc19jb3B5OwotICB9Ci0gIG5vdGlmeSA9IGMtPm5vdGlmeTsKLSAgYy0+bm90aWZ5ID0gTlVMTDsKLSAgLyogbG9vayBhdCBjLT5hcmdzIHdoaWNoIGFyZSBjb25uZWN0b3IgYXJncy4gKi8KLSAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOwotICBpZiAoYXJnc19jb3B5ICE9IE5VTEwpIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koYXJnc19jb3B5KTsKLX0KLQotc3RhdGljIHZvaWQgb25faW5pdGlhbF9jb25uZWN0X3N0cmluZ19zZW50KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzKSB7Ci0gIGNvbm5lY3RvciAqYyA9IGFyZzsKLSAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3Rvcl9kb19oYW5kc2hha2UoZXhlY19jdHgsIGMtPnNlY3VyaXR5X2Nvbm5lY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y29ubmVjdGluZ19lbmRwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lLCBjKTsKLX0KLQotc3RhdGljIHZvaWQgY29ubmVjdGVkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsIGJvb2wgc3VjY2VzcykgewotICBjb25uZWN0b3IgKmMgPSBhcmc7Ci0gIGdycGNfY2xvc3VyZSAqbm90aWZ5OwotICBncnBjX2VuZHBvaW50ICp0Y3AgPSBjLT5uZXdseV9jb25uZWN0aW5nX2VuZHBvaW50OwotICBpZiAodGNwICE9IE5VTEwpIHsKLSAgICBncHJfbXVfbG9jaygmYy0+bXUpOwotICAgIEdQUl9BU1NFUlQoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKTsKLSAgICBjLT5jb25uZWN0aW5nX2VuZHBvaW50ID0gdGNwOwotICAgIGdwcl9tdV91bmxvY2soJmMtPm11KTsKLSAgICBpZiAoIUdQUl9TTElDRV9JU19FTVBUWShjLT5hcmdzLmluaXRpYWxfY29ubmVjdF9zdHJpbmcpKSB7Ci0gICAgICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+aW5pdGlhbF9zdHJpbmdfc2VudCwgb25faW5pdGlhbF9jb25uZWN0X3N0cmluZ19zZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgYyk7Ci0gICAgICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlcik7Ci0gICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmYy0+aW5pdGlhbF9zdHJpbmdfYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+YXJncy5pbml0aWFsX2Nvbm5lY3Rfc3RyaW5nKTsKLSAgICAgIGdycGNfZW5kcG9pbnRfd3JpdGUoZXhlY19jdHgsIHRjcCwgJmMtPmluaXRpYWxfc3RyaW5nX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmMtPmluaXRpYWxfc3RyaW5nX3NlbnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBncnBjX2NoYW5uZWxfc2VjdXJpdHlfY29ubmVjdG9yX2RvX2hhbmRzaGFrZSgKLSAgICAgICAgICBleGVjX2N0eCwgYy0+c2VjdXJpdHlfY29ubmVjdG9yLCB0Y3AsIG9uX3NlY3VyZV9oYW5kc2hha2VfZG9uZSwgYyk7Ci0gICAgfQotICB9IGVsc2UgewotICAgIG1lbXNldChjLT5yZXN1bHQsIDAsIHNpemVvZigqYy0+cmVzdWx0KSk7Ci0gICAgbm90aWZ5ID0gYy0+bm90aWZ5OwotICAgIGMtPm5vdGlmeSA9IE5VTEw7Ci0gICAgbm90aWZ5LT5jYihleGVjX2N0eCwgbm90aWZ5LT5jYl9hcmcsIDEpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbm5lY3Rvcl9zaHV0ZG93bihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jb25uZWN0b3IgKmNvbikgewotICBjb25uZWN0b3IgKmMgPSAoY29ubmVjdG9yICopY29uOwotICBncnBjX2VuZHBvaW50ICplcDsKLSAgZ3ByX211X2xvY2soJmMtPm11KTsKLSAgZXAgPSBjLT5jb25uZWN0aW5nX2VuZHBvaW50OwotICBjLT5jb25uZWN0aW5nX2VuZHBvaW50ID0gTlVMTDsKLSAgZ3ByX211X3VubG9jaygmYy0+bXUpOwotICBpZiAoZXApIHsKLSAgICBncnBjX2VuZHBvaW50X3NodXRkb3duKGV4ZWNfY3R4LCBlcCk7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgY29ubmVjdG9yX2Nvbm5lY3QoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY29ubmVjdG9yICpjb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2Nvbm5lY3RfaW5fYXJncyAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY29ubmVjdF9vdXRfYXJncyAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpub3RpZnkpIHsKLSAgY29ubmVjdG9yICpjID0gKGNvbm5lY3RvciAqKWNvbjsKLSAgR1BSX0FTU0VSVChjLT5ub3RpZnkgPT0gTlVMTCk7Ci0gIEdQUl9BU1NFUlQobm90aWZ5LT5jYik7Ci0gIGMtPm5vdGlmeSA9IG5vdGlmeTsKLSAgYy0+YXJncyA9ICphcmdzOwotICBjLT5yZXN1bHQgPSByZXN1bHQ7Ci0gIGdwcl9tdV9sb2NrKCZjLT5tdSk7Ci0gIEdQUl9BU1NFUlQoYy0+Y29ubmVjdGluZ19lbmRwb2ludCA9PSBOVUxMKTsKLSAgZ3ByX211X3VubG9jaygmYy0+bXUpOwotICBncnBjX2Nsb3N1cmVfaW5pdCgmYy0+Y29ubmVjdGVkX2Nsb3N1cmUsIGNvbm5lY3RlZCwgYyk7Ci0gIGdycGNfdGNwX2NsaWVudF9jb25uZWN0KAotICAgICAgZXhlY19jdHgsICZjLT5jb25uZWN0ZWRfY2xvc3VyZSwgJmMtPm5ld2x5X2Nvbm5lY3RpbmdfZW5kcG9pbnQsCi0gICAgICBhcmdzLT5pbnRlcmVzdGVkX3BhcnRpZXMsIGFyZ3MtPmFkZHIsIGFyZ3MtPmFkZHJfbGVuLCBhcmdzLT5kZWFkbGluZSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBncnBjX2Nvbm5lY3Rvcl92dGFibGUgY29ubmVjdG9yX3Z0YWJsZSA9IHsKLSAgICBjb25uZWN0b3JfcmVmLCBjb25uZWN0b3JfdW5yZWYsIGNvbm5lY3Rvcl9zaHV0ZG93biwgY29ubmVjdG9yX2Nvbm5lY3R9OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5IGJhc2U7Ci0gIGdwcl9yZWZjb3VudCByZWZzOwotICBncnBjX2NoYW5uZWxfYXJncyAqbWVyZ2VfYXJnczsKLSAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2VjdXJpdHlfY29ubmVjdG9yOwotICBncnBjX2NoYW5uZWwgKm1hc3RlcjsKLX0gc3ViY2hhbm5lbF9mYWN0b3J5OwotCi1zdGF0aWMgdm9pZCBzdWJjaGFubmVsX2ZhY3RvcnlfcmVmKGdycGNfc3ViY2hhbm5lbF9mYWN0b3J5ICpzY2YpIHsKLSAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmID0gKHN1YmNoYW5uZWxfZmFjdG9yeSAqKXNjZjsKLSAgZ3ByX3JlZigmZi0+cmVmcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN1YmNoYW5uZWxfZmFjdG9yeV91bnJlZihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N1YmNoYW5uZWxfZmFjdG9yeSAqc2NmKSB7Ci0gIHN1YmNoYW5uZWxfZmFjdG9yeSAqZiA9IChzdWJjaGFubmVsX2ZhY3RvcnkgKilzY2Y7Ci0gIGlmIChncHJfdW5yZWYoJmYtPnJlZnMpKSB7Ci0gICAgR1JQQ19TRUNVUklUWV9DT05ORUNUT1JfVU5SRUYoJmYtPnNlY3VyaXR5X2Nvbm5lY3Rvci0+YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViY2hhbm5lbF9mYWN0b3J5Iik7Ci0gICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKGV4ZWNfY3R4LCBmLT5tYXN0ZXIsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKLSAgICBncnBjX2NoYW5uZWxfYXJnc19kZXN0cm95KGYtPm1lcmdlX2FyZ3MpOwotICAgIGdwcl9mcmVlKGYpOwotICB9Ci19Ci0KLXN0YXRpYyBncnBjX3N1YmNoYW5uZWwgKnN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbCgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnkgKnNjZiwKLSAgICBncnBjX3N1YmNoYW5uZWxfYXJncyAqYXJncykgewotICBzdWJjaGFubmVsX2ZhY3RvcnkgKmYgPSAoc3ViY2hhbm5lbF9mYWN0b3J5ICopc2NmOwotICBjb25uZWN0b3IgKmMgPSBncHJfbWFsbG9jKHNpemVvZigqYykpOwotICBncnBjX2NoYW5uZWxfYXJncyAqZmluYWxfYXJncyA9Ci0gICAgICBncnBjX2NoYW5uZWxfYXJnc19tZXJnZShhcmdzLT5hcmdzLCBmLT5tZXJnZV9hcmdzKTsKLSAgZ3JwY19zdWJjaGFubmVsICpzOwotICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gIGMtPmJhc2UudnRhYmxlID0gJmNvbm5lY3Rvcl92dGFibGU7Ci0gIGMtPnNlY3VyaXR5X2Nvbm5lY3RvciA9IGYtPnNlY3VyaXR5X2Nvbm5lY3RvcjsKLSAgZ3ByX211X2luaXQoJmMtPm11KTsKLSAgZ3ByX3JlZl9pbml0KCZjLT5yZWZzLCAxKTsKLSAgYXJncy0+YXJncyA9IGZpbmFsX2FyZ3M7Ci0gIHMgPSBncnBjX3N1YmNoYW5uZWxfY3JlYXRlKGV4ZWNfY3R4LCAmYy0+YmFzZSwgYXJncyk7Ci0gIGdycGNfY29ubmVjdG9yX3VucmVmKGV4ZWNfY3R4LCAmYy0+YmFzZSk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koZmluYWxfYXJncyk7Ci0gIHJldHVybiBzOwotfQotCi1zdGF0aWMgY29uc3QgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdnRhYmxlIHN1YmNoYW5uZWxfZmFjdG9yeV92dGFibGUgPSB7Ci0gICAgc3ViY2hhbm5lbF9mYWN0b3J5X3JlZiwgc3ViY2hhbm5lbF9mYWN0b3J5X3VucmVmLAotICAgIHN1YmNoYW5uZWxfZmFjdG9yeV9jcmVhdGVfc3ViY2hhbm5lbH07Ci0KLS8qIENyZWF0ZSBhIHNlY3VyZSBjbGllbnQgY2hhbm5lbDoKLSAgIEFzeW5jaHJvbm91c2x5OiAtIHJlc29sdmUgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgLSBjb25uZWN0IHRvIGl0ICh0cnlpbmcgYWx0ZXJuYXRpdmVzIGFzIHByZXNlbnRlZCkKLSAgICAgICAgICAgICAgICAgICAtIHBlcmZvcm0gaGFuZHNoYWtlcyAqLwotZ3JwY19jaGFubmVsICpncnBjX3NlY3VyZV9jaGFubmVsX2NyZWF0ZShncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZXNlcnZlZCkgewotICBncnBjX2NoYW5uZWwgKmNoYW5uZWw7Ci0gIGdycGNfYXJnIGNvbm5lY3Rvcl9hcmc7Ci0gIGdycGNfY2hhbm5lbF9hcmdzICphcmdzX2NvcHk7Ci0gIGdycGNfY2hhbm5lbF9hcmdzICpuZXdfYXJnc19mcm9tX2Nvbm5lY3RvcjsKLSAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2VjdXJpdHlfY29ubmVjdG9yOwotICBncnBjX3Jlc29sdmVyICpyZXNvbHZlcjsKLSAgc3ViY2hhbm5lbF9mYWN0b3J5ICpmOwotICBncnBjX2V4ZWNfY3R4IGV4ZWNfY3R4ID0gR1JQQ19FWEVDX0NUWF9JTklUOwotCi0gIEdSUENfQVBJX1RSQUNFKAotICAgICAgImdycGNfc2VjdXJlX2NoYW5uZWxfY3JlYXRlKGNyZWRzPSVwLCB0YXJnZXQ9JXMsIGFyZ3M9JXAsICIKLSAgICAgICJyZXNlcnZlZD0lcCkiLAotICAgICAgNCwgKGNyZWRzLCB0YXJnZXQsIGFyZ3MsIHJlc2VydmVkKSk7Ci0gIEdQUl9BU1NFUlQocmVzZXJ2ZWQgPT0gTlVMTCk7Ci0KLSAgaWYgKGdycGNfZmluZF9zZWN1cml0eV9jb25uZWN0b3JfaW5fYXJncyhhcmdzKSAhPSBOVUxMKSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJDYW5ub3Qgc2V0IHNlY3VyaXR5IGNvbnRleHQgaW4gY2hhbm5lbCBhcmdzLiIpOwotICAgIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7Ci0gICAgcmV0dXJuIGdycGNfbGFtZV9jbGllbnRfY2hhbm5lbF9jcmVhdGUoCi0gICAgICAgIHRhcmdldCwgR1JQQ19TVEFUVVNfSU5URVJOQUwsCi0gICAgICAgICJTZWN1cml0eSBjb25uZWN0b3IgZXhpc3RzIGluIGNoYW5uZWwgYXJncy4iKTsKLSAgfQotCi0gIGlmIChncnBjX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlX3NlY3VyaXR5X2Nvbm5lY3RvcigKLSAgICAgICAgICBjcmVkcywgdGFyZ2V0LCBhcmdzLCAmc2VjdXJpdHlfY29ubmVjdG9yLCAmbmV3X2FyZ3NfZnJvbV9jb25uZWN0b3IpICE9Ci0gICAgICBHUlBDX1NFQ1VSSVRZX09LKSB7Ci0gICAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKLSAgICByZXR1cm4gZ3JwY19sYW1lX2NsaWVudF9jaGFubmVsX2NyZWF0ZSgKLSAgICAgICAgdGFyZ2V0LCBHUlBDX1NUQVRVU19JTlRFUk5BTCwgIkZhaWxlZCB0byBjcmVhdGUgc2VjdXJpdHkgY29ubmVjdG9yLiIpOwotICB9Ci0KLSAgY29ubmVjdG9yX2FyZyA9IGdycGNfc2VjdXJpdHlfY29ubmVjdG9yX3RvX2FyZygmc2VjdXJpdHlfY29ubmVjdG9yLT5iYXNlKTsKLSAgYXJnc19jb3B5ID0gZ3JwY19jaGFubmVsX2FyZ3NfY29weV9hbmRfYWRkKAotICAgICAgbmV3X2FyZ3NfZnJvbV9jb25uZWN0b3IgIT0gTlVMTCA/IG5ld19hcmdzX2Zyb21fY29ubmVjdG9yIDogYXJncywKLSAgICAgICZjb25uZWN0b3JfYXJnLCAxKTsKLQotICBjaGFubmVsID0gZ3JwY19jaGFubmVsX2NyZWF0ZSgmZXhlY19jdHgsIHRhcmdldCwgYXJnc19jb3B5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NMSUVOVF9DSEFOTkVMLCBOVUxMKTsKLQotICBmID0gZ3ByX21hbGxvYyhzaXplb2YoKmYpKTsKLSAgZi0+YmFzZS52dGFibGUgPSAmc3ViY2hhbm5lbF9mYWN0b3J5X3Z0YWJsZTsKLSAgZ3ByX3JlZl9pbml0KCZmLT5yZWZzLCAxKTsKLSAgR1JQQ19TRUNVUklUWV9DT05ORUNUT1JfUkVGKCZzZWN1cml0eV9jb25uZWN0b3ItPmJhc2UsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKLSAgZi0+c2VjdXJpdHlfY29ubmVjdG9yID0gc2VjdXJpdHlfY29ubmVjdG9yOwotICBmLT5tZXJnZV9hcmdzID0gZ3JwY19jaGFubmVsX2FyZ3NfY29weShhcmdzX2NvcHkpOwotICBmLT5tYXN0ZXIgPSBjaGFubmVsOwotICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfUkVGKGNoYW5uZWwsICJzdWJjaGFubmVsX2ZhY3RvcnkiKTsKLSAgcmVzb2x2ZXIgPSBncnBjX3Jlc29sdmVyX2NyZWF0ZSh0YXJnZXQsICZmLT5iYXNlKTsKLSAgaWYgKHJlc29sdmVyKSB7Ci0gICAgZ3JwY19jbGllbnRfY2hhbm5lbF9zZXRfcmVzb2x2ZXIoCi0gICAgICAgICZleGVjX2N0eCwgZ3JwY19jaGFubmVsX2dldF9jaGFubmVsX3N0YWNrKGNoYW5uZWwpLCByZXNvbHZlcik7Ci0gICAgR1JQQ19SRVNPTFZFUl9VTlJFRigmZXhlY19jdHgsIHJlc29sdmVyLCAiY3JlYXRlIik7Ci0gIH0KLSAgZ3JwY19zdWJjaGFubmVsX2ZhY3RvcnlfdW5yZWYoJmV4ZWNfY3R4LCAmZi0+YmFzZSk7Ci0gIEdSUENfU0VDVVJJVFlfQ09OTkVDVE9SX1VOUkVGKCZzZWN1cml0eV9jb25uZWN0b3ItPmJhc2UsICJjaGFubmVsX2NyZWF0ZSIpOwotICBncnBjX2NoYW5uZWxfYXJnc19kZXN0cm95KGFyZ3NfY29weSk7Ci0gIGlmIChuZXdfYXJnc19mcm9tX2Nvbm5lY3RvciAhPSBOVUxMKSB7Ci0gICAgZ3JwY19jaGFubmVsX2FyZ3NfZGVzdHJveShuZXdfYXJnc19mcm9tX2Nvbm5lY3Rvcik7Ci0gIH0KLQotICBpZiAoIXJlc29sdmVyKSB7Ci0gICAgR1JQQ19DSEFOTkVMX0lOVEVSTkFMX1VOUkVGKCZleGVjX2N0eCwgY2hhbm5lbCwgInN1YmNoYW5uZWxfZmFjdG9yeSIpOwotICAgIGNoYW5uZWwgPSBOVUxMOwotICB9Ci0gIGdycGNfZXhlY19jdHhfZmluaXNoKCZleGVjX2N0eCk7Ci0KLSAgcmV0dXJuIGNoYW5uZWw7Ci19CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMgYi9zcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzJlZTUuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlIDxncnBjL2dycGMuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+Ci0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3Jlc29sdmVfYWRkcmVzcy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci90Y3Bfc2VydmVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCi0KLXN0YXRpYyB2b2lkIHNldHVwX3RyYW5zcG9ydChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQpIHsKLSAgZ3JwY19zZXJ2ZXJfc2V0dXBfdHJhbnNwb3J0KGV4ZWNfY3R4LCBzZXJ2ZXIsIHRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc2VydmVyX2dldF9jaGFubmVsX2FyZ3Moc2VydmVyKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIG5ld190cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19lbmRwb2ludCAqdGNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3RjcF9zZXJ2ZXJfYWNjZXB0b3IgKmFjY2VwdG9yKSB7Ci0gIC8qCi0gICAqIEJld2FyZSB0aGF0IHRoZSBjYWxsIHRvIGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoKSBoYXMgdG8gaGFwcGVuIGJlZm9yZQotICAgKiBncnBjX3RjcF9zZXJ2ZXJfZGVzdHJveSgpLiBUaGlzIGlzIGZpbmUgaGVyZSwgYnV0IHNpbWlsYXIgY29kZQotICAgKiBhc3luY2hyb25vdXNseSBkb2luZyBhIGhhbmRzaGFrZSBpbnN0ZWFkIG9mIGNhbGxpbmcgZ3JwY190Y3Bfc2VydmVyX3N0YXJ0KCkKLSAgICogKGFzIGluIHNlcnZlcl9zZWN1cmVfY2h0dHAyLmMpIG5lZWRzIHRvIGFkZCBzeW5jaHJvbml6YXRpb24gdG8gYXZvaWQgdGhpcwotICAgKiBjYXNlLgotICAgKi8KLSAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCA9IGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoCi0gICAgICBleGVjX2N0eCwgZ3JwY19zZXJ2ZXJfZ2V0X2NoYW5uZWxfYXJncyhzZXJ2ZXIpLCB0Y3AsIDApOwotICBzZXR1cF90cmFuc3BvcnQoZXhlY19jdHgsIHNlcnZlciwgdHJhbnNwb3J0KTsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3N0YXJ0X3JlYWRpbmcoZXhlY19jdHgsIHRyYW5zcG9ydCwgTlVMTCwgMCk7Ci19Ci0KLS8qIFNlcnZlciBjYWxsYmFjazogc3RhcnQgbGlzdGVuaW5nIG9uIG91ciBwb3J0cyAqLwotc3RhdGljIHZvaWQgc3RhcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfc2VydmVyICpzZXJ2ZXIsIHZvaWQgKnRjcHAsCi0gICAgICAgICAgICAgICAgICBncnBjX3BvbGxzZXQgKipwb2xsc2V0cywgc2l6ZV90IHBvbGxzZXRfY291bnQpIHsKLSAgZ3JwY190Y3Bfc2VydmVyICp0Y3AgPSB0Y3BwOwotICBncnBjX3RjcF9zZXJ2ZXJfc3RhcnQoZXhlY19jdHgsIHRjcCwgcG9sbHNldHMsIHBvbGxzZXRfY291bnQsIG5ld190cmFuc3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIpOwotfQotCi0vKiBTZXJ2ZXIgY2FsbGJhY2s6IGRlc3Ryb3kgdGhlIHRjcCBsaXN0ZW5lciAoc28gd2UgZG9uJ3QgZ2VuZXJhdGUgZnVydGhlcgotICAgY2FsbGJhY2tzKSAqLwotc3RhdGljIHZvaWQgZGVzdHJveShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19zZXJ2ZXIgKnNlcnZlciwgdm9pZCAqdGNwcCwKLSAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpkZXN0cm95X2RvbmUpIHsKLSAgZ3JwY190Y3Bfc2VydmVyICp0Y3AgPSB0Y3BwOwotICBncnBjX3RjcF9zZXJ2ZXJfdW5yZWYoZXhlY19jdHgsIHRjcCk7Ci0gIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgZGVzdHJveV9kb25lLCB0cnVlLCBOVUxMKTsKLX0KLQotaW50IGdycGNfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0KGdycGNfc2VydmVyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKmFkZHIpIHsKLSAgZ3JwY19yZXNvbHZlZF9hZGRyZXNzZXMgKnJlc29sdmVkID0gTlVMTDsKLSAgZ3JwY190Y3Bfc2VydmVyICp0Y3AgPSBOVUxMOwotICBzaXplX3QgaTsKLSAgdW5zaWduZWQgY291bnQgPSAwOwotICBpbnQgcG9ydF9udW0gPSAtMTsKLSAgaW50IHBvcnRfdGVtcDsKLSAgZ3JwY19leGVjX2N0eCBleGVjX2N0eCA9IEdSUENfRVhFQ19DVFhfSU5JVDsKLQotICBHUlBDX0FQSV9UUkFDRSgiZ3JwY19zZXJ2ZXJfYWRkX2luc2VjdXJlX2h0dHAyX3BvcnQoc2VydmVyPSVwLCBhZGRyPSVzKSIsIDIsCi0gICAgICAgICAgICAgICAgIChzZXJ2ZXIsIGFkZHIpKTsKLQotICByZXNvbHZlZCA9IGdycGNfYmxvY2tpbmdfcmVzb2x2ZV9hZGRyZXNzKGFkZHIsICJodHRwIik7Ci0gIGlmICghcmVzb2x2ZWQpIHsKLSAgICBnb3RvIGVycm9yOwotICB9Ci0KLSAgdGNwID0gZ3JwY190Y3Bfc2VydmVyX2NyZWF0ZShOVUxMKTsKLSAgR1BSX0FTU0VSVCh0Y3ApOwotCi0gIGZvciAoaSA9IDA7IGkgPCByZXNvbHZlZC0+bmFkZHJzOyBpKyspIHsKLSAgICBwb3J0X3RlbXAgPSBncnBjX3RjcF9zZXJ2ZXJfYWRkX3BvcnQoCi0gICAgICAgIHRjcCwgKHN0cnVjdCBzb2NrYWRkciAqKSZyZXNvbHZlZC0+YWRkcnNbaV0uYWRkciwKLSAgICAgICAgcmVzb2x2ZWQtPmFkZHJzW2ldLmxlbik7Ci0gICAgaWYgKHBvcnRfdGVtcCA+IDApIHsKLSAgICAgIGlmIChwb3J0X251bSA9PSAtMSkgewotICAgICAgICBwb3J0X251bSA9IHBvcnRfdGVtcDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUl9BU1NFUlQocG9ydF9udW0gPT0gcG9ydF90ZW1wKTsKLSAgICAgIH0KLSAgICAgIGNvdW50Kys7Ci0gICAgfQotICB9Ci0gIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJObyBhZGRyZXNzIGFkZGVkIG91dCBvZiB0b3RhbCAlZCByZXNvbHZlZCIsCi0gICAgICAgICAgICByZXNvbHZlZC0+bmFkZHJzKTsKLSAgICBnb3RvIGVycm9yOwotICB9Ci0gIGlmIChjb3VudCAhPSByZXNvbHZlZC0+bmFkZHJzKSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJPbmx5ICVkIGFkZHJlc3NlcyBhZGRlZCBvdXQgb2YgdG90YWwgJWQgcmVzb2x2ZWQiLAotICAgICAgICAgICAgY291bnQsIHJlc29sdmVkLT5uYWRkcnMpOwotICB9Ci0gIGdycGNfcmVzb2x2ZWRfYWRkcmVzc2VzX2Rlc3Ryb3kocmVzb2x2ZWQpOwotCi0gIC8qIFJlZ2lzdGVyIHdpdGggdGhlIHNlcnZlciBvbmx5IHVwb24gc3VjY2VzcyAqLwotICBncnBjX3NlcnZlcl9hZGRfbGlzdGVuZXIoJmV4ZWNfY3R4LCBzZXJ2ZXIsIHRjcCwgc3RhcnQsIGRlc3Ryb3kpOwotICBnb3RvIGRvbmU7Ci0KLS8qIEVycm9yIHBhdGg6IGNsZWFudXAgYW5kIHJldHVybiAqLwotZXJyb3I6Ci0gIGlmIChyZXNvbHZlZCkgewotICAgIGdycGNfcmVzb2x2ZWRfYWRkcmVzc2VzX2Rlc3Ryb3kocmVzb2x2ZWQpOwotICB9Ci0gIGlmICh0Y3ApIHsKLSAgICBncnBjX3RjcF9zZXJ2ZXJfdW5yZWYoJmV4ZWNfY3R4LCB0Y3ApOwotICB9Ci0gIHBvcnRfbnVtID0gMDsKLQotZG9uZToKLSAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKLSAgcmV0dXJuIHBvcnRfbnVtOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWZlMzE5Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KLQotLyogaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN1cHBvcnRlZF92ZXJzaW9uc1tdID0geyJoMiJ9OwotCi1pbnQgZ3JwY19jaHR0cDJfaXNfYWxwbl92ZXJzaW9uX3N1cHBvcnRlZChjb25zdCBjaGFyICp2ZXJzaW9uLCBzaXplX3Qgc2l6ZSkgewotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMDsgaSA8IEdQUl9BUlJBWV9TSVpFKHN1cHBvcnRlZF92ZXJzaW9ucyk7IGkrKykgewotICAgIGlmICghc3RybmNtcCh2ZXJzaW9uLCBzdXBwb3J0ZWRfdmVyc2lvbnNbaV0sIHNpemUpKSByZXR1cm4gMTsKLSAgfQotICByZXR1cm4gMDsKLX0KLQotc2l6ZV90IGdycGNfY2h0dHAyX251bV9hbHBuX3ZlcnNpb25zKHZvaWQpIHsKLSAgcmV0dXJuIEdQUl9BUlJBWV9TSVpFKHN1cHBvcnRlZF92ZXJzaW9ucyk7Ci19Ci0KLWNvbnN0IGNoYXIgKmdycGNfY2h0dHAyX2dldF9hbHBuX3ZlcnNpb25faW5kZXgoc2l6ZV90IGkpIHsKLSAgR1BSX0FTU0VSVChpIDwgR1BSX0FSUkFZX1NJWkUoc3VwcG9ydGVkX3ZlcnNpb25zKSk7Ci0gIHJldHVybiBzdXBwb3J0ZWRfdmVyc2lvbnNbaV07Ci19CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MTg0ZTYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfQUxQTl9ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9BTFBOX0gKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0vKiBSZXR1bnMgMSBpZiB0aGUgdmVyc2lvbiBpcyBzdXBwb3J0ZWQsIDAgb3RoZXJ3aXNlLiAqLwotaW50IGdycGNfY2h0dHAyX2lzX2FscG5fdmVyc2lvbl9zdXBwb3J0ZWQoY29uc3QgY2hhciAqdmVyc2lvbiwgc2l6ZV90IHNpemUpOwotCi0vKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcHJvdG9jb2wgdmVyc2lvbnMgdG8gYWR2ZXJ0aXNlICovCi1zaXplX3QgZ3JwY19jaHR0cDJfbnVtX2FscG5fdmVyc2lvbnModm9pZCk7Ci0KLS8qIFJldHVybnMgdGhlIHByb3RvY29sIHZlcnNpb24gYXQgaW5kZXggaSAoMCA8PSBpIDwKLSAqIGdycGNfY2h0dHAyX251bV9hbHBuX3ZlcnNpb25zKCkpICovCi1jb25zdCBjaGFyICpncnBjX2NodHRwMl9nZXRfYWxwbl92ZXJzaW9uX2luZGV4KHNpemVfdCBpKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9BTFBOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWQwYWEzLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIgotCi1zdGF0aWMgY29uc3QgY2hhciBhbHBoYWJldFtdID0KLSAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgdWludDE2X3QgYml0czsKLSAgdWludDhfdCBsZW5ndGg7Ci19IGI2NF9odWZmX3N5bTsKLQotc3RhdGljIGNvbnN0IGI2NF9odWZmX3N5bSBodWZmX2FscGhhYmV0WzY0XSA9IHsKLSAgICB7MHgyMSwgNn0sIHsweDVkLCA3fSwgezB4NWUsIDd9LCAgIHsweDVmLCA3fSwgezB4NjAsIDd9LCB7MHg2MSwgN30sCi0gICAgezB4NjIsIDd9LCB7MHg2MywgN30sIHsweDY0LCA3fSwgICB7MHg2NSwgN30sIHsweDY2LCA3fSwgezB4NjcsIDd9LAotICAgIHsweDY4LCA3fSwgezB4NjksIDd9LCB7MHg2YSwgN30sICAgezB4NmIsIDd9LCB7MHg2YywgN30sIHsweDZkLCA3fSwKLSAgICB7MHg2ZSwgN30sIHsweDZmLCA3fSwgezB4NzAsIDd9LCAgIHsweDcxLCA3fSwgezB4NzIsIDd9LCB7MHhmYywgOH0sCi0gICAgezB4NzMsIDd9LCB7MHhmZCwgOH0sIHsweDMsIDV9LCAgICB7MHgyMywgNn0sIHsweDQsIDV9LCAgezB4MjQsIDZ9LAotICAgIHsweDUsIDV9LCAgezB4MjUsIDZ9LCB7MHgyNiwgNn0sICAgezB4MjcsIDZ9LCB7MHg2LCA1fSwgIHsweDc0LCA3fSwKLSAgICB7MHg3NSwgN30sIHsweDI4LCA2fSwgezB4MjksIDZ9LCAgIHsweDJhLCA2fSwgezB4NywgNX0sICB7MHgyYiwgNn0sCi0gICAgezB4NzYsIDd9LCB7MHgyYywgNn0sIHsweDgsIDV9LCAgICB7MHg5LCA1fSwgIHsweDJkLCA2fSwgezB4NzcsIDd9LAotICAgIHsweDc4LCA3fSwgezB4NzksIDd9LCB7MHg3YSwgN30sICAgezB4N2IsIDd9LCB7MHgwLCA1fSwgIHsweDEsIDV9LAotICAgIHsweDIsIDV9LCAgezB4MTksIDZ9LCB7MHgxYSwgNn0sICAgezB4MWIsIDZ9LCB7MHgxYywgNn0sIHsweDFkLCA2fSwKLSAgICB7MHgxZSwgNn0sIHsweDFmLCA2fSwgezB4N2ZiLCAxMX0sIHsweDE4LCA2fX07Ci0KLXN0YXRpYyBjb25zdCB1aW50OF90IHRhaWxfeHRyYVszXSA9IHswLCAyLCAzfTsKLQotZ3ByX3NsaWNlIGdycGNfY2h0dHAyX2Jhc2U2NF9lbmNvZGUoZ3ByX3NsaWNlIGlucHV0KSB7Ci0gIHNpemVfdCBpbnB1dF9sZW5ndGggPSBHUFJfU0xJQ0VfTEVOR1RIKGlucHV0KTsKLSAgc2l6ZV90IGlucHV0X3RyaXBsZXRzID0gaW5wdXRfbGVuZ3RoIC8gMzsKLSAgc2l6ZV90IHRhaWxfY2FzZSA9IGlucHV0X2xlbmd0aCAlIDM7Ci0gIHNpemVfdCBvdXRwdXRfbGVuZ3RoID0gaW5wdXRfdHJpcGxldHMgKiA0ICsgdGFpbF94dHJhW3RhaWxfY2FzZV07Ci0gIGdwcl9zbGljZSBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKG91dHB1dF9sZW5ndGgpOwotICB1aW50OF90ICppbiA9IEdQUl9TTElDRV9TVEFSVF9QVFIoaW5wdXQpOwotICBjaGFyICpvdXQgPSAoY2hhciAqKUdQUl9TTElDRV9TVEFSVF9QVFIob3V0cHV0KTsKLSAgc2l6ZV90IGk7Ci0KLSAgLyogZW5jb2RlIGZ1bGwgdHJpcGxldHMgKi8KLSAgZm9yIChpID0gMDsgaSA8IGlucHV0X3RyaXBsZXRzOyBpKyspIHsKLSAgICBvdXRbMF0gPSBhbHBoYWJldFtpblswXSA+PiAyXTsKLSAgICBvdXRbMV0gPSBhbHBoYWJldFsoKGluWzBdICYgMHgzKSA8PCA0KSB8IChpblsxXSA+PiA0KV07Ci0gICAgb3V0WzJdID0gYWxwaGFiZXRbKChpblsxXSAmIDB4ZikgPDwgMikgfCAoaW5bMl0gPj4gNildOwotICAgIG91dFszXSA9IGFscGhhYmV0W2luWzJdICYgMHgzZl07Ci0gICAgb3V0ICs9IDQ7Ci0gICAgaW4gKz0gMzsKLSAgfQotCi0gIC8qIGVuY29kZSB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gIHN3aXRjaCAodGFpbF9jYXNlKSB7Ci0gICAgY2FzZSAwOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgb3V0WzBdID0gYWxwaGFiZXRbaW5bMF0gPj4gMl07Ci0gICAgICBvdXRbMV0gPSBhbHBoYWJldFsoaW5bMF0gJiAweDMpIDw8IDRdOwotICAgICAgb3V0ICs9IDI7Ci0gICAgICBpbiArPSAxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgb3V0WzBdID0gYWxwaGFiZXRbaW5bMF0gPj4gMl07Ci0gICAgICBvdXRbMV0gPSBhbHBoYWJldFsoKGluWzBdICYgMHgzKSA8PCA0KSB8IChpblsxXSA+PiA0KV07Ci0gICAgICBvdXRbMl0gPSBhbHBoYWJldFsoaW5bMV0gJiAweGYpIDw8IDJdOwotICAgICAgb3V0ICs9IDM7Ci0gICAgICBpbiArPSAyOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICBHUFJfQVNTRVJUKG91dCA9PSAoY2hhciAqKUdQUl9TTElDRV9FTkRfUFRSKG91dHB1dCkpOwotICBHUFJfQVNTRVJUKGluID09IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KSk7Ci0gIHJldHVybiBvdXRwdXQ7Ci19Ci0KLWdwcl9zbGljZSBncnBjX2NodHRwMl9odWZmbWFuX2NvbXByZXNzKGdwcl9zbGljZSBpbnB1dCkgewotICBzaXplX3QgbmJpdHM7Ci0gIHVpbnQ4X3QgKmluOwotICB1aW50OF90ICpvdXQ7Ci0gIGdwcl9zbGljZSBvdXRwdXQ7Ci0gIHVpbnQzMl90IHRlbXAgPSAwOwotICB1aW50MzJfdCB0ZW1wX2xlbmd0aCA9IDA7Ci0KLSAgbmJpdHMgPSAwOwotICBmb3IgKGluID0gR1BSX1NMSUNFX1NUQVJUX1BUUihpbnB1dCk7IGluICE9IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KTsgKytpbikgewotICAgIG5iaXRzICs9IGdycGNfY2h0dHAyX2h1ZmZzeW1zWyppbl0ubGVuZ3RoOwotICB9Ci0KLSAgb3V0cHV0ID0gZ3ByX3NsaWNlX21hbGxvYyhuYml0cyAvIDggKyAobmJpdHMgJSA4ICE9IDApKTsKLSAgb3V0ID0gR1BSX1NMSUNFX1NUQVJUX1BUUihvdXRwdXQpOwotICBmb3IgKGluID0gR1BSX1NMSUNFX1NUQVJUX1BUUihpbnB1dCk7IGluICE9IEdQUl9TTElDRV9FTkRfUFRSKGlucHV0KTsgKytpbikgewotICAgIGludCBzeW0gPSAqaW47Ci0gICAgdGVtcCA8PD0gZ3JwY19jaHR0cDJfaHVmZnN5bXNbc3ltXS5sZW5ndGg7Ci0gICAgdGVtcCB8PSBncnBjX2NodHRwMl9odWZmc3ltc1tzeW1dLmJpdHM7Ci0gICAgdGVtcF9sZW5ndGggKz0gZ3JwY19jaHR0cDJfaHVmZnN5bXNbc3ltXS5sZW5ndGg7Ci0KLSAgICB3aGlsZSAodGVtcF9sZW5ndGggPiA4KSB7Ci0gICAgICB0ZW1wX2xlbmd0aCAtPSA4OwotICAgICAgKm91dCsrID0gKHVpbnQ4X3QpKHRlbXAgPj4gdGVtcF9sZW5ndGgpOwotICAgIH0KLSAgfQotCi0gIGlmICh0ZW1wX2xlbmd0aCkgewotICAgIC8qIE5COiB0aGUgZm9sbG93aW5nIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb24gbmVlZHMgdG8gYmUgaW4gaXRzCi0gICAgICogZXhwYW5kZWQgZm9ybSBkdWUgdG8gdGhlICJpbnRlZ3JhbCBwcm9tb3Rpb24iIHBlcmZvcm1lZCAoc2VlIHNlY3Rpb24KLSAgICAgKiAzLjIuMS4xIG9mIHRoZSBDODkgZHJhZnQgc3RhbmRhcmQpLiBBIGNhc3QgdG8gdGhlIHNtYWxsZXIgY29udGFpbmVyIHR5cGUKLSAgICAgKiBpcyB0aGVuIHJlcXVpcmVkIHRvIGF2b2lkIHRoZSBjb21waWxlciB3YXJuaW5nICovCi0gICAgKm91dCsrID0gKHVpbnQ4X3QpKCh1aW50OF90KSh0ZW1wIDw8ICg4dSAtIHRlbXBfbGVuZ3RoKSkgfAotICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCkoMHhmZnUgPj4gdGVtcF9sZW5ndGgpKTsKLSAgfQotCi0gIEdQUl9BU1NFUlQob3V0ID09IEdQUl9TTElDRV9FTkRfUFRSKG91dHB1dCkpOwotCi0gIHJldHVybiBvdXRwdXQ7Ci19Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgdWludDMyX3QgdGVtcDsKLSAgdWludDMyX3QgdGVtcF9sZW5ndGg7Ci0gIHVpbnQ4X3QgKm91dDsKLX0gaHVmZl9vdXQ7Ci0KLXN0YXRpYyB2b2lkIGVuY19mbHVzaF9zb21lKGh1ZmZfb3V0ICpvdXQpIHsKLSAgd2hpbGUgKG91dC0+dGVtcF9sZW5ndGggPiA4KSB7Ci0gICAgb3V0LT50ZW1wX2xlbmd0aCAtPSA4OwotICAgICpvdXQtPm91dCsrID0gKHVpbnQ4X3QpKG91dC0+dGVtcCA+PiBvdXQtPnRlbXBfbGVuZ3RoKTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBlbmNfYWRkMihodWZmX291dCAqb3V0LCB1aW50OF90IGEsIHVpbnQ4X3QgYikgewotICBiNjRfaHVmZl9zeW0gc2EgPSBodWZmX2FscGhhYmV0W2FdOwotICBiNjRfaHVmZl9zeW0gc2IgPSBodWZmX2FscGhhYmV0W2JdOwotICBvdXQtPnRlbXAgPSAob3V0LT50ZW1wIDw8IChzYS5sZW5ndGggKyBzYi5sZW5ndGgpKSB8Ci0gICAgICAgICAgICAgICgodWludDMyX3Qpc2EuYml0cyA8PCBzYi5sZW5ndGgpIHwgc2IuYml0czsKLSAgb3V0LT50ZW1wX2xlbmd0aCArPSAodWludDMyX3Qpc2EubGVuZ3RoICsgKHVpbnQzMl90KXNiLmxlbmd0aDsKLSAgZW5jX2ZsdXNoX3NvbWUob3V0KTsKLX0KLQotc3RhdGljIHZvaWQgZW5jX2FkZDEoaHVmZl9vdXQgKm91dCwgdWludDhfdCBhKSB7Ci0gIGI2NF9odWZmX3N5bSBzYSA9IGh1ZmZfYWxwaGFiZXRbYV07Ci0gIG91dC0+dGVtcCA9IChvdXQtPnRlbXAgPDwgc2EubGVuZ3RoKSB8IHNhLmJpdHM7Ci0gIG91dC0+dGVtcF9sZW5ndGggKz0gc2EubGVuZ3RoOwotICBlbmNfZmx1c2hfc29tZShvdXQpOwotfQotCi1ncHJfc2xpY2UgZ3JwY19jaHR0cDJfYmFzZTY0X2VuY29kZV9hbmRfaHVmZm1hbl9jb21wcmVzcyhncHJfc2xpY2UgaW5wdXQpIHsKLSAgc2l6ZV90IGlucHV0X2xlbmd0aCA9IEdQUl9TTElDRV9MRU5HVEgoaW5wdXQpOwotICBzaXplX3QgaW5wdXRfdHJpcGxldHMgPSBpbnB1dF9sZW5ndGggLyAzOwotICBzaXplX3QgdGFpbF9jYXNlID0gaW5wdXRfbGVuZ3RoICUgMzsKLSAgc2l6ZV90IG91dHB1dF9zeW1zID0gaW5wdXRfdHJpcGxldHMgKiA0ICsgdGFpbF94dHJhW3RhaWxfY2FzZV07Ci0gIHNpemVfdCBtYXhfb3V0cHV0X2JpdHMgPSAxMSAqIG91dHB1dF9zeW1zOwotICBzaXplX3QgbWF4X291dHB1dF9sZW5ndGggPSBtYXhfb3V0cHV0X2JpdHMgLyA4ICsgKG1heF9vdXRwdXRfYml0cyAlIDggIT0gMCk7Ci0gIGdwcl9zbGljZSBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKG1heF9vdXRwdXRfbGVuZ3RoKTsKLSAgdWludDhfdCAqaW4gPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKGlucHV0KTsKLSAgdWludDhfdCAqc3RhcnRfb3V0ID0gR1BSX1NMSUNFX1NUQVJUX1BUUihvdXRwdXQpOwotICBodWZmX291dCBvdXQ7Ci0gIHNpemVfdCBpOwotCi0gIG91dC50ZW1wID0gMDsKLSAgb3V0LnRlbXBfbGVuZ3RoID0gMDsKLSAgb3V0Lm91dCA9IHN0YXJ0X291dDsKLQotICAvKiBlbmNvZGUgZnVsbCB0cmlwbGV0cyAqLwotICBmb3IgKGkgPSAwOyBpIDwgaW5wdXRfdHJpcGxldHM7IGkrKykgewotICAgIGVuY19hZGQyKCZvdXQsIGluWzBdID4+IDIsICh1aW50OF90KSgoaW5bMF0gJiAweDMpIDw8IDQpIHwgKGluWzFdID4+IDQpKTsKLSAgICBlbmNfYWRkMigmb3V0LCAodWludDhfdCkoKGluWzFdICYgMHhmKSA8PCAyKSB8IChpblsyXSA+PiA2KSwKLSAgICAgICAgICAgICAodWludDhfdCkoaW5bMl0gJiAweDNmKSk7Ci0gICAgaW4gKz0gMzsKLSAgfQotCi0gIC8qIGVuY29kZSB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gIHN3aXRjaCAodGFpbF9jYXNlKSB7Ci0gICAgY2FzZSAwOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgZW5jX2FkZDIoJm91dCwgaW5bMF0gPj4gMiwgKHVpbnQ4X3QpKChpblswXSAmIDB4MykgPDwgNCkpOwotICAgICAgaW4gKz0gMTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgIGVuY19hZGQyKCZvdXQsIGluWzBdID4+IDIsCi0gICAgICAgICAgICAgICAodWludDhfdCkoKGluWzBdICYgMHgzKSA8PCA0KSB8ICh1aW50OF90KShpblsxXSA+PiA0KSk7Ci0gICAgICBlbmNfYWRkMSgmb3V0LCAodWludDhfdCkoKGluWzFdICYgMHhmKSA8PCAyKSk7Ci0gICAgICBpbiArPSAyOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICBpZiAob3V0LnRlbXBfbGVuZ3RoKSB7Ci0gICAgLyogTkI6IHRoZSBmb2xsb3dpbmcgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbiBuZWVkcyB0byBiZSBpbiBpdHMKLSAgICAgKiBleHBhbmRlZCBmb3JtIGR1ZSB0byB0aGUgImludGVncmFsIHByb21vdGlvbiIgcGVyZm9ybWVkIChzZWUgc2VjdGlvbgotICAgICAqIDMuMi4xLjEgb2YgdGhlIEM4OSBkcmFmdCBzdGFuZGFyZCkuIEEgY2FzdCB0byB0aGUgc21hbGxlciBjb250YWluZXIgdHlwZQotICAgICAqIGlzIHRoZW4gcmVxdWlyZWQgdG8gYXZvaWQgdGhlIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgICAqb3V0Lm91dCsrID0gKHVpbnQ4X3QpKCh1aW50OF90KShvdXQudGVtcCA8PCAoOHUgLSBvdXQudGVtcF9sZW5ndGgpKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCkoMHhmZnUgPj4gb3V0LnRlbXBfbGVuZ3RoKSk7Ci0gIH0KLQotICBHUFJfQVNTRVJUKG91dC5vdXQgPD0gR1BSX1NMSUNFX0VORF9QVFIob3V0cHV0KSk7Ci0gIEdQUl9TTElDRV9TRVRfTEVOR1RIKG91dHB1dCwgb3V0Lm91dCAtIHN0YXJ0X291dCk7Ci0KLSAgR1BSX0FTU0VSVChpbiA9PSBHUFJfU0xJQ0VfRU5EX1BUUihpbnB1dCkpOwotICByZXR1cm4gb3V0cHV0OwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNWNkMWUuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0JJTl9FTkNPREVSX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0JJTl9FTkNPREVSX0gKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotCi0vKiBiYXNlNjQgZW5jb2RlIGEgc2xpY2UuIFJldHVybnMgYSBuZXcgc2xpY2UsIGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZQotICAgaW5wdXQgKi8KLWdwcl9zbGljZSBncnBjX2NodHRwMl9iYXNlNjRfZW5jb2RlKGdwcl9zbGljZSBpbnB1dCk7Ci0KLS8qIENvbXByZXNzIGEgc2xpY2Ugd2l0aCB0aGUgc3RhdGljIGh1ZmZtYW4gZW5jb2RlciBkZXRhaWxlZCBpbiB0aGUgaHBhY2sKLSAgIHN0YW5kYXJkLiBSZXR1cm5zIGEgbmV3IHNsaWNlLCBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgaW5wdXQgKi8KLWdwcl9zbGljZSBncnBjX2NodHRwMl9odWZmbWFuX2NvbXByZXNzKGdwcl9zbGljZSBpbnB1dCk7Ci0KLS8qIGVxdWl2YWxlbnQgdG86Ci0gICBncHJfc2xpY2UgeCA9IGdycGNfY2h0dHAyX2Jhc2U2NF9lbmNvZGUoaW5wdXQpOwotICAgZ3ByX3NsaWNlIHkgPSBncnBjX2NodHRwMl9odWZmbWFuX2NvbXByZXNzKHgpOwotICAgZ3ByX3NsaWNlX3VucmVmKHgpOwotICAgcmV0dXJuIHk7ICovCi1ncHJfc2xpY2UgZ3JwY19jaHR0cDJfYmFzZTY0X2VuY29kZV9hbmRfaHVmZm1hbl9jb21wcmVzcyhncHJfc2xpY2UgaW5wdXQpOwotCi0jZW5kaWYgLyogR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0JJTl9FTkNPREVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Njc0YmM5Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9ICi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotCi0vKiBDb21tb24gZGVmaW5pdGlvbnMgZm9yIGZyYW1lIGhhbmRsaW5nIGluIHRoZSBjaHR0cDIgdHJhbnNwb3J0ICovCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX1BBUlNFX09LLAotICBHUlBDX0NIVFRQMl9TVFJFQU1fRVJST1IsCi0gIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1IKLX0gZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3I7Ci0KLS8qIGRlZmluZWQgaW4gaW50ZXJuYWwuaCAqLwotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmc7Ci10eXBlZGVmIHN0cnVjdCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZzsKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9GUkFNRV9EQVRBIDAKLSNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfSEVBREVSIDEKLSNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfQ09OVElOVUFUSU9OIDkKLSNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTSAzCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX1NFVFRJTkdTIDQKLSNkZWZpbmUgR1JQQ19DSFRUUDJfRlJBTUVfUElORyA2Ci0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWSA3Ci0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZSQU1FX1dJTkRPV19VUERBVEUgOAotCi0jZGVmaW5lIEdSUENfQ0hUVFAyX01BWF9QQVlMT0FEX0xFTkdUSCAoKDEgPDwgMTQpIC0gMSkKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSAxCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZMQUdfQUNLIDEKLSNkZWZpbmUgR1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9IRUFERVJTIDQKLSNkZWZpbmUgR1JQQ19DSFRUUDJfREFUQV9GTEFHX1BBRERFRCA4Ci0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZMQUdfSEFTX1BSSU9SSVRZIDB4MjAKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMjVjM2MuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+Ci0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oIgotCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9pbml0KAotICAgIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyICpwYXJzZXIpIHsKLSAgcGFyc2VyLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0RBVEFfRkhfMDsKLSAgcGFyc2VyLT5wYXJzaW5nX2ZyYW1lID0gTlVMTDsKLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlcikgewotICBncnBjX2J5dGVfc3RyZWFtICpiczsKLSAgaWYgKHBhcnNlci0+cGFyc2luZ19mcmFtZSkgewotICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2ZpbmlzaGVkKGV4ZWNfY3R4LCBwYXJzZXItPnBhcnNpbmdfZnJhbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSk7Ci0gIH0KLSAgd2hpbGUgKAotICAgICAgKGJzID0gZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfcG9wKCZwYXJzZXItPmluY29taW5nX2ZyYW1lcykpKSB7Ci0gICAgZ3JwY19ieXRlX3N0cmVhbV9kZXN0cm95KGV4ZWNfY3R4LCBicyk7Ci0gIH0KLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlciwgdWludDhfdCBmbGFncykgewotICBpZiAoZmxhZ3MgJiB+R1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9TVFJFQU0pIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgInVuc3VwcG9ydGVkIGRhdGEgZmxhZ3M6IDB4JTAyeCIsIGZsYWdzKTsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfU1RSRUFNX0VSUk9SOwotICB9Ci0KLSAgaWYgKGZsYWdzICYgR1JQQ19DSFRUUDJfREFUQV9GTEFHX0VORF9TVFJFQU0pIHsKLSAgICBwYXJzZXItPmlzX2xhc3RfZnJhbWUgPSAxOwotICB9IGVsc2UgewotICAgIHBhcnNlci0+aXNfbGFzdF9mcmFtZSA9IDA7Ci0gIH0KLQotICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfbWVyZ2UoCi0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgKmhlYWRfZHN0LAotICAgIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlICp0YWlsX3NyYykgewotICBpZiAodGFpbF9zcmMtPmhlYWQgPT0gTlVMTCkgewotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChoZWFkX2RzdC0+aGVhZCA9PSBOVUxMKSB7Ci0gICAgKmhlYWRfZHN0ID0gKnRhaWxfc3JjOwotICAgIG1lbXNldCh0YWlsX3NyYywgMCwgc2l6ZW9mKCp0YWlsX3NyYykpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGhlYWRfZHN0LT50YWlsLT5uZXh0X21lc3NhZ2UgPSB0YWlsX3NyYy0+aGVhZDsKLSAgaGVhZF9kc3QtPnRhaWwgPSB0YWlsX3NyYy0+dGFpbDsKLSAgbWVtc2V0KHRhaWxfc3JjLCAwLCBzaXplb2YoKnRhaWxfc3JjKSk7Ci19Ci0KLWdycGNfYnl0ZV9zdHJlYW0gKmdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX3BvcCgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqcSkgewotICBncnBjX2J5dGVfc3RyZWFtICpvdXQ7Ci0gIGlmIChxLT5oZWFkID09IE5VTEwpIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotICBvdXQgPSAmcS0+aGVhZC0+YmFzZTsKLSAgaWYgKHEtPmhlYWQgPT0gcS0+dGFpbCkgewotICAgIG1lbXNldChxLCAwLCBzaXplb2YoKnEpKTsKLSAgfSBlbHNlIHsKLSAgICBxLT5oZWFkID0gcS0+aGVhZC0+bmV4dF9tZXNzYWdlOwotICB9Ci0gIHJldHVybiBvdXQ7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfZW5jb2RlX2RhdGEodWludDMyX3QgaWQsIGdwcl9zbGljZV9idWZmZXIgKmluYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3cml0ZV9ieXRlcywgaW50IGlzX2VvZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlciAqb3V0YnVmKSB7Ci0gIGdwcl9zbGljZSBoZHI7Ci0gIHVpbnQ4X3QgKnA7Ci0KLSAgaGRyID0gZ3ByX3NsaWNlX21hbGxvYyg5KTsKLSAgcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIoaGRyKTsKLSAgR1BSX0FTU0VSVCh3cml0ZV9ieXRlcyA8ICgxIDw8IDI0KSk7Ci0gICpwKysgPSAodWludDhfdCkod3JpdGVfYnl0ZXMgPj4gMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKHdyaXRlX2J5dGVzID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKHdyaXRlX2J5dGVzKTsKLSAgKnArKyA9IEdSUENfQ0hUVFAyX0ZSQU1FX0RBVEE7Ci0gICpwKysgPSBpc19lb2YgPyBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSA6IDA7Ci0gICpwKysgPSAodWludDhfdCkoaWQgPj4gMjQpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KShpZCA+PiA4KTsKLSAgKnArKyA9ICh1aW50OF90KShpZCk7Ci0gIGdwcl9zbGljZV9idWZmZXJfYWRkKG91dGJ1ZiwgaGRyKTsKLQotICBncHJfc2xpY2VfYnVmZmVyX21vdmVfZmlyc3QoaW5idWYsIHdyaXRlX2J5dGVzLCBvdXRidWYpOwotfQotCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgdWludDhfdCAqY29uc3QgYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7Ci0gIHVpbnQ4X3QgKmNvbnN0IGVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY3VyID0gYmVnOwotICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciAqcCA9IHBhcnNlcjsKLSAgdWludDMyX3QgbWVzc2FnZV9mbGFnczsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmluY29taW5nX2J5dGVfc3RyZWFtOwotCi0gIGlmIChpc19sYXN0ICYmIHAtPmlzX2xhc3RfZnJhbWUpIHsKLSAgICBzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfY2xvc2UgPSAxOwotICB9Ci0KLSAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gIH0KLQotICBzd2l0Y2ggKHAtPnN0YXRlKSB7Ci0gIGZoXzA6Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzA6Ci0gICAgICBwLT5mcmFtZV90eXBlID0gKmN1cjsKLSAgICAgIHN3aXRjaCAocC0+ZnJhbWVfdHlwZSkgewotICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgcC0+aXNfZnJhbWVfY29tcHJlc3NlZCA9IDA7IC8qIEdQUl9GQUxTRSAqLwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgcC0+aXNfZnJhbWVfY29tcHJlc3NlZCA9IDE7IC8qIEdQUl9UUlVFICovCi0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJCYWQgR1JQQyBmcmFtZSB0eXBlIDB4JTAyeCIsIHAtPmZyYW1lX3R5cGUpOwotICAgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9TVFJFQU1fRVJST1I7Ci0gICAgICB9Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF8xOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRkhfMToKLSAgICAgIHAtPmZyYW1lX3NpemUgPSAoKHVpbnQzMl90KSpjdXIpIDw8IDI0OwotICAgICAgaWYgKCsrY3VyID09IGVuZCkgewotICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0RBVEFfRkhfMjsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgY2FzZSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzI6Ci0gICAgICBwLT5mcmFtZV9zaXplIHw9ICgodWludDMyX3QpKmN1cikgPDwgMTY7Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF8zOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0RBVEFfRkhfMzoKLSAgICAgIHAtPmZyYW1lX3NpemUgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCA4OwotICAgICAgaWYgKCsrY3VyID09IGVuZCkgewotICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0RBVEFfRkhfNDsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgY2FzZSBHUlBDX0NIVFRQMl9EQVRBX0ZIXzQ6Ci0gICAgICBwLT5mcmFtZV9zaXplIHw9ICgodWludDMyX3QpKmN1cik7Ci0gICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0RBVEFfRlJBTUU7Ci0gICAgICArK2N1cjsKLSAgICAgIG1lc3NhZ2VfZmxhZ3MgPSAwOwotICAgICAgaWYgKHAtPmlzX2ZyYW1lX2NvbXByZXNzZWQpIHsKLSAgICAgICAgbWVzc2FnZV9mbGFncyB8PSBHUlBDX1dSSVRFX0lOVEVSTkFMX0NPTVBSRVNTOwotICAgICAgfQotICAgICAgcC0+cGFyc2luZ19mcmFtZSA9IGluY29taW5nX2J5dGVfc3RyZWFtID0KLSAgICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9jcmVhdGUoCi0gICAgICAgICAgICAgIGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgc3RyZWFtX3BhcnNpbmcsIHAtPmZyYW1lX3NpemUsCi0gICAgICAgICAgICAgIG1lc3NhZ2VfZmxhZ3MsICZwLT5pbmNvbWluZ19mcmFtZXMpOwotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgY2FzZSBHUlBDX0NIVFRQMl9EQVRBX0ZSQU1FOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfcGFyc2luZ19zZWVuX3N0cmVhbSh0cmFuc3BvcnRfcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fcGFyc2luZyk7Ci0gICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLSAgICAgIH0KLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKLSAgICAgIGlmICgodWludDMyX3QpKGVuZCAtIGN1cikgPT0gcC0+ZnJhbWVfc2l6ZSkgewotICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9wdXNoKAotICAgICAgICAgICAgZXhlY19jdHgsIHAtPnBhcnNpbmdfZnJhbWUsCi0gICAgICAgICAgICBncHJfc2xpY2Vfc3ViKHNsaWNlLCAoc2l6ZV90KShjdXIgLSBiZWcpLCAoc2l6ZV90KShlbmQgLSBiZWcpKSk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtX2ZpbmlzaGVkKGV4ZWNfY3R4LCBwLT5wYXJzaW5nX2ZyYW1lLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgcC0+cGFyc2luZ19mcmFtZSA9IE5VTEw7Ci0gICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfREFUQV9GSF8wOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9IGVsc2UgaWYgKCh1aW50MzJfdCkoZW5kIC0gY3VyKSA+IHAtPmZyYW1lX3NpemUpIHsKLSAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fcHVzaCgKLSAgICAgICAgICAgIGV4ZWNfY3R4LCBwLT5wYXJzaW5nX2ZyYW1lLAotICAgICAgICAgICAgZ3ByX3NsaWNlX3N1YihzbGljZSwgKHNpemVfdCkoY3VyIC0gYmVnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCkoY3VyICsgcC0+ZnJhbWVfc2l6ZSAtIGJlZykpKTsKLSAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fZmluaXNoZWQoZXhlY19jdHgsIHAtPnBhcnNpbmdfZnJhbWUsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICBwLT5wYXJzaW5nX2ZyYW1lID0gTlVMTDsKLSAgICAgICAgY3VyICs9IHAtPmZyYW1lX3NpemU7Ci0gICAgICAgIGdvdG8gZmhfMDsgLyogbG9vcCAqLwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fcHVzaCgKLSAgICAgICAgICAgIGV4ZWNfY3R4LCBwLT5wYXJzaW5nX2ZyYW1lLAotICAgICAgICAgICAgZ3ByX3NsaWNlX3N1YihzbGljZSwgKHNpemVfdCkoY3VyIC0gYmVnKSwgKHNpemVfdCkoZW5kIC0gYmVnKSkpOwotICAgICAgICBHUFJfQVNTRVJUKChzaXplX3QpKGVuZCAtIGN1cikgPD0gcC0+ZnJhbWVfc2l6ZSk7Ci0gICAgICAgIHAtPmZyYW1lX3NpemUgLT0gKHVpbnQzMl90KShlbmQgLSBjdXIpOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gIH0KLQotICBHUFJfVU5SRUFDSEFCTEVfQ09ERShyZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUik7Ci19CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNDA0YTQuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0ZSQU1FX0RBVEFfSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfREFUQV9ICi0KLS8qIFBhcnNlciBmb3IgR1JQQyBzdHJlYW1zIGVtYmVkZGVkIGluIERBVEEgZnJhbWVzICovCi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2VfYnVmZmVyLmg+Ci0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX0RBVEFfRkhfMCwKLSAgR1JQQ19DSFRUUDJfREFUQV9GSF8xLAotICBHUlBDX0NIVFRQMl9EQVRBX0ZIXzIsCi0gIEdSUENfQ0hUVFAyX0RBVEFfRkhfMywKLSAgR1JQQ19DSFRUUDJfREFUQV9GSF80LAotICBHUlBDX0NIVFRQMl9EQVRBX0ZSQU1FCi19IGdycGNfY2h0dHAyX3N0cmVhbV9zdGF0ZTsKLQotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0KLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbTsKLQotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWUgewotICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqaGVhZDsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKnRhaWw7Ci19IGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV9zdGF0ZSBzdGF0ZTsKLSAgdWludDhfdCBpc19sYXN0X2ZyYW1lOwotICB1aW50OF90IGZyYW1lX3R5cGU7Ci0gIHVpbnQzMl90IGZyYW1lX3NpemU7Ci0KLSAgaW50IGlzX2ZyYW1lX2NvbXByZXNzZWQ7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlIGluY29taW5nX2ZyYW1lczsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKnBhcnNpbmdfZnJhbWU7Ci19IGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyOwotCi12b2lkIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX21lcmdlKAotICAgIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlICpoZWFkX2RzdCwKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqdGFpbF9zcmMpOwotZ3JwY19ieXRlX3N0cmVhbSAqZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfcG9wKAotICAgIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlICpxKTsKLQotLyogaW5pdGlhbGl6ZSBwZXItc3RyZWFtIHN0YXRlIGZvciBkYXRhIGZyYW1lIHBhcnNpbmcgKi8KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX2luaXQoCi0gICAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgKnBhcnNlcik7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfZGVzdHJveShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciAqcGFyc2VyKTsKLQotLyogc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBkYXRhIGZyYW1lICovCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9iZWdpbl9mcmFtZSgKLSAgICBncnBjX2NodHRwMl9kYXRhX3BhcnNlciAqcGFyc2VyLCB1aW50OF90IGZsYWdzKTsKLQotLyogaGFuZGxlIGEgc2xpY2Ugb2YgYSBkYXRhIGZyYW1lIC0gaXNfbGFzdCBpbmRpY2F0ZXMgdGhlIGxhc3Qgc2xpY2Ugb2YgYQotICAgZnJhbWUgKi8KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfZW5jb2RlX2RhdGEodWludDMyX3QgaWQsIGdwcl9zbGljZV9idWZmZXIgKmluYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3cml0ZV9ieXRlcywgaW50IGlzX2VvZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlciAqb3V0YnVmKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9EQVRBX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiOGMyOGQuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLQotdm9pZCBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2luaXQoZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcCkgewotICBwLT5kZWJ1Z19kYXRhID0gTlVMTDsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2Rlc3Ryb3koZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcCkgewotICBncHJfZnJlZShwLT5kZWJ1Z19kYXRhKTsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9iZWdpbl9mcmFtZSgKLSAgICBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyICpwLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MpIHsKLSAgaWYgKGxlbmd0aCA8IDgpIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgImdvYXdheSBmcmFtZSB0b28gc2hvcnQgKCVkIGJ5dGVzKSIsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7Ci0gIH0KLQotICBncHJfZnJlZShwLT5kZWJ1Z19kYXRhKTsKLSAgcC0+ZGVidWdfbGVuZ3RoID0gbGVuZ3RoIC0gODsKLSAgcC0+ZGVidWdfZGF0YSA9IGdwcl9tYWxsb2MocC0+ZGVidWdfbGVuZ3RoKTsKLSAgcC0+ZGVidWdfcG9zID0gMDsKLSAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMDsKLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQotCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgewotICB1aW50OF90ICpjb25zdCBiZWcgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY29uc3QgZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOwotICB1aW50OF90ICpjdXIgPSBiZWc7Ci0gIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXIgKnAgPSBwYXJzZXI7Ci0KLSAgc3dpdGNoIChwLT5zdGF0ZSkgewotICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTA6Ci0gICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kwOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gICAgICBwLT5sYXN0X3N0cmVhbV9pZCA9ICgodWludDMyX3QpKmN1cikgPDwgMjQ7Ci0gICAgICArK2N1cjsKLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTE6Ci0gICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kxOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gICAgICBwLT5sYXN0X3N0cmVhbV9pZCB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDE2OwotICAgICAgKytjdXI7Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kyOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMjsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgICAgcC0+bGFzdF9zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCA4OwotICAgICAgKytjdXI7Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kzOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMzsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgICAgcC0+bGFzdF9zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKTsKLSAgICAgICsrY3VyOwotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgY2FzZSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMDoKLSAgICAgIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHAtPnN0YXRlID0gR1JQQ19DSFRUUDJfR09BV0FZX0VSUjA7Ci0gICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLSAgICAgIH0KLSAgICAgIHAtPmVycm9yX2NvZGUgPSAoKHVpbnQzMl90KSpjdXIpIDw8IDI0OwotICAgICAgKytjdXI7Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIxOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMTsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgICAgcC0+ZXJyb3JfY29kZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDE2OwotICAgICAgKytjdXI7Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIyOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgcC0+c3RhdGUgPSBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMjsKLSAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgfQotICAgICAgcC0+ZXJyb3JfY29kZSB8PSAoKHVpbnQzMl90KSpjdXIpIDw8IDg7Ci0gICAgICArK2N1cjsKLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0VSUjM6Ci0gICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIzOwotICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICB9Ci0gICAgICBwLT5lcnJvcl9jb2RlIHw9ICgodWludDMyX3QpKmN1cik7Ci0gICAgICArK2N1cjsKLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19DSFRUUDJfR09BV0FZX0RFQlVHOgotICAgICAgbWVtY3B5KHAtPmRlYnVnX2RhdGEgKyBwLT5kZWJ1Z19wb3MsIGN1ciwgKHNpemVfdCkoZW5kIC0gY3VyKSk7Ci0gICAgICBHUFJfQVNTRVJUKChzaXplX3QpKGVuZCAtIGN1cikgPCBVSU5UMzJfTUFYIC0gcC0+ZGVidWdfcG9zKTsKLSAgICAgIHAtPmRlYnVnX3BvcyArPSAodWludDMyX3QpKGVuZCAtIGN1cik7Ci0gICAgICBwLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX0dPQVdBWV9ERUJVRzsKLSAgICAgIGlmIChpc19sYXN0KSB7Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQgPSAxOwotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X2xhc3Rfc3RyZWFtX2luZGV4ID0gcC0+bGFzdF9zdHJlYW1faWQ7Ci0gICAgICAgIGdwcl9zbGljZV91bnJlZih0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X3RleHQpOwotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X2Vycm9yID0gKGdycGNfc3RhdHVzX2NvZGUpcC0+ZXJyb3JfY29kZTsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV90ZXh0ID0KLSAgICAgICAgICAgIGdwcl9zbGljZV9uZXcocC0+ZGVidWdfZGF0YSwgcC0+ZGVidWdfbGVuZ3RoLCBncHJfZnJlZSk7Ci0gICAgICAgIHAtPmRlYnVnX2RhdGEgPSBOVUxMOwotICAgICAgfQotICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICB9Ci0gIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9nb2F3YXlfYXBwZW5kKHVpbnQzMl90IGxhc3Rfc3RyZWFtX2lkLCB1aW50MzJfdCBlcnJvcl9jb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBkZWJ1Z19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9idWZmZXIgKnNsaWNlX2J1ZmZlcikgewotICBncHJfc2xpY2UgaGVhZGVyID0gZ3ByX3NsaWNlX21hbGxvYyg5ICsgNCArIDQpOwotICB1aW50OF90ICpwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihoZWFkZXIpOwotICB1aW50MzJfdCBmcmFtZV9sZW5ndGg7Ci0gIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSChkZWJ1Z19kYXRhKSA8IFVJTlQzMl9NQVggLSA0IC0gNCk7Ci0gIGZyYW1lX2xlbmd0aCA9IDQgKyA0ICsgKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgoZGVidWdfZGF0YSk7Ci0KLSAgLyogZnJhbWUgaGVhZGVyOiBsZW5ndGggKi8KLSAgKnArKyA9ICh1aW50OF90KShmcmFtZV9sZW5ndGggPj4gMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKGZyYW1lX2xlbmd0aCA+PiA4KTsKLSAgKnArKyA9ICh1aW50OF90KShmcmFtZV9sZW5ndGgpOwotICAvKiBmcmFtZSBoZWFkZXI6IHR5cGUgKi8KLSAgKnArKyA9IEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWTsKLSAgLyogZnJhbWUgaGVhZGVyOiBmbGFncyAqLwotICAqcCsrID0gMDsKLSAgLyogZnJhbWUgaGVhZGVyOiBzdHJlYW0gaWQgKi8KLSAgKnArKyA9IDA7Ci0gICpwKysgPSAwOwotICAqcCsrID0gMDsKLSAgKnArKyA9IDA7Ci0gIC8qIHBheWxvYWQ6IGxhc3Qgc3RyZWFtIGlkICovCi0gICpwKysgPSAodWludDhfdCkobGFzdF9zdHJlYW1faWQgPj4gMjQpOwotICAqcCsrID0gKHVpbnQ4X3QpKGxhc3Rfc3RyZWFtX2lkID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KShsYXN0X3N0cmVhbV9pZCA+PiA4KTsKLSAgKnArKyA9ICh1aW50OF90KShsYXN0X3N0cmVhbV9pZCk7Ci0gIC8qIHBheWxvYWQ6IGVycm9yIGNvZGUgKi8KLSAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDI0KTsKLSAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KShlcnJvcl9jb2RlID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGVycm9yX2NvZGUpOwotICBHUFJfQVNTRVJUKHAgPT0gR1BSX1NMSUNFX0VORF9QVFIoaGVhZGVyKSk7Ci0gIGdwcl9zbGljZV9idWZmZXJfYWRkKHNsaWNlX2J1ZmZlciwgaGVhZGVyKTsKLSAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoc2xpY2VfYnVmZmVyLCBkZWJ1Z19kYXRhKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGM0NGYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9HT0FXQVlfSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfR09BV0FZX0gKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlX2J1ZmZlci5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kwLAotICBHUlBDX0NIVFRQMl9HT0FXQVlfTFNJMSwKLSAgR1JQQ19DSFRUUDJfR09BV0FZX0xTSTIsCi0gIEdSUENfQ0hUVFAyX0dPQVdBWV9MU0kzLAotICBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMCwKLSAgR1JQQ19DSFRUUDJfR09BV0FZX0VSUjEsCi0gIEdSUENfQ0hUVFAyX0dPQVdBWV9FUlIyLAotICBHUlBDX0NIVFRQMl9HT0FXQVlfRVJSMywKLSAgR1JQQ19DSFRUUDJfR09BV0FZX0RFQlVHCi19IGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZV9zdGF0ZTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2Vfc3RhdGUgc3RhdGU7Ci0gIHVpbnQzMl90IGxhc3Rfc3RyZWFtX2lkOwotICB1aW50MzJfdCBlcnJvcl9jb2RlOwotICBjaGFyICpkZWJ1Z19kYXRhOwotICB1aW50MzJfdCBkZWJ1Z19sZW5ndGg7Ci0gIHVpbnQzMl90IGRlYnVnX3BvczsKLX0gZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcjsKLQotdm9pZCBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX2luaXQoZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcCk7Ci12b2lkIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfZGVzdHJveShncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyICpwKTsKLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MpOwotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpOwotCi12b2lkIGdycGNfY2h0dHAyX2dvYXdheV9hcHBlbmQodWludDMyX3QgbGFzdF9zdHJlYW1faWQsIHVpbnQzMl90IGVycm9yX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlIGRlYnVnX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlciAqc2xpY2VfYnVmZmVyKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9HT0FXQVlfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGNhMzk0Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuYworKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotCi1ncHJfc2xpY2UgZ3JwY19jaHR0cDJfcGluZ19jcmVhdGUodWludDhfdCBhY2ssIHVpbnQ4X3QgKm9wYXF1ZV84Ynl0ZXMpIHsKLSAgZ3ByX3NsaWNlIHNsaWNlID0gZ3ByX3NsaWNlX21hbGxvYyg5ICsgOCk7Ci0gIHVpbnQ4X3QgKnAgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKLQotICAqcCsrID0gMDsKLSAgKnArKyA9IDA7Ci0gICpwKysgPSA4OwotICAqcCsrID0gR1JQQ19DSFRUUDJfRlJBTUVfUElORzsKLSAgKnArKyA9IGFjayA/IDEgOiAwOwotICAqcCsrID0gMDsKLSAgKnArKyA9IDA7Ci0gICpwKysgPSAwOwotICAqcCsrID0gMDsKLSAgbWVtY3B5KHAsIG9wYXF1ZV84Ynl0ZXMsIDgpOwotCi0gIHJldHVybiBzbGljZTsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfcGluZ19wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7Ci0gIGlmIChmbGFncyAmIDB4ZmUgfHwgbGVuZ3RoICE9IDgpIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgImludmFsaWQgcGluZzogbGVuZ3RoPSVkLCBmbGFncz0lMDJ4IiwgbGVuZ3RoLCBmbGFncyk7Ci0gICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7Ci0gIH0KLSAgcGFyc2VyLT5ieXRlID0gMDsKLSAgcGFyc2VyLT5pc19hY2sgPSBmbGFnczsKLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQotCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9waW5nX3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgdWludDhfdCAqY29uc3QgYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7Ci0gIHVpbnQ4X3QgKmNvbnN0IGVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY3VyID0gYmVnOwotICBncnBjX2NodHRwMl9waW5nX3BhcnNlciAqcCA9IHBhcnNlcjsKLQotICB3aGlsZSAocC0+Ynl0ZSAhPSA4ICYmIGN1ciAhPSBlbmQpIHsKLSAgICBwLT5vcGFxdWVfOGJ5dGVzW3AtPmJ5dGVdID0gKmN1cjsKLSAgICBjdXIrKzsKLSAgICBwLT5ieXRlKys7Ci0gIH0KLQotICBpZiAocC0+Ynl0ZSA9PSA4KSB7Ci0gICAgR1BSX0FTU0VSVChpc19sYXN0KTsKLSAgICBpZiAocC0+aXNfYWNrKSB7Ci0gICAgICBncnBjX2NodHRwMl9hY2tfcGluZyhleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIHAtPm9wYXF1ZV84Ynl0ZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X3BhcnNpbmctPnFidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9waW5nX2NyZWF0ZSgxLCBwLT5vcGFxdWVfOGJ5dGVzKSk7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjQwZmM0Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0ZSQU1FX1BJTkdfSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfUElOR19ICi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvZXhlY19jdHguaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIgotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIHVpbnQ4X3QgYnl0ZTsKLSAgdWludDhfdCBpc19hY2s7Ci0gIHVpbnQ4X3Qgb3BhcXVlXzhieXRlc1s4XTsKLX0gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXI7Ci0KLWdwcl9zbGljZSBncnBjX2NodHRwMl9waW5nX2NyZWF0ZSh1aW50OF90IGFjaywgdWludDhfdCAqb3BhcXVlXzhieXRlcyk7Ci0KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyX2JlZ2luX2ZyYW1lKAotICAgIGdycGNfY2h0dHAyX3BpbmdfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncyk7Ci1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9waW5nX3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpOwotCi0jZW5kaWYgLyogR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0ZSQU1FX1BJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjA5MTJhLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYworKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0KLWdwcl9zbGljZSBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh1aW50MzJfdCBpZCwgdWludDMyX3QgY29kZSkgewotICBncHJfc2xpY2Ugc2xpY2UgPSBncHJfc2xpY2VfbWFsbG9jKDEzKTsKLSAgdWludDhfdCAqcCA9IEdQUl9TTElDRV9TVEFSVF9QVFIoc2xpY2UpOwotCi0gICpwKysgPSAwOwotICAqcCsrID0gMDsKLSAgKnArKyA9IDQ7Ci0gICpwKysgPSBHUlBDX0NIVFRQMl9GUkFNRV9SU1RfU1RSRUFNOwotICAqcCsrID0gMDsKLSAgKnArKyA9ICh1aW50OF90KShpZCA+PiAyNCk7Ci0gICpwKysgPSAodWludDhfdCkoaWQgPj4gMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkKTsKLSAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDI0KTsKLSAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KShjb2RlID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGNvZGUpOwotCi0gIHJldHVybiBzbGljZTsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7Ci0gIGlmIChsZW5ndGggIT0gNCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCByc3Rfc3RyZWFtOiBsZW5ndGg9JWQsIGZsYWdzPSUwMngiLCBsZW5ndGgsCi0gICAgICAgICAgICBmbGFncyk7Ci0gICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7Ci0gIH0KLSAgcGFyc2VyLT5ieXRlID0gMDsKLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQotCi1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgdWludDhfdCAqY29uc3QgYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7Ci0gIHVpbnQ4X3QgKmNvbnN0IGVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY3VyID0gYmVnOwotICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlciAqcCA9IHBhcnNlcjsKLQotICB3aGlsZSAocC0+Ynl0ZSAhPSA0ICYmIGN1ciAhPSBlbmQpIHsKLSAgICBwLT5yZWFzb25fYnl0ZXNbcC0+Ynl0ZV0gPSAqY3VyOwotICAgIGN1cisrOwotICAgIHAtPmJ5dGUrKzsKLSAgfQotCi0gIGlmIChwLT5ieXRlID09IDQpIHsKLSAgICBHUFJfQVNTRVJUKGlzX2xhc3QpOwotICAgIHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSA9IDE7Ci0gICAgc3RyZWFtX3BhcnNpbmctPnNhd19yc3Rfc3RyZWFtID0gMTsKLSAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSAoKCh1aW50MzJfdClwLT5yZWFzb25fYnl0ZXNbMF0pIDw8IDI0KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpcC0+cmVhc29uX2J5dGVzWzFdKSA8PCAxNikgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KXAtPnJlYXNvbl9ieXRlc1syXSkgPDwgOCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KXAtPnJlYXNvbl9ieXRlc1szXSkpOwotICB9Ci0KLSAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzE1NWZkLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0ZSQU1FX1JTVF9TVFJFQU1fSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTV9ICi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc2xpY2UuaD4KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvZXhlY19jdHguaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIgotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIHVpbnQ4X3QgYnl0ZTsKLSAgdWludDhfdCByZWFzb25fYnl0ZXNbNF07Ci19IGdycGNfY2h0dHAyX3JzdF9zdHJlYW1fcGFyc2VyOwotCi1ncHJfc2xpY2UgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9jcmVhdGUodWludDMyX3Qgc3RyZWFtX2lkLCB1aW50MzJfdCBjb2RlKTsKLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKTsKLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3JzdF9zdHJlYW1fcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7Ci0KLSNlbmRpZiAvKiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0MjljMi4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+Ci0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgotCi0jZGVmaW5lIE1BWF9NQVhfSEVBREVSX0xJU1RfU0laRSAoMTAyNCAqIDEwMjQgKiAxMDI0KQotCi0vKiBIVFRQLzIgbWFuZGF0ZWQgaW5pdGlhbCBjb25uZWN0aW9uIHNldHRpbmdzICovCi1jb25zdCBncnBjX2NodHRwMl9zZXR0aW5nX3BhcmFtZXRlcnMKLSAgICBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJhbWV0ZXJzW0dSUENfQ0hUVFAyX05VTV9TRVRUSU5HU10gPSB7Ci0gICAgICAgIHtOVUxMLCAwLCAwLCAwLCBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUsCi0gICAgICAgICBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUn0sCi0gICAgICAgIHsiSEVBREVSX1RBQkxFX1NJWkUiLCA0MDk2LCAwLCAweGZmZmZmZmZmLAotICAgICAgICAgR1JQQ19DSFRUUDJfQ0xBTVBfSU5WQUxJRF9WQUxVRSwgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1J9LAotICAgICAgICB7IkVOQUJMRV9QVVNIIiwgMSwgMCwgMSwgR1JQQ19DSFRUUDJfRElTQ09OTkVDVF9PTl9JTlZBTElEX1ZBTFVFLAotICAgICAgICAgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1J9LAotICAgICAgICB7Ik1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCAweGZmZmZmZmZmdSwgMCwgMHhmZmZmZmZmZnUsCi0gICAgICAgICBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUsIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SfSwKLSAgICAgICAgeyJJTklUSUFMX1dJTkRPV19TSVpFIiwgNjU1MzUsIDAsIDB4N2ZmZmZmZmZ1LAotICAgICAgICAgR1JQQ19DSFRUUDJfRElTQ09OTkVDVF9PTl9JTlZBTElEX1ZBTFVFLAotICAgICAgICAgR1JQQ19DSFRUUDJfRkxPV19DT05UUk9MX0VSUk9SfSwKLSAgICAgICAgeyJNQVhfRlJBTUVfU0laRSIsIDE2Mzg0LCAxNjM4NCwgMTY3NzcyMTUsCi0gICAgICAgICBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUsIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SfSwKLSAgICAgICAgeyJNQVhfSEVBREVSX0xJU1RfU0laRSIsIE1BWF9NQVhfSEVBREVSX0xJU1RfU0laRSwgMCwKLSAgICAgICAgIE1BWF9NQVhfSEVBREVSX0xJU1RfU0laRSwgR1JQQ19DSFRUUDJfQ0xBTVBfSU5WQUxJRF9WQUxVRSwKLSAgICAgICAgIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SfSwKLX07Ci0KLXN0YXRpYyB1aW50OF90ICpmaWxsX2hlYWRlcih1aW50OF90ICpvdXQsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCBmbGFncykgewotICAqb3V0KysgPSAodWludDhfdCkobGVuZ3RoID4+IDE2KTsKLSAgKm91dCsrID0gKHVpbnQ4X3QpKGxlbmd0aCA+PiA4KTsKLSAgKm91dCsrID0gKHVpbnQ4X3QpKGxlbmd0aCk7Ci0gICpvdXQrKyA9IEdSUENfQ0hUVFAyX0ZSQU1FX1NFVFRJTkdTOwotICAqb3V0KysgPSBmbGFnczsKLSAgKm91dCsrID0gMDsKLSAgKm91dCsrID0gMDsKLSAgKm91dCsrID0gMDsKLSAgKm91dCsrID0gMDsKLSAgcmV0dXJuIG91dDsKLX0KLQotZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3NldHRpbmdzX2NyZWF0ZSh1aW50MzJfdCAqb2xkLCBjb25zdCB1aW50MzJfdCAqbmV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmb3JjZV9tYXNrLCBzaXplX3QgY291bnQpIHsKLSAgc2l6ZV90IGk7Ci0gIHVpbnQzMl90IG4gPSAwOwotICBncHJfc2xpY2Ugb3V0cHV0OwotICB1aW50OF90ICpwOwotCi0gIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgbiArPSAobmV3W2ldICE9IG9sZFtpXSB8fCAoZm9yY2VfbWFzayAmICgxdSA8PCBpKSkgIT0gMCk7Ci0gIH0KLQotICBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKDkgKyA2ICogbik7Ci0gIHAgPSBmaWxsX2hlYWRlcihHUFJfU0xJQ0VfU1RBUlRfUFRSKG91dHB1dCksIDYgKiBuLCAwKTsKLQotICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgIGlmIChuZXdbaV0gIT0gb2xkW2ldIHx8IChmb3JjZV9tYXNrICYgKDF1IDw8IGkpKSAhPSAwKSB7Ci0gICAgICBHUFJfQVNTRVJUKGkpOwotICAgICAgKnArKyA9ICh1aW50OF90KShpID4+IDgpOwotICAgICAgKnArKyA9ICh1aW50OF90KShpKTsKLSAgICAgICpwKysgPSAodWludDhfdCkobmV3W2ldID4+IDI0KTsKLSAgICAgICpwKysgPSAodWludDhfdCkobmV3W2ldID4+IDE2KTsKLSAgICAgICpwKysgPSAodWludDhfdCkobmV3W2ldID4+IDgpOwotICAgICAgKnArKyA9ICh1aW50OF90KShuZXdbaV0pOwotICAgICAgb2xkW2ldID0gbmV3W2ldOwotICAgIH0KLSAgfQotCi0gIEdQUl9BU1NFUlQocCA9PSBHUFJfU0xJQ0VfRU5EX1BUUihvdXRwdXQpKTsKLQotICByZXR1cm4gb3V0cHV0OwotfQotCi1ncHJfc2xpY2UgZ3JwY19jaHR0cDJfc2V0dGluZ3NfYWNrX2NyZWF0ZSh2b2lkKSB7Ci0gIGdwcl9zbGljZSBvdXRwdXQgPSBncHJfc2xpY2VfbWFsbG9jKDkpOwotICBmaWxsX2hlYWRlcihHUFJfU0xJQ0VfU1RBUlRfUFRSKG91dHB1dCksIDAsIEdSUENfQ0hUVFAyX0ZMQUdfQUNLKTsKLSAgcmV0dXJuIG91dHB1dDsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyX2JlZ2luX2ZyYW1lKAotICAgIGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcnNlciAqcGFyc2VyLCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgZmxhZ3MsCi0gICAgdWludDMyX3QgKnNldHRpbmdzKSB7Ci0gIHBhcnNlci0+dGFyZ2V0X3NldHRpbmdzID0gc2V0dGluZ3M7Ci0gIG1lbWNweShwYXJzZXItPmluY29taW5nX3NldHRpbmdzLCBzZXR0aW5ncywKLSAgICAgICAgIEdSUENfQ0hUVFAyX05VTV9TRVRUSU5HUyAqIHNpemVvZih1aW50MzJfdCkpOwotICBwYXJzZXItPmlzX2FjayA9IDA7Ci0gIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfSUQwOwotICBpZiAoZmxhZ3MgPT0gR1JQQ19DSFRUUDJfRkxBR19BQ0spIHsKLSAgICBwYXJzZXItPmlzX2FjayA9IDE7Ci0gICAgaWYgKGxlbmd0aCAhPSAwKSB7Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIm5vbi1lbXB0eSBzZXR0aW5ncyBhY2sgZnJhbWUgcmVjZWl2ZWQiKTsKLSAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOwotICAgIH0KLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gIH0gZWxzZSBpZiAoZmxhZ3MgIT0gMCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCBmbGFncyBvbiBzZXR0aW5ncyBmcmFtZSIpOwotICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOwotICB9IGVsc2UgaWYgKGxlbmd0aCAlIDYgIT0gMCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAic2V0dGluZ3MgZnJhbWVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBzaXggYnl0ZXMiKTsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gIH0KLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyICpwYXJzZXIgPSBwOwotICBjb25zdCB1aW50OF90ICpjdXIgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKLSAgY29uc3QgdWludDhfdCAqZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOwotCi0gIGlmIChwYXJzZXItPmlzX2FjaykgewotICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLSAgfQotCi0gIGZvciAoOzspIHsKLSAgICBzd2l0Y2ggKHBhcnNlci0+c3RhdGUpIHsKLSAgICAgIGNhc2UgR1JQQ19DSFRUUDJfU1BTX0lEMDoKLSAgICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX0lEMDsKLSAgICAgICAgICBpZiAoaXNfbGFzdCkgewotICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX3VwZGF0ZWQgPSAxOwotICAgICAgICAgICAgbWVtY3B5KHBhcnNlci0+dGFyZ2V0X3NldHRpbmdzLCBwYXJzZXItPmluY29taW5nX3NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX05VTV9TRVRUSU5HUyAqIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF9wYXJzaW5nLT5xYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfYWNrX2NyZWF0ZSgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlci0+aWQgPSAodWludDE2X3QpKCgodWludDE2X3QpKmN1cikgPDwgOCk7Ci0gICAgICAgIGN1cisrOwotICAgICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICAgIGNhc2UgR1JQQ19DSFRUUDJfU1BTX0lEMToKLSAgICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX0lEMTsKLSAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VyLT5pZCA9ICh1aW50MTZfdCkocGFyc2VyLT5pZCB8ICgqY3VyKSk7Ci0gICAgICAgIGN1cisrOwotICAgICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICAgIGNhc2UgR1JQQ19DSFRUUDJfU1BTX1ZBTDA6Ci0gICAgICAgIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgICAgICAgcGFyc2VyLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX1NQU19WQUwwOwotICAgICAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLSAgICAgICAgfQotICAgICAgICBwYXJzZXItPnZhbHVlID0gKCh1aW50MzJfdCkqY3VyKSA8PCAyNDsKLSAgICAgICAgY3VyKys7Ci0gICAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgICAgY2FzZSBHUlBDX0NIVFRQMl9TUFNfVkFMMToKLSAgICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX1ZBTDE7Ci0gICAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlci0+dmFsdWUgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCAxNjsKLSAgICAgICAgY3VyKys7Ci0gICAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgICAgY2FzZSBHUlBDX0NIVFRQMl9TUFNfVkFMMjoKLSAgICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgICBwYXJzZXItPnN0YXRlID0gR1JQQ19DSFRUUDJfU1BTX1ZBTDI7Ci0gICAgICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlci0+dmFsdWUgfD0gKCh1aW50MzJfdCkqY3VyKSA8PCA4OwotICAgICAgICBjdXIrKzsKLSAgICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgICBjYXNlIEdSUENfQ0hUVFAyX1NQU19WQUwzOgotICAgICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICAgIHBhcnNlci0+c3RhdGUgPSBHUlBDX0NIVFRQMl9TUFNfVkFMMzsKLSAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcGFyc2VyLT5zdGF0ZSA9IEdSUENfQ0hUVFAyX1NQU19JRDA7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VyLT52YWx1ZSB8PSAqY3VyOwotICAgICAgICBjdXIrKzsKLQotICAgICAgICBpZiAocGFyc2VyLT5pZCA+IDAgJiYgcGFyc2VyLT5pZCA8IEdSUENfQ0hUVFAyX05VTV9TRVRUSU5HUykgewotICAgICAgICAgIGNvbnN0IGdycGNfY2h0dHAyX3NldHRpbmdfcGFyYW1ldGVycyAqc3AgPQotICAgICAgICAgICAgICAmZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyYW1ldGVyc1twYXJzZXItPmlkXTsKLSAgICAgICAgICBpZiAocGFyc2VyLT52YWx1ZSA8IHNwLT5taW5fdmFsdWUgfHwgcGFyc2VyLT52YWx1ZSA+IHNwLT5tYXhfdmFsdWUpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3AtPmludmFsaWRfdmFsdWVfYmVoYXZpb3IpIHsKLSAgICAgICAgICAgICAgY2FzZSBHUlBDX0NIVFRQMl9DTEFNUF9JTlZBTElEX1ZBTFVFOgotICAgICAgICAgICAgICAgIHBhcnNlci0+dmFsdWUgPQotICAgICAgICAgICAgICAgICAgICBHUFJfQ0xBTVAocGFyc2VyLT52YWx1ZSwgc3AtPm1pbl92YWx1ZSwgc3AtPm1heF92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR1JQQ19DSFRUUDJfRElTQ09OTkVDVF9PTl9JTlZBTElEX1ZBTFVFOgotICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2dvYXdheV9hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCwgc3AtPmVycm9yX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfZnJvbV9zdGF0aWNfc3RyaW5nKCJIVFRQMiBzZXR0aW5ncyBlcnJvciIpLAotICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnFidWYpOwotICAgICAgICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCB2YWx1ZSAldSBwYXNzZWQgZm9yICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+dmFsdWUsIHNwLT5uYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBhcnNlci0+aWQgPT0gR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRSAmJgotICAgICAgICAgICAgICBwYXJzZXItPmluY29taW5nX3NldHRpbmdzW3BhcnNlci0+aWRdICE9IHBhcnNlci0+dmFsdWUpIHsKLSAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbml0aWFsX3dpbmRvd191cGRhdGUgPQotICAgICAgICAgICAgICAgIChpbnQ2NF90KXBhcnNlci0+dmFsdWUgLSBwYXJzZXItPmluY29taW5nX3NldHRpbmdzW3BhcnNlci0+aWRdOwotICAgICAgICAgICAgaWYgKGdycGNfaHR0cF90cmFjZSkgewotICAgICAgICAgICAgICBncHJfbG9nKEdQUl9ERUJVRywgImFkZGluZyAlZCBmb3IgaW5pdGlhbF93aW5kb3cgY2hhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAoaW50KXRyYW5zcG9ydF9wYXJzaW5nLT5pbml0aWFsX3dpbmRvd191cGRhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBwYXJzZXItPmluY29taW5nX3NldHRpbmdzW3BhcnNlci0+aWRdID0gcGFyc2VyLT52YWx1ZTsKLSAgICAgICAgICBpZiAoZ3JwY19odHRwX3RyYWNlKSB7Ci0gICAgICAgICAgICBncHJfbG9nKEdQUl9ERUJVRywgIkNIVFRQMjolczogZ290IHNldHRpbmcgJWQgPSAlZCIsCi0gICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQgPyAiQ0xJIiA6ICJTVlIiLCBwYXJzZXItPmlkLAotICAgICAgICAgICAgICAgICAgICBwYXJzZXItPnZhbHVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJDSFRUUDI6IElnbm9yaW5nIHVua25vd24gc2V0dGluZyAlZCAodmFsdWUgJWQpIiwKLSAgICAgICAgICAgICAgICAgIHBhcnNlci0+aWQsIHBhcnNlci0+dmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMjk0ZGUuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9TRVRUSU5HU19ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9TRVRUSU5HU19ICi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9leGVjX2N0eC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX1NQU19JRDAsCi0gIEdSUENfQ0hUVFAyX1NQU19JRDEsCi0gIEdSUENfQ0hUVFAyX1NQU19WQUwwLAotICBHUlBDX0NIVFRQMl9TUFNfVkFMMSwKLSAgR1JQQ19DSFRUUDJfU1BTX1ZBTDIsCi0gIEdSUENfQ0hUVFAyX1NQU19WQUwzCi19IGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcnNlX3N0YXRlOwotCi0vKiBUaGUgdGhpbmdzIEhUVFAvMiBkZWZpbmVzIGFzIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZ3MgKi8KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX1NFVFRJTkdTX0hFQURFUl9UQUJMRV9TSVpFID0gMSwKLSAgR1JQQ19DSFRUUDJfU0VUVElOR1NfRU5BQkxFX1BVU0ggPSAyLAotICBHUlBDX0NIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TID0gMywKLSAgR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRSA9IDQsCi0gIEdSUENfQ0hUVFAyX1NFVFRJTkdTX01BWF9GUkFNRV9TSVpFID0gNSwKLSAgR1JQQ19DSFRUUDJfU0VUVElOR1NfTUFYX0hFQURFUl9MSVNUX1NJWkUgPSA2LAotICBHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1MKLX0gZ3JwY19jaHR0cDJfc2V0dGluZ19pZDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZV9zdGF0ZSBzdGF0ZTsKLSAgdWludDMyX3QgKnRhcmdldF9zZXR0aW5nczsKLSAgdWludDhfdCBpc19hY2s7Ci0gIHVpbnQxNl90IGlkOwotICB1aW50MzJfdCB2YWx1ZTsKLSAgdWludDMyX3QgaW5jb21pbmdfc2V0dGluZ3NbR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTXTsKLX0gZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyc2VyOwotCi10eXBlZGVmIGVudW0gewotICBHUlBDX0NIVFRQMl9DTEFNUF9JTlZBTElEX1ZBTFVFLAotICBHUlBDX0NIVFRQMl9ESVNDT05ORUNUX09OX0lOVkFMSURfVkFMVUUKLX0gZ3JwY19jaHR0cDJfaW52YWxpZF92YWx1ZV9iZWhhdmlvcjsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjb25zdCBjaGFyICpuYW1lOwotICB1aW50MzJfdCBkZWZhdWx0X3ZhbHVlOwotICB1aW50MzJfdCBtaW5fdmFsdWU7Ci0gIHVpbnQzMl90IG1heF92YWx1ZTsKLSAgZ3JwY19jaHR0cDJfaW52YWxpZF92YWx1ZV9iZWhhdmlvciBpbnZhbGlkX3ZhbHVlX2JlaGF2aW9yOwotICB1aW50MzJfdCBlcnJvcl92YWx1ZTsKLX0gZ3JwY19jaHR0cDJfc2V0dGluZ19wYXJhbWV0ZXJzOwotCi0vKiBIVFRQLzIgbWFuZGF0ZWQgY29ubmVjdGlvbiBzZXR0aW5nIHBhcmFtZXRlcnMgKi8KLWV4dGVybiBjb25zdCBncnBjX2NodHRwMl9zZXR0aW5nX3BhcmFtZXRlcnMKLSAgICBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJhbWV0ZXJzW0dSUENfQ0hUVFAyX05VTV9TRVRUSU5HU107Ci0KLS8qIENyZWF0ZSBhIHNldHRpbmdzIGZyYW1lIGJ5IGRpZmZpbmcgb2xkICYgbmV3LCBhbmQgdXBkYXRpbmcgb2xkIHRvIGJlIG5ldyAqLwotZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3NldHRpbmdzX2NyZWF0ZSh1aW50MzJfdCAqb2xkLCBjb25zdCB1aW50MzJfdCAqbmV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmb3JjZV9tYXNrLCBzaXplX3QgY291bnQpOwotLyogQ3JlYXRlIGFuIGFjayBzZXR0aW5ncyBmcmFtZSAqLwotZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3NldHRpbmdzX2Fja19jcmVhdGUodm9pZCk7Ci0KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcnNlcl9iZWdpbl9mcmFtZSgKLSAgICBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzLAotICAgIHVpbnQzMl90ICpzZXR0aW5ncyk7Ci1ncnBjX2NodHRwMl9wYXJzZV9lcnJvciBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfcGFyc2UoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnBhcnNlciwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9TRVRUSU5HU19IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYjUwMDMuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLQotZ3ByX3NsaWNlIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfY3JlYXRlKHVpbnQzMl90IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdpbmRvd191cGRhdGUpIHsKLSAgZ3ByX3NsaWNlIHNsaWNlID0gZ3ByX3NsaWNlX21hbGxvYygxMyk7Ci0gIHVpbnQ4X3QgKnAgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKLQotICBHUFJfQVNTRVJUKHdpbmRvd191cGRhdGUpOwotCi0gICpwKysgPSAwOwotICAqcCsrID0gMDsKLSAgKnArKyA9IDQ7Ci0gICpwKysgPSBHUlBDX0NIVFRQMl9GUkFNRV9XSU5ET1dfVVBEQVRFOwotICAqcCsrID0gMDsKLSAgKnArKyA9ICh1aW50OF90KShpZCA+PiAyNCk7Ci0gICpwKysgPSAodWludDhfdCkoaWQgPj4gMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkKTsKLSAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDI0KTsKLSAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KSh3aW5kb3dfdXBkYXRlID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKHdpbmRvd191cGRhdGUpOwotCi0gIHJldHVybiBzbGljZTsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKSB7Ci0gIGlmIChmbGFncyB8fCBsZW5ndGggIT0gNCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiaW52YWxpZCB3aW5kb3cgdXBkYXRlOiBsZW5ndGg9JWQsIGZsYWdzPSUwMngiLCBsZW5ndGgsCi0gICAgICAgICAgICBmbGFncyk7Ci0gICAgcmV0dXJuIEdSUENfQ0hUVFAyX0NPTk5FQ1RJT05fRVJST1I7Ci0gIH0KLSAgcGFyc2VyLT5ieXRlID0gMDsKLSAgcGFyc2VyLT5hbW91bnQgPSAwOwotICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci19Ci0KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgewotICB1aW50OF90ICpjb25zdCBiZWcgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY29uc3QgZW5kID0gR1BSX1NMSUNFX0VORF9QVFIoc2xpY2UpOwotICB1aW50OF90ICpjdXIgPSBiZWc7Ci0gIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyICpwID0gcGFyc2VyOwotCi0gIHdoaWxlIChwLT5ieXRlICE9IDQgJiYgY3VyICE9IGVuZCkgewotICAgIHAtPmFtb3VudCB8PSAoKHVpbnQzMl90KSpjdXIpIDw8ICg4ICogKDMgLSBwLT5ieXRlKSk7Ci0gICAgY3VyKys7Ci0gICAgcC0+Ynl0ZSsrOwotICB9Ci0KLSAgaWYgKHAtPmJ5dGUgPT0gNCkgewotICAgIHVpbnQzMl90IHJlY2VpdmVkX3VwZGF0ZSA9IHAtPmFtb3VudDsKLSAgICBpZiAocmVjZWl2ZWRfdXBkYXRlID09IDAgfHwgKHJlY2VpdmVkX3VwZGF0ZSAmIDB4ODAwMDAwMDB1KSkgewotICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJpbnZhbGlkIHdpbmRvdyB1cGRhdGUgYnl0ZXM6ICVkIiwgcC0+YW1vdW50KTsKLSAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOwotICAgIH0KLSAgICBHUFJfQVNTRVJUKGlzX2xhc3QpOwotCi0gICAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgIT0gMCkgewotICAgICAgaWYgKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwpIHsKLSAgICAgICAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmcsIG91dGdvaW5nX3dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkX3VwZGF0ZSk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmcpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9UUkFOU1BPUlQoInBhcnNlIiwgdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCByZWNlaXZlZF91cGRhdGUpOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIxYWVhMi4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9GUkFNRV9XSU5ET1dfVVBEQVRFX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0ZSQU1FX1dJTkRPV19VUERBVEVfSAotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+Ci0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgewotICB1aW50OF90IGJ5dGU7Ci0gIHVpbnQ4X3QgaXNfY29ubmVjdGlvbl91cGRhdGU7Ci0gIHVpbnQzMl90IGFtb3VudDsKLX0gZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXI7Ci0KLWdwcl9zbGljZSBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX2NyZWF0ZSh1aW50MzJfdCBpZCwgdWludDMyX3Qgd2luZG93X2RlbHRhKTsKLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgZ3JwY19jaHR0cDJfd2luZG93X3VwZGF0ZV9wYXJzZXIgKnBhcnNlciwgdWludDMyX3QgbGVuZ3RoLCB1aW50OF90IGZsYWdzKTsKLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX3BhcnNlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7Ci0KLSNlbmRpZiAvKiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfRlJBTUVfV0lORE9XX1VQREFURV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNDU5MjkuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5jCisrKyAvZGV2L251bGwKQEAgLTEsNTY4ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotLyogVGhpcyBpcyBoZXJlIGZvciBncnBjX2lzX2JpbmFyeV9oZWFkZXIKLSAqIFRPRE8obXVyZ2F0cm9pZDk5KTogUmVtb3ZlIHRoaXMKLSAqLwotI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCIKLQotI2RlZmluZSBIQVNIX0ZSQUdNRU5UXzEoeCkgKCh4KSYyNTUpCi0jZGVmaW5lIEhBU0hfRlJBR01FTlRfMih4KSAoKHggPj4gOCkgJiAyNTUpCi0jZGVmaW5lIEhBU0hfRlJBR01FTlRfMyh4KSAoKHggPj4gMTYpICYgMjU1KQotI2RlZmluZSBIQVNIX0ZSQUdNRU5UXzQoeCkgKCh4ID4+IDI0KSAmIDI1NSkKLQotLyogaWYgdGhlIHByb2JhYmlsaXR5IG9mIHRoaXMgaXRlbSBiZWluZyBzZWVuIGFnYWluIGlzIDwgMS94IHRoZW4gZG9uJ3QgYWRkCi0gICBpdCB0byB0aGUgdGFibGUgKi8KLSNkZWZpbmUgT05FX09OX0FERF9QUk9CQUJJTElUWSAxMjgKLS8qIGRvbid0IGNvbnNpZGVyIGFkZGluZyBhbnl0aGluZyBiaWdnZXIgdGhhbiB0aGlzIHRvIHRoZSBocGFjayB0YWJsZSAqLwotI2RlZmluZSBNQVhfREVDT0RFUl9TUEFDRV9VU0FHRSA1MTIKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBpbnQgaXNfZmlyc3RfZnJhbWU7Ci0gIC8qIG51bWJlciBvZiBieXRlcyBpbiAnb3V0cHV0JyB3aGVuIHdlIHN0YXJ0ZWQgdGhlIGZyYW1lIC0gdXNlZCB0byBjYWxjdWxhdGUKLSAgICAgZnJhbWUgbGVuZ3RoICovCi0gIHNpemVfdCBvdXRwdXRfbGVuZ3RoX2F0X3N0YXJ0X29mX2ZyYW1lOwotICAvKiBpbmRleCAoaW4gb3V0cHV0KSBvZiB0aGUgaGVhZGVyIGZvciB0aGUgY3VycmVudCBmcmFtZSAqLwotICBzaXplX3QgaGVhZGVyX2lkeDsKLSAgLyogaGF2ZSB3ZSBzZWVuIGEgcmVndWxhciAobm9uLWNvbG9uLXByZWZpeGVkKSBoZWFkZXIgeWV0PyAqLwotICB1aW50OF90IHNlZW5fcmVndWxhcl9oZWFkZXI7Ci0gIC8qIG91dHB1dCBzdHJlYW0gaWQgKi8KLSAgdWludDMyX3Qgc3RyZWFtX2lkOwotICBncHJfc2xpY2VfYnVmZmVyICpvdXRwdXQ7Ci19IGZyYW1lcl9zdGF0ZTsKLQotLyogZmlsbHMgcCAod2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgOSBieXRlcyBsb25nKSB3aXRoIGEgZGF0YSBmcmFtZSBoZWFkZXIgKi8KLXN0YXRpYyB2b2lkIGZpbGxfaGVhZGVyKHVpbnQ4X3QgKnAsIHVpbnQ4X3QgdHlwZSwgdWludDMyX3QgaWQsIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZsYWdzKSB7Ci0gIEdQUl9BU1NFUlQobGVuIDwgMTY3NzczMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKGxlbiA+PiAxNik7Ci0gICpwKysgPSAodWludDhfdCkobGVuID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGxlbik7Ci0gICpwKysgPSB0eXBlOwotICAqcCsrID0gZmxhZ3M7Ci0gICpwKysgPSAodWludDhfdCkoaWQgPj4gMjQpOwotICAqcCsrID0gKHVpbnQ4X3QpKGlkID4+IDE2KTsKLSAgKnArKyA9ICh1aW50OF90KShpZCA+PiA4KTsKLSAgKnArKyA9ICh1aW50OF90KShpZCk7Ci19Ci0KLS8qIGZpbmlzaCBhIGZyYW1lIC0gZmlsbCBpbiB0aGUgcHJldmlvdXNseSByZXNlcnZlZCBoZWFkZXIgKi8KLXN0YXRpYyB2b2lkIGZpbmlzaF9mcmFtZShmcmFtZXJfc3RhdGUgKnN0LCBpbnQgaXNfaGVhZGVyX2JvdW5kYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpc19sYXN0X2luX3N0cmVhbSkgewotICB1aW50OF90IHR5cGUgPSAweGZmOwotICB0eXBlID0gc3QtPmlzX2ZpcnN0X2ZyYW1lID8gR1JQQ19DSFRUUDJfRlJBTUVfSEVBREVSCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBHUlBDX0NIVFRQMl9GUkFNRV9DT05USU5VQVRJT047Ci0gIGZpbGxfaGVhZGVyKAotICAgICAgR1BSX1NMSUNFX1NUQVJUX1BUUihzdC0+b3V0cHV0LT5zbGljZXNbc3QtPmhlYWRlcl9pZHhdKSwgdHlwZSwKLSAgICAgIHN0LT5zdHJlYW1faWQsIHN0LT5vdXRwdXQtPmxlbmd0aCAtIHN0LT5vdXRwdXRfbGVuZ3RoX2F0X3N0YXJ0X29mX2ZyYW1lLAotICAgICAgKHVpbnQ4X3QpKChpc19sYXN0X2luX3N0cmVhbSA/IEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfU1RSRUFNIDogMCkgfAotICAgICAgICAgICAgICAgIChpc19oZWFkZXJfYm91bmRhcnkgPyBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX0hFQURFUlMgOiAwKSkpOwotICBzdC0+aXNfZmlyc3RfZnJhbWUgPSAwOwotfQotCi0vKiBiZWdpbiBhIG5ldyBmcmFtZTogcmVzZXJ2ZSBvZmYgaGVhZGVyIHNwYWNlLCByZW1lbWJlciBob3cgbWFueSBieXRlcyB3ZSdkCi0gICBvdXRwdXQgYmVmb3JlIGJlZ2lubmluZyAqLwotc3RhdGljIHZvaWQgYmVnaW5fZnJhbWUoZnJhbWVyX3N0YXRlICpzdCkgewotICBzdC0+aGVhZGVyX2lkeCA9Ci0gICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZF9pbmRleGVkKHN0LT5vdXRwdXQsIGdwcl9zbGljZV9tYWxsb2MoOSkpOwotICBzdC0+b3V0cHV0X2xlbmd0aF9hdF9zdGFydF9vZl9mcmFtZSA9IHN0LT5vdXRwdXQtPmxlbmd0aDsKLX0KLQotLyogbWFrZSBzdXJlIHRoYXQgdGhlIGN1cnJlbnQgZnJhbWUgaXMgb2YgdGhlIHR5cGUgZGVzaXJlZCwgYW5kIGhhcyBzdWZmaWNpZW50Ci0gICBzcGFjZSB0byBhZGQgYXQgbGVhc3QgYWJvdXRfdG9fYWRkIGJ5dGVzIC0tIGZpbmlzaGVzIHRoZSBjdXJyZW50IGZyYW1lIGlmCi0gICBuZWVkZWQgKi8KLXN0YXRpYyB2b2lkIGVuc3VyZV9zcGFjZShmcmFtZXJfc3RhdGUgKnN0LCBzaXplX3QgbmVlZF9ieXRlcykgewotICBpZiAoc3QtPm91dHB1dC0+bGVuZ3RoIC0gc3QtPm91dHB1dF9sZW5ndGhfYXRfc3RhcnRfb2ZfZnJhbWUgKyBuZWVkX2J5dGVzIDw9Ci0gICAgICBHUlBDX0NIVFRQMl9NQVhfUEFZTE9BRF9MRU5HVEgpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgZmluaXNoX2ZyYW1lKHN0LCAwLCAwKTsKLSAgYmVnaW5fZnJhbWUoc3QpOwotfQotCi0vKiBpbmNyZW1lbnQgYSBmaWx0ZXIgY291bnQsIGhhbHZlIGFsbCBjb3VudHMgaWYgb25lIGVsZW1lbnQgcmVhY2hlcyBtYXggKi8KLXN0YXRpYyB2b2lkIGluY19maWx0ZXIodWludDhfdCBpZHgsIHVpbnQzMl90ICpzdW0sIHVpbnQ4X3QgKmVsZW1zKSB7Ci0gIGVsZW1zW2lkeF0rKzsKLSAgaWYgKGVsZW1zW2lkeF0gPCAyNTUpIHsKLSAgICAoKnN1bSkrKzsKLSAgfSBlbHNlIHsKLSAgICBpbnQgaTsKLSAgICAqc3VtID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgR1JQQ19DSFRUUDJfSFBBQ0tDX05VTV9GSUxURVJTOyBpKyspIHsKLSAgICAgIGVsZW1zW2ldIC89IDI7Ci0gICAgICAoKnN1bSkgKz0gZWxlbXNbaV07Ci0gICAgfQotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFkZF9oZWFkZXJfZGF0YShmcmFtZXJfc3RhdGUgKnN0LCBncHJfc2xpY2Ugc2xpY2UpIHsKLSAgc2l6ZV90IGxlbiA9IEdQUl9TTElDRV9MRU5HVEgoc2xpY2UpOwotICBzaXplX3QgcmVtYWluaW5nOwotICBpZiAobGVuID09IDApIHJldHVybjsKLSAgcmVtYWluaW5nID0gR1JQQ19DSFRUUDJfTUFYX1BBWUxPQURfTEVOR1RIICsKLSAgICAgICAgICAgICAgc3QtPm91dHB1dF9sZW5ndGhfYXRfc3RhcnRfb2ZfZnJhbWUgLSBzdC0+b3V0cHV0LT5sZW5ndGg7Ci0gIGlmIChsZW4gPD0gcmVtYWluaW5nKSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoc3QtPm91dHB1dCwgc2xpY2UpOwotICB9IGVsc2UgewotICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKHN0LT5vdXRwdXQsIGdwcl9zbGljZV9zcGxpdF9oZWFkKCZzbGljZSwgcmVtYWluaW5nKSk7Ci0gICAgZmluaXNoX2ZyYW1lKHN0LCAwLCAwKTsKLSAgICBiZWdpbl9mcmFtZShzdCk7Ci0gICAgYWRkX2hlYWRlcl9kYXRhKHN0LCBzbGljZSk7Ci0gIH0KLX0KLQotc3RhdGljIHVpbnQ4X3QgKmFkZF90aW55X2hlYWRlcl9kYXRhKGZyYW1lcl9zdGF0ZSAqc3QsIHNpemVfdCBsZW4pIHsKLSAgZW5zdXJlX3NwYWNlKHN0LCBsZW4pOwotICByZXR1cm4gZ3ByX3NsaWNlX2J1ZmZlcl90aW55X2FkZChzdC0+b3V0cHV0LCBsZW4pOwotfQotCi1zdGF0aWMgdm9pZCBldmljdF9lbnRyeShncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjKSB7Ci0gIGMtPnRhaWxfcmVtb3RlX2luZGV4Kys7Ci0gIEdQUl9BU1NFUlQoYy0+dGFpbF9yZW1vdGVfaW5kZXggPiAwKTsKLSAgR1BSX0FTU0VSVChjLT50YWJsZV9zaXplID49Ci0gICAgICAgICAgICAgYy0+dGFibGVfZWxlbV9zaXplW2MtPnRhaWxfcmVtb3RlX2luZGV4ICUgYy0+Y2FwX3RhYmxlX2VsZW1zXSk7Ci0gIEdQUl9BU1NFUlQoYy0+dGFibGVfZWxlbXMgPiAwKTsKLSAgYy0+dGFibGVfc2l6ZSA9Ci0gICAgICAodWludDE2X3QpKGMtPnRhYmxlX3NpemUgLQotICAgICAgICAgICAgICAgICBjLT50YWJsZV9lbGVtX3NpemVbYy0+dGFpbF9yZW1vdGVfaW5kZXggJSBjLT5jYXBfdGFibGVfZWxlbXNdKTsKLSAgYy0+dGFibGVfZWxlbXMtLTsKLX0KLQotLyogYWRkIGFuIGVsZW1lbnQgdG8gdGhlIGRlY29kZXIgdGFibGUgKi8KLXN0YXRpYyB2b2lkIGFkZF9lbGVtKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIGdycGNfbWRlbGVtICplbGVtKSB7Ci0gIHVpbnQzMl90IGtleV9oYXNoID0gZWxlbS0+a2V5LT5oYXNoOwotICB1aW50MzJfdCBlbGVtX2hhc2ggPSBHUlBDX01EU1RSX0tWX0hBU0goa2V5X2hhc2gsIGVsZW0tPnZhbHVlLT5oYXNoKTsKLSAgdWludDMyX3QgbmV3X2luZGV4ID0gYy0+dGFpbF9yZW1vdGVfaW5kZXggKyBjLT50YWJsZV9lbGVtcyArIDE7Ci0gIHNpemVfdCBlbGVtX3NpemUgPSAzMiArIEdQUl9TTElDRV9MRU5HVEgoZWxlbS0+a2V5LT5zbGljZSkgKwotICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChlbGVtLT52YWx1ZS0+c2xpY2UpOwotCi0gIEdQUl9BU1NFUlQoZWxlbV9zaXplIDwgNjU1MzYpOwotCi0gIGlmIChlbGVtX3NpemUgPiBjLT5tYXhfdGFibGVfc2l6ZSkgewotICAgIHdoaWxlIChjLT50YWJsZV9zaXplID4gMCkgewotICAgICAgZXZpY3RfZW50cnkoYyk7Ci0gICAgfQotICAgIHJldHVybjsKLSAgfQotCi0gIC8qIFJlc2VydmUgc3BhY2UgZm9yIHRoaXMgZWxlbWVudCBpbiB0aGUgcmVtb3RlIHRhYmxlOiBpZiB0aGlzIG92ZXJmbG93cwotICAgICB0aGUgY3VycmVudCB0YWJsZSwgZHJvcCBlbGVtZW50cyB1bnRpbCBpdCBmaXRzLCBtYXRjaGluZyB0aGUgZGVjb21wcmVzc29yCi0gICAgIGFsZ29yaXRobSAqLwotICB3aGlsZSAoYy0+dGFibGVfc2l6ZSArIGVsZW1fc2l6ZSA+IGMtPm1heF90YWJsZV9zaXplKSB7Ci0gICAgZXZpY3RfZW50cnkoYyk7Ci0gIH0KLSAgR1BSX0FTU0VSVChjLT50YWJsZV9lbGVtcyA8IGMtPm1heF90YWJsZV9zaXplKTsKLSAgYy0+dGFibGVfZWxlbV9zaXplW25ld19pbmRleCAlIGMtPmNhcF90YWJsZV9lbGVtc10gPSAodWludDE2X3QpZWxlbV9zaXplOwotICBjLT50YWJsZV9zaXplID0gKHVpbnQxNl90KShjLT50YWJsZV9zaXplICsgZWxlbV9zaXplKTsKLSAgYy0+dGFibGVfZWxlbXMrKzsKLQotICAvKiBTdG9yZSB0aGlzIGVsZW1lbnQgaW50byB7ZW50cmllcyxpbmRpY2VzfV9lbGVtICovCi0gIGlmIChjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA9PSBlbGVtKSB7Ci0gICAgLyogYWxyZWFkeSB0aGVyZTogdXBkYXRlIHdpdGggbmV3IGluZGV4ICovCi0gICAgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0gPSBuZXdfaW5kZXg7Ci0gIH0gZWxzZSBpZiAoYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPT0gZWxlbSkgewotICAgIC8qIGFscmVhZHkgdGhlcmUgKGN1Y2tvbyk6IHVwZGF0ZSB3aXRoIG5ldyBpbmRleCAqLwotICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID0gbmV3X2luZGV4OwotICB9IGVsc2UgaWYgKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID09IE5VTEwpIHsKLSAgICAvKiBub3QgdGhlcmUsIGJ1dCBhIGZyZWUgZWxlbWVudDogYWRkICovCi0gICAgYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0gPSBHUlBDX01ERUxFTV9SRUYoZWxlbSk7Ci0gICAgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0gPSBuZXdfaW5kZXg7Ci0gIH0gZWxzZSBpZiAoYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPT0gTlVMTCkgewotICAgIC8qIG5vdCB0aGVyZSAoY3Vja29vKSwgYnV0IGEgZnJlZSBlbGVtZW50OiBhZGQgKi8KLSAgICBjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSA9IEdSUENfTURFTEVNX1JFRihlbGVtKTsKLSAgICBjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSA9IG5ld19pbmRleDsKLSAgfSBlbHNlIGlmIChjLT5pbmRpY2VzX2VsZW1zW0hBU0hfRlJBR01FTlRfMihlbGVtX2hhc2gpXSA8Ci0gICAgICAgICAgICAgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0pIHsKLSAgICAvKiBub3QgdGhlcmU6IHJlcGxhY2Ugb2xkZXN0ICovCi0gICAgR1JQQ19NREVMRU1fVU5SRUYoYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0pOwotICAgIGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID0gR1JQQ19NREVMRU1fUkVGKGVsZW0pOwotICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID0gbmV3X2luZGV4OwotICB9IGVsc2UgewotICAgIC8qIG5vdCB0aGVyZTogcmVwbGFjZSBvbGRlc3QgKi8KLSAgICBHUlBDX01ERUxFTV9VTlJFRihjLT5lbnRyaWVzX2VsZW1zW0hBU0hfRlJBR01FTlRfMyhlbGVtX2hhc2gpXSk7Ci0gICAgYy0+ZW50cmllc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPSBHUlBDX01ERUxFTV9SRUYoZWxlbSk7Ci0gICAgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzMoZWxlbV9oYXNoKV0gPSBuZXdfaW5kZXg7Ci0gIH0KLQotICAvKiBkbyBleGFjdGx5IHRoZSBzYW1lIGZvciB0aGUga2V5IChzbyB3ZSBjYW4gZmluZCBieSB0aGF0IGFnYWluIHRvbykgKi8KLQotICBpZiAoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldID09IGVsZW0tPmtleSkgewotICAgIGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSA9IG5ld19pbmRleDsKLSAgfSBlbHNlIGlmIChjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0gPT0gZWxlbS0+a2V5KSB7Ci0gICAgYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID0gbmV3X2luZGV4OwotICB9IGVsc2UgaWYgKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSA9PSBOVUxMKSB7Ci0gICAgYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldID0gR1JQQ19NRFNUUl9SRUYoZWxlbS0+a2V5KTsKLSAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPSBuZXdfaW5kZXg7Ci0gIH0gZWxzZSBpZiAoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID09IE5VTEwpIHsKLSAgICBjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0gPSBHUlBDX01EU1RSX1JFRihlbGVtLT5rZXkpOwotICAgIGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSA9IG5ld19pbmRleDsKLSAgfSBlbHNlIGlmIChjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPAotICAgICAgICAgICAgIGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSkgewotICAgIEdSUENfTURTVFJfVU5SRUYoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMihrZXlfaGFzaCldKTsKLSAgICBjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPSBHUlBDX01EU1RSX1JFRihlbGVtLT5rZXkpOwotICAgIGMtPmluZGljZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzIoa2V5X2hhc2gpXSA9IG5ld19pbmRleDsKLSAgfSBlbHNlIHsKLSAgICBHUlBDX01EU1RSX1VOUkVGKGMtPmVudHJpZXNfa2V5c1tIQVNIX0ZSQUdNRU5UXzMoa2V5X2hhc2gpXSk7Ci0gICAgYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID0gR1JQQ19NRFNUUl9SRUYoZWxlbS0+a2V5KTsKLSAgICBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8zKGtleV9oYXNoKV0gPSBuZXdfaW5kZXg7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgZW1pdF9pbmRleGVkKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIHVpbnQzMl90IGVsZW1faW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVyX3N0YXRlICpzdCkgewotICB1aW50MzJfdCBsZW4gPSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKGVsZW1faW5kZXgsIDEpOwotICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQoZWxlbV9pbmRleCwgMSwgMHg4MCwgYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIGxlbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwotfQotCi1zdGF0aWMgZ3ByX3NsaWNlIGdldF93aXJlX3ZhbHVlKGdycGNfbWRlbGVtICplbGVtLCB1aW50OF90ICpodWZmbWFuX3ByZWZpeCkgewotICBpZiAoZ3JwY19pc19iaW5hcnlfaGVhZGVyKChjb25zdCBjaGFyICopR1BSX1NMSUNFX1NUQVJUX1BUUihlbGVtLT5rZXktPnNsaWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpKSkgewotICAgICpodWZmbWFuX3ByZWZpeCA9IDB4ODA7Ci0gICAgcmV0dXJuIGdycGNfbWRzdHJfYXNfYmFzZTY0X2VuY29kZWRfYW5kX2h1ZmZtYW5fY29tcHJlc3NlZChlbGVtLT52YWx1ZSk7Ci0gIH0KLSAgLyogVE9ETyhjdGlsbGVyKTogb3Bwb3J0dW5pc3RpY2FsbHkgY29tcHJlc3Mgbm9uLWJpbmFyeSBoZWFkZXJzICovCi0gICpodWZmbWFuX3ByZWZpeCA9IDB4MDA7Ci0gIHJldHVybiBlbGVtLT52YWx1ZS0+c2xpY2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGVtaXRfbGl0aGRyX2luY2lkeChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGtleV9pbmRleCwgZ3JwY19tZGVsZW0gKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVyX3N0YXRlICpzdCkgewotICB1aW50MzJfdCBsZW5fcGZ4ID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChrZXlfaW5kZXgsIDIpOwotICB1aW50OF90IGh1ZmZtYW5fcHJlZml4OwotICBncHJfc2xpY2UgdmFsdWVfc2xpY2UgPSBnZXRfd2lyZV92YWx1ZShlbGVtLCAmaHVmZm1hbl9wcmVmaXgpOwotICBzaXplX3QgbGVuX3ZhbCA9IEdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpOwotICB1aW50MzJfdCBsZW5fdmFsX2xlbjsKLSAgR1BSX0FTU0VSVChsZW5fdmFsIDw9IFVJTlQzMl9NQVgpOwotICBsZW5fdmFsX2xlbiA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgoKHVpbnQzMl90KWxlbl92YWwsIDEpOwotICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQoa2V5X2luZGV4LCAyLCAweDQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIGxlbl9wZngpLCBsZW5fcGZ4KTsKLSAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKCh1aW50MzJfdClsZW5fdmFsLCAxLCBodWZmbWFuX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fdmFsX2xlbiksIGxlbl92YWxfbGVuKTsKLSAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKHZhbHVlX3NsaWNlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVtaXRfbGl0aGRyX25vaWR4KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBrZXlfaW5kZXgsIGdycGNfbWRlbGVtICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVyX3N0YXRlICpzdCkgewotICB1aW50MzJfdCBsZW5fcGZ4ID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChrZXlfaW5kZXgsIDQpOwotICB1aW50OF90IGh1ZmZtYW5fcHJlZml4OwotICBncHJfc2xpY2UgdmFsdWVfc2xpY2UgPSBnZXRfd2lyZV92YWx1ZShlbGVtLCAmaHVmZm1hbl9wcmVmaXgpOwotICBzaXplX3QgbGVuX3ZhbCA9IEdQUl9TTElDRV9MRU5HVEgodmFsdWVfc2xpY2UpOwotICB1aW50MzJfdCBsZW5fdmFsX2xlbjsKLSAgR1BSX0FTU0VSVChsZW5fdmFsIDw9IFVJTlQzMl9NQVgpOwotICBsZW5fdmFsX2xlbiA9IEdSUENfQ0hUVFAyX1ZBUklOVF9MRU5HVEgoKHVpbnQzMl90KWxlbl92YWwsIDEpOwotICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQoa2V5X2luZGV4LCA0LCAweDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIGxlbl9wZngpLCBsZW5fcGZ4KTsKLSAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKCh1aW50MzJfdClsZW5fdmFsLCAxLCBodWZmbWFuX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fdmFsX2xlbiksIGxlbl92YWxfbGVuKTsKLSAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKHZhbHVlX3NsaWNlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVtaXRfbGl0aGRyX2luY2lkeF92KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX21kZWxlbSAqZWxlbSwgZnJhbWVyX3N0YXRlICpzdCkgewotICB1aW50MzJfdCBsZW5fa2V5ID0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgoZWxlbS0+a2V5LT5zbGljZSk7Ci0gIHVpbnQ4X3QgaHVmZm1hbl9wcmVmaXg7Ci0gIGdwcl9zbGljZSB2YWx1ZV9zbGljZSA9IGdldF93aXJlX3ZhbHVlKGVsZW0sICZodWZmbWFuX3ByZWZpeCk7Ci0gIHVpbnQzMl90IGxlbl92YWwgPSAodWludDMyX3QpR1BSX1NMSUNFX0xFTkdUSCh2YWx1ZV9zbGljZSk7Ci0gIHVpbnQzMl90IGxlbl9rZXlfbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChsZW5fa2V5LCAxKTsKLSAgdWludDMyX3QgbGVuX3ZhbF9sZW4gPSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKGxlbl92YWwsIDEpOwotICBHUFJfQVNTRVJUKGxlbl9rZXkgPD0gVUlOVDMyX01BWCk7Ci0gIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSCh2YWx1ZV9zbGljZSkgPD0gVUlOVDMyX01BWCk7Ci0gICphZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgMSkgPSAweDQwOwotICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQobGVuX2tleSwgMSwgMHgwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fa2V5X2xlbiksIGxlbl9rZXlfbGVuKTsKLSAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKGVsZW0tPmtleS0+c2xpY2UpKTsKLSAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGxlbl92YWwsIDEsIGh1ZmZtYW5fcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIGxlbl92YWxfbGVuKSwgbGVuX3ZhbF9sZW4pOwotICBhZGRfaGVhZGVyX2RhdGEoc3QsIGdwcl9zbGljZV9yZWYodmFsdWVfc2xpY2UpKTsKLX0KLQotc3RhdGljIHZvaWQgZW1pdF9saXRoZHJfbm9pZHhfdihncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX21kZWxlbSAqZWxlbSwgZnJhbWVyX3N0YXRlICpzdCkgewotICB1aW50MzJfdCBsZW5fa2V5ID0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgoZWxlbS0+a2V5LT5zbGljZSk7Ci0gIHVpbnQ4X3QgaHVmZm1hbl9wcmVmaXg7Ci0gIGdwcl9zbGljZSB2YWx1ZV9zbGljZSA9IGdldF93aXJlX3ZhbHVlKGVsZW0sICZodWZmbWFuX3ByZWZpeCk7Ci0gIHVpbnQzMl90IGxlbl92YWwgPSAodWludDMyX3QpR1BSX1NMSUNFX0xFTkdUSCh2YWx1ZV9zbGljZSk7Ci0gIHVpbnQzMl90IGxlbl9rZXlfbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChsZW5fa2V5LCAxKTsKLSAgdWludDMyX3QgbGVuX3ZhbF9sZW4gPSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKGxlbl92YWwsIDEpOwotICBHUFJfQVNTRVJUKGxlbl9rZXkgPD0gVUlOVDMyX01BWCk7Ci0gIEdQUl9BU1NFUlQoR1BSX1NMSUNFX0xFTkdUSCh2YWx1ZV9zbGljZSkgPD0gVUlOVDMyX01BWCk7Ci0gICphZGRfdGlueV9oZWFkZXJfZGF0YShzdCwgMSkgPSAweDAwOwotICBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQobGVuX2tleSwgMSwgMHgwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW5fa2V5X2xlbiksIGxlbl9rZXlfbGVuKTsKLSAgYWRkX2hlYWRlcl9kYXRhKHN0LCBncHJfc2xpY2VfcmVmKGVsZW0tPmtleS0+c2xpY2UpKTsKLSAgR1JQQ19DSFRUUDJfV1JJVEVfVkFSSU5UKGxlbl92YWwsIDEsIGh1ZmZtYW5fcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RpbnlfaGVhZGVyX2RhdGEoc3QsIGxlbl92YWxfbGVuKSwgbGVuX3ZhbF9sZW4pOwotICBhZGRfaGVhZGVyX2RhdGEoc3QsIGdwcl9zbGljZV9yZWYodmFsdWVfc2xpY2UpKTsKLX0KLQotc3RhdGljIHZvaWQgZW1pdF9hZHZlcnRpc2VfdGFibGVfc2l6ZV9jaGFuZ2UoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKLSAgdWludDMyX3QgbGVuID0gR1JQQ19DSFRUUDJfVkFSSU5UX0xFTkdUSChjLT5tYXhfdGFibGVfc2l6ZSwgMyk7Ci0gIEdSUENfQ0hUVFAyX1dSSVRFX1ZBUklOVChjLT5tYXhfdGFibGVfc2l6ZSwgMywgMHgyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF90aW55X2hlYWRlcl9kYXRhKHN0LCBsZW4pLCBsZW4pOwotICBjLT5hZHZlcnRpc2VfdGFibGVfc2l6ZV9jaGFuZ2UgPSAwOwotfQotCi1zdGF0aWMgdWludDMyX3QgZHluaWR4KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIHVpbnQzMl90IGVsZW1faW5kZXgpIHsKLSAgcmV0dXJuIDEgKyBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSArIGMtPnRhaWxfcmVtb3RlX2luZGV4ICsKLSAgICAgICAgIGMtPnRhYmxlX2VsZW1zIC0gZWxlbV9pbmRleDsKLX0KLQotLyogZW5jb2RlIGFuIG1kZWxlbSAqLwotc3RhdGljIHZvaWQgaHBhY2tfZW5jKGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIGdycGNfbWRlbGVtICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcl9zdGF0ZSAqc3QpIHsKLSAgdWludDMyX3Qga2V5X2hhc2ggPSBlbGVtLT5rZXktPmhhc2g7Ci0gIHVpbnQzMl90IGVsZW1faGFzaCA9IEdSUENfTURTVFJfS1ZfSEFTSChrZXlfaGFzaCwgZWxlbS0+dmFsdWUtPmhhc2gpOwotICBzaXplX3QgZGVjb2Rlcl9zcGFjZV91c2FnZTsKLSAgdWludDMyX3QgaW5kaWNlc19rZXk7Ci0gIGludCBzaG91bGRfYWRkX2VsZW07Ci0KLSAgR1BSX0FTU0VSVChHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpID4gMCk7Ci0gIGlmIChHUFJfU0xJQ0VfU1RBUlRfUFRSKGVsZW0tPmtleS0+c2xpY2UpWzBdICE9ICc6JykgeyAvKiByZWd1bGFyIGhlYWRlciAqLwotICAgIHN0LT5zZWVuX3JlZ3VsYXJfaGVhZGVyID0gMTsKLSAgfSBlbHNlIHsKLSAgICBHUFJfQVNTRVJUKAotICAgICAgICBzdC0+c2Vlbl9yZWd1bGFyX2hlYWRlciA9PSAwICYmCi0gICAgICAgICJSZXNlcnZlZCBoZWFkZXIgKGNvbG9uLXByZWZpeGVkKSBoYXBwZW5pbmcgYWZ0ZXIgcmVndWxhciBvbmVzLiIpOwotICB9Ci0KLSAgaW5jX2ZpbHRlcihIQVNIX0ZSQUdNRU5UXzEoZWxlbV9oYXNoKSwgJmMtPmZpbHRlcl9lbGVtc19zdW0sIGMtPmZpbHRlcl9lbGVtcyk7Ci0KLSAgLyogaXMgdGhpcyBlbGVtIGN1cnJlbnRseSBpbiB0aGUgZGVjb2RlcnMgdGFibGU/ICovCi0KLSAgaWYgKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID09IGVsZW0gJiYKLSAgICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8yKGVsZW1faGFzaCldID4gYy0+dGFpbF9yZW1vdGVfaW5kZXgpIHsKLSAgICAvKiBISVQ6IGNvbXBsZXRlIGVsZW1lbnQgKGZpcnN0IGN1Y2tvbyBoYXNoKSAqLwotICAgIGVtaXRfaW5kZXhlZChjLCBkeW5pZHgoYywgYy0+aW5kaWNlc19lbGVtc1tIQVNIX0ZSQUdNRU5UXzIoZWxlbV9oYXNoKV0pLAotICAgICAgICAgICAgICAgICBzdCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKGMtPmVudHJpZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID09IGVsZW0gJiYKLSAgICAgIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldID4gYy0+dGFpbF9yZW1vdGVfaW5kZXgpIHsKLSAgICAvKiBISVQ6IGNvbXBsZXRlIGVsZW1lbnQgKHNlY29uZCBjdWNrb28gaGFzaCkgKi8KLSAgICBlbWl0X2luZGV4ZWQoYywgZHluaWR4KGMsIGMtPmluZGljZXNfZWxlbXNbSEFTSF9GUkFHTUVOVF8zKGVsZW1faGFzaCldKSwKLSAgICAgICAgICAgICAgICAgc3QpOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8qIHNob3VsZCB0aGlzIGVsZW0gYmUgaW4gdGhlIHRhYmxlPyAqLwotICBkZWNvZGVyX3NwYWNlX3VzYWdlID0gMzIgKyBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpICsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgoZWxlbS0+dmFsdWUtPnNsaWNlKTsKLSAgc2hvdWxkX2FkZF9lbGVtID0gZGVjb2Rlcl9zcGFjZV91c2FnZSA8IE1BWF9ERUNPREVSX1NQQUNFX1VTQUdFICYmCi0gICAgICAgICAgICAgICAgICAgIGMtPmZpbHRlcl9lbGVtc1tIQVNIX0ZSQUdNRU5UXzEoZWxlbV9oYXNoKV0gPj0KLSAgICAgICAgICAgICAgICAgICAgICAgIGMtPmZpbHRlcl9lbGVtc19zdW0gLyBPTkVfT05fQUREX1BST0JBQklMSVRZOwotCi0gIC8qIG5vIGhpdHMgZm9yIHRoZSBlbGVtLi4uIG1heWJlIHRoZXJlJ3MgYSBrZXk/ICovCi0KLSAgaW5kaWNlc19rZXkgPSBjLT5pbmRpY2VzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV07Ci0gIGlmIChjLT5lbnRyaWVzX2tleXNbSEFTSF9GUkFHTUVOVF8yKGtleV9oYXNoKV0gPT0gZWxlbS0+a2V5ICYmCi0gICAgICBpbmRpY2VzX2tleSA+IGMtPnRhaWxfcmVtb3RlX2luZGV4KSB7Ci0gICAgLyogSElUOiBrZXkgKGZpcnN0IGN1Y2tvbyBoYXNoKSAqLwotICAgIGlmIChzaG91bGRfYWRkX2VsZW0pIHsKLSAgICAgIGVtaXRfbGl0aGRyX2luY2lkeChjLCBkeW5pZHgoYywgaW5kaWNlc19rZXkpLCBlbGVtLCBzdCk7Ci0gICAgICBhZGRfZWxlbShjLCBlbGVtKTsKLSAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewotICAgICAgZW1pdF9saXRoZHJfbm9pZHgoYywgZHluaWR4KGMsIGluZGljZXNfa2V5KSwgZWxlbSwgc3QpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBHUFJfVU5SRUFDSEFCTEVfQ09ERShyZXR1cm4gKTsKLSAgfQotCi0gIGluZGljZXNfa2V5ID0gYy0+aW5kaWNlc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldOwotICBpZiAoYy0+ZW50cmllc19rZXlzW0hBU0hfRlJBR01FTlRfMyhrZXlfaGFzaCldID09IGVsZW0tPmtleSAmJgotICAgICAgaW5kaWNlc19rZXkgPiBjLT50YWlsX3JlbW90ZV9pbmRleCkgewotICAgIC8qIEhJVDoga2V5IChmaXJzdCBjdWNrb28gaGFzaCkgKi8KLSAgICBpZiAoc2hvdWxkX2FkZF9lbGVtKSB7Ci0gICAgICBlbWl0X2xpdGhkcl9pbmNpZHgoYywgZHluaWR4KGMsIGluZGljZXNfa2V5KSwgZWxlbSwgc3QpOwotICAgICAgYWRkX2VsZW0oYywgZWxlbSk7Ci0gICAgICByZXR1cm47Ci0gICAgfSBlbHNlIHsKLSAgICAgIGVtaXRfbGl0aGRyX25vaWR4KGMsIGR5bmlkeChjLCBpbmRpY2VzX2tleSksIGVsZW0sIHN0KTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuICk7Ci0gIH0KLQotICAvKiBubyBlbGVtLCBrZXkgaW4gdGhlIHRhYmxlLi4uIGZhbGwgYmFjayB0byBsaXRlcmFsIGVtaXNzaW9uICovCi0KLSAgaWYgKHNob3VsZF9hZGRfZWxlbSkgewotICAgIGVtaXRfbGl0aGRyX2luY2lkeF92KGMsIGVsZW0sIHN0KTsKLSAgICBhZGRfZWxlbShjLCBlbGVtKTsKLSAgICByZXR1cm47Ci0gIH0gZWxzZSB7Ci0gICAgZW1pdF9saXRoZHJfbm9pZHhfdihjLCBlbGVtLCBzdCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiApOwotfQotCi0jZGVmaW5lIFNUUkxFTl9MSVQoeCkgKHNpemVvZih4KSAtIDEpCi0jZGVmaW5lIFRJTUVPVVRfS0VZICJncnBjLXRpbWVvdXQiCi0KLXN0YXRpYyB2b2lkIGRlYWRsaW5lX2VuYyhncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCBncHJfdGltZXNwZWMgZGVhZGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVyX3N0YXRlICpzdCkgewotICBjaGFyIHRpbWVvdXRfc3RyW0dSUENfQ0hUVFAyX1RJTUVPVVRfRU5DT0RFX01JTl9CVUZTSVpFXTsKLSAgZ3JwY19tZGVsZW0gKm1kZWxlbTsKLSAgZ3JwY19jaHR0cDJfZW5jb2RlX3RpbWVvdXQoCi0gICAgICBncHJfdGltZV9zdWIoZGVhZGxpbmUsIGdwcl9ub3coZGVhZGxpbmUuY2xvY2tfdHlwZSkpLCB0aW1lb3V0X3N0cik7Ci0gIG1kZWxlbSA9IGdycGNfbWRlbGVtX2Zyb21fbWV0YWRhdGFfc3RyaW5ncygKLSAgICAgIEdSUENfTURTVFJfR1JQQ19USU1FT1VULCBncnBjX21kc3RyX2Zyb21fc3RyaW5nKHRpbWVvdXRfc3RyKSk7Ci0gIGhwYWNrX2VuYyhjLCBtZGVsZW0sIHN0KTsKLSAgR1JQQ19NREVMRU1fVU5SRUYobWRlbGVtKTsKLX0KLQotc3RhdGljIHVpbnQzMl90IGVsZW1zX2Zvcl9ieXRlcyh1aW50MzJfdCBieXRlcykgeyByZXR1cm4gKGJ5dGVzICsgMzEpIC8gMzI7IH0KLQotdm9pZCBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX2luaXQoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYykgewotICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gIGMtPm1heF90YWJsZV9zaXplID0gR1JQQ19DSFRUUDJfSFBBQ0tDX0lOSVRJQUxfVEFCTEVfU0laRTsKLSAgYy0+Y2FwX3RhYmxlX2VsZW1zID0gZWxlbXNfZm9yX2J5dGVzKGMtPm1heF90YWJsZV9zaXplKTsKLSAgYy0+bWF4X3RhYmxlX2VsZW1zID0gYy0+Y2FwX3RhYmxlX2VsZW1zOwotICBjLT5tYXhfdXNhYmxlX3NpemUgPSBHUlBDX0NIVFRQMl9IUEFDS0NfSU5JVElBTF9UQUJMRV9TSVpFOwotICBjLT50YWJsZV9lbGVtX3NpemUgPQotICAgICAgZ3ByX21hbGxvYyhzaXplb2YoKmMtPnRhYmxlX2VsZW1fc2l6ZSkgKiBjLT5jYXBfdGFibGVfZWxlbXMpOwotICBtZW1zZXQoYy0+dGFibGVfZWxlbV9zaXplLCAwLAotICAgICAgICAgc2l6ZW9mKCpjLT50YWJsZV9lbGVtX3NpemUpICogYy0+Y2FwX3RhYmxlX2VsZW1zKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX2Rlc3Ryb3koZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYykgewotICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IEdSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTOyBpKyspIHsKLSAgICBpZiAoYy0+ZW50cmllc19rZXlzW2ldKSBHUlBDX01EU1RSX1VOUkVGKGMtPmVudHJpZXNfa2V5c1tpXSk7Ci0gICAgaWYgKGMtPmVudHJpZXNfZWxlbXNbaV0pIEdSUENfTURFTEVNX1VOUkVGKGMtPmVudHJpZXNfZWxlbXNbaV0pOwotICB9Ci0gIGdwcl9mcmVlKGMtPnRhYmxlX2VsZW1fc2l6ZSk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9zZXRfbWF4X3VzYWJsZV9zaXplKAotICAgIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMsIHVpbnQzMl90IG1heF90YWJsZV9zaXplKSB7Ci0gIGMtPm1heF91c2FibGVfc2l6ZSA9IG1heF90YWJsZV9zaXplOwotICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX3NldF9tYXhfdGFibGVfc2l6ZSgKLSAgICAgIGMsIEdQUl9NSU4oYy0+bWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlYnVpbGRfZWxlbXMoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywgdWludDMyX3QgbmV3X2NhcCkgewotICB1aW50MTZfdCAqdGFibGVfZWxlbV9zaXplID0gZ3ByX21hbGxvYyhzaXplb2YoKnRhYmxlX2VsZW1fc2l6ZSkgKiBuZXdfY2FwKTsKLSAgdWludDMyX3QgaTsKLQotICBtZW1zZXQodGFibGVfZWxlbV9zaXplLCAwLCBzaXplb2YoKnRhYmxlX2VsZW1fc2l6ZSkgKiBuZXdfY2FwKTsKLSAgR1BSX0FTU0VSVChjLT50YWJsZV9lbGVtcyA8PSBuZXdfY2FwKTsKLQotICBmb3IgKGkgPSAwOyBpIDwgYy0+dGFibGVfZWxlbXM7IGkrKykgewotICAgIHVpbnQzMl90IG9mcyA9IGMtPnRhaWxfcmVtb3RlX2luZGV4ICsgaSArIDE7Ci0gICAgdGFibGVfZWxlbV9zaXplW29mcyAlIG5ld19jYXBdID0KLSAgICAgICAgYy0+dGFibGVfZWxlbV9zaXplW29mcyAlIGMtPmNhcF90YWJsZV9lbGVtc107Ci0gIH0KLQotICBjLT5jYXBfdGFibGVfZWxlbXMgPSBuZXdfY2FwOwotICBncHJfZnJlZShjLT50YWJsZV9lbGVtX3NpemUpOwotICBjLT50YWJsZV9lbGVtX3NpemUgPSB0YWJsZV9lbGVtX3NpemU7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9zZXRfbWF4X3RhYmxlX3NpemUoCi0gICAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywgdWludDMyX3QgbWF4X3RhYmxlX3NpemUpIHsKLSAgbWF4X3RhYmxlX3NpemUgPSBHUFJfTUlOKG1heF90YWJsZV9zaXplLCBjLT5tYXhfdXNhYmxlX3NpemUpOwotICBpZiAobWF4X3RhYmxlX3NpemUgPT0gYy0+bWF4X3RhYmxlX3NpemUpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgd2hpbGUgKGMtPnRhYmxlX3NpemUgPiAwICYmIGMtPnRhYmxlX3NpemUgPiBtYXhfdGFibGVfc2l6ZSkgewotICAgIGV2aWN0X2VudHJ5KGMpOwotICB9Ci0gIGMtPm1heF90YWJsZV9zaXplID0gbWF4X3RhYmxlX3NpemU7Ci0gIGMtPm1heF90YWJsZV9lbGVtcyA9IGVsZW1zX2Zvcl9ieXRlcyhtYXhfdGFibGVfc2l6ZSk7Ci0gIGlmIChjLT5tYXhfdGFibGVfZWxlbXMgPiBjLT5jYXBfdGFibGVfZWxlbXMpIHsKLSAgICByZWJ1aWxkX2VsZW1zKGMsIEdQUl9NQVgoYy0+bWF4X3RhYmxlX2VsZW1zLCAyICogYy0+Y2FwX3RhYmxlX2VsZW1zKSk7Ci0gIH0gZWxzZSBpZiAoYy0+bWF4X3RhYmxlX2VsZW1zIDwgYy0+Y2FwX3RhYmxlX2VsZW1zIC8gMykgewotICAgIHVpbnQzMl90IG5ld19jYXAgPSBHUFJfTUFYKGMtPm1heF90YWJsZV9lbGVtcywgMTYpOwotICAgIGlmIChuZXdfY2FwICE9IGMtPmNhcF90YWJsZV9lbGVtcykgewotICAgICAgcmVidWlsZF9lbGVtcyhjLCBuZXdfY2FwKTsKLSAgICB9Ci0gIH0KLSAgYy0+YWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlID0gMTsKLSAgZ3ByX2xvZyhHUFJfREVCVUcsICJzZXQgbWF4IHRhYmxlIHNpemUgZnJvbSBlbmNvZGVyIHRvICVkIiwgbWF4X3RhYmxlX3NpemUpOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2VuY29kZV9oZWFkZXIoZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3NvciAqYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqbWV0YWRhdGEsIGludCBpc19lb2YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlciAqb3V0YnVmKSB7Ci0gIGZyYW1lcl9zdGF0ZSBzdDsKLSAgZ3JwY19saW5rZWRfbWRlbGVtICpsOwotICBncHJfdGltZXNwZWMgZGVhZGxpbmU7Ci0KLSAgR1BSX0FTU0VSVChzdHJlYW1faWQgIT0gMCk7Ci0KLSAgc3Quc2Vlbl9yZWd1bGFyX2hlYWRlciA9IDA7Ci0gIHN0LnN0cmVhbV9pZCA9IHN0cmVhbV9pZDsKLSAgc3Qub3V0cHV0ID0gb3V0YnVmOwotICBzdC5pc19maXJzdF9mcmFtZSA9IDE7Ci0KLSAgLyogRW5jb2RlIGEgbWV0YWRhdGEgYmF0Y2g7IHN0b3JlIHRoZSByZXR1cm5lZCB2YWx1ZXMsIHJlcHJlc2VudGluZwotICAgICBhIG1ldGFkYXRhIGVsZW1lbnQgdGhhdCBuZWVkcyB0byBiZSB1bnJlZmZlZCBiYWNrIGludG8gdGhlIG1ldGFkYXRhCi0gICAgIHNsb3QuIFRISVMgTUFZIE5PVCBCRSBUSEUgU0FNRSBFTEVNRU5UIChpZiBhIGRlY29kZXIgdGFibGUgc2xvdCBnb3QKLSAgICAgdXBkYXRlZCkuIEFmdGVyIHRoaXMgbG9vcCwgd2UnbGwgZG8gYSBiYXRjaCB1bnJlZiBvZiBlbGVtZW50cy4gKi8KLSAgYmVnaW5fZnJhbWUoJnN0KTsKLSAgaWYgKGMtPmFkdmVydGlzZV90YWJsZV9zaXplX2NoYW5nZSAhPSAwKSB7Ci0gICAgZW1pdF9hZHZlcnRpc2VfdGFibGVfc2l6ZV9jaGFuZ2UoYywgJnN0KTsKLSAgfQotICBncnBjX21ldGFkYXRhX2JhdGNoX2Fzc2VydF9vayhtZXRhZGF0YSk7Ci0gIGZvciAobCA9IG1ldGFkYXRhLT5saXN0LmhlYWQ7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgaHBhY2tfZW5jKGMsIGwtPm1kLCAmc3QpOwotICB9Ci0gIGRlYWRsaW5lID0gbWV0YWRhdGEtPmRlYWRsaW5lOwotICBpZiAoZ3ByX3RpbWVfY21wKGRlYWRsaW5lLCBncHJfaW5mX2Z1dHVyZShkZWFkbGluZS5jbG9ja190eXBlKSkgIT0gMCkgewotICAgIGRlYWRsaW5lX2VuYyhjLCBkZWFkbGluZSwgJnN0KTsKLSAgfQotCi0gIGZpbmlzaF9mcmFtZSgmc3QsIDEsIGlzX2VvZik7Ci19CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNDZhOGYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfSFBBQ0tfRU5DT0RFUl9ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IUEFDS19FTkNPREVSX0gKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlX2J1ZmZlci5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaCIKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9IUEFDS0NfTlVNX0ZJTFRFUlMgMjU2Ci0jZGVmaW5lIEdSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTIDI1NgotLyogaW5pdGlhbCB0YWJsZSBzaXplLCBwZXIgc3BlYyAqLwotI2RlZmluZSBHUlBDX0NIVFRQMl9IUEFDS0NfSU5JVElBTF9UQUJMRV9TSVpFIDQwOTYKLS8qIG1heGltdW0gdGFibGUgc2l6ZSB3ZSdsbCBhY3R1YWxseSB1c2UgKi8KLSNkZWZpbmUgR1JQQ19DSFRUUDJfSFBBQ0tDX01BWF9UQUJMRV9TSVpFICgxMDI0ICogMTAyNCkKLQotdHlwZWRlZiBzdHJ1Y3QgewotICB1aW50MzJfdCBmaWx0ZXJfZWxlbXNfc3VtOwotICB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZTsKLSAgdWludDMyX3QgbWF4X3RhYmxlX2VsZW1zOwotICB1aW50MzJfdCBjYXBfdGFibGVfZWxlbXM7Ci0gIC8qKiBpZiBub24temVybywgYWR2ZXJ0aXNlIHRvIHRoZSBkZWNvZGVyIHRoYXQgd2UnbGwgc3RhcnQgdXNpbmcgYSB0YWJsZQotICAgICAgb2YgdGhpcyBzaXplICovCi0gIHVpbnQ4X3QgYWR2ZXJ0aXNlX3RhYmxlX3NpemVfY2hhbmdlOwotICAvKiogbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgd2UnbGwgdXNlIGZvciB0aGUgZGVjb2RlIHRhYmxlICh0byBndWFyZCBhZ2FpbnN0Ci0gICAgICBwZWVycyBvb21pbmcgdXMgYnkgc2V0dGluZyBkZWNvZGUgdGFibGUgc2l6ZSBoaWdoKSAqLwotICB1aW50MzJfdCBtYXhfdXNhYmxlX3NpemU7Ci0gIC8qIG9uZSBiZWZvcmUgdGhlIGxvd2VzdCB1c2FibGUgdGFibGUgaW5kZXggKi8KLSAgdWludDMyX3QgdGFpbF9yZW1vdGVfaW5kZXg7Ci0gIHVpbnQzMl90IHRhYmxlX3NpemU7Ci0gIHVpbnQzMl90IHRhYmxlX2VsZW1zOwotCi0gIC8qIGZpbHRlciB0YWJsZXMgZm9yIGVsZW1zOiB0aGlzIHRhYmxlcyBwcm92aWRlcyBhbiBhcHByb3hpbWF0ZQotICAgICBwb3B1bGFyaXR5IGNvdW50IGZvciBwYXJ0aWN1bGFyIGhhc2hlcywgYW5kIGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgIGEgbmV3IGxpdGVyYWwgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb21wcmVzc2lvbiB0YWJsZSBvciBub3QuCi0gICAgIFRoZXkgdHJhY2sgYSBzaW5nbGUgaW50ZWdlciB0aGF0IGNvdW50cyBob3cgb2Z0ZW4gYSBwYXJ0aWN1bGFyIHZhbHVlIGhhcwotICAgICBiZWVuIHNlZW4uIFdoZW4gdGhhdCBjb3VudCByZWFjaGVzIG1heCAoMjU1KSwgYWxsIHZhbHVlcyBhcmUgaGFsdmVkLiAqLwotICB1aW50OF90IGZpbHRlcl9lbGVtc1tHUlBDX0NIVFRQMl9IUEFDS0NfTlVNX0ZJTFRFUlNdOwotCi0gIC8qIGVudHJ5IHRhYmxlcyBmb3Iga2V5cyAmIGVsZW1zOiB0aGVzZSB0YWJsZXMgdHJhY2sgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuCi0gICAgIHNlZW4gYW5kICptYXkqIGJlIGluIHRoZSBkZWNvbXByZXNzb3IgdGFibGUgKi8KLSAgZ3JwY19tZHN0ciAqZW50cmllc19rZXlzW0dSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTXTsKLSAgZ3JwY19tZGVsZW0gKmVudHJpZXNfZWxlbXNbR1JQQ19DSFRUUDJfSFBBQ0tDX05VTV9WQUxVRVNdOwotICB1aW50MzJfdCBpbmRpY2VzX2tleXNbR1JQQ19DSFRUUDJfSFBBQ0tDX05VTV9WQUxVRVNdOwotICB1aW50MzJfdCBpbmRpY2VzX2VsZW1zW0dSUENfQ0hUVFAyX0hQQUNLQ19OVU1fVkFMVUVTXTsKLQotICB1aW50MTZfdCAqdGFibGVfZWxlbV9zaXplOwotfSBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yOwotCi12b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3JfaW5pdChncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjKTsKLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9kZXN0cm95KGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3IgKmMpOwotdm9pZCBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX3NldF9tYXhfdGFibGVfc2l6ZSgKLSAgICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZSk7Ci12b2lkIGdycGNfY2h0dHAyX2hwYWNrX2NvbXByZXNzb3Jfc2V0X21heF91c2FibGVfc2l6ZSgKLSAgICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBtYXhfdGFibGVfc2l6ZSk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfZW5jb2RlX2hlYWRlcihncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yICpjLCB1aW50MzJfdCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX21ldGFkYXRhX2JhdGNoICptZXRhZGF0YSwgaW50IGlzX2VvZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfYnVmZmVyICpvdXRidWYpOwotCi0jZW5kaWYgLyogR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hQQUNLX0VOQ09ERVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxZWJhYi4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDE0NDkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotLyogVGhpcyBpcyBoZXJlIGZvciBncnBjX2lzX2JpbmFyeV9oZWFkZXIKLSAqIFRPRE8obXVyZ2F0cm9pZDk5KTogUmVtb3ZlIHRoaXMKLSAqLwotI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3Byb2ZpbGluZy90aW1lcnMuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9zdHJpbmcuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIgotCi10eXBlZGVmIGVudW0gewotICBOT1RfQklOQVJZLAotICBCNjRfQllURTAsCi0gIEI2NF9CWVRFMSwKLSAgQjY0X0JZVEUyLAotICBCNjRfQllURTMKLX0gYmluYXJ5X3N0YXRlOwotCi0vKiBIb3cgcGFyc2luZyB3b3JrczoKLQotICAgVGhlIHBhcnNlciBvYmplY3Qga2VlcHMgdHJhY2sgb2YgYSBmdW5jdGlvbiBwb2ludGVyIHdoaWNoIHJlcHJlc2VudHMgdGhlCi0gICBjdXJyZW50IHBhcnNlIHN0YXRlLgotCi0gICBFYWNoIHRpbWUgbmV3IGJ5dGVzIGFyZSBwcmVzZW50ZWQsIHdlIGNhbGwgaW50byB0aGUgY3VycmVudCBzdGF0ZSwgd2hpY2gKLSAgIHJlY3Vyc2l2ZWx5IHBhcnNlcyB1bnRpbCBhbGwgYnl0ZXMgaW4gdGhlIGdpdmVuIGNodW5rIGFyZSBleGhhdXN0ZWQuCi0KLSAgIFRoZSBwYXJzZSBzdGF0ZSB0aGF0IHRlcm1pbmF0ZXMgdGhlbiBzYXZlcyBpdHMgZnVuY3Rpb24gcG9pbnRlciB0byBiZSB0aGUKLSAgIGN1cnJlbnQgc3RhdGUgc28gdGhhdCBpdCBjYW4gcmVzdW1lIHdoZW4gbW9yZSBieXRlcyBhcmUgYXZhaWxhYmxlLgotCi0gICBJdCdzIGV4cGVjdGVkIHRoYXQgbW9zdCBvcHRpbWl6aW5nIGNvbXBpbGVycyB3aWxsIHR1cm4gdGhpcyBjb2RlIGludG8KLSAgIGEgc2V0IG9mIGluZGlyZWN0IGp1bXBzLCBhbmQgc28gbm90IHdhc3RlIHN0YWNrIHNwYWNlLiAqLwotCi0vKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgcGFyc2luZyBzdGF0ZXMgKi8KLXN0YXRpYyBpbnQgcGFyc2VfYmVnaW4oZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX2Vycm9yKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV9pbGxlZ2FsX29wKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci0KLXN0YXRpYyBpbnQgcGFyc2Vfc3RyaW5nX3ByZWZpeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV9rZXlfc3RyaW5nKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9saXRlcmFsX2tleShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKLQotc3RhdGljIGludCBwYXJzZV92YWx1ZTAoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZTEoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZTIoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZTMoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZTQoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV92YWx1ZTV1cChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKLQotc3RhdGljIGludCBwYXJzZV9pbmRleGVkX2ZpZWxkKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX2luZGV4ZWRfZmllbGRfeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9pbmNpZHgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX2luY2lkeF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKTsKLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX2luY2lkeF92KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKTsKLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV9saXRoZHJfbm90aWR4X3goZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV9saXRoZHJfbm90aWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpOwotc3RhdGljIGludCBwYXJzZV9saXRoZHJfbnZyaWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9udnJpZHhfeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9udnJpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX21heF90Ymxfc2l6ZShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCk7Ci1zdGF0aWMgaW50IHBhcnNlX21heF90Ymxfc2l6ZV94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpOwotCi0vKiB3ZSB0cmFuc2xhdGUgdGhlIGZpcnN0IGJ5dGUgb2YgYSBocGFjayBmaWVsZCBpbnRvIG9uZSBvZiB0aGVzZSBkZWNvZGluZwotICAgY2FzZXMsIHRoZW4gdXNlIGEgbG9va3VwIHRhYmxlIHRvIGp1bXAgZGlyZWN0bHkgdG8gdGhlIGFwcHJvcHJpYXRlIHBhcnNlci4KLQotICAgX1ggPT4gdGhlIGludGVnZXIgaW5kZXggaXMgYWxsIG9uZXMsIG1lYW5pbmcgd2UgbmVlZCB0byBkbyB2YXJpbnQgZGVjb2RpbmcKLSAgIF9WID0+IHRoZSBpbnRlZ2VyIGluZGV4IGlzIGFsbCB6ZXJvcywgbWVhbmluZyB3ZSBuZWVkIHRvIGRlY29kZSBhbiBhZGRpdGlvbmFsCi0gICAgICAgICBzdHJpbmcgdmFsdWUgKi8KLXR5cGVkZWYgZW51bSB7Ci0gIElOREVYRURfRklFTEQsCi0gIElOREVYRURfRklFTERfWCwKLSAgTElUSERSX0lOQ0lEWCwKLSAgTElUSERSX0lOQ0lEWF9YLAotICBMSVRIRFJfSU5DSURYX1YsCi0gIExJVEhEUl9OT1RJRFgsCi0gIExJVEhEUl9OT1RJRFhfWCwKLSAgTElUSERSX05PVElEWF9WLAotICBMSVRIRFJfTlZSSURYLAotICBMSVRIRFJfTlZSSURYX1gsCi0gIExJVEhEUl9OVlJJRFhfViwKLSAgTUFYX1RCTF9TSVpFLAotICBNQVhfVEJMX1NJWkVfWCwKLSAgSUxMRUdBTAotfSBmaXJzdF9ieXRlX3R5cGU7Ci0KLS8qIGp1bXAgdGFibGUgb2YgcGFyc2Ugc3RhdGUgZnVuY3Rpb25zIC0tIG9yZGVyIG11c3QgbWF0Y2ggZmlyc3RfYnl0ZV90eXBlCi0gICBhYm92ZSAqLwotc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBmaXJzdF9ieXRlX2FjdGlvbltdID0gewotICAgIHBhcnNlX2luZGV4ZWRfZmllbGQsICAgcGFyc2VfaW5kZXhlZF9maWVsZF94LCBwYXJzZV9saXRoZHJfaW5jaWR4LAotICAgIHBhcnNlX2xpdGhkcl9pbmNpZHhfeCwgcGFyc2VfbGl0aGRyX2luY2lkeF92LCBwYXJzZV9saXRoZHJfbm90aWR4LAotICAgIHBhcnNlX2xpdGhkcl9ub3RpZHhfeCwgcGFyc2VfbGl0aGRyX25vdGlkeF92LCBwYXJzZV9saXRoZHJfbnZyaWR4LAotICAgIHBhcnNlX2xpdGhkcl9udnJpZHhfeCwgcGFyc2VfbGl0aGRyX252cmlkeF92LCBwYXJzZV9tYXhfdGJsX3NpemUsCi0gICAgcGFyc2VfbWF4X3RibF9zaXplX3gsICBwYXJzZV9pbGxlZ2FsX29wfTsKLQotLyogaW5kZXhlcyB0aGUgZmlyc3QgYnl0ZSB0byBhIHBhcnNlIHN0YXRlIGZ1bmN0aW9uIC0gZ2VuZXJhdGVkIGJ5Ci0gICBnZW5faHBhY2tfdGFibGVzLmMgKi8KLXN0YXRpYyBjb25zdCB1aW50OF90IGZpcnN0X2J5dGVfbHV0WzI1Nl0gPSB7Ci0gICAgTElUSERSX05PVElEWF9WLCBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYLAotICAgIExJVEhEUl9OT1RJRFgsICAgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWCwgTElUSERSX05PVElEWCwKLSAgICBMSVRIRFJfTk9USURYLCAgIExJVEhEUl9OT1RJRFgsIExJVEhEUl9OT1RJRFgsIExJVEhEUl9OT1RJRFgsCi0gICAgTElUSERSX05PVElEWCwgICBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYLCBMSVRIRFJfTk9USURYX1gsCi0gICAgTElUSERSX05WUklEWF9WLCBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYLAotICAgIExJVEhEUl9OVlJJRFgsICAgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWCwgTElUSERSX05WUklEWCwKLSAgICBMSVRIRFJfTlZSSURYLCAgIExJVEhEUl9OVlJJRFgsIExJVEhEUl9OVlJJRFgsIExJVEhEUl9OVlJJRFgsCi0gICAgTElUSERSX05WUklEWCwgICBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYLCBMSVRIRFJfTlZSSURYX1gsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsCi0gICAgTUFYX1RCTF9TSVpFLCAgICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkUsICBNQVhfVEJMX1NJWkVfWCwKLSAgICBMSVRIRFJfSU5DSURYX1YsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCi0gICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAotICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKLSAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCi0gICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAotICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKLSAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCi0gICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAotICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKLSAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCi0gICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAotICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKLSAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsCi0gICAgTElUSERSX0lOQ0lEWCwgICBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLCBMSVRIRFJfSU5DSURYLAotICAgIExJVEhEUl9JTkNJRFgsICAgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwgTElUSERSX0lOQ0lEWCwKLSAgICBMSVRIRFJfSU5DSURYLCAgIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFgsIExJVEhEUl9JTkNJRFhfWCwKLSAgICBJTExFR0FMLCAgICAgICAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELAotICAgIElOREVYRURfRklFTEQsICAgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwgSU5ERVhFRF9GSUVMRCwKLSAgICBJTkRFWEVEX0ZJRUxELCAgIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsIElOREVYRURfRklFTEQsCi0gICAgSU5ERVhFRF9GSUVMRCwgICBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxELCBJTkRFWEVEX0ZJRUxEX1gsCi19OwotCi0vKiBzdGF0ZSB0YWJsZSBmb3IgaHVmZm1hbiBkZWNvZGluZzogZ2l2ZW4gYSBzdGF0ZSwgZ2l2ZXMgYW4gaW5kZXgvMTYgaW50bwotICAgbmV4dF9zdWJfdGJsLiBUYWtpbmcgdGhhdCBpbmRleCBhbmQgYWRkaW5nIHRoZSB2YWx1ZSBvZiB0aGUgbmliYmxlIGJlaW5nCi0gICBjb25zaWRlcmVkIHJldHVybnMgdGhlIG5leHQgc3RhdGUuCi0KLSAgIGdlbmVyYXRlZCBieSBnZW5faHBhY2tfdGFibGVzLmMgKi8KLXN0YXRpYyBjb25zdCB1aW50OF90IG5leHRfdGJsWzI1Nl0gPSB7Ci0gICAgMCwgIDEsICAyLCAgMywgIDQsICAxLCAgMiwgNSwgIDYsICAxLCA3LCAgOCwgIDEsICAzLCAgMywgIDksICAxMCwgMTEsIDEsICAxLAotICAgIDEsICAxMiwgMSwgIDIsICAxMywgMSwgIDEsIDEsICAxLCAgMSwgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMiwKLSAgICAxNCwgMSwgIDE1LCAxNiwgMSwgIDE3LCAxLCAxNSwgMiwgIDcsIDMsICAxOCwgMTksIDEsICAxLCAgMSwgIDEsICAyMCwgMSwgIDEsCi0gICAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgMSwgIDE1LCAyLCAyLCAgNywgIDIxLCAxLCAgMjIsIDEsICAxLCAgMSwgIDEsICAxLAotICAgIDEsICAxLCAgMSwgIDE1LCAyLCAgMiwgIDIsIDIsICAyLCAgMiwgMjMsIDI0LCAyNSwgMSwgIDEsICAxLCAgMSwgIDIsICAyLCAgMiwKLSAgICAyNiwgMywgIDMsICAyNywgMTAsIDI4LCAxLCAxLCAgMSwgIDEsIDEsICAxLCAgMiwgIDMsICAyOSwgMTAsIDMwLCAxLCAgMSwgIDEsCi0gICAgMSwgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgMSwgIDEsICAxLCAxLCAgMzEsIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAyLAotICAgIDIsICAyLCAgMiwgIDIsICAyLCAgMiwgIDIsIDMyLCAxLCAgMSwgMTUsIDMzLCAxLCAgMzQsIDM1LCA5LCAgMzYsIDEsICAxLCAgMSwKLSAgICAxLCAgMSwgIDEsICAxLCAgMzcsIDEsICAxLCAxLCAgMSwgIDEsIDEsICAyLCAgMiwgIDIsICAyLCAgMiwgIDIsICAyLCAgMjYsIDksCi0gICAgMzgsIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgMSwgIDE1LCAyLCAyLCAgMiwgIDIsICAyNiwgMywgIDMsICAzOSwgMSwgIDEsICAxLAotICAgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsIDEsICAyLCAgMiwgMiwgIDIsICAyLCAgMiwgIDcsICAzLCAgMywgIDMsICA0MCwgMiwKLSAgICA0MSwgMSwgIDEsICAxLCAgNDIsIDQzLCAxLCAxLCAgNDQsIDEsIDEsICAxLCAgMSwgIDE1LCAyLCAgMiwgIDIsICAyLCAgMiwgIDIsCi0gICAgMywgIDMsICAzLCAgNDUsIDQ2LCAxLCAgMSwgMiwgIDIsICAyLCAzNSwgMywgIDMsICAxOCwgNDcsIDIsCi19OwotCi0vKiBuZXh0IHN0YXRlLCBiYXNlZCB1cG9uIGN1cnJlbnQgc3RhdGUgYW5kIHRoZSBjdXJyZW50IG5pYmJsZTogc2VlIGFib3ZlLgotICAgZ2VuZXJhdGVkIGJ5IGdlbl9ocGFja190YWJsZXMuYyAqLwotc3RhdGljIGNvbnN0IGludDE2X3QgbmV4dF9zdWJfdGJsWzQ4ICogMTZdID0gewotICAgIDEsICAgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsCi0gICAgMjE4LCAyLCAgIDYsICAgMTAsICAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgMiwgICA2LCAgIDEwLCAgMTMsICAxNCwgIDE1LAotICAgIDE2LCAgMTcsICAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLCAgMjQsICAzLAotICAgIDcsICAgMTEsICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1LAotICAgIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDksICAgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsCi0gICAgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwgIDI0LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTIsICAxMzIsIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxOCwgIDE5LCAgMjAsICAyMSwgIDQsICAgOCwgICA0LAotICAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMjIsICAyMywgIDkxLCAgMjUsICAyNiwKLSAgICAyNywgIDI4LCAgMjksICAzMCwgIDMxLCAgMzIsICAzMywgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsICAzOSwgIDQwLCAgMywKLSAgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsICAgMTEsICAyNCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA0MSwgIDQyLCAgNDMsCi0gICAgMiwgICA2LCAgIDEwLCAgMTMsICAxNCwgIDE1LCAgMTYsICAxNywgIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLAotICAgIDI0LCAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLAotICAgIDQ0LCAgNDUsICAyLCAgIDYsICAgMTAsICAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgNDYsICA0NywgIDQ4LCAgNDksICA1MCwKLSAgICA1MSwgIDUyLCAgNTcsICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDUzLCAgNTQsICA1NSwgIDU2LCAgNTgsICA1OSwgIDYwLCAgNjEsICA2MiwgIDYzLCAgNjQsICA2NSwgIDY2LCAgNjcsCi0gICAgNjgsICA2OSwgIDcwLCAgNzEsICA3MiwgIDc0LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzMsICA3NSwgIDc2LCAgNzcsICA3OCwgIDc5LCAgODAsICA4MSwgIDgyLAotICAgIDgzLCAgODQsICA4NSwgIDg2LCAgODcsICA4OCwgIDg5LCAgOTAsICAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywgICAxMSwKLSAgICAyNCwgIDMsICAgNywgICAxMSwgIDI0LCAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDcsICAgMTEsICAyNCwgIDMsICAgNywKLSAgICAxMSwgIDI0LCAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLCAgIDkzLCAgOTQsCi0gICAgOTUsICA5NiwgIDk3LCAgOTgsICA5OSwgIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDMsICAgNywgICAxMSwgIDI0LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LAotICAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCA0LAotICAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLAotICAgIDAsICAgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsCi0gICAgMTMxLCAyLCAgIDYsICAgMTAsICAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsCi0gICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDE0OCwKLSAgICAxNDksIDE1MCwgMTUxLCAzLCAgIDcsICAgMTEsICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwKLSAgICAwLCAgIDAsICAgMTUyLCAxNTMsIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsICAgMTEsCi0gICAgMjQsICAxNTQsIDE1NSwgMTU2LCAxNjQsIDMsICAgNywgICAxMSwgIDI0LCAgMywgICA3LCAgIDExLCAgMjQsICAzLCAgIDcsCi0gICAgMTEsICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwKLSAgICAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LAotICAgIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAxOTcsIDE5OCwgNCwgICA4LCAgIDQsICAgOCwgICA0LAotICAgIDgsICAgNCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIxOSwgMjIwLCAzLCAgIDcsICAgMTEsICAyNCwKLSAgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMjIxLCAyMjIsIDIyMywgMjI0LCAzLCAgIDcsICAgMTEsCi0gICAgMjQsICAzLCAgIDcsICAgMTEsICAyNCwgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDIyNSwgMjI4LCA0LCAgIDgsCi0gICAgNCwgICA4LCAgIDQsICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMjI2LCAyMjcsIDIyOSwKLSAgICAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMjQxLCAyNDIsIDI0MywgMjQ0LAotICAgIDQsICAgOCwgICA0LCAgIDgsICAgNCwgICA4LCAgIDQsICAgOCwgICA0LCAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsCi0gICAgMjUzLCAyNTQsIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCi0gICAgMCwgICAwLCAgIDI1NSwKLX07Ci0KLS8qIGVtaXNzaW9uIHRhYmxlOiBpbmRleGVkIGxpa2UgbmV4dF90YmwsIHVsdGltYXRlbHkgZ2l2ZXMgdGhlIGJ5dGUgdG8gYmUKLSAgIGVtaXR0ZWQsIG9yIC0xIGZvciBubyBieXRlLCBvciAyNTYgZm9yIGVuZCBvZiBzdHJlYW0KLQotICAgZ2VuZXJhdGVkIGJ5IGdlbl9ocGFja190YWJsZXMuYyAqLwotc3RhdGljIGNvbnN0IHVpbnQxNl90IGVtaXRfdGJsWzI1Nl0gPSB7Ci0gICAgMCwgICAxLCAgIDIsICAgMywgICA0LCAgIDUsICAgNiwgICA3LCAgIDAsICAgOCwgICA5LCAgIDEwLCAgMTEsICAxMiwgIDEzLAotICAgIDE0LCAgMTUsICAxNiwgIDE3LCAgMTgsICAxOSwgIDIwLCAgMjEsICAyMiwgIDAsICAgMjMsICAyNCwgIDI1LCAgMjYsICAyNywKLSAgICAyOCwgIDI5LCAgMzAsICAzMSwgIDMyLCAgMzMsICAzNCwgIDM1LCAgMzYsICAzNywgIDM4LCAgMzksICA0MCwgIDQxLCAgNDIsCi0gICAgNDMsICA0NCwgIDQ1LCAgNDYsICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAgNTIsICA1MywgIDU0LCAgMCwgICA1NSwgIDU2LAotICAgIDU3LCAgNTgsICA1OSwgIDYwLCAgNjEsICA2MiwgIDYzLCAgNjQsICA2NSwgIDY2LCAgNjcsICA2OCwgIDY5LCAgNzAsICAwLAotICAgIDcxLCAgNzIsICA3MywgIDc0LCAgNzUsICA3NiwgIDc3LCAgNzgsICA3OSwgIDgwLCAgODEsICA4MiwgIDgzLCAgODQsICA4NSwKLSAgICA4NiwgIDg3LCAgODgsICA4OSwgIDkwLCAgOTEsICA5MiwgIDkzLCAgOTQsICA5NSwgIDk2LCAgOTcsICA5OCwgIDk5LCAgMTAwLAotICAgIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsCi0gICAgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwKLSAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LAotICAgIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAwLAotICAgIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsCi0gICAgMCwgICAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwKLSAgICAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLAotICAgIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsCi0gICAgMjE5LCAyMjAsIDIyMSwgMCwgICAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwKLSAgICAyMzMsIDIzNCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMjQxLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDI0NiwgMjQ3LAotICAgIDI0OCwKLX07Ci0KLS8qIGdlbmVyYXRlZCBieSBnZW5faHBhY2tfdGFibGVzLmMgKi8KLXN0YXRpYyBjb25zdCBpbnQxNl90IGVtaXRfc3ViX3RibFsyNDkgKiAxNl0gPSB7Ci0gICAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLAotICAgIC0xLCAgNDgsICA0OCwgIDQ4LCAgNDgsICA0OCwgIDQ4LCAgNDgsICA0OCwgIDQ5LCAgNDksICA0OSwgIDQ5LCAgNDksICA0OSwKLSAgICA0OSwgIDQ5LCAgNDgsICA0OCwgIDQ4LCAgNDgsICA0OSwgIDQ5LCAgNDksICA0OSwgIDUwLCAgNTAsICA1MCwgIDUwLCAgOTcsCi0gICAgOTcsICA5NywgIDk3LCAgNDgsICA0OCwgIDQ5LCAgNDksICA1MCwgIDUwLCAgOTcsICA5NywgIDk5LCAgOTksICAxMDEsIDEwMSwKLSAgICAxMDUsIDEwNSwgMTExLCAxMTEsIDQ4LCAgNDksICA1MCwgIDk3LCAgOTksICAxMDEsIDEwNSwgMTExLCAxMTUsIDExNiwgLTEsCi0gICAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDMyLCAgMzIsICAzMiwgIDMyLCAgMzIsICAzMiwgIDMyLCAgMzIsICAzNywgIDM3LAotICAgIDM3LCAgMzcsICAzNywgIDM3LCAgMzcsICAzNywgIDk5LCAgOTksICA5OSwgIDk5LCAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDUsCi0gICAgMTA1LCAxMDUsIDEwNSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTUsIDExNSwgMTE2LCAxMTYsIDMyLCAgMzcsICA0NSwgIDQ2LAotICAgIDQ3LCAgNTEsICA1MiwgIDUzLCAgNTQsICA1NSwgIDU2LCAgNTcsICA2MSwgIDYxLCAgNjEsICA2MSwgIDYxLCAgNjEsICA2MSwKLSAgICA2MSwgIDY1LCAgNjUsICA2NSwgIDY1LCAgNjUsICA2NSwgIDY1LCAgNjUsICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwgMTE2LAotICAgIDExNiwgMTE2LCAzMiwgIDMyLCAgMzcsICAzNywgIDQ1LCAgNDUsICA0NiwgIDQ2LCAgNjEsICA2NSwgIDk1LCAgOTgsICAxMDAsCi0gICAgMTAyLCAxMDMsIDEwNCwgMTA4LCAxMDksIDExMCwgMTEyLCAxMTQsIDExNywgLTEsICAtMSwgIDU4LCAgNTgsICA1OCwgIDU4LAotICAgIDU4LCAgNTgsICA1OCwgIDU4LCAgNjYsICA2NiwgIDY2LCAgNjYsICA2NiwgIDY2LCAgNjYsICA2NiwgIDQ3LCAgNDcsICA1MSwKLSAgICA1MSwgIDUyLCAgNTIsICA1MywgIDUzLCAgNTQsICA1NCwgIDU1LCAgNTUsICA1NiwgIDU2LCAgNTcsICA1NywgIDYxLCAgNjEsCi0gICAgNjUsICA2NSwgIDk1LCAgOTUsICA5OCwgIDk4LCAgMTAwLCAxMDAsIDEwMiwgMTAyLCAxMDMsIDEwMywgMTA0LCAxMDQsIDEwOCwKLSAgICAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMCwgMTEyLCAxMTIsIDExNCwgMTE0LCAxMTcsIDExNywgNTgsICA2NiwgIDY3LCAgNjgsCi0gICAgNjksICA3MCwgIDcxLCAgNzIsICA3MywgIDc0LCAgNzUsICA3NiwgIDc3LCAgNzgsICA3OSwgIDgwLCAgODEsICA4MiwgIDgzLAotICAgIDg0LCAgODUsICA4NiwgIDg3LCAgODksICAxMDYsIDEwNywgMTEzLCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgLTEsICAtMSwKLSAgICAtMSwgIC0xLCAgMzgsICAzOCwgIDM4LCAgMzgsICAzOCwgIDM4LCAgMzgsICAzOCwgIDQyLCAgNDIsICA0MiwgIDQyLCAgNDIsCi0gICAgNDIsICA0MiwgIDQyLCAgNDQsICA0NCwgIDQ0LCAgNDQsICA0NCwgIDQ0LCAgNDQsICA0NCwgIDU5LCAgNTksICA1OSwgIDU5LAotICAgIDU5LCAgNTksICA1OSwgIDU5LCAgODgsICA4OCwgIDg4LCAgODgsICA4OCwgIDg4LCAgODgsICA4OCwgIDkwLCAgOTAsICA5MCwKLSAgICA5MCwgIDkwLCAgOTAsICA5MCwgIDkwLCAgMzMsICAzMywgIDM0LCAgMzQsICA0MCwgIDQwLCAgNDEsICA0MSwgIDYzLCAgNjMsCi0gICAgMzksICA0MywgIDEyNCwgLTEsICAtMSwgIC0xLCAgMzUsICAzNSwgIDM1LCAgMzUsICAzNSwgIDM1LCAgMzUsICAzNSwgIDYyLAotICAgIDYyLCAgNjIsICA2MiwgIDYyLCAgNjIsICA2MiwgIDYyLCAgMCwgICAwLCAgIDAsICAgMCwgICAzNiwgIDM2LCAgMzYsICAzNiwKLSAgICA2NCwgIDY0LCAgNjQsICA2NCwgIDkxLCAgOTEsICA5MSwgIDkxLCAgNjksICA2OSwgIDY5LCAgNjksICA2OSwgIDY5LCAgNjksCi0gICAgNjksICA3MCwgIDcwLCAgNzAsICA3MCwgIDcwLCAgNzAsICA3MCwgIDcwLCAgNzEsICA3MSwgIDcxLCAgNzEsICA3MSwgIDcxLAotICAgIDcxLCAgNzEsICA3MiwgIDcyLCAgNzIsICA3MiwgIDcyLCAgNzIsICA3MiwgIDcyLCAgNzMsICA3MywgIDczLCAgNzMsICA3MywKLSAgICA3MywgIDczLCAgNzMsICA3NCwgIDc0LCAgNzQsICA3NCwgIDc0LCAgNzQsICA3NCwgIDc0LCAgNzUsICA3NSwgIDc1LCAgNzUsCi0gICAgNzUsICA3NSwgIDc1LCAgNzUsICA3NiwgIDc2LCAgNzYsICA3NiwgIDc2LCAgNzYsICA3NiwgIDc2LCAgNzcsICA3NywgIDc3LAotICAgIDc3LCAgNzcsICA3NywgIDc3LCAgNzcsICA3OCwgIDc4LCAgNzgsICA3OCwgIDc4LCAgNzgsICA3OCwgIDc4LCAgNzksICA3OSwKLSAgICA3OSwgIDc5LCAgNzksICA3OSwgIDc5LCAgNzksICA4MCwgIDgwLCAgODAsICA4MCwgIDgwLCAgODAsICA4MCwgIDgwLCAgODEsCi0gICAgODEsICA4MSwgIDgxLCAgODEsICA4MSwgIDgxLCAgODEsICA4MiwgIDgyLCAgODIsICA4MiwgIDgyLCAgODIsICA4MiwgIDgyLAotICAgIDgzLCAgODMsICA4MywgIDgzLCAgODMsICA4MywgIDgzLCAgODMsICA4NCwgIDg0LCAgODQsICA4NCwgIDg0LCAgODQsICA4NCwKLSAgICA4NCwgIDg1LCAgODUsICA4NSwgIDg1LCAgODUsICA4NSwgIDg1LCAgODUsICA4NiwgIDg2LCAgODYsICA4NiwgIDg2LCAgODYsCi0gICAgODYsICA4NiwgIDg3LCAgODcsICA4NywgIDg3LCAgODcsICA4NywgIDg3LCAgODcsICA4OSwgIDg5LCAgODksICA4OSwgIDg5LAotICAgIDg5LCAgODksICA4OSwgIDEwNiwgMTA2LCAxMDYsIDEwNiwgMTA2LCAxMDYsIDEwNiwgMTA2LCAxMDcsIDEwNywgMTA3LCAxMDcsCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTE4LCAxMTgsIDExOCwKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDEyMCwgMTIwLAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsCi0gICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMTIyLCAzOCwgIDM4LCAgMzgsICAzOCwgIDQyLCAgNDIsICA0MiwgIDQyLAotICAgIDQ0LCAgNDQsICA0NCwgIDQ0LCAgNTksICA1OSwgIDU5LCAgNTksICA4OCwgIDg4LCAgODgsICA4OCwgIDkwLCAgOTAsICA5MCwKLSAgICA5MCwgIDMzLCAgMzQsICA0MCwgIDQxLCAgNjMsICAtMSwgIC0xLCAgLTEsICAzOSwgIDM5LCAgMzksICAzOSwgIDM5LCAgMzksCi0gICAgMzksICAzOSwgIDQzLCAgNDMsICA0MywgIDQzLCAgNDMsICA0MywgIDQzLCAgNDMsICAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwKLSAgICAxMjQsIDEyNCwgMTI0LCAzNSwgIDM1LCAgMzUsICAzNSwgIDYyLCAgNjIsICA2MiwgIDYyLCAgMCwgICAwLCAgIDM2LCAgMzYsCi0gICAgNjQsICA2NCwgIDkxLCAgOTEsICA5MywgIDkzLCAgMTI2LCAxMjYsIDk0LCAgMTI1LCAtMSwgIC0xLCAgNjAsICA2MCwgIDYwLAotICAgIDYwLCAgNjAsICA2MCwgIDYwLCAgNjAsICA5NiwgIDk2LCAgOTYsICA5NiwgIDk2LCAgOTYsICA5NiwgIDk2LCAgMTIzLCAxMjMsCi0gICAgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDkyLAotICAgIDkyLCAgOTIsICA5MiwgIDkyLCAgOTIsICA5MiwgIDkyLCAgMTk1LCAxOTUsIDE5NSwgMTk1LCAxOTUsIDE5NSwgMTk1LCAxOTUsCi0gICAgMjA4LCAyMDgsIDIwOCwgMjA4LCAyMDgsIDIwOCwgMjA4LCAyMDgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTMwLCAxMzAsIDEzMCwKLSAgICAxMzAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTYyLCAxNjIsIDE2MiwgMTYyLCAxODQsIDE4NCwgMTg0LCAxODQsIDE5NCwgMTk0LAotICAgIDE5NCwgMTk0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMTUzLCAxNTMsIDE2MSwgMTYxLCAxNjcsCi0gICAgMTY3LCAxNzIsIDE3MiwgMTc2LCAxNzYsIDE3NywgMTc3LCAxNzksIDE3OSwgMjA5LCAyMDksIDIxNiwgMjE2LCAyMTcsIDIxNywKLSAgICAyMjcsIDIyNywgMjI5LCAyMjksIDIzMCwgMjMwLCAxMjksIDEzMiwgMTMzLCAxMzQsIDEzNiwgMTQ2LCAxNTQsIDE1NiwgMTYwLAotICAgIDE2MywgMTY0LCAxNjksIDE3MCwgMTczLCAxNzgsIDE4MSwgMTg1LCAxODYsIDE4NywgMTg5LCAxOTAsIDE5NiwgMTk4LCAyMjgsCi0gICAgMjMyLCAyMzMsIC0xLCAgLTEsICAtMSwgIC0xLCAgMSwgICAxLCAgIDEsICAgMSwgICAxLCAgIDEsICAgMSwgICAxLCAgIDEzNSwKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNywgMTM3LCAxMzcsIDEzNywgMTM3LCAxMzcsIDEzNywgMTM3LAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksCi0gICAgMTM5LCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwKLSAgICAxNDEsIDE0MSwgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0NywgMTQ3LCAxNDcsIDE0NywgMTQ3LAotICAgIDE0NywgMTQ3LCAxNDcsIDE0OSwgMTQ5LCAxNDksIDE0OSwgMTQ5LCAxNDksIDE0OSwgMTQ5LCAxNTAsIDE1MCwgMTUwLCAxNTAsCi0gICAgMTUwLCAxNTAsIDE1MCwgMTUwLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwKLSAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTU1LCAxNTUsIDE1NSwgMTU1LCAxNTUsIDE1NSwgMTU1LCAxNTUsIDE1NywgMTU3LAotICAgIDE1NywgMTU3LCAxNTcsIDE1NywgMTU3LCAxNTcsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNjUsCi0gICAgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LAotICAgIDE3NCwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE4MCwgMTgwLCAxODAsIDE4MCwgMTgwLCAxODAsCi0gICAgMTgwLCAxODAsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywKLSAgICAxODMsIDE4MywgMTgzLCAxODgsIDE4OCwgMTg4LCAxODgsIDE4OCwgMTg4LCAxODgsIDE4OCwgMTkxLCAxOTEsIDE5MSwgMTkxLAotICAgIDE5MSwgMTkxLCAxOTEsIDE5MSwgMTk3LCAxOTcsIDE5NywgMTk3LCAxOTcsIDE5NywgMTk3LCAxOTcsIDIzMSwgMjMxLCAyMzEsCi0gICAgMjMxLCAyMzEsIDIzMSwgMjMxLCAyMzEsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCA5LCAgIDksCi0gICAgOSwgICA5LCAgIDE0MiwgMTQyLCAxNDIsIDE0MiwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0OCwKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNTksIDE1OSwgMTU5LCAxNTksIDE3MSwgMTcxLCAxNzEsIDE3MSwgMjA2LCAyMDYsIDIwNiwgMjA2LAotICAgIDIxNSwgMjE1LCAyMTUsIDIxNSwgMjI1LCAyMjUsIDIyNSwgMjI1LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNywgMjM3LCAyMzcsCi0gICAgMjM3LCAxOTksIDE5OSwgMjA3LCAyMDcsIDIzNCwgMjM0LCAyMzUsIDIzNSwgMTkyLCAxOTMsIDIwMCwgMjAxLCAyMDIsIDIwNSwKLSAgICAyMTAsIDIxMywgMjE4LCAyMTksIDIzOCwgMjQwLCAyNDIsIDI0MywgMjU1LCAtMSwgIDIwMywgMjAzLCAyMDMsIDIwMywgMjAzLAotICAgIDIwMywgMjAzLCAyMDMsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMDQsIDIwNCwgMjA0LCAyMTEsIDIxMSwgMjExLCAyMTEsCi0gICAgMjExLCAyMTEsIDIxMSwgMjExLCAyMTIsIDIxMiwgMjEyLCAyMTIsIDIxMiwgMjEyLCAyMTIsIDIxMiwgMjE0LCAyMTQsIDIxNCwKLSAgICAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjIxLCAyMjEsIDIyMSwgMjIxLCAyMjEsIDIyMSwgMjIxLCAyMjEsIDIyMiwgMjIyLAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyNDEsCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LAotICAgIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ3LCAyNDcsIDI0NywgMjQ3LCAyNDcsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDgsCi0gICAgMjQ4LCAyNDgsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwKLSAgICAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUzLCAyNTMsIDI1MywgMjUzLAotICAgIDI1MywgMjUzLCAyNTMsIDI1MywgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDI1NCwgMjU0LCAyNTQsIDIsICAgMiwgICAyLAotICAgIDIsICAgMywgICAzLCAgIDMsICAgMywgICA0LCAgIDQsICAgNCwgICA0LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNiwgICA2LAotICAgIDYsICAgNiwgICA3LCAgIDcsICAgNywgICA3LCAgIDgsICAgOCwgICA4LCAgIDgsICAgMTEsICAxMSwgIDExLCAgMTEsICAxMiwKLSAgICAxMiwgIDEyLCAgMTIsICAxNCwgIDE0LCAgMTQsICAxNCwgIDE1LCAgMTUsICAxNSwgIDE1LCAgMTYsICAxNiwgIDE2LCAgMTYsCi0gICAgMTcsICAxNywgIDE3LCAgMTcsICAxOCwgIDE4LCAgMTgsICAxOCwgIDE5LCAgMTksICAxOSwgIDE5LCAgMjAsICAyMCwgIDIwLAotICAgIDIwLCAgMjEsICAyMSwgIDIxLCAgMjEsICAyMywgIDIzLCAgMjMsICAyMywgIDI0LCAgMjQsICAyNCwgIDI0LCAgMjUsICAyNSwKLSAgICAyNSwgIDI1LCAgMjYsICAyNiwgIDI2LCAgMjYsICAyNywgIDI3LCAgMjcsICAyNywgIDI4LCAgMjgsICAyOCwgIDI4LCAgMjksCi0gICAgMjksICAyOSwgIDI5LCAgMzAsICAzMCwgIDMwLCAgMzAsICAzMSwgIDMxLCAgMzEsICAzMSwgIDEyNywgMTI3LCAxMjcsIDEyNywKLSAgICAyMjAsIDIyMCwgMjIwLCAyMjAsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMTAsICAxMywgIDIyLCAgMjU2LCA5MywgIDkzLCAgOTMsCi0gICAgOTMsICAxMjYsIDEyNiwgMTI2LCAxMjYsIDk0LCAgOTQsICAxMjUsIDEyNSwgNjAsICA5NiwgIDEyMywgLTEsICA5MiwgIDE5NSwKLSAgICAyMDgsIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgMTI4LAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDE2MiwgMTYyLCAxNjIsIDE2MiwgMTYyLCAxNjIsIDE2MiwKLSAgICAxNjIsIDE4NCwgMTg0LCAxODQsIDE4NCwgMTg0LCAxODQsIDE4NCwgMTg0LCAxOTQsIDE5NCwgMTk0LCAxOTQsIDE5NCwgMTk0LAotICAgIDE5NCwgMTk0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsCi0gICAgMjI2LCAyMjYsIDIyNiwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNjEsIDE2MSwgMTYxLCAxNjEsIDE2NywgMTY3LCAxNjcsIDE2NywKLSAgICAxNzIsIDE3MiwgMTcyLCAxNzIsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc3LCAxNzcsIDE3NywgMTc3LCAxNzksIDE3OSwgMTc5LAotICAgIDE3OSwgMjA5LCAyMDksIDIwOSwgMjA5LCAyMTYsIDIxNiwgMjE2LCAyMTYsIDIxNywgMjE3LCAyMTcsIDIxNywgMjI3LCAyMjcsCi0gICAgMjI3LCAyMjcsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjMwLCAyMzAsIDIzMCwgMjMwLCAxMjksIDEyOSwgMTMyLCAxMzIsIDEzMywKLSAgICAxMzMsIDEzNCwgMTM0LCAxMzYsIDEzNiwgMTQ2LCAxNDYsIDE1NCwgMTU0LCAxNTYsIDE1NiwgMTYwLCAxNjAsIDE2MywgMTYzLAotICAgIDE2NCwgMTY0LCAxNjksIDE2OSwgMTcwLCAxNzAsIDE3MywgMTczLCAxNzgsIDE3OCwgMTgxLCAxODEsIDE4NSwgMTg1LCAxODYsCi0gICAgMTg2LCAxODcsIDE4NywgMTg5LCAxODksIDE5MCwgMTkwLCAxOTYsIDE5NiwgMTk4LCAxOTgsIDIyOCwgMjI4LCAyMzIsIDIzMiwKLSAgICAyMzMsIDIzMywgMSwgICAxMzUsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDMsIDE0NywgMTQ5LCAxNTAsIDE1MSwgMTUyLAotICAgIDE1NSwgMTU3LCAxNTgsIDE2NSwgMTY2LCAxNjgsIDE3NCwgMTc1LCAxODAsIDE4MiwgMTgzLCAxODgsIDE5MSwgMTk3LCAyMzEsCi0gICAgMjM5LCAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgOSwgICA5LCAgIDksCi0gICAgOSwgICA5LCAgIDksICAgOSwgICA5LCAgIDE0MiwgMTQyLCAxNDIsIDE0MiwgMTQyLCAxNDIsIDE0MiwgMTQyLCAxNDQsIDE0NCwKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ4LAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksIDE1OSwgMTU5LCAxNTksCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDIwNiwgMjA2LCAyMDYsIDIwNiwgMjA2LCAyMDYsIDIwNiwKLSAgICAyMDYsIDIxNSwgMjE1LCAyMTUsIDIxNSwgMjE1LCAyMTUsIDIxNSwgMjE1LCAyMjUsIDIyNSwgMjI1LCAyMjUsIDIyNSwgMjI1LAotICAgIDIyNSwgMjI1LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsCi0gICAgMjM3LCAyMzcsIDIzNywgMTk5LCAxOTksIDE5OSwgMTk5LCAyMDcsIDIwNywgMjA3LCAyMDcsIDIzNCwgMjM0LCAyMzQsIDIzNCwKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDE5MiwgMTkyLCAxOTMsIDE5MywgMjAwLCAyMDAsIDIwMSwgMjAxLCAyMDIsIDIwMiwgMjA1LAotICAgIDIwNSwgMjEwLCAyMTAsIDIxMywgMjEzLCAyMTgsIDIxOCwgMjE5LCAyMTksIDIzOCwgMjM4LCAyNDAsIDI0MCwgMjQyLCAyNDIsCi0gICAgMjQzLCAyNDMsIDI1NSwgMjU1LCAyMDMsIDIwNCwgMjExLCAyMTIsIDIxNCwgMjIxLCAyMjIsIDIyMywgMjQxLCAyNDQsIDI0NSwKLSAgICAyNDYsIDI0NywgMjQ4LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsCi0gICAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIDIsICAgMiwgICAyLCAgIDIsICAgMiwgICAyLCAgIDIsCi0gICAgMiwgICAzLCAgIDMsICAgMywgICAzLCAgIDMsICAgMywgICAzLCAgIDMsICAgNCwgICA0LCAgIDQsICAgNCwgICA0LCAgIDQsCi0gICAgNCwgICA0LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNSwgICA1LCAgIDUsICAgNSwgICA2LCAgIDYsICAgNiwgICA2LCAgIDYsCi0gICAgNiwgICA2LCAgIDYsICAgNywgICA3LCAgIDcsICAgNywgICA3LCAgIDcsICAgNywgICA3LCAgIDgsICAgOCwgICA4LCAgIDgsCi0gICAgOCwgICA4LCAgIDgsICAgOCwgICAxMSwgIDExLCAgMTEsICAxMSwgIDExLCAgMTEsICAxMSwgIDExLCAgMTIsICAxMiwgIDEyLAotICAgIDEyLCAgMTIsICAxMiwgIDEyLCAgMTIsICAxNCwgIDE0LCAgMTQsICAxNCwgIDE0LCAgMTQsICAxNCwgIDE0LCAgMTUsICAxNSwKLSAgICAxNSwgIDE1LCAgMTUsICAxNSwgIDE1LCAgMTUsICAxNiwgIDE2LCAgMTYsICAxNiwgIDE2LCAgMTYsICAxNiwgIDE2LCAgMTcsCi0gICAgMTcsICAxNywgIDE3LCAgMTcsICAxNywgIDE3LCAgMTcsICAxOCwgIDE4LCAgMTgsICAxOCwgIDE4LCAgMTgsICAxOCwgIDE4LAotICAgIDE5LCAgMTksICAxOSwgIDE5LCAgMTksICAxOSwgIDE5LCAgMTksICAyMCwgIDIwLCAgMjAsICAyMCwgIDIwLCAgMjAsICAyMCwKLSAgICAyMCwgIDIxLCAgMjEsICAyMSwgIDIxLCAgMjEsICAyMSwgIDIxLCAgMjEsICAyMywgIDIzLCAgMjMsICAyMywgIDIzLCAgMjMsCi0gICAgMjMsICAyMywgIDI0LCAgMjQsICAyNCwgIDI0LCAgMjQsICAyNCwgIDI0LCAgMjQsICAyNSwgIDI1LCAgMjUsICAyNSwgIDI1LAotICAgIDI1LCAgMjUsICAyNSwgIDI2LCAgMjYsICAyNiwgIDI2LCAgMjYsICAyNiwgIDI2LCAgMjYsICAyNywgIDI3LCAgMjcsICAyNywKLSAgICAyNywgIDI3LCAgMjcsICAyNywgIDI4LCAgMjgsICAyOCwgIDI4LCAgMjgsICAyOCwgIDI4LCAgMjgsICAyOSwgIDI5LCAgMjksCi0gICAgMjksICAyOSwgIDI5LCAgMjksICAyOSwgIDMwLCAgMzAsICAzMCwgIDMwLCAgMzAsICAzMCwgIDMwLCAgMzAsICAzMSwgIDMxLAotICAgIDMxLCAgMzEsICAzMSwgIDMxLCAgMzEsICAzMSwgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyMjAsCi0gICAgMjIwLCAyMjAsIDIyMCwgMjIwLCAyMjAsIDIyMCwgMjIwLCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwKLSAgICAxMCwgIDEwLCAgMTMsICAxMywgIDIyLCAgMjIsICAyNTYsIDI1NiwgNjcsICA2NywgIDY3LCAgNjcsICA2NywgIDY3LCAgNjcsCi0gICAgNjcsICA2OCwgIDY4LCAgNjgsICA2OCwgIDY4LCAgNjgsICA2OCwgIDY4LCAgOTUsICA5NSwgIDk1LCAgOTUsICA5NSwgIDk1LAotICAgIDk1LCAgOTUsICA5OCwgIDk4LCAgOTgsICA5OCwgIDk4LCAgOTgsICA5OCwgIDk4LCAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMywgMTAzLCAxMDMsIDEwMywKLSAgICAxMDMsIDEwMywgMTAzLCAxMDMsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDgsIDEwOCwgMTA4LAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDksIDEwOSwgMTA5LCAxMDksIDEwOSwgMTA5LCAxMDksIDEwOSwgMTEwLCAxMTAsCi0gICAgMTEwLCAxMTAsIDExMCwgMTEwLCAxMTAsIDExMCwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExNCwKLSAgICAxMTQsIDExNCwgMTE0LCAxMTQsIDExNCwgMTE0LCAxMTQsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LAotICAgIDU4LCAgNTgsICA1OCwgIDU4LCAgNjYsICA2NiwgIDY2LCAgNjYsICA2NywgIDY3LCAgNjcsICA2NywgIDY4LCAgNjgsICA2OCwKLSAgICA2OCwgIDY5LCAgNjksICA2OSwgIDY5LCAgNzAsICA3MCwgIDcwLCAgNzAsICA3MSwgIDcxLCAgNzEsICA3MSwgIDcyLCAgNzIsCi0gICAgNzIsICA3MiwgIDczLCAgNzMsICA3MywgIDczLCAgNzQsICA3NCwgIDc0LCAgNzQsICA3NSwgIDc1LCAgNzUsICA3NSwgIDc2LAotICAgIDc2LCAgNzYsICA3NiwgIDc3LCAgNzcsICA3NywgIDc3LCAgNzgsICA3OCwgIDc4LCAgNzgsICA3OSwgIDc5LCAgNzksICA3OSwKLSAgICA4MCwgIDgwLCAgODAsICA4MCwgIDgxLCAgODEsICA4MSwgIDgxLCAgODIsICA4MiwgIDgyLCAgODIsICA4MywgIDgzLCAgODMsCi0gICAgODMsICA4NCwgIDg0LCAgODQsICA4NCwgIDg1LCAgODUsICA4NSwgIDg1LCAgODYsICA4NiwgIDg2LCAgODYsICA4NywgIDg3LAotICAgIDg3LCAgODcsICA4OSwgIDg5LCAgODksICA4OSwgIDEwNiwgMTA2LCAxMDYsIDEwNiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMTMsCi0gICAgMTEzLCAxMTMsIDExMywgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTksIDExOSwgMTE5LCAxMTksIDEyMCwgMTIwLCAxMjAsIDEyMCwKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMzgsICAzOCwgIDQyLCAgNDIsICA0NCwgIDQ0LCAgNTksCi0gICAgNTksICA4OCwgIDg4LCAgOTAsICA5MCwgIC0xLCAgLTEsICAtMSwgIC0xLCAgMzMsICAzMywgIDMzLCAgMzMsICAzMywgIDMzLAotICAgIDMzLCAgMzMsICAzNCwgIDM0LCAgMzQsICAzNCwgIDM0LCAgMzQsICAzNCwgIDM0LCAgNDAsICA0MCwgIDQwLCAgNDAsICA0MCwKLSAgICA0MCwgIDQwLCAgNDAsICA0MSwgIDQxLCAgNDEsICA0MSwgIDQxLCAgNDEsICA0MSwgIDQxLCAgNjMsICA2MywgIDYzLCAgNjMsCi0gICAgNjMsICA2MywgIDYzLCAgNjMsICAzOSwgIDM5LCAgMzksICAzOSwgIDQzLCAgNDMsICA0MywgIDQzLCAgMTI0LCAxMjQsIDEyNCwKLSAgICAxMjQsIDM1LCAgMzUsICA2MiwgIDYyLCAgMCwgICAzNiwgIDY0LCAgOTEsICA5MywgIDEyNiwgLTEsICAtMSwgIDk0LCAgOTQsCi0gICAgOTQsICA5NCwgIDk0LCAgOTQsICA5NCwgIDk0LCAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDYwLAotICAgIDYwLCAgNjAsICA2MCwgIDk2LCAgOTYsICA5NiwgIDk2LCAgMTIzLCAxMjMsIDEyMywgMTIzLCAtMSwgIC0xLCAgLTEsICAtMSwKLSAgICA5MiwgIDkyLCAgOTIsICA5MiwgIDE5NSwgMTk1LCAxOTUsIDE5NSwgMjA4LCAyMDgsIDIwOCwgMjA4LCAxMjgsIDEyOCwgMTMwLAotICAgIDEzMCwgMTMxLCAxMzEsIDE2MiwgMTYyLCAxODQsIDE4NCwgMTk0LCAxOTQsIDIyNCwgMjI0LCAyMjYsIDIyNiwgMTUzLCAxNjEsCi0gICAgMTY3LCAxNzIsIDE3NiwgMTc3LCAxNzksIDIwOSwgMjE2LCAyMTcsIDIyNywgMjI5LCAyMzAsIC0xLCAgLTEsICAtMSwgIC0xLAotICAgIC0xLCAgLTEsICAtMSwgIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMzIsIDEzMiwgMTMyLCAxMzIsCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAxMzQsIDEzNCwKLSAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDE0NiwgMTQ2LAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE1NCwgMTU0LCAxNTQsIDE1NCwgMTU0LCAxNTQsIDE1NCwgMTU0LCAxNTYsCi0gICAgMTU2LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMTU2LCAxNjAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDE2MCwKLSAgICAxNjMsIDE2MywgMTYzLCAxNjMsIDE2MywgMTYzLCAxNjMsIDE2MywgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LAotICAgIDE2NCwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsCi0gICAgMTcwLCAxNzAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwKLSAgICAxNzgsIDE3OCwgMTc4LCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTg1LCAxODUsIDE4NSwgMTg1LAotICAgIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsCi0gICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4OSwgMTg5LCAxODksIDE4OSwgMTg5LCAxODksIDE4OSwgMTg5LCAxOTAsIDE5MCwKLSAgICAxOTAsIDE5MCwgMTkwLCAxOTAsIDE5MCwgMTkwLCAxOTYsIDE5NiwgMTk2LCAxOTYsIDE5NiwgMTk2LCAxOTYsIDE5NiwgMTk4LAotICAgIDE5OCwgMTk4LCAxOTgsIDE5OCwgMTk4LCAxOTgsIDE5OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMywKLSAgICAyMzMsIDEsICAgMSwgICAxLCAgIDEsICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzcsIDEzNywgMTM3LCAxMzcsIDEzOCwgMTM4LAotICAgIDEzOCwgMTM4LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDMsCi0gICAgMTQzLCAxNDMsIDE0MywgMTQ3LCAxNDcsIDE0NywgMTQ3LCAxNDksIDE0OSwgMTQ5LCAxNDksIDE1MCwgMTUwLCAxNTAsIDE1MCwKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTU1LCAxNTUsIDE1NSwgMTU1LCAxNTcsIDE1NywgMTU3LAotICAgIDE1NywgMTU4LCAxNTgsIDE1OCwgMTU4LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY4LCAxNjgsCi0gICAgMTY4LCAxNjgsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxODAsIDE4MCwgMTgwLCAxODAsIDE4MiwKLSAgICAxODIsIDE4MiwgMTgyLCAxODMsIDE4MywgMTgzLCAxODMsIDE4OCwgMTg4LCAxODgsIDE4OCwgMTkxLCAxOTEsIDE5MSwgMTkxLAotICAgIDE5NywgMTk3LCAxOTcsIDE5NywgMjMxLCAyMzEsIDIzMSwgMjMxLCAyMzksIDIzOSwgMjM5LCAyMzksIDksICAgOSwgICAxNDIsCi0gICAgMTQyLCAxNDQsIDE0NCwgMTQ1LCAxNDUsIDE0OCwgMTQ4LCAxNTksIDE1OSwgMTcxLCAxNzEsIDIwNiwgMjA2LCAyMTUsIDIxNSwKLSAgICAyMjUsIDIyNSwgMjM2LCAyMzYsIDIzNywgMjM3LCAxOTksIDIwNywgMjM0LCAyMzUsIDE5MiwgMTkyLCAxOTIsIDE5MiwgMTkyLAotICAgIDE5MiwgMTkyLCAxOTIsIDE5MywgMTkzLCAxOTMsIDE5MywgMTkzLCAxOTMsIDE5MywgMTkzLCAyMDAsIDIwMCwgMjAwLCAyMDAsCi0gICAgMjAwLCAyMDAsIDIwMCwgMjAwLCAyMDEsIDIwMSwgMjAxLCAyMDEsIDIwMSwgMjAxLCAyMDEsIDIwMSwgMjAyLCAyMDIsIDIwMiwKLSAgICAyMDIsIDIwMiwgMjAyLCAyMDIsIDIwMiwgMjA1LCAyMDUsIDIwNSwgMjA1LCAyMDUsIDIwNSwgMjA1LCAyMDUsIDIxMCwgMjEwLAotICAgIDIxMCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTAsIDIxMywgMjEzLCAyMTMsIDIxMywgMjEzLCAyMTMsIDIxMywgMjEzLCAyMTgsCi0gICAgMjE4LCAyMTgsIDIxOCwgMjE4LCAyMTgsIDIxOCwgMjE4LCAyMTksIDIxOSwgMjE5LCAyMTksIDIxOSwgMjE5LCAyMTksIDIxOSwKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLAotICAgIDI0MCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsCi0gICAgMjQzLCAyNDMsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyMDMsIDIwMywgMjAzLCAyMDMsIDIwNCwKLSAgICAyMDQsIDIwNCwgMjA0LCAyMTEsIDIxMSwgMjExLCAyMTEsIDIxMiwgMjEyLCAyMTIsIDIxMiwgMjE0LCAyMTQsIDIxNCwgMjE0LAotICAgIDIyMSwgMjIxLCAyMjEsIDIyMSwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjMsIDI0MSwgMjQxLCAyNDEsCi0gICAgMjQxLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDcsIDI0NywKLSAgICAyNDcsIDI0NywgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MywgMjUzLCAyNTMsIDI1MywgMjU0LCAyNTQsIDI1NCwgMjU0LCAyLCAgIDIsICAgMywgICAzLAotICAgIDQsICAgNCwgICA1LCAgIDUsICAgNiwgICA2LCAgIDcsICAgNywgICA4LCAgIDgsICAgMTEsICAxMSwgIDEyLCAgMTIsICAxNCwKLSAgICAxNCwgIDE1LCAgMTUsICAxNiwgIDE2LCAgMTcsICAxNywgIDE4LCAgMTgsICAxOSwgIDE5LCAgMjAsICAyMCwgIDIxLCAgMjEsCi0gICAgMjMsICAyMywgIDI0LCAgMjQsICAyNSwgIDI1LCAgMjYsICAyNiwgIDI3LCAgMjcsICAyOCwgIDI4LCAgMjksICAyOSwgIDMwLAotICAgIDMwLCAgMzEsICAzMSwgIDEyNywgMTI3LCAyMjAsIDIyMCwgMjQ5LCAyNDksIC0xLCAgLTEsICAxMCwgIDEwLCAgMTAsICAxMCwKLSAgICAxMCwgIDEwLCAgMTAsICAxMCwgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAyMiwgIDIyLCAgMjIsCi0gICAgMjIsICAyMiwgIDIyLCAgMjIsICAyMiwgIDI1NiwgMjU2LCAyNTYsIDI1NiwgMjU2LCAyNTYsIDI1NiwgMjU2LCA0NSwgIDQ1LAotICAgIDQ1LCAgNDUsICA0NSwgIDQ1LCAgNDUsICA0NSwgIDQ2LCAgNDYsICA0NiwgIDQ2LCAgNDYsICA0NiwgIDQ2LCAgNDYsICA0NywKLSAgICA0NywgIDQ3LCAgNDcsICA0NywgIDQ3LCAgNDcsICA0NywgIDUxLCAgNTEsICA1MSwgIDUxLCAgNTEsICA1MSwgIDUxLCAgNTEsCi0gICAgNTIsICA1MiwgIDUyLCAgNTIsICA1MiwgIDUyLCAgNTIsICA1MiwgIDUzLCAgNTMsICA1MywgIDUzLCAgNTMsICA1MywgIDUzLAotICAgIDUzLCAgNTQsICA1NCwgIDU0LCAgNTQsICA1NCwgIDU0LCAgNTQsICA1NCwgIDU1LCAgNTUsICA1NSwgIDU1LCAgNTUsICA1NSwKLSAgICA1NSwgIDU1LCAgNTYsICA1NiwgIDU2LCAgNTYsICA1NiwgIDU2LCAgNTYsICA1NiwgIDU3LCAgNTcsICA1NywgIDU3LCAgNTcsCi0gICAgNTcsICA1NywgIDU3LCAgNTAsICA1MCwgIDUwLCAgNTAsICA1MCwgIDUwLCAgNTAsICA1MCwgIDk3LCAgOTcsICA5NywgIDk3LAotICAgIDk3LCAgOTcsICA5NywgIDk3LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDk5LCAgOTksICA5OSwgIDEwMSwgMTAxLCAxMDEsCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMTEsIDExMSwKLSAgICAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMzIsICAzMiwgIDMyLCAgMzIsICAzNywgIDM3LCAgMzcsICAzNywKLSAgICA0NSwgIDQ1LCAgNDUsICA0NSwgIDQ2LCAgNDYsICA0NiwgIDQ2LCAgNDcsICA0NywgIDQ3LCAgNDcsICA1MSwgIDUxLCAgNTEsCi0gICAgNTEsICA1MiwgIDUyLCAgNTIsICA1MiwgIDUzLCAgNTMsICA1MywgIDUzLCAgNTQsICA1NCwgIDU0LCAgNTQsICA1NSwgIDU1LAotICAgIDU1LCAgNTUsICA1NiwgIDU2LCAgNTYsICA1NiwgIDU3LCAgNTcsICA1NywgIDU3LCAgNjEsICA2MSwgIDYxLCAgNjEsICA2NSwKLSAgICA2NSwgIDY1LCAgNjUsICA5NSwgIDk1LCAgOTUsICA5NSwgIDk4LCAgOTgsICA5OCwgIDk4LCAgMTAwLCAxMDAsIDEwMCwgMTAwLAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAzLCAxMDMsIDEwMywgMTAzLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwOCwgMTA4LCAxMDgsCi0gICAgMTA4LCAxMDksIDEwOSwgMTA5LCAxMDksIDExMCwgMTEwLCAxMTAsIDExMCwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTQsIDExNCwKLSAgICAxMTQsIDExNCwgMTE3LCAxMTcsIDExNywgMTE3LCA1OCwgIDU4LCAgNjYsICA2NiwgIDY3LCAgNjcsICA2OCwgIDY4LCAgNjksCi0gICAgNjksICA3MCwgIDcwLCAgNzEsICA3MSwgIDcyLCAgNzIsICA3MywgIDczLCAgNzQsICA3NCwgIDc1LCAgNzUsICA3NiwgIDc2LAotICAgIDc3LCAgNzcsICA3OCwgIDc4LCAgNzksICA3OSwgIDgwLCAgODAsICA4MSwgIDgxLCAgODIsICA4MiwgIDgzLCAgODMsICA4NCwKLSAgICA4NCwgIDg1LCAgODUsICA4NiwgIDg2LCAgODcsICA4NywgIDg5LCAgODksICAxMDYsIDEwNiwgMTA3LCAxMDcsIDExMywgMTEzLAotICAgIDExOCwgMTE4LCAxMTksIDExOSwgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMzgsICA0MiwgIDQ0LCAgNTksICA4OCwKLSAgICA5MCwgIC0xLCAgLTEsICAzMywgIDMzLCAgMzMsICAzMywgIDM0LCAgMzQsICAzNCwgIDM0LCAgNDAsICA0MCwgIDQwLCAgNDAsCi0gICAgNDEsICA0MSwgIDQxLCAgNDEsICA2MywgIDYzLCAgNjMsICA2MywgIDM5LCAgMzksICA0MywgIDQzLCAgMTI0LCAxMjQsIDM1LAotICAgIDYyLCAgLTEsICAtMSwgIC0xLCAgLTEsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMzYsICAzNiwKLSAgICAzNiwgIDM2LCAgMzYsICAzNiwgIDM2LCAgMzYsICA2NCwgIDY0LCAgNjQsICA2NCwgIDY0LCAgNjQsICA2NCwgIDY0LCAgOTEsCi0gICAgOTEsICA5MSwgIDkxLCAgOTEsICA5MSwgIDkxLCAgOTEsICA5MywgIDkzLCAgOTMsICA5MywgIDkzLCAgOTMsICA5MywgIDkzLAotICAgIDEyNiwgMTI2LCAxMjYsIDEyNiwgMTI2LCAxMjYsIDEyNiwgMTI2LCA5NCwgIDk0LCAgOTQsICA5NCwgIDEyNSwgMTI1LCAxMjUsCi0gICAgMTI1LCA2MCwgIDYwLCAgOTYsICA5NiwgIDEyMywgMTIzLCAtMSwgIC0xLCAgOTIsICA5MiwgIDE5NSwgMTk1LCAyMDgsIDIwOCwKLSAgICAxMjgsIDEzMCwgMTMxLCAxNjIsIDE4NCwgMTk0LCAyMjQsIDIyNiwgLTEsICAtMSwgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLAotICAgIDE1MywgMTUzLCAxNTMsIDE2MSwgMTYxLCAxNjEsIDE2MSwgMTYxLCAxNjEsIDE2MSwgMTYxLCAxNjcsIDE2NywgMTY3LCAxNjcsCi0gICAgMTY3LCAxNjcsIDE2NywgMTY3LCAxNzIsIDE3MiwgMTcyLCAxNzIsIDE3MiwgMTcyLCAxNzIsIDE3MiwgMTc2LCAxNzYsIDE3NiwKLSAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc3LCAxNzcsIDE3NywgMTc3LCAxNzcsIDE3NywgMTc3LCAxNzcsIDE3OSwgMTc5LAotICAgIDE3OSwgMTc5LCAxNzksIDE3OSwgMTc5LCAxNzksIDIwOSwgMjA5LCAyMDksIDIwOSwgMjA5LCAyMDksIDIwOSwgMjA5LCAyMTYsCi0gICAgMjE2LCAyMTYsIDIxNiwgMjE2LCAyMTYsIDIxNiwgMjE2LCAyMTcsIDIxNywgMjE3LCAyMTcsIDIxNywgMjE3LCAyMTcsIDIxNywKLSAgICAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LAotICAgIDIyOSwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMzAsIDEyOSwgMTI5LCAxMjksIDEyOSwgMTMyLCAxMzIsCi0gICAgMTMyLCAxMzIsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDE0NiwKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNTQsIDE1NCwgMTU0LCAxNTQsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMTYwLCAxNjAsIDE2MCwgMTYwLAotICAgIDE2MywgMTYzLCAxNjMsIDE2MywgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjksIDE2OSwgMTY5LCAxNjksIDE3MCwgMTcwLCAxNzAsCi0gICAgMTcwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODUsIDE4NSwKLSAgICAxODUsIDE4NSwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODcsIDE4OSwgMTg5LCAxODksIDE4OSwgMTkwLAotICAgIDE5MCwgMTkwLCAxOTAsIDE5NiwgMTk2LCAxOTYsIDE5NiwgMTk4LCAxOTgsIDE5OCwgMTk4LCAyMjgsIDIyOCwgMjI4LCAyMjgsCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzMsIDIzMywgMjMzLCAyMzMsIDEsICAgMSwgICAxMzUsIDEzNSwgMTM3LCAxMzcsIDEzOCwKLSAgICAxMzgsIDEzOSwgMTM5LCAxNDAsIDE0MCwgMTQxLCAxNDEsIDE0MywgMTQzLCAxNDcsIDE0NywgMTQ5LCAxNDksIDE1MCwgMTUwLAotICAgIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTU1LCAxNTUsIDE1NywgMTU3LCAxNTgsIDE1OCwgMTY1LCAxNjUsIDE2NiwgMTY2LCAxNjgsCi0gICAgMTY4LCAxNzQsIDE3NCwgMTc1LCAxNzUsIDE4MCwgMTgwLCAxODIsIDE4MiwgMTgzLCAxODMsIDE4OCwgMTg4LCAxOTEsIDE5MSwKLSAgICAxOTcsIDE5NywgMjMxLCAyMzEsIDIzOSwgMjM5LCA5LCAgIDE0MiwgMTQ0LCAxNDUsIDE0OCwgMTU5LCAxNzEsIDIwNiwgMjE1LAotICAgIDIyNSwgMjM2LCAyMzcsIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgLTEsICAtMSwgIC0xLCAgMTk5LCAxOTksCi0gICAgMTk5LCAxOTksIDE5OSwgMTk5LCAxOTksIDE5OSwgMjA3LCAyMDcsIDIwNywgMjA3LCAyMDcsIDIwNywgMjA3LCAyMDcsIDIzNCwKLSAgICAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LAotICAgIDE5MiwgMTkyLCAxOTIsIDE5MiwgMTkzLCAxOTMsIDE5MywgMTkzLCAyMDAsIDIwMCwgMjAwLCAyMDAsIDIwMSwgMjAxLCAyMDEsCi0gICAgMjAxLCAyMDIsIDIwMiwgMjAyLCAyMDIsIDIwNSwgMjA1LCAyMDUsIDIwNSwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTMsIDIxMywKLSAgICAyMTMsIDIxMywgMjE4LCAyMTgsIDIxOCwgMjE4LCAyMTksIDIxOSwgMjE5LCAyMTksIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjQwLAotICAgIDI0MCwgMjQwLCAyNDAsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgMjAzLCAyMDMsIDIwNCwgMjA0LCAyMTEsIDIxMSwgMjEyLCAyMTIsIDIxNCwgMjE0LCAyMjEsIDIyMSwgMjIyLCAyMjIsIDIyMywKLSAgICAyMjMsIDI0MSwgMjQxLCAyNDQsIDI0NCwgMjQ1LCAyNDUsIDI0NiwgMjQ2LCAyNDcsIDI0NywgMjQ4LCAyNDgsIDI1MCwgMjUwLAotICAgIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUzLCAyNTMsIDI1NCwgMjU0LCAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAgNywgICA4LAotICAgIDExLCAgMTIsICAxNCwgIDE1LCAgMTYsICAxNywgIDE4LCAgMTksICAyMCwgIDIxLCAgMjMsICAyNCwgIDI1LCAgMjYsICAyNywKLSAgICAyOCwgIDI5LCAgMzAsICAzMSwgIDEyNywgMjIwLCAyNDksIC0xLCAgMTAsICAxMCwgIDEwLCAgMTAsICAxMywgIDEzLCAgMTMsCi0gICAgMTMsICAyMiwgIDIyLCAgMjIsICAyMiwgIDI1NiwgMjU2LCAyNTYsIDI1NiwKLX07Ci0KLXN0YXRpYyBjb25zdCB1aW50OF90IGludmVyc2VfYmFzZTY0WzI1Nl0gPSB7Ci0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgNjIsICAyNTUsCi0gICAgMjU1LCAyNTUsIDYzLCAgNTIsICA1MywgIDU0LCAgNTUsICA1NiwgIDU3LCAgNTgsICA1OSwgIDYwLCAgNjEsICAyNTUsIDI1NSwKLSAgICAyNTUsIDY0LCAgMjU1LCAyNTUsIDI1NSwgMCwgICAxLCAgIDIsICAgMywgICA0LCAgIDUsICAgNiwgICA3LCAgIDgsICAgOSwKLSAgICAxMCwgIDExLCAgMTIsICAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgMTgsICAxOSwgIDIwLCAgMjEsICAyMiwgIDIzLCAgMjQsCi0gICAgMjUsICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNiwgIDI3LCAgMjgsICAyOSwgIDMwLCAgMzEsICAzMiwgIDMzLAotICAgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgsICAzOSwgIDQwLCAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDQ2LCAgNDcsICA0OCwKLSAgICA0OSwgIDUwLCAgNTEsICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwKLSAgICAyNTUsCi19OwotCi0vKiBlbWlzc2lvbiBoZWxwZXJzICovCi1zdGF0aWMgaW50IG9uX2hkcihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGdycGNfbWRlbGVtICptZCwKLSAgICAgICAgICAgICAgICAgIGludCBhZGRfdG9fdGFibGUpIHsKLSAgaWYgKGFkZF90b190YWJsZSkgewotICAgIGlmICghZ3JwY19jaHR0cDJfaHB0YmxfYWRkKCZwLT50YWJsZSwgbWQpKSB7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gIH0KLSAgcC0+b25faGVhZGVyKHAtPm9uX2hlYWRlcl91c2VyX2RhdGEsIG1kKTsKLSAgcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBncnBjX21kc3RyICp0YWtlX3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0cmluZyAqc3RyKSB7Ci0gIGdycGNfbWRzdHIgKnMgPSBncnBjX21kc3RyX2Zyb21fYnVmZmVyKCh1aW50OF90ICopc3RyLT5zdHIsIHN0ci0+bGVuZ3RoKTsKLSAgc3RyLT5sZW5ndGggPSAwOwotICByZXR1cm4gczsKLX0KLQotLyoganVtcCB0byB0aGUgbmV4dCBzdGF0ZSAqLwotc3RhdGljIGludCBwYXJzZV9uZXh0KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBwLT5zdGF0ZSA9ICpwLT5uZXh0X3N0YXRlKys7Ci0gIHJldHVybiBwLT5zdGF0ZShwLCBjdXIsIGVuZCk7Ci19Ci0KLS8qIGJlZ2luIHBhcnNpbmcgYSBoZWFkZXI6IGFsbCBmdW5jdGlvbmFsaXR5IGlzIGVuY29kZWQgaW50byBsb29rdXAgdGFibGVzCi0gICBhYm92ZSAqLwotc3RhdGljIGludCBwYXJzZV9iZWdpbihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgcC0+c3RhdGUgPSBwYXJzZV9iZWdpbjsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIHJldHVybiBmaXJzdF9ieXRlX2FjdGlvbltmaXJzdF9ieXRlX2x1dFsqY3VyXV0ocCwgY3VyLCBlbmQpOwotfQotCi0vKiBzdHJlYW0gZGVwZW5kZW5jeSBhbmQgcHJpb3JpdGl6YXRpb24gZGF0YTogd2UganVzdCBza2lwIGl0ICovCi1zdGF0aWMgaW50IHBhcnNlX3N0cmVhbV93ZWlnaHQoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgcC0+c3RhdGUgPSBwYXJzZV9zdHJlYW1fd2VpZ2h0OwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgcmV0dXJuIHAtPmFmdGVyX3ByaW9yaXRpemF0aW9uKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLXN0YXRpYyBpbnQgcGFyc2Vfc3RyZWFtX2RlcDMoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAoY3VyID09IGVuZCkgewotICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX2RlcDM7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICByZXR1cm4gcGFyc2Vfc3RyZWFtX3dlaWdodChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi1zdGF0aWMgaW50IHBhcnNlX3N0cmVhbV9kZXAyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICBwLT5zdGF0ZSA9IHBhcnNlX3N0cmVhbV9kZXAyOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgcmV0dXJuIHBhcnNlX3N0cmVhbV9kZXAzKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLXN0YXRpYyBpbnQgcGFyc2Vfc3RyZWFtX2RlcDEoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAoY3VyID09IGVuZCkgewotICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX2RlcDE7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICByZXR1cm4gcGFyc2Vfc3RyZWFtX2RlcDIocCwgY3VyICsgMSwgZW5kKTsKLX0KLQotc3RhdGljIGludCBwYXJzZV9zdHJlYW1fZGVwMChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgcC0+c3RhdGUgPSBwYXJzZV9zdHJlYW1fZGVwMDsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIHJldHVybiBwYXJzZV9zdHJlYW1fZGVwMShwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBlbWl0IGFuIGluZGV4ZWQgZmllbGQ7IGZvciBub3cganVzdCBsb2dzIGl0IHRvIGNvbnNvbGU7IGp1bXBzIHRvCi0gICBiZWdpbiB0aGUgbmV4dCBmaWVsZCBvbiBjb21wbGV0aW9uICovCi1zdGF0aWMgaW50IGZpbmlzaF9pbmRleGVkX2ZpZWxkKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgZ3JwY19tZGVsZW0gKm1kID0gZ3JwY19jaHR0cDJfaHB0YmxfbG9va3VwKCZwLT50YWJsZSwgcC0+aW5kZXgpOwotICBpZiAobWQgPT0gTlVMTCkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiSW52YWxpZCBIUEFDSyBpbmRleCByZWNlaXZlZDogJWQiLCBwLT5pbmRleCk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgR1JQQ19NREVMRU1fUkVGKG1kKTsKLSAgcmV0dXJuIG9uX2hkcihwLCBtZCwgMCkgJiYgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhbiBpbmRleGVkIGZpZWxkIHdpdGggaW5kZXggPCAxMjcgKi8KLXN0YXRpYyBpbnQgcGFyc2VfaW5kZXhlZF9maWVsZChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPmluZGV4ID0gKCpjdXIpICYgMHg3ZjsKLSAgcmV0dXJuIGZpbmlzaF9pbmRleGVkX2ZpZWxkKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIGFuIGluZGV4ZWQgZmllbGQgd2l0aCBpbmRleCA+PSAxMjcgKi8KLXN0YXRpYyBpbnQgcGFyc2VfaW5kZXhlZF9maWVsZF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKLSAgICAgIGZpbmlzaF9pbmRleGVkX2ZpZWxkfTsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcC0+aW5kZXggPSAweDdmOwotICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPmluZGV4OwotICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIGZpbmlzaCBhIGxpdGVyYWwgaGVhZGVyIHdpdGggaW5jcmVtZW50YWwgaW5kZXhpbmc6IGp1c3QgbG9nLCBhbmQganVtcCB0byAnCi0gICBiZWdpbiAqLwotc3RhdGljIGludCBmaW5pc2hfbGl0aGRyX2luY2lkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGdycGNfbWRlbGVtICptZCA9IGdycGNfY2h0dHAyX2hwdGJsX2xvb2t1cCgmcC0+dGFibGUsIHAtPmluZGV4KTsKLSAgR1BSX0FTU0VSVChtZCAhPSBOVUxMKTsgLyogaGFuZGxlZCBpbiBzdHJpbmcgcGFyc2luZyAqLwotICByZXR1cm4gb25faGRyKHAsIGdycGNfbWRlbGVtX2Zyb21fbWV0YWRhdGFfc3RyaW5ncyhHUlBDX01EU1RSX1JFRihtZC0+a2V5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9zdHJpbmcocCwgJnAtPnZhbHVlKSksCi0gICAgICAgICAgICAgICAgMSkgJiYKLSAgICAgICAgIHBhcnNlX2JlZ2luKHAsIGN1ciwgZW5kKTsKLX0KLQotLyogZmluaXNoIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aCBpbmNyZW1lbnRhbCBpbmRleGluZyB3aXRoIG5vIGluZGV4ICovCi1zdGF0aWMgaW50IGZpbmlzaF9saXRoZHJfaW5jaWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHJldHVybiBvbl9oZHIocCwgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKHRha2Vfc3RyaW5nKHAsICZwLT5rZXkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX3N0cmluZyhwLCAmcC0+dmFsdWUpKSwKLSAgICAgICAgICAgICAgICAxKSAmJgotICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHdpdGggaW5jcmVtZW50YWwgaW5kZXhpbmc7IGluZGV4IDwgNjMgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX2luY2lkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0gewotICAgICAgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfaW5kZXhlZF9rZXksIGZpbmlzaF9saXRoZHJfaW5jaWR4fTsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcC0+aW5kZXggPSAoKmN1cikgJiAweDNmOwotICByZXR1cm4gcGFyc2Vfc3RyaW5nX3ByZWZpeChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHdpdGggaW5jcmVtZW50YWwgaW5kZXhpbmc7IGluZGV4ID49IDYzICovCi1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9pbmNpZHhfeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7Ci0gICAgICBwYXJzZV9zdHJpbmdfcHJlZml4LCBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9pbmRleGVkX2tleSwKLSAgICAgIGZpbmlzaF9saXRoZHJfaW5jaWR4fTsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcC0+aW5kZXggPSAweDNmOwotICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPmluZGV4OwotICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPSAwICovCi1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9pbmNpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpjdXIsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBzdGF0aWMgY29uc3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIGFuZF90aGVuW10gPSB7Ci0gICAgICBwYXJzZV9rZXlfc3RyaW5nLCBwYXJzZV9zdHJpbmdfcHJlZml4LAotICAgICAgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfbGl0ZXJhbF9rZXksIGZpbmlzaF9saXRoZHJfaW5jaWR4X3Z9OwotICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKLSAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOwotICByZXR1cm4gcGFyc2Vfc3RyaW5nX3ByZWZpeChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBmaW5pc2ggYSBsaXRlcmFsIGhlYWRlciB3aXRob3V0IGluY3JlbWVudGFsIGluZGV4aW5nICovCi1zdGF0aWMgaW50IGZpbmlzaF9saXRoZHJfbm90aWR4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgZ3JwY19tZGVsZW0gKm1kID0gZ3JwY19jaHR0cDJfaHB0YmxfbG9va3VwKCZwLT50YWJsZSwgcC0+aW5kZXgpOwotICBHUFJfQVNTRVJUKG1kICE9IE5VTEwpOyAvKiBoYW5kbGVkIGluIHN0cmluZyBwYXJzaW5nICovCi0gIHJldHVybiBvbl9oZHIocCwgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKEdSUENfTURTVFJfUkVGKG1kLT5rZXkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX3N0cmluZyhwLCAmcC0+dmFsdWUpKSwKLSAgICAgICAgICAgICAgICAwKSAmJgotICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOwotfQotCi0vKiBmaW5pc2ggYSBsaXRlcmFsIGhlYWRlciB3aXRob3V0IGluY3JlbWVudGFsIGluZGV4aW5nIHdpdGggaW5kZXggPSAwICovCi1zdGF0aWMgaW50IGZpbmlzaF9saXRoZHJfbm90aWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHJldHVybiBvbl9oZHIocCwgZ3JwY19tZGVsZW1fZnJvbV9tZXRhZGF0YV9zdHJpbmdzKHRha2Vfc3RyaW5nKHAsICZwLT5rZXkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX3N0cmluZyhwLCAmcC0+dmFsdWUpKSwKLSAgICAgICAgICAgICAgICAwKSAmJgotICAgICAgICAgcGFyc2VfYmVnaW4ocCwgY3VyLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHdpdGhvdXQgaW5jcmVtZW50YWwgaW5kZXhpbmc7IGluZGV4IDwgMTUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0gewotICAgICAgcGFyc2VfdmFsdWVfc3RyaW5nX3dpdGhfaW5kZXhlZF9rZXksIGZpbmlzaF9saXRoZHJfbm90aWR4fTsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcC0+aW5kZXggPSAoKmN1cikgJiAweGY7Ci0gIHJldHVybiBwYXJzZV9zdHJpbmdfcHJlZml4KHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgd2l0aG91dCBpbmNyZW1lbnRhbCBpbmRleGluZzsgaW5kZXggPj0gMTUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKLSAgICAgIHBhcnNlX3N0cmluZ19wcmVmaXgsIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5LAotICAgICAgZmluaXNoX2xpdGhkcl9ub3RpZHh9OwotICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKLSAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOwotICBwLT5pbmRleCA9IDB4ZjsKLSAgcC0+cGFyc2luZy52YWx1ZSA9ICZwLT5pbmRleDsKLSAgcmV0dXJuIHBhcnNlX3ZhbHVlMChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHdpdGhvdXQgaW5jcmVtZW50YWwgaW5kZXhpbmc7IGluZGV4ID09IDAgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX25vdGlkeF92KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKLSAgICAgIHBhcnNlX2tleV9zdHJpbmcsIHBhcnNlX3N0cmluZ19wcmVmaXgsCi0gICAgICBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9saXRlcmFsX2tleSwgZmluaXNoX2xpdGhkcl9ub3RpZHhfdn07Ci0gIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAwOwotICBwLT5uZXh0X3N0YXRlID0gYW5kX3RoZW47Ci0gIHJldHVybiBwYXJzZV9zdHJpbmdfcHJlZml4KHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIGZpbmlzaCBhIGxpdGVyYWwgaGVhZGVyIHRoYXQgaXMgbmV2ZXIgaW5kZXhlZCAqLwotc3RhdGljIGludCBmaW5pc2hfbGl0aGRyX252cmlkeChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGdycGNfbWRlbGVtICptZCA9IGdycGNfY2h0dHAyX2hwdGJsX2xvb2t1cCgmcC0+dGFibGUsIHAtPmluZGV4KTsKLSAgR1BSX0FTU0VSVChtZCAhPSBOVUxMKTsgLyogaGFuZGxlZCBpbiBzdHJpbmcgcGFyc2luZyAqLwotICByZXR1cm4gb25faGRyKHAsIGdycGNfbWRlbGVtX2Zyb21fbWV0YWRhdGFfc3RyaW5ncyhHUlBDX01EU1RSX1JFRihtZC0+a2V5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9zdHJpbmcocCwgJnAtPnZhbHVlKSksCi0gICAgICAgICAgICAgICAgMCkgJiYKLSAgICAgICAgIHBhcnNlX2JlZ2luKHAsIGN1ciwgZW5kKTsKLX0KLQotLyogZmluaXNoIGEgbGl0ZXJhbCBoZWFkZXIgdGhhdCBpcyBuZXZlciBpbmRleGVkIHdpdGggYW4gZXh0cmEgdmFsdWUgKi8KLXN0YXRpYyBpbnQgZmluaXNoX2xpdGhkcl9udnJpZHhfdihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgcmV0dXJuIG9uX2hkcihwLCBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3ModGFrZV9zdHJpbmcocCwgJnAtPmtleSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfc3RyaW5nKHAsICZwLT52YWx1ZSkpLAotICAgICAgICAgICAgICAgIDApICYmCi0gICAgICAgICBwYXJzZV9iZWdpbihwLCBjdXIsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIGEgbGl0ZXJhbCBoZWFkZXIgdGhhdCBpcyBuZXZlciBpbmRleGVkOyBpbmRleCA8IDE1ICovCi1zdGF0aWMgaW50IHBhcnNlX2xpdGhkcl9udnJpZHgoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKLSAgICAgIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5LCBmaW5pc2hfbGl0aGRyX252cmlkeH07Ci0gIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAwOwotICBwLT5uZXh0X3N0YXRlID0gYW5kX3RoZW47Ci0gIHAtPmluZGV4ID0gKCpjdXIpICYgMHhmOwotICByZXR1cm4gcGFyc2Vfc3RyaW5nX3ByZWZpeChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHRoYXQgaXMgbmV2ZXIgaW5kZXhlZDsgaW5kZXggPj0gMTUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGl0aGRyX252cmlkeF94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHN0YXRpYyBjb25zdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUgYW5kX3RoZW5bXSA9IHsKLSAgICAgIHBhcnNlX3N0cmluZ19wcmVmaXgsIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5LAotICAgICAgZmluaXNoX2xpdGhkcl9udnJpZHh9OwotICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID0gMDsKLSAgcC0+bmV4dF9zdGF0ZSA9IGFuZF90aGVuOwotICBwLT5pbmRleCA9IDB4ZjsKLSAgcC0+cGFyc2luZy52YWx1ZSA9ICZwLT5pbmRleDsKLSAgcmV0dXJuIHBhcnNlX3ZhbHVlMChwLCBjdXIgKyAxLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhIGxpdGVyYWwgaGVhZGVyIHRoYXQgaXMgbmV2ZXIgaW5kZXhlZDsgaW5kZXggPT0gMCAqLwotc3RhdGljIGludCBwYXJzZV9saXRoZHJfbnZyaWR4X3YoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLCBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0gewotICAgICAgcGFyc2Vfa2V5X3N0cmluZywgcGFyc2Vfc3RyaW5nX3ByZWZpeCwKLSAgICAgIHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2xpdGVyYWxfa2V5LCBmaW5pc2hfbGl0aGRyX252cmlkeF92fTsKLSAgcC0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDA7Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcmV0dXJuIHBhcnNlX3N0cmluZ19wcmVmaXgocCwgY3VyICsgMSwgZW5kKTsKLX0KLQotLyogZmluaXNoIHBhcnNpbmcgYSBtYXggdGFibGUgc2l6ZSBjaGFuZ2UgKi8KLXN0YXRpYyBpbnQgZmluaXNoX21heF90Ymxfc2l6ZShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgZ3ByX2xvZyhHUFJfSU5GTywgIk1BWCBUQUJMRSBTSVpFOiAlZCIsIHAtPmluZGV4KTsKLSAgcmV0dXJuIGdycGNfY2h0dHAyX2hwdGJsX3NldF9jdXJyZW50X3RhYmxlX3NpemUoJnAtPnRhYmxlLCBwLT5pbmRleCkgJiYKLSAgICAgICAgIHBhcnNlX2JlZ2luKHAsIGN1ciwgZW5kKTsKLX0KLQotLyogcGFyc2UgYSBtYXggdGFibGUgc2l6ZSBjaGFuZ2UsIG1heCBzaXplIDwgMTUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfbWF4X3RibF9zaXplKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID09IDApIHsKLSAgICByZXR1cm4gMDsKLSAgfQotICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkLS07Ci0gIHAtPmluZGV4ID0gKCpjdXIpICYgMHgxZjsKLSAgcmV0dXJuIGZpbmlzaF9tYXhfdGJsX3NpemUocCwgY3VyICsgMSwgZW5kKTsKLX0KLQotLyogcGFyc2UgYSBtYXggdGFibGUgc2l6ZSBjaGFuZ2UsIG1heCBzaXplID49IDE1ICovCi1zdGF0aWMgaW50IHBhcnNlX21heF90Ymxfc2l6ZV94KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgc3RhdGljIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhbmRfdGhlbltdID0gewotICAgICAgZmluaXNoX21heF90Ymxfc2l6ZX07Ci0gIGlmIChwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkID09IDApIHsKLSAgICByZXR1cm4gMDsKLSAgfQotICBwLT5keW5hbWljX3RhYmxlX3VwZGF0ZV9hbGxvd2VkLS07Ci0gIHAtPm5leHRfc3RhdGUgPSBhbmRfdGhlbjsKLSAgcC0+aW5kZXggPSAweDFmOwotICBwLT5wYXJzaW5nLnZhbHVlID0gJnAtPmluZGV4OwotICByZXR1cm4gcGFyc2VfdmFsdWUwKHAsIGN1ciArIDEsIGVuZCk7Ci19Ci0KLS8qIGEgcGFyc2UgZXJyb3I6IGphbSB0aGUgcGFyc2Ugc3RhdGUgaW50byBwYXJzZV9lcnJvciwgYW5kIHJldHVybiBlcnJvciAqLwotc3RhdGljIGludCBwYXJzZV9lcnJvcihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHAtPnN0YXRlID0gcGFyc2VfZXJyb3I7Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHBhcnNlX2lsbGVnYWxfb3AoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIEdQUl9BU1NFUlQoY3VyICE9IGVuZCk7Ci0gIGdwcl9sb2coR1BSX0RFQlVHLCAiSWxsZWdhbCBocGFjayBvcCBjb2RlICVkIiwgKmN1cik7Ci0gIHJldHVybiBwYXJzZV9lcnJvcihwLCBjdXIsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIHRoZSAxc3QgYnl0ZSBvZiBhIHZhcmludCBpbnRvIHAtPnBhcnNpbmcudmFsdWUKLSAgIG5vIG92ZXJmbG93IGlzIHBvc3NpYmxlICovCi1zdGF0aWMgaW50IHBhcnNlX3ZhbHVlMChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAoY3VyID09IGVuZCkgewotICAgIHAtPnN0YXRlID0gcGFyc2VfdmFsdWUwOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgKnAtPnBhcnNpbmcudmFsdWUgKz0gKCpjdXIpICYgMHg3ZjsKLQotICBpZiAoKCpjdXIpICYgMHg4MCkgewotICAgIHJldHVybiBwYXJzZV92YWx1ZTEocCwgY3VyICsgMSwgZW5kKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gcGFyc2VfbmV4dChwLCBjdXIgKyAxLCBlbmQpOwotICB9Ci19Ci0KLS8qIHBhcnNlIHRoZSAybmQgYnl0ZSBvZiBhIHZhcmludCBpbnRvIHAtPnBhcnNpbmcudmFsdWUKLSAgIG5vIG92ZXJmbG93IGlzIHBvc3NpYmxlICovCi1zdGF0aWMgaW50IHBhcnNlX3ZhbHVlMShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAoY3VyID09IGVuZCkgewotICAgIHAtPnN0YXRlID0gcGFyc2VfdmFsdWUxOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgKnAtPnBhcnNpbmcudmFsdWUgKz0gKCgodWludDMyX3QpKmN1cikgJiAweDdmKSA8PCA3OwotCi0gIGlmICgoKmN1cikgJiAweDgwKSB7Ci0gICAgcmV0dXJuIHBhcnNlX3ZhbHVlMihwLCBjdXIgKyAxLCBlbmQpOwotICB9IGVsc2UgewotICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0KLX0KLQotLyogcGFyc2UgdGhlIDNyZCBieXRlIG9mIGEgdmFyaW50IGludG8gcC0+cGFyc2luZy52YWx1ZQotICAgbm8gb3ZlcmZsb3cgaXMgcG9zc2libGUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfdmFsdWUyKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgcC0+c3RhdGUgPSBwYXJzZV92YWx1ZTI7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICAqcC0+cGFyc2luZy52YWx1ZSArPSAoKCh1aW50MzJfdCkqY3VyKSAmIDB4N2YpIDw8IDE0OwotCi0gIGlmICgoKmN1cikgJiAweDgwKSB7Ci0gICAgcmV0dXJuIHBhcnNlX3ZhbHVlMyhwLCBjdXIgKyAxLCBlbmQpOwotICB9IGVsc2UgewotICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0KLX0KLQotLyogcGFyc2UgdGhlIDR0aCBieXRlIG9mIGEgdmFyaW50IGludG8gcC0+cGFyc2luZy52YWx1ZQotICAgbm8gb3ZlcmZsb3cgaXMgcG9zc2libGUgKi8KLXN0YXRpYyBpbnQgcGFyc2VfdmFsdWUzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgcC0+c3RhdGUgPSBwYXJzZV92YWx1ZTM7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICAqcC0+cGFyc2luZy52YWx1ZSArPSAoKCh1aW50MzJfdCkqY3VyKSAmIDB4N2YpIDw8IDIxOwotCi0gIGlmICgoKmN1cikgJiAweDgwKSB7Ci0gICAgcmV0dXJuIHBhcnNlX3ZhbHVlNChwLCBjdXIgKyAxLCBlbmQpOwotICB9IGVsc2UgewotICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0KLX0KLQotLyogcGFyc2UgdGhlIDV0aCBieXRlIG9mIGEgdmFyaW50IGludG8gcC0+cGFyc2luZy52YWx1ZQotICAgZGVwZW5kaW5nIG9uIHRoZSBieXRlLCB3ZSBtYXkgb3ZlcmZsb3csIGFuZCBjYXJlIG11c3QgYmUgdGFrZW4gKi8KLXN0YXRpYyBpbnQgcGFyc2VfdmFsdWU0KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHVpbnQ4X3QgYzsKLSAgdWludDMyX3QgY3VyX3ZhbHVlOwotICB1aW50MzJfdCBhZGRfdmFsdWU7Ci0KLSAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICBwLT5zdGF0ZSA9IHBhcnNlX3ZhbHVlNDsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIGMgPSAoKmN1cikgJiAweDdmOwotICBpZiAoYyA+IDB4ZikgewotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLQotICBjdXJfdmFsdWUgPSAqcC0+cGFyc2luZy52YWx1ZTsKLSAgYWRkX3ZhbHVlID0gKCh1aW50MzJfdCljKSA8PCAyODsKLSAgaWYgKGFkZF92YWx1ZSA+IDB4ZmZmZmZmZmZ1IC0gY3VyX3ZhbHVlKSB7Ci0gICAgZ290byBlcnJvcjsKLSAgfQotCi0gICpwLT5wYXJzaW5nLnZhbHVlID0gY3VyX3ZhbHVlICsgYWRkX3ZhbHVlOwotCi0gIGlmICgoKmN1cikgJiAweDgwKSB7Ci0gICAgcmV0dXJuIHBhcnNlX3ZhbHVlNXVwKHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHBhcnNlX25leHQocCwgY3VyICsgMSwgZW5kKTsKLSAgfQotCi1lcnJvcjoKLSAgZ3ByX2xvZyhHUFJfRVJST1IsCi0gICAgICAgICAgImludGVnZXIgb3ZlcmZsb3cgaW4gaHBhY2sgaW50ZWdlciBkZWNvZGluZzogaGF2ZSAweCUwOHgsICIKLSAgICAgICAgICAiZ290IGJ5dGUgMHglMDJ4IG9uIGJ5dGUgNSIsCi0gICAgICAgICAgKnAtPnBhcnNpbmcudmFsdWUsICpjdXIpOwotICByZXR1cm4gcGFyc2VfZXJyb3IocCwgY3VyLCBlbmQpOwotfQotCi0vKiBwYXJzZSBhbnkgdHJhaWxpbmcgYnl0ZXMgaW4gYSB2YXJpbnQ6IGl0J3MgcG9zc2libGUgdG8gYXBwZW5kIGFuIGFyYml0cmFyeQotICAgbnVtYmVyIG9mIDB4ODAncyBhbmQgbm90IGFmZmVjdCB0aGUgdmFsdWUgLSBhIHplcm8gd2lsbCB0ZXJtaW5hdGUgLSBhbmQKLSAgIGFueXRoaW5nIGVsc2Ugd2lsbCBvdmVyZmxvdyAqLwotc3RhdGljIGludCBwYXJzZV92YWx1ZTV1cChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHdoaWxlIChjdXIgIT0gZW5kICYmICpjdXIgPT0gMHg4MCkgewotICAgICsrY3VyOwotICB9Ci0KLSAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICBwLT5zdGF0ZSA9IHBhcnNlX3ZhbHVlNXVwOwotICAgIHJldHVybiAxOwotICB9Ci0KLSAgaWYgKCpjdXIgPT0gMCkgewotICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0KLQotICBncHJfbG9nKEdQUl9FUlJPUiwKLSAgICAgICAgICAiaW50ZWdlciBvdmVyZmxvdyBpbiBocGFjayBpbnRlZ2VyIGRlY29kaW5nOiBoYXZlIDB4JTA4eCwgIgotICAgICAgICAgICJnb3QgYnl0ZSAweCUwMnggc29tZXRpbWUgYWZ0ZXIgYnl0ZSA1IiwKLSAgICAgICAgICAqcC0+cGFyc2luZy52YWx1ZSwgKmN1cik7Ci0gIHJldHVybiBwYXJzZV9lcnJvcihwLCBjdXIsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIGEgc3RyaW5nIHByZWZpeCAqLwotc3RhdGljIGludCBwYXJzZV9zdHJpbmdfcHJlZml4KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAoY3VyID09IGVuZCkgewotICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyaW5nX3ByZWZpeDsKLSAgICByZXR1cm4gMTsKLSAgfQotCi0gIHAtPnN0cmxlbiA9ICgqY3VyKSAmIDB4N2Y7Ci0gIHAtPmh1ZmYgPSAoKmN1cikgPj4gNzsKLSAgaWYgKHAtPnN0cmxlbiA9PSAweDdmKSB7Ci0gICAgcC0+cGFyc2luZy52YWx1ZSA9ICZwLT5zdHJsZW47Ci0gICAgcmV0dXJuIHBhcnNlX3ZhbHVlMChwLCBjdXIgKyAxLCBlbmQpOwotICB9IGVsc2UgewotICAgIHJldHVybiBwYXJzZV9uZXh0KHAsIGN1ciArIDEsIGVuZCk7Ci0gIH0KLX0KLQotLyogYXBwZW5kIHNvbWUgYnl0ZXMgdG8gYSBzdHJpbmcgKi8KLXN0YXRpYyB2b2lkIGFwcGVuZF9ieXRlcyhncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbmd0aCkgewotICBpZiAobGVuZ3RoICsgc3RyLT5sZW5ndGggPiBzdHItPmNhcGFjaXR5KSB7Ci0gICAgR1BSX0FTU0VSVChzdHItPmxlbmd0aCArIGxlbmd0aCA8PSBVSU5UMzJfTUFYKTsKLSAgICBzdHItPmNhcGFjaXR5ID0gKHVpbnQzMl90KShzdHItPmxlbmd0aCArIGxlbmd0aCk7Ci0gICAgc3RyLT5zdHIgPSBncHJfcmVhbGxvYyhzdHItPnN0ciwgc3RyLT5jYXBhY2l0eSk7Ci0gIH0KLSAgbWVtY3B5KHN0ci0+c3RyICsgc3RyLT5sZW5ndGgsIGRhdGEsIGxlbmd0aCk7Ci0gIEdQUl9BU1NFUlQobGVuZ3RoIDw9IFVJTlQzMl9NQVggLSBzdHItPmxlbmd0aCk7Ci0gIHN0ci0+bGVuZ3RoICs9ICh1aW50MzJfdClsZW5ndGg7Ci19Ci0KLXN0YXRpYyBpbnQgYXBwZW5kX3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0cmluZyAqc3RyID0gcC0+cGFyc2luZy5zdHI7Ci0gIHVpbnQzMl90IGJpdHM7Ci0gIHVpbnQ4X3QgZGVjb2RlZFszXTsKLSAgc3dpdGNoICgoYmluYXJ5X3N0YXRlKXAtPmJpbmFyeSkgewotICAgIGNhc2UgTk9UX0JJTkFSWToKLSAgICAgIGFwcGVuZF9ieXRlcyhzdHIsIGN1ciwgKHNpemVfdCkoZW5kIC0gY3VyKSk7Ci0gICAgICByZXR1cm4gMTsKLSAgICBiNjRfYnl0ZTA6Ci0gICAgY2FzZSBCNjRfQllURTA6Ci0gICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICBwLT5iaW5hcnkgPSBCNjRfQllURTA7Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfQotICAgICAgYml0cyA9IGludmVyc2VfYmFzZTY0WypjdXJdOwotICAgICAgKytjdXI7Ci0gICAgICBpZiAoYml0cyA9PSAyNTUpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgZWxzZSBpZiAoYml0cyA9PSA2NCkKLSAgICAgICAgZ290byBiNjRfYnl0ZTA7Ci0gICAgICBwLT5iYXNlNjRfYnVmZmVyID0gYml0cyA8PCAxODsKLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGI2NF9ieXRlMToKLSAgICBjYXNlIEI2NF9CWVRFMToKLSAgICAgIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHAtPmJpbmFyeSA9IEI2NF9CWVRFMTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgICBiaXRzID0gaW52ZXJzZV9iYXNlNjRbKmN1cl07Ci0gICAgICArK2N1cjsKLSAgICAgIGlmIChiaXRzID09IDI1NSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBlbHNlIGlmIChiaXRzID09IDY0KQotICAgICAgICBnb3RvIGI2NF9ieXRlMTsKLSAgICAgIHAtPmJhc2U2NF9idWZmZXIgfD0gYml0cyA8PCAxMjsKLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGI2NF9ieXRlMjoKLSAgICBjYXNlIEI2NF9CWVRFMjoKLSAgICAgIGlmIChjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHAtPmJpbmFyeSA9IEI2NF9CWVRFMjsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgICBiaXRzID0gaW52ZXJzZV9iYXNlNjRbKmN1cl07Ci0gICAgICArK2N1cjsKLSAgICAgIGlmIChiaXRzID09IDI1NSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBlbHNlIGlmIChiaXRzID09IDY0KQotICAgICAgICBnb3RvIGI2NF9ieXRlMjsKLSAgICAgIHAtPmJhc2U2NF9idWZmZXIgfD0gYml0cyA8PCA2OwotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgYjY0X2J5dGUzOgotICAgIGNhc2UgQjY0X0JZVEUzOgotICAgICAgaWYgKGN1ciA9PSBlbmQpIHsKLSAgICAgICAgcC0+YmluYXJ5ID0gQjY0X0JZVEUzOwotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAgIGJpdHMgPSBpbnZlcnNlX2Jhc2U2NFsqY3VyXTsKLSAgICAgICsrY3VyOwotICAgICAgaWYgKGJpdHMgPT0gMjU1KQotICAgICAgICByZXR1cm4gMDsKLSAgICAgIGVsc2UgaWYgKGJpdHMgPT0gNjQpCi0gICAgICAgIGdvdG8gYjY0X2J5dGUzOwotICAgICAgcC0+YmFzZTY0X2J1ZmZlciB8PSBiaXRzOwotICAgICAgYml0cyA9IHAtPmJhc2U2NF9idWZmZXI7Ci0gICAgICBkZWNvZGVkWzBdID0gKHVpbnQ4X3QpKGJpdHMgPj4gMTYpOwotICAgICAgZGVjb2RlZFsxXSA9ICh1aW50OF90KShiaXRzID4+IDgpOwotICAgICAgZGVjb2RlZFsyXSA9ICh1aW50OF90KShiaXRzKTsKLSAgICAgIGFwcGVuZF9ieXRlcyhzdHIsIGRlY29kZWQsIDMpOwotICAgICAgZ290byBiNjRfYnl0ZTA7Ci0gIH0KLSAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuIDEpOwotfQotCi0vKiBhcHBlbmQgYSBudWxsIHRlcm1pbmF0b3IgdG8gYSBzdHJpbmcgKi8KLXN0YXRpYyBpbnQgZmluaXNoX3N0cihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApIHsKLSAgdWludDhfdCB0ZXJtaW5hdG9yID0gMDsKLSAgdWludDhfdCBkZWNvZGVkWzJdOwotICB1aW50MzJfdCBiaXRzOwotICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nICpzdHIgPSBwLT5wYXJzaW5nLnN0cjsKLSAgc3dpdGNoICgoYmluYXJ5X3N0YXRlKXAtPmJpbmFyeSkgewotICAgIGNhc2UgTk9UX0JJTkFSWToKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgQjY0X0JZVEUwOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCNjRfQllURTE6Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwgImlsbGVnYWwgYmFzZTY0IGVuY29kaW5nIik7Ci0gICAgICByZXR1cm4gMDsgLyogaWxsZWdhbCBlbmNvZGluZyAqLwotICAgIGNhc2UgQjY0X0JZVEUyOgotICAgICAgYml0cyA9IHAtPmJhc2U2NF9idWZmZXI7Ci0gICAgICBpZiAoYml0cyAmIDB4ZmZmZikgewotICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgInRyYWlsaW5nIGJpdHMgaW4gYmFzZTY0IGVuY29kaW5nOiAweCUwNHgiLAotICAgICAgICAgICAgICAgIGJpdHMgJiAweGZmZmYpOwotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIGRlY29kZWRbMF0gPSAodWludDhfdCkoYml0cyA+PiAxNik7Ci0gICAgICBhcHBlbmRfYnl0ZXMoc3RyLCBkZWNvZGVkLCAxKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgQjY0X0JZVEUzOgotICAgICAgYml0cyA9IHAtPmJhc2U2NF9idWZmZXI7Ci0gICAgICBpZiAoYml0cyAmIDB4ZmYpIHsKLSAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJ0cmFpbGluZyBiaXRzIGluIGJhc2U2NCBlbmNvZGluZzogMHglMDJ4IiwKLSAgICAgICAgICAgICAgICBiaXRzICYgMHhmZik7Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgZGVjb2RlZFswXSA9ICh1aW50OF90KShiaXRzID4+IDE2KTsKLSAgICAgIGRlY29kZWRbMV0gPSAodWludDhfdCkoYml0cyA+PiA4KTsKLSAgICAgIGFwcGVuZF9ieXRlcyhzdHIsIGRlY29kZWQsIDIpOwotICAgICAgYnJlYWs7Ci0gIH0KLSAgYXBwZW5kX2J5dGVzKHN0ciwgJnRlcm1pbmF0b3IsIDEpOwotICBwLT5wYXJzaW5nLnN0ci0+bGVuZ3RoLS07IC8qIGRvbid0IGFjdHVhbGx5IGNvdW50IHRoZSBudWxsIHRlcm1pbmF0b3IgKi8KLSAgcmV0dXJuIDE7Ci19Ci0KLS8qIGRlY29kZSBhIG5pYmJsZSBmcm9tIGEgaHVmZm1hbiBlbmNvZGVkIHN0cmVhbSAqLwotc3RhdGljIGludCBodWZmX25pYmJsZShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIHVpbnQ4X3QgbmliYmxlKSB7Ci0gIGludDE2X3QgZW1pdCA9IGVtaXRfc3ViX3RibFsxNiAqIGVtaXRfdGJsW3AtPmh1ZmZfc3RhdGVdICsgbmliYmxlXTsKLSAgaW50MTZfdCBuZXh0ID0gbmV4dF9zdWJfdGJsWzE2ICogbmV4dF90YmxbcC0+aHVmZl9zdGF0ZV0gKyBuaWJibGVdOwotICBpZiAoZW1pdCAhPSAtMSkgewotICAgIGlmIChlbWl0ID49IDAgJiYgZW1pdCA8IDI1NikgewotICAgICAgdWludDhfdCBjID0gKHVpbnQ4X3QpZW1pdDsKLSAgICAgIGlmICghYXBwZW5kX3N0cmluZyhwLCAmYywgKCZjKSArIDEpKSByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgYXNzZXJ0KGVtaXQgPT0gMjU2KTsKLSAgICB9Ci0gIH0KLSAgcC0+aHVmZl9zdGF0ZSA9IG5leHQ7Ci0gIHJldHVybiAxOwotfQotCi0vKiBkZWNvZGUgZnVsbCBieXRlcyBmcm9tIGEgaHVmZm1hbiBlbmNvZGVkIHN0cmVhbSAqLwotc3RhdGljIGludCBhZGRfaHVmZl9ieXRlcyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIGZvciAoOyBjdXIgIT0gZW5kOyArK2N1cikgewotICAgIGlmICghaHVmZl9uaWJibGUocCwgKmN1ciA+PiA0KSB8fCAhaHVmZl9uaWJibGUocCwgKmN1ciAmIDB4ZikpIHJldHVybiAwOwotICB9Ci0gIHJldHVybiAxOwotfQotCi0vKiBkZWNvZGUgc29tZSBzdHJpbmcgYnl0ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgZGVjb2RpbmcgbW9kZQotICAgKGh1ZmZtYW4gb3Igbm90KSAqLwotc3RhdGljIGludCBhZGRfc3RyX2J5dGVzKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICBpZiAocC0+aHVmZikgewotICAgIHJldHVybiBhZGRfaHVmZl9ieXRlcyhwLCBjdXIsIGVuZCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIGFwcGVuZF9zdHJpbmcocCwgY3VyLCBlbmQpOwotICB9Ci19Ci0KLS8qIHBhcnNlIGEgc3RyaW5nIC0gdHJpZXMgdG8gZG8gbGFyZ2UgY2h1bmtzIGF0IGEgdGltZSAqLwotc3RhdGljIGludCBwYXJzZV9zdHJpbmcoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgc2l6ZV90IHJlbWFpbmluZyA9IHAtPnN0cmxlbiAtIHAtPnN0cmdvdDsKLSAgc2l6ZV90IGdpdmVuID0gKHNpemVfdCkoZW5kIC0gY3VyKTsKLSAgaWYgKHJlbWFpbmluZyA8PSBnaXZlbikgewotICAgIHJldHVybiBhZGRfc3RyX2J5dGVzKHAsIGN1ciwgY3VyICsgcmVtYWluaW5nKSAmJiBmaW5pc2hfc3RyKHApICYmCi0gICAgICAgICAgIHBhcnNlX25leHQocCwgY3VyICsgcmVtYWluaW5nLCBlbmQpOwotICB9IGVsc2UgewotICAgIGlmICghYWRkX3N0cl9ieXRlcyhwLCBjdXIsIGN1ciArIGdpdmVuKSkgcmV0dXJuIDA7Ci0gICAgR1BSX0FTU0VSVChnaXZlbiA8PSBVSU5UMzJfTUFYIC0gcC0+c3RyZ290KTsKLSAgICBwLT5zdHJnb3QgKz0gKHVpbnQzMl90KWdpdmVuOwotICAgIHAtPnN0YXRlID0gcGFyc2Vfc3RyaW5nOwotICAgIHJldHVybiAxOwotICB9Ci19Ci0KLS8qIGJlZ2luIHBhcnNpbmcgYSBzdHJpbmcgLSBwZXJmb3JtcyBzZXR1cCwgY2FsbHMgcGFyc2Vfc3RyaW5nICovCi1zdGF0aWMgaW50IGJlZ2luX3BhcnNlX3N0cmluZyhncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmVuZCwgdWludDhfdCBiaW5hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nICpzdHIpIHsKLSAgcC0+c3RyZ290ID0gMDsKLSAgc3RyLT5sZW5ndGggPSAwOwotICBwLT5wYXJzaW5nLnN0ciA9IHN0cjsKLSAgcC0+aHVmZl9zdGF0ZSA9IDA7Ci0gIHAtPmJpbmFyeSA9IGJpbmFyeTsKLSAgcmV0dXJuIHBhcnNlX3N0cmluZyhwLCBjdXIsIGVuZCk7Ci19Ci0KLS8qIHBhcnNlIHRoZSBrZXkgc3RyaW5nICovCi1zdGF0aWMgaW50IHBhcnNlX2tleV9zdHJpbmcoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHJldHVybiBiZWdpbl9wYXJzZV9zdHJpbmcocCwgY3VyLCBlbmQsIE5PVF9CSU5BUlksICZwLT5rZXkpOwotfQotCi0vKiBjaGVjayBpZiBhIGtleSByZXByZXNlbnRzIGEgYmluYXJ5IGhlYWRlciBvciBub3QgKi8KLXR5cGVkZWYgZW51bSB7IEJJTkFSWV9IRUFERVIsIFBMQUlOVEVYVF9IRUFERVIsIEVSUk9SX0hFQURFUiB9IGlzX2JpbmFyeV9oZWFkZXI7Ci0KLXN0YXRpYyBpc19iaW5hcnlfaGVhZGVyIGlzX2JpbmFyeV9saXRlcmFsX2hlYWRlcihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApIHsKLSAgcmV0dXJuIGdycGNfaXNfYmluYXJ5X2hlYWRlcihwLT5rZXkuc3RyLCBwLT5rZXkubGVuZ3RoKSA/IEJJTkFSWV9IRUFERVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBMQUlOVEVYVF9IRUFERVI7Ci19Ci0KLXN0YXRpYyBpc19iaW5hcnlfaGVhZGVyIGlzX2JpbmFyeV9pbmRleGVkX2hlYWRlcihncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApIHsKLSAgZ3JwY19tZGVsZW0gKmVsZW0gPSBncnBjX2NodHRwMl9ocHRibF9sb29rdXAoJnAtPnRhYmxlLCBwLT5pbmRleCk7Ci0gIGlmICghZWxlbSkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiSW52YWxpZCBIUEFDSyBpbmRleCByZWNlaXZlZDogJWQiLCBwLT5pbmRleCk7Ci0gICAgcmV0dXJuIEVSUk9SX0hFQURFUjsKLSAgfQotICByZXR1cm4gZ3JwY19pc19iaW5hcnlfaGVhZGVyKAotICAgICAgICAgICAgIChjb25zdCBjaGFyICopR1BSX1NMSUNFX1NUQVJUX1BUUihlbGVtLT5rZXktPnNsaWNlKSwKLSAgICAgICAgICAgICBHUFJfU0xJQ0VfTEVOR1RIKGVsZW0tPmtleS0+c2xpY2UpKQotICAgICAgICAgICAgID8gQklOQVJZX0hFQURFUgotICAgICAgICAgICAgIDogUExBSU5URVhUX0hFQURFUjsKLX0KLQotLyogcGFyc2UgdGhlIHZhbHVlIHN0cmluZyAqLwotc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmcoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLCBjb25zdCB1aW50OF90ICpjdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQsIGlzX2JpbmFyeV9oZWFkZXIgdHlwZSkgewotICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEJJTkFSWV9IRUFERVI6Ci0gICAgICByZXR1cm4gYmVnaW5fcGFyc2Vfc3RyaW5nKHAsIGN1ciwgZW5kLCBCNjRfQllURTAsICZwLT52YWx1ZSk7Ci0gICAgY2FzZSBQTEFJTlRFWFRfSEVBREVSOgotICAgICAgcmV0dXJuIGJlZ2luX3BhcnNlX3N0cmluZyhwLCBjdXIsIGVuZCwgTk9UX0JJTkFSWSwgJnAtPnZhbHVlKTsKLSAgICBjYXNlIEVSUk9SX0hFQURFUjoKLSAgICAgIHJldHVybiAwOwotICB9Ci0gIC8qIEFkZCBjb2RlIHRvIHByZXZlbnQgcmV0dXJuIHdpdGhvdXQgdmFsdWUgZXJyb3IgKi8KLSAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuIDApOwotfQotCi1zdGF0aWMgaW50IHBhcnNlX3ZhbHVlX3N0cmluZ193aXRoX2luZGV4ZWRfa2V5KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqY3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmQpIHsKLSAgcmV0dXJuIHBhcnNlX3ZhbHVlX3N0cmluZyhwLCBjdXIsIGVuZCwgaXNfYmluYXJ5X2luZGV4ZWRfaGVhZGVyKHApKTsKLX0KLQotc3RhdGljIGludCBwYXJzZV92YWx1ZV9zdHJpbmdfd2l0aF9saXRlcmFsX2tleShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmN1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKSB7Ci0gIHJldHVybiBwYXJzZV92YWx1ZV9zdHJpbmcocCwgY3VyLCBlbmQsIGlzX2JpbmFyeV9saXRlcmFsX2hlYWRlcihwKSk7Ci19Ci0KLS8qIFBVQkxJQyBJTlRFUkZBQ0UgKi8KLQotc3RhdGljIHZvaWQgb25faGVhZGVyX25vdF9zZXQodm9pZCAqdXNlcl9kYXRhLCBncnBjX21kZWxlbSAqbWQpIHsKLSAgR1BSX1VOUkVBQ0hBQkxFX0NPREUocmV0dXJuICk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2luaXQoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7Ci0gIHAtPm9uX2hlYWRlciA9IG9uX2hlYWRlcl9ub3Rfc2V0OwotICBwLT5vbl9oZWFkZXJfdXNlcl9kYXRhID0gTlVMTDsKLSAgcC0+c3RhdGUgPSBwYXJzZV9iZWdpbjsKLSAgcC0+a2V5LnN0ciA9IE5VTEw7Ci0gIHAtPmtleS5jYXBhY2l0eSA9IDA7Ci0gIHAtPmtleS5sZW5ndGggPSAwOwotICBwLT52YWx1ZS5zdHIgPSBOVUxMOwotICBwLT52YWx1ZS5jYXBhY2l0eSA9IDA7Ci0gIHAtPnZhbHVlLmxlbmd0aCA9IDA7Ci0gIHAtPmR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQgPSAyOwotICBncnBjX2NodHRwMl9ocHRibF9pbml0KCZwLT50YWJsZSk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3NldF9oYXNfcHJpb3JpdHkoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7Ci0gIHAtPmFmdGVyX3ByaW9yaXRpemF0aW9uID0gcC0+c3RhdGU7Ci0gIHAtPnN0YXRlID0gcGFyc2Vfc3RyZWFtX2RlcDA7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2Rlc3Ryb3koZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwKSB7Ci0gIGdycGNfY2h0dHAyX2hwdGJsX2Rlc3Ryb3koJnAtPnRhYmxlKTsKLSAgZ3ByX2ZyZWUocC0+a2V5LnN0cik7Ci0gIGdwcl9mcmVlKHAtPnZhbHVlLnN0cik7Ci19Ci0KLWludCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UoZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiZWcsIGNvbnN0IHVpbnQ4X3QgKmVuZCkgewotICAvKiBUT0RPKGN0aWxsZXIpOiBsaW1pdCB0aGUgZGlzdGFuY2Ugb2YgZW5kIGZyb20gYmVnLCBhbmQgcGVyZm9ybSBtdWx0aXBsZQotICAgICBzdGVwcyBpbiB0aGUgZXZlbnQgb2YgYSBsYXJnZSBjaHVuayBvZiBkYXRhIHRvIGxpbWl0Ci0gICAgIHN0YWNrIHNwYWNlIHVzYWdlIHdoZW4gbm8gdGFpbCBjYWxsIG9wdGltaXphdGlvbiBpcwotICAgICBhdmFpbGFibGUgKi8KLSAgcmV0dXJuIHAtPnN0YXRlKHAsIGJlZywgZW5kKTsKLX0KLQotZ3JwY19jaHR0cDJfcGFyc2VfZXJyb3IgZ3JwY19jaHR0cDJfaGVhZGVyX3BhcnNlcl9wYXJzZSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqaHBhY2tfcGFyc2VyLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyICpwYXJzZXIgPSBocGFja19wYXJzZXI7Ci0gIEdQUl9USU1FUl9CRUdJTigiZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlIiwgMCk7Ci0gIGlmICghZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlKHBhcnNlciwgR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKSkpIHsKLSAgICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UiLCAwKTsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKLSAgfQotICBpZiAoaXNfbGFzdCkgewotICAgIGlmIChwYXJzZXItPmlzX2JvdW5kYXJ5ICYmIHBhcnNlci0+c3RhdGUgIT0gcGFyc2VfYmVnaW4pIHsKLSAgICAgIGdwcl9sb2coR1BSX0VSUk9SLAotICAgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBmcmFtZSBub3QgYWxpZ25lZCB3aXRoIGEgaHBhY2sgcmVjb3JkIGJvdW5kYXJ5Iik7Ci0gICAgICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UiLCAwKTsKLSAgICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOwotICAgIH0KLSAgICAvKiBuZWVkIHRvIGNoZWNrIGZvciBudWxsIHN0cmVhbTogdGhpcyBjYW4gb2NjdXIgaWYgd2UgcmVjZWl2ZSBhbiBpbnZhbGlkCi0gICAgICAgc3RyZWFtIGlkIG9uIGEgaGVhZGVyICovCi0gICAgaWYgKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwpIHsKLSAgICAgIGlmIChwYXJzZXItPmlzX2JvdW5kYXJ5KSB7Ci0gICAgICAgIHN0cmVhbV9wYXJzaW5nCi0gICAgICAgICAgICAtPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVtzdHJlYW1fcGFyc2luZy0+aGVhZGVyX2ZyYW1lc19yZWNlaXZlZF0gPSAxOwotICAgICAgICBzdHJlYW1fcGFyc2luZy0+aGVhZGVyX2ZyYW1lc19yZWNlaXZlZCsrOwotICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKLSAgICAgIH0KLSAgICAgIGlmIChwYXJzZXItPmlzX2VvZikgewotICAgICAgICBzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfY2xvc2UgPSAxOwotICAgICAgfQotICAgIH0KLSAgICBwYXJzZXItPm9uX2hlYWRlciA9IG9uX2hlYWRlcl9ub3Rfc2V0OwotICAgIHBhcnNlci0+b25faGVhZGVyX3VzZXJfZGF0YSA9IE5VTEw7Ci0gICAgcGFyc2VyLT5pc19ib3VuZGFyeSA9IDB4ZGU7Ci0gICAgcGFyc2VyLT5pc19lb2YgPSAweGRlOwotICAgIHBhcnNlci0+ZHluYW1pY190YWJsZV91cGRhdGVfYWxsb3dlZCA9IDI7Ci0gIH0KLSAgR1BSX1RJTUVSX0VORCgiZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlIiwgMCk7Ci0gIHJldHVybiBHUlBDX0NIVFRQMl9QQVJTRV9PSzsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzRmZDUuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2lmbmRlZiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfSFBBQ0tfUEFSU0VSX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hQQUNLX1BBUlNFUl9ICi0KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0jaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcjsKLQotdHlwZWRlZiBpbnQgKCpncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RhdGUpKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kKTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyICpzdHI7Ci0gIHVpbnQzMl90IGxlbmd0aDsKLSAgdWludDMyX3QgY2FwYWNpdHk7Ci19IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmc7Ci0KLXN0cnVjdCBncnBjX2NodHRwMl9ocGFja19wYXJzZXIgewotICAvKiB1c2VyIHNwZWNpZmllZCBjYWxsYmFjayBmb3IgZWFjaCBoZWFkZXIgb3V0cHV0ICovCi0gIHZvaWQgKCpvbl9oZWFkZXIpKHZvaWQgKnVzZXJfZGF0YSwgZ3JwY19tZGVsZW0gKm1kKTsKLSAgdm9pZCAqb25faGVhZGVyX3VzZXJfZGF0YTsKLQotICAvKiBjdXJyZW50IHBhcnNlIHN0YXRlIC0gb3IgYSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0YXRlIHN0YXRlOwotICAvKiBmdXR1cmUgc3RhdGVzIGRlcGVuZGVudCBvbiB0aGUgb3BlbmluZyBvcCBjb2RlICovCi0gIGNvbnN0IGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSAqbmV4dF9zdGF0ZTsKLSAgLyogd2hhdCB0byBkbyBhZnRlciBza2lwcGluZyBwcmlvcml0aXphdGlvbiBkYXRhICovCi0gIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdGF0ZSBhZnRlcl9wcmlvcml0aXphdGlvbjsKLSAgLyogdGhlIHZhbHVlIHdlJ3JlIGN1cnJlbnRseSBwYXJzaW5nICovCi0gIHVuaW9uIHsKLSAgICB1aW50MzJfdCAqdmFsdWU7Ci0gICAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3N0cmluZyAqc3RyOwotICB9IHBhcnNpbmc7Ci0gIC8qIHN0cmluZyBwYXJhbWV0ZXJzIGZvciBlYWNoIGNodW5rICovCi0gIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zdHJpbmcga2V5OwotICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc3RyaW5nIHZhbHVlOwotICAvKiBwYXJzZWQgaW5kZXggKi8KLSAgdWludDMyX3QgaW5kZXg7Ci0gIC8qIGxlbmd0aCBvZiBzb3VyY2UgYnl0ZXMgZm9yIHRoZSBjdXJyZW50bHkgcGFyc2luZyBzdHJpbmcgKi8KLSAgdWludDMyX3Qgc3RybGVuOwotICAvKiBudW1iZXIgb2Ygc291cmNlIGJ5dGVzIHJlYWQgZm9yIHRoZSBjdXJyZW50bHkgcGFyc2luZyBzdHJpbmcgKi8KLSAgdWludDMyX3Qgc3RyZ290OwotICAvKiBodWZmbWFuIGRlY29kaW5nIHN0YXRlICovCi0gIGludDE2X3QgaHVmZl9zdGF0ZTsKLSAgLyogaXMgdGhlIHN0cmluZyBiZWluZyBkZWNvZGVkIGJpbmFyeT8gKi8KLSAgdWludDhfdCBiaW5hcnk7Ci0gIC8qIGlzIHRoZSBjdXJyZW50IHN0cmluZyBodWZmbWFuIGVuY29kZWQ/ICovCi0gIHVpbnQ4X3QgaHVmZjsKLSAgLyogaXMgYSBkeW5hbWljIHRhYmxlIHVwZGF0ZSBhbGxvd2VkPyAqLwotICB1aW50OF90IGR5bmFtaWNfdGFibGVfdXBkYXRlX2FsbG93ZWQ7Ci0gIC8qIHNldCBieSBoaWdoZXIgbGF5ZXJzLCB1c2VkIGJ5IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2UgdG8gc2lnbmFsCi0gICAgIGl0IHNob3VsZCBhcHBlbmQgYSBtZXRhZGF0YSBib3VuZGFyeSBhdCB0aGUgZW5kIG9mIGZyYW1lICovCi0gIHVpbnQ4X3QgaXNfYm91bmRhcnk7Ci0gIHVpbnQ4X3QgaXNfZW9mOwotICB1aW50MzJfdCBiYXNlNjRfYnVmZmVyOwotCi0gIC8qIGhwYWNrIHRhYmxlICovCi0gIGdycGNfY2h0dHAyX2hwdGJsIHRhYmxlOwotfTsKLQotdm9pZCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfaW5pdChncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApOwotdm9pZCBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfZGVzdHJveShncnBjX2NodHRwMl9ocGFja19wYXJzZXIgKnApOwotCi12b2lkIGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlcl9zZXRfaGFzX3ByaW9yaXR5KGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCk7Ci0KLS8qIHJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yICovCi1pbnQgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlKGdycGNfY2h0dHAyX2hwYWNrX3BhcnNlciAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYmVnLCBjb25zdCB1aW50OF90ICplbmQpOwotCi0vKiB3cmFwcyBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfcGFyc2UgdG8gcHJvdmlkZSBhIGZyYW1lIGxldmVsIHBhcnNlciBmb3IKLSAgIHRoZSB0cmFuc3BvcnQgKi8KLWdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2UoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmhwYWNrX3BhcnNlciwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCBncHJfc2xpY2Ugc2xpY2UsIGludCBpc19sYXN0KTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IUEFDS19QQVJTRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MmJjMjYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYworKysgL2Rldi9udWxsCkBAIC0xLDM2MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIKLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvbXVybXVyX2hhc2guaCIKLQotc3RhdGljIHN0cnVjdCB7Ci0gIGNvbnN0IGNoYXIgKmtleTsKLSAgY29uc3QgY2hhciAqdmFsdWU7Ci19IHN0YXRpY190YWJsZVtdID0gewotICAgIC8qIDA6ICovCi0gICAge05VTEwsIE5VTEx9LAotICAgIC8qIDE6ICovCi0gICAgeyI6YXV0aG9yaXR5IiwgIiJ9LAotICAgIC8qIDI6ICovCi0gICAgeyI6bWV0aG9kIiwgIkdFVCJ9LAotICAgIC8qIDM6ICovCi0gICAgeyI6bWV0aG9kIiwgIlBPU1QifSwKLSAgICAvKiA0OiAqLwotICAgIHsiOnBhdGgiLCAiLyJ9LAotICAgIC8qIDU6ICovCi0gICAgeyI6cGF0aCIsICIvaW5kZXguaHRtbCJ9LAotICAgIC8qIDY6ICovCi0gICAgeyI6c2NoZW1lIiwgImh0dHAifSwKLSAgICAvKiA3OiAqLwotICAgIHsiOnNjaGVtZSIsICJodHRwcyJ9LAotICAgIC8qIDg6ICovCi0gICAgeyI6c3RhdHVzIiwgIjIwMCJ9LAotICAgIC8qIDk6ICovCi0gICAgeyI6c3RhdHVzIiwgIjIwNCJ9LAotICAgIC8qIDEwOiAqLwotICAgIHsiOnN0YXR1cyIsICIyMDYifSwKLSAgICAvKiAxMTogKi8KLSAgICB7IjpzdGF0dXMiLCAiMzA0In0sCi0gICAgLyogMTI6ICovCi0gICAgeyI6c3RhdHVzIiwgIjQwMCJ9LAotICAgIC8qIDEzOiAqLwotICAgIHsiOnN0YXR1cyIsICI0MDQifSwKLSAgICAvKiAxNDogKi8KLSAgICB7IjpzdGF0dXMiLCAiNTAwIn0sCi0gICAgLyogMTU6ICovCi0gICAgeyJhY2NlcHQtY2hhcnNldCIsICIifSwKLSAgICAvKiAxNjogKi8KLSAgICB7ImFjY2VwdC1lbmNvZGluZyIsICJnemlwLCBkZWZsYXRlIn0sCi0gICAgLyogMTc6ICovCi0gICAgeyJhY2NlcHQtbGFuZ3VhZ2UiLCAiIn0sCi0gICAgLyogMTg6ICovCi0gICAgeyJhY2NlcHQtcmFuZ2VzIiwgIiJ9LAotICAgIC8qIDE5OiAqLwotICAgIHsiYWNjZXB0IiwgIiJ9LAotICAgIC8qIDIwOiAqLwotICAgIHsiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgIiJ9LAotICAgIC8qIDIxOiAqLwotICAgIHsiYWdlIiwgIiJ9LAotICAgIC8qIDIyOiAqLwotICAgIHsiYWxsb3ciLCAiIn0sCi0gICAgLyogMjM6ICovCi0gICAgeyJhdXRob3JpemF0aW9uIiwgIiJ9LAotICAgIC8qIDI0OiAqLwotICAgIHsiY2FjaGUtY29udHJvbCIsICIifSwKLSAgICAvKiAyNTogKi8KLSAgICB7ImNvbnRlbnQtZGlzcG9zaXRpb24iLCAiIn0sCi0gICAgLyogMjY6ICovCi0gICAgeyJjb250ZW50LWVuY29kaW5nIiwgIiJ9LAotICAgIC8qIDI3OiAqLwotICAgIHsiY29udGVudC1sYW5ndWFnZSIsICIifSwKLSAgICAvKiAyODogKi8KLSAgICB7ImNvbnRlbnQtbGVuZ3RoIiwgIiJ9LAotICAgIC8qIDI5OiAqLwotICAgIHsiY29udGVudC1sb2NhdGlvbiIsICIifSwKLSAgICAvKiAzMDogKi8KLSAgICB7ImNvbnRlbnQtcmFuZ2UiLCAiIn0sCi0gICAgLyogMzE6ICovCi0gICAgeyJjb250ZW50LXR5cGUiLCAiIn0sCi0gICAgLyogMzI6ICovCi0gICAgeyJjb29raWUiLCAiIn0sCi0gICAgLyogMzM6ICovCi0gICAgeyJkYXRlIiwgIiJ9LAotICAgIC8qIDM0OiAqLwotICAgIHsiZXRhZyIsICIifSwKLSAgICAvKiAzNTogKi8KLSAgICB7ImV4cGVjdCIsICIifSwKLSAgICAvKiAzNjogKi8KLSAgICB7ImV4cGlyZXMiLCAiIn0sCi0gICAgLyogMzc6ICovCi0gICAgeyJmcm9tIiwgIiJ9LAotICAgIC8qIDM4OiAqLwotICAgIHsiaG9zdCIsICIifSwKLSAgICAvKiAzOTogKi8KLSAgICB7ImlmLW1hdGNoIiwgIiJ9LAotICAgIC8qIDQwOiAqLwotICAgIHsiaWYtbW9kaWZpZWQtc2luY2UiLCAiIn0sCi0gICAgLyogNDE6ICovCi0gICAgeyJpZi1ub25lLW1hdGNoIiwgIiJ9LAotICAgIC8qIDQyOiAqLwotICAgIHsiaWYtcmFuZ2UiLCAiIn0sCi0gICAgLyogNDM6ICovCi0gICAgeyJpZi11bm1vZGlmaWVkLXNpbmNlIiwgIiJ9LAotICAgIC8qIDQ0OiAqLwotICAgIHsibGFzdC1tb2RpZmllZCIsICIifSwKLSAgICAvKiA0NTogKi8KLSAgICB7ImxpbmsiLCAiIn0sCi0gICAgLyogNDY6ICovCi0gICAgeyJsb2NhdGlvbiIsICIifSwKLSAgICAvKiA0NzogKi8KLSAgICB7Im1heC1mb3J3YXJkcyIsICIifSwKLSAgICAvKiA0ODogKi8KLSAgICB7InByb3h5LWF1dGhlbnRpY2F0ZSIsICIifSwKLSAgICAvKiA0OTogKi8KLSAgICB7InByb3h5LWF1dGhvcml6YXRpb24iLCAiIn0sCi0gICAgLyogNTA6ICovCi0gICAgeyJyYW5nZSIsICIifSwKLSAgICAvKiA1MTogKi8KLSAgICB7InJlZmVyZXIiLCAiIn0sCi0gICAgLyogNTI6ICovCi0gICAgeyJyZWZyZXNoIiwgIiJ9LAotICAgIC8qIDUzOiAqLwotICAgIHsicmV0cnktYWZ0ZXIiLCAiIn0sCi0gICAgLyogNTQ6ICovCi0gICAgeyJzZXJ2ZXIiLCAiIn0sCi0gICAgLyogNTU6ICovCi0gICAgeyJzZXQtY29va2llIiwgIiJ9LAotICAgIC8qIDU2OiAqLwotICAgIHsic3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSIsICIifSwKLSAgICAvKiA1NzogKi8KLSAgICB7InRyYW5zZmVyLWVuY29kaW5nIiwgIiJ9LAotICAgIC8qIDU4OiAqLwotICAgIHsidXNlci1hZ2VudCIsICIifSwKLSAgICAvKiA1OTogKi8KLSAgICB7InZhcnkiLCAiIn0sCi0gICAgLyogNjA6ICovCi0gICAgeyJ2aWEiLCAiIn0sCi0gICAgLyogNjE6ICovCi0gICAgeyJ3d3ctYXV0aGVudGljYXRlIiwgIiJ9LAotfTsKLQotc3RhdGljIHVpbnQzMl90IGVudHJpZXNfZm9yX2J5dGVzKHVpbnQzMl90IGJ5dGVzKSB7Ci0gIHJldHVybiAoYnl0ZXMgKyBHUlBDX0NIVFRQMl9IUEFDS19FTlRSWV9PVkVSSEVBRCAtIDEpIC8KLSAgICAgICAgIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2hwdGJsX2luaXQoZ3JwY19jaHR0cDJfaHB0YmwgKnRibCkgewotICBzaXplX3QgaTsKLQotICBtZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpOwotICB0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMgPSB0YmwtPm1heF9ieXRlcyA9Ci0gICAgICBHUlBDX0NIVFRQMl9JTklUSUFMX0hQQUNLX1RBQkxFX1NJWkU7Ci0gIHRibC0+bWF4X2VudHJpZXMgPSB0YmwtPmNhcF9lbnRyaWVzID0KLSAgICAgIGVudHJpZXNfZm9yX2J5dGVzKHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyk7Ci0gIHRibC0+ZW50cyA9IGdwcl9tYWxsb2Moc2l6ZW9mKCp0YmwtPmVudHMpICogdGJsLT5jYXBfZW50cmllcyk7Ci0gIG1lbXNldCh0YmwtPmVudHMsIDAsIHNpemVvZigqdGJsLT5lbnRzKSAqIHRibC0+Y2FwX2VudHJpZXMpOwotICBmb3IgKGkgPSAxOyBpIDw9IEdSUENfQ0hUVFAyX0xBU1RfU1RBVElDX0VOVFJZOyBpKyspIHsKLSAgICB0YmwtPnN0YXRpY19lbnRzW2kgLSAxXSA9Ci0gICAgICAgIGdycGNfbWRlbGVtX2Zyb21fc3RyaW5ncyhzdGF0aWNfdGFibGVbaV0ua2V5LCBzdGF0aWNfdGFibGVbaV0udmFsdWUpOwotICB9Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfZGVzdHJveShncnBjX2NodHRwMl9ocHRibCAqdGJsKSB7Ci0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgR1JQQ19DSFRUUDJfTEFTVF9TVEFUSUNfRU5UUlk7IGkrKykgewotICAgIEdSUENfTURFTEVNX1VOUkVGKHRibC0+c3RhdGljX2VudHNbaV0pOwotICB9Ci0gIGZvciAoaSA9IDA7IGkgPCB0YmwtPm51bV9lbnRzOyBpKyspIHsKLSAgICBHUlBDX01ERUxFTV9VTlJFRih0YmwtPmVudHNbKHRibC0+Zmlyc3RfZW50ICsgaSkgJSB0YmwtPmNhcF9lbnRyaWVzXSk7Ci0gIH0KLSAgZ3ByX2ZyZWUodGJsLT5lbnRzKTsKLX0KLQotZ3JwY19tZGVsZW0gKmdycGNfY2h0dHAyX2hwdGJsX2xvb2t1cChjb25zdCBncnBjX2NodHRwMl9ocHRibCAqdGJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0YmxfaW5kZXgpIHsKLSAgLyogU3RhdGljIHRhYmxlIGNvbWVzIGZpcnN0LCBqdXN0IHJldHVybiBhbiBlbnRyeSBmcm9tIGl0ICovCi0gIGlmICh0YmxfaW5kZXggPD0gR1JQQ19DSFRUUDJfTEFTVF9TVEFUSUNfRU5UUlkpIHsKLSAgICByZXR1cm4gdGJsLT5zdGF0aWNfZW50c1t0YmxfaW5kZXggLSAxXTsKLSAgfQotICAvKiBPdGhlcndpc2UsIGZpbmQgdGhlIHZhbHVlIGluIHRoZSBsaXN0IG9mIHZhbGlkIGVudHJpZXMgKi8KLSAgdGJsX2luZGV4IC09IChHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSArIDEpOwotICBpZiAodGJsX2luZGV4IDwgdGJsLT5udW1fZW50cykgewotICAgIHVpbnQzMl90IG9mZnNldCA9Ci0gICAgICAgICh0YmwtPm51bV9lbnRzIC0gMXUgLSB0YmxfaW5kZXggKyB0YmwtPmZpcnN0X2VudCkgJSB0YmwtPmNhcF9lbnRyaWVzOwotICAgIHJldHVybiB0YmwtPmVudHNbb2Zmc2V0XTsKLSAgfQotICAvKiBJbnZhbGlkIGVudHJ5OiByZXR1cm4gZXJyb3IgKi8KLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIEV2aWN0IG9uZSBlbGVtZW50IGZyb20gdGhlIHRhYmxlICovCi1zdGF0aWMgdm9pZCBldmljdDEoZ3JwY19jaHR0cDJfaHB0YmwgKnRibCkgewotICBncnBjX21kZWxlbSAqZmlyc3RfZW50ID0gdGJsLT5lbnRzW3RibC0+Zmlyc3RfZW50XTsKLSAgc2l6ZV90IGVsZW1fYnl0ZXMgPSBHUFJfU0xJQ0VfTEVOR1RIKGZpcnN0X2VudC0+a2V5LT5zbGljZSkgKwotICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgoZmlyc3RfZW50LT52YWx1ZS0+c2xpY2UpICsKLSAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9IUEFDS19FTlRSWV9PVkVSSEVBRDsKLSAgR1BSX0FTU0VSVChlbGVtX2J5dGVzIDw9IHRibC0+bWVtX3VzZWQpOwotICB0YmwtPm1lbV91c2VkIC09ICh1aW50MzJfdCllbGVtX2J5dGVzOwotICB0YmwtPmZpcnN0X2VudCA9ICgodGJsLT5maXJzdF9lbnQgKyAxKSAlIHRibC0+Y2FwX2VudHJpZXMpOwotICB0YmwtPm51bV9lbnRzLS07Ci0gIEdSUENfTURFTEVNX1VOUkVGKGZpcnN0X2VudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlYnVpbGRfZW50cyhncnBjX2NodHRwMl9ocHRibCAqdGJsLCB1aW50MzJfdCBuZXdfY2FwKSB7Ci0gIGdycGNfbWRlbGVtICoqZW50cyA9IGdwcl9tYWxsb2Moc2l6ZW9mKCplbnRzKSAqIG5ld19jYXApOwotICB1aW50MzJfdCBpOwotCi0gIGZvciAoaSA9IDA7IGkgPCB0YmwtPm51bV9lbnRzOyBpKyspIHsKLSAgICBlbnRzW2ldID0gdGJsLT5lbnRzWyh0YmwtPmZpcnN0X2VudCArIGkpICUgdGJsLT5jYXBfZW50cmllc107Ci0gIH0KLSAgZ3ByX2ZyZWUodGJsLT5lbnRzKTsKLSAgdGJsLT5lbnRzID0gZW50czsKLSAgdGJsLT5jYXBfZW50cmllcyA9IG5ld19jYXA7Ci0gIHRibC0+Zmlyc3RfZW50ID0gMDsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9ocHRibF9zZXRfbWF4X2J5dGVzKGdycGNfY2h0dHAyX2hwdGJsICp0YmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWF4X2J5dGVzKSB7Ci0gIGlmICh0YmwtPm1heF9ieXRlcyA9PSBtYXhfYnl0ZXMpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgZ3ByX2xvZyhHUFJfREVCVUcsICJVcGRhdGUgaHBhY2sgcGFyc2VyIG1heCBzaXplIHRvICVkIiwgbWF4X2J5dGVzKTsKLSAgd2hpbGUgKHRibC0+bWVtX3VzZWQgPiBtYXhfYnl0ZXMpIHsKLSAgICBldmljdDEodGJsKTsKLSAgfQotICB0YmwtPm1heF9ieXRlcyA9IG1heF9ieXRlczsKLX0KLQotaW50IGdycGNfY2h0dHAyX2hwdGJsX3NldF9jdXJyZW50X3RhYmxlX3NpemUoZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJ5dGVzKSB7Ci0gIGlmICh0YmwtPmN1cnJlbnRfdGFibGVfYnl0ZXMgPT0gYnl0ZXMpIHsKLSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoYnl0ZXMgPiB0YmwtPm1heF9ieXRlcykgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLAotICAgICAgICAgICAgIkF0dGVtcHQgdG8gbWFrZSBocGFjayB0YWJsZSAlZCBieXRlcyB3aGVuIG1heCBpcyAlZCBieXRlcyIsIGJ5dGVzLAotICAgICAgICAgICAgdGJsLT5tYXhfYnl0ZXMpOwotICAgIHJldHVybiAwOwotICB9Ci0gIGdwcl9sb2coR1BSX0RFQlVHLCAiVXBkYXRlIGhwYWNrIHBhcnNlciB0YWJsZSBzaXplIHRvICVkIiwgYnl0ZXMpOwotICB3aGlsZSAodGJsLT5tZW1fdXNlZCA+IGJ5dGVzKSB7Ci0gICAgZXZpY3QxKHRibCk7Ci0gIH0KLSAgdGJsLT5jdXJyZW50X3RhYmxlX2J5dGVzID0gYnl0ZXM7Ci0gIHRibC0+bWF4X2VudHJpZXMgPSBlbnRyaWVzX2Zvcl9ieXRlcyhieXRlcyk7Ci0gIGlmICh0YmwtPm1heF9lbnRyaWVzID4gdGJsLT5jYXBfZW50cmllcykgewotICAgIHJlYnVpbGRfZW50cyh0YmwsIEdQUl9NQVgodGJsLT5tYXhfZW50cmllcywgMiAqIHRibC0+Y2FwX2VudHJpZXMpKTsKLSAgfSBlbHNlIGlmICh0YmwtPm1heF9lbnRyaWVzIDwgdGJsLT5jYXBfZW50cmllcyAvIDMpIHsKLSAgICB1aW50MzJfdCBuZXdfY2FwID0gR1BSX01BWCh0YmwtPm1heF9lbnRyaWVzLCAxNnUpOwotICAgIGlmIChuZXdfY2FwICE9IHRibC0+Y2FwX2VudHJpZXMpIHsKLSAgICAgIHJlYnVpbGRfZW50cyh0YmwsIG5ld19jYXApOwotICAgIH0KLSAgfQotICByZXR1cm4gMTsKLX0KLQotaW50IGdycGNfY2h0dHAyX2hwdGJsX2FkZChncnBjX2NodHRwMl9ocHRibCAqdGJsLCBncnBjX21kZWxlbSAqbWQpIHsKLSAgLyogZGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIG9mIGJ1ZmZlciB0aGlzIGVudHJ5IHJlcHJlc2VudHMgKi8KLSAgc2l6ZV90IGVsZW1fYnl0ZXMgPSBHUFJfU0xJQ0VfTEVOR1RIKG1kLT5rZXktPnNsaWNlKSArCi0gICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChtZC0+dmFsdWUtPnNsaWNlKSArCi0gICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfSFBBQ0tfRU5UUllfT1ZFUkhFQUQ7Ci0KLSAgaWYgKHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyA+IHRibC0+bWF4X2J5dGVzKSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsCi0gICAgICAgICAgICAiSFBBQ0sgbWF4IHRhYmxlIHNpemUgcmVkdWNlZCB0byAlZCBidXQgbm90IHJlZmxlY3RlZCBieSBocGFjayAiCi0gICAgICAgICAgICAic3RyZWFtIChzdGlsbCBhdCAlZCkiLAotICAgICAgICAgICAgdGJsLT5tYXhfYnl0ZXMsIHRibC0+Y3VycmVudF90YWJsZV9ieXRlcyk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQotICAvKiB3ZSBjYW4ndCBhZGQgZWxlbWVudHMgYmlnZ2VyIHRoYW4gdGhlIG1heCB0YWJsZSBzaXplICovCi0gIGlmIChlbGVtX2J5dGVzID4gdGJsLT5jdXJyZW50X3RhYmxlX2J5dGVzKSB7Ci0gICAgLyogSFBBQ0sgZHJhZnQgMTAgc2VjdGlvbiA0LjQgc3RhdGVzOgotICAgICAqIElmIHRoZSBzaXplIG9mIHRoZSBuZXcgZW50cnkgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtCi0gICAgICogc2l6ZSwgdGhhdCBlbnRyeSBpcyBhZGRlZCB0byB0aGUgdGFibGUuICBJdCBpcyBub3QgYW4gZXJyb3IgdG8KLSAgICAgKiBhdHRlbXB0IHRvIGFkZCBhbiBlbnRyeSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXhpbXVtIHNpemU7IGFuCi0gICAgICogYXR0ZW1wdCB0byBhZGQgYW4gZW50cnkgbGFyZ2VyIHRoYW4gdGhlIGVudGlyZSB0YWJsZSBjYXVzZXMKLSAgICAgKiB0aGUgdGFibGUKLSAgICAgKiB0byBiZSBlbXB0aWVkIG9mIGFsbCBleGlzdGluZyBlbnRyaWVzLCBhbmQgcmVzdWx0cyBpbiBhbgotICAgICAqIGVtcHR5IHRhYmxlLgotICAgICAqLwotICAgIHdoaWxlICh0YmwtPm51bV9lbnRzKSB7Ci0gICAgICBldmljdDEodGJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLQotICAvKiBldmljdCBlbnRyaWVzIHRvIGVuc3VyZSBubyBvdmVyZmxvdyAqLwotICB3aGlsZSAoZWxlbV9ieXRlcyA+IChzaXplX3QpdGJsLT5jdXJyZW50X3RhYmxlX2J5dGVzIC0gdGJsLT5tZW1fdXNlZCkgewotICAgIGV2aWN0MSh0YmwpOwotICB9Ci0KLSAgLyogY29weSB0aGUgZmluYWxpemVkIGVudHJ5IGluICovCi0gIHRibC0+ZW50c1sodGJsLT5maXJzdF9lbnQgKyB0YmwtPm51bV9lbnRzKSAlIHRibC0+Y2FwX2VudHJpZXNdID0KLSAgICAgIEdSUENfTURFTEVNX1JFRihtZCk7Ci0KLSAgLyogdXBkYXRlIGFjY291bnRpbmcgdmFsdWVzICovCi0gIHRibC0+bnVtX2VudHMrKzsKLSAgdGJsLT5tZW1fdXNlZCArPSAodWludDMyX3QpZWxlbV9ieXRlczsKLSAgcmV0dXJuIDE7Ci19Ci0KLWdycGNfY2h0dHAyX2hwdGJsX2ZpbmRfcmVzdWx0IGdycGNfY2h0dHAyX2hwdGJsX2ZpbmQoCi0gICAgY29uc3QgZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwgZ3JwY19tZGVsZW0gKm1kKSB7Ci0gIGdycGNfY2h0dHAyX2hwdGJsX2ZpbmRfcmVzdWx0IHIgPSB7MCwgMH07Ci0gIHVpbnQzMl90IGk7Ci0KLSAgLyogU2VlIGlmIHRoZSBzdHJpbmcgaXMgaW4gdGhlIHN0YXRpYyB0YWJsZSAqLwotICBmb3IgKGkgPSAwOyBpIDwgR1JQQ19DSFRUUDJfTEFTVF9TVEFUSUNfRU5UUlk7IGkrKykgewotICAgIGdycGNfbWRlbGVtICplbnQgPSB0YmwtPnN0YXRpY19lbnRzW2ldOwotICAgIGlmIChtZC0+a2V5ICE9IGVudC0+a2V5KSBjb250aW51ZTsKLSAgICByLmluZGV4ID0gaSArIDF1OwotICAgIHIuaGFzX3ZhbHVlID0gbWQtPnZhbHVlID09IGVudC0+dmFsdWU7Ci0gICAgaWYgKHIuaGFzX3ZhbHVlKSByZXR1cm4gcjsKLSAgfQotCi0gIC8qIFNjYW4gdGhlIGR5bmFtaWMgdGFibGUgKi8KLSAgZm9yIChpID0gMDsgaSA8IHRibC0+bnVtX2VudHM7IGkrKykgewotICAgIHVpbnQzMl90IGlkeCA9Ci0gICAgICAgICh1aW50MzJfdCkodGJsLT5udW1fZW50cyAtIGkgKyBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSk7Ci0gICAgZ3JwY19tZGVsZW0gKmVudCA9IHRibC0+ZW50c1sodGJsLT5maXJzdF9lbnQgKyBpKSAlIHRibC0+Y2FwX2VudHJpZXNdOwotICAgIGlmIChtZC0+a2V5ICE9IGVudC0+a2V5KSBjb250aW51ZTsKLSAgICByLmluZGV4ID0gaWR4OwotICAgIHIuaGFzX3ZhbHVlID0gbWQtPnZhbHVlID09IGVudC0+dmFsdWU7Ci0gICAgaWYgKHIuaGFzX3ZhbHVlKSByZXR1cm4gcjsKLSAgfQotCi0gIHJldHVybiByOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYmMwMmQuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IUEFDS19UQUJMRV9ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IUEFDS19UQUJMRV9ICi0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuaCIKLQotLyogSFBBQ0sgaGVhZGVyIHRhYmxlICovCi0KLS8qIGxhc3QgaW5kZXggaW4gdGhlIHN0YXRpYyB0YWJsZSAqLwotI2RlZmluZSBHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWSA2MQotCi0vKiBJbml0aWFsIHRhYmxlIHNpemUgYXMgcGVyIHRoZSBzcGVjICovCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0lOSVRJQUxfSFBBQ0tfVEFCTEVfU0laRSA0MDk2Ci0vKiBNYXhpbXVtIHRhYmxlIHNpemUgdGhhdCB3ZSdsbCB1c2UgKi8KLSNkZWZpbmUgR1JQQ19DSFRUUDJfTUFYX0hQQUNLX1RBQkxFX1NJWkUgR1JQQ19DSFRUUDJfSU5JVElBTF9IUEFDS19UQUJMRV9TSVpFCi0vKiBQZXIgZW50cnkgb3ZlcmhlYWQgYnl0ZXMgYXMgcGVyIHRoZSBzcGVjICovCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0hQQUNLX0VOVFJZX09WRVJIRUFEIDMyCi0jaWYgMAotLyogTWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB3ZSBjb3VsZCBwb3NzaWJseSBmaXQgaW4gdGhlIHRhYmxlLCBnaXZlbiBkZWZpbmVkCi0gICBvdmVyaGVhZHMgKi8KLSNkZWZpbmUgR1JQQ19DSFRUUDJfTUFYX1RBQkxFX0NPVU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoR1JQQ19DSFRUUDJfTUFYX0hQQUNLX1RBQkxFX1NJWkUgKyBHUlBDX0NIVFRQMl9IUEFDS19FTlRSWV9PVkVSSEVBRCAtIDEpIC8gXAotICAgR1JQQ19DSFRUUDJfSFBBQ0tfRU5UUllfT1ZFUkhFQUQpCi0jZW5kaWYKLQotLyogaHBhY2sgZGVjb2RlciB0YWJsZSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAvKiB0aGUgZmlyc3QgdXNlZCBlbnRyeSBpbiBlbnRzICovCi0gIHVpbnQzMl90IGZpcnN0X2VudDsKLSAgLyogaG93IG1hbnkgZW50cmllcyBhcmUgaW4gdGhlIHRhYmxlICovCi0gIHVpbnQzMl90IG51bV9lbnRzOwotICAvKiB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoZSB0YWJsZSwgYWNjb3JkaW5nIHRvIHRoZSBocGFjayBhbGdvcml0aG0gKi8KLSAgdWludDMyX3QgbWVtX3VzZWQ7Ci0gIC8qIHRoZSBtYXggbWVtb3J5IGFsbG93ZWQgdG8gYmUgdXNlZCBieSB0aGUgdGFibGUsIGFjY29yZGluZyB0byB0aGUgaHBhY2sKLSAgICAgYWxnb3JpdGhtICovCi0gIHVpbnQzMl90IG1heF9ieXRlczsKLSAgLyogdGhlIGN1cnJlbnRseSBhZ3JlZWQgc2l6ZSBvZiB0aGUgdGFibGUsIGFjY29yZGluZyB0byB0aGUgaHBhY2sgYWxnb3JpdGhtICovCi0gIHVpbnQzMl90IGN1cnJlbnRfdGFibGVfYnl0ZXM7Ci0gIC8qIE1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgd2UgY291bGQgcG9zc2libHkgZml0IGluIHRoZSB0YWJsZSwgZ2l2ZW4gZGVmaW5lZAotICAgICBvdmVyaGVhZHMgKi8KLSAgdWludDMyX3QgbWF4X2VudHJpZXM7Ci0gIC8qIE51bWJlciBvZiBlbnRyaWVzIGFsbG9jYXRlZCBpbiBlbnRzICovCi0gIHVpbnQzMl90IGNhcF9lbnRyaWVzOwotICAvKiBhIGNpcmN1bGFyIGJ1ZmZlciBvZiBoZWFkZXJzIC0gdGhpcyBpcyBzdG9yZWQgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvCi0gICAgIHdoYXQgaHBhY2sgc3BlY2lmaWVzLCBpbiBvcmRlciB0byBzaW1wbGlmeSB0YWJsZSBtYW5hZ2VtZW50IGEgbGl0dGxlLi4uCi0gICAgIG1lYW5pbmcgbG9va3VwcyBuZWVkIHRvIFNVQlRSQUNUIGZyb20gdGhlIGVuZCBwb3NpdGlvbiAqLwotICBncnBjX21kZWxlbSAqKmVudHM7Ci0gIGdycGNfbWRlbGVtICpzdGF0aWNfZW50c1tHUlBDX0NIVFRQMl9MQVNUX1NUQVRJQ19FTlRSWV07Ci19IGdycGNfY2h0dHAyX2hwdGJsOwotCi0vKiBpbml0aWFsaXplIGEgaHBhY2sgdGFibGUgKi8KLXZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfaW5pdChncnBjX2NodHRwMl9ocHRibCAqdGJsKTsKLXZvaWQgZ3JwY19jaHR0cDJfaHB0YmxfZGVzdHJveShncnBjX2NodHRwMl9ocHRibCAqdGJsKTsKLXZvaWQgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X21heF9ieXRlcyhncnBjX2NodHRwMl9ocHRibCAqdGJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1heF9ieXRlcyk7Ci1pbnQgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X2N1cnJlbnRfdGFibGVfc2l6ZShncnBjX2NodHRwMl9ocHRibCAqdGJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnl0ZXMpOwotCi0vKiBsb29rdXAgYSB0YWJsZSBlbnRyeSBiYXNlZCBvbiBpdHMgaHBhY2sgaW5kZXggKi8KLWdycGNfbWRlbGVtICpncnBjX2NodHRwMl9ocHRibF9sb29rdXAoY29uc3QgZ3JwY19jaHR0cDJfaHB0YmwgKnRibCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgpOwotLyogYWRkIGEgdGFibGUgZW50cnkgdG8gdGhlIGluZGV4ICovCi1pbnQgZ3JwY19jaHR0cDJfaHB0YmxfYWRkKGdycGNfY2h0dHAyX2hwdGJsICp0YmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWRlbGVtICptZCkgR1JQQ19NVVNUX1VTRV9SRVNVTFQ7Ci0vKiBGaW5kIGEga2V5L3ZhbHVlIHBhaXIgaW4gdGhlIHRhYmxlLi4uIHJldHVybnMgdGhlIGluZGV4IGluIHRoZSB0YWJsZSBvZiB0aGUKLSAgIG1vc3Qgc2ltaWxhciBlbnRyeSwgb3IgMCBpZiB0aGUgdmFsdWUgd2FzIG5vdCBmb3VuZCAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICB1aW50MzJfdCBpbmRleDsKLSAgaW50IGhhc192YWx1ZTsKLX0gZ3JwY19jaHR0cDJfaHB0YmxfZmluZF9yZXN1bHQ7Ci1ncnBjX2NodHRwMl9ocHRibF9maW5kX3Jlc3VsdCBncnBjX2NodHRwMl9ocHRibF9maW5kKAotICAgIGNvbnN0IGdycGNfY2h0dHAyX2hwdGJsICp0YmwsIGdycGNfbWRlbGVtICptZCk7Ci0KLSNlbmRpZiAvKiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfSFBBQ0tfVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHR0cDJfZXJyb3JzLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odHRwMl9lcnJvcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzOGY5ZC4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odHRwMl9lcnJvcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hUVFAyX0VSUk9SU19ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IVFRQMl9FUlJPUlNfSAotCi0vKiBlcnJvciBjb2RlcyBmb3IgUlNUX1NUUkVBTSBmcm9tIGh0dHAyIGRyYWZ0IDE0IHNlY3Rpb24gNyAqLwotdHlwZWRlZiBlbnVtIHsKLSAgR1JQQ19DSFRUUDJfTk9fRVJST1IgPSAweDAsCi0gIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SID0gMHgxLAotICBHUlBDX0NIVFRQMl9JTlRFUk5BTF9FUlJPUiA9IDB4MiwKLSAgR1JQQ19DSFRUUDJfRkxPV19DT05UUk9MX0VSUk9SID0gMHgzLAotICBHUlBDX0NIVFRQMl9TRVRUSU5HU19USU1FT1VUID0gMHg0LAotICBHUlBDX0NIVFRQMl9TVFJFQU1fQ0xPU0VEID0gMHg1LAotICBHUlBDX0NIVFRQMl9GUkFNRV9TSVpFX0VSUk9SID0gMHg2LAotICBHUlBDX0NIVFRQMl9SRUZVU0VEX1NUUkVBTSA9IDB4NywKLSAgR1JQQ19DSFRUUDJfQ0FOQ0VMID0gMHg4LAotICBHUlBDX0NIVFRQMl9DT01QUkVTU0lPTl9FUlJPUiA9IDB4OSwKLSAgR1JQQ19DSFRUUDJfQ09OTkVDVF9FUlJPUiA9IDB4YSwKLSAgR1JQQ19DSFRUUDJfRU5IQU5DRV9ZT1VSX0NBTE0gPSAweGIsCi0gIEdSUENfQ0hUVFAyX0lOQURFUVVBVEVfU0VDVVJJVFkgPSAweGMsCi0gIC8qIGZvcmNlIHVzZSBvZiBhIGRlZmF1bHQgY2xhdXNlICovCi0gIEdSUENfQ0hUVFAyX19FUlJPUl9ET19OT1RfVVNFID0gLTEKLX0gZ3JwY19jaHR0cDJfZXJyb3JfY29kZTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9IVFRQMl9FUlJPUlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NDk3ZTYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYworKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCIKLQotLyogQ29uc3RhbnRzIHB1bGxlZCBmcm9tIHRoZSBIUEFDSyBzcGVjLCBhbmQgY29udmVydGVkIHRvIEMgdXNpbmcgdGhlIHZpbQotICAgY29tbWFuZDoKLSAgIDolcy8uKiAgIFwoWzAtOWEtZl1cK1wpICBcWyAqXChbMC05XVwrXClcXS97MHhcMSwgXDJ9LC9nICovCi1jb25zdCBncnBjX2NodHRwMl9odWZmc3ltIGdycGNfY2h0dHAyX2h1ZmZzeW1zW0dSUENfQ0hUVFAyX05VTV9IVUZGU1lNU10gPSB7Ci0gICAgezB4MWZmOCwgMTN9LCAgICAgezB4N2ZmZmQ4LCAyM30sICAgezB4ZmZmZmZlMiwgMjh9LCAgezB4ZmZmZmZlMywgMjh9LAotICAgIHsweGZmZmZmZTQsIDI4fSwgIHsweGZmZmZmZTUsIDI4fSwgIHsweGZmZmZmZTYsIDI4fSwgIHsweGZmZmZmZTcsIDI4fSwKLSAgICB7MHhmZmZmZmU4LCAyOH0sICB7MHhmZmZmZWEsIDI0fSwgICB7MHgzZmZmZmZmYywgMzB9LCB7MHhmZmZmZmU5LCAyOH0sCi0gICAgezB4ZmZmZmZlYSwgMjh9LCAgezB4M2ZmZmZmZmQsIDMwfSwgezB4ZmZmZmZlYiwgMjh9LCAgezB4ZmZmZmZlYywgMjh9LAotICAgIHsweGZmZmZmZWQsIDI4fSwgIHsweGZmZmZmZWUsIDI4fSwgIHsweGZmZmZmZWYsIDI4fSwgIHsweGZmZmZmZjAsIDI4fSwKLSAgICB7MHhmZmZmZmYxLCAyOH0sICB7MHhmZmZmZmYyLCAyOH0sICB7MHgzZmZmZmZmZSwgMzB9LCB7MHhmZmZmZmYzLCAyOH0sCi0gICAgezB4ZmZmZmZmNCwgMjh9LCAgezB4ZmZmZmZmNSwgMjh9LCAgezB4ZmZmZmZmNiwgMjh9LCAgezB4ZmZmZmZmNywgMjh9LAotICAgIHsweGZmZmZmZjgsIDI4fSwgIHsweGZmZmZmZjksIDI4fSwgIHsweGZmZmZmZmEsIDI4fSwgIHsweGZmZmZmZmIsIDI4fSwKLSAgICB7MHgxNCwgNn0sICAgICAgICB7MHgzZjgsIDEwfSwgICAgICB7MHgzZjksIDEwfSwgICAgICB7MHhmZmEsIDEyfSwKLSAgICB7MHgxZmY5LCAxM30sICAgICB7MHgxNSwgNn0sICAgICAgICB7MHhmOCwgOH0sICAgICAgICB7MHg3ZmEsIDExfSwKLSAgICB7MHgzZmEsIDEwfSwgICAgICB7MHgzZmIsIDEwfSwgICAgICB7MHhmOSwgOH0sICAgICAgICB7MHg3ZmIsIDExfSwKLSAgICB7MHhmYSwgOH0sICAgICAgICB7MHgxNiwgNn0sICAgICAgICB7MHgxNywgNn0sICAgICAgICB7MHgxOCwgNn0sCi0gICAgezB4MCwgNX0sICAgICAgICAgezB4MSwgNX0sICAgICAgICAgezB4MiwgNX0sICAgICAgICAgezB4MTksIDZ9LAotICAgIHsweDFhLCA2fSwgICAgICAgIHsweDFiLCA2fSwgICAgICAgIHsweDFjLCA2fSwgICAgICAgIHsweDFkLCA2fSwKLSAgICB7MHgxZSwgNn0sICAgICAgICB7MHgxZiwgNn0sICAgICAgICB7MHg1YywgN30sICAgICAgICB7MHhmYiwgOH0sCi0gICAgezB4N2ZmYywgMTV9LCAgICAgezB4MjAsIDZ9LCAgICAgICAgezB4ZmZiLCAxMn0sICAgICAgezB4M2ZjLCAxMH0sCi0gICAgezB4MWZmYSwgMTN9LCAgICAgezB4MjEsIDZ9LCAgICAgICAgezB4NWQsIDd9LCAgICAgICAgezB4NWUsIDd9LAotICAgIHsweDVmLCA3fSwgICAgICAgIHsweDYwLCA3fSwgICAgICAgIHsweDYxLCA3fSwgICAgICAgIHsweDYyLCA3fSwKLSAgICB7MHg2MywgN30sICAgICAgICB7MHg2NCwgN30sICAgICAgICB7MHg2NSwgN30sICAgICAgICB7MHg2NiwgN30sCi0gICAgezB4NjcsIDd9LCAgICAgICAgezB4NjgsIDd9LCAgICAgICAgezB4NjksIDd9LCAgICAgICAgezB4NmEsIDd9LAotICAgIHsweDZiLCA3fSwgICAgICAgIHsweDZjLCA3fSwgICAgICAgIHsweDZkLCA3fSwgICAgICAgIHsweDZlLCA3fSwKLSAgICB7MHg2ZiwgN30sICAgICAgICB7MHg3MCwgN30sICAgICAgICB7MHg3MSwgN30sICAgICAgICB7MHg3MiwgN30sCi0gICAgezB4ZmMsIDh9LCAgICAgICAgezB4NzMsIDd9LCAgICAgICAgezB4ZmQsIDh9LCAgICAgICAgezB4MWZmYiwgMTN9LAotICAgIHsweDdmZmYwLCAxOX0sICAgIHsweDFmZmMsIDEzfSwgICAgIHsweDNmZmMsIDE0fSwgICAgIHsweDIyLCA2fSwKLSAgICB7MHg3ZmZkLCAxNX0sICAgICB7MHgzLCA1fSwgICAgICAgICB7MHgyMywgNn0sICAgICAgICB7MHg0LCA1fSwKLSAgICB7MHgyNCwgNn0sICAgICAgICB7MHg1LCA1fSwgICAgICAgICB7MHgyNSwgNn0sICAgICAgICB7MHgyNiwgNn0sCi0gICAgezB4MjcsIDZ9LCAgICAgICAgezB4NiwgNX0sICAgICAgICAgezB4NzQsIDd9LCAgICAgICAgezB4NzUsIDd9LAotICAgIHsweDI4LCA2fSwgICAgICAgIHsweDI5LCA2fSwgICAgICAgIHsweDJhLCA2fSwgICAgICAgIHsweDcsIDV9LAotICAgIHsweDJiLCA2fSwgICAgICAgIHsweDc2LCA3fSwgICAgICAgIHsweDJjLCA2fSwgICAgICAgIHsweDgsIDV9LAotICAgIHsweDksIDV9LCAgICAgICAgIHsweDJkLCA2fSwgICAgICAgIHsweDc3LCA3fSwgICAgICAgIHsweDc4LCA3fSwKLSAgICB7MHg3OSwgN30sICAgICAgICB7MHg3YSwgN30sICAgICAgICB7MHg3YiwgN30sICAgICAgICB7MHg3ZmZlLCAxNX0sCi0gICAgezB4N2ZjLCAxMX0sICAgICAgezB4M2ZmZCwgMTR9LCAgICAgezB4MWZmZCwgMTN9LCAgICAgezB4ZmZmZmZmYywgMjh9LAotICAgIHsweGZmZmU2LCAyMH0sICAgIHsweDNmZmZkMiwgMjJ9LCAgIHsweGZmZmU3LCAyMH0sICAgIHsweGZmZmU4LCAyMH0sCi0gICAgezB4M2ZmZmQzLCAyMn0sICAgezB4M2ZmZmQ0LCAyMn0sICAgezB4M2ZmZmQ1LCAyMn0sICAgezB4N2ZmZmQ5LCAyM30sCi0gICAgezB4M2ZmZmQ2LCAyMn0sICAgezB4N2ZmZmRhLCAyM30sICAgezB4N2ZmZmRiLCAyM30sICAgezB4N2ZmZmRjLCAyM30sCi0gICAgezB4N2ZmZmRkLCAyM30sICAgezB4N2ZmZmRlLCAyM30sICAgezB4ZmZmZmViLCAyNH0sICAgezB4N2ZmZmRmLCAyM30sCi0gICAgezB4ZmZmZmVjLCAyNH0sICAgezB4ZmZmZmVkLCAyNH0sICAgezB4M2ZmZmQ3LCAyMn0sICAgezB4N2ZmZmUwLCAyM30sCi0gICAgezB4ZmZmZmVlLCAyNH0sICAgezB4N2ZmZmUxLCAyM30sICAgezB4N2ZmZmUyLCAyM30sICAgezB4N2ZmZmUzLCAyM30sCi0gICAgezB4N2ZmZmU0LCAyM30sICAgezB4MWZmZmRjLCAyMX0sICAgezB4M2ZmZmQ4LCAyMn0sICAgezB4N2ZmZmU1LCAyM30sCi0gICAgezB4M2ZmZmQ5LCAyMn0sICAgezB4N2ZmZmU2LCAyM30sICAgezB4N2ZmZmU3LCAyM30sICAgezB4ZmZmZmVmLCAyNH0sCi0gICAgezB4M2ZmZmRhLCAyMn0sICAgezB4MWZmZmRkLCAyMX0sICAgezB4ZmZmZTksIDIwfSwgICAgezB4M2ZmZmRiLCAyMn0sCi0gICAgezB4M2ZmZmRjLCAyMn0sICAgezB4N2ZmZmU4LCAyM30sICAgezB4N2ZmZmU5LCAyM30sICAgezB4MWZmZmRlLCAyMX0sCi0gICAgezB4N2ZmZmVhLCAyM30sICAgezB4M2ZmZmRkLCAyMn0sICAgezB4M2ZmZmRlLCAyMn0sICAgezB4ZmZmZmYwLCAyNH0sCi0gICAgezB4MWZmZmRmLCAyMX0sICAgezB4M2ZmZmRmLCAyMn0sICAgezB4N2ZmZmViLCAyM30sICAgezB4N2ZmZmVjLCAyM30sCi0gICAgezB4MWZmZmUwLCAyMX0sICAgezB4MWZmZmUxLCAyMX0sICAgezB4M2ZmZmUwLCAyMn0sICAgezB4MWZmZmUyLCAyMX0sCi0gICAgezB4N2ZmZmVkLCAyM30sICAgezB4M2ZmZmUxLCAyMn0sICAgezB4N2ZmZmVlLCAyM30sICAgezB4N2ZmZmVmLCAyM30sCi0gICAgezB4ZmZmZWEsIDIwfSwgICAgezB4M2ZmZmUyLCAyMn0sICAgezB4M2ZmZmUzLCAyMn0sICAgezB4M2ZmZmU0LCAyMn0sCi0gICAgezB4N2ZmZmYwLCAyM30sICAgezB4M2ZmZmU1LCAyMn0sICAgezB4M2ZmZmU2LCAyMn0sICAgezB4N2ZmZmYxLCAyM30sCi0gICAgezB4M2ZmZmZlMCwgMjZ9LCAgezB4M2ZmZmZlMSwgMjZ9LCAgezB4ZmZmZWIsIDIwfSwgICAgezB4N2ZmZjEsIDE5fSwKLSAgICB7MHgzZmZmZTcsIDIyfSwgICB7MHg3ZmZmZjIsIDIzfSwgICB7MHgzZmZmZTgsIDIyfSwgICB7MHgxZmZmZmVjLCAyNX0sCi0gICAgezB4M2ZmZmZlMiwgMjZ9LCAgezB4M2ZmZmZlMywgMjZ9LCAgezB4M2ZmZmZlNCwgMjZ9LCAgezB4N2ZmZmZkZSwgMjd9LAotICAgIHsweDdmZmZmZGYsIDI3fSwgIHsweDNmZmZmZTUsIDI2fSwgIHsweGZmZmZmMSwgMjR9LCAgIHsweDFmZmZmZWQsIDI1fSwKLSAgICB7MHg3ZmZmMiwgMTl9LCAgICB7MHgxZmZmZTMsIDIxfSwgICB7MHgzZmZmZmU2LCAyNn0sICB7MHg3ZmZmZmUwLCAyN30sCi0gICAgezB4N2ZmZmZlMSwgMjd9LCAgezB4M2ZmZmZlNywgMjZ9LCAgezB4N2ZmZmZlMiwgMjd9LCAgezB4ZmZmZmYyLCAyNH0sCi0gICAgezB4MWZmZmU0LCAyMX0sICAgezB4MWZmZmU1LCAyMX0sICAgezB4M2ZmZmZlOCwgMjZ9LCAgezB4M2ZmZmZlOSwgMjZ9LAotICAgIHsweGZmZmZmZmQsIDI4fSwgIHsweDdmZmZmZTMsIDI3fSwgIHsweDdmZmZmZTQsIDI3fSwgIHsweDdmZmZmZTUsIDI3fSwKLSAgICB7MHhmZmZlYywgMjB9LCAgICB7MHhmZmZmZjMsIDI0fSwgICB7MHhmZmZlZCwgMjB9LCAgICB7MHgxZmZmZTYsIDIxfSwKLSAgICB7MHgzZmZmZTksIDIyfSwgICB7MHgxZmZmZTcsIDIxfSwgICB7MHgxZmZmZTgsIDIxfSwgICB7MHg3ZmZmZjMsIDIzfSwKLSAgICB7MHgzZmZmZWEsIDIyfSwgICB7MHgzZmZmZWIsIDIyfSwgICB7MHgxZmZmZmVlLCAyNX0sICB7MHgxZmZmZmVmLCAyNX0sCi0gICAgezB4ZmZmZmY0LCAyNH0sICAgezB4ZmZmZmY1LCAyNH0sICAgezB4M2ZmZmZlYSwgMjZ9LCAgezB4N2ZmZmY0LCAyM30sCi0gICAgezB4M2ZmZmZlYiwgMjZ9LCAgezB4N2ZmZmZlNiwgMjd9LCAgezB4M2ZmZmZlYywgMjZ9LCAgezB4M2ZmZmZlZCwgMjZ9LAotICAgIHsweDdmZmZmZTcsIDI3fSwgIHsweDdmZmZmZTgsIDI3fSwgIHsweDdmZmZmZTksIDI3fSwgIHsweDdmZmZmZWEsIDI3fSwKLSAgICB7MHg3ZmZmZmViLCAyN30sICB7MHhmZmZmZmZlLCAyOH0sICB7MHg3ZmZmZmVjLCAyN30sICB7MHg3ZmZmZmVkLCAyN30sCi0gICAgezB4N2ZmZmZlZSwgMjd9LCAgezB4N2ZmZmZlZiwgMjd9LCAgezB4N2ZmZmZmMCwgMjd9LCAgezB4M2ZmZmZlZSwgMjZ9LAotICAgIHsweDNmZmZmZmZmLCAzMH0sCi19OwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTc3YjkuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hVRkZTWU1TX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hVRkZTWU1TX0gKLQotLyogSFBBQ0sgc3RhdGljIGh1ZmZtYW4gdGFibGUgKi8KLQotI2RlZmluZSBHUlBDX0NIVFRQMl9OVU1fSFVGRlNZTVMgMjU3Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgdW5zaWduZWQgYml0czsKLSAgdW5zaWduZWQgbGVuZ3RoOwotfSBncnBjX2NodHRwMl9odWZmc3ltOwotCi1leHRlcm4gY29uc3QgZ3JwY19jaHR0cDJfaHVmZnN5bSBncnBjX2NodHRwMl9odWZmc3ltc1tHUlBDX0NIVFRQMl9OVU1fSFVGRlNZTVNdOwotCi0jZW5kaWYgLyogR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0hVRkZTWU1TX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWE4ZDM3Li4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLQotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfaW5pdCgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlcikgewotICBidWZmZXItPmRlYWRsaW5lID0gZ3ByX2luZl9mdXR1cmUoR1BSX0NMT0NLX1JFQUxUSU1FKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfZGVzdHJveSgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlcikgewotICBzaXplX3QgaTsKLSAgaWYgKCFidWZmZXItPnB1Ymxpc2hlZCkgewotICAgIGZvciAoaSA9IDA7IGkgPCBidWZmZXItPmNvdW50OyBpKyspIHsKLSAgICAgIEdSUENfTURFTEVNX1VOUkVGKGJ1ZmZlci0+ZWxlbXNbaV0ubWQpOwotICAgIH0KLSAgfQotICBncHJfZnJlZShidWZmZXItPmVsZW1zKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAotICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciAqYnVmZmVyLCBncnBjX21kZWxlbSAqZWxlbSkgewotICBHUFJfQVNTRVJUKCFidWZmZXItPnB1Ymxpc2hlZCk7Ci0gIGlmIChidWZmZXItPmNhcGFjaXR5ID09IGJ1ZmZlci0+Y291bnQpIHsKLSAgICBidWZmZXItPmNhcGFjaXR5ID0gR1BSX01BWCg4LCAyICogYnVmZmVyLT5jYXBhY2l0eSk7Ci0gICAgYnVmZmVyLT5lbGVtcyA9Ci0gICAgICAgIGdwcl9yZWFsbG9jKGJ1ZmZlci0+ZWxlbXMsIHNpemVvZigqYnVmZmVyLT5lbGVtcykgKiBidWZmZXItPmNhcGFjaXR5KTsKLSAgfQotICBidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQrK10ubWQgPSBlbGVtOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9zZXRfZGVhZGxpbmUoCi0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIsIGdwcl90aW1lc3BlYyBkZWFkbGluZSkgewotICBHUFJfQVNTRVJUKCFidWZmZXItPnB1Ymxpc2hlZCk7Ci0gIGJ1ZmZlci0+ZGVhZGxpbmUgPSBkZWFkbGluZTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfcHVibGlzaCgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlciwgZ3JwY19tZXRhZGF0YV9iYXRjaCAqYmF0Y2gpIHsKLSAgR1BSX0FTU0VSVCghYnVmZmVyLT5wdWJsaXNoZWQpOwotICBidWZmZXItPnB1Ymxpc2hlZCA9IDE7Ci0gIGlmIChidWZmZXItPmNvdW50ID4gMCkgewotICAgIHNpemVfdCBpOwotICAgIGZvciAoaSA9IDE7IGkgPCBidWZmZXItPmNvdW50OyBpKyspIHsKLSAgICAgIGJ1ZmZlci0+ZWxlbXNbaV0ucHJldiA9ICZidWZmZXItPmVsZW1zW2kgLSAxXTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlci0+Y291bnQgLSAxOyBpKyspIHsKLSAgICAgIGJ1ZmZlci0+ZWxlbXNbaV0ubmV4dCA9ICZidWZmZXItPmVsZW1zW2kgKyAxXTsKLSAgICB9Ci0gICAgYnVmZmVyLT5lbGVtc1swXS5wcmV2ID0gTlVMTDsKLSAgICBidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQgLSAxXS5uZXh0ID0gTlVMTDsKLSAgICBiYXRjaC0+bGlzdC5oZWFkID0gJmJ1ZmZlci0+ZWxlbXNbMF07Ci0gICAgYmF0Y2gtPmxpc3QudGFpbCA9ICZidWZmZXItPmVsZW1zW2J1ZmZlci0+Y291bnQgLSAxXTsKLSAgfSBlbHNlIHsKLSAgICBiYXRjaC0+bGlzdC5oZWFkID0gYmF0Y2gtPmxpc3QudGFpbCA9IE5VTEw7Ci0gIH0KLSAgYmF0Y2gtPmRlYWRsaW5lID0gYnVmZmVyLT5kZWFkbGluZTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmggYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZhMGFkLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9JTkNPTUlOR19NRVRBREFUQV9ICi0jZGVmaW5lIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9JTkNPTUlOR19NRVRBREFUQV9ICi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oIgotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGdycGNfbGlua2VkX21kZWxlbSAqZWxlbXM7Ci0gIHNpemVfdCBjb3VudDsKLSAgc2l6ZV90IGNhcGFjaXR5OwotICBncHJfdGltZXNwZWMgZGVhZGxpbmU7Ci0gIGludCBwdWJsaXNoZWQ7Ci19IGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcjsKLQotLyoqIGFzc3VtZXMgZXZlcnl0aGluZyBpbml0aWFsbHkgemVyb2VkICovCi12b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9pbml0KAotICAgIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciAqYnVmZmVyKTsKLXZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX2Rlc3Ryb3koCi0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIpOwotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfcHVibGlzaCgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlciwgZ3JwY19tZXRhZGF0YV9iYXRjaCAqYmF0Y2gpOwotCi12b2lkIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9hZGQoCi0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyICpidWZmZXIsIGdycGNfbWRlbGVtICplbGVtKTsKLXZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX3NldF9kZWFkbGluZSgKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIgKmJ1ZmZlciwgZ3ByX3RpbWVzcGVjIGRlYWRsaW5lKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9JTkNPTUlOR19NRVRBREFUQV9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ2ZTQwNC4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzgwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0lOVEVSTkFMX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX0lOVEVSTkFMX0gKLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oIgotCi10eXBlZGVmIHN0cnVjdCBncnBjX2NodHRwMl90cmFuc3BvcnQgZ3JwY19jaHR0cDJfdHJhbnNwb3J0OwotdHlwZWRlZiBzdHJ1Y3QgZ3JwY19jaHR0cDJfc3RyZWFtIGdycGNfY2h0dHAyX3N0cmVhbTsKLQotLyogc3RyZWFtcyBhcmUga2VwdCBpbiB2YXJpb3VzIGxpbmtlZCBsaXN0cyBkZXBlbmRpbmcgb24gd2hhdCB0aGluZ3MgbmVlZCB0bwotICAgaGFwcGVuIHRvIHRoZW0uLi4gdGhpcyBlbnVtIGxhYmVscyBlYWNoIGxpc3QgKi8KLXR5cGVkZWYgZW51bSB7Ci0gIEdSUENfQ0hUVFAyX0xJU1RfQUxMX1NUUkVBTVMsCi0gIEdSUENfQ0hUVFAyX0xJU1RfQ0hFQ0tfUkVBRF9PUFMsCi0gIEdSUENfQ0hUVFAyX0xJU1RfVU5BTk5PVU5DRURfSU5DT01JTkdfV0lORE9XX0FWQUlMQUJMRSwKLSAgR1JQQ19DSFRUUDJfTElTVF9XUklUQUJMRSwKLSAgR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HLAotICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRURU4sCi0gIEdSUENfQ0hUVFAyX0xJU1RfUEFSU0lOR19TRUVOLAotICBHUlBDX0NIVFRQMl9MSVNUX0NMT1NFRF9XQUlUSU5HX0ZPUl9QQVJTSU5HLAotICBHUlBDX0NIVFRQMl9MSVNUX0NMT1NFRF9XQUlUSU5HX0ZPUl9XUklUSU5HLAotICBHUlBDX0NIVFRQMl9MSVNUX1NUQUxMRURfQllfVFJBTlNQT1JULAotICAvKiBzdHJlYW1zIHdhaXRpbmcgZm9yIHRoZSBvdXRnb2luZyB3aW5kb3cgaW4gdGhlIHdyaXRpbmcgcGF0aCwgdGhleSB3aWxsIGJlCi0gICAqIG1lcmdlZCB0byB0aGUgc3RhbGxlZCBsaXN0IG9yIHdyaXRhYmxlIGxpc3QgdW5kZXIgdHJhbnNwb3J0IGxvY2suICovCi0gIEdSUENfQ0hUVFAyX0xJU1RfV1JJVElOR19TVEFMTEVEX0JZX1RSQU5TUE9SVCwKLSAgLyoqIHN0cmVhbXMgdGhhdCBhcmUgd2FpdGluZyB0byBzdGFydCBiZWNhdXNlIHRoZXJlIGFyZSB0b28gbWFueSBjb25jdXJyZW50Ci0gICAgICBzdHJlYW1zIG9uIHRoZSBjb25uZWN0aW9uICovCi0gIEdSUENfQ0hUVFAyX0xJU1RfV0FJVElOR19GT1JfQ09OQ1VSUkVOQ1ksCi0gIFNUUkVBTV9MSVNUX0NPVU5UIC8qIG11c3QgYmUgbGFzdCAqLwotfSBncnBjX2NodHRwMl9zdHJlYW1fbGlzdF9pZDsKLQotLyogZGVmcmFtZXIgc3RhdGUgZm9yIHRoZSBvdmVyYWxsIGh0dHAyIHN0cmVhbSBvZiBieXRlcyAqLwotdHlwZWRlZiBlbnVtIHsKLSAgLyogcHJlZml4OiBvbmUgZW50cnkgcGVyIGh0dHAyIGNvbm5lY3Rpb24gcHJlZml4IGJ5dGUgKi8KLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8wID0gMCwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xLAotICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIsCi0gIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMywKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF80LAotICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzUsCi0gIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfNiwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF83LAotICBHUlBDX0RUU19DTElFTlRfUFJFRklYXzgsCi0gIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfOSwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMCwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMSwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMiwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMywKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNCwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNSwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNiwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNywKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xOCwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xOSwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMCwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMSwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMiwKLSAgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMywKLSAgLyogZnJhbWUgaGVhZGVyIGJ5dGUgMC4uLiAqLwotICAvKiBtdXN0IGZvbGxvdyBmcm9tIHRoZSBwcmVmaXggc3RhdGVzICovCi0gIEdSUENfRFRTX0ZIXzAsCi0gIEdSUENfRFRTX0ZIXzEsCi0gIEdSUENfRFRTX0ZIXzIsCi0gIEdSUENfRFRTX0ZIXzMsCi0gIEdSUENfRFRTX0ZIXzQsCi0gIEdSUENfRFRTX0ZIXzUsCi0gIEdSUENfRFRTX0ZIXzYsCi0gIEdSUENfRFRTX0ZIXzcsCi0gIC8qIC4uLiBmcmFtZSBoZWFkZXIgYnl0ZSA4ICovCi0gIEdSUENfRFRTX0ZIXzgsCi0gIC8qIGluc2lkZSBhIGh0dHAyIGZyYW1lICovCi0gIEdSUENfRFRTX0ZSQU1FCi19IGdycGNfY2h0dHAyX2RlZnJhbWVfdHJhbnNwb3J0X3N0YXRlOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqaGVhZDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICp0YWlsOwotfSBncnBjX2NodHRwMl9zdHJlYW1fbGlzdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBncnBjX2NodHRwMl9zdHJlYW0gKm5leHQ7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqcHJldjsKLX0gZ3JwY19jaHR0cDJfc3RyZWFtX2xpbms7Ci0KLS8qIFdlIGtlZXAgc2V2ZXJhbCBzZXRzIG9mIGNvbm5lY3Rpb24gd2lkZSBwYXJhbWV0ZXJzICovCi10eXBlZGVmIGVudW0gewotICAvKiBUaGUgc2V0dGluZ3Mgb3VyIHBlZXIgaGFzIGFza2VkIGZvciAoYW5kIHdlIGhhdmUgYWNrZWQpICovCi0gIEdSUENfUEVFUl9TRVRUSU5HUyA9IDAsCi0gIC8qIFRoZSBzZXR0aW5ncyB3ZSdkIGxpa2UgdG8gaGF2ZSAqLwotICBHUlBDX0xPQ0FMX1NFVFRJTkdTLAotICAvKiBUaGUgc2V0dGluZ3Mgd2UndmUgcHVibGlzaGVkIHRvIG91ciBwZWVyICovCi0gIEdSUENfU0VOVF9TRVRUSU5HUywKLSAgLyogVGhlIHNldHRpbmdzIHRoZSBwZWVyIGhhcyBhY2tlZCAqLwotICBHUlBDX0FDS0VEX1NFVFRJTkdTLAotICBHUlBDX05VTV9TRVRUSU5HX1NFVFMKLX0gZ3JwY19jaHR0cDJfc2V0dGluZ19zZXQ7Ci0KLS8qIE91dHN0YW5kaW5nIHBpbmcgcmVxdWVzdCBkYXRhICovCi10eXBlZGVmIHN0cnVjdCBncnBjX2NodHRwMl9vdXRzdGFuZGluZ19waW5nIHsKLSAgdWludDhfdCBpZFs4XTsKLSAgZ3JwY19jbG9zdXJlICpvbl9yZWN2OwotICBzdHJ1Y3QgZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZyAqbmV4dDsKLSAgc3RydWN0IGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3BpbmcgKnByZXY7Ci19IGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3Bpbmc7Ci0KLS8qIGZvcndhcmQgZGVjbGFyZWQgaW4gZnJhbWVfZGF0YS5oICovCi1zdHJ1Y3QgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gewotICBncnBjX2J5dGVfc3RyZWFtIGJhc2U7Ci0gIGdwcl9yZWZjb3VudCByZWZzOwotICBzdHJ1Y3QgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKm5leHRfbWVzc2FnZTsKLSAgaW50IGZhaWxlZDsKLQotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnRyYW5zcG9ydDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07Ci0gIGludCBpc190YWlsOwotICBncHJfc2xpY2VfYnVmZmVyIHNsaWNlczsKLSAgZ3JwY19jbG9zdXJlICpvbl9uZXh0OwotICBncHJfc2xpY2UgKm5leHQ7Ci19OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIC8qKiBkYXRhIHRvIHdyaXRlIG5leHQgd3JpdGUgKi8KLSAgZ3ByX3NsaWNlX2J1ZmZlciBxYnVmOwotCi0gIC8qKiB3aW5kb3cgYXZhaWxhYmxlIGZvciB1cyB0byBzZW5kIHRvIHBlZXIgKi8KLSAgaW50NjRfdCBvdXRnb2luZ193aW5kb3c7Ci0gIC8qKiB3aW5kb3cgYXZhaWxhYmxlIHRvIGFubm91bmNlIHRvIHBlZXIgKi8KLSAgaW50NjRfdCBhbm5vdW5jZV9pbmNvbWluZ193aW5kb3c7Ci0gIC8qKiBob3cgbXVjaCB3aW5kb3cgd291bGQgd2UgbGlrZSB0byBoYXZlIGZvciBpbmNvbWluZ193aW5kb3cgKi8KLSAgdWludDMyX3QgY29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0OwotCi0gIC8qKiBoYXZlIHdlIHNlZW4gYSBnb2F3YXkgKi8KLSAgdWludDhfdCBzZWVuX2dvYXdheTsKLSAgLyoqIGhhdmUgd2Ugc2VudCBhIGdvYXdheSAqLwotICB1aW50OF90IHNlbnRfZ29hd2F5OwotCi0gIC8qKiBpcyB0aGlzIHRyYW5zcG9ydCBhIGNsaWVudD8gKi8KLSAgdWludDhfdCBpc19jbGllbnQ7Ci0gIC8qKiBhcmUgdGhlIGxvY2FsIHNldHRpbmdzIGRpcnR5IGFuZCBuZWVkIHRvIGJlIHNlbnQ/ICovCi0gIHVpbnQ4X3QgZGlydGllZF9sb2NhbF9zZXR0aW5nczsKLSAgLyoqIGhhdmUgbG9jYWwgc2V0dGluZ3MgYmVlbiBzZW50PyAqLwotICB1aW50OF90IHNlbnRfbG9jYWxfc2V0dGluZ3M7Ci0gIC8qKiBiaXRtYXNrIG9mIHNldHRpbmcgaW5kZXhlcyB0byBzZW5kIG91dCAqLwotICB1aW50MzJfdCBmb3JjZV9zZW5kX3NldHRpbmdzOwotICAvKiogc2V0dGluZ3MgdmFsdWVzICovCi0gIHVpbnQzMl90IHNldHRpbmdzW0dSUENfTlVNX1NFVFRJTkdfU0VUU11bR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTXTsKLQotICAvKiogd2hhdCBpcyB0aGUgbmV4dCBzdHJlYW0gaWQgdG8gYmUgYWxsb2NhdGVkIGJ5IHRoaXMgcGVlcj8KLSAgICAgIGNvcGllZCB0byBuZXh0X3N0cmVhbV9pZCBpbiBwYXJzaW5nIHdoZW4gcGFyc2luZyBjb21tZW5jZXMgKi8KLSAgdWludDMyX3QgbmV4dF9zdHJlYW1faWQ7Ci0KLSAgLyoqIGhvdyBmYXIgdG8gbG9va2FoZWFkIGluIGEgc3RyZWFtPyAqLwotICB1aW50MzJfdCBzdHJlYW1fbG9va2FoZWFkOwotCi0gIC8qKiBsYXN0IHJlY2VpdmVkIHN0cmVhbSBpZCAqLwotICB1aW50MzJfdCBsYXN0X2luY29taW5nX3N0cmVhbV9pZDsKLQotICAvKiogcGluZ3MgYXdhaXRpbmcgcmVzcG9uc2VzICovCi0gIGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3BpbmcgcGluZ3M7Ci0gIC8qKiBuZXh0IHBheWxvYWQgZm9yIGFuIG91dGdvaW5nIHBpbmcgKi8KLSAgdWludDY0X3QgcGluZ19jb3VudGVyOwotCi0gIC8qKiBjb25jdXJyZW50IHN0cmVhbSBjb3VudDogdXBkYXRlZCB3aGVuIG5vdCBwYXJzaW5nLAotICAgICAgc28gdGhpcyBpcyBhIHN0cmljdCBvdmVyLWVzdGltYXRpb24gb24gdGhlIGNsaWVudCAqLwotICB1aW50MzJfdCBjb25jdXJyZW50X3N0cmVhbV9jb3VudDsKLX0gZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAvKiogZGF0YSB0byB3cml0ZSBub3cgKi8KLSAgZ3ByX3NsaWNlX2J1ZmZlciBvdXRidWY7Ci0gIC8qKiBocGFjayBlbmNvZGluZyAqLwotICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yIGhwYWNrX2NvbXByZXNzb3I7Ci0gIGludDY0X3Qgb3V0Z29pbmdfd2luZG93OwotICAvKiogaXMgdGhpcyBhIGNsaWVudD8gKi8KLSAgdWludDhfdCBpc19jbGllbnQ7Ci0gIC8qKiBjYWxsYmFjayBmb3Igd2hlbiB3cml0aW5nIGlzIGRvbmUgKi8KLSAgZ3JwY19jbG9zdXJlIGRvbmVfY2I7Ci19IGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nOwotCi1zdHJ1Y3QgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgewotICAvKiogaXMgdGhpcyB0cmFuc3BvcnQgYSBjbGllbnQ/IChib29sZWFuKSAqLwotICB1aW50OF90IGlzX2NsaWVudDsKLQotICAvKiogd2VyZSBzZXR0aW5ncyB1cGRhdGVkPyAqLwotICB1aW50OF90IHNldHRpbmdzX3VwZGF0ZWQ7Ci0gIC8qKiB3YXMgYSBzZXR0aW5ncyBhY2sgcmVjZWl2ZWQ/ICovCi0gIHVpbnQ4X3Qgc2V0dGluZ3NfYWNrX3JlY2VpdmVkOwotICAvKiogd2FzIGEgZ29hd2F5IGZyYW1lIHJlY2VpdmVkPyAqLwotICB1aW50OF90IGdvYXdheV9yZWNlaXZlZDsKLQotICAvKiogdGhlIGxhc3Qgc2VudCBtYXhfdGFibGVfc2l6ZSBzZXR0aW5nICovCi0gIHVpbnQzMl90IGxhc3Rfc2VudF9tYXhfdGFibGVfc2l6ZTsKLQotICAvKiogaW5pdGlhbCB3aW5kb3cgY2hhbmdlICovCi0gIGludDY0X3QgaW5pdGlhbF93aW5kb3dfdXBkYXRlOwotCi0gIC8qKiBkYXRhIHRvIHdyaXRlIGxhdGVyIC0gYWZ0ZXIgcGFyc2luZyAqLwotICBncHJfc2xpY2VfYnVmZmVyIHFidWY7Ci0gIC8qKiBwYXJzZXIgZm9yIGhlYWRlcnMgKi8KLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyIGhwYWNrX3BhcnNlcjsKLSAgLyoqIHNpbXBsZSBvbmUgc2hvdCBwYXJzZXJzICovCi0gIHVuaW9uIHsKLSAgICBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX3BhcnNlciB3aW5kb3dfdXBkYXRlOwotICAgIGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcnNlciBzZXR0aW5nczsKLSAgICBncnBjX2NodHRwMl9waW5nX3BhcnNlciBwaW5nOwotICAgIGdycGNfY2h0dHAyX3JzdF9zdHJlYW1fcGFyc2VyIHJzdF9zdHJlYW07Ci0gIH0gc2ltcGxlOwotICAvKiogcGFyc2VyIGZvciBnb2F3YXkgZnJhbWVzICovCi0gIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXIgZ29hd2F5X3BhcnNlcjsKLQotICAvKiogd2luZG93IGF2YWlsYWJsZSBmb3IgcGVlciB0byBzZW5kIHRvIHVzICovCi0gIGludDY0X3QgaW5jb21pbmdfd2luZG93OwotCi0gIC8qKiBuZXh0IHN0cmVhbSBpZCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgYmVnaW5uaW5nIHBhcnNpbmcgKi8KLSAgdWludDMyX3QgbmV4dF9zdHJlYW1faWQ7Ci0gIHVpbnQzMl90IGxhc3RfaW5jb21pbmdfc3RyZWFtX2lkOwotCi0gIC8qIGRlZnJhbWluZyAqLwotICBncnBjX2NodHRwMl9kZWZyYW1lX3RyYW5zcG9ydF9zdGF0ZSBkZWZyYW1lX3N0YXRlOwotICB1aW50OF90IGluY29taW5nX2ZyYW1lX3R5cGU7Ci0gIHVpbnQ4X3QgaW5jb21pbmdfZnJhbWVfZmxhZ3M7Ci0gIHVpbnQ4X3QgaGVhZGVyX2VvZjsKLSAgdWludDMyX3QgZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQ7Ci0gIHVpbnQzMl90IGluY29taW5nX2ZyYW1lX3NpemU7Ci0gIHVpbnQzMl90IGluY29taW5nX3N0cmVhbV9pZDsKLQotICAvKiBhY3RpdmUgcGFyc2VyICovCi0gIHZvaWQgKnBhcnNlcl9kYXRhOwotICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqaW5jb21pbmdfc3RyZWFtOwotICBncnBjX2NodHRwMl9wYXJzZV9lcnJvciAoKnBhcnNlcikoCi0gICAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqcGFyc2VyX3VzZXJfZGF0YSwKLSAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7Ci0KLSAgLyogcmVjZWl2ZWQgc2V0dGluZ3MgKi8KLSAgdWludDMyX3Qgc2V0dGluZ3NbR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTXTsKLQotICAvKiBnb2F3YXkgZGF0YSAqLwotICBncnBjX3N0YXR1c19jb2RlIGdvYXdheV9lcnJvcjsKLSAgdWludDMyX3QgZ29hd2F5X2xhc3Rfc3RyZWFtX2luZGV4OwotICBncHJfc2xpY2UgZ29hd2F5X3RleHQ7Ci0KLSAgaW50NjRfdCBvdXRnb2luZ193aW5kb3c7Ci19OwotCi1zdHJ1Y3QgZ3JwY19jaHR0cDJfdHJhbnNwb3J0IHsKLSAgZ3JwY190cmFuc3BvcnQgYmFzZTsgLyogbXVzdCBiZSBmaXJzdCAqLwotICBncnBjX2VuZHBvaW50ICplcDsKLSAgZ3ByX3JlZmNvdW50IHJlZnM7Ci0gIGNoYXIgKnBlZXJfc3RyaW5nOwotCi0gIC8qKiB3aGVuIHRoaXMgZHJvcHMgdG8gemVybyBpdCdzIHNhZmUgdG8gc2h1dGRvd24gdGhlIGVuZHBvaW50ICovCi0gIGdwcl9yZWZjb3VudCBzaHV0ZG93bl9lcF9yZWZzOwotCi0gIGdwcl9tdSBtdTsKLQotICAvKiogaXMgdGhlIHRyYW5zcG9ydCBkZXN0cm95aW5nIGl0c2VsZj8gKi8KLSAgdWludDhfdCBkZXN0cm95aW5nOwotICAvKiogaGFzIHRoZSB1cHBlciBsYXllciBjbG9zZWQgdGhlIHRyYW5zcG9ydD8gKi8KLSAgdWludDhfdCBjbG9zZWQ7Ci0KLSAgLyoqIGlzIGEgdGhyZWFkIGN1cnJlbnRseSB3cml0aW5nICovCi0gIHVpbnQ4X3Qgd3JpdGluZ19hY3RpdmU7Ci0gIC8qKiBpcyBhIHRocmVhZCBjdXJyZW50bHkgcGFyc2luZyAqLwotICB1aW50OF90IHBhcnNpbmdfYWN0aXZlOwotCi0gIC8qKiBpcyB0aGVyZSBhIHJlYWQgcmVxdWVzdCB0byB0aGUgZW5kcG9pbnQgb3V0c3RhbmRpbmc/ICovCi0gIHVpbnQ4X3QgZW5kcG9pbnRfcmVhZGluZzsKLQotICAvKiogdmFyaW91cyBsaXN0cyBvZiBzdHJlYW1zICovCi0gIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0IGxpc3RzW1NUUkVBTV9MSVNUX0NPVU5UXTsKLQotICAvKiogZ2xvYmFsIHN0YXRlIGZvciByZWFkaW5nL3dyaXRpbmcgKi8KLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCBnbG9iYWw7Ci0gIC8qKiBzdGF0ZSBvbmx5IGFjY2Vzc2libGUgYnkgdGhlIGNoYWluIG9mIGV4ZWN1dGlvbiB0aGF0Ci0gICAgICBzZXQgd3JpdGluZ19hY3RpdmU9MSAqLwotICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyB3cml0aW5nOwotICAvKiogc3RhdGUgb25seSBhY2Nlc3NpYmxlIGJ5IHRoZSBjaGFpbiBvZiBleGVjdXRpb24gdGhhdAotICAgICAgc2V0IHBhcnNpbmdfYWN0aXZlPTEgKi8KLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgcGFyc2luZzsKLQotICAvKiogbWFwcyBzdHJlYW0gaWQgdG8gZ3JwY19jaHR0cDJfc3RyZWFtIG9iamVjdHM7Ci0gICAgICBvd25lZCBieSB0aGUgcGFyc2luZyB0aHJlYWQgd2hlbiBwYXJzaW5nICovCi0gIGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgcGFyc2luZ19zdHJlYW1fbWFwOwotCi0gIC8qKiBzdHJlYW1zIGNyZWF0ZWQgYnkgdGhlIGNsaWVudCAocG9zc2libHkgZHVyaW5nIHBhcnNpbmcpOwotICAgICAgbWVyZ2VkIHdpdGggcGFyc2luZ19zdHJlYW1fbWFwIGR1cmluZyB1bmxvY2sgd2hlbiBubwotICAgICAgcGFyc2luZyBpcyBvY2N1cnJpbmcgKi8KLSAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcCBuZXdfc3RyZWFtX21hcDsKLQotICAvKiogY2xvc3VyZSB0byBleGVjdXRlIHdyaXRpbmcgKi8KLSAgZ3JwY19jbG9zdXJlIHdyaXRpbmdfYWN0aW9uOwotICAvKiogY2xvc3VyZSB0byBmaW5pc2ggcmVhZGluZyBmcm9tIHRoZSBlbmRwb2ludCAqLwotICBncnBjX2Nsb3N1cmUgcmVjdl9kYXRhOwotCi0gIC8qKiBpbmNvbWluZyByZWFkIGJ5dGVzICovCi0gIGdwcl9zbGljZV9idWZmZXIgcmVhZF9idWZmZXI7Ci0KLSAgLyoqIGFkZHJlc3MgdG8gcGxhY2UgYSBuZXdseSBhY2NlcHRlZCBzdHJlYW0gLSBzZXQgYW5kIHVuc2V0IGJ5Ci0gICAgICBncnBjX2NodHRwMl9wYXJzaW5nX2FjY2VwdF9zdHJlYW07IHVzZWQgYnkgaW5pdF9zdHJlYW0gdG8KLSAgICAgIHB1Ymxpc2ggdGhlIGFjY2VwdGVkIHNlcnZlciBzdHJlYW0gKi8KLSAgZ3JwY19jaHR0cDJfc3RyZWFtICoqYWNjZXB0aW5nX3N0cmVhbTsKLQotICBzdHJ1Y3QgewotICAgIC8qIGFjY2VwdCBzdHJlYW0gY2FsbGJhY2sgKi8KLSAgICB2b2lkICgqYWNjZXB0X3N0cmVhbSkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnVzZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCwgY29uc3Qgdm9pZCAqc2VydmVyX2RhdGEpOwotICAgIHZvaWQgKmFjY2VwdF9zdHJlYW1fdXNlcl9kYXRhOwotCi0gICAgLyoqIGNvbm5lY3Rpdml0eSB0cmFja2luZyAqLwotICAgIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlX3RyYWNrZXIgc3RhdGVfdHJhY2tlcjsKLSAgfSBjaGFubmVsX2NhbGxiYWNrOwotCi0gIC8qKiBUcmFuc3BvcnQgb3AgdG8gYmUgYXBwbGllZCBwb3N0LXBhcnNpbmcgKi8KLSAgZ3JwY190cmFuc3BvcnRfb3AgKnBvc3RfcGFyc2luZ19vcDsKLX07Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgLyoqIEhUVFAyIHN0cmVhbSBpZCBmb3IgdGhpcyBzdHJlYW0sIG9yIHplcm8gaWYgb25lIGhhcyBub3QgYmVlbiBhc3NpZ25lZCAqLwotICB1aW50MzJfdCBpZDsKLQotICAvKiogd2luZG93IGF2YWlsYWJsZSBmb3IgdXMgdG8gc2VuZCB0byBwZWVyICovCi0gIGludDY0X3Qgb3V0Z29pbmdfd2luZG93OwotICAvKiogVGhlIG51bWJlciBvZiBieXRlcyB0aGUgdXBwZXIgbGF5ZXJzIGhhdmUgb2ZmZXJlZCB0byByZWNlaXZlLgotICAgICAgQXMgdGhlIHVwcGVyIGxheWVyIG9mZmVycyBtb3JlIGJ5dGVzLCB0aGlzIHZhbHVlIGluY3JlYXNlcy4KLSAgICAgIEFzIGJ5dGVzIGFyZSByZWFkLCB0aGlzIHZhbHVlIGRlY3JlYXNlcy4gKi8KLSAgdWludDMyX3QgbWF4X3JlY3ZfYnl0ZXM7Ci0gIC8qKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoZSB1cHBlciBsYXllciBoYXMgb2ZmZXJlZCB0byByZWFkIGJ1dCB3ZSBoYXZlCi0gICAgICBub3QgeWV0IGFubm91bmNlZCB0byBIVFRQMiBmbG93IGNvbnRyb2wuCi0gICAgICBBcyB0aGUgdXBwZXIgbGF5ZXJzIG9mZmVyIHRvIHJlYWQgbW9yZSBieXRlcywgdGhpcyB2YWx1ZSBpbmNyZWFzZXMuCi0gICAgICBBcyB3ZSBhZHZlcnRpc2UgaW5jb21pbmcgZmxvdyBjb250cm9sIHdpbmRvdywgdGhpcyB2YWx1ZSBkZWNyZWFzZXMuICovCi0gIHVpbnQzMl90IHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3JfcGFyc2U7Ci0gIHVpbnQzMl90IHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3Jfd3JpdGluZzsKLSAgLyoqIHRoaW5ncyB0aGUgdXBwZXIgbGF5ZXJzIHdvdWxkIGxpa2UgdG8gc2VuZCAqLwotICBncnBjX21ldGFkYXRhX2JhdGNoICpzZW5kX2luaXRpYWxfbWV0YWRhdGE7Ci0gIGdycGNfY2xvc3VyZSAqc2VuZF9pbml0aWFsX21ldGFkYXRhX2ZpbmlzaGVkOwotICBncnBjX2J5dGVfc3RyZWFtICpzZW5kX21lc3NhZ2U7Ci0gIGdycGNfY2xvc3VyZSAqc2VuZF9tZXNzYWdlX2ZpbmlzaGVkOwotICBncnBjX21ldGFkYXRhX2JhdGNoICpzZW5kX3RyYWlsaW5nX21ldGFkYXRhOwotICBncnBjX2Nsb3N1cmUgKnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQ7Ci0KLSAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqcmVjdl9pbml0aWFsX21ldGFkYXRhOwotICBncnBjX2Nsb3N1cmUgKnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeTsKLSAgZ3JwY19ieXRlX3N0cmVhbSAqKnJlY3ZfbWVzc2FnZTsKLSAgZ3JwY19jbG9zdXJlICpyZWN2X21lc3NhZ2VfcmVhZHk7Ci0gIGdycGNfbWV0YWRhdGFfYmF0Y2ggKnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGE7Ci0gIGdycGNfY2xvc3VyZSAqcmVjdl90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZDsKLQotICAvKiogd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgd3JpdGVzIGJlIGNsb3NlZCwgdGhlIHdyaXRlX2Nsb3NlZCBpcwotICAgICAgJ3F1ZXVlZCc7IHdoZW4gdGhlIGNsb3NlIGlzIGZsb3cgY29udHJvbGxlZCBpbnRvIHRoZSBzZW5kIHBhdGgsIHdlIGFyZQotICAgICAgJ3NlbmRpbmcnIGl0OyB3aGVuIHRoZSB3cml0ZSBoYXMgYmVlbiBwZXJmb3JtZWQgaXQgaXMgJ3NlbnQnICovCi0gIHVpbnQ4X3Qgd3JpdGVfY2xvc2VkOwotICAvKiogaXMgdGhpcyBzdHJlYW0gcmVhZGluZyBoYWxmLWNsb3NlZCAoYm9vbGVhbikgKi8KLSAgdWludDhfdCByZWFkX2Nsb3NlZDsKLSAgLyoqIGlzIHRoaXMgc3RyZWFtIGluIHRoZSBzdHJlYW0gbWFwPyAoYm9vbGVhbikgKi8KLSAgdWludDhfdCBpbl9zdHJlYW1fbWFwOwotICAvKiogaGFzIHRoaXMgc3RyZWFtIHNlZW4gYW4gZXJyb3I/IGlmIDEsIHRoZW4gcGVuZGluZyBpbmNvbWluZyBmcmFtZXMKLSAgICAgIGNhbiBiZSB0aHJvd24gYXdheSAqLwotICB1aW50OF90IHNlZW5fZXJyb3I7Ci0KLSAgdWludDhfdCBwdWJsaXNoZWRfaW5pdGlhbF9tZXRhZGF0YTsKLSAgdWludDhfdCBwdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGE7Ci0gIHVpbnQ4X3QgZmFrZWRfdHJhaWxpbmdfbWV0YWRhdGE7Ci0KLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyIHJlY2VpdmVkX2luaXRpYWxfbWV0YWRhdGE7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciByZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YTsKLQotICBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSBpbmNvbWluZ19mcmFtZXM7Ci19IGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWw7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgLyoqIEhUVFAyIHN0cmVhbSBpZCBmb3IgdGhpcyBzdHJlYW0sIG9yIHplcm8gaWYgb25lIGhhcyBub3QgYmVlbiBhc3NpZ25lZCAqLwotICB1aW50MzJfdCBpZDsKLSAgdWludDhfdCBmZXRjaGluZzsKLSAgYm9vbCBzZW50X2luaXRpYWxfbWV0YWRhdGE7Ci0gIHVpbnQ4X3Qgc2VudF9tZXNzYWdlOwotICB1aW50OF90IHNlbnRfdHJhaWxpbmdfbWV0YWRhdGE7Ci0gIHVpbnQ4X3QgcmVhZF9jbG9zZWQ7Ci0gIC8qKiBzZW5kIHRoaXMgaW5pdGlhbCBtZXRhZGF0YSAqLwotICBncnBjX21ldGFkYXRhX2JhdGNoICpzZW5kX2luaXRpYWxfbWV0YWRhdGE7Ci0gIGdycGNfYnl0ZV9zdHJlYW0gKnNlbmRfbWVzc2FnZTsKLSAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqc2VuZF90cmFpbGluZ19tZXRhZGF0YTsKLSAgaW50NjRfdCBvdXRnb2luZ193aW5kb3c7Ci0gIC8qKiBob3cgbXVjaCB3aW5kb3cgc2hvdWxkIHdlIGFubm91bmNlPyAqLwotICB1aW50MzJfdCBhbm5vdW5jZV93aW5kb3c7Ci0gIGdwcl9zbGljZV9idWZmZXIgZmxvd19jb250cm9sbGVkX2J1ZmZlcjsKLSAgZ3ByX3NsaWNlIGZldGNoaW5nX3NsaWNlOwotICBzaXplX3Qgc3RyZWFtX2ZldGNoZWQ7Ci0gIGdycGNfY2xvc3VyZSBmaW5pc2hlZF9mZXRjaDsKLX0gZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmc7Ci0KLXN0cnVjdCBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyB7Ci0gIC8qKiBIVFRQMiBzdHJlYW0gaWQgZm9yIHRoaXMgc3RyZWFtLCBvciB6ZXJvIGlmIG9uZSBoYXMgbm90IGJlZW4gYXNzaWduZWQgKi8KLSAgdWludDMyX3QgaWQ7Ci0gIC8qKiBoYXMgdGhpcyBzdHJlYW0gcmVjZWl2ZWQgYSBjbG9zZSAqLwotICB1aW50OF90IHJlY2VpdmVkX2Nsb3NlOwotICAvKiogc2F3IGEgcnN0X3N0cmVhbSAqLwotICB1aW50OF90IHNhd19yc3Rfc3RyZWFtOwotICAvKiogaG93IG1hbnkgaGVhZGVyIGZyYW1lcyBoYXZlIHdlIHJlY2VpdmVkPyAqLwotICB1aW50OF90IGhlYWRlcl9mcmFtZXNfcmVjZWl2ZWQ7Ci0gIC8qKiB3aGljaCBtZXRhZGF0YSBkaWQgd2UgZ2V0IChvbiB0aGlzIHBhcnNlKSAqLwotICB1aW50OF90IGdvdF9tZXRhZGF0YV9vbl9wYXJzZVsyXTsKLSAgLyoqIHNob3VsZCB3ZSByYWlzZSB0aGUgc2Vlbl9lcnJvciBmbGFnIGluIHRyYW5zcG9ydF9nbG9iYWwgKi8KLSAgdWludDhfdCBzZWVuX2Vycm9yOwotICAvKiogd2luZG93IGF2YWlsYWJsZSBmb3IgcGVlciB0byBzZW5kIHRvIHVzICovCi0gIGludDY0X3QgaW5jb21pbmdfd2luZG93OwotICAvKiogcGFyc2luZyBzdGF0ZSBmb3IgZGF0YSBmcmFtZXMgKi8KLSAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXIgZGF0YV9wYXJzZXI7Ci0gIC8qKiByZWFzb24gZ2l2ZSB0byByc3Rfc3RyZWFtICovCi0gIHVpbnQzMl90IHJzdF9zdHJlYW1fcmVhc29uOwotICAvKiogYW1vdW50IG9mIHdpbmRvdyBnaXZlbiAqLwotICBpbnQ2NF90IG91dGdvaW5nX3dpbmRvdzsKLSAgLyoqIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCAtIHJlc2V0IGF0IGVuZCBvZiBwYXJzZSB0aHJlYWQgZXhlY3V0aW9uICovCi0gIGludDY0X3QgcmVjZWl2ZWRfYnl0ZXM7Ci0KLSAgLyoqIGluY29taW5nIG1ldGFkYXRhICovCi0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlciBtZXRhZGF0YV9idWZmZXJbMl07Ci19OwotCi1zdHJ1Y3QgZ3JwY19jaHR0cDJfc3RyZWFtIHsKLSAgZ3JwY19zdHJlYW1fcmVmY291bnQgKnJlZmNvdW50OwotICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsIGdsb2JhbDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgd3JpdGluZzsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgcGFyc2luZzsKLQotICBncnBjX2NodHRwMl9zdHJlYW1fbGluayBsaW5rc1tTVFJFQU1fTElTVF9DT1VOVF07Ci0gIHVpbnQ4X3QgaW5jbHVkZWRbU1RSRUFNX0xJU1RfQ09VTlRdOwotfTsKLQotLyoqIFRyYW5zcG9ydCB3cml0aW5nIGNhbGwgZmxvdzoKLSAgICBjaHR0cDJfdHJhbnNwb3J0LmMgY2FsbHMgZ3JwY19jaHR0cDJfdW5sb2NraW5nX2NoZWNrX3dyaXRlcyB0byBzZWUgaWYgd3JpdGVzCi0gICBhcmUgcmVxdWlyZWQ7Ci0gICAgaWYgdGhleSBhcmUsIGNodHRwMl90cmFuc3BvcnQuYyBjYWxscyBncnBjX2NodHRwMl9wZXJmb3JtX3dyaXRlcyB0byBkbyB0aGUKLSAgIHdyaXRlcy4KLSAgICBPbmNlIHdyaXRlcyBoYXZlIGJlZW4gY29tcGxldGVkIChtZWFuaW5nIGFub3RoZXIgd3JpdGUgY291bGQgcG90ZW50aWFsbHkgYmUKLSAgIHN0YXJ0ZWQpLAotICAgIGdycGNfY2h0dHAyX3Rlcm1pbmF0ZV93cml0aW5nIGlzIGNhbGxlZC4gVGhpcyB3aWxsIGNhbGwKLSAgIGdycGNfY2h0dHAyX2NsZWFudXBfd3JpdGluZywgYXQgd2hpY2gKLSAgICBwb2ludCB0aGUgd3JpdGUgcGhhc2UgaXMgY29tcGxldGUuICovCi0KLS8qKiBTb21lb25lIGlzIHVubG9ja2luZyB0aGUgdHJhbnNwb3J0IG11dGV4OiBjaGVjayB0byBzZWUgaWYgd3JpdGVzCi0gICAgYXJlIHJlcXVpcmVkLCBhbmQgc2NoZWR1bGUgdGhlbSBpZiBzbyAqLwotaW50IGdycGNfY2h0dHAyX3VubG9ja2luZ19jaGVja193cml0ZXMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICpnbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpc19wYXJzaW5nKTsKLXZvaWQgZ3JwY19jaHR0cDJfcGVyZm9ybV93cml0ZXMoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBncnBjX2VuZHBvaW50ICplbmRwb2ludCk7Ci12b2lkIGdycGNfY2h0dHAyX3Rlcm1pbmF0ZV93cml0aW5nKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0cmFuc3BvcnRfd3JpdGluZywgYm9vbCBzdWNjZXNzKTsKLXZvaWQgZ3JwY19jaHR0cDJfY2xlYW51cF93cml0aW5nKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKndyaXRpbmcpOwotCi12b2lkIGdycGNfY2h0dHAyX3ByZXBhcmVfdG9fcmVhZChncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICpnbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqcGFyc2luZyk7Ci0vKiogUHJvY2VzcyBvbmUgc2xpY2Ugb2YgaW5jb21pbmcgZGF0YTsgcmV0dXJuIDEgaWYgdGhlIGNvbm5lY3Rpb24gaXMgc3RpbGwKLSAgICB2aWFibGUgYWZ0ZXIgcmVhZGluZywgb3IgMCBpZiB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUgdG9ybiBkb3duICovCi1pbnQgZ3JwY19jaHR0cDJfcGVyZm9ybV9yZWFkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBzbGljZSk7Ci12b2lkIGdycGNfY2h0dHAyX3B1Ymxpc2hfcmVhZHMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICpwYXJzaW5nKTsKLQotYm9vbCBncnBjX2NodHRwMl9saXN0X2FkZF93cml0YWJsZV9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLS8qKiBHZXQgYSB3cml0YWJsZSBzdHJlYW0KLSAgICByZXR1cm5zIG5vbi16ZXJvIGlmIHRoZXJlIHdhcyBhIHN0cmVhbSBhdmFpbGFibGUgKi8KLWludCBncnBjX2NodHRwMl9saXN0X3BvcF93cml0YWJsZV9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKipzdHJlYW1fd3JpdGluZyk7Ci1ib29sIGdycGNfY2h0dHAyX2xpc3RfcmVtb3ZlX3dyaXRhYmxlX3N0cmVhbSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIEdSUENfTVVTVF9VU0VfUkVTVUxUOwotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRpbmdfc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmcpOwotaW50IGdycGNfY2h0dHAyX2xpc3RfaGF2ZV93cml0aW5nX3N0cmVhbXMoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nKTsKLWludCBncnBjX2NodHRwMl9saXN0X3BvcF93cml0aW5nX3N0cmVhbSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKipzdHJlYW1fd3JpdGluZyk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdHRlbl9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZyk7Ci1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdHRlbl9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKipzdHJlYW1fd3JpdGluZyk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfcGFyc2luZ19zZWVuX3N0cmVhbSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nKTsKLWludCBncnBjX2NodHRwMl9saXN0X3BvcF9wYXJzaW5nX3NlZW5fc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICoqc3RyZWFtX3BhcnNpbmcpOwotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dhaXRpbmdfZm9yX2NvbmN1cnJlbmN5KAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7Ci1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd2FpdGluZ19mb3JfY29uY3VycmVuY3koCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2hlY2tfcmVhZF9vcHMoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLWludCBncnBjX2NodHRwMl9saXN0X3BvcF9jaGVja19yZWFkX29wcygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKTsKLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF93cml0aW5nX3N0YWxsZWRfYnlfdHJhbnNwb3J0KAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmcpOwotdm9pZCBncnBjX2NodHRwMl9saXN0X2ZsdXNoX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBib29sIGlzX3dpbmRvd19hdmFpbGFibGUpOwotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3N0YWxsZWRfYnlfdHJhbnNwb3J0KAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmcpOwotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3N0YWxsZWRfYnlfdHJhbnNwb3J0KAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpOwotdm9pZCBncnBjX2NodHRwMl9saXN0X3JlbW92ZV9zdGFsbGVkX2J5X3RyYW5zcG9ydCgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOwotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3VuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19hdmFpbGFibGUoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOwotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3VuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19hdmFpbGFibGUoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKipzdHJlYW1fcGFyc2luZyk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfY2xvc2VkX3dhaXRpbmdfZm9yX3BhcnNpbmcoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLWludCBncnBjX2NodHRwMl9saXN0X3BvcF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKTsKLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3Jfd3JpdGluZygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOwotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpOwotCi1ncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywgdWludDMyX3QgaWQpOwotZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKmdycGNfY2h0dHAyX3BhcnNpbmdfYWNjZXB0X3N0cmVhbSgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIHVpbnQzMl90IGlkKTsKLQotdm9pZCBncnBjX2NodHRwMl9hZGRfaW5jb21pbmdfZ29hd2F5KAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIHVpbnQzMl90IGdvYXdheV9lcnJvciwgZ3ByX3NsaWNlIGdvYXdheV90ZXh0KTsKLQotdm9pZCBncnBjX2NodHRwMl9yZWdpc3Rlcl9zdHJlYW0oZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtICpzKTsKLS8qIHJldHVybnMgMSBpZiB0aGlzIGlzIHRoZSBsYXN0IHN0cmVhbSwgMCBvdGhlcndpc2UgKi8KLWludCBncnBjX2NodHRwMl91bnJlZ2lzdGVyX3N0cmVhbShncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtICpzKSBHUlBDX01VU1RfVVNFX1JFU1VMVDsKLWludCBncnBjX2NodHRwMl9oYXNfc3RyZWFtcyhncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpOwotdm9pZCBncnBjX2NodHRwMl9mb3JfYWxsX3N0cmVhbXMoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAotICAgIHZvaWQgKCpjYikoZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkpOwotCi12b2lkIGdycGNfY2h0dHAyX3BhcnNpbmdfYmVjb21lX3NraXBfcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOwotCi12b2lkIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqKnBjbG9zdXJlLCBpbnQgc3VjY2Vzcyk7Ci0KLSNkZWZpbmUgR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSSU5HICJQUkkgKiBIVFRQLzIuMFxyXG5cclxuU01cclxuXHJcbiIKLSNkZWZpbmUgR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSTEVOIFwKLSAgKHNpemVvZihHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJJTkcpIC0gMSkKLQotZXh0ZXJuIGludCBncnBjX2h0dHBfdHJhY2U7Ci1leHRlcm4gaW50IGdycGNfZmxvd2N0bF90cmFjZTsKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9JRl9UUkFDSU5HKHN0bXQpIFwKLSAgaWYgKCEoZ3JwY19odHRwX3RyYWNlKSkgICAgICAgICAgICBcCi0gICAgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RtdAotCi10eXBlZGVmIGVudW0gewotICBHUlBDX0NIVFRQMl9GTE9XQ1RMX01PVkUsCi0gIEdSUENfQ0hUVFAyX0ZMT1dDVExfQ1JFRElULAotICBHUlBDX0NIVFRQMl9GTE9XQ1RMX0RFQklUCi19IGdycGNfY2h0dHAyX2Zsb3djdGxfb3A7Ci0KLSNkZWZpbmUgR1JQQ19DSFRUUDJfRkxPV19NT1ZFX0NPTU1PTihwaGFzZSwgdHJhbnNwb3J0LCBpZDEsIGlkMiwgZHN0X2NvbnRleHQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfdmFyLCBzcmNfY29udGV4dCwgc3JjX3ZhcikgICAgICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhc3NlcnQoaWQxID09IGlkMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZ3JwY19mbG93Y3RsX3RyYWNlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGdycGNfY2h0dHAyX2Zsb3djdGxfdHJhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIHBoYXNlLCBHUlBDX0NIVFRQMl9GTE9XQ1RMX01PVkUsICNkc3RfY29udGV4dCwgIFwKLSAgICAgICAgICAjZHN0X3ZhciwgI3NyY19jb250ZXh0LCAjc3JjX3ZhciwgdHJhbnNwb3J0LT5pc19jbGllbnQsIGlkMSwgICAgICAgIFwKLSAgICAgICAgICBkc3RfY29udGV4dC0+ZHN0X3Zhciwgc3JjX2NvbnRleHQtPnNyY192YXIpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkc3RfY29udGV4dC0+ZHN0X3ZhciArPSBzcmNfY29udGV4dC0+c3JjX3ZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzcmNfY29udGV4dC0+c3JjX3ZhciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKHBoYXNlLCB0cmFuc3BvcnQsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbnRleHQsIHNyY192YXIpICAgICAgICAgICAgICAgICAgIFwKLSAgR1JQQ19DSFRUUDJfRkxPV19NT1ZFX0NPTU1PTihwaGFzZSwgdHJhbnNwb3J0LCBkc3RfY29udGV4dC0+aWQsICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb250ZXh0LT5pZCwgZHN0X2NvbnRleHQsIGRzdF92YXIsICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbnRleHQsIHNyY192YXIpCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9UUkFOU1BPUlQocGhhc2UsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19jb250ZXh0LCBzcmNfdmFyKSAgICAgICAgICAgICAgICAgIFwKLSAgR1JQQ19DSFRUUDJfRkxPV19NT1ZFX0NPTU1PTihwaGFzZSwgZHN0X2NvbnRleHQsIDAsIDAsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2NvbnRleHQsIHNyY192YXIpCi0KLSNkZWZpbmUgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfQ09NTU9OKHBoYXNlLCB0cmFuc3BvcnQsIGlkLCBkc3RfY29udGV4dCwgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfdmFyLCBhbW91bnQpICAgICAgICAgICAgICAgICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZ3JwY19mbG93Y3RsX3RyYWNlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBncnBjX2NodHRwMl9mbG93Y3RsX3RyYWNlKF9fRklMRV9fLCBfX0xJTkVfXywgcGhhc2UsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9GTE9XQ1RMX0NSRURJVCwgI2RzdF9jb250ZXh0LCAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RzdF92YXIsIE5VTEwsICNhbW91bnQsIHRyYW5zcG9ydC0+aXNfY2xpZW50LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLCBkc3RfY29udGV4dC0+ZHN0X3ZhciwgYW1vdW50KTsgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkc3RfY29udGV4dC0+ZHN0X3ZhciArPSBhbW91bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKHBoYXNlLCB0cmFuc3BvcnQsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9DT01NT04ocGhhc2UsIHRyYW5zcG9ydCwgZHN0X2NvbnRleHQtPmlkLCAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdF9jb250ZXh0LCBkc3RfdmFyLCBhbW91bnQpCi0jZGVmaW5lIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1RSQU5TUE9SVChwaGFzZSwgZHN0X2NvbnRleHQsIGRzdF92YXIsIGFtb3VudCkgXAotICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9DT01NT04ocGhhc2UsIGRzdF9jb250ZXh0LCAwLCBkc3RfY29udGV4dCwgZHN0X3ZhciwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX0NPTU1PTihwaGFzZSwgdHJhbnNwb3J0LCBpZCwgZHN0X2NvbnRleHQsICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3ZhciwgYW1vdW50KSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChncnBjX2Zsb3djdGxfdHJhY2UpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGdycGNfY2h0dHAyX2Zsb3djdGxfdHJhY2UoX19GSUxFX18sIF9fTElORV9fLCBwaGFzZSwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0ZMT1dDVExfREVCSVQsICNkc3RfY29udGV4dCwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZHN0X3ZhciwgTlVMTCwgI2Ftb3VudCwgdHJhbnNwb3J0LT5pc19jbGllbnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsIGRzdF9jb250ZXh0LT5kc3RfdmFyLCBhbW91bnQpOyAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRzdF9jb250ZXh0LT5kc3RfdmFyIC09IGFtb3VudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1NUUkVBTShwaGFzZSwgdHJhbnNwb3J0LCBkc3RfY29udGV4dCwgZHN0X3ZhciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX0NPTU1PTihwaGFzZSwgdHJhbnNwb3J0LCBkc3RfY29udGV4dC0+aWQsICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RfY29udGV4dCwgZHN0X3ZhciwgYW1vdW50KQotI2RlZmluZSBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1RSQU5TUE9SVChwaGFzZSwgZHN0X2NvbnRleHQsIGRzdF92YXIsIGFtb3VudCkgXAotICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX0NPTU1PTihwaGFzZSwgZHN0X2NvbnRleHQsIDAsIGRzdF9jb250ZXh0LCBkc3RfdmFyLCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQpCi0KLXZvaWQgZ3JwY19jaHR0cDJfZmxvd2N0bF90cmFjZShjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqcGhhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfZmxvd2N0bF9vcCBvcCwgY29uc3QgY2hhciAqY29udGV4dDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFyMSwgY29uc3QgY2hhciAqY29udGV4dDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFyMiwgaW50IGlzX2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdHJlYW1faWQsIGludDY0X3QgdmFsMSwgaW50NjRfdCB2YWwyKTsKLQotdm9pZCBncnBjX2NodHRwMl9mYWtlX3N0YXR1cyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0YXR1c19jb2RlIHN0YXR1cywgZ3ByX3NsaWNlICpkZXRhaWxzKTsKLXZvaWQgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsIGludCBjbG9zZV9yZWFkcywKLSAgICBpbnQgY2xvc2Vfd3JpdGVzKTsKLXZvaWQgZ3JwY19jaHR0cDJfc3RhcnRfd3JpdGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsKTsKLQotI2lmZGVmIEdSUENfU1RSRUFNX1JFRkNPVU5UX0RFQlVHCi0jZGVmaW5lIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoc3RyZWFtX2dsb2JhbCwgcmVhc29uKSBcCi0gIGdycGNfY2h0dHAyX3N0cmVhbV9yZWYoc3RyZWFtX2dsb2JhbCwgcmVhc29uKQotI2RlZmluZSBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsIHJlYXNvbikgXAotICBncnBjX2NodHRwMl9zdHJlYW1fdW5yZWYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsIHJlYXNvbikKLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7Ci12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV91bnJlZihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwotI2Vsc2UKLSNkZWZpbmUgR1JQQ19DSFRUUDJfU1RSRUFNX1JFRihzdHJlYW1fZ2xvYmFsLCByZWFzb24pIFwKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihzdHJlYW1fZ2xvYmFsKQotI2RlZmluZSBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsIHJlYXNvbikgXAotICBncnBjX2NodHRwMl9zdHJlYW1fdW5yZWYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwpCi12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9yZWYoZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCk7Ci12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV91bnJlZihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpOwotI2VuZGlmCi0KLWdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9jcmVhdGUoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcsIHVpbnQzMl90IGZyYW1lX3NpemUsCi0gICAgdWludDMyX3QgZmxhZ3MsIGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlICphZGRfdG9fcXVldWUpOwotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9wdXNoKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpicywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Ugc2xpY2UpOwotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9maW5pc2hlZCgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmJzLCBpbnQgc3VjY2VzcywKLSAgICBpbnQgZnJvbV9wYXJzaW5nX3RocmVhZCk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfYWNrX3BpbmcoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICpwYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpvcGFxdWVfOGJ5dGVzKTsKLQotLyoqIGFkZCBhIHJlZiB0byB0aGUgc3RyZWFtIGFuZCBhZGQgaXQgdG8gdGhlIHdyaXRhYmxlIGxpc3Q7Ci0gICAgcmVmIHdpbGwgYmUgZHJvcHBlZCBpbiB3cml0aW5nLmMgKi8KLXZvaWQgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZTUyZjYuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jCisrKyAvZGV2L251bGwKQEAgLTEsODY2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N0cmluZ191dGlsLmg+Ci0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCi0KLXN0YXRpYyBpbnQgaW5pdF9mcmFtZV9wYXJzZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZyk7Ci1zdGF0aWMgaW50IGluaXRfaGVhZGVyX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGludCBpc19jb250aW51YXRpb24pOwotc3RhdGljIGludCBpbml0X2RhdGFfZnJhbWVfcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOwotc3RhdGljIGludCBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOwotc3RhdGljIGludCBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKTsKLXN0YXRpYyBpbnQgaW5pdF93aW5kb3dfdXBkYXRlX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKTsKLXN0YXRpYyBpbnQgaW5pdF9waW5nX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOwotc3RhdGljIGludCBpbml0X2dvYXdheV9wYXJzZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpOwotc3RhdGljIGludCBpbml0X3NraXBfZnJhbWVfcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgaW50IGlzX2hlYWRlcik7Ci0KLXN0YXRpYyBpbnQgcGFyc2VfZnJhbWVfc2xpY2UoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCk7Ci0KLXZvaWQgZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZzsKLQotICBHUFJfVElNRVJfQkVHSU4oImdycGNfY2h0dHAyX3ByZXBhcmVfdG9fcmVhZCIsIDApOwotCi0gIHRyYW5zcG9ydF9wYXJzaW5nLT5uZXh0X3N0cmVhbV9pZCA9IHRyYW5zcG9ydF9nbG9iYWwtPm5leHRfc3RyZWFtX2lkOwotICB0cmFuc3BvcnRfcGFyc2luZy0+bGFzdF9zZW50X21heF90YWJsZV9zaXplID0KLSAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPnNldHRpbmdzW0dSUENfU0VOVF9TRVRUSU5HU10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dSUENfQ0hUVFAyX1NFVFRJTkdTX0hFQURFUl9UQUJMRV9TSVpFXTsKLQotICAvKiB1cGRhdGUgdGhlIHBhcnNpbmcgdmlldyBvZiBpbmNvbWluZyB3aW5kb3cgKi8KLSAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX3VuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19hdmFpbGFibGUoCi0gICAgICB0cmFuc3BvcnRfZ2xvYmFsLCB0cmFuc3BvcnRfcGFyc2luZywgJnN0cmVhbV9nbG9iYWwsICZzdHJlYW1fcGFyc2luZykpIHsKLSAgICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLCBzdHJlYW1fcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3JfcGFyc2UpOwotICB9Ci0KLSAgR1BSX1RJTUVSX0VORCgiZ3JwY19jaHR0cDJfcHJlcGFyZV90b19yZWFkIiwgMCk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfcHVibGlzaF9yZWFkcygKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nOwotICBpbnQgd2FzX3plcm87Ci0gIGludCBpc196ZXJvOwotCi0gIC8qIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCBpcyB1c2VkIGFzCi0gICAgIGxhc3QtZ3JwY19jaHR0cDJfc3RyZWFtLWlkIHdoZW4KLSAgICAgc2VuZGluZyBHT0FXQVkgZnJhbWUuCi0gICAgIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtaHR0cDItMTcjc2VjdGlvbi02LjgKLSAgICAgc2F5cyB0aGF0IGxhc3QtZ3JwY19jaHR0cDJfc3RyZWFtLWlkIGlzIHBlZXItaW5pdGlhdGVkIGdycGNfY2h0dHAyX3N0cmVhbQotICAgICBJRC4gIFNvLAotICAgICBzaW5jZSB3ZSBkb24ndCBoYXZlIHNlcnZlciBwdXNoZWQgc3RyZWFtcywgY2xpZW50IHNob3VsZCBzZW5kCi0gICAgIEdPQVdBWSBsYXN0LWdycGNfY2h0dHAyX3N0cmVhbS1pZD0wIGluIHRoaXMgY2FzZS4gKi8KLSAgaWYgKCF0cmFuc3BvcnRfcGFyc2luZy0+aXNfY2xpZW50KSB7Ci0gICAgdHJhbnNwb3J0X2dsb2JhbC0+bGFzdF9pbmNvbWluZ19zdHJlYW1faWQgPQotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkOwotICB9Ci0KLSAgLyogdXBkYXRlIGdsb2JhbCBzZXR0aW5ncyAqLwotICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX3VwZGF0ZWQpIHsKLSAgICBtZW1jcHkodHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19QRUVSX1NFVFRJTkdTXSwKLSAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzLCBzaXplb2YodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzKSk7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX3VwZGF0ZWQgPSAwOwotICB9Ci0KLSAgLyogdXBkYXRlIHNldHRpbmdzIGJhc2VkIG9uIGFjayBpZiByZWNlaXZlZCAqLwotICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCkgewotICAgIG1lbWNweSh0cmFuc3BvcnRfZ2xvYmFsLT5zZXR0aW5nc1tHUlBDX0FDS0VEX1NFVFRJTkdTXSwKLSAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19TRU5UX1NFVFRJTkdTXSwKLSAgICAgICAgICAgR1JQQ19DSFRUUDJfTlVNX1NFVFRJTkdTICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCA9IDA7Ci0gICAgdHJhbnNwb3J0X2dsb2JhbC0+c2VudF9sb2NhbF9zZXR0aW5ncyA9IDA7Ci0gIH0KLQotICAvKiBtb3ZlIGdvYXdheSB0byB0aGUgZ2xvYmFsIHN0YXRlIGlmIHdlIHJlY2VpdmVkIG9uZSAoaXQgd2lsbCBiZQotICAgICBwdWJsaXNoZWQgbGF0ZXIgKi8KLSAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQpIHsKLSAgICBncnBjX2NodHRwMl9hZGRfaW5jb21pbmdfZ29hd2F5KGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KXRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+Z29hd2F5X3RleHQpOwotICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfdGV4dCA9IGdwcl9lbXB0eV9zbGljZSgpOwotICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5nb2F3YXlfcmVjZWl2ZWQgPSAwOwotICB9Ci0KLSAgLyogcHJvcGFnYXRlIGZsb3cgY29udHJvbCB0b2tlbnMgdG8gZ2xvYmFsIHN0YXRlICovCi0gIHdhc196ZXJvID0gdHJhbnNwb3J0X2dsb2JhbC0+b3V0Z29pbmdfd2luZG93IDw9IDA7Ci0gIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9UUkFOU1BPUlQoInBhcnNlZCIsIHRyYW5zcG9ydF9nbG9iYWwsIG91dGdvaW5nX3dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZywgb3V0Z29pbmdfd2luZG93KTsKLSAgaXNfemVybyA9IHRyYW5zcG9ydF9nbG9iYWwtPm91dGdvaW5nX3dpbmRvdyA8PSAwOwotICBpZiAod2FzX3plcm8gJiYgIWlzX3plcm8pIHsKLSAgICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3Bfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwpKSB7Ci0gICAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7Ci0gICAgfQotICB9Ci0KLSAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cgPAotICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+Y29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0ICogMyAvIDQpIHsKLSAgICBpbnQ2NF90IGFubm91bmNlX2J5dGVzID0gdHJhbnNwb3J0X2dsb2JhbC0+Y29ubmVjdGlvbl93aW5kb3dfdGFyZ2V0IC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3dpbmRvdzsKLSAgICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9UUkFOU1BPUlQoInBhcnNlZCIsIHRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm91bmNlX2luY29taW5nX3dpbmRvdywgYW5ub3VuY2VfYnl0ZXMpOwotICAgIEdSUENfQ0hUVFAyX0ZMT1dfQ1JFRElUX1RSQU5TUE9SVCgicGFyc2VkIiwgdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgYW5ub3VuY2VfYnl0ZXMpOwotICB9Ci0KLSAgLyogZm9yIGVhY2ggc3RyZWFtIHRoYXQgc2F3IGFuIHVwZGF0ZSwgZml4dXAgZ2xvYmFsIHN0YXRlICovCi0gIHdoaWxlIChncnBjX2NodHRwMl9saXN0X3BvcF9wYXJzaW5nX3NlZW5fc3RyZWFtKAotICAgICAgdHJhbnNwb3J0X2dsb2JhbCwgdHJhbnNwb3J0X3BhcnNpbmcsICZzdHJlYW1fZ2xvYmFsLCAmc3RyZWFtX3BhcnNpbmcpKSB7Ci0gICAgaWYgKHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yKSB7Ci0gICAgICBzdHJlYW1fZ2xvYmFsLT5zZWVuX2Vycm9yID0gMTsKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICAgIH0KLQotICAgIC8qIHVwZGF0ZSBvdXRnb2luZyBmbG93IGNvbnRyb2wgd2luZG93ICovCi0gICAgd2FzX3plcm8gPSBzdHJlYW1fZ2xvYmFsLT5vdXRnb2luZ193aW5kb3cgPD0gMDsKLSAgICBHUlBDX0NIVFRQMl9GTE9XX01PVkVfU1RSRUFNKCJwYXJzZWQiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCBzdHJlYW1fcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3dpbmRvdyk7Ci0gICAgaXNfemVybyA9IHN0cmVhbV9nbG9iYWwtPm91dGdvaW5nX3dpbmRvdyA8PSAwOwotICAgIGlmICh3YXNfemVybyAmJiAhaXNfemVybykgewotICAgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICAgIH0KLQotICAgIHN0cmVhbV9nbG9iYWwtPm1heF9yZWN2X2J5dGVzIC09ICh1aW50MzJfdClHUFJfTUlOKAotICAgICAgICBzdHJlYW1fZ2xvYmFsLT5tYXhfcmVjdl9ieXRlcywgc3RyZWFtX3BhcnNpbmctPnJlY2VpdmVkX2J5dGVzKTsKLSAgICBzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfYnl0ZXMgPSAwOwotCi0gICAgLyogcHVibGlzaCBpbmNvbWluZyBzdHJlYW0gb3BzICovCi0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy50YWlsICE9IE5VTEwpIHsKLSAgICAgIHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy50YWlsLT5pc190YWlsID0gMDsKLSAgICB9Ci0gICAgaWYgKHN0cmVhbV9wYXJzaW5nLT5kYXRhX3BhcnNlci5pbmNvbWluZ19mcmFtZXMuaGVhZCAhPSBOVUxMKSB7Ci0gICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICB9Ci0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfbWVyZ2UoCi0gICAgICAgICZzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMsCi0gICAgICAgICZzdHJlYW1fcGFyc2luZy0+ZGF0YV9wYXJzZXIuaW5jb21pbmdfZnJhbWVzKTsKLSAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLnRhaWwgIT0gTlVMTCkgewotICAgICAgc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLnRhaWwtPmlzX3RhaWwgPSAxOwotICAgIH0KLQotICAgIGlmICghc3RyZWFtX2dsb2JhbC0+cHVibGlzaGVkX2luaXRpYWxfbWV0YWRhdGEgJiYKLSAgICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVswXSkgewotICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVswXSA9IDA7Ci0gICAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfaW5pdGlhbF9tZXRhZGF0YSA9IDE7Ci0gICAgICBHUFJfU1dBUChncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXIsCi0gICAgICAgICAgICAgICBzdHJlYW1fcGFyc2luZy0+bWV0YWRhdGFfYnVmZmVyWzBdLAotICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YSk7Ci0gICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICB9Ci0gICAgaWYgKCFzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgJiYKLSAgICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVsxXSkgewotICAgICAgc3RyZWFtX3BhcnNpbmctPmdvdF9tZXRhZGF0YV9vbl9wYXJzZVsxXSA9IDA7Ci0gICAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgPSAxOwotICAgICAgR1BSX1NXQVAoZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyLAotICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclsxXSwKLSAgICAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhKTsKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICAgIH0KLQotICAgIGlmIChzdHJlYW1fcGFyc2luZy0+c2F3X3JzdF9zdHJlYW0pIHsKLSAgICAgIGlmIChzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gIT0gR1JQQ19DSFRUUDJfTk9fRVJST1IpIHsKLSAgICAgICAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXNfY29kZSA9IGdycGNfY2h0dHAyX2h0dHAyX2Vycm9yX3RvX2dycGNfc3RhdHVzKAotICAgICAgICAgICAgKGdycGNfY2h0dHAyX2Vycm9yX2NvZGUpc3RyZWFtX3BhcnNpbmctPnJzdF9zdHJlYW1fcmVhc29uKTsKLSAgICAgICAgY2hhciAqc3RhdHVzX2RldGFpbHM7Ci0gICAgICAgIGdwcl9zbGljZSBzbGljZV9kZXRhaWxzOwotICAgICAgICBncHJfYXNwcmludGYoJnN0YXR1c19kZXRhaWxzLCAiUmVjZWl2ZWQgUlNUX1NUUkVBTSBlcnI9JWQiLAotICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3BhcnNpbmctPnJzdF9zdHJlYW1fcmVhc29uKTsKLSAgICAgICAgc2xpY2VfZGV0YWlscyA9IGdwcl9zbGljZV9mcm9tX2NvcGllZF9zdHJpbmcoc3RhdHVzX2RldGFpbHMpOwotICAgICAgICBncHJfZnJlZShzdGF0dXNfZGV0YWlscyk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2Zha2Vfc3RhdHVzKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgJnNsaWNlX2RldGFpbHMpOwotICAgICAgfQotICAgICAgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEpOwotICAgIH0KLQotICAgIGlmIChzdHJlYW1fcGFyc2luZy0+cmVjZWl2ZWRfY2xvc2UpIHsKLSAgICAgIGdycGNfY2h0dHAyX21hcmtfc3RyZWFtX2Nsb3NlZChleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAwKTsKLSAgICB9Ci0gIH0KLX0KLQotaW50IGdycGNfY2h0dHAyX3BlcmZvcm1fcmVhZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Ugc2xpY2UpIHsKLSAgdWludDhfdCAqYmVnID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzbGljZSk7Ci0gIHVpbnQ4X3QgKmVuZCA9IEdQUl9TTElDRV9FTkRfUFRSKHNsaWNlKTsKLSAgdWludDhfdCAqY3VyID0gYmVnOwotCi0gIGlmIChjdXIgPT0gZW5kKSByZXR1cm4gMTsKLQotICBzd2l0Y2ggKHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlKSB7Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzA6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzI6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzM6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzQ6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzU6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzY6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzc6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzg6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzk6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEwOgotICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xMToKLSAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTI6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzEzOgotICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNDoKLSAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTU6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE2OgotICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8xNzoKLSAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMTg6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzE5OgotICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMDoKLSAgICBjYXNlIEdSUENfRFRTX0NMSUVOVF9QUkVGSVhfMjE6Ci0gICAgY2FzZSBHUlBDX0RUU19DTElFTlRfUFJFRklYXzIyOgotICAgIGNhc2UgR1JQQ19EVFNfQ0xJRU5UX1BSRUZJWF8yMzoKLSAgICAgIHdoaWxlIChjdXIgIT0gZW5kICYmIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlICE9IEdSUENfRFRTX0ZIXzApIHsKLSAgICAgICAgaWYgKCpjdXIgIT0gR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSSU5HW3RyYW5zcG9ydF9wYXJzaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWZyYW1lX3N0YXRlXSkgewotICAgICAgICAgIGdwcl9sb2coR1BSX0lORk8sCi0gICAgICAgICAgICAgICAgICAiQ29ubmVjdCBzdHJpbmcgbWlzbWF0Y2g6IGV4cGVjdGVkICclYycgKCVkKSBnb3QgJyVjJyAoJWQpICIKLSAgICAgICAgICAgICAgICAgICJhdCBieXRlICVkIiwKLSAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0NMSUVOVF9DT05ORUNUX1NUUklOR1t0cmFuc3BvcnRfcGFyc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmRlZnJhbWVfc3RhdGVdLAotICAgICAgICAgICAgICAgICAgKGludCkodWludDhfdClHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJJTkcKLSAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGVdLAotICAgICAgICAgICAgICAgICAgKmN1ciwgKGludCkqY3VyLCB0cmFuc3BvcnRfcGFyc2luZy0+ZGVmcmFtZV9zdGF0ZSk7Ci0gICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgKytjdXI7Ci0gICAgICAgICsrdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGU7Ci0gICAgICB9Ci0gICAgICBpZiAoY3VyID09IGVuZCkgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGR0c19maF8wOgotICAgIGNhc2UgR1JQQ19EVFNfRkhfMDoKLSAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplID0gKCh1aW50MzJfdCkqY3VyKSA8PCAxNjsKLSAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8xOwotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19EVFNfRkhfMToKLSAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplIHw9ICgodWludDMyX3QpKmN1cikgPDwgODsKLSAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8yOwotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19EVFNfRkhfMjoKLSAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplIHw9ICpjdXI7Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfMzsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfRFRTX0ZIXzM6Ci0gICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7Ci0gICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfdHlwZSA9ICpjdXI7Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNDsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfRFRTX0ZIXzQ6Ci0gICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7Ci0gICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MgPSAqY3VyOwotICAgICAgaWYgKCsrY3VyID09IGVuZCkgewotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZGVmcmFtZV9zdGF0ZSA9IEdSUENfRFRTX0ZIXzU7Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfQotICAgIC8qIGZhbGx0aHJvdWdoICovCi0gICAgY2FzZSBHUlBDX0RUU19GSF81OgotICAgICAgR1BSX0FTU0VSVChjdXIgPCBlbmQpOwotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCA9ICgoKHVpbnQzMl90KSpjdXIpICYgMHg3ZikgPDwgMjQ7Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNjsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfRFRTX0ZIXzY6Ci0gICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7Ci0gICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkIHw9ICgodWludDMyX3QpKmN1cikgPDwgMTY7Ci0gICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfNzsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfRFRTX0ZIXzc6Ci0gICAgICBHUFJfQVNTRVJUKGN1ciA8IGVuZCk7Ci0gICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkIHw9ICgodWludDMyX3QpKmN1cikgPDwgODsKLSAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF84OwotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgR1JQQ19EVFNfRkhfODoKLSAgICAgIEdQUl9BU1NFUlQoY3VyIDwgZW5kKTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgfD0gKCh1aW50MzJfdCkqY3VyKTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRlJBTUU7Ci0gICAgICBpZiAoIWluaXRfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZykpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0gICAgICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCkgewotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+bGFzdF9pbmNvbWluZ19zdHJlYW1faWQgPQotICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZDsKLSAgICAgIH0KLSAgICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSA9PSAwKSB7Ci0gICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCBncHJfZW1wdHlfc2xpY2UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgewotICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBOVUxMOwotICAgICAgICBpZiAoKytjdXIgPT0gZW5kKSB7Ci0gICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmRlZnJhbWVfc3RhdGUgPSBHUlBDX0RUU19GSF8wOwotICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGdvdG8gZHRzX2ZoXzA7IC8qIGxvb3AgKi8KLSAgICAgIH0KLSAgICAgIGlmICgrK2N1ciA9PSBlbmQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgLyogZmFsbHRocm91Z2ggKi8KLSAgICBjYXNlIEdSUENfRFRTX0ZSQU1FOgotICAgICAgR1BSX0FTU0VSVChjdXIgPCBlbmQpOwotICAgICAgaWYgKCh1aW50MzJfdCkoZW5kIC0gY3VyKSA9PSB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSkgewotICAgICAgICBpZiAoIXBhcnNlX2ZyYW1lX3NsaWNlKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Vfc3ViX25vX3JlZihzbGljZSwgKHNpemVfdCkoY3VyIC0gYmVnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShlbmQgLSBiZWcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgewotICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5kZWZyYW1lX3N0YXRlID0gR1JQQ19EVFNfRkhfMDsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IE5VTEw7Ci0gICAgICAgIHJldHVybiAxOwotICAgICAgfSBlbHNlIGlmICgodWludDMyX3QpKGVuZCAtIGN1cikgPgotICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSkgewotICAgICAgICBzaXplX3QgY3VyX29mZnNldCA9IChzaXplX3QpKGN1ciAtIGJlZyk7Ci0gICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoCi0gICAgICAgICAgICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgIGdwcl9zbGljZV9zdWJfbm9fcmVmKAotICAgICAgICAgICAgICAgICAgICBzbGljZSwgY3VyX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgY3VyX29mZnNldCArIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplKSwKLSAgICAgICAgICAgICAgICAxKSkgewotICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGN1ciArPSB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZTsKLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZHRzX2ZoXzA7IC8qIGxvb3AgKi8KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghcGFyc2VfZnJhbWVfc2xpY2UoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZV9zdWJfbm9fcmVmKHNsaWNlLCAoc2l6ZV90KShjdXIgLSBiZWcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3QpKGVuZCAtIGJlZykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKSB7Ci0gICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUgLT0gKHVpbnQzMl90KShlbmQgLSBjdXIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICAgIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKLSAgfQotCi0gIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKLX0KLQotc3RhdGljIGludCBpbml0X2ZyYW1lX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgIT0gMCkgewotICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfdHlwZSAhPQotICAgICAgICBHUlBDX0NIVFRQMl9GUkFNRV9DT05USU5VQVRJT04pIHsKLSAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiRXhwZWN0ZWQgQ09OVElOVUFUSU9OIGZyYW1lLCBnb3QgZnJhbWUgdHlwZSAlMDJ4IiwKLSAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3R5cGUpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICh0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgIT0KLSAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCkgewotICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsCi0gICAgICAgICAgICAgICJFeHBlY3RlZCBDT05USU5VQVRJT04gZnJhbWUgZm9yIGdycGNfY2h0dHAyX3N0cmVhbSAlMDh4LCBnb3QgIgotICAgICAgICAgICAgICAiZ3JwY19jaHR0cDJfc3RyZWFtICUwOHgiLAotICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQsCi0gICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKLSAgfQotICBzd2l0Y2ggKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV90eXBlKSB7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9EQVRBOgotICAgICAgcmV0dXJuIGluaXRfZGF0YV9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0hFQURFUjoKLSAgICAgIHJldHVybiBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAwKTsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0NPTlRJTlVBVElPTjoKLSAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5leHBlY3RlZCBDT05USU5VQVRJT04gZnJhbWUiKTsKLSAgICAgIHJldHVybiAwOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfRlJBTUVfUlNUX1NUUkVBTToKLSAgICAgIHJldHVybiBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZyk7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9TRVRUSU5HUzoKLSAgICAgIHJldHVybiBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcpOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfRlJBTUVfV0lORE9XX1VQREFURToKLSAgICAgIHJldHVybiBpbml0X3dpbmRvd191cGRhdGVfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZyk7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9GUkFNRV9QSU5HOgotICAgICAgcmV0dXJuIGluaXRfcGluZ19wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX0ZSQU1FX0dPQVdBWToKLSAgICAgIHJldHVybiBpbml0X2dvYXdheV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgICBkZWZhdWx0OgotICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJVbmtub3duIGZyYW1lIHR5cGUgJTAyeCIsCi0gICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV90eXBlKTsKLSAgICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMCk7Ci0gIH0KLX0KLQotc3RhdGljIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIHNraXBfcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwYXJzZXIsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZywgZ3ByX3NsaWNlIHNsaWNlLCBpbnQgaXNfbGFzdCkgewotICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkIHNraXBfaGVhZGVyKHZvaWQgKnRwLCBncnBjX21kZWxlbSAqbWQpIHsgR1JQQ19NREVMRU1fVU5SRUYobWQpOyB9Ci0KLXN0YXRpYyBpbnQgaW5pdF9za2lwX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGludCBpc19oZWFkZXIpIHsKLSAgaWYgKGlzX2hlYWRlcikgewotICAgIHVpbnQ4X3QgaXNfZW9oID0gdHJhbnNwb3J0X3BhcnNpbmctPmV4cGVjdF9jb250aW51YXRpb25fc3RyZWFtX2lkICE9IDA7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2U7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXI7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5vbl9oZWFkZXIgPSBza2lwX2hlYWRlcjsKLSAgICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLm9uX2hlYWRlcl91c2VyX2RhdGEgPSBOVUxMOwotICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIuaXNfYm91bmRhcnkgPSBpc19lb2g7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5pc19lb2YgPQotICAgICAgICAodWludDhfdCkoaXNfZW9oID8gdHJhbnNwb3J0X3BhcnNpbmctPmhlYWRlcl9lb2YgOiAwKTsKLSAgfSBlbHNlIHsKLSAgICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyID0gc2tpcF9wYXJzZXI7Ci0gIH0KLSAgcmV0dXJuIDE7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZykgewotICBpbml0X3NraXBfZnJhbWVfcGFyc2VyKAotICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9PSBncnBjX2NodHRwMl9oZWFkZXJfcGFyc2VyX3BhcnNlKTsKLX0KLQotc3RhdGljIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIHVwZGF0ZV9pbmNvbWluZ193aW5kb3coCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcpIHsKLSAgdWludDMyX3QgaW5jb21pbmdfZnJhbWVfc2l6ZSA9IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplOwotICBpZiAoaW5jb21pbmdfZnJhbWVfc2l6ZSA+IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cpIHsKLSAgICBncHJfbG9nKEdQUl9FUlJPUiwgImZyYW1lIG9mIHNpemUgJWQgb3ZlcmZsb3dzIGluY29taW5nIHdpbmRvdyBvZiAlZCIsCi0gICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKLSAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cpOwotICAgIHJldHVybiBHUlBDX0NIVFRQMl9DT05ORUNUSU9OX0VSUk9SOwotICB9Ci0KLSAgaWYgKGluY29taW5nX2ZyYW1lX3NpemUgPiBzdHJlYW1fcGFyc2luZy0+aW5jb21pbmdfd2luZG93KSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJmcmFtZSBvZiBzaXplICVkIG92ZXJmbG93cyBpbmNvbWluZyB3aW5kb3cgb2YgJWQiLAotICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCi0gICAgICAgICAgICBzdHJlYW1fcGFyc2luZy0+aW5jb21pbmdfd2luZG93KTsKLSAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjsKLSAgfQotCi0gIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfVFJBTlNQT1JUKCJwYXJzZSIsIHRyYW5zcG9ydF9wYXJzaW5nLCBpbmNvbWluZ193aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX2ZyYW1lX3NpemUpOwotICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1NUUkVBTSgicGFyc2UiLCB0cmFuc3BvcnRfcGFyc2luZywgc3RyZWFtX3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX3dpbmRvdywgaW5jb21pbmdfZnJhbWVfc2l6ZSk7Ci0gIHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9ieXRlcyArPSBpbmNvbWluZ19mcmFtZV9zaXplOwotCi0gIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKLQotICByZXR1cm4gR1JQQ19DSFRUUDJfUEFSU0VfT0s7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdF9kYXRhX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZyA9Ci0gICAgICBncnBjX2NodHRwMl9wYXJzaW5nX2xvb2t1cF9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7Ci0gIGdycGNfY2h0dHAyX3BhcnNlX2Vycm9yIGVyciA9IEdSUENfQ0hUVFAyX1BBUlNFX09LOwotICBpZiAoIXN0cmVhbV9wYXJzaW5nIHx8IHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSkKLSAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOwotICBpZiAoZXJyID09IEdSUENfQ0hUVFAyX1BBUlNFX09LKSB7Ci0gICAgZXJyID0gdXBkYXRlX2luY29taW5nX3dpbmRvdyhleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKLSAgfQotICBpZiAoZXJyID09IEdSUENfQ0hUVFAyX1BBUlNFX09LKSB7Ci0gICAgZXJyID0gZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgICAgICZzdHJlYW1fcGFyc2luZy0+ZGF0YV9wYXJzZXIsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyk7Ci0gIH0KLSAgc3dpdGNoIChlcnIpIHsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX1BBUlNFX09LOgotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbSA9IHN0cmVhbV9wYXJzaW5nOwotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2RhdGFfcGFyc2VyX3BhcnNlOwotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnN0cmVhbV9wYXJzaW5nLT5kYXRhX3BhcnNlcjsKLSAgICAgIHJldHVybiAxOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfU1RSRUFNX0VSUk9SOgotICAgICAgc3RyZWFtX3BhcnNpbmctPnJlY2VpdmVkX2Nsb3NlID0gMTsKLSAgICAgIHN0cmVhbV9wYXJzaW5nLT5zYXdfcnN0X3N0cmVhbSA9IDE7Ci0gICAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUjsKLSAgICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKAotICAgICAgICAgICZ0cmFuc3BvcnRfcGFyc2luZy0+cWJ1ZiwKLSAgICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX1BST1RPQ09MX0VSUk9SKSk7Ci0gICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjoKLSAgICAgIHJldHVybiAwOwotICB9Ci0gIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKLX0KLQotc3RhdGljIHZvaWQgZnJlZV90aW1lb3V0KHZvaWQgKnApIHsgZ3ByX2ZyZWUocCk7IH0KLQotc3RhdGljIHZvaWQgb25faW5pdGlhbF9oZWFkZXIodm9pZCAqdHAsIGdycGNfbWRlbGVtICptZCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcgPSB0cDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nID0KLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW07Ci0KLSAgR1BSX1RJTUVSX0JFR0lOKCJvbl9pbml0aWFsX2hlYWRlciIsIDApOwotCi0gIEdQUl9BU1NFUlQoc3RyZWFtX3BhcnNpbmcpOwotCi0gIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoZ3ByX2xvZygKLSAgICAgIEdQUl9JTkZPLCAiSFRUUDolZDpIRFI6JXM6ICVzOiAlcyIsIHN0cmVhbV9wYXJzaW5nLT5pZCwKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQgPyAiQ0xJIiA6ICJTVlIiLAotICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+a2V5KSwgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKSk7Ci0KLSAgaWYgKG1kLT5rZXkgPT0gR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAmJiBtZCAhPSBHUlBDX01ERUxFTV9HUlBDX1NUQVRVU18wKSB7Ci0gICAgLyogVE9ETyhjdGlsbGVyKTogY2hlY2sgZm9yIGEgc3RhdHVzIGxpa2UgIiAwIiAqLwotICAgIHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yID0gMTsKLSAgfQotCi0gIGlmIChtZC0+a2V5ID09IEdSUENfTURTVFJfR1JQQ19USU1FT1VUKSB7Ci0gICAgZ3ByX3RpbWVzcGVjICpjYWNoZWRfdGltZW91dCA9IGdycGNfbWRlbGVtX2dldF91c2VyX2RhdGEobWQsIGZyZWVfdGltZW91dCk7Ci0gICAgaWYgKCFjYWNoZWRfdGltZW91dCkgewotICAgICAgLyogbm90IGFscmVhZHkgcGFyc2VkOiBwYXJzZSBpdCBub3csIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGF3YXkgKi8KLSAgICAgIGNhY2hlZF90aW1lb3V0ID0gZ3ByX21hbGxvYyhzaXplb2YoZ3ByX3RpbWVzcGVjKSk7Ci0gICAgICBpZiAoIWdycGNfY2h0dHAyX2RlY29kZV90aW1lb3V0KGdycGNfbWRzdHJfYXNfY19zdHJpbmcobWQtPnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3RpbWVvdXQpKSB7Ci0gICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiSWdub3JpbmcgYmFkIHRpbWVvdXQgdmFsdWUgJyVzJyIsCi0gICAgICAgICAgICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKTsKLSAgICAgICAgKmNhY2hlZF90aW1lb3V0ID0gZ3ByX2luZl9mdXR1cmUoR1BSX1RJTUVTUEFOKTsKLSAgICAgIH0KLSAgICAgIGdycGNfbWRlbGVtX3NldF91c2VyX2RhdGEobWQsIGZyZWVfdGltZW91dCwgY2FjaGVkX3RpbWVvdXQpOwotICAgIH0KLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfc2V0X2RlYWRsaW5lKAotICAgICAgICAmc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclswXSwKLSAgICAgICAgZ3ByX3RpbWVfYWRkKGdwcl9ub3coR1BSX0NMT0NLX01PTk9UT05JQyksICpjYWNoZWRfdGltZW91dCkpOwotICAgIEdSUENfTURFTEVNX1VOUkVGKG1kKTsKLSAgfSBlbHNlIHsKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAotICAgICAgICAmc3RyZWFtX3BhcnNpbmctPm1ldGFkYXRhX2J1ZmZlclswXSwgbWQpOwotICB9Ci0KLSAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfcGFyc2luZ19zZWVuX3N0cmVhbSh0cmFuc3BvcnRfcGFyc2luZywgc3RyZWFtX3BhcnNpbmcpOwotCi0gIEdQUl9USU1FUl9FTkQoIm9uX2luaXRpYWxfaGVhZGVyIiwgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIG9uX3RyYWlsaW5nX2hlYWRlcih2b2lkICp0cCwgZ3JwY19tZGVsZW0gKm1kKSB7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZyA9IHRwOwotICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcgPQotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbTsKLQotICBHUFJfVElNRVJfQkVHSU4oIm9uX3RyYWlsaW5nX2hlYWRlciIsIDApOwotCi0gIEdQUl9BU1NFUlQoc3RyZWFtX3BhcnNpbmcpOwotCi0gIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoZ3ByX2xvZygKLSAgICAgIEdQUl9JTkZPLCAiSFRUUDolZDpUUkw6JXM6ICVzOiAlcyIsIHN0cmVhbV9wYXJzaW5nLT5pZCwKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQgPyAiQ0xJIiA6ICJTVlIiLAotICAgICAgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+a2V5KSwgZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKSk7Ci0KLSAgaWYgKG1kLT5rZXkgPT0gR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAmJiBtZCAhPSBHUlBDX01ERUxFTV9HUlBDX1NUQVRVU18wKSB7Ci0gICAgLyogVE9ETyhjdGlsbGVyKTogY2hlY2sgZm9yIGEgc3RhdHVzIGxpa2UgIiAwIiAqLwotICAgIHN0cmVhbV9wYXJzaW5nLT5zZWVuX2Vycm9yID0gMTsKLSAgfQotCi0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9hZGQoJnN0cmVhbV9wYXJzaW5nLT5tZXRhZGF0YV9idWZmZXJbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQpOwotCi0gIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0odHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nKTsKLQotICBHUFJfVElNRVJfRU5EKCJvbl90cmFpbGluZ19oZWFkZXIiLCAwKTsKLX0KLQotc3RhdGljIGludCBpbml0X2hlYWRlcl9mcmFtZV9wYXJzZXIoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBpbnQgaXNfY29udGludWF0aW9uKSB7Ci0gIHVpbnQ4X3QgaXNfZW9oID0gKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmCi0gICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfSEVBREVSUykgIT0gMDsKLSAgaW50IHZpYV9hY2NlcHQgPSAwOwotICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmc7Ci0KLSAgLyogVE9ETyhjdGlsbGVyKTogd2hlbiB0byBpbmNyZW1lbnQgaGVhZGVyX2ZyYW1lc19yZWNlaXZlZD8gKi8KLQotICBpZiAoaXNfZW9oKSB7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPmV4cGVjdF9jb250aW51YXRpb25fc3RyZWFtX2lkID0gMDsKLSAgfSBlbHNlIHsKLSAgICB0cmFuc3BvcnRfcGFyc2luZy0+ZXhwZWN0X2NvbnRpbnVhdGlvbl9zdHJlYW1faWQgPQotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkOwotICB9Ci0KLSAgaWYgKCFpc19jb250aW51YXRpb24pIHsKLSAgICB0cmFuc3BvcnRfcGFyc2luZy0+aGVhZGVyX2VvZiA9ICh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MgJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfU1RSRUFNKSAhPSAwOwotICB9Ci0KLSAgLyogY291bGQgYmUgYSBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIG9yIGFuIGV4aXN0aW5nIGdycGNfY2h0dHAyX3N0cmVhbSAqLwotICBzdHJlYW1fcGFyc2luZyA9IGdycGNfY2h0dHAyX3BhcnNpbmdfbG9va3VwX3N0cmVhbSgKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLCB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkKTsKLSAgaWYgKHN0cmVhbV9wYXJzaW5nID09IE5VTEwpIHsKLSAgICBpZiAoaXNfY29udGludWF0aW9uKSB7Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwKLSAgICAgICAgICAgICAgImdycGNfY2h0dHAyX3N0cmVhbSBkaXNiYW5kZWQgYmVmb3JlIENPTlRJTlVBVElPTiByZWNlaXZlZCIpOwotICAgICAgcmV0dXJuIGluaXRfc2tpcF9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKLSAgICB9Ci0gICAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pc19jbGllbnQpIHsKLSAgICAgIGlmICgodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCAmIDEpICYmCi0gICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCA8Ci0gICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5uZXh0X3N0cmVhbV9pZCkgewotICAgICAgICAvKiB0aGlzIGlzIGFuIG9sZCAocHJvYmFibHkgY2FuY2VsbGVkKSBncnBjX2NodHRwMl9zdHJlYW0gKi8KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLAotICAgICAgICAgICAgICAgICJpZ25vcmluZyBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIGNyZWF0aW9uIG9uIGNsaWVudCIpOwotICAgICAgfQotICAgICAgcmV0dXJuIGluaXRfc2tpcF9mcmFtZV9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nLCAxKTsKLSAgICB9IGVsc2UgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCA+Ci0gICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkKSB7Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwKLSAgICAgICAgICAgICAgImlnbm9yaW5nIG91dCBvZiBvcmRlciBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtIHJlcXVlc3Qgb24gc2VydmVyOyAiCi0gICAgICAgICAgICAgICJsYXN0IGdycGNfY2h0dHAyX3N0cmVhbSAiCi0gICAgICAgICAgICAgICJpZD0lZCwgbmV3IGdycGNfY2h0dHAyX3N0cmVhbSBpZD0lZCIsCi0gICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X2luY29taW5nX3N0cmVhbV9pZCwKLSAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7Ci0gICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOwotICAgIH0gZWxzZSBpZiAoKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQgJiAxKSA9PSAwKSB7Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwKLSAgICAgICAgICAgICAgImlnbm9yaW5nIGdycGNfY2h0dHAyX3N0cmVhbSB3aXRoIG5vbi1jbGllbnQgZ2VuZXJhdGVkIGluZGV4ICVkIiwKLSAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7Ci0gICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOwotICAgIH0KLSAgICBzdHJlYW1fcGFyc2luZyA9IHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPQotICAgICAgICBncnBjX2NodHRwMl9wYXJzaW5nX2FjY2VwdF9zdHJlYW0oCi0gICAgICAgICAgICBleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOwotICAgIGlmIChzdHJlYW1fcGFyc2luZyA9PSBOVUxMKSB7Ci0gICAgICBncHJfbG9nKEdQUl9FUlJPUiwgImdycGNfY2h0dHAyX3N0cmVhbSBub3QgYWNjZXB0ZWQiKTsKLSAgICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMSk7Ci0gICAgfQotICAgIHZpYV9hY2NlcHQgPSAxOwotICB9IGVsc2UgewotICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBzdHJlYW1fcGFyc2luZzsKLSAgfQotICBHUFJfQVNTRVJUKHN0cmVhbV9wYXJzaW5nICE9IE5VTEwgJiYgKHZpYV9hY2NlcHQgPT0gMCB8fCB2aWFfYWNjZXB0ID09IDEpKTsKLSAgaWYgKHN0cmVhbV9wYXJzaW5nLT5yZWNlaXZlZF9jbG9zZSkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAic2tpcHBpbmcgYWxyZWFkeSBjbG9zZWQgZ3JwY19jaHR0cDJfc3RyZWFtIGhlYWRlciIpOwotICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0gPSBOVUxMOwotICAgIHJldHVybiBpbml0X3NraXBfZnJhbWVfcGFyc2VyKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywgMSk7Ci0gIH0KLSAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX2hlYWRlcl9wYXJzZXJfcGFyc2U7Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyOwotICBzd2l0Y2ggKHN0cmVhbV9wYXJzaW5nLT5oZWFkZXJfZnJhbWVzX3JlY2VpdmVkKSB7Ci0gICAgY2FzZSAwOgotICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlci5vbl9oZWFkZXIgPSBvbl9pbml0aWFsX2hlYWRlcjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIub25faGVhZGVyID0gb25fdHJhaWxpbmdfaGVhZGVyOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJ0b28gbWFueSBoZWFkZXIgZnJhbWVzIHJlY2VpdmVkIik7Ci0gICAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDEpOwotICB9Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIub25faGVhZGVyX3VzZXJfZGF0YSA9IHRyYW5zcG9ydF9wYXJzaW5nOwotICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLmlzX2JvdW5kYXJ5ID0gaXNfZW9oOwotICB0cmFuc3BvcnRfcGFyc2luZy0+aHBhY2tfcGFyc2VyLmlzX2VvZiA9Ci0gICAgICAodWludDhfdCkoaXNfZW9oID8gdHJhbnNwb3J0X3BhcnNpbmctPmhlYWRlcl9lb2YgOiAwKTsKLSAgaWYgKCFpc19jb250aW51YXRpb24gJiYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9GTEFHX0hBU19QUklPUklUWSkpIHsKLSAgICBncnBjX2NodHRwMl9ocGFja19wYXJzZXJfc2V0X2hhc19wcmlvcml0eSgmdHJhbnNwb3J0X3BhcnNpbmctPmhwYWNrX3BhcnNlcik7Ci0gIH0KLSAgcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdF93aW5kb3dfdXBkYXRlX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGludCBvayA9IEdSUENfQ0hUVFAyX1BBUlNFX09LID09IGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX2JlZ2luX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zcG9ydF9wYXJzaW5nLT5zaW1wbGUud2luZG93X3VwZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX2ZsYWdzKTsKLSAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpIHsKLSAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtID0gZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAotICAgICAgICB0cmFuc3BvcnRfcGFyc2luZywgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCk7Ci0gIH0KLSAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlciA9IGdycGNfY2h0dHAyX3dpbmRvd191cGRhdGVfcGFyc2VyX3BhcnNlOwotICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyX2RhdGEgPSAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS53aW5kb3dfdXBkYXRlOwotICByZXR1cm4gb2s7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdF9waW5nX3BhcnNlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKLSAgaW50IG9rID0gR1JQQ19DSFRUUDJfUEFSU0VfT0sgPT0gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS5waW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MpOwotICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyID0gZ3JwY19jaHR0cDJfcGluZ19wYXJzZXJfcGFyc2U7Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnBpbmc7Ci0gIHJldHVybiBvazsKLX0KLQotc3RhdGljIGludCBpbml0X3JzdF9zdHJlYW1fcGFyc2VyKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcpIHsKLSAgaW50IG9rID0gR1JQQ19DSFRUUDJfUEFSU0VfT0sgPT0gZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnNpbXBsZS5yc3Rfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfZmxhZ3MpOwotICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtID0gZ3JwY19jaHR0cDJfcGFyc2luZ19sb29rdXBfc3RyZWFtKAotICAgICAgdHJhbnNwb3J0X3BhcnNpbmcsIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOwotICBpZiAoIXRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW0pIHsKLSAgICByZXR1cm4gaW5pdF9za2lwX2ZyYW1lX3BhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmcsIDApOwotICB9Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX3BhcnNlcl9wYXJzZTsKLSAgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhID0gJnRyYW5zcG9ydF9wYXJzaW5nLT5zaW1wbGUucnN0X3N0cmVhbTsKLSAgcmV0dXJuIG9rOwotfQotCi1zdGF0aWMgaW50IGluaXRfZ29hd2F5X3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGludCBvayA9IEdSUENfQ0hUVFAyX1BBUlNFX09LID09IGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV9wYXJzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyk7Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9nb2F3YXlfcGFyc2VyX3BhcnNlOwotICB0cmFuc3BvcnRfcGFyc2luZy0+cGFyc2VyX2RhdGEgPSAmdHJhbnNwb3J0X3BhcnNpbmctPmdvYXdheV9wYXJzZXI7Ci0gIHJldHVybiBvazsKLX0KLQotc3RhdGljIGludCBpbml0X3NldHRpbmdzX2ZyYW1lX3BhcnNlcigKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nKSB7Ci0gIGludCBvazsKLQotICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX3N0cmVhbV9pZCAhPSAwKSB7Ci0gICAgZ3ByX2xvZyhHUFJfRVJST1IsICJzZXR0aW5ncyBmcmFtZSByZWNlaXZlZCBmb3IgZ3JwY19jaHR0cDJfc3RyZWFtICVkIiwKLSAgICAgICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW1faWQpOwotICAgIHJldHVybiAwOwotICB9Ci0KLSAgb2sgPSBHUlBDX0NIVFRQMl9QQVJTRV9PSyA9PSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfYmVnaW5fZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnNldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfZnJhbWVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmctPmluY29taW5nX2ZyYW1lX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfcGFyc2luZy0+c2V0dGluZ3MpOwotICBpZiAoIW9rKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgaWYgKHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19mcmFtZV9mbGFncyAmIEdSUENfQ0hUVFAyX0ZMQUdfQUNLKSB7Ci0gICAgdHJhbnNwb3J0X3BhcnNpbmctPnNldHRpbmdzX2Fja19yZWNlaXZlZCA9IDE7Ci0gICAgZ3JwY19jaHR0cDJfaHB0Ymxfc2V0X21heF9ieXRlcygKLSAgICAgICAgJnRyYW5zcG9ydF9wYXJzaW5nLT5ocGFja19wYXJzZXIudGFibGUsCi0gICAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5sYXN0X3NlbnRfbWF4X3RhYmxlX3NpemUpOwotICB9Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXIgPSBncnBjX2NodHRwMl9zZXR0aW5nc19wYXJzZXJfcGFyc2U7Ci0gIHRyYW5zcG9ydF9wYXJzaW5nLT5wYXJzZXJfZGF0YSA9ICZ0cmFuc3BvcnRfcGFyc2luZy0+c2ltcGxlLnNldHRpbmdzOwotICByZXR1cm4gb2s7Ci19Ci0KLS8qCi1zdGF0aWMgaW50IGlzX3dpbmRvd191cGRhdGVfbGVnYWwoaW50NjRfdCB3aW5kb3dfdXBkYXRlLCBpbnQ2NF90IHdpbmRvdykgewotICByZXR1cm4gd2luZG93ICsgd2luZG93X3VwZGF0ZSA8IE1BWF9XSU5ET1c7Ci19Ci0qLwotCi1zdGF0aWMgaW50IHBhcnNlX2ZyYW1lX3NsaWNlKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSBzbGljZSwgaW50IGlzX2xhc3QpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nID0KLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbmNvbWluZ19zdHJlYW07Ci0gIHN3aXRjaCAodHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcihleGVjX2N0eCwgdHJhbnNwb3J0X3BhcnNpbmctPnBhcnNlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3BhcnNpbmcsIHN0cmVhbV9wYXJzaW5nLCBzbGljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xhc3QpKSB7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9QQVJTRV9PSzoKLSAgICAgIGlmIChzdHJlYW1fcGFyc2luZykgewotICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9wYXJzaW5nX3NlZW5fc3RyZWFtKHRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9wYXJzaW5nKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAxOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfU1RSRUFNX0VSUk9SOgotICAgICAgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoZXhlY19jdHgsIHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgICAgIGlmIChzdHJlYW1fcGFyc2luZykgewotICAgICAgICBzdHJlYW1fcGFyc2luZy0+c2F3X3JzdF9zdHJlYW0gPSAxOwotICAgICAgICBzdHJlYW1fcGFyc2luZy0+cnN0X3N0cmVhbV9yZWFzb24gPSBHUlBDX0NIVFRQMl9QUk9UT0NPTF9FUlJPUjsKLSAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCi0gICAgICAgICAgICAmdHJhbnNwb3J0X3BhcnNpbmctPnFidWYsCi0gICAgICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSh0cmFuc3BvcnRfcGFyc2luZy0+aW5jb21pbmdfc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfUFJPVE9DT0xfRVJST1IpKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAxOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfQ09OTkVDVElPTl9FUlJPUjoKLSAgICAgIHJldHVybiAwOwotICB9Ci0gIEdQUl9VTlJFQUNIQUJMRV9DT0RFKHJldHVybiAwKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2RkNjNlLi4wMDAwMDAwCi0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgiCi0KLWludCBncnBjX2NodHRwMl9ncnBjX3N0YXR1c190b19odHRwMl9lcnJvcihncnBjX3N0YXR1c19jb2RlIHN0YXR1cykgewotICBzd2l0Y2ggKHN0YXR1cykgewotICAgIGNhc2UgR1JQQ19TVEFUVVNfT0s6Ci0gICAgICByZXR1cm4gR1JQQ19DSFRUUDJfTk9fRVJST1I7Ci0gICAgY2FzZSBHUlBDX1NUQVRVU19DQU5DRUxMRUQ6Ci0gICAgICByZXR1cm4gR1JQQ19DSFRUUDJfQ0FOQ0VMOwotICAgIGNhc2UgR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOgotICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX0VOSEFOQ0VfWU9VUl9DQUxNOwotICAgIGNhc2UgR1JQQ19TVEFUVVNfUEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgICByZXR1cm4gR1JQQ19DSFRUUDJfSU5BREVRVUFURV9TRUNVUklUWTsKLSAgICBjYXNlIEdSUENfU1RBVFVTX1VOQVZBSUxBQkxFOgotICAgICAgcmV0dXJuIEdSUENfQ0hUVFAyX1JFRlVTRURfU1RSRUFNOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gR1JQQ19DSFRUUDJfSU5URVJOQUxfRVJST1I7Ci0gIH0KLX0KLQotZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9lcnJvcl90b19ncnBjX3N0YXR1cygKLSAgICBncnBjX2NodHRwMl9lcnJvcl9jb2RlIGVycm9yKSB7Ci0gIHN3aXRjaCAoZXJyb3IpIHsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX05PX0VSUk9SOgotICAgICAgLyogc2hvdWxkIG5ldmVyIGJlIHJlY2VpdmVkICovCi0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfSU5URVJOQUw7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9DQU5DRUw6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfQ0FOQ0VMTEVEOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfRU5IQU5DRV9ZT1VSX0NBTE06Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfSU5BREVRVUFURV9TRUNVUklUWToKLSAgICAgIHJldHVybiBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRDsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX1JFRlVTRURfU1RSRUFNOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOQVZBSUxBQkxFOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfSU5URVJOQUw7Ci0gIH0KLX0KLQotZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9zdGF0dXNfdG9fZ3JwY19zdGF0dXMoaW50IHN0YXR1cykgewotICBzd2l0Y2ggKHN0YXR1cykgewotICAgIC8qIHRoZXNlIEhUVFAyIHN0YXR1cyBjb2RlcyBhcmUgY2FsbGVkIG91dCBleHBsaWNpdGx5IGluIHN0YXR1cy5wcm90byAqLwotICAgIGNhc2UgMjAwOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX09LOwotICAgIGNhc2UgNDAwOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0lOVkFMSURfQVJHVU1FTlQ7Ci0gICAgY2FzZSA0MDE6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfVU5BVVRIRU5USUNBVEVEOwotICAgIGNhc2UgNDAzOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1BFUk1JU1NJT05fREVOSUVEOwotICAgIGNhc2UgNDA0OgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX05PVF9GT1VORDsKLSAgICBjYXNlIDQwOToKLSAgICAgIHJldHVybiBHUlBDX1NUQVRVU19BQk9SVEVEOwotICAgIGNhc2UgNDEyOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0ZBSUxFRF9QUkVDT05ESVRJT047Ci0gICAgY2FzZSA0Mjk6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfUkVTT1VSQ0VfRVhIQVVTVEVEOwotICAgIGNhc2UgNDk5OgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX0NBTkNFTExFRDsKLSAgICBjYXNlIDUwMDoKLSAgICAgIHJldHVybiBHUlBDX1NUQVRVU19VTktOT1dOOwotICAgIGNhc2UgNTAxOgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOSU1QTEVNRU5URUQ7Ci0gICAgY2FzZSA1MDM6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfVU5BVkFJTEFCTEU7Ci0gICAgY2FzZSA1MDQ6Ci0gICAgICByZXR1cm4gR1JQQ19TVEFUVVNfREVBRExJTkVfRVhDRUVERUQ7Ci0gICAgLyogZXZlcnl0aGluZyBlbHNlIGlzIHVua25vd24gKi8KLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIEdSUENfU1RBVFVTX1VOS05PV047Ci0gIH0KLX0KLQotaW50IGdycGNfY2h0dHAyX2dycGNfc3RhdHVzX3RvX2h0dHAyX3N0YXR1cyhncnBjX3N0YXR1c19jb2RlIHN0YXR1cykgewotICByZXR1cm4gMjAwOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTQxN2QuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpZm5kZWYgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX1NUQVRVU19DT05WRVJTSU9OX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX1NUQVRVU19DT05WRVJTSU9OX0gKLQotI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIgotCi0vKiBDb252ZXJzaW9uIG9mIGdycGMgc3RhdHVzIGNvZGVzIHRvIGh0dHAyIGVycm9yIGNvZGVzIChmb3IgUlNUX1NUUkVBTSkgKi8KLWdycGNfY2h0dHAyX2Vycm9yX2NvZGUgZ3JwY19jaHR0cDJfZ3JwY19zdGF0dXNfdG9faHR0cDJfZXJyb3IoCi0gICAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXMpOwotZ3JwY19zdGF0dXNfY29kZSBncnBjX2NodHRwMl9odHRwMl9lcnJvcl90b19ncnBjX3N0YXR1cygKLSAgICBncnBjX2NodHRwMl9lcnJvcl9jb2RlIGVycm9yKTsKLQotLyogQ29udmVyc2lvbiBvZiBIVFRQIHN0YXR1cyBjb2RlcyAoOnN0YXR1cykgdG8gZ3JwYyBzdGF0dXMgY29kZXMgKi8KLWdycGNfc3RhdHVzX2NvZGUgZ3JwY19jaHR0cDJfaHR0cDJfc3RhdHVzX3RvX2dycGNfc3RhdHVzKGludCBzdGF0dXMpOwotaW50IGdycGNfY2h0dHAyX2dycGNfc3RhdHVzX3RvX2h0dHAyX3N0YXR1cyhncnBjX3N0YXR1c19jb2RlIHN0YXR1cyk7Ci0KLSNlbmRpZiAvKiBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfU1RBVFVTX0NPTlZFUlNJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUxYTA0MS4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYworKysgL2Rldi9udWxsCkBAIC0xLDQ0MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW50ZXJuYWwuaCIKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHRnKS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbCkpKQotCi0jZGVmaW5lIFNUUkVBTV9GUk9NX0dMT0JBTChzZykgXAotICAoKGdycGNfY2h0dHAyX3N0cmVhbSAqKSgoY2hhciAqKShzZyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfc3RyZWFtLCBnbG9iYWwpKSkKLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHR3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHR3KS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcpKSkKLQotI2RlZmluZSBTVFJFQU1fRlJPTV9XUklUSU5HKHN3KSBcCi0gICgoZ3JwY19jaHR0cDJfc3RyZWFtICopKChjaGFyICopKHN3KS1vZmZzZXRvZihncnBjX2NodHRwMl9zdHJlYW0sIHdyaXRpbmcpKSkKLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHRwKS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNpbmcpKSkKLQotI2RlZmluZSBTVFJFQU1fRlJPTV9QQVJTSU5HKHNwKSBcCi0gICgoZ3JwY19jaHR0cDJfc3RyZWFtICopKChjaGFyICopKHNwKS1vZmZzZXRvZihncnBjX2NodHRwMl9zdHJlYW0sIHBhcnNpbmcpKSkKLQotLyogY29yZSBsaXN0IG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBzdHJlYW1fbGlzdF9lbXB0eShncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7Ci0gIHJldHVybiB0LT5saXN0c1tpZF0uaGVhZCA9PSBOVUxMOwotfQotCi1zdGF0aWMgaW50IHN0cmVhbV9saXN0X3BvcChncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKipzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fbGlzdF9pZCBpZCkgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPSB0LT5saXN0c1tpZF0uaGVhZDsKLSAgaWYgKHMpIHsKLSAgICBncnBjX2NodHRwMl9zdHJlYW0gKm5ld19oZWFkID0gcy0+bGlua3NbaWRdLm5leHQ7Ci0gICAgR1BSX0FTU0VSVChzLT5pbmNsdWRlZFtpZF0pOwotICAgIGlmIChuZXdfaGVhZCkgewotICAgICAgdC0+bGlzdHNbaWRdLmhlYWQgPSBuZXdfaGVhZDsKLSAgICAgIG5ld19oZWFkLT5saW5rc1tpZF0ucHJldiA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHQtPmxpc3RzW2lkXS5oZWFkID0gTlVMTDsKLSAgICAgIHQtPmxpc3RzW2lkXS50YWlsID0gTlVMTDsKLSAgICB9Ci0gICAgcy0+aW5jbHVkZWRbaWRdID0gMDsKLSAgfQotICAqc3RyZWFtID0gczsKLSAgcmV0dXJuIHMgIT0gMDsKLX0KLQotc3RhdGljIHZvaWQgc3RyZWFtX2xpc3RfcmVtb3ZlKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwgZ3JwY19jaHR0cDJfc3RyZWFtICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7Ci0gIEdQUl9BU1NFUlQocy0+aW5jbHVkZWRbaWRdKTsKLSAgcy0+aW5jbHVkZWRbaWRdID0gMDsKLSAgaWYgKHMtPmxpbmtzW2lkXS5wcmV2KSB7Ci0gICAgcy0+bGlua3NbaWRdLnByZXYtPmxpbmtzW2lkXS5uZXh0ID0gcy0+bGlua3NbaWRdLm5leHQ7Ci0gIH0gZWxzZSB7Ci0gICAgR1BSX0FTU0VSVCh0LT5saXN0c1tpZF0uaGVhZCA9PSBzKTsKLSAgICB0LT5saXN0c1tpZF0uaGVhZCA9IHMtPmxpbmtzW2lkXS5uZXh0OwotICB9Ci0gIGlmIChzLT5saW5rc1tpZF0ubmV4dCkgewotICAgIHMtPmxpbmtzW2lkXS5uZXh0LT5saW5rc1tpZF0ucHJldiA9IHMtPmxpbmtzW2lkXS5wcmV2OwotICB9IGVsc2UgewotICAgIHQtPmxpc3RzW2lkXS50YWlsID0gcy0+bGlua3NbaWRdLnByZXY7Ci0gIH0KLX0KLQotc3RhdGljIGJvb2wgc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2xpc3RfaWQgaWQpIHsKLSAgaWYgKHMtPmluY2x1ZGVkW2lkXSkgewotICAgIHN0cmVhbV9saXN0X3JlbW92ZSh0LCBzLCBpZCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHN0cmVhbV9saXN0X2FkZF90YWlsKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9saXN0X2lkIGlkKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqb2xkX3RhaWw7Ci0gIEdQUl9BU1NFUlQoIXMtPmluY2x1ZGVkW2lkXSk7Ci0gIG9sZF90YWlsID0gdC0+bGlzdHNbaWRdLnRhaWw7Ci0gIHMtPmxpbmtzW2lkXS5uZXh0ID0gTlVMTDsKLSAgcy0+bGlua3NbaWRdLnByZXYgPSBvbGRfdGFpbDsKLSAgaWYgKG9sZF90YWlsKSB7Ci0gICAgb2xkX3RhaWwtPmxpbmtzW2lkXS5uZXh0ID0gczsKLSAgfSBlbHNlIHsKLSAgICB0LT5saXN0c1tpZF0uaGVhZCA9IHM7Ci0gIH0KLSAgdC0+bGlzdHNbaWRdLnRhaWwgPSBzOwotICBzLT5pbmNsdWRlZFtpZF0gPSAxOwotfQotCi1zdGF0aWMgYm9vbCBzdHJlYW1fbGlzdF9hZGQoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LCBncnBjX2NodHRwMl9zdHJlYW0gKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2xpc3RfaWQgaWQpIHsKLSAgaWYgKHMtPmluY2x1ZGVkW2lkXSkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBzdHJlYW1fbGlzdF9hZGRfdGFpbCh0LCBzLCBpZCk7Ci0gIHJldHVybiB0cnVlOwotfQotCi0vKiB3cmFwcGVycyBmb3Igc3BlY2lhbGl6YXRpb25zICovCi0KLWJvb2wgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGFibGVfc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkICE9IDApOwotICByZXR1cm4gc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUQUJMRSk7Ci19Ci0KLWludCBncnBjX2NodHRwMl9saXN0X3BvcF93cml0YWJsZV9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKipzdHJlYW1fd3JpdGluZykgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRBQkxFKTsKLSAgaWYgKHIgIT0gMCkgewotICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOwotICAgICpzdHJlYW1fd3JpdGluZyA9ICZzdHJlYW0tPndyaXRpbmc7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLWJvb2wgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfd3JpdGFibGVfc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICByZXR1cm4gc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUQUJMRSk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZykgewotICBHUFJfQVNTRVJUKHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fV1JJVElORyhzdHJlYW1fd3JpdGluZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfV1JJVElORykpOwotfQotCi1pbnQgZ3JwY19jaHR0cDJfbGlzdF9oYXZlX3dyaXRpbmdfc3RyZWFtcygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcpIHsKLSAgcmV0dXJuICFzdHJlYW1fbGlzdF9lbXB0eShUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRJTkcpOwotfQotCi1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdGluZ19zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICoqc3RyZWFtX3dyaXRpbmcpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07Ci0gIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX1dSSVRJTkcodHJhbnNwb3J0X3dyaXRpbmcpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRJTkcpOwotICBpZiAociAhPSAwKSB7Ci0gICAgKnN0cmVhbV93cml0aW5nID0gJnN0cmVhbS0+d3JpdGluZzsKLSAgfQotICByZXR1cm4gcjsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF93cml0dGVuX3N0cmVhbSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nKSB7Ci0gIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKLSAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpLAotICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUVEVOKTsKLX0KLQotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXR0ZW5fc3RyZWFtKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICoqc3RyZWFtX3dyaXRpbmcpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07Ci0gIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX1dSSVRJTkcodHJhbnNwb3J0X3dyaXRpbmcpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dSSVRURU4pOwotICBpZiAociAhPSAwKSB7Ci0gICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7Ci0gICAgKnN0cmVhbV93cml0aW5nID0gJnN0cmVhbS0+d3JpdGluZzsKLSAgfQotICByZXR1cm4gcjsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkICE9IDApOwotICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLAotICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLAotICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9VTkFOTk9VTkNFRF9JTkNPTUlOR19XSU5ET1dfQVZBSUxBQkxFKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X3JlbW92ZV91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICBzdHJlYW1fbGlzdF9tYXliZV9yZW1vdmUoCi0gICAgICBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCi0gICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCi0gICAgICBHUlBDX0NIVFRQMl9MSVNUX1VOQU5OT1VOQ0VEX0lOQ09NSU5HX1dJTkRPV19BVkFJTEFCTEUpOwotfQotCi1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfdW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2F2YWlsYWJsZSgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9wYXJzaW5nICp0cmFuc3BvcnRfcGFyc2luZywKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqKnN0cmVhbV9wYXJzaW5nKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotICBpbnQgciA9Ci0gICAgICBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfVU5BTk5PVU5DRURfSU5DT01JTkdfV0lORE9XX0FWQUlMQUJMRSk7Ci0gIGlmIChyICE9IDApIHsKLSAgICAqc3RyZWFtX2dsb2JhbCA9ICZzdHJlYW0tPmdsb2JhbDsKLSAgICAqc3RyZWFtX3BhcnNpbmcgPSAmc3RyZWFtLT5wYXJzaW5nOwotICB9Ci0gIHJldHVybiByOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3BhcnNpbmdfc2Vlbl9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpzdHJlYW1fcGFyc2luZykgewotICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyksCi0gICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9QQVJTSU5HKHN0cmVhbV9wYXJzaW5nKSwKLSAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfUEFSU0lOR19TRUVOKTsKLX0KLQotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3BhcnNpbmdfc2Vlbl9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKipzdHJlYW1fcGFyc2luZykgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fUEFSU0lORyh0cmFuc3BvcnRfcGFyc2luZyksICZzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfUEFSU0lOR19TRUVOKTsKLSAgaWYgKHIgIT0gMCkgewotICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOwotICAgICpzdHJlYW1fcGFyc2luZyA9ICZzdHJlYW0tPnBhcnNpbmc7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd2FpdGluZ19mb3JfY29uY3VycmVuY3koCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7Ci0gIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1dBSVRJTkdfRk9SX0NPTkNVUlJFTkNZKTsKLX0KLQotaW50IGdycGNfY2h0dHAyX2xpc3RfcG9wX3dhaXRpbmdfZm9yX2NvbmN1cnJlbmN5KAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqKnN0cmVhbV9nbG9iYWwpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07Ci0gIGludCByID0gc3RyZWFtX2xpc3RfcG9wKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwgJnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XQUlUSU5HX0ZPUl9DT05DVVJSRU5DWSk7Ci0gIGlmIChyICE9IDApIHsKLSAgICAqc3RyZWFtX2dsb2JhbCA9ICZzdHJlYW0tPmdsb2JhbDsKLSAgfQotICByZXR1cm4gcjsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKLSAgc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0hFQ0tfUkVBRF9PUFMpOwotfQotCi1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2hlY2tfcmVhZF9vcHMoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCkgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX0NIRUNLX1JFQURfT1BTKTsKLSAgaWYgKHIgIT0gMCkgewotICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOwotICB9Ci0gIHJldHVybiByOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZykgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbSA9IFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpOwotICBpZiAoIXN0cmVhbS0+aW5jbHVkZWRbR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HX1NUQUxMRURfQllfVFJBTlNQT1JUXSkgewotICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoJnN0cmVhbS0+Z2xvYmFsLCAiY2h0dHAyX3dyaXRpbmdfc3RhbGxlZCIpOwotICB9Ci0gIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwgc3RyZWFtLAotICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9XUklUSU5HX1NUQUxMRURfQllfVFJBTlNQT1JUKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2ZsdXNoX3dyaXRpbmdfc3RhbGxlZF9ieV90cmFuc3BvcnQoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZywKLSAgICBib29sIGlzX3dpbmRvd19hdmFpbGFibGUpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzdHJlYW07Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gVFJBTlNQT1JUX0ZST01fV1JJVElORyh0cmFuc3BvcnRfd3JpdGluZyk7Ci0gIHdoaWxlIChzdHJlYW1fbGlzdF9wb3AodHJhbnNwb3J0LCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfV1JJVElOR19TVEFMTEVEX0JZX1RSQU5TUE9SVCkpIHsKLSAgICBpZiAoaXNfd2luZG93X2F2YWlsYWJsZSkgewotICAgICAgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKCZ0cmFuc3BvcnQtPmdsb2JhbCwgJnN0cmVhbS0+Z2xvYmFsKTsKLSAgICB9IGVsc2UgewotICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfc3RhbGxlZF9ieV90cmFuc3BvcnQodHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtLT53cml0aW5nKTsKLSAgICB9Ci0gICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCAmc3RyZWFtLT5nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaHR0cDJfd3JpdGluZ19zdGFsbGVkIik7Ci0gIH0KLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9zdGFsbGVkX2J5X3RyYW5zcG9ydCgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3dyaXRpbmcgKnN0cmVhbV93cml0aW5nKSB7Ci0gIHN0cmVhbV9saXN0X2FkZChUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKSwKLSAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX1dSSVRJTkcoc3RyZWFtX3dyaXRpbmcpLAotICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9TVEFMTEVEX0JZX1RSQU5TUE9SVCk7Ci19Ci0KLWludCBncnBjX2NodHRwMl9saXN0X3BvcF9zdGFsbGVkX2J5X3RyYW5zcG9ydCgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotICBpbnQgciA9IHN0cmVhbV9saXN0X3BvcChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksICZzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfU1RBTExFRF9CWV9UUkFOU1BPUlQpOwotICBpZiAociAhPSAwKSB7Ci0gICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfc3RhbGxlZF9ieV90cmFuc3BvcnQoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7Ci0gIHN0cmVhbV9saXN0X21heWJlX3JlbW92ZShUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX1NUQUxMRURfQllfVFJBTlNQT1JUKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKLSAgc3RyZWFtX2xpc3RfYWRkKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1BBUlNJTkcpOwotfQotCi1pbnQgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2xvc2VkX3dhaXRpbmdfZm9yX3BhcnNpbmcoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICoqc3RyZWFtX2dsb2JhbCkgewotICBncnBjX2NodHRwMl9zdHJlYW0gKnN0cmVhbTsKLSAgaW50IHIgPSBzdHJlYW1fbGlzdF9wb3AoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLCAmc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIVFRQMl9MSVNUX0NMT1NFRF9XQUlUSU5HX0ZPUl9QQVJTSU5HKTsKLSAgaWYgKHIgIT0gMCkgewotICAgICpzdHJlYW1fZ2xvYmFsID0gJnN0cmVhbS0+Z2xvYmFsOwotICB9Ci0gIHJldHVybiByOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2xpc3RfYWRkX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICBzdHJlYW1fbGlzdF9hZGQoVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLAotICAgICAgICAgICAgICAgICAgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLAotICAgICAgICAgICAgICAgICAgR1JQQ19DSFRUUDJfTElTVF9DTE9TRURfV0FJVElOR19GT1JfV1JJVElORyk7Ci19Ci0KLWludCBncnBjX2NodHRwMl9saXN0X3BvcF9jbG9zZWRfd2FpdGluZ19mb3Jfd3JpdGluZygKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKipzdHJlYW1fZ2xvYmFsKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqc3RyZWFtOwotICBpbnQgciA9IHN0cmVhbV9saXN0X3BvcChUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCksICZzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0xJU1RfQ0xPU0VEX1dBSVRJTkdfRk9SX1dSSVRJTkcpOwotICBpZiAociAhPSAwKSB7Ci0gICAgKnN0cmVhbV9nbG9iYWwgPSAmc3RyZWFtLT5nbG9iYWw7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfcmVnaXN0ZXJfc3RyZWFtKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbSAqcykgewotICBzdHJlYW1fbGlzdF9hZGRfdGFpbCh0LCBzLCBHUlBDX0NIVFRQMl9MSVNUX0FMTF9TVFJFQU1TKTsKLX0KLQotaW50IGdycGNfY2h0dHAyX3VucmVnaXN0ZXJfc3RyZWFtKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW0gKnMpIHsKLSAgc3RyZWFtX2xpc3RfbWF5YmVfcmVtb3ZlKHQsIHMsIEdSUENfQ0hUVFAyX0xJU1RfQUxMX1NUUkVBTVMpOwotICByZXR1cm4gc3RyZWFtX2xpc3RfZW1wdHkodCwgR1JQQ19DSFRUUDJfTElTVF9BTExfU1RSRUFNUyk7Ci19Ci0KLWludCBncnBjX2NodHRwMl9oYXNfc3RyZWFtcyhncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKLSAgcmV0dXJuICFzdHJlYW1fbGlzdF9lbXB0eSh0LCBHUlBDX0NIVFRQMl9MSVNUX0FMTF9TVFJFQU1TKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9mb3JfYWxsX3N0cmVhbXMoCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAotICAgIHZvaWQgKCpjYikoZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwgdm9pZCAqdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzOwotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCk7Ci0gIGZvciAocyA9IHQtPmxpc3RzW0dSUENfQ0hUVFAyX0xJU1RfQUxMX1NUUkVBTVNdLmhlYWQ7IHMgIT0gTlVMTDsKLSAgICAgICBzID0gcy0+bGlua3NbR1JQQ19DSFRUUDJfTElTVF9BTExfU1RSRUFNU10ubmV4dCkgewotICAgIGNiKHRyYW5zcG9ydF9nbG9iYWwsIHVzZXJfZGF0YSwgJnMtPmdsb2JhbCk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiYmU3OC4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KLQotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2luaXQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluaXRpYWxfY2FwYWNpdHkpIHsKLSAgR1BSX0FTU0VSVChpbml0aWFsX2NhcGFjaXR5ID4gMSk7Ci0gIG1hcC0+a2V5cyA9IGdwcl9tYWxsb2Moc2l6ZW9mKHVpbnQzMl90KSAqIGluaXRpYWxfY2FwYWNpdHkpOwotICBtYXAtPnZhbHVlcyA9IGdwcl9tYWxsb2Moc2l6ZW9mKHZvaWQgKikgKiBpbml0aWFsX2NhcGFjaXR5KTsKLSAgbWFwLT5jb3VudCA9IDA7Ci0gIG1hcC0+ZnJlZSA9IDA7Ci0gIG1hcC0+Y2FwYWNpdHkgPSBpbml0aWFsX2NhcGFjaXR5OwotfQotCi12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVzdHJveShncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXApIHsKLSAgZ3ByX2ZyZWUobWFwLT5rZXlzKTsKLSAgZ3ByX2ZyZWUobWFwLT52YWx1ZXMpOwotfQotCi1zdGF0aWMgc2l6ZV90IGNvbXBhY3QodWludDMyX3QgKmtleXMsIHZvaWQgKip2YWx1ZXMsIHNpemVfdCBjb3VudCkgewotICBzaXplX3QgaSwgb3V0OwotCi0gIGZvciAoaSA9IDAsIG91dCA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgaWYgKHZhbHVlc1tpXSkgewotICAgICAga2V5c1tvdXRdID0ga2V5c1tpXTsKLSAgICAgIHZhbHVlc1tvdXRdID0gdmFsdWVzW2ldOwotICAgICAgb3V0Kys7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIG91dDsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2FkZChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsIHVpbnQzMl90IGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWUpIHsKLSAgc2l6ZV90IGNvdW50ID0gbWFwLT5jb3VudDsKLSAgc2l6ZV90IGNhcGFjaXR5ID0gbWFwLT5jYXBhY2l0eTsKLSAgdWludDMyX3QgKmtleXMgPSBtYXAtPmtleXM7Ci0gIHZvaWQgKip2YWx1ZXMgPSBtYXAtPnZhbHVlczsKLQotICBHUFJfQVNTRVJUKGNvdW50ID09IDAgfHwga2V5c1tjb3VudCAtIDFdIDwga2V5KTsKLSAgR1BSX0FTU0VSVCh2YWx1ZSk7Ci0KLSAgaWYgKGNvdW50ID09IGNhcGFjaXR5KSB7Ci0gICAgaWYgKG1hcC0+ZnJlZSA+IGNhcGFjaXR5IC8gNCkgewotICAgICAgY291bnQgPSBjb21wYWN0KGtleXMsIHZhbHVlcywgY291bnQpOwotICAgICAgbWFwLT5mcmVlID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgLyogcmVzaXplIHdoZW4gbGVzcyB0aGFuIDI1JSBvZiB0aGUgdGFibGUgaXMgZnJlZSwgYmVjYXVzZSBjb21wYWN0aW9uCi0gICAgICAgICB3b24ndCBoZWxwIG11Y2ggKi8KLSAgICAgIG1hcC0+Y2FwYWNpdHkgPSBjYXBhY2l0eSA9IDMgKiBjYXBhY2l0eSAvIDI7Ci0gICAgICBtYXAtPmtleXMgPSBrZXlzID0gZ3ByX3JlYWxsb2Moa2V5cywgY2FwYWNpdHkgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgIG1hcC0+dmFsdWVzID0gdmFsdWVzID0gZ3ByX3JlYWxsb2ModmFsdWVzLCBjYXBhY2l0eSAqIHNpemVvZih2b2lkICopKTsKLSAgICB9Ci0gIH0KLQotICBrZXlzW2NvdW50XSA9IGtleTsKLSAgdmFsdWVzW2NvdW50XSA9IHZhbHVlOwotICBtYXAtPmNvdW50ID0gY291bnQgKyAxOwotfQotCi12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfbW92ZV9pbnRvKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKnNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqZHN0KSB7Ci0gIC8qIGlmIHNyYyBpcyBlbXB0eSB3ZSBkb250IG5lZWQgdG8gZG8gYW55dGhpbmcgKi8KLSAgaWYgKHNyYy0+Y291bnQgPT0gc3JjLT5mcmVlKSB7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8qIGlmIGRzdCBpcyBlbXB0eSB3ZSBzaW1wbHkgbmVlZCB0byBzd2FwICovCi0gIGlmIChkc3QtPmNvdW50ID09IGRzdC0+ZnJlZSkgewotICAgIEdQUl9TV0FQKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAsICpzcmMsICpkc3QpOwotICAgIHJldHVybjsKLSAgfQotICAvKiB0aGUgZmlyc3QgZWxlbWVudCBvZiBzcmMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxhc3Qgb2YgZHN0Li4uCi0gICAqIGhvd2V2ZXIgdGhlIG1hcHMgbWF5IG5lZWQgY29tcGFjdGluZyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBob2xkICovCi0gIGlmIChzcmMtPmtleXNbMF0gPD0gZHN0LT5rZXlzW2RzdC0+Y291bnQgLSAxXSkgewotICAgIHNyYy0+Y291bnQgPSBjb21wYWN0KHNyYy0+a2V5cywgc3JjLT52YWx1ZXMsIHNyYy0+Y291bnQpOwotICAgIHNyYy0+ZnJlZSA9IDA7Ci0gICAgZHN0LT5jb3VudCA9IGNvbXBhY3QoZHN0LT5rZXlzLCBkc3QtPnZhbHVlcywgZHN0LT5jb3VudCk7Ci0gICAgZHN0LT5mcmVlID0gMDsKLSAgfQotICBHUFJfQVNTRVJUKHNyYy0+a2V5c1swXSA+IGRzdC0+a2V5c1tkc3QtPmNvdW50IC0gMV0pOwotICAvKiBpZiBkc3QgZG9lc24ndCBoYXZlIGNhcGFjaXR5LCByZXNpemUgKi8KLSAgaWYgKGRzdC0+Y291bnQgKyBzcmMtPmNvdW50ID4gZHN0LT5jYXBhY2l0eSkgewotICAgIGRzdC0+Y2FwYWNpdHkgPSBHUFJfTUFYKGRzdC0+Y2FwYWNpdHkgKiAzIC8gMiwgZHN0LT5jb3VudCArIHNyYy0+Y291bnQpOwotICAgIGRzdC0+a2V5cyA9IGdwcl9yZWFsbG9jKGRzdC0+a2V5cywgZHN0LT5jYXBhY2l0eSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgIGRzdC0+dmFsdWVzID0gZ3ByX3JlYWxsb2MoZHN0LT52YWx1ZXMsIGRzdC0+Y2FwYWNpdHkgKiBzaXplb2Yodm9pZCAqKSk7Ci0gIH0KLSAgbWVtY3B5KGRzdC0+a2V5cyArIGRzdC0+Y291bnQsIHNyYy0+a2V5cywgc3JjLT5jb3VudCAqIHNpemVvZih1aW50MzJfdCkpOwotICBtZW1jcHkoZHN0LT52YWx1ZXMgKyBkc3QtPmNvdW50LCBzcmMtPnZhbHVlcywgc3JjLT5jb3VudCAqIHNpemVvZih2b2lkICopKTsKLSAgZHN0LT5jb3VudCArPSBzcmMtPmNvdW50OwotICBkc3QtPmZyZWUgKz0gc3JjLT5mcmVlOwotICBzcmMtPmNvdW50ID0gMDsKLSAgc3JjLT5mcmVlID0gMDsKLX0KLQotc3RhdGljIHZvaWQgKipmaW5kKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KSB7Ci0gIHNpemVfdCBtaW5faWR4ID0gMDsKLSAgc2l6ZV90IG1heF9pZHggPSBtYXAtPmNvdW50OwotICBzaXplX3QgbWlkX2lkeDsKLSAgdWludDMyX3QgKmtleXMgPSBtYXAtPmtleXM7Ci0gIHZvaWQgKip2YWx1ZXMgPSBtYXAtPnZhbHVlczsKLSAgdWludDMyX3QgbWlkX2tleTsKLQotICBpZiAobWF4X2lkeCA9PSAwKSByZXR1cm4gTlVMTDsKLQotICB3aGlsZSAobWluX2lkeCA8IG1heF9pZHgpIHsKLSAgICAvKiBmaW5kIHRoZSBtaWRwb2ludCwgYXZvaWRpbmcgb3ZlcmZsb3cgKi8KLSAgICBtaWRfaWR4ID0gbWluX2lkeCArICgobWF4X2lkeCAtIG1pbl9pZHgpIC8gMik7Ci0gICAgbWlkX2tleSA9IGtleXNbbWlkX2lkeF07Ci0KLSAgICBpZiAobWlkX2tleSA8IGtleSkgewotICAgICAgbWluX2lkeCA9IG1pZF9pZHggKyAxOwotICAgIH0gZWxzZSBpZiAobWlkX2tleSA+IGtleSkgewotICAgICAgbWF4X2lkeCA9IG1pZF9pZHg7Ci0gICAgfSBlbHNlIC8qIG1pZF9rZXkgPT0ga2V5ICovCi0gICAgewotICAgICAgcmV0dXJuICZ2YWx1ZXNbbWlkX2lkeF07Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLXZvaWQgKmdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVsZXRlKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5KSB7Ci0gIHZvaWQgKipwdmFsdWUgPSBmaW5kKG1hcCwga2V5KTsKLSAgdm9pZCAqb3V0ID0gTlVMTDsKLSAgaWYgKHB2YWx1ZSAhPSBOVUxMKSB7Ci0gICAgb3V0ID0gKnB2YWx1ZTsKLSAgICAqcHZhbHVlID0gTlVMTDsKLSAgICBtYXAtPmZyZWUgKz0gKG91dCAhPSBOVUxMKTsKLSAgICAvKiByZWNvZ25pemUgY29tcGxldGUgZW1wdHluZXNzIGFuZCBlbnN1cmUgd2UgY2FuIHNraXAKLSAgICAgKiBkZWZyYWdtZW50YXRpb24gbGF0ZXIgKi8KLSAgICBpZiAobWFwLT5mcmVlID09IG1hcC0+Y291bnQpIHsKLSAgICAgIG1hcC0+ZnJlZSA9IG1hcC0+Y291bnQgPSAwOwotICAgIH0KLSAgfQotICByZXR1cm4gb3V0OwotfQotCi12b2lkICpncnBjX2NodHRwMl9zdHJlYW1fbWFwX2ZpbmQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLCB1aW50MzJfdCBrZXkpIHsKLSAgdm9pZCAqKnB2YWx1ZSA9IGZpbmQobWFwLCBrZXkpOwotICByZXR1cm4gcHZhbHVlICE9IE5VTEwgPyAqcHZhbHVlIDogTlVMTDsKLX0KLQotc2l6ZV90IGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZShncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXApIHsKLSAgcmV0dXJuIG1hcC0+Y291bnQgLSBtYXAtPmZyZWU7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9mb3JfZWFjaChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmYpKHZvaWQgKnVzZXJfZGF0YSwgdWludDMyX3Qga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKSB7Ci0gIHNpemVfdCBpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBtYXAtPmNvdW50OyBpKyspIHsKLSAgICBpZiAobWFwLT52YWx1ZXNbaV0pIHsKLSAgICAgIGYodXNlcl9kYXRhLCBtYXAtPmtleXNbaV0sIG1hcC0+dmFsdWVzW2ldKTsKLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1NmIxOC4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9TVFJFQU1fTUFQX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX1NUUkVBTV9NQVBfSAotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi0vKiBEYXRhIHN0cnVjdHVyZSB0byBtYXAgYSB1aW50MzJfdCB0byBhIGRhdGEgb2JqZWN0IChyZXByZXNlbnRlZCBieSBhIHZvaWQqKQotCi0gICBSZXByZXNlbnRlZCBhcyBhIHNvcnRlZCBhcnJheSBvZiBrZXlzLCBhbmQgYSBjb3JyZXNwb25kaW5nIGFycmF5IG9mIHZhbHVlcy4KLSAgIExvb2t1cHMgYXJlIHBlcmZvcm1lZCB3aXRoIGJpbmFyeSBzZWFyY2guCi0gICBBZGRzIGFyZSByZXN0cmljdGVkIHRvIHN0cmljdGx5IGhpZ2hlciBrZXlzIHRoYW4gcHJldmlvdXNseSBzZWVuICh0aGlzIGlzCi0gICBndWFyYW50ZWVkIGJ5IGh0dHAyKS4gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgdWludDMyX3QgKmtleXM7Ci0gIHZvaWQgKip2YWx1ZXM7Ci0gIHNpemVfdCBjb3VudDsKLSAgc2l6ZV90IGZyZWU7Ci0gIHNpemVfdCBjYXBhY2l0eTsKLX0gZ3JwY19jaHR0cDJfc3RyZWFtX21hcDsKLQotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2luaXQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluaXRpYWxfY2FwYWNpdHkpOwotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2Rlc3Ryb3koZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwKTsKLQotLyogQWRkIGEgbmV3IGtleTogZ2l2ZW4gaHR0cDIgc2VtYW50aWNzLCBuZXcga2V5cyBtdXN0IGFsd2F5cyBiZSBncmVhdGVyIHRoYW4KLSAgIGV4aXN0aW5nIGtleXMgLSB0aGlzIGlzIGFzc2VydGVkICovCi12b2lkIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfYWRkKGdycGNfY2h0dHAyX3N0cmVhbV9tYXAgKm1hcCwgdWludDMyX3Qga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSk7Ci0KLS8qIERlbGV0ZSBhbiBleGlzdGluZyBrZXkgLSByZXR1cm5zIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiB0aGUga2V5IGlmIGl0IGV4aXN0ZWQsCi0gICBvciBOVUxMIG90aGVyd2lzZSAqLwotdm9pZCAqZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9kZWxldGUoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLCB1aW50MzJfdCBrZXkpOwotCi0vKiBNb3ZlIGFsbCBlbGVtZW50cyBvZiBzcmMgaW50byBkc3QgKi8KLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9tb3ZlX2ludG8oZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fbWFwICpkc3QpOwotCi0vKiBSZXR1cm4gYW4gZXhpc3Rpbmcga2V5LCBvciBOVUxMIGlmIGl0IGRvZXMgbm90IGV4aXN0ICovCi12b2lkICpncnBjX2NodHRwMl9zdHJlYW1fbWFwX2ZpbmQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwLCB1aW50MzJfdCBrZXkpOwotCi0vKiBIb3cgbWFueSAocG9wdWxhdGVkKSBlbnRyaWVzIGFyZSBpbiB0aGUgc3RyZWFtIG1hcD8gKi8KLXNpemVfdCBncnBjX2NodHRwMl9zdHJlYW1fbWFwX3NpemUoZ3JwY19jaHR0cDJfc3RyZWFtX21hcCAqbWFwKTsKLQotLyogQ2FsbGJhY2sgb24gZWFjaCBzdHJlYW0gKi8KLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9mb3JfZWFjaChncnBjX2NodHRwMl9zdHJlYW1fbWFwICptYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmYpKHZvaWQgKnVzZXJfZGF0YSwgdWludDMyX3Qga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9TVFJFQU1fTUFQX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkYWNhYS4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgotCi1zdGF0aWMgaW50NjRfdCByb3VuZF91cChpbnQ2NF90IHgsIGludDY0X3QgZGl2aXNvcikgewotICByZXR1cm4gKHggLyBkaXZpc29yICsgKHggJSBkaXZpc29yICE9IDApKSAqIGRpdmlzb3I7Ci19Ci0KLS8qIHJvdW5kIGFuIGludGVnZXIgdXAgdG8gdGhlIG5leHQgdmFsdWUgd2l0aCB0aHJlZSBzaWduaWZpY2FudCBmaWd1cmVzICovCi1zdGF0aWMgaW50NjRfdCByb3VuZF91cF90b190aHJlZV9zaWdfZmlncyhpbnQ2NF90IHgpIHsKLSAgaWYgKHggPCAxMDAwKSByZXR1cm4geDsKLSAgaWYgKHggPCAxMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwKTsKLSAgaWYgKHggPCAxMDAwMDApIHJldHVybiByb3VuZF91cCh4LCAxMDApOwotICBpZiAoeCA8IDEwMDAwMDApIHJldHVybiByb3VuZF91cCh4LCAxMDAwKTsKLSAgaWYgKHggPCAxMDAwMDAwMCkgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMDAwKTsKLSAgaWYgKHggPCAxMDAwMDAwMDApIHJldHVybiByb3VuZF91cCh4LCAxMDAwMDApOwotICBpZiAoeCA8IDEwMDAwMDAwMDApIHJldHVybiByb3VuZF91cCh4LCAxMDAwMDAwKTsKLSAgcmV0dXJuIHJvdW5kX3VwKHgsIDEwMDAwMDAwKTsKLX0KLQotLyogZW5jb2RlIG91ciBtaW5pbXVtIHZpYWJsZSB0aW1lb3V0IHZhbHVlICovCi1zdGF0aWMgdm9pZCBlbmNfdGlueShjaGFyICpidWZmZXIpIHsgbWVtY3B5KGJ1ZmZlciwgIjFuIiwgMyk7IH0KLQotc3RhdGljIHZvaWQgZW5jX2V4dChjaGFyICpidWZmZXIsIGludDY0X3QgdmFsdWUsIGNoYXIgZXh0KSB7Ci0gIGludCBuID0gaW50NjRfdHRvYSh2YWx1ZSwgYnVmZmVyKTsKLSAgYnVmZmVyW25dID0gZXh0OwotICBidWZmZXJbbiArIDFdID0gMDsKLX0KLQotc3RhdGljIHZvaWQgZW5jX3NlY29uZHMoY2hhciAqYnVmZmVyLCBpbnQ2NF90IHNlYykgewotICBpZiAoc2VjICUgMzYwMCA9PSAwKSB7Ci0gICAgZW5jX2V4dChidWZmZXIsIHNlYyAvIDM2MDAsICdIJyk7Ci0gIH0gZWxzZSBpZiAoc2VjICUgNjAgPT0gMCkgewotICAgIGVuY19leHQoYnVmZmVyLCBzZWMgLyA2MCwgJ00nKTsKLSAgfSBlbHNlIHsKLSAgICBlbmNfZXh0KGJ1ZmZlciwgc2VjLCAnUycpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGVuY19uYW5vcyhjaGFyICpidWZmZXIsIGludDY0X3QgeCkgewotICB4ID0gcm91bmRfdXBfdG9fdGhyZWVfc2lnX2ZpZ3MoeCk7Ci0gIGlmICh4IDwgMTAwMDAwKSB7Ci0gICAgaWYgKHggJSAxMDAwID09IDApIHsKLSAgICAgIGVuY19leHQoYnVmZmVyLCB4IC8gMTAwMCwgJ3UnKTsKLSAgICB9IGVsc2UgewotICAgICAgZW5jX2V4dChidWZmZXIsIHgsICduJyk7Ci0gICAgfQotICB9IGVsc2UgaWYgKHggPCAxMDAwMDAwMDApIHsKLSAgICBpZiAoeCAlIDEwMDAwMDAgPT0gMCkgewotICAgICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwMDAwLCAnbScpOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbmNfZXh0KGJ1ZmZlciwgeCAvIDEwMDAsICd1Jyk7Ci0gICAgfQotICB9IGVsc2UgaWYgKHggPCAxMDAwMDAwMDAwKSB7Ci0gICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwMDAwLCAnbScpOwotICB9IGVsc2UgewotICAgIC8qIG5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgZXZlciBjYWxsZWQgd2l0aCB0aW1lcyBvZiBsZXNzIHRoYW4gb25lIHNlY29uZCwKLSAgICAgICBzbyBpZiB3ZSByZWFjaCBoZXJlIHRoZSB0aW1lIG11c3QgaGF2ZSBiZWVuIHJvdW5kZWQgdXAgdG8gYSB3aG9sZSBzZWNvbmQKLSAgICAgICAoYW5kIG5vIG1vcmUpICovCi0gICAgbWVtY3B5KGJ1ZmZlciwgIjFTIiwgMyk7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgZW5jX21pY3JvcyhjaGFyICpidWZmZXIsIGludDY0X3QgeCkgewotICB4ID0gcm91bmRfdXBfdG9fdGhyZWVfc2lnX2ZpZ3MoeCk7Ci0gIGlmICh4IDwgMTAwMDAwKSB7Ci0gICAgaWYgKHggJSAxMDAwID09IDApIHsKLSAgICAgIGVuY19leHQoYnVmZmVyLCB4IC8gMTAwMCwgJ20nKTsKLSAgICB9IGVsc2UgewotICAgICAgZW5jX2V4dChidWZmZXIsIHgsICd1Jyk7Ci0gICAgfQotICB9IGVsc2UgaWYgKHggPCAxMDAwMDAwMDApIHsKLSAgICBpZiAoeCAlIDEwMDAwMDAgPT0gMCkgewotICAgICAgZW5jX2V4dChidWZmZXIsIHggLyAxMDAwMDAwLCAnUycpOwotICAgIH0gZWxzZSB7Ci0gICAgICBlbmNfZXh0KGJ1ZmZlciwgeCAvIDEwMDAsICdtJyk7Ci0gICAgfQotICB9IGVsc2UgewotICAgIGVuY19leHQoYnVmZmVyLCB4IC8gMTAwMDAwMCwgJ1MnKTsKLSAgfQotfQotCi12b2lkIGdycGNfY2h0dHAyX2VuY29kZV90aW1lb3V0KGdwcl90aW1lc3BlYyB0aW1lb3V0LCBjaGFyICpidWZmZXIpIHsKLSAgaWYgKHRpbWVvdXQudHZfc2VjIDwgMCkgewotICAgIGVuY190aW55KGJ1ZmZlcik7Ci0gIH0gZWxzZSBpZiAodGltZW91dC50dl9zZWMgPT0gMCkgewotICAgIGVuY19uYW5vcyhidWZmZXIsIHRpbWVvdXQudHZfbnNlYyk7Ci0gIH0gZWxzZSBpZiAodGltZW91dC50dl9zZWMgPCAxMDAwICYmIHRpbWVvdXQudHZfbnNlYyAhPSAwKSB7Ci0gICAgZW5jX21pY3JvcyhidWZmZXIsCi0gICAgICAgICAgICAgICAoaW50NjRfdCkodGltZW91dC50dl9zZWMgKiAxMDAwMDAwKSArCi0gICAgICAgICAgICAgICAgICAgKHRpbWVvdXQudHZfbnNlYyAvIDEwMDAgKyAodGltZW91dC50dl9uc2VjICUgMTAwMCAhPSAwKSkpOwotICB9IGVsc2UgewotICAgIGVuY19zZWNvbmRzKGJ1ZmZlciwgdGltZW91dC50dl9zZWMgKyAodGltZW91dC50dl9uc2VjICE9IDApKTsKLSAgfQotfQotCi1zdGF0aWMgaW50IGlzX2FsbF93aGl0ZXNwYWNlKGNvbnN0IGNoYXIgKnApIHsKLSAgd2hpbGUgKCpwID09ICcgJykgcCsrOwotICByZXR1cm4gKnAgPT0gMDsKLX0KLQotaW50IGdycGNfY2h0dHAyX2RlY29kZV90aW1lb3V0KGNvbnN0IGNoYXIgKmJ1ZmZlciwgZ3ByX3RpbWVzcGVjICp0aW1lb3V0KSB7Ci0gIGludDMyX3QgeCA9IDA7Ci0gIGNvbnN0IHVpbnQ4X3QgKnAgPSAoY29uc3QgdWludDhfdCAqKWJ1ZmZlcjsKLSAgaW50IGhhdmVfZGlnaXQgPSAwOwotICAvKiBza2lwIHdoaXRlc3BhY2UgKi8KLSAgZm9yICg7ICpwID09ICcgJzsgcCsrKQotICAgIDsKLSAgLyogZGVjb2RlIG51bWVyaWMgcGFydCAqLwotICBmb3IgKDsgKnAgPj0gJzAnICYmICpwIDw9ICc5JzsgcCsrKSB7Ci0gICAgaW50MzJfdCBkaWdpdCA9IChpbnQzMl90KSgqcCAtICh1aW50OF90KScwJyk7Ci0gICAgaGF2ZV9kaWdpdCA9IDE7Ci0gICAgLyogc3BlYyBhbGxvd3MgbWF4LiA4IGRpZ2l0cywgYnV0IHdlIGFsbG93IHZhbHVlcyB1cCB0byAxLDAwMCwwMDAsMDAwICovCi0gICAgaWYgKHggPj0gKDEwMCAqIDEwMDAgKiAxMDAwKSkgewotICAgICAgaWYgKHggIT0gKDEwMCAqIDEwMDAgKiAxMDAwKSB8fCBkaWdpdCAhPSAwKSB7Ci0gICAgICAgICp0aW1lb3V0ID0gZ3ByX2luZl9mdXR1cmUoR1BSX1RJTUVTUEFOKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgfQotICAgIHggPSB4ICogMTAgKyBkaWdpdDsKLSAgfQotICBpZiAoIWhhdmVfZGlnaXQpIHJldHVybiAwOwotICAvKiBza2lwIHdoaXRlc3BhY2UgKi8KLSAgZm9yICg7ICpwID09ICcgJzsgcCsrKQotICAgIDsKLSAgLyogZGVjb2RlIHVuaXQgc3BlY2lmaWVyICovCi0gIHN3aXRjaCAoKnApIHsKLSAgICBjYXNlICduJzoKLSAgICAgICp0aW1lb3V0ID0gZ3ByX3RpbWVfZnJvbV9uYW5vcyh4LCBHUFJfVElNRVNQQU4pOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAndSc6Ci0gICAgICAqdGltZW91dCA9IGdwcl90aW1lX2Zyb21fbWljcm9zKHgsIEdQUl9USU1FU1BBTik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdtJzoKLSAgICAgICp0aW1lb3V0ID0gZ3ByX3RpbWVfZnJvbV9taWxsaXMoeCwgR1BSX1RJTUVTUEFOKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1MnOgotICAgICAgKnRpbWVvdXQgPSBncHJfdGltZV9mcm9tX3NlY29uZHMoeCwgR1BSX1RJTUVTUEFOKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ00nOgotICAgICAgKnRpbWVvdXQgPSBncHJfdGltZV9mcm9tX21pbnV0ZXMoeCwgR1BSX1RJTUVTUEFOKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ0gnOgotICAgICAgKnRpbWVvdXQgPSBncHJfdGltZV9mcm9tX2hvdXJzKHgsIEdQUl9USU1FU1BBTik7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgcCsrOwotICByZXR1cm4gaXNfYWxsX3doaXRlc3BhY2UoKGNvbnN0IGNoYXIgKilwKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMxYmViNS4uMDAwMDAwMAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9USU1FT1VUX0VOQ09ESU5HX0gKLSNkZWZpbmUgR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX1RJTUVPVVRfRU5DT0RJTkdfSAotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9zdHJpbmcuaCIKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9USU1FT1VUX0VOQ09ERV9NSU5fQlVGU0laRSAoR1BSX0xUT0FfTUlOX0JVRlNJWkUgKyAxKQotCi0vKiBFbmNvZGUvZGVjb2RlIHRpbWVvdXRzIHRvIHRoZSBHUlBDIG92ZXIgSFRUUDIgZm9ybWF0OwotICAgZW5jb2RpbmcgbWF5IHJvdW5kIHVwIGFyYml0cmFyaWx5ICovCi12b2lkIGdycGNfY2h0dHAyX2VuY29kZV90aW1lb3V0KGdwcl90aW1lc3BlYyB0aW1lb3V0LCBjaGFyICpidWZmZXIpOwotaW50IGdycGNfY2h0dHAyX2RlY29kZV90aW1lb3V0KGNvbnN0IGNoYXIgKmJ1ZmZlciwgZ3ByX3RpbWVzcGVjICp0aW1lb3V0KTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9USU1FT1VUX0VOQ09ESU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmVmNDUuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiCi0KLXVpbnQzMl90IGdycGNfY2h0dHAyX2hwYWNrX3ZhcmludF9sZW5ndGgodWludDMyX3QgdGFpbF92YWx1ZSkgewotICBpZiAodGFpbF92YWx1ZSA8ICgxIDw8IDcpKSB7Ci0gICAgcmV0dXJuIDI7Ci0gIH0gZWxzZSBpZiAodGFpbF92YWx1ZSA8ICgxIDw8IDE0KSkgewotICAgIHJldHVybiAzOwotICB9IGVsc2UgaWYgKHRhaWxfdmFsdWUgPCAoMSA8PCAyMSkpIHsKLSAgICByZXR1cm4gNDsKLSAgfSBlbHNlIGlmICh0YWlsX3ZhbHVlIDwgKDEgPDwgMjgpKSB7Ci0gICAgcmV0dXJuIDU7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDY7Ci0gIH0KLX0KLQotdm9pZCBncnBjX2NodHRwMl9ocGFja193cml0ZV92YXJpbnRfdGFpbCh1aW50MzJfdCB0YWlsX3ZhbHVlLCB1aW50OF90KiB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhaWxfbGVuZ3RoKSB7Ci0gIHN3aXRjaCAodGFpbF9sZW5ndGgpIHsKLSAgICBjYXNlIDU6Ci0gICAgICB0YXJnZXRbNF0gPSAodWludDhfdCkoKHRhaWxfdmFsdWUgPj4gMjgpIHwgMHg4MCk7Ci0gICAgY2FzZSA0OgotICAgICAgdGFyZ2V0WzNdID0gKHVpbnQ4X3QpKCh0YWlsX3ZhbHVlID4+IDIxKSB8IDB4ODApOwotICAgIGNhc2UgMzoKLSAgICAgIHRhcmdldFsyXSA9ICh1aW50OF90KSgodGFpbF92YWx1ZSA+PiAxNCkgfCAweDgwKTsKLSAgICBjYXNlIDI6Ci0gICAgICB0YXJnZXRbMV0gPSAodWludDhfdCkoKHRhaWxfdmFsdWUgPj4gNykgfCAweDgwKTsKLSAgICBjYXNlIDE6Ci0gICAgICB0YXJnZXRbMF0gPSAodWludDhfdCkoKHRhaWxfdmFsdWUpIHwgMHg4MCk7Ci0gIH0KLSAgdGFyZ2V0W3RhaWxfbGVuZ3RoIC0gMV0gJj0gMHg3ZjsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0YTBhZTMuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9WQVJJTlRfSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfVkFSSU5UX0gKLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0KLS8qIEhlbHBlcnMgZm9yIGhwYWNrIHZhcmludCBlbmNvZGluZyAqLwotCi0vKiBsZW5ndGggb2YgYSB2YWx1ZSB0aGF0IG5lZWRzIHZhcmludCB0YWlsIGVuY29kaW5nIChpdCdzIGJpZ2dlciB0aGFuIGNhbiBiZQotICAgYml0cGFja2VkIGludG8gdGhlIG9wY29kZSBieXRlKSAtIHJldHVybmVkIHZhbHVlIGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhlCi0gICBvcGNvZGUgYnl0ZSAqLwotdWludDMyX3QgZ3JwY19jaHR0cDJfaHBhY2tfdmFyaW50X2xlbmd0aCh1aW50MzJfdCB0YWlsX3ZhbHVlKTsKLQotdm9pZCBncnBjX2NodHRwMl9ocGFja193cml0ZV92YXJpbnRfdGFpbCh1aW50MzJfdCB0YWlsX3ZhbHVlLCB1aW50OF90KiB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhaWxfbGVuZ3RoKTsKLQotLyogbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBiaXRwYWNrZWQgd2l0aCB0aGUgb3Bjb2RlIGlmIHRoZSBvcGNvZGUgaGFzIGEKLSAgIHByZWZpeAotICAgb2YgbGVuZ3RoIHByZWZpeF9iaXRzICovCi0jZGVmaW5lIEdSUENfQ0hUVFAyX01BWF9JTl9QUkVGSVgocHJlZml4X2JpdHMpIFwKLSAgKCh1aW50MzJfdCkoKDEgPDwgKDggLSAocHJlZml4X2JpdHMpKSkgLSAxKSkKLQotLyogbGVuZ3RoIHJlcXVpcmVkIHRvIGJpdHBhY2sgYSB2YWx1ZSAqLwotI2RlZmluZSBHUlBDX0NIVFRQMl9WQVJJTlRfTEVOR1RIKG4sIHByZWZpeF9iaXRzKSBcCi0gICgobikgPCBHUlBDX0NIVFRQMl9NQVhfSU5fUFJFRklYKHByZWZpeF9iaXRzKSAgIFwKLSAgICAgICA/IDF1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIDogZ3JwY19jaHR0cDJfaHBhY2tfdmFyaW50X2xlbmd0aCggICAgICAgICBcCi0gICAgICAgICAgICAgKG4pLUdSUENfQ0hUVFAyX01BWF9JTl9QUkVGSVgocHJlZml4X2JpdHMpKSkKLQotI2RlZmluZSBHUlBDX0NIVFRQMl9XUklURV9WQVJJTlQobiwgcHJlZml4X2JpdHMsIHByZWZpeF9vciwgdGFyZ2V0LCBsZW5ndGgpICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVpbnQ4X3QqIHRndCA9IHRhcmdldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICgobGVuZ3RoKSA9PSAxdSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKHRndClbMF0gPSAodWludDhfdCkoKHByZWZpeF9vcikgfCAobikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKHRndClbMF0gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIChwcmVmaXhfb3IpIHwgKHVpbnQ4X3QpR1JQQ19DSFRUUDJfTUFYX0lOX1BSRUZJWChwcmVmaXhfYml0cyk7ICAgICAgXAotICAgICAgZ3JwY19jaHR0cDJfaHBhY2tfd3JpdGVfdmFyaW50X3RhaWwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIChuKS1HUlBDX0NIVFRQMl9NQVhfSU5fUFJFRklYKHByZWZpeF9iaXRzKSwgKHRndCkgKyAxLCAobGVuZ3RoKS0xKTsgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9IHdoaWxlICgwKQotCi0jZW5kaWYgLyogR1JQQ19DT1JFX0xJQl9UUkFOU1BPUlRfQ0hUVFAyX1ZBUklOVF9IICovCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZWEzMzEuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvd3JpdGluZy5jCisrKyAvZGV2L251bGwKQEAgLTEsMzUwICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIgotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+Ci0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIgotCi1zdGF0aWMgdm9pZCBmaW5hbGl6ZV9vdXRidWYoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nKTsKLQotaW50IGdycGNfY2h0dHAyX3VubG9ja2luZ19jaGVja193cml0ZXMoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nLCBpbnQgaXNfcGFyc2luZykgewotICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsOwotICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmc7Ci0KLSAgR1BSX1RJTUVSX0JFR0lOKCJncnBjX2NodHRwMl91bmxvY2tpbmdfY2hlY2tfd3JpdGVzIiwgMCk7Ci0KLSAgLyogc2ltcGxlIHdyaXRlcyBhcmUgcXVldWVkIHRvIHFidWYsIGFuZCBmbHVzaGVkIGhlcmUgKi8KLSAgZ3ByX3NsaWNlX2J1ZmZlcl9zd2FwKCZ0cmFuc3BvcnRfZ2xvYmFsLT5xYnVmLCAmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zik7Ci0gIEdQUl9BU1NFUlQodHJhbnNwb3J0X2dsb2JhbC0+cWJ1Zi5jb3VudCA9PSAwKTsKLQotICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX3NldF9tYXhfdGFibGVfc2l6ZSgKLSAgICAgICZ0cmFuc3BvcnRfd3JpdGluZy0+aHBhY2tfY29tcHJlc3NvciwKLSAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPnNldHRpbmdzW0dSUENfUEVFUl9TRVRUSU5HU10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dSUENfQ0hUVFAyX1NFVFRJTkdTX0hFQURFUl9UQUJMRV9TSVpFXSk7Ci0KLSAgaWYgKHRyYW5zcG9ydF9nbG9iYWwtPmRpcnRpZWRfbG9jYWxfc2V0dGluZ3MgJiYKLSAgICAgICF0cmFuc3BvcnRfZ2xvYmFsLT5zZW50X2xvY2FsX3NldHRpbmdzICYmICFpc19wYXJzaW5nKSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCi0gICAgICAgICZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmLAotICAgICAgICBncnBjX2NodHRwMl9zZXR0aW5nc19jcmVhdGUoCi0gICAgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLT5zZXR0aW5nc1tHUlBDX1NFTlRfU0VUVElOR1NdLAotICAgICAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19MT0NBTF9TRVRUSU5HU10sCi0gICAgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLT5mb3JjZV9zZW5kX3NldHRpbmdzLCBHUlBDX0NIVFRQMl9OVU1fU0VUVElOR1MpKTsKLSAgICB0cmFuc3BvcnRfZ2xvYmFsLT5mb3JjZV9zZW5kX3NldHRpbmdzID0gMDsKLSAgICB0cmFuc3BvcnRfZ2xvYmFsLT5kaXJ0aWVkX2xvY2FsX3NldHRpbmdzID0gMDsKLSAgICB0cmFuc3BvcnRfZ2xvYmFsLT5zZW50X2xvY2FsX3NldHRpbmdzID0gMTsKLSAgfQotCi0gIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9UUkFOU1BPUlQoIndyaXRlIiwgdHJhbnNwb3J0X3dyaXRpbmcsIG91dGdvaW5nX3dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLCBvdXRnb2luZ193aW5kb3cpOwotICBib29sIGlzX3dpbmRvd19hdmFpbGFibGUgPSB0cmFuc3BvcnRfd3JpdGluZy0+b3V0Z29pbmdfd2luZG93ID4gMDsKLSAgZ3JwY19jaHR0cDJfbGlzdF9mbHVzaF93cml0aW5nX3N0YWxsZWRfYnlfdHJhbnNwb3J0KAotICAgICAgZXhlY19jdHgsIHRyYW5zcG9ydF93cml0aW5nLCBpc193aW5kb3dfYXZhaWxhYmxlKTsKLQotICAvKiBmb3IgZWFjaCBncnBjX2NodHRwMl9zdHJlYW0gdGhhdCdzIGJlY29tZSB3cml0YWJsZSwgZnJhbWUgaXQncyBkYXRhCi0gICAgIChhY2NvcmRpbmcgdG8gYXZhaWxhYmxlIHdpbmRvdyBzaXplcykgYW5kIGFkZCB0byB0aGUgb3V0cHV0IGJ1ZmZlciAqLwotICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdGFibGVfc3RyZWFtKAotICAgICAgdHJhbnNwb3J0X2dsb2JhbCwgdHJhbnNwb3J0X3dyaXRpbmcsICZzdHJlYW1fZ2xvYmFsLCAmc3RyZWFtX3dyaXRpbmcpKSB7Ci0gICAgYm9vbCBzZW50X2luaXRpYWxfbWV0YWRhdGEgPSBzdHJlYW1fd3JpdGluZy0+c2VudF9pbml0aWFsX21ldGFkYXRhOwotICAgIGJvb2wgYmVjb21lX3dyaXRhYmxlID0gZmFsc2U7Ci0KLSAgICBzdHJlYW1fd3JpdGluZy0+aWQgPSBzdHJlYW1fZ2xvYmFsLT5pZDsKLSAgICBzdHJlYW1fd3JpdGluZy0+cmVhZF9jbG9zZWQgPSBzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZDsKLQotICAgIEdSUENfQ0hUVFAyX0ZMT1dfTU9WRV9TVFJFQU0oIndyaXRlIiwgdHJhbnNwb3J0X3dyaXRpbmcsIHN0cmVhbV93cml0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93LCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Z29pbmdfd2luZG93KTsKLQotICAgIGlmICghc2VudF9pbml0aWFsX21ldGFkYXRhICYmIHN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSkgewotICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSA9Ci0gICAgICAgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhOwotICAgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhID0gTlVMTDsKLSAgICAgIGJlY29tZV93cml0YWJsZSA9IHRydWU7Ci0gICAgICBzZW50X2luaXRpYWxfbWV0YWRhdGEgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoc2VudF9pbml0aWFsX21ldGFkYXRhKSB7Ci0gICAgICBpZiAoc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlICE9IE5VTEwpIHsKLSAgICAgICAgZ3ByX3NsaWNlIGhkciA9IGdwcl9zbGljZV9tYWxsb2MoNSk7Ci0gICAgICAgIHVpbnQ4X3QgKnAgPSBHUFJfU0xJQ0VfU1RBUlRfUFRSKGhkcik7Ci0gICAgICAgIHVpbnQzMl90IGxlbiA9IHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZS0+bGVuZ3RoOwotICAgICAgICBHUFJfQVNTRVJUKHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgPT0gTlVMTCk7Ci0gICAgICAgIHBbMF0gPSAoc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlLT5mbGFncyAmCi0gICAgICAgICAgICAgICAgR1JQQ19XUklURV9JTlRFUk5BTF9DT01QUkVTUykgIT0gMDsKLSAgICAgICAgcFsxXSA9ICh1aW50OF90KShsZW4gPj4gMjQpOwotICAgICAgICBwWzJdID0gKHVpbnQ4X3QpKGxlbiA+PiAxNik7Ci0gICAgICAgIHBbM10gPSAodWludDhfdCkobGVuID4+IDgpOwotICAgICAgICBwWzRdID0gKHVpbnQ4X3QpKGxlbik7Ci0gICAgICAgIGdwcl9zbGljZV9idWZmZXJfYWRkKCZzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlciwgaGRyKTsKLSAgICAgICAgaWYgKHN0cmVhbV9nbG9iYWwtPnNlbmRfbWVzc2FnZS0+bGVuZ3RoID4gMCkgewotICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgPSBzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyZWFtX3dyaXRpbmctPnN0cmVhbV9mZXRjaGVkID0gMDsKLSAgICAgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlID0gTlVMTDsKLSAgICAgIH0KLSAgICAgIGlmICgoc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSAhPSBOVUxMIHx8Ci0gICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLmxlbmd0aCA+IDApICYmCi0gICAgICAgICAgc3RyZWFtX3dyaXRpbmctPm91dGdvaW5nX3dpbmRvdyA+IDApIHsKLSAgICAgICAgaWYgKHRyYW5zcG9ydF93cml0aW5nLT5vdXRnb2luZ193aW5kb3cgPiAwKSB7Ci0gICAgICAgICAgYmVjb21lX3dyaXRhYmxlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9zdGFsbGVkX2J5X3RyYW5zcG9ydCh0cmFuc3BvcnRfd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhKSB7Ci0gICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhID0KLSAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGE7Ci0gICAgICAgIHN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgPSBOVUxMOwotICAgICAgICBiZWNvbWVfd3JpdGFibGUgPSB0cnVlOwotICAgICAgfQotICAgIH0KLQotICAgIGlmICghc3RyZWFtX2dsb2JhbC0+cmVhZF9jbG9zZWQgJiYKLSAgICAgICAgc3RyZWFtX2dsb2JhbC0+dW5hbm5vdW5jZWRfaW5jb21pbmdfd2luZG93X2Zvcl93cml0aW5nID4gMTAyNCkgewotICAgICAgR1JQQ19DSFRUUDJfRkxPV19NT1ZFX1NUUkVBTSgid3JpdGUiLCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3VuY2Vfd2luZG93LCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfZm9yX3dyaXRpbmcpOwotICAgICAgYmVjb21lX3dyaXRhYmxlID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoYmVjb21lX3dyaXRhYmxlKSB7Ci0gICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0aW5nX3N0cmVhbSh0cmFuc3BvcnRfd3JpdGluZywgc3RyZWFtX3dyaXRpbmcpOwotICAgIH0gZWxzZSB7Ci0gICAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJjaHR0cDJfd3JpdGluZyIpOwotICAgIH0KLSAgfQotCi0gIC8qIGlmIHRoZSBncnBjX2NodHRwMl90cmFuc3BvcnQgaXMgcmVhZHkgdG8gc2VuZCBhIHdpbmRvdyB1cGRhdGUsIGRvIHNvIGhlcmUKLSAgICAgYWxzbzsgMy80IGlzIGEgbWFnaWMgbnVtYmVyIHRoYXQgd2lsbCBsaWtlbHkgZ2V0IHR1bmVkIHNvb24gKi8KLSAgaWYgKHRyYW5zcG9ydF9nbG9iYWwtPmFubm91bmNlX2luY29taW5nX3dpbmRvdyA+IDApIHsKLSAgICB1aW50MzJfdCBhbm5vdW5jZWQgPSAodWludDMyX3QpR1BSX01JTigKLSAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+YW5ub3VuY2VfaW5jb21pbmdfd2luZG93LCBVSU5UMzJfTUFYKTsKLSAgICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1RSQU5TUE9SVCgid3JpdGUiLCB0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm91bmNlX2luY29taW5nX3dpbmRvdywgYW5ub3VuY2VkKTsKLSAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX2NyZWF0ZSgwLCBhbm5vdW5jZWQpKTsKLSAgfQotCi0gIEdQUl9USU1FUl9FTkQoImdycGNfY2h0dHAyX3VubG9ja2luZ19jaGVja193cml0ZXMiLCAwKTsKLQotICByZXR1cm4gdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zi5jb3VudCA+IDAgfHwKLSAgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfaGF2ZV93cml0aW5nX3N0cmVhbXModHJhbnNwb3J0X3dyaXRpbmcpOwotfQotCi12b2lkIGdycGNfY2h0dHAyX3BlcmZvcm1fd3JpdGVzKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfd3JpdGluZyAqdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgZ3JwY19lbmRwb2ludCAqZW5kcG9pbnQpIHsKLSAgR1BSX0FTU0VSVCh0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmLmNvdW50ID4gMCB8fAotICAgICAgICAgICAgIGdycGNfY2h0dHAyX2xpc3RfaGF2ZV93cml0aW5nX3N0cmVhbXModHJhbnNwb3J0X3dyaXRpbmcpKTsKLQotICBmaW5hbGl6ZV9vdXRidWYoZXhlY19jdHgsIHRyYW5zcG9ydF93cml0aW5nKTsKLQotICBHUFJfQVNTRVJUKGVuZHBvaW50KTsKLQotICBpZiAodHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zi5jb3VudCA+IDApIHsKLSAgICBncnBjX2VuZHBvaW50X3dyaXRlKGV4ZWNfY3R4LCBlbmRwb2ludCwgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3dyaXRpbmctPmRvbmVfY2IpOwotICB9IGVsc2UgewotICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgJnRyYW5zcG9ydF93cml0aW5nLT5kb25lX2NiLCB0cnVlLCBOVUxMKTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBmaW5hbGl6ZV9vdXRidWYoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nKSB7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZzsKLQotICBHUFJfVElNRVJfQkVHSU4oImZpbmFsaXplX291dGJ1ZiIsIDApOwotCi0gIHdoaWxlICgKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXRpbmdfc3RyZWFtKHRyYW5zcG9ydF93cml0aW5nLCAmc3RyZWFtX3dyaXRpbmcpKSB7Ci0gICAgdWludDMyX3QgbWF4X291dGdvaW5nID0KLSAgICAgICAgKHVpbnQzMl90KUdQUl9NSU4oR1JQQ19DSFRUUDJfTUFYX1BBWUxPQURfTEVOR1RILAotICAgICAgICAgICAgICAgICAgICAgICAgICBHUFJfTUlOKHN0cmVhbV93cml0aW5nLT5vdXRnb2luZ193aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X3dyaXRpbmctPm91dGdvaW5nX3dpbmRvdykpOwotICAgIC8qIHNlbmQgaW5pdGlhbCBtZXRhZGF0YSBpZiBpdCdzIGF2YWlsYWJsZSAqLwotICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VuZF9pbml0aWFsX21ldGFkYXRhICE9IE5VTEwpIHsKLSAgICAgIGdycGNfY2h0dHAyX2VuY29kZV9oZWFkZXIoCi0gICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5ocGFja19jb21wcmVzc29yLCBzdHJlYW1fd3JpdGluZy0+aWQsCi0gICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSwgMCwgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOwotICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSA9IE5VTEw7Ci0gICAgICBzdHJlYW1fd3JpdGluZy0+c2VudF9pbml0aWFsX21ldGFkYXRhID0gMTsKLSAgICB9Ci0gICAgLyogc2VuZCBhbnkgd2luZG93IHVwZGF0ZXMgKi8KLSAgICBpZiAoc3RyZWFtX3dyaXRpbmctPmFubm91bmNlX3dpbmRvdyA+IDAgJiYKLSAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfaW5pdGlhbF9tZXRhZGF0YSA9PSBOVUxMKSB7Ci0gICAgICB1aW50MzJfdCBhbm5vdW5jZSA9IHN0cmVhbV93cml0aW5nLT5hbm5vdW5jZV93aW5kb3c7Ci0gICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgKLSAgICAgICAgICAmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1ZiwKLSAgICAgICAgICBncnBjX2NodHRwMl93aW5kb3dfdXBkYXRlX2NyZWF0ZShzdHJlYW1fd3JpdGluZy0+aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPmFubm91bmNlX3dpbmRvdykpOwotICAgICAgR1JQQ19DSFRUUDJfRkxPV19ERUJJVF9TVFJFQU0oIndyaXRlIiwgdHJhbnNwb3J0X3dyaXRpbmcsIHN0cmVhbV93cml0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3VuY2Vfd2luZG93LCBhbm5vdW5jZSk7Ci0gICAgICBzdHJlYW1fd3JpdGluZy0+YW5ub3VuY2Vfd2luZG93ID0gMDsKLSAgICB9Ci0gICAgLyogZmV0Y2ggYW55IGJvZHkgYnl0ZXMgKi8KLSAgICB3aGlsZSAoIXN0cmVhbV93cml0aW5nLT5mZXRjaGluZyAmJiBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlICYmCi0gICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLmxlbmd0aCA8IG1heF9vdXRnb2luZyAmJgotICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c3RyZWFtX2ZldGNoZWQgPAotICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZS0+bGVuZ3RoKSB7Ci0gICAgICBpZiAoZ3JwY19ieXRlX3N0cmVhbV9uZXh0KGV4ZWNfY3R4LCBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX3dyaXRpbmctPmZldGNoaW5nX3NsaWNlLCBtYXhfb3V0Z29pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fd3JpdGluZy0+ZmluaXNoZWRfZmV0Y2gpKSB7Ci0gICAgICAgIHN0cmVhbV93cml0aW5nLT5zdHJlYW1fZmV0Y2hlZCArPQotICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChzdHJlYW1fd3JpdGluZy0+ZmV0Y2hpbmdfc2xpY2UpOwotICAgICAgICBpZiAoc3RyZWFtX3dyaXRpbmctPnN0cmVhbV9mZXRjaGVkID09Ci0gICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlLT5sZW5ndGgpIHsKLSAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5mZXRjaGluZ19zbGljZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBzdHJlYW1fd3JpdGluZy0+ZmV0Y2hpbmcgPSAxOwotICAgICAgfQotICAgIH0KLSAgICAvKiBzZW5kIGFueSBib2R5IGJ5dGVzICovCi0gICAgaWYgKHN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLmxlbmd0aCA+IDApIHsKLSAgICAgIGlmIChtYXhfb3V0Z29pbmcgPiAwKSB7Ci0gICAgICAgIHVpbnQzMl90IHNlbmRfYnl0ZXMgPSAodWludDMyX3QpR1BSX01JTigKLSAgICAgICAgICAgIG1heF9vdXRnb2luZywgc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIubGVuZ3RoKTsKLSAgICAgICAgaW50IGlzX2xhc3RfZGF0YV9mcmFtZSA9Ci0gICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID09IE5VTEwgJiYKLSAgICAgICAgICAgIHNlbmRfYnl0ZXMgPT0gc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIubGVuZ3RoOwotICAgICAgICBpbnQgaXNfbGFzdF9mcmFtZSA9IGlzX2xhc3RfZGF0YV9mcmFtZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX21ldGFkYXRhX2JhdGNoX2lzX2VtcHR5KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2VuY29kZV9kYXRhKAotICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPmlkLCAmc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIsCi0gICAgICAgICAgICBzZW5kX2J5dGVzLCBpc19sYXN0X2ZyYW1lLCAmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zik7Ci0gICAgICAgIEdSUENfQ0hUVFAyX0ZMT1dfREVCSVRfU1RSRUFNKCJ3cml0ZSIsIHRyYW5zcG9ydF93cml0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZywgb3V0Z29pbmdfd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX2J5dGVzKTsKLSAgICAgICAgR1JQQ19DSFRUUDJfRkxPV19ERUJJVF9UUkFOU1BPUlQoIndyaXRlIiwgdHJhbnNwb3J0X3dyaXRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX3dpbmRvdywgc2VuZF9ieXRlcyk7Ci0gICAgICAgIGlmIChpc19sYXN0X2ZyYW1lKSB7Ci0gICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgPSBOVUxMOwotICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW50X3RyYWlsaW5nX21ldGFkYXRhID0gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNfbGFzdF9kYXRhX2ZyYW1lKSB7Ci0gICAgICAgICAgR1BSX0FTU0VSVChzdHJlYW1fd3JpdGluZy0+c2VuZF9tZXNzYWdlID09IE5VTEwpOwotICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zZW50X21lc3NhZ2UgPSAxOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKHRyYW5zcG9ydF93cml0aW5nLT5vdXRnb2luZ193aW5kb3cgPT0gMCkgewotICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0aW5nX3N0YWxsZWRfYnlfdHJhbnNwb3J0KHRyYW5zcG9ydF93cml0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV93cml0aW5nKTsKLSAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdHRlbl9zdHJlYW0odHJhbnNwb3J0X3dyaXRpbmcsIHN0cmVhbV93cml0aW5nKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgLyogc2VuZCB0cmFpbGluZyBtZXRhZGF0YSBpZiBpdCdzIGF2YWlsYWJsZSBhbmQgd2UncmUgcmVhZHkgZm9yIGl0ICovCi0gICAgaWYgKHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgPT0gTlVMTCAmJgotICAgICAgICBzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlci5sZW5ndGggPT0gMCAmJgotICAgICAgICBzdHJlYW1fd3JpdGluZy0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSAhPSBOVUxMKSB7Ci0gICAgICBpZiAoZ3JwY19tZXRhZGF0YV9iYXRjaF9pc19lbXB0eSgKLSAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEpKSB7Ci0gICAgICAgIGdycGNfY2h0dHAyX2VuY29kZV9kYXRhKHN0cmVhbV93cml0aW5nLT5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV93cml0aW5nLT5mbG93X2NvbnRyb2xsZWRfYnVmZmVyLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJhbnNwb3J0X3dyaXRpbmctPm91dGJ1Zik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBncnBjX2NodHRwMl9lbmNvZGVfaGVhZGVyKCZ0cmFuc3BvcnRfd3JpdGluZy0+aHBhY2tfY29tcHJlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZy0+aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOwotICAgICAgfQotICAgICAgaWYgKCF0cmFuc3BvcnRfd3JpdGluZy0+aXNfY2xpZW50ICYmICFzdHJlYW1fd3JpdGluZy0+cmVhZF9jbG9zZWQpIHsKLSAgICAgICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3JzdF9zdHJlYW1fY3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPmlkLCBHUlBDX0NIVFRQMl9OT19FUlJPUikpOwotICAgICAgfQotICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgPSBOVUxMOwotICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbnRfdHJhaWxpbmdfbWV0YWRhdGEgPSAxOwotICAgIH0KLSAgICAvKiBpZiB0aGVyZSdzIG1vcmUgdG8gd3JpdGUsIHRoZW4gbG9vcCwgb3RoZXJ3aXNlIHByZXBhcmUgdG8gZmluaXNoIHRoZQotICAgICAqIHdyaXRlICovCi0gICAgaWYgKChzdHJlYW1fd3JpdGluZy0+Zmxvd19jb250cm9sbGVkX2J1ZmZlci5sZW5ndGggPiAwIHx8Ci0gICAgICAgICAoc3RyZWFtX3dyaXRpbmctPnNlbmRfbWVzc2FnZSAmJiAhc3RyZWFtX3dyaXRpbmctPmZldGNoaW5nKSkgJiYKLSAgICAgICAgc3RyZWFtX3dyaXRpbmctPm91dGdvaW5nX3dpbmRvdyA+IDApIHsKLSAgICAgIGlmICh0cmFuc3BvcnRfd3JpdGluZy0+b3V0Z29pbmdfd2luZG93ID4gMCkgewotICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93cml0aW5nX3N0cmVhbSh0cmFuc3BvcnRfd3JpdGluZywgc3RyZWFtX3dyaXRpbmcpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9hZGRfd3JpdGluZ19zdGFsbGVkX2J5X3RyYW5zcG9ydCh0cmFuc3BvcnRfd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3JpdGluZyk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXR0ZW5fc3RyZWFtKHRyYW5zcG9ydF93cml0aW5nLCBzdHJlYW1fd3JpdGluZyk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXR0ZW5fc3RyZWFtKHRyYW5zcG9ydF93cml0aW5nLCBzdHJlYW1fd3JpdGluZyk7Ci0gICAgfQotICB9Ci0KLSAgR1BSX1RJTUVSX0VORCgiZmluYWxpemVfb3V0YnVmIiwgMCk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfY2xlYW51cF93cml0aW5nKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF93cml0aW5nICp0cmFuc3BvcnRfd3JpdGluZykgewotICBncnBjX2NodHRwMl9zdHJlYW1fd3JpdGluZyAqc3RyZWFtX3dyaXRpbmc7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWw7Ci0KLSAgd2hpbGUgKGdycGNfY2h0dHAyX2xpc3RfcG9wX3dyaXR0ZW5fc3RyZWFtKAotICAgICAgdHJhbnNwb3J0X2dsb2JhbCwgdHJhbnNwb3J0X3dyaXRpbmcsICZzdHJlYW1fZ2xvYmFsLCAmc3RyZWFtX3dyaXRpbmcpKSB7Ci0gICAgaWYgKHN0cmVhbV93cml0aW5nLT5zZW50X2luaXRpYWxfbWV0YWRhdGEpIHsKLSAgICAgIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcCgKLSAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YV9maW5pc2hlZCwgMSk7Ci0gICAgfQotICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VudF9tZXNzYWdlKSB7Ci0gICAgICBHUFJfQVNTRVJUKHN0cmVhbV93cml0aW5nLT5zZW5kX21lc3NhZ2UgPT0gTlVMTCk7Ci0gICAgICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoCi0gICAgICAgICAgZXhlY19jdHgsICZzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2VfZmluaXNoZWQsIDEpOwotICAgICAgc3RyZWFtX3dyaXRpbmctPnNlbnRfbWVzc2FnZSA9IDA7Ci0gICAgfQotICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VudF90cmFpbGluZ19tZXRhZGF0YSkgewotICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAotICAgICAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCwgMSk7Ci0gICAgfQotICAgIGlmIChzdHJlYW1fd3JpdGluZy0+c2VudF90cmFpbGluZ19tZXRhZGF0YSkgewotICAgICAgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0cmFuc3BvcnRfZ2xvYmFsLT5pc19jbGllbnQsIDEpOwotICAgIH0KLSAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJjaHR0cDJfd3JpdGluZyIpOwotICB9Ci0gIGdwcl9zbGljZV9idWZmZXJfcmVzZXRfYW5kX3VucmVmKCZ0cmFuc3BvcnRfd3JpdGluZy0+b3V0YnVmKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZWQzZDguLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzg1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKLQotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+Ci0KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9pbXBsLmgiCi0KLSNkZWZpbmUgREVGQVVMVF9XSU5ET1cgNjU1MzUKLSNkZWZpbmUgREVGQVVMVF9DT05ORUNUSU9OX1dJTkRPV19UQVJHRVQgKDEwMjQgKiAxMDI0KQotI2RlZmluZSBNQVhfV0lORE9XIDB4N2ZmZmZmZmZ1Ci0KLSNkZWZpbmUgTUFYX0NMSUVOVF9TVFJFQU1fSUQgMHg3ZmZmZmZmZnUKLQotaW50IGdycGNfaHR0cF90cmFjZSA9IDA7Ci1pbnQgZ3JwY19mbG93Y3RsX3RyYWNlID0gMDsKLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHR3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHR3KS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcpKSkKLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHR3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHR3KS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNpbmcpKSkKLQotI2RlZmluZSBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodGcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopKChjaGFyICopKHRnKS1vZmZzZXRvZihncnBjX2NodHRwMl90cmFuc3BvcnQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbCkpKQotCi0jZGVmaW5lIFNUUkVBTV9GUk9NX0dMT0JBTChzZykgXAotICAoKGdycGNfY2h0dHAyX3N0cmVhbSAqKSgoY2hhciAqKShzZyktb2Zmc2V0b2YoZ3JwY19jaHR0cDJfc3RyZWFtLCBnbG9iYWwpKSkKLQotI2RlZmluZSBTVFJFQU1fRlJPTV9QQVJTSU5HKHNnKSBcCi0gICgoZ3JwY19jaHR0cDJfc3RyZWFtICopKChjaGFyICopKHNnKS1vZmZzZXRvZihncnBjX2NodHRwMl9zdHJlYW0sIHBhcnNpbmcpKSkKLQotc3RhdGljIGNvbnN0IGdycGNfdHJhbnNwb3J0X3Z0YWJsZSB2dGFibGU7Ci0KLXN0YXRpYyB2b2lkIGxvY2soZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KTsKLXN0YXRpYyB2b2lkIHVubG9jayhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KTsKLQotLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgdmFyaW91cyBjYWxsYmFja3MgdGhhdCB3ZSdsbCBidWlsZCBjbG9zdXJlcyBhcm91bmQgKi8KLXN0YXRpYyB2b2lkIHdyaXRpbmdfYWN0aW9uKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpb21ncl9zdWNjZXNzX2lnbm9yZWQpOwotCi0vKiogU2V0IGEgdHJhbnNwb3J0IGxldmVsIHNldHRpbmcsIGFuZCBwdXNoIGl0IHRvIG91ciBwZWVyICovCi1zdGF0aWMgdm9pZCBwdXNoX3NldHRpbmcoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LCBncnBjX2NodHRwMl9zZXR0aW5nX2lkIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKTsKLQotLyoqIEVuZHBvaW50IGNhbGxiYWNrIHRvIHByb2Nlc3MgaW5jb21pbmcgZGF0YSAqLwotc3RhdGljIHZvaWQgcmVjdl9kYXRhKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICp0cCwgYm9vbCBzdWNjZXNzKTsKLQotLyoqIFN0YXJ0IGRpc2Nvbm5lY3Rpb24gY2hhaW4gKi8KLXN0YXRpYyB2b2lkIGRyb3BfY29ubmVjdGlvbihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KTsKLQotLyoqIFBlcmZvcm0gYSB0cmFuc3BvcnRfb3AgKi8KLXN0YXRpYyB2b2lkIHBlcmZvcm1fc3RyZWFtX29wX2xvY2tlZCgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLCBncnBjX3RyYW5zcG9ydF9zdHJlYW1fb3AgKm9wKTsKLQotLyoqIENhbmNlbCBhIHN0cmVhbTogY29taW5nIGZyb20gdGhlIHRyYW5zcG9ydCBBUEkgKi8KLXN0YXRpYyB2b2lkIGNhbmNlbF9mcm9tX2FwaShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXMpOwotCi1zdGF0aWMgdm9pZCBjbG9zZV9mcm9tX2FwaShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2UgKm9wdGlvbmFsX21lc3NhZ2UpOwotCi0vKiogQWRkIGVuZHBvaW50IGZyb20gdGhpcyB0cmFuc3BvcnQgdG8gcG9sbHNldCAqLwotc3RhdGljIHZvaWQgYWRkX3RvX3BvbGxzZXRfbG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3BvbGxzZXQgKnBvbGxzZXQpOwotc3RhdGljIHZvaWQgYWRkX3RvX3BvbGxzZXRfc2V0X2xvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3BvbGxzZXRfc2V0ICpwb2xsc2V0X3NldCk7Ci0KLS8qKiBTdGFydCBuZXcgc3RyZWFtcyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIGlmIHdlIGNhbiAqLwotc3RhdGljIHZvaWQgbWF5YmVfc3RhcnRfc29tZV9zdHJlYW1zKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsKTsKLQotc3RhdGljIHZvaWQgY29ubmVjdGl2aXR5X3N0YXRlX3NldCgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZSBzdGF0ZSwgY29uc3QgY2hhciAqcmVhc29uKTsKLQotc3RhdGljIHZvaWQgY2hlY2tfcmVhZF9vcHMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsKTsKLQotc3RhdGljIHZvaWQgaW5jb21pbmdfYnl0ZV9zdHJlYW1fdXBkYXRlX2Zsb3dfY29udHJvbCgKLSAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsIHNpemVfdCBtYXhfc2l6ZV9oaW50LAotICAgIHNpemVfdCBoYXZlX2FscmVhZHkpOwotCi1zdGF0aWMgdm9pZCBmYWlsX3BlbmRpbmdfd3JpdGVzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENPTlNUUlVDVElPTi9ERVNUUlVDVElPTi9SRUZDT1VOVElORwotICovCi0KLXN0YXRpYyB2b2lkIGRlc3RydWN0X3RyYW5zcG9ydChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKLSAgc2l6ZV90IGk7Ci0KLSAgZ3ByX211X2xvY2soJnQtPm11KTsKLQotICBHUFJfQVNTRVJUKHQtPmVwID09IE5VTEwpOwotCi0gIGdwcl9zbGljZV9idWZmZXJfZGVzdHJveSgmdC0+Z2xvYmFsLnFidWYpOwotCi0gIGdwcl9zbGljZV9idWZmZXJfZGVzdHJveSgmdC0+d3JpdGluZy5vdXRidWYpOwotICBncnBjX2NodHRwMl9ocGFja19jb21wcmVzc29yX2Rlc3Ryb3koJnQtPndyaXRpbmcuaHBhY2tfY29tcHJlc3Nvcik7Ci0KLSAgZ3ByX3NsaWNlX2J1ZmZlcl9kZXN0cm95KCZ0LT5wYXJzaW5nLnFidWYpOwotICBncHJfc2xpY2VfYnVmZmVyX2Rlc3Ryb3koJnQtPnJlYWRfYnVmZmVyKTsKLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2Rlc3Ryb3koJnQtPnBhcnNpbmcuaHBhY2tfcGFyc2VyKTsKLSAgZ3JwY19jaHR0cDJfZ29hd2F5X3BhcnNlcl9kZXN0cm95KCZ0LT5wYXJzaW5nLmdvYXdheV9wYXJzZXIpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBTVFJFQU1fTElTVF9DT1VOVDsgaSsrKSB7Ci0gICAgR1BSX0FTU0VSVCh0LT5saXN0c1tpXS5oZWFkID09IE5VTEwpOwotICAgIEdQUl9BU1NFUlQodC0+bGlzdHNbaV0udGFpbCA9PSBOVUxMKTsKLSAgfQotCi0gIEdQUl9BU1NFUlQoZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9zaXplKCZ0LT5wYXJzaW5nX3N0cmVhbV9tYXApID09IDApOwotICBHUFJfQVNTRVJUKGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZSgmdC0+bmV3X3N0cmVhbV9tYXApID09IDApOwotCi0gIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZGVzdHJveSgmdC0+cGFyc2luZ19zdHJlYW1fbWFwKTsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9kZXN0cm95KCZ0LT5uZXdfc3RyZWFtX21hcCk7Ci0gIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlX2Rlc3Ryb3koZXhlY19jdHgsICZ0LT5jaGFubmVsX2NhbGxiYWNrLnN0YXRlX3RyYWNrZXIpOwotCi0gIGdwcl9tdV91bmxvY2soJnQtPm11KTsKLSAgZ3ByX211X2Rlc3Ryb3koJnQtPm11KTsKLQotICAvKiBjYWxsYmFjayByZW1haW5pbmcgcGluZ3M6IHRoZXkncmUgbm90IGFsbG93ZWQgdG8gY2FsbCBpbnRvIHRoZSB0cmFuc3BvdCwKLSAgICAgYW5kIG1heWJlIHRoZXkgaG9sZCByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIGZyZWVkICovCi0gIHdoaWxlICh0LT5nbG9iYWwucGluZ3MubmV4dCAhPSAmdC0+Z2xvYmFsLnBpbmdzKSB7Ci0gICAgZ3JwY19jaHR0cDJfb3V0c3RhbmRpbmdfcGluZyAqcGluZyA9IHQtPmdsb2JhbC5waW5ncy5uZXh0OwotICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgcGluZy0+b25fcmVjdiwgZmFsc2UsIE5VTEwpOwotICAgIHBpbmctPm5leHQtPnByZXYgPSBwaW5nLT5wcmV2OwotICAgIHBpbmctPnByZXYtPm5leHQgPSBwaW5nLT5uZXh0OwotICAgIGdwcl9mcmVlKHBpbmcpOwotICB9Ci0KLSAgZ3ByX2ZyZWUodC0+cGVlcl9zdHJpbmcpOwotICBncHJfZnJlZSh0KTsKLX0KLQotI2lmZGVmIFJFRkNPVU5USU5HX0RFQlVHCi0jZGVmaW5lIFJFRl9UUkFOU1BPUlQodCwgcikgcmVmX3RyYW5zcG9ydCh0LCByLCBfX0ZJTEVfXywgX19MSU5FX18pCi0jZGVmaW5lIFVOUkVGX1RSQU5TUE9SVChjbCwgdCwgcikgdW5yZWZfdHJhbnNwb3J0KGNsLCB0LCByLCBfX0ZJTEVfXywgX19MSU5FX18pCi1zdGF0aWMgdm9pZCB1bnJlZl90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKSB7Ci0gIGdwcl9sb2coR1BSX0RFQlVHLCAiY2h0dHAyOnVucmVmOiVwICVkLT4lZCAlcyBbJXM6JWRdIiwgdCwgdC0+cmVmcy5jb3VudCwKLSAgICAgICAgICB0LT5yZWZzLmNvdW50IC0gMSwgcmVhc29uLCBmaWxlLCBsaW5lKTsKLSAgaWYgKCFncHJfdW5yZWYoJnQtPnJlZnMpKSByZXR1cm47Ci0gIGRlc3RydWN0X3RyYW5zcG9ydChleGVjX2N0eCwgdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlZl90cmFuc3BvcnQoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKSB7Ci0gIGdwcl9sb2coR1BSX0RFQlVHLCAiY2h0dHAyOiAgcmVmOiVwICVkLT4lZCAlcyBbJXM6JWRdIiwgdCwgdC0+cmVmcy5jb3VudCwKLSAgICAgICAgICB0LT5yZWZzLmNvdW50ICsgMSwgcmVhc29uLCBmaWxlLCBsaW5lKTsKLSAgZ3ByX3JlZigmdC0+cmVmcyk7Ci19Ci0jZWxzZQotI2RlZmluZSBSRUZfVFJBTlNQT1JUKHQsIHIpIHJlZl90cmFuc3BvcnQodCkKLSNkZWZpbmUgVU5SRUZfVFJBTlNQT1JUKGNsLCB0LCByKSB1bnJlZl90cmFuc3BvcnQoY2wsIHQpCi1zdGF0aWMgdm9pZCB1bnJlZl90cmFuc3BvcnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgewotICBpZiAoIWdwcl91bnJlZigmdC0+cmVmcykpIHJldHVybjsKLSAgZGVzdHJ1Y3RfdHJhbnNwb3J0KGV4ZWNfY3R4LCB0KTsKLX0KLQotc3RhdGljIHZvaWQgcmVmX3RyYW5zcG9ydChncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsgZ3ByX3JlZigmdC0+cmVmcyk7IH0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZCBpbml0X3RyYW5zcG9ydChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jaGFubmVsX2FyZ3MgKmNoYW5uZWxfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKmVwLCB1aW50OF90IGlzX2NsaWVudCkgewotICBzaXplX3QgaTsKLSAgaW50IGo7Ci0KLSAgR1BSX0FTU0VSVChzdHJsZW4oR1JQQ19DSFRUUDJfQ0xJRU5UX0NPTk5FQ1RfU1RSSU5HKSA9PQotICAgICAgICAgICAgIEdSUENfQ0hUVFAyX0NMSUVOVF9DT05ORUNUX1NUUkxFTik7Ci0KLSAgbWVtc2V0KHQsIDAsIHNpemVvZigqdCkpOwotCi0gIHQtPmJhc2UudnRhYmxlID0gJnZ0YWJsZTsKLSAgdC0+ZXAgPSBlcDsKLSAgLyogb25lIHJlZiBpcyBmb3IgZGVzdHJveSwgdGhlIG90aGVyIGZvciB3aGVuIGVwIGJlY29tZXMgTlVMTCAqLwotICBncHJfcmVmX2luaXQoJnQtPnJlZnMsIDIpOwotICAvKiByZWYgaXMgZHJvcHBlZCBhdCB0cmFuc3BvcnQgY2xvc2UoKSAqLwotICBncHJfcmVmX2luaXQoJnQtPnNodXRkb3duX2VwX3JlZnMsIDEpOwotICBncHJfbXVfaW5pdCgmdC0+bXUpOwotICB0LT5wZWVyX3N0cmluZyA9IGdycGNfZW5kcG9pbnRfZ2V0X3BlZXIoZXApOwotICB0LT5lbmRwb2ludF9yZWFkaW5nID0gMTsKLSAgdC0+Z2xvYmFsLm5leHRfc3RyZWFtX2lkID0gaXNfY2xpZW50ID8gMSA6IDI7Ci0gIHQtPmdsb2JhbC5pc19jbGllbnQgPSBpc19jbGllbnQ7Ci0gIHQtPndyaXRpbmcub3V0Z29pbmdfd2luZG93ID0gREVGQVVMVF9XSU5ET1c7Ci0gIHQtPnBhcnNpbmcuaW5jb21pbmdfd2luZG93ID0gREVGQVVMVF9XSU5ET1c7Ci0gIHQtPmdsb2JhbC5zdHJlYW1fbG9va2FoZWFkID0gREVGQVVMVF9XSU5ET1c7Ci0gIHQtPmdsb2JhbC5jb25uZWN0aW9uX3dpbmRvd190YXJnZXQgPSBERUZBVUxUX0NPTk5FQ1RJT05fV0lORE9XX1RBUkdFVDsKLSAgdC0+Z2xvYmFsLnBpbmdfY291bnRlciA9IDE7Ci0gIHQtPmdsb2JhbC5waW5ncy5uZXh0ID0gdC0+Z2xvYmFsLnBpbmdzLnByZXYgPSAmdC0+Z2xvYmFsLnBpbmdzOwotICB0LT5wYXJzaW5nLmlzX2NsaWVudCA9IGlzX2NsaWVudDsKLSAgdC0+cGFyc2luZy5kZWZyYW1lX3N0YXRlID0KLSAgICAgIGlzX2NsaWVudCA/IEdSUENfRFRTX0ZIXzAgOiBHUlBDX0RUU19DTElFTlRfUFJFRklYXzA7Ci0gIHQtPndyaXRpbmcuaXNfY2xpZW50ID0gaXNfY2xpZW50OwotICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9pbml0KAotICAgICAgJnQtPmNoYW5uZWxfY2FsbGJhY2suc3RhdGVfdHJhY2tlciwgR1JQQ19DSEFOTkVMX1JFQURZLAotICAgICAgaXNfY2xpZW50ID8gImNsaWVudF90cmFuc3BvcnQiIDogInNlcnZlcl90cmFuc3BvcnQiKTsKLQotICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJnQtPmdsb2JhbC5xYnVmKTsKLQotICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJnQtPndyaXRpbmcub3V0YnVmKTsKLSAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9pbml0KCZ0LT53cml0aW5nLmhwYWNrX2NvbXByZXNzb3IpOwotICBncnBjX2Nsb3N1cmVfaW5pdCgmdC0+d3JpdGluZ19hY3Rpb24sIHdyaXRpbmdfYWN0aW9uLCB0KTsKLQotICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJnQtPnBhcnNpbmcucWJ1Zik7Ci0gIGdycGNfY2h0dHAyX2dvYXdheV9wYXJzZXJfaW5pdCgmdC0+cGFyc2luZy5nb2F3YXlfcGFyc2VyKTsKLSAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2luaXQoJnQtPnBhcnNpbmcuaHBhY2tfcGFyc2VyKTsKLQotICBncnBjX2Nsb3N1cmVfaW5pdCgmdC0+d3JpdGluZy5kb25lX2NiLCBncnBjX2NodHRwMl90ZXJtaW5hdGVfd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgJnQtPndyaXRpbmcpOwotICBncnBjX2Nsb3N1cmVfaW5pdCgmdC0+cmVjdl9kYXRhLCByZWN2X2RhdGEsIHQpOwotICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJnQtPnJlYWRfYnVmZmVyKTsKLQotICBpZiAoaXNfY2xpZW50KSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCi0gICAgICAgICZ0LT5nbG9iYWwucWJ1ZiwKLSAgICAgICAgZ3ByX3NsaWNlX2Zyb21fY29waWVkX3N0cmluZyhHUlBDX0NIVFRQMl9DTElFTlRfQ09OTkVDVF9TVFJJTkcpKTsKLSAgfQotICAvKiA4IGlzIGEgcmFuZG9tIHN0YWIgaW4gdGhlIGRhcmsgYXMgdG8gYSBnb29kIGluaXRpYWwgc2l6ZTogaXQncyBzbWFsbCBlbm91Z2gKLSAgICAgdGhhdCBpdCBzaG91bGRuJ3Qgd2FzdGUgbWVtb3J5IGZvciBpbmZyZXF1ZW50bHkgdXNlZCBjb25uZWN0aW9ucywgeWV0Ci0gICAgIGxhcmdlIGVub3VnaCB0aGF0IHRoZSBleHBvbmVudGlhbCBncm93dGggc2hvdWxkIGhhcHBlbiBuaWNlbHkgd2hlbiBpdCdzCi0gICAgIG5lZWRlZC4KLSAgICAgVE9ETyhjdGlsbGVyKTogdHVuZSB0aGlzICovCi0gIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfaW5pdCgmdC0+cGFyc2luZ19zdHJlYW1fbWFwLCA4KTsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9pbml0KCZ0LT5uZXdfc3RyZWFtX21hcCwgOCk7Ci0KLSAgLyogY29weSBpbiBpbml0aWFsIHNldHRpbmdzIHRvIGFsbCBzZXR0aW5nIHNldHMgKi8KLSAgZm9yIChpID0gMDsgaSA8IEdSUENfQ0hUVFAyX05VTV9TRVRUSU5HUzsgaSsrKSB7Ci0gICAgdC0+cGFyc2luZy5zZXR0aW5nc1tpXSA9IGdycGNfY2h0dHAyX3NldHRpbmdzX3BhcmFtZXRlcnNbaV0uZGVmYXVsdF92YWx1ZTsKLSAgICBmb3IgKGogPSAwOyBqIDwgR1JQQ19OVU1fU0VUVElOR19TRVRTOyBqKyspIHsKLSAgICAgIHQtPmdsb2JhbC5zZXR0aW5nc1tqXVtpXSA9Ci0gICAgICAgICAgZ3JwY19jaHR0cDJfc2V0dGluZ3NfcGFyYW1ldGVyc1tpXS5kZWZhdWx0X3ZhbHVlOwotICAgIH0KLSAgfQotICB0LT5nbG9iYWwuZGlydGllZF9sb2NhbF9zZXR0aW5ncyA9IDE7Ci0gIC8qIEhhY2s6IGl0J3MgY29tbW9uIGZvciBpbXBsZW1lbnRhdGlvbnMgdG8gYXNzdW1lIDY1NTM2IGJ5dGVzIGluaXRpYWwgc2VuZAotICAgICB3aW5kb3cgLS0gdGhpcyBzaG91bGQgYnkgcmlnaHRzIGJlIDAgKi8KLSAgdC0+Z2xvYmFsLmZvcmNlX3NlbmRfc2V0dGluZ3MgPSAxIDw8IEdSUENfQ0hUVFAyX1NFVFRJTkdTX0lOSVRJQUxfV0lORE9XX1NJWkU7Ci0gIHQtPmdsb2JhbC5zZW50X2xvY2FsX3NldHRpbmdzID0gMDsKLQotICAvKiBjb25maWd1cmUgaHR0cDIgdGhlIHdheSB3ZSBsaWtlIGl0ICovCi0gIGlmIChpc19jbGllbnQpIHsKLSAgICBwdXNoX3NldHRpbmcodCwgR1JQQ19DSFRUUDJfU0VUVElOR1NfRU5BQkxFX1BVU0gsIDApOwotICAgIHB1c2hfc2V0dGluZyh0LCBHUlBDX0NIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TLCAwKTsKLSAgfQotICBwdXNoX3NldHRpbmcodCwgR1JQQ19DSFRUUDJfU0VUVElOR1NfSU5JVElBTF9XSU5ET1dfU0laRSwgREVGQVVMVF9XSU5ET1cpOwotCi0gIGlmIChjaGFubmVsX2FyZ3MpIHsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY2hhbm5lbF9hcmdzLT5udW1fYXJnczsgaSsrKSB7Ci0gICAgICBpZiAoMCA9PQotICAgICAgICAgIHN0cmNtcChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0ua2V5LCBHUlBDX0FSR19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSkgewotICAgICAgICBpZiAoaXNfY2xpZW50KSB7Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogaXMgaWdub3JlZCBvbiB0aGUgY2xpZW50IiwKLSAgICAgICAgICAgICAgICAgIEdSUENfQVJHX01BWF9DT05DVVJSRU5UX1NUUkVBTVMpOwotICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS50eXBlICE9IEdSUENfQVJHX0lOVEVHRVIpIHsKLSAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBtdXN0IGJlIGFuIGludGVnZXIiLAotICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcHVzaF9zZXR0aW5nKHQsIEdSUENfQ0hUVFAyX1NFVFRJTkdTX01BWF9DT05DVVJSRU5UX1NUUkVBTVMsCi0gICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCljaGFubmVsX2FyZ3MtPmFyZ3NbaV0udmFsdWUuaW50ZWdlcik7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSU5JVElBTF9TRVFVRU5DRV9OVU1CRVIpKSB7Ci0gICAgICAgIGlmIChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0udHlwZSAhPSBHUlBDX0FSR19JTlRFR0VSKSB7Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogbXVzdCBiZSBhbiBpbnRlZ2VyIiwKLSAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0lOSVRJQUxfU0VRVUVOQ0VfTlVNQkVSKTsKLSAgICAgICAgfSBlbHNlIGlmICgodC0+Z2xvYmFsLm5leHRfc3RyZWFtX2lkICYgMSkgIT0KLSAgICAgICAgICAgICAgICAgICAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIgJiAxKSkgewotICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IGxvdyBiaXQgbXVzdCBiZSAlZCBvbiAlcyIsCi0gICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9JTklUSUFMX1NFUVVFTkNFX05VTUJFUiwKLSAgICAgICAgICAgICAgICAgIHQtPmdsb2JhbC5uZXh0X3N0cmVhbV9pZCAmIDEsCi0gICAgICAgICAgICAgICAgICBpc19jbGllbnQgPyAiY2xpZW50IiA6ICJzZXJ2ZXIiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0LT5nbG9iYWwubmV4dF9zdHJlYW1faWQgPQotICAgICAgICAgICAgICAodWludDMyX3QpY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXI7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfU1RSRUFNX0xPT0tBSEVBRF9CWVRFUykpIHsKLSAgICAgICAgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS50eXBlICE9IEdSUENfQVJHX0lOVEVHRVIpIHsKLSAgICAgICAgICBncHJfbG9nKEdQUl9FUlJPUiwgIiVzOiBtdXN0IGJlIGFuIGludGVnZXIiLAotICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfU1RSRUFNX0xPT0tBSEVBRF9CWVRFUyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIgPD0gNSkgewotICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgYXQgbGVhc3QgNSIsCi0gICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9TVFJFQU1fTE9PS0FIRUFEX0JZVEVTKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0LT5nbG9iYWwuc3RyZWFtX2xvb2thaGVhZCA9Ci0gICAgICAgICAgICAgICh1aW50MzJfdCljaGFubmVsX2FyZ3MtPmFyZ3NbaV0udmFsdWUuaW50ZWdlcjsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0ua2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9IUEFDS19UQUJMRV9TSVpFX0RFQ09ERVIpKSB7Ci0gICAgICAgIGlmIChjaGFubmVsX2FyZ3MtPmFyZ3NbaV0udHlwZSAhPSBHUlBDX0FSR19JTlRFR0VSKSB7Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogbXVzdCBiZSBhbiBpbnRlZ2VyIiwKLSAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0hQQUNLX1RBQkxFX1NJWkVfREVDT0RFUik7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIgPCAwKSB7Ci0gICAgICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlczogbXVzdCBiZSBub24tbmVnYXRpdmUiLAotICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSFBBQ0tfVEFCTEVfU0laRV9ERUNPREVSKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBwdXNoX3NldHRpbmcodCwgR1JQQ19DSFRUUDJfU0VUVElOR1NfSEVBREVSX1RBQkxFX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCljaGFubmVsX2FyZ3MtPmFyZ3NbaV0udmFsdWUuaW50ZWdlcik7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfSFRUUDJfSFBBQ0tfVEFCTEVfU0laRV9FTkNPREVSKSkgewotICAgICAgICBpZiAoY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnR5cGUgIT0gR1JQQ19BUkdfSU5URUdFUikgewotICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgYW4gaW50ZWdlciIsCi0gICAgICAgICAgICAgICAgICBHUlBDX0FSR19IVFRQMl9IUEFDS19UQUJMRV9TSVpFX0VOQ09ERVIpOwotICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5pbnRlZ2VyIDwgMCkgewotICAgICAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiJXM6IG11c3QgYmUgbm9uLW5lZ2F0aXZlIiwKLSAgICAgICAgICAgICAgICAgIEdSUENfQVJHX0hUVFAyX0hQQUNLX1RBQkxFX1NJWkVfRU5DT0RFUik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZ3JwY19jaHR0cDJfaHBhY2tfY29tcHJlc3Nvcl9zZXRfbWF4X3VzYWJsZV9zaXplKAotICAgICAgICAgICAgICAmdC0+d3JpdGluZy5ocGFja19jb21wcmVzc29yLAotICAgICAgICAgICAgICAodWludDMyX3QpY2hhbm5lbF9hcmdzLT5hcmdzW2ldLnZhbHVlLmludGVnZXIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lfdHJhbnNwb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3RyYW5zcG9ydCAqZ3QpIHsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OwotCi0gIGxvY2sodCk7Ci0gIHQtPmRlc3Ryb3lpbmcgPSAxOwotICBkcm9wX2Nvbm5lY3Rpb24oZXhlY19jdHgsIHQpOwotICB1bmxvY2soZXhlY19jdHgsIHQpOwotCi0gIFVOUkVGX1RSQU5TUE9SVChleGVjX2N0eCwgdCwgImRlc3Ryb3kiKTsKLX0KLQotLyoqIGJsb2NrIGdycGNfZW5kcG9pbnRfc2h1dGRvd24gYmVpbmcgY2FsbGVkIHVudGlsIGEgcGFpcmVkCi0gICAgYWxsb3dfZW5kcG9pbnRfc2h1dGRvd24gaXMgbWFkZSAqLwotc3RhdGljIHZvaWQgcHJldmVudF9lbmRwb2ludF9zaHV0ZG93bihncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKLSAgR1BSX0FTU0VSVCh0LT5lcCk7Ci0gIGdwcl9yZWYoJnQtPnNodXRkb3duX2VwX3JlZnMpOwotfQotCi1zdGF0aWMgdm9pZCBhbGxvd19lbmRwb2ludF9zaHV0ZG93bl9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7Ci0gIGlmIChncHJfdW5yZWYoJnQtPnNodXRkb3duX2VwX3JlZnMpKSB7Ci0gICAgaWYgKHQtPmVwKSB7Ci0gICAgICBncnBjX2VuZHBvaW50X3NodXRkb3duKGV4ZWNfY3R4LCB0LT5lcCk7Ci0gICAgfQotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFsbG93X2VuZHBvaW50X3NodXRkb3duX3VubG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7Ci0gIGlmIChncHJfdW5yZWYoJnQtPnNodXRkb3duX2VwX3JlZnMpKSB7Ci0gICAgZ3ByX211X2xvY2soJnQtPm11KTsKLSAgICBpZiAodC0+ZXApIHsKLSAgICAgIGdycGNfZW5kcG9pbnRfc2h1dGRvd24oZXhlY19jdHgsIHQtPmVwKTsKLSAgICB9Ci0gICAgZ3ByX211X3VubG9jaygmdC0+bXUpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGRlc3Ryb3lfZW5kcG9pbnQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgewotICBncnBjX2VuZHBvaW50X2Rlc3Ryb3koZXhlY19jdHgsIHQtPmVwKTsKLSAgdC0+ZXAgPSBOVUxMOwotICAvKiBzYWZlIGJlY2F1c2Ugd2UnbGwgc3RpbGwgaGF2ZSB0aGUgcmVmIGZvciB3cml0ZSAqLwotICBVTlJFRl9UUkFOU1BPUlQoZXhlY19jdHgsIHQsICJkaXNjb25uZWN0Iik7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsb3NlX3RyYW5zcG9ydF9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgewotICBpZiAoIXQtPmNsb3NlZCkgewotICAgIHQtPmNsb3NlZCA9IDE7Ci0gICAgY29ubmVjdGl2aXR5X3N0YXRlX3NldChleGVjX2N0eCwgJnQtPmdsb2JhbCwgR1JQQ19DSEFOTkVMX0ZBVEFMX0ZBSUxVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VfdHJhbnNwb3J0Iik7Ci0gICAgaWYgKHQtPmVwKSB7Ci0gICAgICBhbGxvd19lbmRwb2ludF9zaHV0ZG93bl9sb2NrZWQoZXhlY19jdHgsIHQpOwotICAgIH0KLQotICAgIC8qIGZsdXNoIHdyaXRhYmxlIHN0cmVhbSBsaXN0IHRvIGF2b2lkIGRhbmdsaW5nIHJlZmVyZW5jZXMgKi8KLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsOwotICAgIGdycGNfY2h0dHAyX3N0cmVhbV93cml0aW5nICpzdHJlYW1fd3JpdGluZzsKLSAgICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdGFibGVfc3RyZWFtKAotICAgICAgICAmdC0+Z2xvYmFsLCAmdC0+d3JpdGluZywgJnN0cmVhbV9nbG9iYWwsICZzdHJlYW1fd3JpdGluZykpIHsKLSAgICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgImNodHRwMl93cml0aW5nIik7Ci0gICAgfQotICB9Ci19Ci0KLSNpZmRlZiBHUlBDX1NUUkVBTV9SRUZDT1VOVF9ERUJVRwotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fcmVmKGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKSB7Ci0gIGdycGNfc3RyZWFtX3JlZihTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCktPnJlZmNvdW50LCByZWFzb24pOwotfQotdm9pZCBncnBjX2NodHRwMl9zdHJlYW1fdW5yZWYoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKSB7Ci0gIGdycGNfc3RyZWFtX3VucmVmKGV4ZWNfY3R4LCBTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCktPnJlZmNvdW50LAotICAgICAgICAgICAgICAgICAgICByZWFzb24pOwotfQotI2Vsc2UKLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3JlZihncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7Ci0gIGdycGNfc3RyZWFtX3JlZihTVFJFQU1fRlJPTV9HTE9CQUwoc3RyZWFtX2dsb2JhbCktPnJlZmNvdW50KTsKLX0KLXZvaWQgZ3JwY19jaHR0cDJfc3RyZWFtX3VucmVmKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCkgewotICBncnBjX3N0cmVhbV91bnJlZihleGVjX2N0eCwgU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLT5yZWZjb3VudCk7Ci19Ci0jZW5kaWYKLQotc3RhdGljIGludCBpbml0X3N0cmVhbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY190cmFuc3BvcnQgKmd0LAotICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0cmVhbSAqZ3MsIGdycGNfc3RyZWFtX3JlZmNvdW50ICpyZWZjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc2VydmVyX2RhdGEpIHsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqKWd0OwotICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPSAoZ3JwY19jaHR0cDJfc3RyZWFtICopZ3M7Ci0KLSAgbWVtc2V0KHMsIDAsIHNpemVvZigqcykpOwotCi0gIHMtPnJlZmNvdW50ID0gcmVmY291bnQ7Ci0gIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoJnMtPmdsb2JhbCwgImNodHRwMiIpOwotCi0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9pbml0KCZzLT5wYXJzaW5nLm1ldGFkYXRhX2J1ZmZlclswXSk7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9pbml0KCZzLT5wYXJzaW5nLm1ldGFkYXRhX2J1ZmZlclsxXSk7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9pbml0KAotICAgICAgJnMtPmdsb2JhbC5yZWNlaXZlZF9pbml0aWFsX21ldGFkYXRhKTsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX2luaXQoCi0gICAgICAmcy0+Z2xvYmFsLnJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhKTsKLSAgZ3JwY19jaHR0cDJfZGF0YV9wYXJzZXJfaW5pdCgmcy0+cGFyc2luZy5kYXRhX3BhcnNlcik7Ci0gIGdwcl9zbGljZV9idWZmZXJfaW5pdCgmcy0+d3JpdGluZy5mbG93X2NvbnRyb2xsZWRfYnVmZmVyKTsKLQotICBSRUZfVFJBTlNQT1JUKHQsICJzdHJlYW0iKTsKLQotICBsb2NrKHQpOwotICBncnBjX2NodHRwMl9yZWdpc3Rlcl9zdHJlYW0odCwgcyk7Ci0gIGlmIChzZXJ2ZXJfZGF0YSkgewotICAgIEdQUl9BU1NFUlQodC0+cGFyc2luZ19hY3RpdmUpOwotICAgIHMtPmdsb2JhbC5pZCA9ICh1aW50MzJfdCkodWludHB0cl90KXNlcnZlcl9kYXRhOwotICAgIHMtPnBhcnNpbmcuaWQgPSBzLT5nbG9iYWwuaWQ7Ci0gICAgcy0+Z2xvYmFsLm91dGdvaW5nX3dpbmRvdyA9Ci0gICAgICAgIHQtPmdsb2JhbC5zZXR0aW5nc1tHUlBDX1BFRVJfU0VUVElOR1NdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFXTsKLSAgICBzLT5wYXJzaW5nLmluY29taW5nX3dpbmRvdyA9IHMtPmdsb2JhbC5tYXhfcmVjdl9ieXRlcyA9Ci0gICAgICAgIHQtPmdsb2JhbC5zZXR0aW5nc1tHUlBDX1NFTlRfU0VUVElOR1NdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFXTsKLSAgICAqdC0+YWNjZXB0aW5nX3N0cmVhbSA9IHM7Ci0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9hZGQoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCwgcy0+Z2xvYmFsLmlkLCBzKTsKLSAgICBzLT5nbG9iYWwuaW5fc3RyZWFtX21hcCA9IDE7Ci0gIH0KLSAgdW5sb2NrKGV4ZWNfY3R4LCB0KTsKLQotICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgZGVzdHJveV9zdHJlYW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfdHJhbnNwb3J0ICpndCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RyZWFtICpncykgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSAoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopZ3Q7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqcyA9IChncnBjX2NodHRwMl9zdHJlYW0gKilnczsKLSAgaW50IGk7Ci0gIGdycGNfYnl0ZV9zdHJlYW0gKmJzOwotCi0gIEdQUl9USU1FUl9CRUdJTigiZGVzdHJveV9zdHJlYW0iLCAwKTsKLQotICBncHJfbXVfbG9jaygmdC0+bXUpOwotCi0gIEdQUl9BU1NFUlQoKHMtPmdsb2JhbC53cml0ZV9jbG9zZWQgJiYgcy0+Z2xvYmFsLnJlYWRfY2xvc2VkKSB8fAotICAgICAgICAgICAgIHMtPmdsb2JhbC5pZCA9PSAwKTsKLSAgR1BSX0FTU0VSVCghcy0+Z2xvYmFsLmluX3N0cmVhbV9tYXApOwotICBpZiAoZ3JwY19jaHR0cDJfdW5yZWdpc3Rlcl9zdHJlYW0odCwgcykgJiYgdC0+Z2xvYmFsLnNlbnRfZ29hd2F5KSB7Ci0gICAgY2xvc2VfdHJhbnNwb3J0X2xvY2tlZChleGVjX2N0eCwgdCk7Ci0gIH0KLSAgaWYgKCF0LT5wYXJzaW5nX2FjdGl2ZSAmJiBzLT5nbG9iYWwuaWQpIHsKLSAgICBHUFJfQVNTRVJUKGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZmluZCgmdC0+cGFyc2luZ19zdHJlYW1fbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmdsb2JhbC5pZCkgPT0gTlVMTCk7Ci0gIH0KLQotICBncnBjX2NodHRwMl9saXN0X3JlbW92ZV91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKCZ0LT5nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnMtPmdsb2JhbCk7Ci0gIGdycGNfY2h0dHAyX2xpc3RfcmVtb3ZlX3N0YWxsZWRfYnlfdHJhbnNwb3J0KCZ0LT5nbG9iYWwsICZzLT5nbG9iYWwpOwotCi0gIGdwcl9tdV91bmxvY2soJnQtPm11KTsKLQotICBmb3IgKGkgPSAwOyBpIDwgU1RSRUFNX0xJU1RfQ09VTlQ7IGkrKykgewotICAgIGlmIChzLT5pbmNsdWRlZFtpXSkgewotICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICIlcyBzdHJlYW0gJWQgc3RpbGwgaW5jbHVkZWQgaW4gbGlzdCAlZCIsCi0gICAgICAgICAgICAgIHQtPmdsb2JhbC5pc19jbGllbnQgPyAiY2xpZW50IiA6ICJzZXJ2ZXIiLCBzLT5nbG9iYWwuaWQsIGkpOwotICAgICAgYWJvcnQoKTsKLSAgICB9Ci0gIH0KLQotICB3aGlsZSAoCi0gICAgICAoYnMgPSBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZV9wb3AoJnMtPmdsb2JhbC5pbmNvbWluZ19mcmFtZXMpKSkgewotICAgIGdycGNfYnl0ZV9zdHJlYW1fZGVzdHJveShleGVjX2N0eCwgYnMpOwotICB9Ci0KLSAgR1BSX0FTU0VSVChzLT5nbG9iYWwuc2VuZF9pbml0aWFsX21ldGFkYXRhX2ZpbmlzaGVkID09IE5VTEwpOwotICBHUFJfQVNTRVJUKHMtPmdsb2JhbC5zZW5kX21lc3NhZ2VfZmluaXNoZWQgPT0gTlVMTCk7Ci0gIEdQUl9BU1NFUlQocy0+Z2xvYmFsLnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQgPT0gTlVMTCk7Ci0gIEdQUl9BU1NFUlQocy0+Z2xvYmFsLnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSA9PSBOVUxMKTsKLSAgR1BSX0FTU0VSVChzLT5nbG9iYWwucmVjdl9tZXNzYWdlX3JlYWR5ID09IE5VTEwpOwotICBHUFJfQVNTRVJUKHMtPmdsb2JhbC5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkID09IE5VTEwpOwotICBncnBjX2NodHRwMl9kYXRhX3BhcnNlcl9kZXN0cm95KGV4ZWNfY3R4LCAmcy0+cGFyc2luZy5kYXRhX3BhcnNlcik7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9kZXN0cm95KCZzLT5wYXJzaW5nLm1ldGFkYXRhX2J1ZmZlclswXSk7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9kZXN0cm95KCZzLT5wYXJzaW5nLm1ldGFkYXRhX2J1ZmZlclsxXSk7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX21ldGFkYXRhX2J1ZmZlcl9kZXN0cm95KAotICAgICAgJnMtPmdsb2JhbC5yZWNlaXZlZF9pbml0aWFsX21ldGFkYXRhKTsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX2Rlc3Ryb3koCi0gICAgICAmcy0+Z2xvYmFsLnJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhKTsKLSAgZ3ByX3NsaWNlX2J1ZmZlcl9kZXN0cm95KCZzLT53cml0aW5nLmZsb3dfY29udHJvbGxlZF9idWZmZXIpOwotCi0gIFVOUkVGX1RSQU5TUE9SVChleGVjX2N0eCwgdCwgInN0cmVhbSIpOwotCi0gIEdQUl9USU1FUl9FTkQoImRlc3Ryb3lfc3RyZWFtIiwgMCk7Ci19Ci0KLWdycGNfY2h0dHAyX3N0cmVhbV9wYXJzaW5nICpncnBjX2NodHRwMl9wYXJzaW5nX2xvb2t1cF9zdHJlYW0oCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLCB1aW50MzJfdCBpZCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzID0KLSAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfZmluZCgmdC0+cGFyc2luZ19zdHJlYW1fbWFwLCBpZCk7Ci0gIHJldHVybiBzID8gJnMtPnBhcnNpbmcgOiBOVUxMOwotfQotCi1ncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqZ3JwY19jaHR0cDJfcGFyc2luZ19hY2NlcHRfc3RyZWFtKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgdWludDMyX3QgaWQpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICphY2NlcHRpbmc7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IFRSQU5TUE9SVF9GUk9NX1BBUlNJTkcodHJhbnNwb3J0X3BhcnNpbmcpOwotICBHUFJfQVNTRVJUKHQtPmFjY2VwdGluZ19zdHJlYW0gPT0gTlVMTCk7Ci0gIHQtPmFjY2VwdGluZ19zdHJlYW0gPSAmYWNjZXB0aW5nOwotICB0LT5jaGFubmVsX2NhbGxiYWNrLmFjY2VwdF9zdHJlYW0oZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5jaGFubmVsX2NhbGxiYWNrLmFjY2VwdF9zdHJlYW1fdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQtPmJhc2UsICh2b2lkICopKHVpbnRwdHJfdClpZCk7Ci0gIHQtPmFjY2VwdGluZ19zdHJlYW0gPSBOVUxMOwotICByZXR1cm4gJmFjY2VwdGluZy0+cGFyc2luZzsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIExPQ0sgTUFOQUdFTUVOVAotICovCi0KLS8qIFdlIHRha2UgYSBncnBjX2NodHRwMl90cmFuc3BvcnQtZ2xvYmFsIGxvY2sgaW4gcmVzcG9uc2UgdG8gY2FsbHMgY29taW5nIGluCi0gICBmcm9tIGFib3ZlLAotICAgYW5kIGluIHJlc3BvbnNlIHRvIGRhdGEgYmVpbmcgcmVjZWl2ZWQgZnJvbSBiZWxvdy4gTmV3IGRhdGEgdG8gYmUgd3JpdHRlbgotICAgaXMgYWx3YXlzIHF1ZXVlZCwgYXMgYXJlIGNhbGxiYWNrcyB0byBwcm9jZXNzIGRhdGEuIER1cmluZyB1bmxvY2soKSB3ZQotICAgY2hlY2sgb3VyIHRvZG8gbGlzdHMgYW5kIGluaXRpYXRlIGNhbGxiYWNrcyBhbmQgZmx1c2ggd3JpdGVzLiAqLwotCi1zdGF0aWMgdm9pZCBsb2NrKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCkgeyBncHJfbXVfbG9jaygmdC0+bXUpOyB9Ci0KLXN0YXRpYyB2b2lkIHVubG9jayhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7Ci0gIEdQUl9USU1FUl9CRUdJTigidW5sb2NrIiwgMCk7Ci0gIGlmICghdC0+d3JpdGluZ19hY3RpdmUgJiYgIXQtPmNsb3NlZCAmJgotICAgICAgZ3JwY19jaHR0cDJfdW5sb2NraW5nX2NoZWNrX3dyaXRlcyhleGVjX2N0eCwgJnQtPmdsb2JhbCwgJnQtPndyaXRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPnBhcnNpbmdfYWN0aXZlKSkgewotICAgIHQtPndyaXRpbmdfYWN0aXZlID0gMTsKLSAgICBSRUZfVFJBTlNQT1JUKHQsICJ3cml0aW5nIik7Ci0gICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCAmdC0+d3JpdGluZ19hY3Rpb24sIHRydWUsIE5VTEwpOwotICAgIHByZXZlbnRfZW5kcG9pbnRfc2h1dGRvd24odCk7Ci0gIH0KLSAgY2hlY2tfcmVhZF9vcHMoZXhlY19jdHgsICZ0LT5nbG9iYWwpOwotCi0gIGdwcl9tdV91bmxvY2soJnQtPm11KTsKLSAgR1BSX1RJTUVSX0VORCgidW5sb2NrIiwgMCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBPVVRQVVQgUFJPQ0VTU0lORwotICovCi0KLXZvaWQgZ3JwY19jaHR0cDJfYmVjb21lX3dyaXRhYmxlKGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7Ci0gIGlmICghVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLT5jbG9zZWQgJiYKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX3dyaXRhYmxlX3N0cmVhbSh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKSkgewotICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoc3RyZWFtX2dsb2JhbCwgImNodHRwMl93cml0aW5nIik7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgcHVzaF9zZXR0aW5nKGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCwgZ3JwY19jaHR0cDJfc2V0dGluZ19pZCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkgewotICBjb25zdCBncnBjX2NodHRwMl9zZXR0aW5nX3BhcmFtZXRlcnMgKnNwID0KLSAgICAgICZncnBjX2NodHRwMl9zZXR0aW5nc19wYXJhbWV0ZXJzW2lkXTsKLSAgdWludDMyX3QgdXNlX3ZhbHVlID0gR1BSX0NMQU1QKHZhbHVlLCBzcC0+bWluX3ZhbHVlLCBzcC0+bWF4X3ZhbHVlKTsKLSAgaWYgKHVzZV92YWx1ZSAhPSB2YWx1ZSkgewotICAgIGdwcl9sb2coR1BSX0lORk8sICJSZXF1ZXN0ZWQgcGFyYW1ldGVyICVzIGNsYW1wZWQgZnJvbSAlZCB0byAlZCIsIHNwLT5uYW1lLAotICAgICAgICAgICAgdmFsdWUsIHVzZV92YWx1ZSk7Ci0gIH0KLSAgaWYgKHVzZV92YWx1ZSAhPSB0LT5nbG9iYWwuc2V0dGluZ3NbR1JQQ19MT0NBTF9TRVRUSU5HU11baWRdKSB7Ci0gICAgdC0+Z2xvYmFsLnNldHRpbmdzW0dSUENfTE9DQUxfU0VUVElOR1NdW2lkXSA9IHVzZV92YWx1ZTsKLSAgICB0LT5nbG9iYWwuZGlydGllZF9sb2NhbF9zZXR0aW5ncyA9IDE7Ci0gIH0KLX0KLQotdm9pZCBncnBjX2NodHRwMl90ZXJtaW5hdGVfd3JpdGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdHJhbnNwb3J0X3dyaXRpbmdfcHRyLCBib29sIHN1Y2Nlc3MpIHsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3dyaXRpbmcgKnRyYW5zcG9ydF93cml0aW5nID0gdHJhbnNwb3J0X3dyaXRpbmdfcHRyOwotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBUUkFOU1BPUlRfRlJPTV9XUklUSU5HKHRyYW5zcG9ydF93cml0aW5nKTsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKLQotICBHUFJfVElNRVJfQkVHSU4oImdycGNfY2h0dHAyX3Rlcm1pbmF0ZV93cml0aW5nIiwgMCk7Ci0KLSAgbG9jayh0KTsKLQotICBhbGxvd19lbmRwb2ludF9zaHV0ZG93bl9sb2NrZWQoZXhlY19jdHgsIHQpOwotCi0gIGlmICghc3VjY2VzcykgewotICAgIGRyb3BfY29ubmVjdGlvbihleGVjX2N0eCwgdCk7Ci0gIH0KLQotICBncnBjX2NodHRwMl9jbGVhbnVwX3dyaXRpbmcoZXhlY19jdHgsICZ0LT5nbG9iYWwsICZ0LT53cml0aW5nKTsKLQotICB3aGlsZSAoZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2xvc2VkX3dhaXRpbmdfZm9yX3dyaXRpbmcoJnQtPmdsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsKSkgewotICAgIGZhaWxfcGVuZGluZ193cml0ZXMoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwpOwotICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgImZpbmlzaF93cml0ZXMiKTsKLSAgfQotCi0gIC8qIGxlYXZlIHRoZSB3cml0aW5nIGZsYWcgdXAgb24gc2h1dGRvd24gdG8gcHJldmVudCBmdXJ0aGVyIHdyaXRlcyBpbiB1bmxvY2soKQotICAgICBmcm9tIHN0YXJ0aW5nICovCi0gIHQtPndyaXRpbmdfYWN0aXZlID0gMDsKLSAgaWYgKHQtPmVwICYmICF0LT5lbmRwb2ludF9yZWFkaW5nKSB7Ci0gICAgZGVzdHJveV9lbmRwb2ludChleGVjX2N0eCwgdCk7Ci0gIH0KLQotICB1bmxvY2soZXhlY19jdHgsIHQpOwotCi0gIFVOUkVGX1RSQU5TUE9SVChleGVjX2N0eCwgdCwgIndyaXRpbmciKTsKLQotICBHUFJfVElNRVJfRU5EKCJncnBjX2NodHRwMl90ZXJtaW5hdGVfd3JpdGluZyIsIDApOwotfQotCi1zdGF0aWMgdm9pZCB3cml0aW5nX2FjdGlvbihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqZ3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlvbWdyX3N1Y2Nlc3NfaWdub3JlZCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSBndDsKLSAgR1BSX1RJTUVSX0JFR0lOKCJ3cml0aW5nX2FjdGlvbiIsIDApOwotICBncnBjX2NodHRwMl9wZXJmb3JtX3dyaXRlcyhleGVjX2N0eCwgJnQtPndyaXRpbmcsIHQtPmVwKTsKLSAgR1BSX1RJTUVSX0VORCgid3JpdGluZ19hY3Rpb24iLCAwKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9hZGRfaW5jb21pbmdfZ29hd2F5KAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIHVpbnQzMl90IGdvYXdheV9lcnJvciwgZ3ByX3NsaWNlIGdvYXdheV90ZXh0KSB7Ci0gIGNoYXIgKm1zZyA9IGdwcl9kdW1wX3NsaWNlKGdvYXdheV90ZXh0LCBHUFJfRFVNUF9IRVggfCBHUFJfRFVNUF9BU0NJSSk7Ci0gIGdwcl9sb2coR1BSX0RFQlVHLCAiZ290IGdvYXdheSBbJWRdOiAlcyIsIGdvYXdheV9lcnJvciwgbXNnKTsKLSAgZ3ByX2ZyZWUobXNnKTsKLSAgZ3ByX3NsaWNlX3VucmVmKGdvYXdheV90ZXh0KTsKLSAgdHJhbnNwb3J0X2dsb2JhbC0+c2Vlbl9nb2F3YXkgPSAxOwotICBjb25uZWN0aXZpdHlfc3RhdGVfc2V0KGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBHUlBDX0NIQU5ORUxfRkFUQUxfRkFJTFVSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZ290X2dvYXdheSIpOwotfQotCi1zdGF0aWMgdm9pZCBtYXliZV9zdGFydF9zb21lX3N0cmVhbXMoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwpIHsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKLSAgdWludDMyX3Qgc3RyZWFtX2luY29taW5nX3dpbmRvdzsKLSAgLyogc3RhcnQgc3RyZWFtcyB3aGVyZSB3ZSBoYXZlIGZyZWUgZ3JwY19jaHR0cDJfc3RyZWFtIGlkcyBhbmQgZnJlZQotICAgKiBjb25jdXJyZW5jeSAqLwotICB3aGlsZSAodHJhbnNwb3J0X2dsb2JhbC0+bmV4dF9zdHJlYW1faWQgPD0gTUFYX0NMSUVOVF9TVFJFQU1fSUQgJiYKLSAgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwtPmNvbmN1cnJlbnRfc3RyZWFtX2NvdW50IDwKLSAgICAgICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsCi0gICAgICAgICAgICAgICAgIC0+c2V0dGluZ3NbR1JQQ19QRUVSX1NFVFRJTkdTXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dSUENfQ0hUVFAyX1NFVFRJTkdTX01BWF9DT05DVVJSRU5UX1NUUkVBTVNdICYmCi0gICAgICAgICBncnBjX2NodHRwMl9saXN0X3BvcF93YWl0aW5nX2Zvcl9jb25jdXJyZW5jeSh0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwpKSB7Ci0gICAgLyogc2FmZSBzaW5jZSB3ZSBjYW4ndCAobGVnYWxseSkgYmUgcGFyc2luZyB0aGlzIHN0cmVhbSB5ZXQgKi8KLSAgICBncnBjX2NodHRwMl9zdHJlYW1fcGFyc2luZyAqc3RyZWFtX3BhcnNpbmcgPQotICAgICAgICAmU1RSRUFNX0ZST01fR0xPQkFMKHN0cmVhbV9nbG9iYWwpLT5wYXJzaW5nOwotICAgIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoZ3ByX2xvZygKLSAgICAgICAgR1BSX0RFQlVHLCAiSFRUUDolczogQWxsb2NhdGluZyBuZXcgZ3JwY19jaHR0cDJfc3RyZWFtICVwIHRvIGlkICVkIiwKLSAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+aXNfY2xpZW50ID8gIkNMSSIgOiAiU1ZSIiwgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+bmV4dF9zdHJlYW1faWQpKTsKLQotICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+aWQgPT0gMCk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+aWQgPSBzdHJlYW1fcGFyc2luZy0+aWQgPSB0cmFuc3BvcnRfZ2xvYmFsLT5uZXh0X3N0cmVhbV9pZDsKLSAgICB0cmFuc3BvcnRfZ2xvYmFsLT5uZXh0X3N0cmVhbV9pZCArPSAyOwotCi0gICAgaWYgKHRyYW5zcG9ydF9nbG9iYWwtPm5leHRfc3RyZWFtX2lkID49IE1BWF9DTElFTlRfU1RSRUFNX0lEKSB7Ci0gICAgICBjb25uZWN0aXZpdHlfc3RhdGVfc2V0KGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0NIQU5ORUxfVFJBTlNJRU5UX0ZBSUxVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub19tb3JlX3N0cmVhbV9pZHMiKTsKLSAgICB9Ci0KLSAgICBzdHJlYW1fZ2xvYmFsLT5vdXRnb2luZ193aW5kb3cgPQotICAgICAgICB0cmFuc3BvcnRfZ2xvYmFsLT5zZXR0aW5nc1tHUlBDX1BFRVJfU0VUVElOR1NdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0dSUENfQ0hUVFAyX1NFVFRJTkdTX0lOSVRJQUxfV0lORE9XX1NJWkVdOwotICAgIHN0cmVhbV9wYXJzaW5nLT5pbmNvbWluZ193aW5kb3cgPSBzdHJlYW1faW5jb21pbmdfd2luZG93ID0KLSAgICAgICAgdHJhbnNwb3J0X2dsb2JhbC0+c2V0dGluZ3NbR1JQQ19TRU5UX1NFVFRJTkdTXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtHUlBDX0NIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFXTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5tYXhfcmVjdl9ieXRlcyA9Ci0gICAgICAgIEdQUl9NQVgoc3RyZWFtX2luY29taW5nX3dpbmRvdywgc3RyZWFtX2dsb2JhbC0+bWF4X3JlY3ZfYnl0ZXMpOwotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfYWRkKAotICAgICAgICAmVFJBTlNQT1JUX0ZST01fR0xPQkFMKHRyYW5zcG9ydF9nbG9iYWwpLT5uZXdfc3RyZWFtX21hcCwKLSAgICAgICAgc3RyZWFtX2dsb2JhbC0+aWQsIFNUUkVBTV9GUk9NX0dMT0JBTChzdHJlYW1fZ2xvYmFsKSk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+aW5fc3RyZWFtX21hcCA9IDE7Ci0gICAgdHJhbnNwb3J0X2dsb2JhbC0+Y29uY3VycmVudF9zdHJlYW1fY291bnQrKzsKLSAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7Ci0gIH0KLSAgLyogY2FuY2VsIG91dCBzdHJlYW1zIHRoYXQgd2lsbCBuZXZlciBiZSBzdGFydGVkICovCi0gIHdoaWxlICh0cmFuc3BvcnRfZ2xvYmFsLT5uZXh0X3N0cmVhbV9pZCA+PSBNQVhfQ0xJRU5UX1NUUkVBTV9JRCAmJgotICAgICAgICAgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd2FpdGluZ19mb3JfY29uY3VycmVuY3kodHJhbnNwb3J0X2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsKSkgewotICAgIGNhbmNlbF9mcm9tX2FwaShleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgR1JQQ19TVEFUVVNfVU5BVkFJTEFCTEUpOwotICB9Ci19Ci0KLXN0YXRpYyBncnBjX2Nsb3N1cmUgKmFkZF9jbG9zdXJlX2JhcnJpZXIoZ3JwY19jbG9zdXJlICpjbG9zdXJlKSB7Ci0gIGNsb3N1cmUtPmZpbmFsX2RhdGEgKz0gMjsKLSAgcmV0dXJuIGNsb3N1cmU7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICoqcGNsb3N1cmUsIGludCBzdWNjZXNzKSB7Ci0gIGdycGNfY2xvc3VyZSAqY2xvc3VyZSA9ICpwY2xvc3VyZTsKLSAgaWYgKGNsb3N1cmUgPT0gTlVMTCkgewotICAgIHJldHVybjsKLSAgfQotICBjbG9zdXJlLT5maW5hbF9kYXRhIC09IDI7Ci0gIGlmICghc3VjY2VzcykgewotICAgIGNsb3N1cmUtPmZpbmFsX2RhdGEgfD0gMTsKLSAgfQotICBpZiAoY2xvc3VyZS0+ZmluYWxfZGF0YSA8IDIpIHsKLSAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIGNsb3N1cmUsIGNsb3N1cmUtPmZpbmFsX2RhdGEgPT0gMCwgTlVMTCk7Ci0gIH0KLSAgKnBjbG9zdXJlID0gTlVMTDsKLX0KLQotc3RhdGljIGludCBjb250YWluc19ub25fb2tfc3RhdHVzKAotICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqYmF0Y2gpIHsKLSAgZ3JwY19saW5rZWRfbWRlbGVtICpsOwotICBmb3IgKGwgPSBiYXRjaC0+bGlzdC5oZWFkOyBsOyBsID0gbC0+bmV4dCkgewotICAgIGlmIChsLT5tZC0+a2V5ID09IEdSUENfTURTVFJfR1JQQ19TVEFUVVMgJiYKLSAgICAgICAgbC0+bWQgIT0gR1JQQ19NREVMRU1fR1JQQ19TVEFUVVNfMCkgewotICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBkb19ub3RoaW5nKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsIGJvb2wgc3VjY2Vzcykge30KLQotc3RhdGljIHZvaWQgcGVyZm9ybV9zdHJlYW1fb3BfbG9ja2VkKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsIGdycGNfdHJhbnNwb3J0X3N0cmVhbV9vcCAqb3ApIHsKLSAgZ3JwY19jbG9zdXJlICpvbl9jb21wbGV0ZTsKLQotICBHUFJfVElNRVJfQkVHSU4oInBlcmZvcm1fc3RyZWFtX29wX2xvY2tlZCIsIDApOwotCi0gIG9uX2NvbXBsZXRlID0gb3AtPm9uX2NvbXBsZXRlOwotICBpZiAob25fY29tcGxldGUgPT0gTlVMTCkgewotICAgIG9uX2NvbXBsZXRlID0gZ3JwY19jbG9zdXJlX2NyZWF0ZShkb19ub3RoaW5nLCBOVUxMKTsKLSAgfQotICAvKiB1c2UgZmluYWxfZGF0YSBhcyBhIGJhcnJpZXIgdW50aWwgZW5xdWV1ZSB0aW1lOyB0aGUgaW5pdGFsIGNvdW50ZXIgaXMKLSAgICAgZHJvcHBlZCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gKi8KLSAgb25fY29tcGxldGUtPmZpbmFsX2RhdGEgPSAyOwotCi0gIGlmIChvcC0+Y2FuY2VsX3dpdGhfc3RhdHVzICE9IEdSUENfU1RBVFVTX09LKSB7Ci0gICAgY2FuY2VsX2Zyb21fYXBpKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICBvcC0+Y2FuY2VsX3dpdGhfc3RhdHVzKTsKLSAgfQotCi0gIGlmIChvcC0+Y2xvc2Vfd2l0aF9zdGF0dXMgIT0gR1JQQ19TVEFUVVNfT0spIHsKLSAgICBjbG9zZV9mcm9tX2FwaShleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICBvcC0+Y2xvc2Vfd2l0aF9zdGF0dXMsIG9wLT5vcHRpb25hbF9jbG9zZV9tZXNzYWdlKTsKLSAgfQotCi0gIGlmIChvcC0+c2VuZF9pbml0aWFsX21ldGFkYXRhICE9IE5VTEwpIHsKLSAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPnNlbmRfaW5pdGlhbF9tZXRhZGF0YV9maW5pc2hlZCA9PSBOVUxMKTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGFfZmluaXNoZWQgPQotICAgICAgICBhZGRfY2xvc3VyZV9iYXJyaWVyKG9uX2NvbXBsZXRlKTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEgPSBvcC0+c2VuZF9pbml0aWFsX21ldGFkYXRhOwotICAgIGlmIChjb250YWluc19ub25fb2tfc3RhdHVzKHRyYW5zcG9ydF9nbG9iYWwsIG9wLT5zZW5kX2luaXRpYWxfbWV0YWRhdGEpKSB7Ci0gICAgICBzdHJlYW1fZ2xvYmFsLT5zZWVuX2Vycm9yID0gMTsKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICAgIH0KLSAgICBpZiAoIXN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCkgewotICAgICAgaWYgKHRyYW5zcG9ydF9nbG9iYWwtPmlzX2NsaWVudCkgewotICAgICAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPmlkID09IDApOwotICAgICAgICBncnBjX2NodHRwMl9saXN0X2FkZF93YWl0aW5nX2Zvcl9jb25jdXJyZW5jeSh0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsKTsKLSAgICAgICAgbWF5YmVfc3RhcnRfc29tZV9zdHJlYW1zKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCk7Ci0gICAgICAgIGdycGNfY2h0dHAyX2JlY29tZV93cml0YWJsZSh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAotICAgICAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF9pbml0aWFsX21ldGFkYXRhX2ZpbmlzaGVkLCAwKTsKLSAgICB9Ci0gIH0KLQotICBpZiAob3AtPnNlbmRfbWVzc2FnZSAhPSBOVUxMKSB7Ci0gICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2VfZmluaXNoZWQgPT0gTlVMTCk7Ci0gICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5zZW5kX21lc3NhZ2UgPT0gTlVMTCk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlX2ZpbmlzaGVkID0gYWRkX2Nsb3N1cmVfYmFycmllcihvbl9jb21wbGV0ZSk7Ci0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCkgewotICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAotICAgICAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlX2ZpbmlzaGVkLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlID0gb3AtPnNlbmRfbWVzc2FnZTsKLSAgICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5pZCAhPSAwKSB7Ci0gICAgICAgIGdycGNfY2h0dHAyX2JlY29tZV93cml0YWJsZSh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBpZiAob3AtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGEgIT0gTlVMTCkgewotICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCA9PSBOVUxMKTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkID0KLSAgICAgICAgYWRkX2Nsb3N1cmVfYmFycmllcihvbl9jb21wbGV0ZSk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSA9IG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhOwotICAgIGlmIChjb250YWluc19ub25fb2tfc3RhdHVzKHRyYW5zcG9ydF9nbG9iYWwsIG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhKSkgewotICAgICAgc3RyZWFtX2dsb2JhbC0+c2Vlbl9lcnJvciA9IDE7Ci0gICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICB9Ci0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCkgewotICAgICAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAotICAgICAgICAgIGV4ZWNfY3R4LCAmc3RyZWFtX2dsb2JhbC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCwKLSAgICAgICAgICBncnBjX21ldGFkYXRhX2JhdGNoX2lzX2VtcHR5KG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhKSk7Ci0gICAgfSBlbHNlIGlmIChzdHJlYW1fZ2xvYmFsLT5pZCAhPSAwKSB7Ci0gICAgICAvKiBUT0RPKGN0aWxsZXIpOiBjaGVjayBpZiB0aGVyZSdzIGZsb3cgY29udHJvbCBmb3IgYW55IG91dHN0YW5kaW5nCi0gICAgICAgICBieXRlcyBiZWZvcmUgZ29pbmcgd3JpdGFibGUgKi8KLSAgICAgIGdycGNfY2h0dHAyX2JlY29tZV93cml0YWJsZSh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgICB9Ci0gIH0KLQotICBpZiAob3AtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YSAhPSBOVUxMKSB7Ci0gICAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHkgPT0gTlVMTCk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhX3JlYWR5ID0KLSAgICAgICAgb3AtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSBvcC0+cmVjdl9pbml0aWFsX21ldGFkYXRhOwotICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICB9Ci0KLSAgaWYgKG9wLT5yZWN2X21lc3NhZ2UgIT0gTlVMTCkgewotICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlX3JlYWR5ID09IE5VTEwpOwotICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSA9IG9wLT5yZWN2X21lc3NhZ2VfcmVhZHk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlID0gb3AtPnJlY3ZfbWVzc2FnZTsKLSAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCAmJgotICAgICAgICAoc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLmhlYWQgPT0gTlVMTCB8fAotICAgICAgICAgc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLmhlYWQtPmlzX3RhaWwpKSB7Ci0gICAgICBpbmNvbWluZ19ieXRlX3N0cmVhbV91cGRhdGVfZmxvd19jb250cm9sKAotICAgICAgICAgIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsIHRyYW5zcG9ydF9nbG9iYWwtPnN0cmVhbV9sb29rYWhlYWQsCi0gICAgICAgICAgMCk7Ci0gICAgfQotICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICB9Ci0KLSAgaWYgKG9wLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhICE9IE5VTEwpIHsKLSAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQgPT0gTlVMTCk7Ci0gICAgc3RyZWFtX2dsb2JhbC0+cmVjdl90cmFpbGluZ19tZXRhZGF0YV9maW5pc2hlZCA9Ci0gICAgICAgIGFkZF9jbG9zdXJlX2JhcnJpZXIob25fY29tcGxldGUpOwotICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGEgPSBvcC0+cmVjdl90cmFpbGluZ19tZXRhZGF0YTsKLSAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgfQotCi0gIGdycGNfY2h0dHAyX2NvbXBsZXRlX2Nsb3N1cmVfc3RlcChleGVjX2N0eCwgJm9uX2NvbXBsZXRlLCAxKTsKLQotICBHUFJfVElNRVJfRU5EKCJwZXJmb3JtX3N0cmVhbV9vcF9sb2NrZWQiLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgcGVyZm9ybV9zdHJlYW1fb3AoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfdHJhbnNwb3J0ICpndCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RyZWFtICpncywgZ3JwY190cmFuc3BvcnRfc3RyZWFtX29wICpvcCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSAoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopZ3Q7Ci0gIGdycGNfY2h0dHAyX3N0cmVhbSAqcyA9IChncnBjX2NodHRwMl9zdHJlYW0gKilnczsKLQotICBsb2NrKHQpOwotICBwZXJmb3JtX3N0cmVhbV9vcF9sb2NrZWQoZXhlY19jdHgsICZ0LT5nbG9iYWwsICZzLT5nbG9iYWwsIG9wKTsKLSAgdW5sb2NrKGV4ZWNfY3R4LCB0KTsKLX0KLQotc3RhdGljIHZvaWQgc2VuZF9waW5nX2xvY2tlZChncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsIGdycGNfY2xvc3VyZSAqb25fcmVjdikgewotICBncnBjX2NodHRwMl9vdXRzdGFuZGluZ19waW5nICpwID0gZ3ByX21hbGxvYyhzaXplb2YoKnApKTsKLSAgcC0+bmV4dCA9ICZ0LT5nbG9iYWwucGluZ3M7Ci0gIHAtPnByZXYgPSBwLT5uZXh0LT5wcmV2OwotICBwLT5wcmV2LT5uZXh0ID0gcC0+bmV4dC0+cHJldiA9IHA7Ci0gIHAtPmlkWzBdID0gKHVpbnQ4X3QpKCh0LT5nbG9iYWwucGluZ19jb3VudGVyID4+IDU2KSAmIDB4ZmYpOwotICBwLT5pZFsxXSA9ICh1aW50OF90KSgodC0+Z2xvYmFsLnBpbmdfY291bnRlciA+PiA0OCkgJiAweGZmKTsKLSAgcC0+aWRbMl0gPSAodWludDhfdCkoKHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgPj4gNDApICYgMHhmZik7Ci0gIHAtPmlkWzNdID0gKHVpbnQ4X3QpKCh0LT5nbG9iYWwucGluZ19jb3VudGVyID4+IDMyKSAmIDB4ZmYpOwotICBwLT5pZFs0XSA9ICh1aW50OF90KSgodC0+Z2xvYmFsLnBpbmdfY291bnRlciA+PiAyNCkgJiAweGZmKTsKLSAgcC0+aWRbNV0gPSAodWludDhfdCkoKHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgPj4gMTYpICYgMHhmZik7Ci0gIHAtPmlkWzZdID0gKHVpbnQ4X3QpKCh0LT5nbG9iYWwucGluZ19jb3VudGVyID4+IDgpICYgMHhmZik7Ci0gIHAtPmlkWzddID0gKHVpbnQ4X3QpKHQtPmdsb2JhbC5waW5nX2NvdW50ZXIgJiAweGZmKTsKLSAgcC0+b25fcmVjdiA9IG9uX3JlY3Y7Ci0gIGdwcl9zbGljZV9idWZmZXJfYWRkKCZ0LT5nbG9iYWwucWJ1ZiwgZ3JwY19jaHR0cDJfcGluZ19jcmVhdGUoMCwgcC0+aWQpKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9hY2tfcGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3BhcnNpbmcgKnRyYW5zcG9ydF9wYXJzaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpvcGFxdWVfOGJ5dGVzKSB7Ci0gIGdycGNfY2h0dHAyX291dHN0YW5kaW5nX3BpbmcgKnBpbmc7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IFRSQU5TUE9SVF9GUk9NX1BBUlNJTkcodHJhbnNwb3J0X3BhcnNpbmcpOwotICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsID0gJnQtPmdsb2JhbDsKLSAgbG9jayh0KTsKLSAgZm9yIChwaW5nID0gdHJhbnNwb3J0X2dsb2JhbC0+cGluZ3MubmV4dDsgcGluZyAhPSAmdHJhbnNwb3J0X2dsb2JhbC0+cGluZ3M7Ci0gICAgICAgcGluZyA9IHBpbmctPm5leHQpIHsKLSAgICBpZiAoMCA9PSBtZW1jbXAob3BhcXVlXzhieXRlcywgcGluZy0+aWQsIDgpKSB7Ci0gICAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIHBpbmctPm9uX3JlY3YsIHRydWUsIE5VTEwpOwotICAgICAgcGluZy0+bmV4dC0+cHJldiA9IHBpbmctPnByZXY7Ci0gICAgICBwaW5nLT5wcmV2LT5uZXh0ID0gcGluZy0+bmV4dDsKLSAgICAgIGdwcl9mcmVlKHBpbmcpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0gIHVubG9jayhleGVjX2N0eCwgdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmZvcm1fdHJhbnNwb3J0X29wX2xvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnRfb3AgKm9wKSB7Ci0gIGJvb2wgY2xvc2VfdHJhbnNwb3J0ID0gZmFsc2U7Ci0KLSAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBvcC0+b25fY29uc3VtZWQsIHRydWUsIE5VTEwpOwotCi0gIGlmIChvcC0+b25fY29ubmVjdGl2aXR5X3N0YXRlX2NoYW5nZSAhPSBOVUxMKSB7Ci0gICAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfbm90aWZ5X29uX3N0YXRlX2NoYW5nZSgKLSAgICAgICAgZXhlY19jdHgsICZ0LT5jaGFubmVsX2NhbGxiYWNrLnN0YXRlX3RyYWNrZXIsIG9wLT5jb25uZWN0aXZpdHlfc3RhdGUsCi0gICAgICAgIG9wLT5vbl9jb25uZWN0aXZpdHlfc3RhdGVfY2hhbmdlKTsKLSAgfQotCi0gIGlmIChvcC0+c2VuZF9nb2F3YXkpIHsKLSAgICB0LT5nbG9iYWwuc2VudF9nb2F3YXkgPSAxOwotICAgIGdycGNfY2h0dHAyX2dvYXdheV9hcHBlbmQoCi0gICAgICAgIHQtPmdsb2JhbC5sYXN0X2luY29taW5nX3N0cmVhbV9pZCwKLSAgICAgICAgKHVpbnQzMl90KWdycGNfY2h0dHAyX2dycGNfc3RhdHVzX3RvX2h0dHAyX2Vycm9yKG9wLT5nb2F3YXlfc3RhdHVzKSwKLSAgICAgICAgZ3ByX3NsaWNlX3JlZigqb3AtPmdvYXdheV9tZXNzYWdlKSwgJnQtPmdsb2JhbC5xYnVmKTsKLSAgICBjbG9zZV90cmFuc3BvcnQgPSAhZ3JwY19jaHR0cDJfaGFzX3N0cmVhbXModCk7Ci0gIH0KLQotICBpZiAob3AtPnNldF9hY2NlcHRfc3RyZWFtKSB7Ci0gICAgdC0+Y2hhbm5lbF9jYWxsYmFjay5hY2NlcHRfc3RyZWFtID0gb3AtPnNldF9hY2NlcHRfc3RyZWFtX2ZuOwotICAgIHQtPmNoYW5uZWxfY2FsbGJhY2suYWNjZXB0X3N0cmVhbV91c2VyX2RhdGEgPQotICAgICAgICBvcC0+c2V0X2FjY2VwdF9zdHJlYW1fdXNlcl9kYXRhOwotICB9Ci0KLSAgaWYgKG9wLT5iaW5kX3BvbGxzZXQpIHsKLSAgICBhZGRfdG9fcG9sbHNldF9sb2NrZWQoZXhlY19jdHgsIHQsIG9wLT5iaW5kX3BvbGxzZXQpOwotICB9Ci0KLSAgaWYgKG9wLT5iaW5kX3BvbGxzZXRfc2V0KSB7Ci0gICAgYWRkX3RvX3BvbGxzZXRfc2V0X2xvY2tlZChleGVjX2N0eCwgdCwgb3AtPmJpbmRfcG9sbHNldF9zZXQpOwotICB9Ci0KLSAgaWYgKG9wLT5zZW5kX3BpbmcpIHsKLSAgICBzZW5kX3BpbmdfbG9ja2VkKHQsIG9wLT5zZW5kX3BpbmcpOwotICB9Ci0KLSAgaWYgKG9wLT5kaXNjb25uZWN0KSB7Ci0gICAgY2xvc2VfdHJhbnNwb3J0X2xvY2tlZChleGVjX2N0eCwgdCk7Ci0gIH0KLQotICBpZiAoY2xvc2VfdHJhbnNwb3J0KSB7Ci0gICAgY2xvc2VfdHJhbnNwb3J0X2xvY2tlZChleGVjX2N0eCwgdCk7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgcGVyZm9ybV90cmFuc3BvcnRfb3AoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfdHJhbnNwb3J0ICpndCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0X29wICpvcCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSAoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopZ3Q7Ci0KLSAgbG9jayh0KTsKLQotICAvKiBJZiB0aGVyZSdzIGEgc2V0X2FjY2VwdF9zdHJlYW0gZW5zdXJlIHRoYXQgd2UncmUgbm90IHBhcnNpbmcKLSAgICAgdG8gYXZvaWQgY2hhbmdpbmcgdGhpbmdzIG91dCBmcm9tIHVuZGVybmVhdGggKi8KLSAgaWYgKHQtPnBhcnNpbmdfYWN0aXZlICYmIG9wLT5zZXRfYWNjZXB0X3N0cmVhbSkgewotICAgIEdQUl9BU1NFUlQodC0+cG9zdF9wYXJzaW5nX29wID09IE5VTEwpOwotICAgIHQtPnBvc3RfcGFyc2luZ19vcCA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpvcCkpOwotICAgIG1lbWNweSh0LT5wb3N0X3BhcnNpbmdfb3AsIG9wLCBzaXplb2YoKm9wKSk7Ci0gIH0gZWxzZSB7Ci0gICAgcGVyZm9ybV90cmFuc3BvcnRfb3BfbG9ja2VkKGV4ZWNfY3R4LCB0LCBvcCk7Ci0gIH0KLQotICB1bmxvY2soZXhlY19jdHgsIHQpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogSU5QVVQgUFJPQ0VTU0lORwotICovCi0KLXN0YXRpYyB2b2lkIGNoZWNrX3JlYWRfb3BzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCkgewotICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsOwotICBncnBjX2J5dGVfc3RyZWFtICpiczsKLSAgd2hpbGUgKAotICAgICAgZ3JwY19jaHR0cDJfbGlzdF9wb3BfY2hlY2tfcmVhZF9vcHModHJhbnNwb3J0X2dsb2JhbCwgJnN0cmVhbV9nbG9iYWwpKSB7Ci0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSAhPSBOVUxMICYmCi0gICAgICAgIHN0cmVhbV9nbG9iYWwtPnB1Ymxpc2hlZF9pbml0aWFsX21ldGFkYXRhKSB7Ci0gICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfcHVibGlzaCgKLSAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+cmVjZWl2ZWRfaW5pdGlhbF9tZXRhZGF0YSwKLSAgICAgICAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X2luaXRpYWxfbWV0YWRhdGEpOwotICAgICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKAotICAgICAgICAgIGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsLT5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHksIHRydWUsIE5VTEwpOwotICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9pbml0aWFsX21ldGFkYXRhX3JlYWR5ID0gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSAhPSBOVUxMKSB7Ci0gICAgICB3aGlsZSAoc3RyZWFtX2dsb2JhbC0+c2Vlbl9lcnJvciAmJgotICAgICAgICAgICAgIChicyA9IGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX3BvcCgKLSAgICAgICAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGdycGNfYnl0ZV9zdHJlYW1fZGVzdHJveShleGVjX2N0eCwgYnMpOwotICAgICAgfQotICAgICAgaWYgKHN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcy5oZWFkICE9IE5VTEwpIHsKLSAgICAgICAgKnN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZSA9IGdycGNfY2h0dHAyX2luY29taW5nX2ZyYW1lX3F1ZXVlX3BvcCgKLSAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5pbmNvbWluZ19mcmFtZXMpOwotICAgICAgICBHUFJfQVNTRVJUKCpzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2UgIT0gTlVMTCk7Ci0gICAgICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlX3JlYWR5LCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfbWVzc2FnZV9yZWFkeSA9IE5VTEw7Ci0gICAgICB9IGVsc2UgaWYgKHN0cmVhbV9nbG9iYWwtPnB1Ymxpc2hlZF90cmFpbGluZ19tZXRhZGF0YSkgewotICAgICAgICAqc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlID0gTlVMTDsKLSAgICAgICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBzdHJlYW1fZ2xvYmFsLT5yZWN2X21lc3NhZ2VfcmVhZHksIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgc3RyZWFtX2dsb2JhbC0+cmVjdl9tZXNzYWdlX3JlYWR5ID0gTlVMTDsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQgIT0gTlVMTCAmJgotICAgICAgICBzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZCAmJiBzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKLSAgICAgIHdoaWxlIChzdHJlYW1fZ2xvYmFsLT5zZWVuX2Vycm9yICYmCi0gICAgICAgICAgICAgKGJzID0gZ3JwY19jaHR0cDJfaW5jb21pbmdfZnJhbWVfcXVldWVfcG9wKAotICAgICAgICAgICAgICAgICAgJnN0cmVhbV9nbG9iYWwtPmluY29taW5nX2ZyYW1lcykpICE9IE5VTEwpIHsKLSAgICAgICAgZ3JwY19ieXRlX3N0cmVhbV9kZXN0cm95KGV4ZWNfY3R4LCBicyk7Ci0gICAgICB9Ci0gICAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aW5jb21pbmdfZnJhbWVzLmhlYWQgPT0gTlVMTCkgewotICAgICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfcHVibGlzaCgKLSAgICAgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5yZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YSwKLSAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGEpOwotICAgICAgICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoCi0gICAgICAgICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQsIDEpOwotICAgICAgfQotICAgIH0KLSAgfQotfQotCi1zdGF0aWMgdm9pZCByZW1vdmVfc3RyZWFtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkKSB7Ci0gIHNpemVfdCBuZXdfc3RyZWFtX2NvdW50OwotICBncnBjX2NodHRwMl9zdHJlYW0gKnMgPQotICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9kZWxldGUoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCwgaWQpOwotICBpZiAoIXMpIHsKLSAgICBzID0gZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9kZWxldGUoJnQtPm5ld19zdHJlYW1fbWFwLCBpZCk7Ci0gIH0KLSAgR1BSX0FTU0VSVChzKTsKLSAgcy0+Z2xvYmFsLmluX3N0cmVhbV9tYXAgPSAwOwotICBpZiAodC0+cGFyc2luZy5pbmNvbWluZ19zdHJlYW0gPT0gJnMtPnBhcnNpbmcpIHsKLSAgICB0LT5wYXJzaW5nLmluY29taW5nX3N0cmVhbSA9IE5VTEw7Ci0gICAgZ3JwY19jaHR0cDJfcGFyc2luZ19iZWNvbWVfc2tpcF9wYXJzZXIoZXhlY19jdHgsICZ0LT5wYXJzaW5nKTsKLSAgfQotICBpZiAocy0+cGFyc2luZy5kYXRhX3BhcnNlci5wYXJzaW5nX2ZyYW1lICE9IE5VTEwpIHsKLSAgICBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9maW5pc2hlZCgKLSAgICAgICAgZXhlY19jdHgsIHMtPnBhcnNpbmcuZGF0YV9wYXJzZXIucGFyc2luZ19mcmFtZSwgMCwgMCk7Ci0gICAgcy0+cGFyc2luZy5kYXRhX3BhcnNlci5wYXJzaW5nX2ZyYW1lID0gTlVMTDsKLSAgfQotCi0gIGlmIChncnBjX2NodHRwMl91bnJlZ2lzdGVyX3N0cmVhbSh0LCBzKSAmJiB0LT5nbG9iYWwuc2VudF9nb2F3YXkpIHsKLSAgICBjbG9zZV90cmFuc3BvcnRfbG9ja2VkKGV4ZWNfY3R4LCB0KTsKLSAgfQotICBpZiAoZ3JwY19jaHR0cDJfbGlzdF9yZW1vdmVfd3JpdGFibGVfc3RyZWFtKCZ0LT5nbG9iYWwsICZzLT5nbG9iYWwpKSB7Ci0gICAgR1JQQ19DSFRUUDJfU1RSRUFNX1VOUkVGKGV4ZWNfY3R4LCAmcy0+Z2xvYmFsLCAiY2h0dHAyX3dyaXRpbmciKTsKLSAgfQotCi0gIG5ld19zdHJlYW1fY291bnQgPSBncnBjX2NodHRwMl9zdHJlYW1fbWFwX3NpemUoJnQtPnBhcnNpbmdfc3RyZWFtX21hcCkgKwotICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9zaXplKCZ0LT5uZXdfc3RyZWFtX21hcCk7Ci0gIEdQUl9BU1NFUlQobmV3X3N0cmVhbV9jb3VudCA8PSBVSU5UMzJfTUFYKTsKLSAgaWYgKG5ld19zdHJlYW1fY291bnQgIT0gdC0+Z2xvYmFsLmNvbmN1cnJlbnRfc3RyZWFtX2NvdW50KSB7Ci0gICAgdC0+Z2xvYmFsLmNvbmN1cnJlbnRfc3RyZWFtX2NvdW50ID0gKHVpbnQzMl90KW5ld19zdHJlYW1fY291bnQ7Ci0gICAgbWF5YmVfc3RhcnRfc29tZV9zdHJlYW1zKGV4ZWNfY3R4LCAmdC0+Z2xvYmFsKTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBjYW5jZWxfZnJvbV9hcGkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzKSB7Ci0gIGlmIChzdHJlYW1fZ2xvYmFsLT5pZCAhPSAwKSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoCi0gICAgICAgICZ0cmFuc3BvcnRfZ2xvYmFsLT5xYnVmLAotICAgICAgICBncnBjX2NodHRwMl9yc3Rfc3RyZWFtX2NyZWF0ZSgKLSAgICAgICAgICAgIHN0cmVhbV9nbG9iYWwtPmlkLAotICAgICAgICAgICAgKHVpbnQzMl90KWdycGNfY2h0dHAyX2dycGNfc3RhdHVzX3RvX2h0dHAyX2Vycm9yKHN0YXR1cykpKTsKLSAgfQotICBncnBjX2NodHRwMl9mYWtlX3N0YXR1cyhleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfZmFrZV9zdGF0dXMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzLCBncHJfc2xpY2UgKnNsaWNlKSB7Ci0gIGlmIChzdGF0dXMgIT0gR1JQQ19TVEFUVVNfT0spIHsKLSAgICBzdHJlYW1fZ2xvYmFsLT5zZWVuX2Vycm9yID0gMTsKLSAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jaGVja19yZWFkX29wcyh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsKTsKLSAgfQotICAvKiBzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkIGdpdmVzIHVzIGEKLSAgICAgbGFzdCBjaGFuY2UgcmVwbGFjZW1lbnQ6IHdlJ3ZlIHJlY2VpdmVkIHRyYWlsaW5nIG1ldGFkYXRhLAotICAgICBidXQgc29tZXRoaW5nIG1vcmUgaW1wb3J0YW50IGhhcyBiZWNvbWUgYXZhaWxhYmxlIHRvIHNpZ25hbAotICAgICB0byB0aGUgdXBwZXIgbGF5ZXJzIC0gZHJvcCB3aGF0IHdlJ3ZlIGdvdCwgYW5kIHRoZW4gcHVibGlzaAotICAgICB3aGF0IHdlIHdhbnQgLSB3aGljaCBpcyBzYWZlIGJlY2F1c2Ugd2UgaGF2ZW4ndCB0b2xkIGFueW9uZQotICAgICBhYm91dCB0aGUgbWV0YWRhdGEgeWV0ICovCi0gIGlmICghc3RyZWFtX2dsb2JhbC0+cHVibGlzaGVkX3RyYWlsaW5nX21ldGFkYXRhIHx8Ci0gICAgICBzdHJlYW1fZ2xvYmFsLT5yZWN2X3RyYWlsaW5nX21ldGFkYXRhX2ZpbmlzaGVkICE9IE5VTEwpIHsKLSAgICBjaGFyIHN0YXR1c19zdHJpbmdbR1BSX0xUT0FfTUlOX0JVRlNJWkVdOwotICAgIGdwcl9sdG9hKHN0YXR1cywgc3RhdHVzX3N0cmluZyk7Ci0gICAgZ3JwY19jaHR0cDJfaW5jb21pbmdfbWV0YWRhdGFfYnVmZmVyX2FkZCgKLSAgICAgICAgJnN0cmVhbV9nbG9iYWwtPnJlY2VpdmVkX3RyYWlsaW5nX21ldGFkYXRhLAotICAgICAgICBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3MoCi0gICAgICAgICAgICBHUlBDX01EU1RSX0dSUENfU1RBVFVTLCBncnBjX21kc3RyX2Zyb21fc3RyaW5nKHN0YXR1c19zdHJpbmcpKSk7Ci0gICAgaWYgKHNsaWNlKSB7Ci0gICAgICBncnBjX2NodHRwMl9pbmNvbWluZ19tZXRhZGF0YV9idWZmZXJfYWRkKAotICAgICAgICAgICZzdHJlYW1fZ2xvYmFsLT5yZWNlaXZlZF90cmFpbGluZ19tZXRhZGF0YSwKLSAgICAgICAgICBncnBjX21kZWxlbV9mcm9tX21ldGFkYXRhX3N0cmluZ3MoCi0gICAgICAgICAgICAgIEdSUENfTURTVFJfR1JQQ19NRVNTQUdFLAotICAgICAgICAgICAgICBncnBjX21kc3RyX2Zyb21fc2xpY2UoZ3ByX3NsaWNlX3JlZigqc2xpY2UpKSkpOwotICAgIH0KLSAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgPSAxOwotICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICB9Ci0gIGlmIChzbGljZSkgewotICAgIGdwcl9zbGljZV91bnJlZigqc2xpY2UpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGZhaWxfcGVuZGluZ193cml0ZXMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3N0cmVhbV9nbG9iYWwgKnN0cmVhbV9nbG9iYWwpIHsKLSAgZ3JwY19jaHR0cDJfY29tcGxldGVfY2xvc3VyZV9zdGVwKAotICAgICAgZXhlY19jdHgsICZzdHJlYW1fZ2xvYmFsLT5zZW5kX2luaXRpYWxfbWV0YWRhdGFfZmluaXNoZWQsIDApOwotICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoCi0gICAgICBleGVjX2N0eCwgJnN0cmVhbV9nbG9iYWwtPnNlbmRfdHJhaWxpbmdfbWV0YWRhdGFfZmluaXNoZWQsIDApOwotICBncnBjX2NodHRwMl9jb21wbGV0ZV9jbG9zdXJlX3N0ZXAoZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbC0+c2VuZF9tZXNzYWdlX2ZpbmlzaGVkLCAwKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9tYXJrX3N0cmVhbV9jbG9zZWQoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwgaW50IGNsb3NlX3JlYWRzLAotICAgIGludCBjbG9zZV93cml0ZXMpIHsKLSAgaWYgKHN0cmVhbV9nbG9iYWwtPnJlYWRfY2xvc2VkICYmIHN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCkgewotICAgIC8qIGFscmVhZHkgY2xvc2VkICovCi0gICAgcmV0dXJuOwotICB9Ci0gIGdycGNfY2h0dHAyX2xpc3RfYWRkX2NoZWNrX3JlYWRfb3BzKHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwpOwotICBpZiAoY2xvc2VfcmVhZHMgJiYgIXN0cmVhbV9nbG9iYWwtPnJlYWRfY2xvc2VkKSB7Ci0gICAgc3RyZWFtX2dsb2JhbC0+cmVhZF9jbG9zZWQgPSAxOwotICAgIHN0cmVhbV9nbG9iYWwtPnB1Ymxpc2hlZF9pbml0aWFsX21ldGFkYXRhID0gMTsKLSAgICBzdHJlYW1fZ2xvYmFsLT5wdWJsaXNoZWRfdHJhaWxpbmdfbWV0YWRhdGEgPSAxOwotICB9Ci0gIGlmIChjbG9zZV93cml0ZXMgJiYgIXN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCkgewotICAgIHN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCA9IDE7Ci0gICAgaWYgKFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKS0+d3JpdGluZ19hY3RpdmUpIHsKLSAgICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9SRUYoc3RyZWFtX2dsb2JhbCwgImZpbmlzaF93cml0ZXMiKTsKLSAgICAgIGdycGNfY2h0dHAyX2xpc3RfYWRkX2Nsb3NlZF93YWl0aW5nX2Zvcl93cml0aW5nKHRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsKTsKLSAgICB9IGVsc2UgewotICAgICAgZmFpbF9wZW5kaW5nX3dyaXRlcyhleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCk7Ci0gICAgfQotICB9Ci0gIGlmIChzdHJlYW1fZ2xvYmFsLT5yZWFkX2Nsb3NlZCAmJiBzdHJlYW1fZ2xvYmFsLT53cml0ZV9jbG9zZWQpIHsKLSAgICBpZiAoc3RyZWFtX2dsb2JhbC0+aWQgIT0gMCAmJgotICAgICAgICBUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCktPnBhcnNpbmdfYWN0aXZlKSB7Ci0gICAgICBncnBjX2NodHRwMl9saXN0X2FkZF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZyh0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2dsb2JhbCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmIChzdHJlYW1fZ2xvYmFsLT5pZCAhPSAwKSB7Ci0gICAgICAgIHJlbW92ZV9zdHJlYW0oZXhlY19jdHgsIFRSQU5TUE9SVF9GUk9NX0dMT0JBTCh0cmFuc3BvcnRfZ2xvYmFsKSwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsLT5pZCk7Ci0gICAgICB9Ci0gICAgICBHUlBDX0NIVFRQMl9TVFJFQU1fVU5SRUYoZXhlY19jdHgsIHN0cmVhbV9nbG9iYWwsICJjaHR0cDIiKTsKLSAgICB9Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgY2xvc2VfZnJvbV9hcGkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfc3RhdHVzX2NvZGUgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlICpvcHRpb25hbF9tZXNzYWdlKSB7Ci0gIGdwcl9zbGljZSBoZHI7Ci0gIGdwcl9zbGljZSBzdGF0dXNfaGRyOwotICBncHJfc2xpY2UgbWVzc2FnZV9wZng7Ci0gIHVpbnQ4X3QgKnA7Ci0gIHVpbnQzMl90IGxlbiA9IDA7Ci0KLSAgR1BSX0FTU0VSVChzdGF0dXMgPj0gMCAmJiAoaW50KXN0YXR1cyA8IDEwMCk7Ci0KLSAgR1BSX0FTU0VSVChzdHJlYW1fZ2xvYmFsLT5pZCAhPSAwKTsKLQotICAvKiBIYW5kIHJvbGwgYSBoZWFkZXIgYmxvY2suCi0gICAgIFRoaXMgaXMgdW5uZWNlc3NhcmlseSB1Z2x5IC0gYXQgc29tZSBwb2ludCB3ZSBzaG91bGQgZmluZCBhIG1vcmUgZWxlZ2FudAotICAgICBzb2x1dGlvbi4KLSAgICAgSXQncyBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0aGF0IG91ciBzZW5kIG1hY2hpbmVyeSB3b3VsZCBiZSBkZWFkIGJ5IHRoZQotICAgICB0aW1lIHdlIGdvdCBhcm91bmQgdG8gc2VuZGluZyB0aGlzLCBzbyBpbnN0ZWFkIHdlIGlnbm9yZSBIUEFDSyBjb21wcmVzc2lvbgotICAgICBhbmQganVzdCB3cml0ZSB0aGUgdW5jb21wcmVzc2VkIGJ5dGVzIG9udG8gdGhlIHdpcmUuICovCi0gIHN0YXR1c19oZHIgPSBncHJfc2xpY2VfbWFsbG9jKDE1ICsgKHN0YXR1cyA+PSAxMCkpOwotICBwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihzdGF0dXNfaGRyKTsKLSAgKnArKyA9IDB4NDA7IC8qIGxpdGVyYWwgaGVhZGVyICovCi0gICpwKysgPSAxMTsgICAvKiBsZW4oZ3JwYy1zdGF0dXMpICovCi0gICpwKysgPSAnZyc7Ci0gICpwKysgPSAncic7Ci0gICpwKysgPSAncCc7Ci0gICpwKysgPSAnYyc7Ci0gICpwKysgPSAnLSc7Ci0gICpwKysgPSAncyc7Ci0gICpwKysgPSAndCc7Ci0gICpwKysgPSAnYSc7Ci0gICpwKysgPSAndCc7Ci0gICpwKysgPSAndSc7Ci0gICpwKysgPSAncyc7Ci0gIGlmIChzdGF0dXMgPCAxMCkgewotICAgICpwKysgPSAxOwotICAgICpwKysgPSAodWludDhfdCkoJzAnICsgc3RhdHVzKTsKLSAgfSBlbHNlIHsKLSAgICAqcCsrID0gMjsKLSAgICAqcCsrID0gKHVpbnQ4X3QpKCcwJyArIChzdGF0dXMgLyAxMCkpOwotICAgICpwKysgPSAodWludDhfdCkoJzAnICsgKHN0YXR1cyAlIDEwKSk7Ci0gIH0KLSAgR1BSX0FTU0VSVChwID09IEdQUl9TTElDRV9FTkRfUFRSKHN0YXR1c19oZHIpKTsKLSAgbGVuICs9ICh1aW50MzJfdClHUFJfU0xJQ0VfTEVOR1RIKHN0YXR1c19oZHIpOwotCi0gIGlmIChvcHRpb25hbF9tZXNzYWdlKSB7Ci0gICAgR1BSX0FTU0VSVChHUFJfU0xJQ0VfTEVOR1RIKCpvcHRpb25hbF9tZXNzYWdlKSA8IDEyNyk7Ci0gICAgbWVzc2FnZV9wZnggPSBncHJfc2xpY2VfbWFsbG9jKDE1KTsKLSAgICBwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihtZXNzYWdlX3BmeCk7Ci0gICAgKnArKyA9IDB4NDA7Ci0gICAgKnArKyA9IDEyOyAvKiBsZW4oZ3JwYy1tZXNzYWdlKSAqLwotICAgICpwKysgPSAnZyc7Ci0gICAgKnArKyA9ICdyJzsKLSAgICAqcCsrID0gJ3AnOwotICAgICpwKysgPSAnYyc7Ci0gICAgKnArKyA9ICctJzsKLSAgICAqcCsrID0gJ20nOwotICAgICpwKysgPSAnZSc7Ci0gICAgKnArKyA9ICdzJzsKLSAgICAqcCsrID0gJ3MnOwotICAgICpwKysgPSAnYSc7Ci0gICAgKnArKyA9ICdnJzsKLSAgICAqcCsrID0gJ2UnOwotICAgICpwKysgPSAodWludDhfdClHUFJfU0xJQ0VfTEVOR1RIKCpvcHRpb25hbF9tZXNzYWdlKTsKLSAgICBHUFJfQVNTRVJUKHAgPT0gR1BSX1NMSUNFX0VORF9QVFIobWVzc2FnZV9wZngpKTsKLSAgICBsZW4gKz0gKHVpbnQzMl90KUdQUl9TTElDRV9MRU5HVEgobWVzc2FnZV9wZngpOwotICAgIGxlbiArPSAodWludDMyX3QpR1BSX1NMSUNFX0xFTkdUSCgqb3B0aW9uYWxfbWVzc2FnZSk7Ci0gIH0KLQotICBoZHIgPSBncHJfc2xpY2VfbWFsbG9jKDkpOwotICBwID0gR1BSX1NMSUNFX1NUQVJUX1BUUihoZHIpOwotICAqcCsrID0gKHVpbnQ4X3QpKGxlbiA+PiAxNik7Ci0gICpwKysgPSAodWludDhfdCkobGVuID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKGxlbik7Ci0gICpwKysgPSBHUlBDX0NIVFRQMl9GUkFNRV9IRUFERVI7Ci0gICpwKysgPSBHUlBDX0NIVFRQMl9EQVRBX0ZMQUdfRU5EX1NUUkVBTSB8IEdSUENfQ0hUVFAyX0RBVEFfRkxBR19FTkRfSEVBREVSUzsKLSAgKnArKyA9ICh1aW50OF90KShzdHJlYW1fZ2xvYmFsLT5pZCA+PiAyNCk7Ci0gICpwKysgPSAodWludDhfdCkoc3RyZWFtX2dsb2JhbC0+aWQgPj4gMTYpOwotICAqcCsrID0gKHVpbnQ4X3QpKHN0cmVhbV9nbG9iYWwtPmlkID4+IDgpOwotICAqcCsrID0gKHVpbnQ4X3QpKHN0cmVhbV9nbG9iYWwtPmlkKTsKLSAgR1BSX0FTU0VSVChwID09IEdQUl9TTElDRV9FTkRfUFRSKGhkcikpOwotCi0gIGdwcl9zbGljZV9idWZmZXJfYWRkKCZ0cmFuc3BvcnRfZ2xvYmFsLT5xYnVmLCBoZHIpOwotICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1Ziwgc3RhdHVzX2hkcik7Ci0gIGlmIChvcHRpb25hbF9tZXNzYWdlKSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJnRyYW5zcG9ydF9nbG9iYWwtPnFidWYsIG1lc3NhZ2VfcGZ4KTsKLSAgICBncHJfc2xpY2VfYnVmZmVyX2FkZCgmdHJhbnNwb3J0X2dsb2JhbC0+cWJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2VfcmVmKCpvcHRpb25hbF9tZXNzYWdlKSk7Ci0gIH0KLQotICBncHJfc2xpY2VfYnVmZmVyX2FkZCgKLSAgICAgICZ0cmFuc3BvcnRfZ2xvYmFsLT5xYnVmLAotICAgICAgZ3JwY19jaHR0cDJfcnN0X3N0cmVhbV9jcmVhdGUoc3RyZWFtX2dsb2JhbC0+aWQsIEdSUENfQ0hUVFAyX05PX0VSUk9SKSk7Ci0KLSAgaWYgKG9wdGlvbmFsX21lc3NhZ2UpIHsKLSAgICBncHJfc2xpY2VfcmVmKCpvcHRpb25hbF9tZXNzYWdlKTsKLSAgfQotICBncnBjX2NodHRwMl9mYWtlX3N0YXR1cyhleGVjX2N0eCwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF9tZXNzYWdlKTsKLSAgZ3JwY19jaHR0cDJfbWFya19zdHJlYW1fY2xvc2VkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhbmNlbF9zdHJlYW1fY2IoZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsKSB7Ci0gIGNhbmNlbF9mcm9tX2FwaSh1c2VyX2RhdGEsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICBHUlBDX1NUQVRVU19VTkFWQUlMQUJMRSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGVuZF9hbGxfdGhlX2NhbGxzKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7Ci0gIGdycGNfY2h0dHAyX2Zvcl9hbGxfc3RyZWFtcygmdC0+Z2xvYmFsLCBleGVjX2N0eCwgY2FuY2VsX3N0cmVhbV9jYik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyb3BfY29ubmVjdGlvbihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0KSB7Ci0gIGNsb3NlX3RyYW5zcG9ydF9sb2NrZWQoZXhlY19jdHgsIHQpOwotICBlbmRfYWxsX3RoZV9jYWxscyhleGVjX2N0eCwgdCk7Ci19Ci0KLS8qKiB1cGRhdGUgd2luZG93IGZyb20gYSBzZXR0aW5ncyBjaGFuZ2UgKi8KLXN0YXRpYyB2b2lkIHVwZGF0ZV9nbG9iYWxfd2luZG93KHZvaWQgKmFyZ3MsIHVpbnQzMl90IGlkLCB2b2lkICpzdHJlYW0pIHsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gYXJnczsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtICpzID0gc3RyZWFtOwotICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsID0gJnQtPmdsb2JhbDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCA9ICZzLT5nbG9iYWw7Ci0gIGludCB3YXNfemVybzsKLSAgaW50IGlzX3plcm87Ci0gIGludDY0X3QgaW5pdGlhbF93aW5kb3dfdXBkYXRlID0gdC0+cGFyc2luZy5pbml0aWFsX3dpbmRvd191cGRhdGU7Ci0KLSAgd2FzX3plcm8gPSBzdHJlYW1fZ2xvYmFsLT5vdXRnb2luZ193aW5kb3cgPD0gMDsKLSAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJzZXR0aW5ncyIsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRnb2luZ193aW5kb3csIGluaXRpYWxfd2luZG93X3VwZGF0ZSk7Ci0gIGlzX3plcm8gPSBzdHJlYW1fZ2xvYmFsLT5vdXRnb2luZ193aW5kb3cgPD0gMDsKLQotICBpZiAod2FzX3plcm8gJiYgIWlzX3plcm8pIHsKLSAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgcmVhZF9lcnJvcl9sb2NrZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQpIHsKLSAgdC0+ZW5kcG9pbnRfcmVhZGluZyA9IDA7Ci0gIGlmICghdC0+d3JpdGluZ19hY3RpdmUgJiYgdC0+ZXApIHsKLSAgICBkZXN0cm95X2VuZHBvaW50KGV4ZWNfY3R4LCB0KTsKLSAgfQotfQotCi0vKiB0Y3AgcmVhZCBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgcmVjdl9kYXRhKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICp0cCwgYm9vbCBzdWNjZXNzKSB7Ci0gIHNpemVfdCBpOwotICBpbnQga2VlcF9yZWFkaW5nID0gMDsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gdHA7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9nbG9iYWwgKnRyYW5zcG9ydF9nbG9iYWwgPSAmdC0+Z2xvYmFsOwotICBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcgPSAmdC0+cGFyc2luZzsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbDsKLQotICBHUFJfVElNRVJfQkVHSU4oInJlY3ZfZGF0YSIsIDApOwotCi0gIGxvY2sodCk7Ci0gIGkgPSAwOwotICBHUFJfQVNTRVJUKCF0LT5wYXJzaW5nX2FjdGl2ZSk7Ci0gIGlmICghdC0+Y2xvc2VkKSB7Ci0gICAgdC0+cGFyc2luZ19hY3RpdmUgPSAxOwotICAgIC8qIG1lcmdlIHN0cmVhbSBsaXN0cyAqLwotICAgIGdycGNfY2h0dHAyX3N0cmVhbV9tYXBfbW92ZV9pbnRvKCZ0LT5uZXdfc3RyZWFtX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdC0+cGFyc2luZ19zdHJlYW1fbWFwKTsKLSAgICBncnBjX2NodHRwMl9wcmVwYXJlX3RvX3JlYWQodHJhbnNwb3J0X2dsb2JhbCwgdHJhbnNwb3J0X3BhcnNpbmcpOwotICAgIGdwcl9tdV91bmxvY2soJnQtPm11KTsKLSAgICBHUFJfVElNRVJfQkVHSU4oInJlY3ZfZGF0YS5wYXJzZSIsIDApOwotICAgIGZvciAoOyBpIDwgdC0+cmVhZF9idWZmZXIuY291bnQgJiYKLSAgICAgICAgICAgZ3JwY19jaHR0cDJfcGVyZm9ybV9yZWFkKGV4ZWNfY3R4LCB0cmFuc3BvcnRfcGFyc2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPnJlYWRfYnVmZmVyLnNsaWNlc1tpXSk7Ci0gICAgICAgICBpKyspCi0gICAgICA7Ci0gICAgR1BSX1RJTUVSX0VORCgicmVjdl9kYXRhLnBhcnNlIiwgMCk7Ci0gICAgZ3ByX211X2xvY2soJnQtPm11KTsKLSAgICAvKiBjb3B5IHBhcnNpbmcgcWJ1ZiB0byBnbG9iYWwgcWJ1ZiAqLwotICAgIGdwcl9zbGljZV9idWZmZXJfbW92ZV9pbnRvKCZ0LT5wYXJzaW5nLnFidWYsICZ0LT5nbG9iYWwucWJ1Zik7Ci0gICAgaWYgKGkgIT0gdC0+cmVhZF9idWZmZXIuY291bnQpIHsKLSAgICAgIHVubG9jayhleGVjX2N0eCwgdCk7Ci0gICAgICBsb2NrKHQpOwotICAgICAgZHJvcF9jb25uZWN0aW9uKGV4ZWNfY3R4LCB0KTsKLSAgICB9Ci0gICAgLyogbWVyZ2Ugc3RyZWFtIGxpc3RzICovCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX21hcF9tb3ZlX2ludG8oJnQtPm5ld19zdHJlYW1fbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0LT5wYXJzaW5nX3N0cmVhbV9tYXApOwotICAgIHRyYW5zcG9ydF9nbG9iYWwtPmNvbmN1cnJlbnRfc3RyZWFtX2NvdW50ID0KLSAgICAgICAgKHVpbnQzMl90KWdycGNfY2h0dHAyX3N0cmVhbV9tYXBfc2l6ZSgmdC0+cGFyc2luZ19zdHJlYW1fbWFwKTsKLSAgICBpZiAodHJhbnNwb3J0X3BhcnNpbmctPmluaXRpYWxfd2luZG93X3VwZGF0ZSAhPSAwKSB7Ci0gICAgICBncnBjX2NodHRwMl9zdHJlYW1fbWFwX2Zvcl9lYWNoKCZ0LT5wYXJzaW5nX3N0cmVhbV9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9nbG9iYWxfd2luZG93LCB0KTsKLSAgICAgIHRyYW5zcG9ydF9wYXJzaW5nLT5pbml0aWFsX3dpbmRvd191cGRhdGUgPSAwOwotICAgIH0KLSAgICAvKiBoYW5kbGUgaGlnaGVyIGxldmVsIHRoaW5ncyAqLwotICAgIGdycGNfY2h0dHAyX3B1Ymxpc2hfcmVhZHMoZXhlY19jdHgsIHRyYW5zcG9ydF9nbG9iYWwsIHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgICB0LT5wYXJzaW5nX2FjdGl2ZSA9IDA7Ci0gICAgLyogaGFuZGxlIGRlbGF5ZWQgdHJhbnNwb3J0IG9wcyAoaWYgdGhlcmUgaXMgb25lKSAqLwotICAgIGlmICh0LT5wb3N0X3BhcnNpbmdfb3ApIHsKLSAgICAgIGdycGNfdHJhbnNwb3J0X29wICpvcCA9IHQtPnBvc3RfcGFyc2luZ19vcDsKLSAgICAgIHQtPnBvc3RfcGFyc2luZ19vcCA9IE5VTEw7Ci0gICAgICBwZXJmb3JtX3RyYW5zcG9ydF9vcF9sb2NrZWQoZXhlY19jdHgsIHQsIG9wKTsKLSAgICAgIGdwcl9mcmVlKG9wKTsKLSAgICB9Ci0gICAgLyogaWYgYSBzdHJlYW0gaXMgaW4gdGhlIHN0cmVhbSBtYXAsIGFuZCBnZXRzIGNhbmNlbGxlZCwgd2UgbmVlZCB0byBlbnN1cmUKLSAgICAgKiB3ZSBhcmUgbm90IHBhcnNpbmcgYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGNhbmNlbGxhdGlvbiB0byBrZWVwIHRoaW5ncyBpbgotICAgICAqIGEgc2FuZSBzdGF0ZSAqLwotICAgIHdoaWxlIChncnBjX2NodHRwMl9saXN0X3BvcF9jbG9zZWRfd2FpdGluZ19mb3JfcGFyc2luZyh0cmFuc3BvcnRfZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2dsb2JhbCkpIHsKLSAgICAgIEdQUl9BU1NFUlQoc3RyZWFtX2dsb2JhbC0+aW5fc3RyZWFtX21hcCk7Ci0gICAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPndyaXRlX2Nsb3NlZCk7Ci0gICAgICBHUFJfQVNTRVJUKHN0cmVhbV9nbG9iYWwtPnJlYWRfY2xvc2VkKTsKLSAgICAgIHJlbW92ZV9zdHJlYW0oZXhlY19jdHgsIHQsIHN0cmVhbV9nbG9iYWwtPmlkKTsKLSAgICAgIEdSUENfQ0hUVFAyX1NUUkVBTV9VTlJFRihleGVjX2N0eCwgc3RyZWFtX2dsb2JhbCwgImNodHRwMiIpOwotICAgIH0KLSAgfQotICBpZiAoIXN1Y2Nlc3MgfHwgaSAhPSB0LT5yZWFkX2J1ZmZlci5jb3VudCB8fCB0LT5jbG9zZWQpIHsKLSAgICBkcm9wX2Nvbm5lY3Rpb24oZXhlY19jdHgsIHQpOwotICAgIHJlYWRfZXJyb3JfbG9ja2VkKGV4ZWNfY3R4LCB0KTsKLSAgfSBlbHNlIGlmICghdC0+Y2xvc2VkKSB7Ci0gICAga2VlcF9yZWFkaW5nID0gMTsKLSAgICBSRUZfVFJBTlNQT1JUKHQsICJrZWVwX3JlYWRpbmciKTsKLSAgICBwcmV2ZW50X2VuZHBvaW50X3NodXRkb3duKHQpOwotICB9Ci0gIGdwcl9zbGljZV9idWZmZXJfcmVzZXRfYW5kX3VucmVmKCZ0LT5yZWFkX2J1ZmZlcik7Ci0gIHVubG9jayhleGVjX2N0eCwgdCk7Ci0KLSAgaWYgKGtlZXBfcmVhZGluZykgewotICAgIGdycGNfZW5kcG9pbnRfcmVhZChleGVjX2N0eCwgdC0+ZXAsICZ0LT5yZWFkX2J1ZmZlciwgJnQtPnJlY3ZfZGF0YSk7Ci0gICAgYWxsb3dfZW5kcG9pbnRfc2h1dGRvd25fdW5sb2NrZWQoZXhlY19jdHgsIHQpOwotICAgIFVOUkVGX1RSQU5TUE9SVChleGVjX2N0eCwgdCwgImtlZXBfcmVhZGluZyIpOwotICB9IGVsc2UgewotICAgIFVOUkVGX1RSQU5TUE9SVChleGVjX2N0eCwgdCwgInJlY3ZfZGF0YSIpOwotICB9Ci0KLSAgR1BSX1RJTUVSX0VORCgicmVjdl9kYXRhIiwgMCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDQUxMQkFDSyBMT09QCi0gKi8KLQotc3RhdGljIHZvaWQgY29ubmVjdGl2aXR5X3N0YXRlX3NldCgKLSAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZSBzdGF0ZSwgY29uc3QgY2hhciAqcmVhc29uKSB7Ci0gIEdSUENfQ0hUVFAyX0lGX1RSQUNJTkcoCi0gICAgICBncHJfbG9nKEdQUl9ERUJVRywgInNldCBjb25uZWN0aXZpdHlfc3RhdGU9JWQiLCBzdGF0ZSkpOwotICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9zZXQoCi0gICAgICBleGVjX2N0eCwKLSAgICAgICZUUkFOU1BPUlRfRlJPTV9HTE9CQUwodHJhbnNwb3J0X2dsb2JhbCktPmNoYW5uZWxfY2FsbGJhY2suc3RhdGVfdHJhY2tlciwKLSAgICAgIHN0YXRlLCByZWFzb24pOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogUE9MTFNFVCBTVFVGRgotICovCi0KLXN0YXRpYyB2b2lkIGFkZF90b19wb2xsc2V0X2xvY2tlZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsc2V0ICpwb2xsc2V0KSB7Ci0gIGlmICh0LT5lcCkgewotICAgIGdycGNfZW5kcG9pbnRfYWRkX3RvX3BvbGxzZXQoZXhlY19jdHgsIHQtPmVwLCBwb2xsc2V0KTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBhZGRfdG9fcG9sbHNldF9zZXRfbG9ja2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfcG9sbHNldF9zZXQgKnBvbGxzZXRfc2V0KSB7Ci0gIGlmICh0LT5lcCkgewotICAgIGdycGNfZW5kcG9pbnRfYWRkX3RvX3BvbGxzZXRfc2V0KGV4ZWNfY3R4LCB0LT5lcCwgcG9sbHNldF9zZXQpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHNldF9wb2xsc2V0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX3RyYW5zcG9ydCAqZ3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N0cmVhbSAqZ3MsIGdycGNfcG9sbHNldCAqcG9sbHNldCkgewotICBncnBjX2NodHRwMl90cmFuc3BvcnQgKnQgPSAoZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICopZ3Q7Ci0gIGxvY2sodCk7Ci0gIGFkZF90b19wb2xsc2V0X2xvY2tlZChleGVjX2N0eCwgdCwgcG9sbHNldCk7Ci0gIHVubG9jayhleGVjX2N0eCwgdCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBCWVRFIFNUUkVBTQotICovCi0KLXN0YXRpYyB2b2lkIGluY29taW5nX2J5dGVfc3RyZWFtX3VwZGF0ZV9mbG93X2NvbnRyb2woCi0gICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X2dsb2JhbCAqdHJhbnNwb3J0X2dsb2JhbCwKLSAgICBncnBjX2NodHRwMl9zdHJlYW1fZ2xvYmFsICpzdHJlYW1fZ2xvYmFsLCBzaXplX3QgbWF4X3NpemVfaGludCwKLSAgICBzaXplX3QgaGF2ZV9hbHJlYWR5KSB7Ci0gIHVpbnQzMl90IG1heF9yZWN2X2J5dGVzOwotCi0gIC8qIGNsYW1wIG1heCByZWN2IGhpbnQgdG8gYW4gYWxsb3dhYmxlIHNpemUgKi8KLSAgaWYgKG1heF9zaXplX2hpbnQgPj0gVUlOVDMyX01BWCAtIHRyYW5zcG9ydF9nbG9iYWwtPnN0cmVhbV9sb29rYWhlYWQpIHsKLSAgICBtYXhfcmVjdl9ieXRlcyA9IFVJTlQzMl9NQVggLSB0cmFuc3BvcnRfZ2xvYmFsLT5zdHJlYW1fbG9va2FoZWFkOwotICB9IGVsc2UgewotICAgIG1heF9yZWN2X2J5dGVzID0gKHVpbnQzMl90KW1heF9zaXplX2hpbnQ7Ci0gIH0KLQotICAvKiBhY2NvdW50IGZvciBieXRlcyBhbHJlYWR5IHJlY2VpdmVkIGJ1dCB1bmtub3duIHRvIGhpZ2hlciBsYXllcnMgKi8KLSAgaWYgKG1heF9yZWN2X2J5dGVzID49IGhhdmVfYWxyZWFkeSkgewotICAgIG1heF9yZWN2X2J5dGVzIC09ICh1aW50MzJfdCloYXZlX2FscmVhZHk7Ci0gIH0gZWxzZSB7Ci0gICAgbWF4X3JlY3ZfYnl0ZXMgPSAwOwotICB9Ci0KLSAgLyogYWRkIHNvbWUgc21hbGwgbG9va2FoZWFkIHRvIGtlZXAgcGlwZWxpbmVzIGZsb3dpbmcgKi8KLSAgR1BSX0FTU0VSVChtYXhfcmVjdl9ieXRlcyA8PSBVSU5UMzJfTUFYIC0gdHJhbnNwb3J0X2dsb2JhbC0+c3RyZWFtX2xvb2thaGVhZCk7Ci0gIG1heF9yZWN2X2J5dGVzICs9IHRyYW5zcG9ydF9nbG9iYWwtPnN0cmVhbV9sb29rYWhlYWQ7Ci0gIGlmIChzdHJlYW1fZ2xvYmFsLT5tYXhfcmVjdl9ieXRlcyA8IG1heF9yZWN2X2J5dGVzKSB7Ci0gICAgdWludDMyX3QgYWRkX21heF9yZWN2X2J5dGVzID0KLSAgICAgICAgbWF4X3JlY3ZfYnl0ZXMgLSBzdHJlYW1fZ2xvYmFsLT5tYXhfcmVjdl9ieXRlczsKLSAgICBHUlBDX0NIVFRQMl9GTE9XX0NSRURJVF9TVFJFQU0oIm9wIiwgdHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3JlY3ZfYnl0ZXMsIGFkZF9tYXhfcmVjdl9ieXRlcyk7Ci0gICAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJvcCIsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3JfcGFyc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9tYXhfcmVjdl9ieXRlcyk7Ci0gICAgR1JQQ19DSFRUUDJfRkxPV19DUkVESVRfU1RSRUFNKCJvcCIsIHRyYW5zcG9ydF9nbG9iYWwsIHN0cmVhbV9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW5ub3VuY2VkX2luY29taW5nX3dpbmRvd19mb3Jfd3JpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX21heF9yZWN2X2J5dGVzKTsKLSAgICBncnBjX2NodHRwMl9saXN0X2FkZF91bmFubm91bmNlZF9pbmNvbWluZ193aW5kb3dfYXZhaWxhYmxlKHRyYW5zcG9ydF9nbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZ2xvYmFsKTsKLSAgICBncnBjX2NodHRwMl9iZWNvbWVfd3JpdGFibGUodHJhbnNwb3J0X2dsb2JhbCwgc3RyZWFtX2dsb2JhbCk7Ci0gIH0KLX0KLQotc3RhdGljIGludCBpbmNvbWluZ19ieXRlX3N0cmVhbV9uZXh0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfYnl0ZV9zdHJlYW0gKmJ5dGVfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSAqc2xpY2UsIHNpemVfdCBtYXhfc2l6ZV9oaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqb25fY29tcGxldGUpIHsKLSAgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmJzID0KLSAgICAgIChncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqKWJ5dGVfc3RyZWFtOwotICBncnBjX2NodHRwMl90cmFuc3BvcnRfZ2xvYmFsICp0cmFuc3BvcnRfZ2xvYmFsID0gJmJzLT50cmFuc3BvcnQtPmdsb2JhbDsKLSAgZ3JwY19jaHR0cDJfc3RyZWFtX2dsb2JhbCAqc3RyZWFtX2dsb2JhbCA9ICZicy0+c3RyZWFtLT5nbG9iYWw7Ci0KLSAgbG9jayhicy0+dHJhbnNwb3J0KTsKLSAgaWYgKGJzLT5pc190YWlsKSB7Ci0gICAgaW5jb21pbmdfYnl0ZV9zdHJlYW1fdXBkYXRlX2Zsb3dfY29udHJvbCh0cmFuc3BvcnRfZ2xvYmFsLCBzdHJlYW1fZ2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3NpemVfaGludCwgYnMtPnNsaWNlcy5sZW5ndGgpOwotICB9Ci0gIGlmIChicy0+c2xpY2VzLmNvdW50ID4gMCkgewotICAgICpzbGljZSA9IGdwcl9zbGljZV9idWZmZXJfdGFrZV9maXJzdCgmYnMtPnNsaWNlcyk7Ci0gICAgdW5sb2NrKGV4ZWNfY3R4LCBicy0+dHJhbnNwb3J0KTsKLSAgICByZXR1cm4gMTsKLSAgfSBlbHNlIGlmIChicy0+ZmFpbGVkKSB7Ci0gICAgZ3JwY19leGVjX2N0eF9lbnF1ZXVlKGV4ZWNfY3R4LCBvbl9jb21wbGV0ZSwgZmFsc2UsIE5VTEwpOwotICAgIHVubG9jayhleGVjX2N0eCwgYnMtPnRyYW5zcG9ydCk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0gZWxzZSB7Ci0gICAgYnMtPm9uX25leHQgPSBvbl9jb21wbGV0ZTsKLSAgICBicy0+bmV4dCA9IHNsaWNlOwotICAgIHVubG9jayhleGVjX2N0eCwgYnMtPnRyYW5zcG9ydCk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgaW5jb21pbmdfYnl0ZV9zdHJlYW1fdW5yZWYoZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW0gKmJzKSB7Ci0gIGlmIChncHJfdW5yZWYoJmJzLT5yZWZzKSkgewotICAgIGdwcl9zbGljZV9idWZmZXJfZGVzdHJveSgmYnMtPnNsaWNlcyk7Ci0gICAgZ3ByX2ZyZWUoYnMpOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGluY29taW5nX2J5dGVfc3RyZWFtX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfYnl0ZV9zdHJlYW0gKmJ5dGVfc3RyZWFtKSB7Ci0gIGluY29taW5nX2J5dGVfc3RyZWFtX3VucmVmKChncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqKWJ5dGVfc3RyZWFtKTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbV9wdXNoKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpicywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2Ugc2xpY2UpIHsKLSAgZ3ByX211X2xvY2soJmJzLT50cmFuc3BvcnQtPm11KTsKLSAgaWYgKGJzLT5vbl9uZXh0ICE9IE5VTEwpIHsKLSAgICAqYnMtPm5leHQgPSBzbGljZTsKLSAgICBncnBjX2V4ZWNfY3R4X2VucXVldWUoZXhlY19jdHgsIGJzLT5vbl9uZXh0LCB0cnVlLCBOVUxMKTsKLSAgICBicy0+b25fbmV4dCA9IE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGQoJmJzLT5zbGljZXMsIHNsaWNlKTsKLSAgfQotICBncHJfbXVfdW5sb2NrKCZicy0+dHJhbnNwb3J0LT5tdSk7Ci19Ci0KLXZvaWQgZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fZmluaXNoZWQoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICpicywgaW50IHN1Y2Nlc3MsCi0gICAgaW50IGZyb21fcGFyc2luZ190aHJlYWQpIHsKLSAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgaWYgKGZyb21fcGFyc2luZ190aHJlYWQpIHsKLSAgICAgIGdwcl9tdV9sb2NrKCZicy0+dHJhbnNwb3J0LT5tdSk7Ci0gICAgfQotICAgIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgYnMtPm9uX25leHQsIGZhbHNlLCBOVUxMKTsKLSAgICBicy0+b25fbmV4dCA9IE5VTEw7Ci0gICAgYnMtPmZhaWxlZCA9IDE7Ci0gICAgaWYgKGZyb21fcGFyc2luZ190aHJlYWQpIHsKLSAgICAgIGdwcl9tdV91bmxvY2soJmJzLT50cmFuc3BvcnQtPm11KTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlmIChmcm9tX3BhcnNpbmdfdGhyZWFkKSB7Ci0gICAgICBncHJfbXVfbG9jaygmYnMtPnRyYW5zcG9ydC0+bXUpOwotICAgIH0KLSAgICBHUFJfQVNTRVJUKGJzLT5vbl9uZXh0ID09IE5VTEwpOwotICAgIGlmIChmcm9tX3BhcnNpbmdfdGhyZWFkKSB7Ci0gICAgICBncHJfbXVfdW5sb2NrKCZicy0+dHJhbnNwb3J0LT5tdSk7Ci0gICAgfQotI2VuZGlmCi0gIH0KLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW1fdW5yZWYoYnMpOwotfQotCi1ncnBjX2NodHRwMl9pbmNvbWluZ19ieXRlX3N0cmVhbSAqZ3JwY19jaHR0cDJfaW5jb21pbmdfYnl0ZV9zdHJlYW1fY3JlYXRlKAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NodHRwMl90cmFuc3BvcnRfcGFyc2luZyAqdHJhbnNwb3J0X3BhcnNpbmcsCi0gICAgZ3JwY19jaHR0cDJfc3RyZWFtX3BhcnNpbmcgKnN0cmVhbV9wYXJzaW5nLCB1aW50MzJfdCBmcmFtZV9zaXplLAotICAgIHVpbnQzMl90IGZsYWdzLCBncnBjX2NodHRwMl9pbmNvbWluZ19mcmFtZV9xdWV1ZSAqYWRkX3RvX3F1ZXVlKSB7Ci0gIGdycGNfY2h0dHAyX2luY29taW5nX2J5dGVfc3RyZWFtICppbmNvbWluZ19ieXRlX3N0cmVhbSA9Ci0gICAgICBncHJfbWFsbG9jKHNpemVvZigqaW5jb21pbmdfYnl0ZV9zdHJlYW0pKTsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPmJhc2UubGVuZ3RoID0gZnJhbWVfc2l6ZTsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPmJhc2UuZmxhZ3MgPSBmbGFnczsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPmJhc2UubmV4dCA9IGluY29taW5nX2J5dGVfc3RyZWFtX25leHQ7Ci0gIGluY29taW5nX2J5dGVfc3RyZWFtLT5iYXNlLmRlc3Ryb3kgPSBpbmNvbWluZ19ieXRlX3N0cmVhbV9kZXN0cm95OwotICBncHJfcmVmX2luaXQoJmluY29taW5nX2J5dGVfc3RyZWFtLT5yZWZzLCAyKTsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPm5leHRfbWVzc2FnZSA9IE5VTEw7Ci0gIGluY29taW5nX2J5dGVfc3RyZWFtLT50cmFuc3BvcnQgPSBUUkFOU1BPUlRfRlJPTV9QQVJTSU5HKHRyYW5zcG9ydF9wYXJzaW5nKTsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPnN0cmVhbSA9IFNUUkVBTV9GUk9NX1BBUlNJTkcoc3RyZWFtX3BhcnNpbmcpOwotICBncHJfc2xpY2VfYnVmZmVyX2luaXQoJmluY29taW5nX2J5dGVfc3RyZWFtLT5zbGljZXMpOwotICBpbmNvbWluZ19ieXRlX3N0cmVhbS0+b25fbmV4dCA9IE5VTEw7Ci0gIGluY29taW5nX2J5dGVfc3RyZWFtLT5pc190YWlsID0gMTsKLSAgaW5jb21pbmdfYnl0ZV9zdHJlYW0tPmZhaWxlZCA9IDA7Ci0gIGlmIChhZGRfdG9fcXVldWUtPmhlYWQgPT0gTlVMTCkgewotICAgIGFkZF90b19xdWV1ZS0+aGVhZCA9IGluY29taW5nX2J5dGVfc3RyZWFtOwotICB9IGVsc2UgewotICAgIGFkZF90b19xdWV1ZS0+dGFpbC0+aXNfdGFpbCA9IDA7Ci0gICAgYWRkX3RvX3F1ZXVlLT50YWlsLT5uZXh0X21lc3NhZ2UgPSBpbmNvbWluZ19ieXRlX3N0cmVhbTsKLSAgfQotICBhZGRfdG9fcXVldWUtPnRhaWwgPSBpbmNvbWluZ19ieXRlX3N0cmVhbTsKLSAgcmV0dXJuIGluY29taW5nX2J5dGVfc3RyZWFtOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogVFJBQ0lORwotICovCi0KLXN0YXRpYyBjaGFyICpmb3JtYXRfZmxvd2N0bF9jb250ZXh0X3Zhcihjb25zdCBjaGFyICpjb250ZXh0LCBjb25zdCBjaGFyICp2YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWwsIHVpbnQzMl90IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipzY29wZSkgewotICBjaGFyICp1bmRlcnNjb3JlX3BvczsKLSAgY2hhciAqcmVzdWx0OwotICBpZiAoY29udGV4dCA9PSBOVUxMKSB7Ci0gICAgKnNjb3BlID0gTlVMTDsKLSAgICBncHJfYXNwcmludGYoJnJlc3VsdCwgIiVzKCVsbGQpIiwgdmFyLCB2YWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLSAgdW5kZXJzY29yZV9wb3MgPSBzdHJjaHIoY29udGV4dCwgJ18nKTsKLSAgKnNjb3BlID0gZ3ByX3N0cmR1cChjb250ZXh0KTsKLSAgKCpzY29wZSlbdW5kZXJzY29yZV9wb3MgLSBjb250ZXh0XSA9IDA7Ci0gIGlmIChpZCAhPSAwKSB7Ci0gICAgY2hhciAqdG1wID0gKnNjb3BlOwotICAgIGdwcl9hc3ByaW50ZihzY29wZSwgIiVzWyVkXSIsIHRtcCwgaWQpOwotICAgIGdwcl9mcmVlKHRtcCk7Ci0gIH0KLSAgZ3ByX2FzcHJpbnRmKCZyZXN1bHQsICIlcy4lcyglbGxkKSIsIHVuZGVyc2NvcmVfcG9zICsgMSwgdmFyLCB2YWwpOwotICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgaW50IHNhbWVzdHIoY2hhciAqYSwgY2hhciAqYikgewotICBpZiAoYSA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIGIgPT0gTlVMTDsKLSAgfQotICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgcmV0dXJuIDAgPT0gc3RyY21wKGEsIGIpOwotfQotCi12b2lkIGdycGNfY2h0dHAyX2Zsb3djdGxfdHJhY2UoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKnBoYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX2Zsb3djdGxfb3Agb3AsIGNvbnN0IGNoYXIgKmNvbnRleHQxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhcjEsIGNvbnN0IGNoYXIgKmNvbnRleHQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhcjIsIGludCBpc19jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3RyZWFtX2lkLCBpbnQ2NF90IHZhbDEsIGludDY0X3QgdmFsMikgewotICBjaGFyICpzY29wZTE7Ci0gIGNoYXIgKnNjb3BlMjsKLSAgY2hhciAqbGFiZWwxID0KLSAgICAgIGZvcm1hdF9mbG93Y3RsX2NvbnRleHRfdmFyKGNvbnRleHQxLCB2YXIxLCB2YWwxLCBzdHJlYW1faWQsICZzY29wZTEpOwotICBjaGFyICpsYWJlbDIgPQotICAgICAgZm9ybWF0X2Zsb3djdGxfY29udGV4dF92YXIoY29udGV4dDIsIHZhcjIsIHZhbDIsIHN0cmVhbV9pZCwgJnNjb3BlMik7Ci0gIGNoYXIgKmNsaXN2ciA9IGlzX2NsaWVudCA/ICJjbGllbnQiIDogInNlcnZlciI7Ci0gIGNoYXIgKnByZWZpeDsKLQotICBncHJfYXNwcmludGYoJnByZWZpeCwgIkZMT1cgJSA4czogJXMgJSAxMXMgIiwgcGhhc2UsIGNsaXN2ciwgc2NvcGUxKTsKLQotICBzd2l0Y2ggKG9wKSB7Ci0gICAgY2FzZSBHUlBDX0NIVFRQMl9GTE9XQ1RMX01PVkU6Ci0gICAgICBHUFJfQVNTRVJUKHNhbWVzdHIoc2NvcGUxLCBzY29wZTIpKTsKLSAgICAgIGlmICh2YWwyICE9IDApIHsKLSAgICAgICAgZ3ByX2xvZyhmaWxlLCBsaW5lLCBHUFJfTE9HX1NFVkVSSVRZX0RFQlVHLAotICAgICAgICAgICAgICAgICIlc01PVkUgICAlIDQwcyA8LSAlIDQwcyBnaXZpbmcgJWQiLCBwcmVmaXgsIGxhYmVsMSwgbGFiZWwyLAotICAgICAgICAgICAgICAgIHZhbDEgKyB2YWwyKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JQQ19DSFRUUDJfRkxPV0NUTF9DUkVESVQ6Ci0gICAgICBHUFJfQVNTRVJUKHZhbDIgPj0gMCk7Ci0gICAgICBpZiAodmFsMiAhPSAwKSB7Ci0gICAgICAgIGdwcl9sb2coZmlsZSwgbGluZSwgR1BSX0xPR19TRVZFUklUWV9ERUJVRywKLSAgICAgICAgICAgICAgICAiJXNDUkVESVQgJSA0MHMgYnkgJSA0MHMgZ2l2aW5nICVkIiwgcHJlZml4LCBsYWJlbDEsIGxhYmVsMiwKLSAgICAgICAgICAgICAgICB2YWwxICsgdmFsMik7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfQ0hUVFAyX0ZMT1dDVExfREVCSVQ6Ci0gICAgICBHUFJfQVNTRVJUKHZhbDIgPj0gMCk7Ci0gICAgICBpZiAodmFsMiAhPSAwKSB7Ci0gICAgICAgIGdwcl9sb2coZmlsZSwgbGluZSwgR1BSX0xPR19TRVZFUklUWV9ERUJVRywKLSAgICAgICAgICAgICAgICAiJXNERUJJVCAgJSA0MHMgYnkgJSA0MHMgZ2l2aW5nICVkIiwgcHJlZml4LCBsYWJlbDEsIGxhYmVsMiwKLSAgICAgICAgICAgICAgICB2YWwxIC0gdmFsMik7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgfQotCi0gIGdwcl9mcmVlKHNjb3BlMSk7Ci0gIGdwcl9mcmVlKHNjb3BlMik7Ci0gIGdwcl9mcmVlKGxhYmVsMSk7Ci0gIGdwcl9mcmVlKGxhYmVsMik7Ci0gIGdwcl9mcmVlKHByZWZpeCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBJTlRFR1JBVElPTiBHTFVFCi0gKi8KLQotc3RhdGljIGNoYXIgKmNodHRwMl9nZXRfcGVlcihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY190cmFuc3BvcnQgKnQpIHsKLSAgcmV0dXJuIGdwcl9zdHJkdXAoKChncnBjX2NodHRwMl90cmFuc3BvcnQgKil0KS0+cGVlcl9zdHJpbmcpOwotfQotCi1zdGF0aWMgY29uc3QgZ3JwY190cmFuc3BvcnRfdnRhYmxlIHZ0YWJsZSA9IHtzaXplb2YoZ3JwY19jaHR0cDJfc3RyZWFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaHR0cDIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfcG9sbHNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1fc3RyZWFtX29wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybV90cmFuc3BvcnRfb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0cm95X3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h0dHAyX2dldF9wZWVyfTsKLQotZ3JwY190cmFuc3BvcnQgKmdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoCi0gICAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGNvbnN0IGdycGNfY2hhbm5lbF9hcmdzICpjaGFubmVsX2FyZ3MsCi0gICAgZ3JwY19lbmRwb2ludCAqZXAsIGludCBpc19jbGllbnQpIHsKLSAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19jaHR0cDJfdHJhbnNwb3J0KSk7Ci0gIGluaXRfdHJhbnNwb3J0KGV4ZWNfY3R4LCB0LCBjaGFubmVsX2FyZ3MsIGVwLCBpc19jbGllbnQgIT0gMCk7Ci0gIHJldHVybiAmdC0+YmFzZTsKLX0KLQotdm9pZCBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlICpzbGljZXMsIHNpemVfdCBuc2xpY2VzKSB7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydCAqdCA9IChncnBjX2NodHRwMl90cmFuc3BvcnQgKil0cmFuc3BvcnQ7Ci0gIFJFRl9UUkFOU1BPUlQodCwgInJlY3ZfZGF0YSIpOyAvKiBtYXRjaGVzIHVucmVmIGluc2lkZSByZWN2X2RhdGEgKi8KLSAgZ3ByX3NsaWNlX2J1ZmZlcl9hZGRuKCZ0LT5yZWFkX2J1ZmZlciwgc2xpY2VzLCBuc2xpY2VzKTsKLSAgcmVjdl9kYXRhKGV4ZWNfY3R4LCB0LCAxKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMDhjYWIuLjAwMDAwMDAKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSAotI2RlZmluZSBHUlBDX0NPUkVfTElCX1RSQU5TUE9SVF9DSFRUUDJfVFJBTlNQT1JUX0gKLQotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmgiCi0KLWV4dGVybiBpbnQgZ3JwY19odHRwX3RyYWNlOwotZXh0ZXJuIGludCBncnBjX2Zsb3djdGxfdHJhY2U7Ci0KLWdycGNfdHJhbnNwb3J0ICpncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KAotICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBjb25zdCBncnBjX2NoYW5uZWxfYXJncyAqY2hhbm5lbF9hcmdzLAotICAgIGdycGNfZW5kcG9pbnQgKmVwLCBpbnQgaXNfY2xpZW50KTsKLQotdm9pZCBncnBjX2NodHRwMl90cmFuc3BvcnRfc3RhcnRfcmVhZGluZyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3NsaWNlICpzbGljZXMsIHNpemVfdCBuc2xpY2VzKTsKLQotI2VuZGlmIC8qIEdSUENfQ09SRV9MSUJfVFJBTlNQT1JUX0NIVFRQMl9UUkFOU1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5jCmluZGV4IDc2MDVmMDkuLjQ1MWM4ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYworKysgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMKQEAgLTQ0LDExICs0NCwxMSBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zdHJpbmdfdXRpbC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC90aW1lLmg+CiAKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvaW9tZ3JfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L211cm11cl9oYXNoLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIgogCiAvKiBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIG1kZWxlbSBhbmQgbWRzdHIgaW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9CZW5jaG1hcmtTZXJ2aWNlSW1wbC5jcyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvQmVuY2htYXJrU2VydmljZUltcGwuY3MKaW5kZXggNDdhMTUyMi4uMWVkZWVkYSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9CZW5jaG1hcmtTZXJ2aWNlSW1wbC5jcworKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0JlbmNobWFya1NlcnZpY2VJbXBsLmNzCkBAIC0xLDYgKzEsNiBAQAogI3JlZ2lvbiBDb3B5cmlnaHQgbm90aWNlIGFuZCBsaWNlbnNlCiAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorLy8gQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KIC8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00NiwxNiArNDYsMTMgQEAKICAgICAvLy8gPC9zdW1tYXJ5PgogICAgIHB1YmxpYyBjbGFzcyBCZW5jaG1hcmtTZXJ2aWNlSW1wbCA6IEJlbmNobWFya1NlcnZpY2UuSUJlbmNobWFya1NlcnZpY2UKICAgICB7Ci0gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50IHJlc3BvbnNlU2l6ZTsKLQotICAgICAgICBwdWJsaWMgQmVuY2htYXJrU2VydmljZUltcGwoaW50IHJlc3BvbnNlU2l6ZSkKKyAgICAgICAgcHVibGljIEJlbmNobWFya1NlcnZpY2VJbXBsKCkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5yZXNwb25zZVNpemUgPSByZXNwb25zZVNpemU7CiAgICAgICAgIH0KIAogICAgICAgICBwdWJsaWMgVGFzazxTaW1wbGVSZXNwb25zZT4gVW5hcnlDYWxsKFNpbXBsZVJlcXVlc3QgcmVxdWVzdCwgU2VydmVyQ2FsbENvbnRleHQgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNpbXBsZVJlc3BvbnNlIHsgUGF5bG9hZCA9IENyZWF0ZVplcm9zUGF5bG9hZChyZXNwb25zZVNpemUpIH07CisgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgU2ltcGxlUmVzcG9uc2UgeyBQYXlsb2FkID0gQ3JlYXRlWmVyb3NQYXlsb2FkKHJlcXVlc3QuUmVzcG9uc2VTaXplKSB9OwogICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChyZXNwb25zZSk7CiAgICAgICAgIH0KIApAQCAtNjMsNyArNjAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBhd2FpdCByZXF1ZXN0U3RyZWFtLkZvckVhY2hBc3luYyhhc3luYyByZXF1ZXN0ID0+CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNpbXBsZVJlc3BvbnNlIHsgUGF5bG9hZCA9IENyZWF0ZVplcm9zUGF5bG9hZChyZXNwb25zZVNpemUpIH07CisgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFNpbXBsZVJlc3BvbnNlIHsgUGF5bG9hZCA9IENyZWF0ZVplcm9zUGF5bG9hZChyZXF1ZXN0LlJlc3BvbnNlU2l6ZSkgfTsKICAgICAgICAgICAgICAgICBhd2FpdCByZXNwb25zZVN0cmVhbS5Xcml0ZUFzeW5jKHJlc3BvbnNlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0NsaWVudFJ1bm5lcnMuY3MgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0NsaWVudFJ1bm5lcnMuY3MKaW5kZXggYzQwMTYwMS4uZTZkYzIzMiAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9DbGllbnRSdW5uZXJzLmNzCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvQ2xpZW50UnVubmVycy5jcwpAQCAtNDEsNiArNDEsNyBAQAogdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKIHVzaW5nIEdvb2dsZS5Qcm90b2J1ZjsKIHVzaW5nIEdycGMuQ29yZTsKK3VzaW5nIEdycGMuQ29yZS5Mb2dnaW5nOwogdXNpbmcgR3JwYy5Db3JlLlV0aWxzOwogdXNpbmcgTlVuaXQuRnJhbWV3b3JrOwogdXNpbmcgR3JwYy5UZXN0aW5nOwpAQCAtNTAsNDIgKzUxLDY1IEBACiAgICAgLy8vIDxzdW1tYXJ5PgogICAgIC8vLyBIZWxwZXIgbWV0aG9kcyB0byBzdGFydCBjbGllbnQgcnVubmVycyBmb3IgcGVyZm9ybWFuY2UgdGVzdGluZy4KICAgICAvLy8gPC9zdW1tYXJ5PgotICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ2xpZW50UnVubmVycworICAgIHB1YmxpYyBjbGFzcyBDbGllbnRSdW5uZXJzCiAgICAgeworICAgICAgICBzdGF0aWMgcmVhZG9ubHkgSUxvZ2dlciBMb2dnZXIgPSBHcnBjRW52aXJvbm1lbnQuTG9nZ2VyLkZvclR5cGU8Q2xpZW50UnVubmVycz4oKTsKKwogICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgIC8vLyBDcmVhdGVzIGEgc3RhcnRlZCBjbGllbnQgcnVubmVyLgogICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgICBwdWJsaWMgc3RhdGljIElDbGllbnRSdW5uZXIgQ3JlYXRlU3RhcnRlZChDbGllbnRDb25maWcgY29uZmlnKQogICAgICAgICB7CisgICAgICAgICAgICBMb2dnZXIuRGVidWcoIkNsaWVudENvbmZpZzogezB9IiwgY29uZmlnKTsKICAgICAgICAgICAgIHN0cmluZyB0YXJnZXQgPSBjb25maWcuU2VydmVyVGFyZ2V0cy5TaW5nbGUoKTsKLSAgICAgICAgICAgIEdycGNQcmVjb25kaXRpb25zLkNoZWNrQXJndW1lbnQoY29uZmlnLkxvYWRQYXJhbXMuTG9hZENhc2UgPT0gTG9hZFBhcmFtcy5Mb2FkT25lb2ZDYXNlLkNsb3NlZExvb3ApOworICAgICAgICAgICAgR3JwY1ByZWNvbmRpdGlvbnMuQ2hlY2tBcmd1bWVudChjb25maWcuTG9hZFBhcmFtcy5Mb2FkQ2FzZSA9PSBMb2FkUGFyYW1zLkxvYWRPbmVvZkNhc2UuQ2xvc2VkTG9vcCwKKyAgICAgICAgICAgICAgICAiT25seSBjbG9zZWQgbG9vcCBzY2VuYXJpbyBzdXBwb3J0ZWQgZm9yIEMjIik7CisgICAgICAgICAgICBHcnBjUHJlY29uZGl0aW9ucy5DaGVja0FyZ3VtZW50KGNvbmZpZy5DbGllbnRDaGFubmVscyA9PSAxLCAiQ2xpZW50Q29uZmlnLkNsaWVudENoYW5uZWxzIG5lZWRzIHRvIGJlIDEiKTsKKworICAgICAgICAgICAgaWYgKGNvbmZpZy5PdXRzdGFuZGluZ1JwY3NQZXJDaGFubmVsICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9nZ2VyLldhcm5pbmcoIkNsaWVudENvbmZpZy5PdXRzdGFuZGluZ1JwY3NQZXJDaGFubmVsIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEMjLiBJZ25vcmluZyB0aGUgdmFsdWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25maWcuQXN5bmNDbGllbnRUaHJlYWRzICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9nZ2VyLldhcm5pbmcoIkNsaWVudENvbmZpZy5Bc3luY0NsaWVudFRocmVhZHMgaXMgbm90IHN1cHBvcnRlZCBmb3IgQyMuIElnbm9yaW5nIHRoZSB2YWx1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmZpZy5Db3JlTGltaXQgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2dnZXIuV2FybmluZygiQ2xpZW50Q29uZmlnLkNvcmVMaW1pdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBDIy4gSWdub3JpbmcgdGhlIHZhbHVlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZmlnLkNvcmVMaXN0LkNvdW50ID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2dnZXIuV2FybmluZygiQ2xpZW50Q29uZmlnLkNvcmVMaXN0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEMjLiBJZ25vcmluZyB0aGUgdmFsdWUiKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGNyZWRlbnRpYWxzID0gY29uZmlnLlNlY3VyaXR5UGFyYW1zICE9IG51bGwgPyBUZXN0Q3JlZGVudGlhbHMuQ3JlYXRlU3NsQ3JlZGVudGlhbHMoKSA6IENoYW5uZWxDcmVkZW50aWFscy5JbnNlY3VyZTsKLSAgICAgICAgICAgIHZhciBjaGFubmVsID0gbmV3IENoYW5uZWwodGFyZ2V0LCBjcmVkZW50aWFscyk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoY29uZmlnLlJwY1R5cGUpCisgICAgICAgICAgICBMaXN0PENoYW5uZWxPcHRpb24+IGNoYW5uZWxPcHRpb25zID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChjb25maWcuU2VjdXJpdHlQYXJhbXMgIT0gbnVsbCAmJiBjb25maWcuU2VjdXJpdHlQYXJhbXMuU2VydmVySG9zdE92ZXJyaWRlICE9ICIiKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgUnBjVHlwZS5VTkFSWToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTeW5jVW5hcnlDbGllbnRSdW5uZXIoY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5QYXlsb2FkQ29uZmlnLlNpbXBsZVBhcmFtcy5SZXFTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLkhpc3RvZ3JhbVBhcmFtcyk7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFJwY1R5cGUuU1RSRUFNSU5HOgotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgUnBjVHlwZS4iKTsKKyAgICAgICAgICAgICAgICBjaGFubmVsT3B0aW9ucyA9IG5ldyBMaXN0PENoYW5uZWxPcHRpb24+CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBuZXcgQ2hhbm5lbE9wdGlvbihDaGFubmVsT3B0aW9ucy5Tc2xUYXJnZXROYW1lT3ZlcnJpZGUsIGNvbmZpZy5TZWN1cml0eVBhcmFtcy5TZXJ2ZXJIb3N0T3ZlcnJpZGUpCisgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBjaGFubmVsID0gbmV3IENoYW5uZWwodGFyZ2V0LCBjcmVkZW50aWFscywgY2hhbm5lbE9wdGlvbnMpOworCisgICAgICAgICAgICByZXR1cm4gbmV3IENsaWVudFJ1bm5lckltcGwoY2hhbm5lbCwKKyAgICAgICAgICAgICAgICBjb25maWcuQ2xpZW50VHlwZSwKKyAgICAgICAgICAgICAgICBjb25maWcuUnBjVHlwZSwKKyAgICAgICAgICAgICAgICBjb25maWcuUGF5bG9hZENvbmZpZywKKyAgICAgICAgICAgICAgICBjb25maWcuSGlzdG9ncmFtUGFyYW1zKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vLyA8c3VtbWFyeT4KLSAgICAvLy8gQ2xpZW50IHRoYXQgc3RhcnRzIHN5bmNocm9ub3VzIHVuYXJ5IGNhbGxzIGluIGEgY2xvc2VkIGxvb3AuCi0gICAgLy8vIDwvc3VtbWFyeT4KLSAgICBwdWJsaWMgY2xhc3MgU3luY1VuYXJ5Q2xpZW50UnVubmVyIDogSUNsaWVudFJ1bm5lcgorICAgIHB1YmxpYyBjbGFzcyBDbGllbnRSdW5uZXJJbXBsIDogSUNsaWVudFJ1bm5lcgogICAgIHsKICAgICAgICAgY29uc3QgZG91YmxlIFNlY29uZHNUb05hbm9zID0gMWU5OwogCiAgICAgICAgIHJlYWRvbmx5IENoYW5uZWwgY2hhbm5lbDsKLSAgICAgICAgcmVhZG9ubHkgaW50IHBheWxvYWRTaXplOworICAgICAgICByZWFkb25seSBDbGllbnRUeXBlIGNsaWVudFR5cGU7CisgICAgICAgIHJlYWRvbmx5IFJwY1R5cGUgcnBjVHlwZTsKKyAgICAgICAgcmVhZG9ubHkgUGF5bG9hZENvbmZpZyBwYXlsb2FkQ29uZmlnOwogICAgICAgICByZWFkb25seSBIaXN0b2dyYW0gaGlzdG9ncmFtOwogCiAgICAgICAgIHJlYWRvbmx5IEJlbmNobWFya1NlcnZpY2UuSUJlbmNobWFya1NlcnZpY2VDbGllbnQgY2xpZW50OwpAQCAtOTMsMTUgKzExNywxOSBAQAogICAgICAgICByZWFkb25seSBDYW5jZWxsYXRpb25Ub2tlblNvdXJjZSBzdG9wcGVkQ3RzOwogICAgICAgICByZWFkb25seSBXYWxsQ2xvY2tTdG9wd2F0Y2ggd2FsbENsb2NrU3RvcHdhdGNoID0gbmV3IFdhbGxDbG9ja1N0b3B3YXRjaCgpOwogICAgICAgICAKLSAgICAgICAgcHVibGljIFN5bmNVbmFyeUNsaWVudFJ1bm5lcihDaGFubmVsIGNoYW5uZWwsIGludCBwYXlsb2FkU2l6ZSwgSGlzdG9ncmFtUGFyYW1zIGhpc3RvZ3JhbVBhcmFtcykKKyAgICAgICAgcHVibGljIENsaWVudFJ1bm5lckltcGwoQ2hhbm5lbCBjaGFubmVsLCBDbGllbnRUeXBlIGNsaWVudFR5cGUsIFJwY1R5cGUgcnBjVHlwZSwgUGF5bG9hZENvbmZpZyBwYXlsb2FkQ29uZmlnLCBIaXN0b2dyYW1QYXJhbXMgaGlzdG9ncmFtUGFyYW1zKQogICAgICAgICB7CiAgICAgICAgICAgICB0aGlzLmNoYW5uZWwgPSBHcnBjUHJlY29uZGl0aW9ucy5DaGVja05vdE51bGwoY2hhbm5lbCk7Ci0gICAgICAgICAgICB0aGlzLnBheWxvYWRTaXplID0gcGF5bG9hZFNpemU7CisgICAgICAgICAgICB0aGlzLmNsaWVudFR5cGUgPSBjbGllbnRUeXBlOworICAgICAgICAgICAgdGhpcy5ycGNUeXBlID0gcnBjVHlwZTsKKyAgICAgICAgICAgIHRoaXMucGF5bG9hZENvbmZpZyA9IHBheWxvYWRDb25maWc7CiAgICAgICAgICAgICB0aGlzLmhpc3RvZ3JhbSA9IG5ldyBIaXN0b2dyYW0oaGlzdG9ncmFtUGFyYW1zLlJlc29sdXRpb24sIGhpc3RvZ3JhbVBhcmFtcy5NYXhQb3NzaWJsZSk7CiAKICAgICAgICAgICAgIHRoaXMuc3RvcHBlZEN0cyA9IG5ldyBDYW5jZWxsYXRpb25Ub2tlblNvdXJjZSgpOwogICAgICAgICAgICAgdGhpcy5jbGllbnQgPSBCZW5jaG1hcmtTZXJ2aWNlLk5ld0NsaWVudChjaGFubmVsKTsKLSAgICAgICAgICAgIHRoaXMucnVubmVyVGFzayA9IFRhc2suRmFjdG9yeS5TdGFydE5ldyhSdW4sIFRhc2tDcmVhdGlvbk9wdGlvbnMuTG9uZ1J1bm5pbmcpOworCisgICAgICAgICAgICB2YXIgdGhyZWFkQm9keSA9IEdldFRocmVhZEJvZHkoKTsKKyAgICAgICAgICAgIHRoaXMucnVubmVyVGFzayA9IFRhc2suRmFjdG9yeS5TdGFydE5ldyh0aHJlYWRCb2R5LCBUYXNrQ3JlYXRpb25PcHRpb25zLkxvbmdSdW5uaW5nKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyBDbGllbnRTdGF0cyBHZXRTdGF0cyhib29sIHJlc2V0KQpAQCAtMTI2LDEyICsxNTQsOSBAQAogICAgICAgICAgICAgYXdhaXQgY2hhbm5lbC5TaHV0ZG93bkFzeW5jKCk7CiAgICAgICAgIH0KIAotICAgICAgICBwcml2YXRlIHZvaWQgUnVuKCkKKyAgICAgICAgcHJpdmF0ZSB2b2lkIFJ1bkNsb3NlZExvb3BVbmFyeSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFNpbXBsZVJlcXVlc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQYXlsb2FkID0gQ3JlYXRlWmVyb3NQYXlsb2FkKHBheWxvYWRTaXplKQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gQ3JlYXRlU2ltcGxlUmVxdWVzdCgpOwogICAgICAgICAgICAgdmFyIHN0b3B3YXRjaCA9IG5ldyBTdG9wd2F0Y2goKTsKIAogICAgICAgICAgICAgd2hpbGUgKCFzdG9wcGVkQ3RzLlRva2VuLklzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKQpAQCAtMTQ1LDYgKzE3MCwxMjQgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBSdW5DbG9zZWRMb29wVW5hcnlBc3luYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gQ3JlYXRlU2ltcGxlUmVxdWVzdCgpOworICAgICAgICAgICAgdmFyIHN0b3B3YXRjaCA9IG5ldyBTdG9wd2F0Y2goKTsKKworICAgICAgICAgICAgd2hpbGUgKCFzdG9wcGVkQ3RzLlRva2VuLklzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0b3B3YXRjaC5SZXN0YXJ0KCk7CisgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LlVuYXJ5Q2FsbEFzeW5jKHJlcXVlc3QpOworICAgICAgICAgICAgICAgIHN0b3B3YXRjaC5TdG9wKCk7CisKKyAgICAgICAgICAgICAgICAvLyBzcGVjIHJlcXVpcmVzIGRhdGEgcG9pbnQgaW4gbmFub3NlY29uZHMuCisgICAgICAgICAgICAgICAgaGlzdG9ncmFtLkFkZE9ic2VydmF0aW9uKHN0b3B3YXRjaC5FbGFwc2VkLlRvdGFsU2Vjb25kcyAqIFNlY29uZHNUb05hbm9zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBSdW5DbG9zZWRMb29wU3RyZWFtaW5nQXN5bmMoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVxdWVzdCA9IENyZWF0ZVNpbXBsZVJlcXVlc3QoKTsKKyAgICAgICAgICAgIHZhciBzdG9wd2F0Y2ggPSBuZXcgU3RvcHdhdGNoKCk7CisKKyAgICAgICAgICAgIHVzaW5nICh2YXIgY2FsbCA9IGNsaWVudC5TdHJlYW1pbmdDYWxsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgd2hpbGUgKCFzdG9wcGVkQ3RzLlRva2VuLklzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RvcHdhdGNoLlJlc3RhcnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2FsbC5SZXF1ZXN0U3RyZWFtLldyaXRlQXN5bmMocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNhbGwuUmVzcG9uc2VTdHJlYW0uTW92ZU5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RvcHdhdGNoLlN0b3AoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBzcGVjIHJlcXVpcmVzIGRhdGEgcG9pbnQgaW4gbmFub3NlY29uZHMuCisgICAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbS5BZGRPYnNlcnZhdGlvbihzdG9wd2F0Y2guRWxhcHNlZC5Ub3RhbFNlY29uZHMgKiBTZWNvbmRzVG9OYW5vcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gZmluaXNoIHRoZSBzdHJlYW1pbmcgY2FsbAorICAgICAgICAgICAgICAgIGF3YWl0IGNhbGwuUmVxdWVzdFN0cmVhbS5Db21wbGV0ZUFzeW5jKCk7CisgICAgICAgICAgICAgICAgQXNzZXJ0LklzRmFsc2UoYXdhaXQgY2FsbC5SZXNwb25zZVN0cmVhbS5Nb3ZlTmV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgYXN5bmMgVGFzayBSdW5HZW5lcmljQ2xvc2VkTG9vcFN0cmVhbWluZ0FzeW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBDcmVhdGVCeXRlQnVmZmVyUmVxdWVzdCgpOworICAgICAgICAgICAgdmFyIHN0b3B3YXRjaCA9IG5ldyBTdG9wd2F0Y2goKTsKKworICAgICAgICAgICAgdmFyIGNhbGxEZXRhaWxzID0gbmV3IENhbGxJbnZvY2F0aW9uRGV0YWlsczxieXRlW10sIGJ5dGVbXT4oY2hhbm5lbCwgR2VuZXJpY1NlcnZpY2UuU3RyZWFtaW5nQ2FsbE1ldGhvZCwgbmV3IENhbGxPcHRpb25zKCkpOworCisgICAgICAgICAgICB1c2luZyAodmFyIGNhbGwgPSBDYWxscy5Bc3luY0R1cGxleFN0cmVhbWluZ0NhbGwoY2FsbERldGFpbHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHdoaWxlICghc3RvcHBlZEN0cy5Ub2tlbi5Jc0NhbmNlbGxhdGlvblJlcXVlc3RlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0b3B3YXRjaC5SZXN0YXJ0KCk7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNhbGwuUmVxdWVzdFN0cmVhbS5Xcml0ZUFzeW5jKHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICBhd2FpdCBjYWxsLlJlc3BvbnNlU3RyZWFtLk1vdmVOZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHN0b3B3YXRjaC5TdG9wKCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gc3BlYyByZXF1aXJlcyBkYXRhIHBvaW50IGluIG5hbm9zZWNvbmRzLgorICAgICAgICAgICAgICAgICAgICBoaXN0b2dyYW0uQWRkT2JzZXJ2YXRpb24oc3RvcHdhdGNoLkVsYXBzZWQuVG90YWxTZWNvbmRzICogU2Vjb25kc1RvTmFub3MpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGZpbmlzaCB0aGUgc3RyZWFtaW5nIGNhbGwKKyAgICAgICAgICAgICAgICBhd2FpdCBjYWxsLlJlcXVlc3RTdHJlYW0uQ29tcGxldGVBc3luYygpOworICAgICAgICAgICAgICAgIEFzc2VydC5Jc0ZhbHNlKGF3YWl0IGNhbGwuUmVzcG9uc2VTdHJlYW0uTW92ZU5leHQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIEFjdGlvbiBHZXRUaHJlYWRCb2R5KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBheWxvYWRDb25maWcuUGF5bG9hZENhc2UgPT0gUGF5bG9hZENvbmZpZy5QYXlsb2FkT25lb2ZDYXNlLkJ5dGVidWZQYXJhbXMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR3JwY1ByZWNvbmRpdGlvbnMuQ2hlY2tBcmd1bWVudChjbGllbnRUeXBlID09IENsaWVudFR5cGUuQVNZTkNfQ0xJRU5ULCAiR2VuZXJpYyBjbGllbnQgb25seSBzdXBwb3J0cyBhc3luYyBBUEkiKTsKKyAgICAgICAgICAgICAgICBHcnBjUHJlY29uZGl0aW9ucy5DaGVja0FyZ3VtZW50KHJwY1R5cGUgPT0gUnBjVHlwZS5TVFJFQU1JTkcsICJHZW5lcmljIGNsaWVudCBvbmx5IHN1cHBvcnRzIHN0cmVhbWluZyBjYWxscyIpOworICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUnVuR2VuZXJpY0Nsb3NlZExvb3BTdHJlYW1pbmdBc3luYygpLldhaXQoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHcnBjUHJlY29uZGl0aW9ucy5DaGVja05vdE51bGwocGF5bG9hZENvbmZpZy5TaW1wbGVQYXJhbXMpOworICAgICAgICAgICAgaWYgKGNsaWVudFR5cGUgPT0gQ2xpZW50VHlwZS5TWU5DX0NMSUVOVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHcnBjUHJlY29uZGl0aW9ucy5DaGVja0FyZ3VtZW50KHJwY1R5cGUgPT0gUnBjVHlwZS5VTkFSWSwgIlN5bmMgY2xpZW50IGNhbiBvbmx5IGJlIHVzZWQgZm9yIFVuYXJ5IGNhbGxzIGluIEMjIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bkNsb3NlZExvb3BVbmFyeTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNsaWVudFR5cGUgPT0gQ2xpZW50VHlwZS5BU1lOQ19DTElFTlQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChycGNUeXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBScGNUeXBlLlVOQVJZOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQ2xvc2VkTG9vcFVuYXJ5QXN5bmMoKS5XYWl0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBjYXNlIFJwY1R5cGUuU1RSRUFNSU5HOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuQ2xvc2VkTG9vcFN0cmVhbWluZ0FzeW5jKCkuV2FpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24uIik7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIFNpbXBsZVJlcXVlc3QgQ3JlYXRlU2ltcGxlUmVxdWVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdycGNQcmVjb25kaXRpb25zLkNoZWNrTm90TnVsbChwYXlsb2FkQ29uZmlnLlNpbXBsZVBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVJlcXVlc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQYXlsb2FkID0gQ3JlYXRlWmVyb3NQYXlsb2FkKHBheWxvYWRDb25maWcuU2ltcGxlUGFyYW1zLlJlcVNpemUpLAorICAgICAgICAgICAgICAgIFJlc3BvbnNlU2l6ZSA9IHBheWxvYWRDb25maWcuU2ltcGxlUGFyYW1zLlJlc3BTaXplCisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBieXRlW10gQ3JlYXRlQnl0ZUJ1ZmZlclJlcXVlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IGJ5dGVbcGF5bG9hZENvbmZpZy5CeXRlYnVmUGFyYW1zLlJlcVNpemVdOworICAgICAgICB9CisKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUGF5bG9hZCBDcmVhdGVaZXJvc1BheWxvYWQoaW50IHNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgUGF5bG9hZCB7IEJvZHkgPSBCeXRlU3RyaW5nLkNvcHlGcm9tKG5ldyBieXRlW3NpemVdKSB9OwpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9HZW5lcmljU2VydmljZS5jcyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvR2VuZXJpY1NlcnZpY2UuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxMjgyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvR2VuZXJpY1NlcnZpY2UuY3MKQEAgLTAsMCArMSw3MSBAQAorI3JlZ2lvbiBDb3B5cmlnaHQgbm90aWNlIGFuZCBsaWNlbnNlCisKKy8vIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2VuZHJlZ2lvbgorCit1c2luZyBTeXN0ZW07Cit1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKK3VzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsKK3VzaW5nIFN5c3RlbS5JTzsKK3VzaW5nIFN5c3RlbS5MaW5xOwordXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwordXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKK3VzaW5nIEdvb2dsZS5Qcm90b2J1ZjsKK3VzaW5nIEdycGMuQ29yZTsKK3VzaW5nIEdycGMuQ29yZS5VdGlsczsKK3VzaW5nIE5Vbml0LkZyYW1ld29yazsKK3VzaW5nIEdycGMuVGVzdGluZzsKKworbmFtZXNwYWNlIEdycGMuSW50ZWdyYXRpb25UZXN0aW5nCit7CisgICAgLy8vIDxzdW1tYXJ5PgorICAgIC8vLyBVdGlsaXR5IG1ldGhvZHMgZm9yIGRlZmluaW5nIGFuZCBjYWxsaW5nIGEgc2VydmljZSB0aGF0IGRvZXNuJ3QgdXNlIHByb3RvYnVmcworICAgIC8vLyBmb3Igc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24uCisgICAgLy8vIDwvc3VtbWFyeT4KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEdlbmVyaWNTZXJ2aWNlCisgICAgeworICAgICAgICByZWFkb25seSBzdGF0aWMgTWFyc2hhbGxlcjxieXRlW10+IEJ5dGVBcnJheU1hcnNoYWxsZXIgPSBuZXcgTWFyc2hhbGxlcjxieXRlW10+KChiKSA9PiBiLCAoYikgPT4gYik7CisKKyAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXRpYyBNZXRob2Q8Ynl0ZVtdLCBieXRlW10+IFN0cmVhbWluZ0NhbGxNZXRob2QgPSBuZXcgTWV0aG9kPGJ5dGVbXSwgYnl0ZVtdPigKKyAgICAgICAgICAgIE1ldGhvZFR5cGUuRHVwbGV4U3RyZWFtaW5nLAorICAgICAgICAgICAgImdycGMudGVzdGluZy5CZW5jaG1hcmtTZXJ2aWNlIiwKKyAgICAgICAgICAgICJTdHJlYW1pbmdDYWxsIiwKKyAgICAgICAgICAgIEJ5dGVBcnJheU1hcnNoYWxsZXIsCisgICAgICAgICAgICBCeXRlQXJyYXlNYXJzaGFsbGVyCisgICAgICAgICk7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBTZXJ2ZXJTZXJ2aWNlRGVmaW5pdGlvbiBCaW5kSGFuZGxlcihEdXBsZXhTdHJlYW1pbmdTZXJ2ZXJNZXRob2Q8Ynl0ZVtdLCBieXRlW10+IGhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTZXJ2ZXJTZXJ2aWNlRGVmaW5pdGlvbi5DcmVhdGVCdWlsZGVyKFN0cmVhbWluZ0NhbGxNZXRob2QuU2VydmljZU5hbWUpCisgICAgICAgICAgICAgICAgLkFkZE1ldGhvZChTdHJlYW1pbmdDYWxsTWV0aG9kLCBoYW5kbGVyKS5CdWlsZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9HcnBjLkludGVncmF0aW9uVGVzdGluZy5jc3Byb2ogYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLmNzcHJvagppbmRleCAzNzI5OTEzLi40YzA0OTk0IDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLmNzcHJvagorKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLmNzcHJvagpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAgPENvbXBpbGUgSW5jbHVkZT0iV29ya2VyU2VydmljZUltcGwuY3MiIC8+CiAgICAgPENvbXBpbGUgSW5jbHVkZT0iUXBzV29ya2VyLmNzIiAvPgogICAgIDxDb21waWxlIEluY2x1ZGU9IldhbGxDbG9ja1N0b3B3YXRjaC5jcyIgLz4KKyAgICA8Q29tcGlsZSBJbmNsdWRlPSJHZW5lcmljU2VydmljZS5jcyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcTWljcm9zb2Z0LkNTaGFycC50YXJnZXRzIiAvPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9SdW5uZXJDbGllbnRTZXJ2ZXJUZXN0LmNzIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9SdW5uZXJDbGllbnRTZXJ2ZXJUZXN0LmNzCmluZGV4IDA2ZDVlZTkuLmE4Y2Y3NWIgMTAwNjQ0Ci0tLSBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvUnVubmVyQ2xpZW50U2VydmVyVGVzdC5jcworKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL1J1bm5lckNsaWVudFNlcnZlclRlc3QuY3MKQEAgLTU1LDE0ICs1NSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzZXJ2ZXJDb25maWcgPSBuZXcgU2VydmVyQ29uZmlnCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU2VydmVyVHlwZSA9IFNlcnZlclR5cGUuQVNZTkNfU0VSVkVSLAotICAgICAgICAgICAgICAgIFBheWxvYWRDb25maWcgPSBuZXcgUGF5bG9hZENvbmZpZwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgU2ltcGxlUGFyYW1zID0gbmV3IFNpbXBsZVByb3RvUGFyYW1zCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BTaXplID0gMTAwCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU2VydmVyVHlwZSA9IFNlcnZlclR5cGUuQVNZTkNfU0VSVkVSCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgc2VydmVyUnVubmVyID0gU2VydmVyUnVubmVycy5DcmVhdGVTdGFydGVkKHNlcnZlckNvbmZpZyk7CiAgICAgICAgIH0KQEAgLTg4LDcgKzgxLDggQEAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFNpbXBsZVBhcmFtcyA9IG5ldyBTaW1wbGVQcm90b1BhcmFtcwogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZXFTaXplID0gMTAwCisgICAgICAgICAgICAgICAgICAgICAgICBSZXFTaXplID0gMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzcFNpemUgPSAxMDAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgSGlzdG9ncmFtUGFyYW1zID0gbmV3IEhpc3RvZ3JhbVBhcmFtcwpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9TZXJ2ZXJSdW5uZXJzLmNzIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy9TZXJ2ZXJSdW5uZXJzLmNzCmluZGV4IDRhNzM2NDUuLmMzMjYzNzggMTAwNjQ0Ci0tLSBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvU2VydmVyUnVubmVycy5jcworKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL1NlcnZlclJ1bm5lcnMuY3MKQEAgLTQxLDYgKzQxLDcgQEAKIHVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CiB1c2luZyBHb29nbGUuUHJvdG9idWY7CiB1c2luZyBHcnBjLkNvcmU7Cit1c2luZyBHcnBjLkNvcmUuTG9nZ2luZzsKIHVzaW5nIEdycGMuQ29yZS5VdGlsczsKIHVzaW5nIE5Vbml0LkZyYW1ld29yazsKIHVzaW5nIEdycGMuVGVzdGluZzsKQEAgLTUwLDI3ICs1MSw3OCBAQAogICAgIC8vLyA8c3VtbWFyeT4KICAgICAvLy8gSGVscGVyIG1ldGhvZHMgdG8gc3RhcnQgc2VydmVyIHJ1bm5lcnMgZm9yIHBlcmZvcm1hbmNlIHRlc3RpbmcuCiAgICAgLy8vIDwvc3VtbWFyeT4KLSAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNlcnZlclJ1bm5lcnMKKyAgICBwdWJsaWMgY2xhc3MgU2VydmVyUnVubmVycwogICAgIHsKKyAgICAgICAgc3RhdGljIHJlYWRvbmx5IElMb2dnZXIgTG9nZ2VyID0gR3JwY0Vudmlyb25tZW50LkxvZ2dlci5Gb3JUeXBlPFNlcnZlclJ1bm5lcnM+KCk7CisKICAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAgICAvLy8gQ3JlYXRlcyBhIHN0YXJ0ZWQgc2VydmVyIHJ1bm5lci4KICAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICAgcHVibGljIHN0YXRpYyBJU2VydmVyUnVubmVyIENyZWF0ZVN0YXJ0ZWQoU2VydmVyQ29uZmlnIGNvbmZpZykKICAgICAgICAgewotICAgICAgICAgICAgR3JwY1ByZWNvbmRpdGlvbnMuQ2hlY2tBcmd1bWVudChjb25maWcuU2VydmVyVHlwZSA9PSBTZXJ2ZXJUeXBlLkFTWU5DX1NFUlZFUik7CisgICAgICAgICAgICBMb2dnZXIuRGVidWcoIlNlcnZlckNvbmZpZzogezB9IiwgY29uZmlnKTsKICAgICAgICAgICAgIHZhciBjcmVkZW50aWFscyA9IGNvbmZpZy5TZWN1cml0eVBhcmFtcyAhPSBudWxsID8gVGVzdENyZWRlbnRpYWxzLkNyZWF0ZVNzbFNlcnZlckNyZWRlbnRpYWxzKCkgOiBTZXJ2ZXJDcmVkZW50aWFscy5JbnNlY3VyZTsKIAotICAgICAgICAgICAgLy8gVE9ETzogcXBzX2RyaXZlciBuZWVkcyB0byBzZXR1cCBwYXlsb2FkIHByb3Blcmx5Li4uCi0gICAgICAgICAgICBpbnQgcmVzcG9uc2VTaXplID0gY29uZmlnLlBheWxvYWRDb25maWcgIT0gbnVsbCA/IGNvbmZpZy5QYXlsb2FkQ29uZmlnLlNpbXBsZVBhcmFtcy5SZXNwU2l6ZSA6IDA7CisgICAgICAgICAgICBpZiAoY29uZmlnLkFzeW5jU2VydmVyVGhyZWFkcyAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvZ2dlci5XYXJuaW5nKCJTZXJ2ZXJDb25maWcuQXN5bmNTZXJ2ZXJUaHJlYWRzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEMjLiBJZ25vcmluZyB0aGUgdmFsdWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25maWcuQ29yZUxpbWl0ICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9nZ2VyLldhcm5pbmcoIlNlcnZlckNvbmZpZy5Db3JlTGltaXQgaXMgbm90IHN1cHBvcnRlZCBmb3IgQyMuIElnbm9yaW5nIHRoZSB2YWx1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmZpZy5Db3JlTGlzdC5Db3VudCA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9nZ2VyLldhcm5pbmcoIlNlcnZlckNvbmZpZy5Db3JlTGlzdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBDIy4gSWdub3JpbmcgdGhlIHZhbHVlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFNlcnZlclNlcnZpY2VEZWZpbml0aW9uIHNlcnZpY2UgPSBudWxsOworICAgICAgICAgICAgaWYgKGNvbmZpZy5TZXJ2ZXJUeXBlID09IFNlcnZlclR5cGUuQVNZTkNfU0VSVkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdycGNQcmVjb25kaXRpb25zLkNoZWNrQXJndW1lbnQoY29uZmlnLlBheWxvYWRDb25maWcgPT0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgIlNlcnZlckNvbmZpZy5QYXlsb2FkQ29uZmlnIHNob3VsZG4ndCBiZSBzZXQgZm9yIEJlbmNobWFya1NlcnZpY2UgYmFzZWQgc2VydmVyLiIpOyAgICAKKyAgICAgICAgICAgICAgICBzZXJ2aWNlID0gQmVuY2htYXJrU2VydmljZS5CaW5kU2VydmljZShuZXcgQmVuY2htYXJrU2VydmljZUltcGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjb25maWcuU2VydmVyVHlwZSA9PSBTZXJ2ZXJUeXBlLkFTWU5DX0dFTkVSSUNfU0VSVkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBnZW5lcmljU2VydmljZSA9IG5ldyBHZW5lcmljU2VydmljZUltcGwoY29uZmlnLlBheWxvYWRDb25maWcuQnl0ZWJ1ZlBhcmFtcy5SZXNwU2l6ZSk7CisgICAgICAgICAgICAgICAgc2VydmljZSA9IEdlbmVyaWNTZXJ2aWNlLkJpbmRIYW5kbGVyKGdlbmVyaWNTZXJ2aWNlLlN0cmVhbWluZ0NhbGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgU2VydmVyVHlwZSIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YXIgc2VydmVyID0gbmV3IFNlcnZlcgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNlcnZpY2VzID0geyBCZW5jaG1hcmtTZXJ2aWNlLkJpbmRTZXJ2aWNlKG5ldyBCZW5jaG1hcmtTZXJ2aWNlSW1wbChyZXNwb25zZVNpemUpKSB9LAorICAgICAgICAgICAgICAgIFNlcnZpY2VzID0geyBzZXJ2aWNlIH0sCiAgICAgICAgICAgICAgICAgUG9ydHMgPSB7IG5ldyBTZXJ2ZXJQb3J0KCJbOjpdIiwgY29uZmlnLlBvcnQsIGNyZWRlbnRpYWxzKSB9CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBzZXJ2ZXIuU3RhcnQoKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmVyUnVubmVySW1wbChzZXJ2ZXIpOwogICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBHZW5lcmljU2VydmljZUltcGwKKyAgICAgICAgeworICAgICAgICAgICAgcmVhZG9ubHkgYnl0ZVtdIHJlc3BvbnNlOworCisgICAgICAgICAgICBwdWJsaWMgR2VuZXJpY1NlcnZpY2VJbXBsKGludCByZXNwb25zZVNpemUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZSA9IG5ldyBieXRlW3Jlc3BvbnNlU2l6ZV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgICAgIC8vLyBHZW5lcmljIHN0cmVhbWluZyBjYWxsIGhhbmRsZXIuCisgICAgICAgICAgICAvLy8gPC9zdW1tYXJ5PgorICAgICAgICAgICAgcHVibGljIGFzeW5jIFRhc2sgU3RyZWFtaW5nQ2FsbChJQXN5bmNTdHJlYW1SZWFkZXI8Ynl0ZVtdPiByZXF1ZXN0U3RyZWFtLCBJU2VydmVyU3RyZWFtV3JpdGVyPGJ5dGVbXT4gcmVzcG9uc2VTdHJlYW0sIFNlcnZlckNhbGxDb250ZXh0IGNvbnRleHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXdhaXQgcmVxdWVzdFN0cmVhbS5Gb3JFYWNoQXN5bmMoYXN5bmMgcmVxdWVzdCA9PgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgcmVzcG9uc2VTdHJlYW0uV3JpdGVBc3luYyhyZXNwb25zZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLy8gPHN1bW1hcnk+CkBAIC0xMTksNiArMTcxLDUgQEAKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNlcnZlci5TaHV0ZG93bkFzeW5jKCk7CiAgICAgICAgIH0KLSAgICB9Ci0gICAgICAgIAorICAgIH0gICAgICAgIAogfQpkaWZmIC0tZ2l0IGEvc3JjL25vZGUvaW5kZXguanMgYi9zcmMvbm9kZS9pbmRleC5qcwppbmRleCAxYzE5NzcyLi42NTY3ZDU2IDEwMDY0NAotLS0gYS9zcmMvbm9kZS9pbmRleC5qcworKysgYi9zcmMvbm9kZS9pbmRleC5qcwpAQCAtODcsNiArODcsMTAgQEAKICAqICAgQnVmZmVycy4gRGVmYXVsdHMgdG8gZmFsc2UKICAqIC0gbG9uZ3NBc1N0cmluZ3M6IGRlc2VyaWFsaXplIGxvbmcgdmFsdWVzIGFzIHN0cmluZ3MgaW5zdGVhZCBvZiBvYmplY3RzLgogICogICBEZWZhdWx0cyB0byB0cnVlCisgKiAtIGRlcHJlY2F0ZWRBcmd1bWVudE9yZGVyOiBVc2UgdGhlIGJldGEgbWV0aG9kIGFyZ3VtZW50IG9yZGVyIGZvciBjbGllbnQKKyAqICAgbWV0aG9kcywgd2l0aCBvcHRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrLiBEZWZhdWx0cyB0byBmYWxzZS4KKyAqICAgVGhpcyBvcHRpb24gaXMgb25seSBhIHRlbXBvcmFyeSBzdG9wZ2FwIG1lYXN1cmUgdG8gc21vb3RoIGFuIEFQSSBicmVha2FnZS4KKyAqICAgSXQgaXMgZGVwcmVjYXRlZCwgYW5kIG5ldyBjb2RlIHNob3VsZCBub3QgdXNlIGl0LgogICogQHBhcmFtIHtzdHJpbmd8e3Jvb3Q6IHN0cmluZywgZmlsZTogc3RyaW5nfX0gZmlsZW5hbWUgVGhlIGZpbGUgdG8gbG9hZAogICogQHBhcmFtIHtzdHJpbmc9fSBmb3JtYXQgVGhlIGZpbGUgZm9ybWF0IHRvIGV4cGVjdC4gTXVzdCBiZSBlaXRoZXIgJ3Byb3RvJyBvcgogICogICAgICdqc29uJy4gRGVmYXVsdHMgdG8gJ3Byb3RvJwpkaWZmIC0tZ2l0IGEvc3JjL25vZGUvaW50ZXJvcC9pbnRlcm9wX2NsaWVudC5qcyBiL3NyYy9ub2RlL2ludGVyb3AvaW50ZXJvcF9jbGllbnQuanMKaW5kZXggNTYwMjAxMS4uYWMwZWRkYyAxMDA2NDQKLS0tIGEvc3JjL25vZGUvaW50ZXJvcC9pbnRlcm9wX2NsaWVudC5qcworKysgYi9zcmMvbm9kZS9pbnRlcm9wL2ludGVyb3BfY2xpZW50LmpzCkBAIC0yODYsNyArMjg2LDcgQEAKIGZ1bmN0aW9uIHRpbWVvdXRPblNsZWVwaW5nU2VydmVyKGNsaWVudCwgZG9uZSkgewogICB2YXIgZGVhZGxpbmUgPSBuZXcgRGF0ZSgpOwogICBkZWFkbGluZS5zZXRNaWxsaXNlY29uZHMoZGVhZGxpbmUuZ2V0TWlsbGlzZWNvbmRzKCkgKyAxKTsKLSAgdmFyIGNhbGwgPSBjbGllbnQuZnVsbER1cGxleENhbGwobnVsbCwge2RlYWRsaW5lOiBkZWFkbGluZX0pOworICB2YXIgY2FsbCA9IGNsaWVudC5mdWxsRHVwbGV4Q2FsbCh7ZGVhZGxpbmU6IGRlYWRsaW5lfSk7CiAgIGNhbGwud3JpdGUoewogICAgIHBheWxvYWQ6IHtib2R5OiB6ZXJvQnVmZmVyKDI3MTgyKX0KICAgfSk7CkBAIC0zMTYsMTAgKzMxNiwxMCBAQAogICAgICAgYm9keTogemVyb0J1ZmZlcigyNzE4MjgpCiAgICAgfQogICB9OwotICB2YXIgdW5hcnkgPSBjbGllbnQudW5hcnlDYWxsKGFyZywgZnVuY3Rpb24oZXJyLCByZXNwKSB7CisgIHZhciB1bmFyeSA9IGNsaWVudC51bmFyeUNhbGwoYXJnLCBtZXRhZGF0YSwgZnVuY3Rpb24oZXJyLCByZXNwKSB7CiAgICAgYXNzZXJ0LmlmRXJyb3IoZXJyKTsKICAgICBkb25lKCk7Ci0gIH0sIG1ldGFkYXRhKTsKKyAgfSk7CiAgIHVuYXJ5Lm9uKCdtZXRhZGF0YScsIGZ1bmN0aW9uKG1ldGFkYXRhKSB7CiAgICAgYXNzZXJ0LmRlZXBFcXVhbChtZXRhZGF0YS5nZXQoRUNIT19JTklUSUFMX0tFWSksCiAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfaW5pdGlhbF9tZXRhZGF0YV92YWx1ZSddKTsKQEAgLTQ1NSwxNCArNDU1LDE0IEBACiAgICAgICBjcmVkZW50aWFsID0gY3JlZGVudGlhbC5jcmVhdGVTY29wZWQoc2NvcGUpOwogICAgIH0KICAgICB2YXIgY3JlZHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUZyb21Hb29nbGVDcmVkZW50aWFsKGNyZWRlbnRpYWwpOwotICAgIGNsaWVudC51bmFyeUNhbGwoYXJnLCBmdW5jdGlvbihlcnIsIHJlc3ApIHsKKyAgICBjbGllbnQudW5hcnlDYWxsKGFyZywge2NyZWRlbnRpYWxzOiBjcmVkc30sIGZ1bmN0aW9uKGVyciwgcmVzcCkgewogICAgICAgYXNzZXJ0LmlmRXJyb3IoZXJyKTsKICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXNwLnVzZXJuYW1lLCBTRVJWSUNFX0FDQ09VTlRfRU1BSUwpOwogICAgICAgYXNzZXJ0KGV4dHJhLm9hdXRoX3Njb3BlLmluZGV4T2YocmVzcC5vYXV0aF9zY29wZSkgPiAtMSk7CiAgICAgICBpZiAoZG9uZSkgewogICAgICAgICBkb25lKCk7CiAgICAgICB9Ci0gICAgfSwgbnVsbCwge2NyZWRlbnRpYWxzOiBjcmVkc30pOworICAgIH0pOwogICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL25vZGUvc3JjL2NsaWVudC5qcyBiL3NyYy9ub2RlL3NyYy9jbGllbnQuanMKaW5kZXggMjQ1OWUyOC4uODIxNDIzNyAxMDA2NDQKLS0tIGEvc3JjL25vZGUvc3JjL2NsaWVudC5qcworKysgYi9zcmMvbm9kZS9zcmMvY2xpZW50LmpzCkBAIC01MCw2ICs1MCw3IEBACiAndXNlIHN0cmljdCc7CiAKIHZhciBfID0gcmVxdWlyZSgnbG9kYXNoJyk7Cit2YXIgYXJndWVqcyA9IHJlcXVpcmUoJ2FyZ3VlanMnKTsKIAogdmFyIGdycGMgPSByZXF1aXJlKCcuL2dycGNfZXh0ZW5zaW9uJyk7CiAKQEAgLTM1MywyMSArMzU0LDIzIEBACiAgICAqIEB0aGlzIHtDbGllbnR9IENsaWVudCBvYmplY3QuIE11c3QgaGF2ZSBhIGNoYW5uZWwgbWVtYmVyLgogICAgKiBAcGFyYW0geyp9IGFyZ3VtZW50IFRoZSBhcmd1bWVudCB0byB0aGUgY2FsbC4gU2hvdWxkIGJlIHNlcmlhbGl6YWJsZSB3aXRoCiAgICAqICAgICBzZXJpYWxpemUKLSAgICogQHBhcmFtIHtmdW5jdGlvbig/RXJyb3IsIHZhbHVlPSl9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmb3Igd2hlbiB0aGUKLSAgICogICAgIHJlc3BvbnNlIGlzIHJlY2VpdmVkCiAgICAqIEBwYXJhbSB7TWV0YWRhdGE9fSBtZXRhZGF0YSBNZXRhZGF0YSB0byBhZGQgdG8gdGhlIGNhbGwKICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIE9wdGlvbnMgbWFwCisgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0Vycm9yLCB2YWx1ZT0pfSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZm9yIHdoZW4gdGhlCisgICAqICAgICByZXNwb25zZSBpcyByZWNlaXZlZAogICAgKiBAcmV0dXJuIHtFdmVudEVtaXR0ZXJ9IEFuIGV2ZW50IGVtaXR0ZXIgZm9yIHN0cmVhbSByZWxhdGVkIGV2ZW50cwogICAgKi8KLSAgZnVuY3Rpb24gbWFrZVVuYXJ5UmVxdWVzdChhcmd1bWVudCwgY2FsbGJhY2ssIG1ldGFkYXRhLCBvcHRpb25zKSB7CisgIGZ1bmN0aW9uIG1ha2VVbmFyeVJlcXVlc3QoYXJndW1lbnQsIG1ldGFkYXRhLCBvcHRpb25zLCBjYWxsYmFjaykgewogICAgIC8qIGpzaGludCB2YWxpZHRoaXM6IHRydWUgKi8KKyAgICAvKiBXaGlsZSB0aGUgYXJndW1lbnRzIGFyZSBsaXN0ZWQgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhvc2UgdmFyaWFibGVzCisgICAgICogYXJlIG5vdCB1c2VkIGRpcmVjdGx5LiBJbnN0ZWFkLCBBcmd1ZUpTIHByb2Nlc3NlcyB0aGUgYXJndW1lbnRzCisgICAgICogb2JqZWN0LiBUaGlzIGFsbG93cyBmb3Igc2ltcGxlIGhhbmRsaW5nIG9mIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiB0aGUKKyAgICAgKiBtaWRkbGUgb2YgdGhlIGFyZ3VtZW50IGxpc3QsIGFuZCBhbHNvIHByb3ZpZGVzIHR5cGUgY2hlY2tpbmcuICovCisgICAgdmFyIGFyZ3MgPSBhcmd1ZWpzKHthcmd1bWVudDogbnVsbCwgbWV0YWRhdGE6IFtNZXRhZGF0YSwgbmV3IE1ldGFkYXRhKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW09iamVjdF0sIGNhbGxiYWNrOiBGdW5jdGlvbn0sIGFyZ3VtZW50cyk7CiAgICAgdmFyIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7Ci0gICAgdmFyIGNhbGwgPSBnZXRDYWxsKHRoaXMuJGNoYW5uZWwsIG1ldGhvZCwgb3B0aW9ucyk7Ci0gICAgaWYgKG1ldGFkYXRhID09PSBudWxsIHx8IG1ldGFkYXRhID09PSB1bmRlZmluZWQpIHsKLSAgICAgIG1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG1ldGFkYXRhID0gbWV0YWRhdGEuY2xvbmUoKTsKLSAgICB9CisgICAgdmFyIGNhbGwgPSBnZXRDYWxsKHRoaXMuJGNoYW5uZWwsIG1ldGhvZCwgYXJncy5vcHRpb25zKTsKKyAgICBtZXRhZGF0YSA9IGFyZ3MubWV0YWRhdGEuY2xvbmUoKTsKICAgICBlbWl0dGVyLmNhbmNlbCA9IGZ1bmN0aW9uIGNhbmNlbCgpIHsKICAgICAgIGNhbGwuY2FuY2VsKCk7CiAgICAgfTsKQEAgLTM3NSw5ICszNzgsOSBAQAogICAgICAgcmV0dXJuIGNhbGwuZ2V0UGVlcigpOwogICAgIH07CiAgICAgdmFyIGNsaWVudF9iYXRjaCA9IHt9OwotICAgIHZhciBtZXNzYWdlID0gc2VyaWFsaXplKGFyZ3VtZW50KTsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgbWVzc2FnZS5ncnBjV3JpdGVGbGFncyA9IG9wdGlvbnMuZmxhZ3M7CisgICAgdmFyIG1lc3NhZ2UgPSBzZXJpYWxpemUoYXJncy5hcmd1bWVudCk7CisgICAgaWYgKGFyZ3Mub3B0aW9ucykgeworICAgICAgbWVzc2FnZS5ncnBjV3JpdGVGbGFncyA9IGFyZ3Mub3B0aW9ucy5mbGFnczsKICAgICB9CiAgICAgY2xpZW50X2JhdGNoW2dycGMub3BUeXBlLlNFTkRfSU5JVElBTF9NRVRBREFUQV0gPQogICAgICAgICBtZXRhZGF0YS5fZ2V0Q29yZVJlcHJlc2VudGF0aW9uKCk7CkBAIC0zOTUsNyArMzk4LDcgQEAKICAgICAgIGlmIChzdGF0dXMuY29kZSA9PT0gZ3JwYy5zdGF0dXMuT0spIHsKICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgIC8vIEdvdCBhIGJhdGNoIGVycm9yLCBidXQgT0sgc3RhdHVzLiBTb21ldGhpbmcgd2VudCB3cm9uZwotICAgICAgICAgIGNhbGxiYWNrKGVycik7CisgICAgICAgICAgYXJncy5jYWxsYmFjayhlcnIpOwogICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICB0cnkgewpAQCAtNDE0LDkgKzQxNyw5IEBACiAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKHN0YXR1cy5kZXRhaWxzKTsKICAgICAgICAgZXJyb3IuY29kZSA9IHN0YXR1cy5jb2RlOwogICAgICAgICBlcnJvci5tZXRhZGF0YSA9IHN0YXR1cy5tZXRhZGF0YTsKLSAgICAgICAgY2FsbGJhY2soZXJyb3IpOworICAgICAgICBhcmdzLmNhbGxiYWNrKGVycm9yKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGNhbGxiYWNrKG51bGwsIGRlc2VyaWFsaXplZCk7CisgICAgICAgIGFyZ3MuY2FsbGJhY2sobnVsbCwgZGVzZXJpYWxpemVkKTsKICAgICAgIH0KICAgICAgIGVtaXR0ZXIuZW1pdCgnc3RhdHVzJywgc3RhdHVzKTsKICAgICAgIGVtaXR0ZXIuZW1pdCgnbWV0YWRhdGEnLCBNZXRhZGF0YS5fZnJvbUNvcmVSZXByZXNlbnRhdGlvbigKQEAgLTQ0MCwyMSArNDQzLDIzIEBACiAgICAqIE1ha2UgYSBjbGllbnQgc3RyZWFtIHJlcXVlc3Qgd2l0aCB0aGlzIG1ldGhvZCBvbiB0aGUgZ2l2ZW4gY2hhbm5lbCB3aXRoIHRoZQogICAgKiBnaXZlbiBjYWxsYmFjaywgZXRjLgogICAgKiBAdGhpcyB7Q2xpZW50fSBDbGllbnQgb2JqZWN0LiBNdXN0IGhhdmUgYSBjaGFubmVsIG1lbWJlci4KLSAgICogQHBhcmFtIHtmdW5jdGlvbig/RXJyb3IsIHZhbHVlPSl9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmb3Igd2hlbiB0aGUKLSAgICogICAgIHJlc3BvbnNlIGlzIHJlY2VpdmVkCiAgICAqIEBwYXJhbSB7TWV0YWRhdGE9fSBtZXRhZGF0YSBBcnJheSBvZiBtZXRhZGF0YSBrZXkvdmFsdWUgcGFpcnMgdG8gYWRkIHRvIHRoZQogICAgKiAgICAgY2FsbAogICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnMgT3B0aW9ucyBtYXAKKyAgICogQHBhcmFtIHtmdW5jdGlvbig/RXJyb3IsIHZhbHVlPSl9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmb3Igd2hlbiB0aGUKKyAgICogICAgIHJlc3BvbnNlIGlzIHJlY2VpdmVkCiAgICAqIEByZXR1cm4ge0V2ZW50RW1pdHRlcn0gQW4gZXZlbnQgZW1pdHRlciBmb3Igc3RyZWFtIHJlbGF0ZWQgZXZlbnRzCiAgICAqLwotICBmdW5jdGlvbiBtYWtlQ2xpZW50U3RyZWFtUmVxdWVzdChjYWxsYmFjaywgbWV0YWRhdGEsIG9wdGlvbnMpIHsKKyAgZnVuY3Rpb24gbWFrZUNsaWVudFN0cmVhbVJlcXVlc3QobWV0YWRhdGEsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqLwotICAgIHZhciBjYWxsID0gZ2V0Q2FsbCh0aGlzLiRjaGFubmVsLCBtZXRob2QsIG9wdGlvbnMpOwotICAgIGlmIChtZXRhZGF0YSA9PT0gbnVsbCB8fCBtZXRhZGF0YSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBtZXRhZGF0YSA9IG5ldyBNZXRhZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhLmNsb25lKCk7Ci0gICAgfQorICAgIC8qIFdoaWxlIHRoZSBhcmd1bWVudHMgYXJlIGxpc3RlZCBpbiB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCB0aG9zZSB2YXJpYWJsZXMKKyAgICAgKiBhcmUgbm90IHVzZWQgZGlyZWN0bHkuIEluc3RlYWQsIEFyZ3VlSlMgcHJvY2Vzc2VzIHRoZSBhcmd1bWVudHMKKyAgICAgKiBvYmplY3QuIFRoaXMgYWxsb3dzIGZvciBzaW1wbGUgaGFuZGxpbmcgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGluIHRoZQorICAgICAqIG1pZGRsZSBvZiB0aGUgYXJndW1lbnQgbGlzdCwgYW5kIGFsc28gcHJvdmlkZXMgdHlwZSBjaGVja2luZy4gKi8KKyAgICB2YXIgYXJncyA9IGFyZ3VlanMoe21ldGFkYXRhOiBbTWV0YWRhdGEsIG5ldyBNZXRhZGF0YSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtPYmplY3RdLCBjYWxsYmFjazogRnVuY3Rpb259LCBhcmd1bWVudHMpOworICAgIHZhciBjYWxsID0gZ2V0Q2FsbCh0aGlzLiRjaGFubmVsLCBtZXRob2QsIGFyZ3Mub3B0aW9ucyk7CisgICAgbWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhLmNsb25lKCk7CiAgICAgdmFyIHN0cmVhbSA9IG5ldyBDbGllbnRXcml0YWJsZVN0cmVhbShjYWxsLCBzZXJpYWxpemUpOwogICAgIHZhciBtZXRhZGF0YV9iYXRjaCA9IHt9OwogICAgIG1ldGFkYXRhX2JhdGNoW2dycGMub3BUeXBlLlNFTkRfSU5JVElBTF9NRVRBREFUQV0gPQpAQCAtNDgxLDcgKzQ4Niw3IEBACiAgICAgICBpZiAoc3RhdHVzLmNvZGUgPT09IGdycGMuc3RhdHVzLk9LKSB7CiAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAvLyBHb3QgYSBiYXRjaCBlcnJvciwgYnV0IE9LIHN0YXR1cy4gU29tZXRoaW5nIHdlbnQgd3JvbmcKLSAgICAgICAgICBjYWxsYmFjayhlcnIpOworICAgICAgICAgIGFyZ3MuY2FsbGJhY2soZXJyKTsKICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgdHJ5IHsKQEAgLTUwMCw5ICs1MDUsOSBAQAogICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXMuZGV0YWlscyk7CiAgICAgICAgIGVycm9yLmNvZGUgPSBzdGF0dXMuY29kZTsKICAgICAgICAgZXJyb3IubWV0YWRhdGEgPSBzdGF0dXMubWV0YWRhdGE7Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yKTsKKyAgICAgICAgYXJncy5jYWxsYmFjayhlcnJvcik7CiAgICAgICB9IGVsc2UgewotICAgICAgICBjYWxsYmFjayhudWxsLCBkZXNlcmlhbGl6ZWQpOworICAgICAgICBhcmdzLmNhbGxiYWNrKG51bGwsIGRlc2VyaWFsaXplZCk7CiAgICAgICB9CiAgICAgICBzdHJlYW0uZW1pdCgnc3RhdHVzJywgc3RhdHVzKTsKICAgICB9KTsKQEAgLTUzMywxNyArNTM4LDE4IEBACiAgICAqLwogICBmdW5jdGlvbiBtYWtlU2VydmVyU3RyZWFtUmVxdWVzdChhcmd1bWVudCwgbWV0YWRhdGEsIG9wdGlvbnMpIHsKICAgICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovCi0gICAgdmFyIGNhbGwgPSBnZXRDYWxsKHRoaXMuJGNoYW5uZWwsIG1ldGhvZCwgb3B0aW9ucyk7Ci0gICAgaWYgKG1ldGFkYXRhID09PSBudWxsIHx8IG1ldGFkYXRhID09PSB1bmRlZmluZWQpIHsKLSAgICAgIG1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG1ldGFkYXRhID0gbWV0YWRhdGEuY2xvbmUoKTsKLSAgICB9CisgICAgLyogV2hpbGUgdGhlIGFyZ3VtZW50cyBhcmUgbGlzdGVkIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIHRob3NlIHZhcmlhYmxlcworICAgICAqIGFyZSBub3QgdXNlZCBkaXJlY3RseS4gSW5zdGVhZCwgQXJndWVKUyBwcm9jZXNzZXMgdGhlIGFyZ3VtZW50cworICAgICAqIG9iamVjdC4gKi8KKyAgICB2YXIgYXJncyA9IGFyZ3VlanMoe2FyZ3VtZW50OiBudWxsLCBtZXRhZGF0YTogW01ldGFkYXRhLCBuZXcgTWV0YWRhdGEoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbT2JqZWN0XX0sIGFyZ3VtZW50cyk7CisgICAgdmFyIGNhbGwgPSBnZXRDYWxsKHRoaXMuJGNoYW5uZWwsIG1ldGhvZCwgYXJncy5vcHRpb25zKTsKKyAgICBtZXRhZGF0YSA9IGFyZ3MubWV0YWRhdGEuY2xvbmUoKTsKICAgICB2YXIgc3RyZWFtID0gbmV3IENsaWVudFJlYWRhYmxlU3RyZWFtKGNhbGwsIGRlc2VyaWFsaXplKTsKICAgICB2YXIgc3RhcnRfYmF0Y2ggPSB7fTsKLSAgICB2YXIgbWVzc2FnZSA9IHNlcmlhbGl6ZShhcmd1bWVudCk7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgIG1lc3NhZ2UuZ3JwY1dyaXRlRmxhZ3MgPSBvcHRpb25zLmZsYWdzOworICAgIHZhciBtZXNzYWdlID0gc2VyaWFsaXplKGFyZ3MuYXJndW1lbnQpOworICAgIGlmIChhcmdzLm9wdGlvbnMpIHsKKyAgICAgIG1lc3NhZ2UuZ3JwY1dyaXRlRmxhZ3MgPSBhcmdzLm9wdGlvbnMuZmxhZ3M7CiAgICAgfQogICAgIHN0YXJ0X2JhdGNoW2dycGMub3BUeXBlLlNFTkRfSU5JVElBTF9NRVRBREFUQV0gPQogICAgICAgICBtZXRhZGF0YS5fZ2V0Q29yZVJlcHJlc2VudGF0aW9uKCk7CkBAIC01OTUsMTIgKzYwMSwxMyBAQAogICAgKi8KICAgZnVuY3Rpb24gbWFrZUJpZGlTdHJlYW1SZXF1ZXN0KG1ldGFkYXRhLCBvcHRpb25zKSB7CiAgICAgLyoganNoaW50IHZhbGlkdGhpczogdHJ1ZSAqLwotICAgIHZhciBjYWxsID0gZ2V0Q2FsbCh0aGlzLiRjaGFubmVsLCBtZXRob2QsIG9wdGlvbnMpOwotICAgIGlmIChtZXRhZGF0YSA9PT0gbnVsbCB8fCBtZXRhZGF0YSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBtZXRhZGF0YSA9IG5ldyBNZXRhZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBtZXRhZGF0YSA9IG1ldGFkYXRhLmNsb25lKCk7Ci0gICAgfQorICAgIC8qIFdoaWxlIHRoZSBhcmd1bWVudHMgYXJlIGxpc3RlZCBpbiB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCB0aG9zZSB2YXJpYWJsZXMKKyAgICAgKiBhcmUgbm90IHVzZWQgZGlyZWN0bHkuIEluc3RlYWQsIEFyZ3VlSlMgcHJvY2Vzc2VzIHRoZSBhcmd1bWVudHMKKyAgICAgKiBvYmplY3QuICovCisgICAgdmFyIGFyZ3MgPSBhcmd1ZWpzKHttZXRhZGF0YTogW01ldGFkYXRhLCBuZXcgTWV0YWRhdGEoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbT2JqZWN0XX0sIGFyZ3VtZW50cyk7CisgICAgdmFyIGNhbGwgPSBnZXRDYWxsKHRoaXMuJGNoYW5uZWwsIG1ldGhvZCwgYXJncy5vcHRpb25zKTsKKyAgICBtZXRhZGF0YSA9IGFyZ3MubWV0YWRhdGEuY2xvbmUoKTsKICAgICB2YXIgc3RyZWFtID0gbmV3IENsaWVudER1cGxleFN0cmVhbShjYWxsLCBzZXJpYWxpemUsIGRlc2VyaWFsaXplKTsKICAgICB2YXIgc3RhcnRfYmF0Y2ggPSB7fTsKICAgICBzdGFydF9iYXRjaFtncnBjLm9wVHlwZS5TRU5EX0lOSVRJQUxfTUVUQURBVEFdID0KQEAgLTY0Myw2ICs2NTAsNDAgQEAKICAgYmlkaTogbWFrZUJpZGlTdHJlYW1SZXF1ZXN0RnVuY3Rpb24KIH07CiAKK2Z1bmN0aW9uIGdldERlZmF1bHRWYWx1ZXMobWV0YWRhdGEsIG9wdGlvbnMpIHsKKyAgdmFyIHJlcyA9IHt9OworICByZXMubWV0YWRhdGEgPSBtZXRhZGF0YSB8fCBuZXcgTWV0YWRhdGEoKTsKKyAgcmVzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworICByZXR1cm4gcmVzOworfQorCisvKioKKyAqIE1hcCB3aXRoIHdyYXBwZXJzIGZvciBlYWNoIHR5cGUgb2YgcmVxdWVzdGVyIGZ1bmN0aW9uIHRvIG1ha2UgaXQgdXNlIHRoZSBvbGQKKyAqIGFyZ3VtZW50IG9yZGVyIHdpdGggb3B0aW9uYWwgYXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsYmFjay4KKyAqLwordmFyIGRlcHJlY2F0ZWRfcmVxdWVzdF93cmFwID0geworICB1bmFyeTogZnVuY3Rpb24obWFrZVVuYXJ5UmVxdWVzdCkgeworICAgIHJldHVybiBmdW5jdGlvbiBtYWtlV3JhcHBlZFVuYXJ5UmVxdWVzdChhcmd1bWVudCwgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLCBvcHRpb25zKSB7CisgICAgICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovCisgICAgICB2YXIgb3B0X2FyZ3MgPSBnZXREZWZhdWx0VmFsdWVzKG1ldGFkYXRhLCBtZXRhZGF0YSk7CisgICAgICByZXR1cm4gbWFrZVVuYXJ5UmVxdWVzdC5jYWxsKHRoaXMsIGFyZ3VtZW50LCBvcHRfYXJncy5tZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X2FyZ3Mub3B0aW9ucywgY2FsbGJhY2spOworICAgIH07CisgIH0sCisgIGNsaWVudF9zdHJlYW06IGZ1bmN0aW9uKG1ha2VTZXJ2ZXJTdHJlYW1SZXF1ZXN0KSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uIG1ha2VXcmFwcGVkQ2xpZW50U3RyZWFtUmVxdWVzdChjYWxsYmFjaywgbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKSB7CisgICAgICAvKiBqc2hpbnQgdmFsaWR0aGlzOiB0cnVlICovCisgICAgICB2YXIgb3B0X2FyZ3MgPSBnZXREZWZhdWx0VmFsdWVzKG1ldGFkYXRhLCBvcHRpb25zKTsKKyAgICAgIHJldHVybiBtYWtlU2VydmVyU3RyZWFtUmVxdWVzdC5jYWxsKHRoaXMsIG9wdF9hcmdzLm1ldGFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X2FyZ3Mub3B0aW9ucywgY2FsbGJhY2spOworICAgIH07CisgIH0sCisgIHNlcnZlcl9zdHJlYW06IF8uaWRlbnRpdHksCisgIGJpZGk6IF8uaWRlbnRpdHkKK307CisKIC8qKgogICogQ3JlYXRlcyBhIGNvbnN0cnVjdG9yIGZvciBhIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBtZXRob2RzLiBUaGUgbWV0aG9kcyBvYmplY3QKICAqIG1hcHMgbWV0aG9kIG5hbWUgdG8gYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzOgpAQCAtNjU0LDkgKzY5NSwxOSBAQAogICogcmVzcG9uc2VEZXNlcmlhbGl6ZTogZnVuY3Rpb24gdG8gZGVzZXJpYWxpemUgcmVzcG9uc2Ugb2JqZWN0cwogICogQHBhcmFtIHtPYmplY3R9IG1ldGhvZHMgQW4gb2JqZWN0IG1hcHBpbmcgbWV0aG9kIG5hbWVzIHRvIG1ldGhvZCBhdHRyaWJ1dGVzCiAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZU5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBzZXJ2aWNlCisgKiBAcGFyYW0ge09iamVjdH0gY2xhc3Nfb3B0aW9ucyBBbiBvcHRpb25zIG9iamVjdC4gQ3VycmVudGx5IG9ubHkgdXNlcyB0aGUga2V5CisgKiAgICAgZGVwcmVjYXRlZEFyZ3VtZW50T3JkZXIsIGEgYm9vbGVhbiB0aGF0IEluZGljYXRlcyB0aGF0IHRoZSBvbGQgYXJndW1lbnQKKyAqICAgICBvcmRlciBzaG91bGQgYmUgdXNlZCBmb3IgbWV0aG9kcywgd2l0aCBvcHRpb25hbCBhcmd1bWVudHMgYXQgdGhlIGVuZAorICogICAgIGluc3RlYWQgb2YgdGhlIGNhbGxiYWNrIGF0IHRoZSBlbmQuIERlZmF1bHRzIHRvIGZhbHNlLiBUaGlzIG9wdGlvbiBpcworICogICAgIG9ubHkgYSB0ZW1wb3Jhcnkgc3RvcGdhcCBtZWFzdXJlIHRvIHNtb290aCBhbiBBUEkgYnJlYWthZ2UuCisgKiAgICAgSXQgaXMgZGVwcmVjYXRlZCwgYW5kIG5ldyBjb2RlIHNob3VsZCBub3QgdXNlIGl0LgogICogQHJldHVybiB7ZnVuY3Rpb24oc3RyaW5nLCBPYmplY3QpfSBOZXcgY2xpZW50IGNvbnN0cnVjdG9yCiAgKi8KLWV4cG9ydHMubWFrZUNsaWVudENvbnN0cnVjdG9yID0gZnVuY3Rpb24obWV0aG9kcywgc2VydmljZU5hbWUpIHsKK2V4cG9ydHMubWFrZUNsaWVudENvbnN0cnVjdG9yID0gZnVuY3Rpb24obWV0aG9kcywgc2VydmljZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX29wdGlvbnMpIHsKKyAgaWYgKCFjbGFzc19vcHRpb25zKSB7CisgICAgY2xhc3Nfb3B0aW9ucyA9IHt9OworICB9CiAgIC8qKgogICAgKiBDcmVhdGUgYSBjbGllbnQgd2l0aCB0aGUgZ2l2ZW4gbWV0aG9kcwogICAgKiBAY29uc3RydWN0b3IKQEAgLTcwMyw4ICs3NTQsMTMgQEAKICAgICB9CiAgICAgdmFyIHNlcmlhbGl6ZSA9IGF0dHJzLnJlcXVlc3RTZXJpYWxpemU7CiAgICAgdmFyIGRlc2VyaWFsaXplID0gYXR0cnMucmVzcG9uc2VEZXNlcmlhbGl6ZTsKLSAgICBDbGllbnQucHJvdG90eXBlW25hbWVdID0gcmVxdWVzdGVyX21ha2Vyc1ttZXRob2RfdHlwZV0oCisgICAgdmFyIG1ldGhvZF9mdW5jID0gcmVxdWVzdGVyX21ha2Vyc1ttZXRob2RfdHlwZV0oCiAgICAgICAgIGF0dHJzLnBhdGgsIHNlcmlhbGl6ZSwgZGVzZXJpYWxpemUpOworICAgIGlmIChjbGFzc19vcHRpb25zLmRlcHJlY2F0ZWRBcmd1bWVudE9yZGVyKSB7CisgICAgICBDbGllbnQucHJvdG90eXBlW25hbWVdID0gZGVwcmVjYXRlZF9yZXF1ZXN0X3dyYXAobWV0aG9kX2Z1bmMpOworICAgIH0gZWxzZSB7CisgICAgICBDbGllbnQucHJvdG90eXBlW25hbWVdID0gbWV0aG9kX2Z1bmM7CisgICAgfQogICAgIC8vIEFzc29jaWF0ZSBhbGwgcHJvdmlkZWQgYXR0cmlidXRlcyB3aXRoIHRoZSBtZXRob2QKICAgICBfLmFzc2lnbihDbGllbnQucHJvdG90eXBlW25hbWVdLCBhdHRycyk7CiAgIH0pOwpAQCAtNzYxLDggKzgxNywxMyBAQAogZXhwb3J0cy5tYWtlUHJvdG9idWZDbGllbnRDb25zdHJ1Y3RvciA9ICBmdW5jdGlvbihzZXJ2aWNlLCBvcHRpb25zKSB7CiAgIHZhciBtZXRob2RfYXR0cnMgPSBjb21tb24uZ2V0UHJvdG9idWZTZXJ2aWNlQXR0cnMoc2VydmljZSwgc2VydmljZS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMpOworICB2YXIgZGVwcmVjYXRlZEFyZ3VtZW50T3JkZXIgPSBmYWxzZTsKKyAgaWYgKG9wdGlvbnMpIHsKKyAgICBkZXByZWNhdGVkQXJndW1lbnRPcmRlciA9IG9wdGlvbnMuZGVwcmVjYXRlZEFyZ3VtZW50T3JkZXI7CisgIH0KICAgdmFyIENsaWVudCA9IGV4cG9ydHMubWFrZUNsaWVudENvbnN0cnVjdG9yKAotICAgICAgbWV0aG9kX2F0dHJzLCBjb21tb24uZnVsbHlRdWFsaWZpZWROYW1lKHNlcnZpY2UpKTsKKyAgICAgIG1ldGhvZF9hdHRycywgY29tbW9uLmZ1bGx5UXVhbGlmaWVkTmFtZShzZXJ2aWNlKSwKKyAgICAgIGRlcHJlY2F0ZWRBcmd1bWVudE9yZGVyKTsKICAgQ2xpZW50LnNlcnZpY2UgPSBzZXJ2aWNlOwogICBDbGllbnQuc2VydmljZS5ncnBjX29wdGlvbnMgPSBvcHRpb25zOwogICByZXR1cm4gQ2xpZW50OwpkaWZmIC0tZ2l0IGEvc3JjL25vZGUvdGVzdC9jcmVkZW50aWFsc190ZXN0LmpzIGIvc3JjL25vZGUvdGVzdC9jcmVkZW50aWFsc190ZXN0LmpzCmluZGV4IDI5NDYwMGMuLjczZWFkZmEgMTAwNjQ0Ci0tLSBhL3NyYy9ub2RlL3Rlc3QvY3JlZGVudGlhbHNfdGVzdC5qcworKysgYi9zcmMvbm9kZS90ZXN0L2NyZWRlbnRpYWxzX3Rlc3QuanMKQEAgLTEsNiArMSw2IEBACiAvKgogICoKLSAqIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zOTgsMTggKzM5OCwyMCBAQAogICAgICAgICAgIG1ldGFkYXRhVXBkYXRlcik7CiAgICAgfSk7CiAgICAgaXQoJ1Nob3VsZCB1cGRhdGUgbWV0YWRhdGEgb24gYSB1bmFyeSBjYWxsJywgZnVuY3Rpb24oZG9uZSkgewotICAgICAgdmFyIGNhbGwgPSBjbGllbnQudW5hcnkoe30sIGZ1bmN0aW9uKGVyciwgZGF0YSkgewotICAgICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOwotICAgICAgfSwgbnVsbCwge2NyZWRlbnRpYWxzOiB1cGRhdGVyX2NyZWRzfSk7CisgICAgICB2YXIgY2FsbCA9IGNsaWVudC51bmFyeSh7fSwge2NyZWRlbnRpYWxzOiB1cGRhdGVyX2NyZWRzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVyciwgZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICBjYWxsLm9uKCdtZXRhZGF0YScsIGZ1bmN0aW9uKG1ldGFkYXRhKSB7CiAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwobWV0YWRhdGEuZ2V0KCdwbHVnaW5fa2V5JyksIFsncGx1Z2luX3ZhbHVlJ10pOwogICAgICAgICBkb25lKCk7CiAgICAgICB9KTsKICAgICB9KTsKICAgICBpdCgnc2hvdWxkIHVwZGF0ZSBtZXRhZGF0YSBvbiBhIGNsaWVudCBzdHJlYW1pbmcgY2FsbCcsIGZ1bmN0aW9uKGRvbmUpIHsKLSAgICAgIHZhciBjYWxsID0gY2xpZW50LmNsaWVudFN0cmVhbShmdW5jdGlvbihlcnIsIGRhdGEpIHsKLSAgICAgICAgYXNzZXJ0LmlmRXJyb3IoZXJyKTsKLSAgICAgIH0sIG51bGwsIHtjcmVkZW50aWFsczogdXBkYXRlcl9jcmVkc30pOworICAgICAgdmFyIGNhbGwgPSBjbGllbnQuY2xpZW50U3RyZWFtKHtjcmVkZW50aWFsczogdXBkYXRlcl9jcmVkc30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyLCBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgY2FsbC5vbignbWV0YWRhdGEnLCBmdW5jdGlvbihtZXRhZGF0YSkgewogICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1ldGFkYXRhLmdldCgncGx1Z2luX2tleScpLCBbJ3BsdWdpbl92YWx1ZSddKTsKICAgICAgICAgZG9uZSgpOwpAQCAtNDE3LDcgKzQxOSw3IEBACiAgICAgICBjYWxsLmVuZCgpOwogICAgIH0pOwogICAgIGl0KCdzaG91bGQgdXBkYXRlIG1ldGFkYXRhIG9uIGEgc2VydmVyIHN0cmVhbWluZyBjYWxsJywgZnVuY3Rpb24oZG9uZSkgewotICAgICAgdmFyIGNhbGwgPSBjbGllbnQuc2VydmVyU3RyZWFtKHt9LCBudWxsLCB7Y3JlZGVudGlhbHM6IHVwZGF0ZXJfY3JlZHN9KTsKKyAgICAgIHZhciBjYWxsID0gY2xpZW50LnNlcnZlclN0cmVhbSh7fSwge2NyZWRlbnRpYWxzOiB1cGRhdGVyX2NyZWRzfSk7CiAgICAgICBjYWxsLm9uKCdkYXRhJywgZnVuY3Rpb24oKSB7fSk7CiAgICAgICBjYWxsLm9uKCdtZXRhZGF0YScsIGZ1bmN0aW9uKG1ldGFkYXRhKSB7CiAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwobWV0YWRhdGEuZ2V0KCdwbHVnaW5fa2V5JyksIFsncGx1Z2luX3ZhbHVlJ10pOwpAQCAtNDI1LDcgKzQyNyw3IEBACiAgICAgICB9KTsKICAgICB9KTsKICAgICBpdCgnc2hvdWxkIHVwZGF0ZSBtZXRhZGF0YSBvbiBhIGJpZGkgc3RyZWFtaW5nIGNhbGwnLCBmdW5jdGlvbihkb25lKSB7Ci0gICAgICB2YXIgY2FsbCA9IGNsaWVudC5iaWRpU3RyZWFtKG51bGwsIHtjcmVkZW50aWFsczogdXBkYXRlcl9jcmVkc30pOworICAgICAgdmFyIGNhbGwgPSBjbGllbnQuYmlkaVN0cmVhbSh7Y3JlZGVudGlhbHM6IHVwZGF0ZXJfY3JlZHN9KTsKICAgICAgIGNhbGwub24oJ2RhdGEnLCBmdW5jdGlvbigpIHt9KTsKICAgICAgIGNhbGwub24oJ21ldGFkYXRhJywgZnVuY3Rpb24obWV0YWRhdGEpIHsKICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtZXRhZGF0YS5nZXQoJ3BsdWdpbl9rZXknKSwgWydwbHVnaW5fdmFsdWUnXSk7CkBAIC00NDMsOSArNDQ1LDEwIEBACiAgICAgICAgICAgYWx0TWV0YWRhdGFVcGRhdGVyKTsKICAgICAgIHZhciBjb21iaW5lZF91cGRhdGVyID0gZ3JwYy5jcmVkZW50aWFscy5jb21iaW5lQ2FsbENyZWRlbnRpYWxzKAogICAgICAgICAgIHVwZGF0ZXJfY3JlZHMsIGFsdF91cGRhdGVyX2NyZWRzKTsKLSAgICAgIHZhciBjYWxsID0gY2xpZW50LnVuYXJ5KHt9LCBmdW5jdGlvbihlcnIsIGRhdGEpIHsKLSAgICAgICAgYXNzZXJ0LmlmRXJyb3IoZXJyKTsKLSAgICAgIH0sIG51bGwsIHtjcmVkZW50aWFsczogY29tYmluZWRfdXBkYXRlcn0pOworICAgICAgdmFyIGNhbGwgPSBjbGllbnQudW5hcnkoe30sIHtjcmVkZW50aWFsczogY29tYmluZWRfdXBkYXRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnIsIGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmlmRXJyb3IoZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgY2FsbC5vbignbWV0YWRhdGEnLCBmdW5jdGlvbihtZXRhZGF0YSkgewogICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1ldGFkYXRhLmdldCgncGx1Z2luX2tleScpLCBbJ3BsdWdpbl92YWx1ZSddKTsKICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtZXRhZGF0YS5nZXQoJ290aGVyX3BsdWdpbl9rZXknKSwKZGlmZiAtLWdpdCBhL3NyYy9ub2RlL3Rlc3Qvc3VyZmFjZV90ZXN0LmpzIGIvc3JjL25vZGUvdGVzdC9zdXJmYWNlX3Rlc3QuanMKaW5kZXggZWRiZmMwYS4uNWE3MDRlZSAxMDA2NDQKLS0tIGEvc3JjL25vZGUvdGVzdC9zdXJmYWNlX3Rlc3QuanMKKysrIGIvc3JjL25vZGUvdGVzdC9zdXJmYWNlX3Rlc3QuanMKQEAgLTQwNCwxOCArNDA0LDE4IEBACiAgICAgc2VydmVyLmZvcmNlU2h1dGRvd24oKTsKICAgfSk7CiAgIGl0KCd3aXRoIHVuYXJ5IGNhbGwnLCBmdW5jdGlvbihkb25lKSB7Ci0gICAgdmFyIGNhbGwgPSBjbGllbnQudW5hcnkoe30sIGZ1bmN0aW9uKGVyciwgZGF0YSkgeworICAgIHZhciBjYWxsID0gY2xpZW50LnVuYXJ5KHt9LCBtZXRhZGF0YSwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7CiAgICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOwotICAgIH0sIG1ldGFkYXRhKTsKKyAgICB9KTsKICAgICBjYWxsLm9uKCdtZXRhZGF0YScsIGZ1bmN0aW9uKG1ldGFkYXRhKSB7CiAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1ldGFkYXRhLmdldCgna2V5JyksIFsndmFsdWUnXSk7CiAgICAgICBkb25lKCk7CiAgICAgfSk7CiAgIH0pOwogICBpdCgnd2l0aCBjbGllbnQgc3RyZWFtIGNhbGwnLCBmdW5jdGlvbihkb25lKSB7Ci0gICAgdmFyIGNhbGwgPSBjbGllbnQuY2xpZW50U3RyZWFtKGZ1bmN0aW9uKGVyciwgZGF0YSkgeworICAgIHZhciBjYWxsID0gY2xpZW50LmNsaWVudFN0cmVhbShtZXRhZGF0YSwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7CiAgICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOwotICAgIH0sIG1ldGFkYXRhKTsKKyAgICB9KTsKICAgICBjYWxsLm9uKCdtZXRhZGF0YScsIGZ1bmN0aW9uKG1ldGFkYXRhKSB7CiAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1ldGFkYXRhLmdldCgna2V5JyksIFsndmFsdWUnXSk7CiAgICAgICBkb25lKCk7CkBAIC00NDEsOCArNDQxLDggQEAKICAgfSk7CiAgIGl0KCdzaG93cyB0aGUgY29ycmVjdCB1c2VyLWFnZW50IHN0cmluZycsIGZ1bmN0aW9uKGRvbmUpIHsKICAgICB2YXIgdmVyc2lvbiA9IHJlcXVpcmUoJy4uLy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247Ci0gICAgdmFyIGNhbGwgPSBjbGllbnQudW5hcnkoe30sIGZ1bmN0aW9uKGVyciwgZGF0YSkgeyBhc3NlcnQuaWZFcnJvcihlcnIpOyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhKTsKKyAgICB2YXIgY2FsbCA9IGNsaWVudC51bmFyeSh7fSwgbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyLCBkYXRhKSB7IGFzc2VydC5pZkVycm9yKGVycik7IH0pOwogICAgIGNhbGwub24oJ21ldGFkYXRhJywgZnVuY3Rpb24obWV0YWRhdGEpIHsKICAgICAgIGFzc2VydChfLnN0YXJ0c1dpdGgobWV0YWRhdGEuZ2V0KCd1c2VyLWFnZW50JylbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdncnBjLW5vZGUvJyArIHZlcnNpb24pKTsKQEAgLTQ1Miw4ICs0NTIsOCBAQAogICBpdCgncHJvcGVybHkgaGFuZGxlcyBkdXBsaWNhdGUgdmFsdWVzJywgZnVuY3Rpb24oZG9uZSkgewogICAgIHZhciBkdXBfbWV0YWRhdGEgPSBtZXRhZGF0YS5jbG9uZSgpOwogICAgIGR1cF9tZXRhZGF0YS5hZGQoJ2tleScsICd2YWx1ZTInKTsKLSAgICB2YXIgY2FsbCA9IGNsaWVudC51bmFyeSh7fSwgZnVuY3Rpb24oZXJyLCBkYXRhKSB7YXNzZXJ0LmlmRXJyb3IoZXJyKTsgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBfbWV0YWRhdGEpOworICAgIHZhciBjYWxsID0gY2xpZW50LnVuYXJ5KHt9LCBkdXBfbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyLCBkYXRhKSB7YXNzZXJ0LmlmRXJyb3IoZXJyKTsgfSk7CiAgICAgY2FsbC5vbignbWV0YWRhdGEnLCBmdW5jdGlvbihyZXNwX21ldGFkYXRhKSB7CiAgICAgICAvLyBUd28gYXJyYXlzIGFyZSBlcXVhbCBpZmYgdGhlaXIgc3ltbWV0cmljIGRpZmZlcmVuY2UgaXMgZW1wdHkKICAgICAgIGFzc2VydC5kZWVwRXF1YWwoXy54b3IoZHVwX21ldGFkYXRhLmdldCgna2V5JyksIHJlc3BfbWV0YWRhdGEuZ2V0KCdrZXknKSksCkBAIC05NTQsNyArOTU0LDcgQEAKICAgICAgIGRvbmUgPSBtdWx0aURvbmUoZG9uZSwgMik7CiAgICAgICB2YXIgY2FsbDsKICAgICAgIHByb3h5X2ltcGwudW5hcnkgPSBmdW5jdGlvbihwYXJlbnQsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGNsaWVudC51bmFyeShwYXJlbnQucmVxdWVzdCwgZnVuY3Rpb24oZXJyLCB2YWx1ZSkgeworICAgICAgICBjbGllbnQudW5hcnkocGFyZW50LnJlcXVlc3QsIHtwYXJlbnQ6IHBhcmVudH0sIGZ1bmN0aW9uKGVyciwgdmFsdWUpIHsKICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgYXNzZXJ0KGVycik7CiAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXJyLmNvZGUsIGdycGMuc3RhdHVzLkNBTkNFTExFRCk7CkBAIC05NjIsNyArOTYyLDcgQEAKICAgICAgICAgICAgIGNhbGxiYWNrKGVyciwgdmFsdWUpOwogICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgIH0KLSAgICAgICAgfSwgbnVsbCwge3BhcmVudDogcGFyZW50fSk7CisgICAgICAgIH0pOwogICAgICAgICBjYWxsLmNhbmNlbCgpOwogICAgICAgfTsKICAgICAgIHByb3h5LmFkZFByb3RvU2VydmljZSh0ZXN0X3NlcnZpY2UsIHByb3h5X2ltcGwpOwpAQCAtOTc2LDcgKzk3Niw3IEBACiAgICAgICBkb25lID0gbXVsdGlEb25lKGRvbmUsIDIpOwogICAgICAgdmFyIGNhbGw7CiAgICAgICBwcm94eV9pbXBsLmNsaWVudFN0cmVhbSA9IGZ1bmN0aW9uKHBhcmVudCwgY2FsbGJhY2spIHsKLSAgICAgICAgY2xpZW50LmNsaWVudFN0cmVhbShmdW5jdGlvbihlcnIsIHZhbHVlKSB7CisgICAgICAgIGNsaWVudC5jbGllbnRTdHJlYW0oe3BhcmVudDogcGFyZW50fSwgZnVuY3Rpb24oZXJyLCB2YWx1ZSkgewogICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBhc3NlcnQoZXJyKTsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChlcnIuY29kZSwgZ3JwYy5zdGF0dXMuQ0FOQ0VMTEVEKTsKQEAgLTk4NCw3ICs5ODQsNyBAQAogICAgICAgICAgICAgY2FsbGJhY2soZXJyLCB2YWx1ZSk7CiAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgfQotICAgICAgICB9LCBudWxsLCB7cGFyZW50OiBwYXJlbnR9KTsKKyAgICAgICAgfSk7CiAgICAgICAgIGNhbGwuY2FuY2VsKCk7CiAgICAgICB9OwogICAgICAgcHJveHkuYWRkUHJvdG9TZXJ2aWNlKHRlc3Rfc2VydmljZSwgcHJveHlfaW1wbCk7CkBAIC05OTgsOCArOTk4LDcgQEAKICAgICAgIGRvbmUgPSBtdWx0aURvbmUoZG9uZSwgMik7CiAgICAgICB2YXIgY2FsbDsKICAgICAgIHByb3h5X2ltcGwuc2VydmVyU3RyZWFtID0gZnVuY3Rpb24ocGFyZW50KSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IGNsaWVudC5zZXJ2ZXJTdHJlYW0ocGFyZW50LnJlcXVlc3QsIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcmVudDogcGFyZW50fSk7CisgICAgICAgIHZhciBjaGlsZCA9IGNsaWVudC5zZXJ2ZXJTdHJlYW0ocGFyZW50LnJlcXVlc3QsIHtwYXJlbnQ6IHBhcmVudH0pOwogICAgICAgICBjaGlsZC5vbignZGF0YScsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICBjaGlsZC5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICBhc3NlcnQoZXJyKTsKQEAgLTEwMjMsNyArMTAyMiw3IEBACiAgICAgICBkb25lID0gbXVsdGlEb25lKGRvbmUsIDIpOwogICAgICAgdmFyIGNhbGw7CiAgICAgICBwcm94eV9pbXBsLmJpZGlTdHJlYW0gPSBmdW5jdGlvbihwYXJlbnQpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gY2xpZW50LmJpZGlTdHJlYW0obnVsbCwge3BhcmVudDogcGFyZW50fSk7CisgICAgICAgIHZhciBjaGlsZCA9IGNsaWVudC5iaWRpU3RyZWFtKHtwYXJlbnQ6IHBhcmVudH0pOwogICAgICAgICBjaGlsZC5vbignZGF0YScsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICBjaGlsZC5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICBhc3NlcnQoZXJyKTsKQEAgLTEwNTEsNyArMTA1MCw4IEBACiAgICAgaXQoJ1dpdGggYSBjbGllbnQgc3RyZWFtIGNhbGwnLCBmdW5jdGlvbihkb25lKSB7CiAgICAgICBkb25lID0gbXVsdGlEb25lKGRvbmUsIDIpOwogICAgICAgcHJveHlfaW1wbC5jbGllbnRTdHJlYW0gPSBmdW5jdGlvbihwYXJlbnQsIGNhbGxiYWNrKSB7Ci0gICAgICAgIGNsaWVudC5jbGllbnRTdHJlYW0oZnVuY3Rpb24oZXJyLCB2YWx1ZSkgeworICAgICAgICB2YXIgb3B0aW9ucyA9IHtwYXJlbnQ6IHBhcmVudCwgcHJvcGFnYXRlX2ZsYWdzOiBkZWFkbGluZV9mbGFnc307CisgICAgICAgIGNsaWVudC5jbGllbnRTdHJlYW0ob3B0aW9ucywgZnVuY3Rpb24oZXJyLCB2YWx1ZSkgewogICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBhc3NlcnQoZXJyKTsKICAgICAgICAgICAgIGFzc2VydChlcnIuY29kZSA9PT0gZ3JwYy5zdGF0dXMuREVBRExJTkVfRVhDRUVERUQgfHwKQEAgLTEwNjAsNyArMTA2MCw3IEBACiAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIHZhbHVlKTsKICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICB9Ci0gICAgICAgIH0sIG51bGwsIHtwYXJlbnQ6IHBhcmVudCwgcHJvcGFnYXRlX2ZsYWdzOiBkZWFkbGluZV9mbGFnc30pOworICAgICAgICB9KTsKICAgICAgIH07CiAgICAgICBwcm94eS5hZGRQcm90b1NlcnZpY2UodGVzdF9zZXJ2aWNlLCBwcm94eV9pbXBsKTsKICAgICAgIHZhciBwcm94eV9wb3J0ID0gcHJveHkuYmluZCgnbG9jYWxob3N0OjAnLCBzZXJ2ZXJfaW5zZWN1cmVfY3JlZHMpOwpAQCAtMTA2OSwxNSArMTA2OSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpKTsKICAgICAgIHZhciBkZWFkbGluZSA9IG5ldyBEYXRlKCk7CiAgICAgICBkZWFkbGluZS5zZXRTZWNvbmRzKGRlYWRsaW5lLmdldFNlY29uZHMoKSArIDEpOwotICAgICAgcHJveHlfY2xpZW50LmNsaWVudFN0cmVhbShmdW5jdGlvbihlcnIsIHZhbHVlKSB7CisgICAgICBwcm94eV9jbGllbnQuY2xpZW50U3RyZWFtKHtkZWFkbGluZTogZGVhZGxpbmV9LCBmdW5jdGlvbihlcnIsIHZhbHVlKSB7CiAgICAgICAgIGRvbmUoKTsKLSAgICAgIH0sIG51bGwsIHtkZWFkbGluZTogZGVhZGxpbmV9KTsKKyAgICAgIH0pOwogICAgIH0pOwogICAgIGl0KCdXaXRoIGEgYmlkaSBzdHJlYW0gY2FsbCcsIGZ1bmN0aW9uKGRvbmUpIHsKICAgICAgIGRvbmUgPSBtdWx0aURvbmUoZG9uZSwgMik7CiAgICAgICBwcm94eV9pbXBsLmJpZGlTdHJlYW0gPSBmdW5jdGlvbihwYXJlbnQpIHsKICAgICAgICAgdmFyIGNoaWxkID0gY2xpZW50LmJpZGlTdHJlYW0oCi0gICAgICAgICAgICBudWxsLCB7cGFyZW50OiBwYXJlbnQsIHByb3BhZ2F0ZV9mbGFnczogZGVhZGxpbmVfZmxhZ3N9KTsKKyAgICAgICAgICAgIHtwYXJlbnQ6IHBhcmVudCwgcHJvcGFnYXRlX2ZsYWdzOiBkZWFkbGluZV9mbGFnc30pOwogICAgICAgICBjaGlsZC5vbignZGF0YScsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICBjaGlsZC5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICBhc3NlcnQoZXJyKTsKQEAgLTEwOTMsNyArMTA5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCkpOwogICAgICAgdmFyIGRlYWRsaW5lID0gbmV3IERhdGUoKTsKICAgICAgIGRlYWRsaW5lLnNldFNlY29uZHMoZGVhZGxpbmUuZ2V0U2Vjb25kcygpICsgMSk7Ci0gICAgICB2YXIgY2FsbCA9IHByb3h5X2NsaWVudC5iaWRpU3RyZWFtKG51bGwsIHtkZWFkbGluZTogZGVhZGxpbmV9KTsKKyAgICAgIHZhciBjYWxsID0gcHJveHlfY2xpZW50LmJpZGlTdHJlYW0oe2RlYWRsaW5lOiBkZWFkbGluZX0pOwogICAgICAgY2FsbC5vbignZGF0YScsIGZ1bmN0aW9uKCkge30pOwogICAgICAgY2FsbC5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgZG9uZSgpOwpkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL0dSUENDbGllbnQvcHJpdmF0ZS9HUlBDUmVhY2hhYmlsaXR5RmxhZ05hbWVzLnhtYWNyby5oIGIvc3JjL29iamVjdGl2ZS1jL0dSUENDbGllbnQvcHJpdmF0ZS9HUlBDUmVhY2hhYmlsaXR5RmxhZ05hbWVzLnhtYWNyby5oCmluZGV4IDAyODcxZDUuLjRiOTI1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9HUlBDQ2xpZW50L3ByaXZhdGUvR1JQQ1JlYWNoYWJpbGl0eUZsYWdOYW1lcy54bWFjcm8uaAorKysgYi9zcmMvb2JqZWN0aXZlLWMvR1JQQ0NsaWVudC9wcml2YXRlL0dSUENSZWFjaGFiaWxpdHlGbGFnTmFtZXMueG1hY3JvLmgKQEAgLTU0LDcgKzU0LDkgQEAKICAgICAgICBHUlBDX1hNQUNST19JVEVNLgogI2VuZGlmCiAKKyNpZiBUQVJHRVRfT1NfSVBIT05FCiBHUlBDX1hNQUNST19JVEVNKGlzQ2VsbCwgSXNXV0FOKQorI2VuZGlmCiBHUlBDX1hNQUNST19JVEVNKHJlYWNoYWJsZSwgUmVhY2hhYmxlKQogR1JQQ19YTUFDUk9fSVRFTSh0cmFuc2llbnRDb25uZWN0aW9uLCBUcmFuc2llbnRDb25uZWN0aW9uKQogR1JQQ19YTUFDUk9fSVRFTShjb25uZWN0aW9uUmVxdWlyZWQsIENvbm5lY3Rpb25SZXF1aXJlZCkKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2dycGNfY29yZV9kZXBlbmRlbmNpZXMucHkgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjX2NvcmVfZGVwZW5kZW5jaWVzLnB5CmluZGV4IGE1YmMxOGEuLjNjNTdhZDcgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGNfY29yZV9kZXBlbmRlbmNpZXMucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwY19jb3JlX2RlcGVuZGVuY2llcy5weQpAQCAtNzQsOSArNzQsNDAgQEAKICAgJ3NyYy9jb3JlL2xpYi9zdXBwb3J0L3RtcGZpbGVfcG9zaXguYycsCiAgICdzcmMvY29yZS9saWIvc3VwcG9ydC90bXBmaWxlX3dpbjMyLmMnLAogICAnc3JjL2NvcmUvbGliL3N1cHBvcnQvd3JhcF9tZW1jcHkuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbGlzdHMuYycsCisgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMnLAorICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5jJywKKyAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMnLAorICAnc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMnLAogICAnc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2NvbnRleHQuYycsCiAgICdzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmMnLAogICAnc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jJywKKyAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jJywKKyAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jJywKKyAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMnLAorICAnc3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYycsCisgICdzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYycsCiAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYycsCiAgICdzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMnLAogICAnc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMnLApAQCAtMTEwLDYgKzE0MSw3IEBACiAgICdzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuYycsCiAgICdzcmMvY29yZS9saWIvaHR0cC9mb3JtYXRfcmVxdWVzdC5jJywKICAgJ3NyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGkuYycsCisgICdzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jJywKICAgJ3NyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jJywKICAgJ3NyYy9jb3JlL2xpYi9pb21nci9jbG9zdXJlLmMnLAogICAnc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmMnLApAQCAtMTU4LDU3ICsxOTAsNiBAQAogICAnc3JjL2NvcmUvbGliL2pzb24vanNvbl9zdHJpbmcuYycsCiAgICdzcmMvY29yZS9saWIvanNvbi9qc29uX3dyaXRlci5jJywKICAgJ3NyYy9jb3JlL2xpYi9wcm90by9ncnBjL2xiL3YwL2xvYWRfYmFsYW5jZXIucGIuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9hbGFybS5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXJfcmVhZGVyLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfZGV0YWlscy5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGxfbG9nX2JhdGNoLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jcmVhdGUuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3N0YWNrX3R5cGUuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvbWV0YWRhdGFfYXJyYXkuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXJfY2h0dHAyLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYycsCi0gICdzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfd2luZG93X3VwZGF0ZS5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3dyaXRpbmcuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMnLAotICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYycsCi0gICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jJywKLSAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jJywKLSAgJ3NyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMnLAogICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L2I2NC5jJywKICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9jbGllbnRfYXV0aF9maWx0ZXIuYycsCiAgICdzcmMvY29yZS9saWIvc2VjdXJpdHkvY3JlZGVudGlhbHMuYycsCkBAIC0yMjMsMTggKzIwNCwzNyBAQAogICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5jJywKICAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMnLAogICAnc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jJywKLSAgJ3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jJywKKyAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXIuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9kZXRhaWxzLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3N0YWNrX3R5cGUuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jJywKICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfc2VjdXJlLmMnLAotICAnc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYycsCisgICdzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jJywKKyAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jJywKKyAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMnLAorICAnc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jJywKKyAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYycsCisgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jJywKKyAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYycsCisgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMnLAorICAnc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYycsCisgICdzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jJywKKyAgJ3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jJywKICAgJ3NyYy9jb3JlL2xpYi90c2kvZmFrZV90cmFuc3BvcnRfc2VjdXJpdHkuYycsCiAgICdzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuYycsCiAgICdzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jJywKLSAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvY29udGV4dC5jJywKLSAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jJywKLSAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jJywKLSAgJ3NyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMnLAotICAnc3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYycsCi0gICdzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYycsCiAgICd0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmMnLAogICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jJywKICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYycsCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvTWFrZWZpbGUudGVtcGxhdGUgYi90ZW1wbGF0ZXMvTWFrZWZpbGUudGVtcGxhdGUKaW5kZXggYzU0YzE0Ni4uNTdmYzE0NiAxMDA2NDQKLS0tIGEvdGVtcGxhdGVzL01ha2VmaWxlLnRlbXBsYXRlCisrKyBiL3RlbXBsYXRlcy9NYWtlZmlsZS50ZW1wbGF0ZQpAQCAtMTczNyw3ICsxNzM3LDcgQEAKICAgICQoTElCRElSKS8kKENPTkZJRykvbGliJHtkZXB9LmFcCiAgICUgZW5kZm9yCiAKLSAgJSBpZiB0Z3QubGFuZ3VhZ2UgPT0gImMrKyIgb3IgdGd0LmJvcmluZ3NzbDoKKyAgJSBpZiB0Z3QubGFuZ3VhZ2UgPT0gImMrKyIgb3IgdGd0LmJvcmluZ3NzbCBvciB0Z3QuYnVpbGQgPT0gJ2Z1enplcic6CiAgICMjIEMrKyB0YXJnZXRzIHNwZWNpZmljaWVzLgogICAlIGlmIHRndC5idWlsZCA9PSAncHJvdG9jJzoKICAgCSQoRSkgIltIT1NUTERdICBMaW5raW5nICRAIgpAQCAtMTc5MSw2ICsxNzkxLDkgQEAKICAgJSBlbGlmIHRndC5sYW5ndWFnZSA9PSAnYysrJyBhbmQgdGd0LmJ1aWxkID09ICdiZW5jaG1hcmsnOgogICAgJChHVEVTVF9MSUIpXAogICAlIGVuZGlmCisgICUgaWYgdGd0LmJ1aWxkID09ICdmdXp6ZXInOgorICAgLWxGdXp6ZXJcCisgICUgZW5kaWYKICAgIC1vICQoQklORElSKS8kKENPTkZJRykvJHt0Z3QubmFtZX0KICAgJSBpZiB0Z3QuYnVpbGQgPT0gJ3Byb3RvYycgb3IgdGd0Lmxhbmd1YWdlID09ICdjKysnOgogCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvcGFja2FnZS5qc29uLnRlbXBsYXRlIGIvdGVtcGxhdGVzL3BhY2thZ2UuanNvbi50ZW1wbGF0ZQppbmRleCA5OWU4Mjg3Li45MDg1NzQwIDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvcGFja2FnZS5qc29uLnRlbXBsYXRlCisrKyBiL3RlbXBsYXRlcy9wYWNrYWdlLmpzb24udGVtcGxhdGUKQEAgLTI5LDYgKzI5LDcgQEAKICAgICB9LAogICAgICJidW5kbGVkRGVwZW5kZW5jaWVzIjogWyJub2RlLXByZS1neXAiXSwKICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgImFyZ3VlanMiOiAiXjAuMi4zIiwKICAgICAgICJsb2Rhc2giOiAiXjMuOS4zIiwKICAgICAgICJuYW4iOiAiXjIuMC4wIiwKICAgICAgICJwcm90b2J1ZmpzIjogIl40LjAuMCIKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL2NsYW5nX3VwZGF0ZS5pbmNsdWRlIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvY2xhbmdfdXBkYXRlLmluY2x1ZGUKaW5kZXggODNhYjNlMC4uNGY4MjdjOCAxMDA2NDQKLS0tIGEvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvY2xhbmdfdXBkYXRlLmluY2x1ZGUKKysrIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvY2xhbmdfdXBkYXRlLmluY2x1ZGUKQEAgLTEsNSArMSw1IEBACiAjPT09PT09PT09PT09PT09PT0KLSMgVXBkYXRlIGNsYW5nIHRvIGEgdmVyc2lvbiB3aXRoIGltcHJvdmVkIHRzYW4KKyMgVXBkYXRlIGNsYW5nIHRvIGEgdmVyc2lvbiB3aXRoIGltcHJvdmVkIHRzYW4gYW5kIGZ1enppbmcgY2FwYWJpbGl0aWVzCiAKIFJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IC15IGluc3RhbGwgcHl0aG9uIGNtYWtlICYmIGFwdC1nZXQgY2xlYW4KIApAQCAtMjksNCArMjksNCBAQAogICAtRENNQUtFX0lOU1RBTExfUFJFRklYOlNUUklORz0vdXNyICR7J1xcJ30KICAgLURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ6U1RSSU5HPVg4NiAkeydcXCd9CiAgIC4uL2xsdm0KLVJVTiBtYWtlIC1DIGxsdm0tYnVpbGQgJiYgbWFrZSAtQyBsbHZtLWJ1aWxkIGluc3RhbGwgJiYgcm0gLXJmIGxsdm0tYnVpbGQKK1JVTiBtYWtlIC1DIGxsdm0tYnVpbGQgLWogMTIgJiYgbWFrZSAtQyBsbHZtLWJ1aWxkIGluc3RhbGwgJiYgcm0gLXJmIGxsdm0tYnVpbGQKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL2djcF9hcGlfbGlicmFyaWVzLmluY2x1ZGUgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9nY3BfYXBpX2xpYnJhcmllcy5pbmNsdWRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OWIwZjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9nY3BfYXBpX2xpYnJhcmllcy5pbmNsdWRlCkBAIC0wLDAgKzEsNCBAQAorIyBHb29nbGUgQ2xvdWQgcGxhdGZvcm0gQVBJIGxpYnJhcmllcworUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBweXRob24tcGlwICYmIGFwdC1nZXQgY2xlYW4KK1JVTiBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgZ29vZ2xlLWFwaS1weXRob24tY2xpZW50CisKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL2dycGNfaW50ZXJvcF9zdHJlc3NfY3h4L0RvY2tlcmZpbGUudGVtcGxhdGUgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9ncnBjX2ludGVyb3Bfc3RyZXNzX2N4eC9Eb2NrZXJmaWxlLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDQ5ZDAKLS0tIC9kZXYvbnVsbAorKysgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9ncnBjX2ludGVyb3Bfc3RyZXNzX2N4eC9Eb2NrZXJmaWxlLnRlbXBsYXRlCkBAIC0wLDAgKzEsNDAgQEAKKyVZQU1MIDEuMgorLS0tIHwKKyAgIyBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICMKKyAgIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgICMgbWV0OgorICAjCisgICMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICAjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAgIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgICMgZGlzdHJpYnV0aW9uLgorICAjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICAjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgICMKKyAgIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICAjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICAjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAgIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAgIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAgIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAgCisgIEZST00gZGViaWFuOmplc3NpZQorICAKKyAgPCVpbmNsdWRlIGZpbGU9Ii4uL2FwdF9nZXRfYmFzaWMuaW5jbHVkZSIvPgorICA8JWluY2x1ZGUgZmlsZT0iLi4vY2NhY2hlX3NldHVwLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uL2N4eF9kZXBzLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uL2djcF9hcGlfbGlicmFyaWVzLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uL2NsYW5nX3VwZGF0ZS5pbmNsdWRlIi8+CisgICMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCisgIENNRCBbImJhc2giXQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9mdXp6ZXIvRG9ja2VyZmlsZS50ZW1wbGF0ZSBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3Rlc3QvZnV6emVyL0RvY2tlcmZpbGUudGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5YmUwNQotLS0gL2Rldi9udWxsCisrKyBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3Rlc3QvZnV6emVyL0RvY2tlcmZpbGUudGVtcGxhdGUKQEAgLTAsMCArMSw0MyBAQAorJVlBTUwgMS4yCistLS0gfAorICAjIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgIworICAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAgIyBtZXQ6CisgICMKKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgICMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICAjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAgIyBkaXN0cmlidXRpb24uCisgICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgIworICAjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgICMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgICMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICAjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAgIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisgIEZST00gZGViaWFuOmplc3NpZQorCisgIDwlaW5jbHVkZSBmaWxlPSIuLi8uLi9hcHRfZ2V0X2Jhc2ljLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL2N4eF9kZXBzLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL2NsYW5nX3VwZGF0ZS5pbmNsdWRlIi8+CisgIDwlaW5jbHVkZSBmaWxlPSIuLi8uLi9ydW5fdGVzdHNfYWRkb25zLmluY2x1ZGUiLz4KKyAgUlVOIGNsYW5nKysgLWMgLWcgLU8yIC1zdGQ9YysrMTEgbGx2bS9saWIvRnV6emVyLyouY3BwIC1JRnV6emVyCisgIFJVTiBhciBydXYgbGliRnV6emVyLmEgRnV6emVyKi5vCisgIFJVTiBtdiBsaWJGdXp6ZXIuYSAvdXNyL2xpYgorICBSVU4gcm0gLWYgRnV6emVyKi5vCisgICMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCisgIENNRCBbImJhc2giXQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3Rvb2xzL2Z1enplci9ydW5uZXJzLnRlbXBsYXRlIGIvdGVtcGxhdGVzL3Rvb2xzL2Z1enplci9ydW5uZXJzLnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2JiMmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZW1wbGF0ZXMvdG9vbHMvZnV6emVyL3J1bm5lcnMudGVtcGxhdGUKQEAgLTAsMCArMSw0NCBAQAorJVlBTUwgMS4yCistLS0KK2ZvcmVhY2g6IHRhcmdldHMKK2NvbmQ6IHNlbGVjdGVkLmJ1aWxkID09ICdmdXp6ZXInCitvdXRwdXRfbmFtZTogJHtzZWxlY3RlZC5uYW1lfS5zaAordGVtcGxhdGU6IHwKKyAgIyEvYmluL2Jhc2gKKyAgIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyAgIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAjCisgICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICAjIG1ldDoKKyAgIworICAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAgIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgICMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICAjIGRpc3RyaWJ1dGlvbi4KKyAgIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAgIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICAjCisgICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICAjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgICMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAgIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAgIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgICMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgICMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgICMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgICMKKworICBmbGFncz0iLW1heF90b3RhbF90aW1lPTM2MDAgLWpvYnM9MjAgLXdvcmtlcnM9MjAiCisgIGlmIFsgIiRjb25maWciID09ICJhc2FuLXRyYWNlLWNtcCIgXQorICB0aGVuCisgICAgZmxhZ3M9Ii11c2VfdHJhY2VzPTEgJGZsYWdzIgorICBmaQorCisgIGJpbnMvJGNvbmZpZy8ke3NlbGVjdGVkLm5hbWV9ICRmbGFncyBmdXp6ZXJfb3V0cHV0ICR7JyAnLmpvaW4oc2VsZWN0ZWQuY29ycHVzX2RpcnMpfQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3ZzcHJvamVjdHMvYnVpbGR0ZXN0c19jLnNsbi50ZW1wbGF0ZSBiL3RlbXBsYXRlcy92c3Byb2plY3RzL2J1aWxkdGVzdHNfYy5zbG4udGVtcGxhdGUKaW5kZXggYTk4NWZlYS4uMjEzMTJhYiAxMDA2NDQKLS0tIGEvdGVtcGxhdGVzL3ZzcHJvamVjdHMvYnVpbGR0ZXN0c19jLnNsbi50ZW1wbGF0ZQorKysgYi90ZW1wbGF0ZXMvdnNwcm9qZWN0cy9idWlsZHRlc3RzX2Muc2xuLnRlbXBsYXRlCkBAIC0yLDYgKzIsNiBAQAogLS0tIHwKICAgPCVuYW1lc3BhY2UgZmlsZT0ic2xuX2RlZnMuaW5jbHVkZSIgaW1wb3J0PSJnZW5fc29sdXRpb24iLz5cCiAgIDwlCi0gIHNvbHV0aW9uX3Byb2plY3RzID0gW3AgZm9yIHAgaW4gdnNwcm9qZWN0cyBpZiBwLmJ1aWxkICE9ICdwcm90b2MnIGFuZCBwLmxhbmd1YWdlID09ICdjJyBhbmQgbm90IHAuYm9yaW5nc3NsIGFuZCBub3QgcC56bGliXQorICBzb2x1dGlvbl9wcm9qZWN0cyA9IFtwIGZvciBwIGluIHZzcHJvamVjdHMgaWYgcC5idWlsZCBub3QgaW4gWydwcm90b2MnLCAnZnV6emVyJ10gYW5kIHAubGFuZ3VhZ2UgPT0gJ2MnIGFuZCBub3QgcC5ib3Jpbmdzc2wgYW5kIG5vdCBwLnpsaWJdCiAgICU+XAogICAke2dlbl9zb2x1dGlvbihzb2x1dGlvbl9wcm9qZWN0cywgdXNlX2RsbHM9J3llcycpfQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3ZzcHJvamVjdHMvZ3JwYy5zbG4udGVtcGxhdGUgYi90ZW1wbGF0ZXMvdnNwcm9qZWN0cy9ncnBjLnNsbi50ZW1wbGF0ZQppbmRleCBkYmJiMmMyLi5kZWQ5ODM4IDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvdnNwcm9qZWN0cy9ncnBjLnNsbi50ZW1wbGF0ZQorKysgYi90ZW1wbGF0ZXMvdnNwcm9qZWN0cy9ncnBjLnNsbi50ZW1wbGF0ZQpAQCAtMiw2ICsyLDYgQEAKIC0tLSB8CiAgIDwlbmFtZXNwYWNlIGZpbGU9InNsbl9kZWZzLmluY2x1ZGUiIGltcG9ydD0iZ2VuX3NvbHV0aW9uIi8+XAogICA8JQotICBzb2x1dGlvbl9wcm9qZWN0cyA9IFtwIGZvciBwIGluIHZzcHJvamVjdHMgaWYgcC5idWlsZCBub3QgaW4gWydwcm90b2MnLCAndGVzdCddIGFuZCBwLmxhbmd1YWdlIGluIFsnYycsICdjKysnXSBhbmQgcC52c19wcm9qX2RpciA9PSAnLicgYW5kIG5vdCAocC5idWlsZCA9PSAncHJpdmF0ZScgYW5kIHAubGFuZ3VhZ2UgPT0gJ2MrKycpXQorICBzb2x1dGlvbl9wcm9qZWN0cyA9IFtwIGZvciBwIGluIHZzcHJvamVjdHMgaWYgcC5idWlsZCBub3QgaW4gWydwcm90b2MnLCAndGVzdCcsICdmdXp6ZXInXSBhbmQgcC5sYW5ndWFnZSBpbiBbJ2MnLCAnYysrJ10gYW5kIHAudnNfcHJval9kaXIgPT0gJy4nIGFuZCBub3QgKHAuYnVpbGQgPT0gJ3ByaXZhdGUnIGFuZCBwLmxhbmd1YWdlID09ICdjKysnKV0KICAgJT5cCiAgICR7Z2VuX3NvbHV0aW9uKHNvbHV0aW9uX3Byb2plY3RzLCB1c2VfZGxscz0neWVzJyl9CmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvdnNwcm9qZWN0cy92Y3hwcm9qLnRlbXBsYXRlIGIvdGVtcGxhdGVzL3ZzcHJvamVjdHMvdmN4cHJvai50ZW1wbGF0ZQppbmRleCBlY2YxMTNiLi4wYmIyMDhmIDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvdnNwcm9qZWN0cy92Y3hwcm9qLnRlbXBsYXRlCisrKyBiL3RlbXBsYXRlcy92c3Byb2plY3RzL3ZjeHByb2oudGVtcGxhdGUKQEAgLTIsMTIgKzIsMTQgQEAKIC0tLQogZm9yZWFjaDogdnNwcm9qZWN0cwogb3V0cHV0X25hbWU6ICR7c2VsZWN0ZWQudnNfcHJval9kaXJ9LyR7c2VsZWN0ZWQubmFtZX0vJHtzZWxlY3RlZC5uYW1lfS52Y3hwcm9qCitjb25kOiBzZWxlY3RlZC5idWlsZCBub3QgaW4gWydmdXp6ZXInXQogdGVtcGxhdGU6IHwKICAgPCVuYW1lc3BhY2UgZmlsZT0idmN4cHJval9kZWZzLmluY2x1ZGUiIGltcG9ydD0iZ2VuX3Byb2plY3QiLz5cCiAgICR7Z2VuX3Byb2plY3Qoc2VsZWN0ZWQubmFtZSwgdnNwcm9qZWN0cyl9CiAtLS0KIGZvcmVhY2g6IHZzcHJvamVjdHMKIG91dHB1dF9uYW1lOiAke3NlbGVjdGVkLnZzX3Byb2pfZGlyfS8ke3NlbGVjdGVkLm5hbWV9LyR7c2VsZWN0ZWQubmFtZX0udmN4cHJvai5maWx0ZXJzCitjb25kOiBzZWxlY3RlZC5idWlsZCBub3QgaW4gWydmdXp6ZXInXQogdGVtcGxhdGU6IHwKICAgPCVuYW1lc3BhY2UgZmlsZT0idmN4cHJvai5maWx0ZXJzX2RlZnMuaW5jbHVkZSIgaW1wb3J0PSJnZW5fZmlsdGVycyIvPlwKICAgJHtnZW5fZmlsdGVycyhzZWxlY3RlZC5uYW1lLCB2c3Byb2plY3RzKX0KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9iYWRfY2xpZW50L2JhZF9jbGllbnQuYyBiL3Rlc3QvY29yZS9iYWRfY2xpZW50L2JhZF9jbGllbnQuYwppbmRleCAyZTk2MjNlLi43ZmQ3YTAwIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvYmFkX2NsaWVudC9iYWRfY2xpZW50LmMKKysrIGIvdGVzdC9jb3JlL2JhZF9jbGllbnQvYmFkX2NsaWVudC5jCkBAIC0zMywxMyArMzMsMTMgQEAKIAogI2luY2x1ZGUgInRlc3QvY29yZS9iYWRfY2xpZW50L2JhZF9jbGllbnQuaCIKIAorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9lbmRwb2ludF9wYWlyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogCiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9iYWRfc3NsL3NlcnZlcnMvYWxwbi5jIGIvdGVzdC9jb3JlL2JhZF9zc2wvc2VydmVycy9hbHBuLmMKaW5kZXggOThkY2QxYy4uMzIyNWZkMCAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2JhZF9zc2wvc2VydmVycy9hbHBuLmMKKysrIGIvdGVzdC9jb3JlL2JhZF9zc2wvc2VydmVycy9hbHBuLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYWxwbi5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL2JhZF9zc2wvc2VydmVyX2NvbW1vbi5oIgogI2luY2x1ZGUgInRlc3QvY29yZS9lbmQyZW5kL2RhdGEvc3NsX3Rlc3RfZGF0YS5oIgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzA0MmRjNDUxMmZhM2QzOTFjNTE3MGNmM2FhNjFlNmE2MzhmODQzNDIgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzA0MmRjNDUxMmZhM2QzOTFjNTE3MGNmM2FhNjFlNmE2MzhmODQzNDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk3YTZkYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMDQyZGM0NTEyZmEzZDM5MWM1MTcwY2YzYWE2MWU2YTYzOGY4NDM0MgpAQCAtMCwwICsxIEBACitpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8wZTliYmU5NzVmMjAyN2U4YzM5Yzg5Zjg1ZjY2NzUzMDM2OGU3ZDExIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8wZTliYmU5NzVmMjAyN2U4YzM5Yzg5Zjg1ZjY2NzUzMDM2OGU3ZDExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NmI4ZmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzBlOWJiZTk3NWYyMDI3ZThjMzljODlmODVmNjY3NTMwMzY4ZTdkMTEKQEAgLTAsMCArMSBAQAorOmlpadA/K24haWoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzE0YjU3YmNiZjFlMTdiMWRiMWRlNDkxZWYyYmEzNzY4ZjcwNGI3ZGMgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzE0YjU3YmNiZjFlMTdiMWRiMWRlNDkxZWYyYmEzNzY4ZjcwNGI3ZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkzNmU4OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMTRiNTdiY2JmMWUxN2IxZGIxZGU0OTFlZjJiYTM3NjhmNzA0YjdkYwpAQCAtMCwwICsxIEBACis6h2k/PW5pSV8hJzvxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8xNzk0MzEwNjcxYTA2MGVlYWQ2ZTVlZTY2YWM5NzhhMThlYzdlODRmIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8xNzk0MzEwNjcxYTA2MGVlYWQ2ZTVlZTY2YWM5NzhhMThlYzdlODRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NGM0Y2YKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzE3OTQzMTA2NzFhMDYwZWVhZDZlNWVlNjZhYzk3OGExOGVjN2U4NGYKQEAgLTAsMCArMSwyIEBACit+aXBpcH42OjoxCit2OtA6MQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8xZDMwYjJhNzlhZmJhZjI4MjhmZjQyYjlhOTY0N2U5NDJiYTFhYjgwIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8xZDMwYjJhNzlhZmJhZjI4MjhmZjQyYjlhOTY0N2U5NDJiYTFhYjgwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NWFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzFkMzBiMmE3OWFmYmFmMjgyOGZmNDJiOWE5NjQ3ZTk0MmJhMWFiODAKQEAgLTAsMCArMSBAQAorOmlsMFAvOD9uISRpOgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMWZjZjVkOWMzMzNiNzA1OTZjZjViYTA0ZDFmN2FmZmRmNDQ1Yjk3MSBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMWZjZjVkOWMzMzNiNzA1OTZjZjViYTA0ZDFmN2FmZmRmNDQ1Yjk3MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTQ2OWFmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8xZmNmNWQ5YzMzM2I3MDU5NmNmNWJhMDRkMWY3YWZmZGY0NDViOTcxCkBAIC0wLDAgKzEsMyBAQAoraWlQKnY6OjpwaXB+Njo6OjAKK3Y6OjoxMQorCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzIzMTYyYzhhODkzNmUyMGIxOTU0MDRjMjEzMzdlZTczNGQwMmE2YmMgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzIzMTYyYzhhODkzNmUyMGIxOTU0MDRjMjEzMzdlZTczNGQwMmE2YmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY5MDIzNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMjMxNjJjOGE4OTM2ZTIwYjE5NTQwNGMyMTMzN2VlNzM0ZDAyYTZiYwpAQCAtMCwwICsxIEBACis6aWkvaT9uISVpKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMjNmMzE5OGI4MTVjYTYwYmRhZGNhYWU2ODJiOWY5NjVkZGEzODdmMSBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMjNmMzE5OGI4MTVjYTYwYmRhZGNhYWU2ODJiOWY5NjVkZGEzODdmMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmRjM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8yM2YzMTk4YjgxNWNhNjBiZGFkY2FhZTY4MmI5Zjk2NWRkYTM4N2YxCkBAIC0wLDAgKzEgQEAKK3VuaTo6Lmk/bighaXBSNi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzJlZjM4OTNiNDNmMWY2MGI3N2I1OWNlMDZhNmJjZTk4MTVkNzhlYWYgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzJlZjM4OTNiNDNmMWY2MGI3N2I1OWNlMDZhNmJjZTk4MTVkNzhlYWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3NjY1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMmVmMzg5M2I0M2YxZjYwYjc3YjU5Y2UwNmE2YmNlOTgxNWQ3OGVhZgpAQCAtMCwwICsxLDIgQEAKKzovaT9uIWlwdjY6Li86OmFiYy4qCisKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMzU2YzNjMTI5ZTIwM2I1Yzc0NTUwYjQyMDk3NjRkNzRiOWNhZWZjZSBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvMzU2YzNjMTI5ZTIwM2I1Yzc0NTUwYjQyMDk3NjRkNzRiOWNhZWZjZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzFlMjJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8zNTZjM2MxMjllMjAzYjVjNzQ1NTBiNDIwOTc2NGQ3NGI5Y2FlZmNlCkBAIC0wLDAgKzEgQEAKK3VuaXg6Ly9paTojdjZpP24hClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8zYjU4ODYwZjM0NTFkM2U3YWFkOTk2OTBhOGQzOTc4MmNhNTExNmZjIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy8zYjU4ODYwZjM0NTFkM2U3YWFkOTk2OTBhOGQzOTc4MmNhNTExNmZjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNWIyMDgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzNiNTg4NjBmMzQ1MWQzZTdhYWQ5OTY5MGE4ZDM5NzgyY2E1MTE2ZmMKQEAgLTAsMCArMSw0IEBACitpOmk/bmlwfiYyLi86OjphYmlwaXB+NmMuKgorCis6OjEKK3Y60DoxCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzQ3YjUyMjg0MDQ0NTFmYzlkNDA3MWZhNjkxOTI1MTRiYjRjZTMzYzEgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzQ3YjUyMjg0MDQ0NTFmYzlkNDA3MWZhNjkxOTI1MTRiYjRjZTMzYzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkNTJlMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNDdiNTIyODQwNDQ1MWZjOWQ0MDcxZmE2OTE5MjUxNGJiNGNlMzNjMQpAQCAtMCwwICsxIEBACis6aWlQL2k/biEnaSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzYzNmM1NjA2ZmMyMzcxM2ExYmFlODhjODg5OWMwNTQxY2ZhZDRmZDggYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzYzNmM1NjA2ZmMyMzcxM2ExYmFlODhjODg5OWMwNTQxY2ZhZDRmZDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNDkzMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNjM2YzU2MDZmYzIzNzEzYTFiYWU4OGM4ODk5YzA1NDFjZmFkNGZkOApAQCAtMCwwICsxLDQgQEAKKzppP24haXB+ZjI6Li86OmFiaXBpcH42Yy4qCisKKzo6MQordjrQOjEKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNjNmZTQ5M2IyNzBiMTc0MjZkNzdhMjdjYmYzYWJhYzViMmMyNzk0YSBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNjNmZTQ5M2IyNzBiMTc0MjZkNzdhMjdjYmYzYWJhYzViMmMyNzk0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjk1MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy82M2ZlNDkzYjI3MGIxNzQyNmQ3N2EyN2NiZjNhYmFjNWIyYzI3OTRhCkBAIC0wLDAgKzEgQEAKKzqHaT89bmlJISc78QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNjU1MzAwYTkwMmI2MjY2MjI5NmE4ZTQ2YmZiMDRmYmNiMDcxODJjYiBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvNjU1MzAwYTkwMmI2MjY2MjI5NmE4ZTQ2YmZiMDRmYmNiMDcxODJjYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFjYTM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy82NTUzMDBhOTAyYjYyNjYyMjk2YThlNDZiZmIwNGZiY2IwNzE4MmNiCkBAIC0wLDAgKzEgQEAKK3VuaXg6Ly9paTpwdjZpP24hClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy82YjcwOTc5YTcwYTAzOGZmNjYwN2Q2Y2Y4NTQ4NWVlOTViYWY1OGU2IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy82YjcwOTc5YTcwYTAzOGZmNjYwN2Q2Y2Y4NTQ4NWVlOTViYWY1OGU2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Y2JkNzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzZiNzA5NzlhNzBhMDM4ZmY2NjA3ZDZjZjg1NDg1ZWU5NWJhZjU4ZTYKQEAgLTAsMCArMSBAQAordW5pOjovaT9uIWlwUjYvClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy83MzE0YWIzNTQ1YTc1MzVhMjZlMGU4YWFkNjdjYWVhNTUzNGQ2OGIxIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy83MzE0YWIzNTQ1YTc1MzVhMjZlMGU4YWFkNjdjYWVhNTUzNGQ2OGIxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxM2NmNWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzczMTRhYjM1NDVhNzUzNWEyNmUwZThhYWQ2N2NhZWE1NTM0ZDY4YjEKQEAgLTAsMCArMSwyIEBACitpcGlwfjY6OjoxCit2Ojo6MQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy84ODRkY2FlZTI5MDhmZmU1ZjEyYjY1YjhlYmE4MTAxNjA5OWM0MjY2IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy84ODRkY2FlZTI5MDhmZmU1ZjEyYjY1YjhlYmE4MTAxNjA5OWM0MjY2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZWNjN2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzg4NGRjYWVlMjkwOGZmZTVmMTJiNjViOGViYTgxMDE2MDk5YzQyNjYKQEAgLTAsMCArMSBAQAoraXAqdjo6OjEKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvOTZjOGQyNjZiN2RjMDM3Mjg4ZWYzMDVjOTk2NjA4MjcwZjcyZTdmYiBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvOTZjOGQyNjZiN2RjMDM3Mjg4ZWYzMDVjOTk2NjA4MjcwZjcyZTdmYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmIzOTJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy85NmM4ZDI2NmI3ZGMwMzcyODhlZjMwNWM5OTY2MDgyNzBmNzJlN2ZiCkBAIC0wLDAgKzEsMiBAQAorOi9pL24haXB2Njo6Oi9hLmIuYzEKKwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy85NzU1MzZjNzFhZGU0ODAwNDE1YTdlOWMyZjFiNDVjMzVhNmQ1ZWE4IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy85NzU1MzZjNzFhZGU0ODAwNDE1YTdlOWMyZjFiNDVjMzVhNmQ1ZWE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNTUyMjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzLzk3NTUzNmM3MWFkZTQ4MDA0MTVhN2U5YzJmMWI0NWMzNWE2ZDVlYTgKQEAgLTAsMCArMSBAQAoraWxQLmk7P24hI2khOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvOTk3NTBhYTY3ZDMwYmVhZWE4YWY1NjVjODI5ZDQ5OTlhYThjYjkxYiBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvOTk3NTBhYTY3ZDMwYmVhZWE4YWY1NjVjODI5ZDQ5OTlhYThjYjkxYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDYxZTAyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy85OTc1MGFhNjdkMzBiZWFlYThhZjU2NWM4MjlkNDk5OWFhOGNiOTFiCkBAIC0wLDAgKzEgQEAKK3VuaXg6Oi9pP24haXB2Ni8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2ExZjBmOWI3NWJiMzU0ZWIwNjNkN2NiYTRmY2ZhMmQwYjg4ZDYzZGUgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2ExZjBmOWI3NWJiMzU0ZWIwNjNkN2NiYTRmY2ZhMmQwYjg4ZDYzZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2ZTYzZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvYTFmMGY5Yjc1YmIzNTRlYjA2M2Q3Y2JhNGZjZmEyZDBiODhkNjNkZQpAQCAtMCwwICsxIEBACis6omlsUC9pO24hI2k6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9hMjk2ZWIzZDFkNDM2ZWQ3ZGY3MTk1YjEwYWEzYzRkZTM4OTZmOThkIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9hMjk2ZWIzZDFkNDM2ZWQ3ZGY3MTk1YjEwYWEzYzRkZTM4OTZmOThkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZjJmODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2EyOTZlYjNkMWQ0MzZlZDdkZjcxOTViMTBhYTNjNGRlMzg5NmY5OGQKQEAgLTAsMCArMSBAQAordStuaTo6L2k/biFpcFIzLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvYThiOGU2NjA1MGI0MjRmMWI4YzA3ZDQ2Zjg2ODE5OWZiN2Y2MGUzOCBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvYThiOGU2NjA1MGI0MjRmMWI4YzA3ZDQ2Zjg2ODE5OWZiN2Y2MGUzOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2ExMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9hOGI4ZTY2MDUwYjQyNGYxYjhjMDdkNDZmODY4MTk5ZmI3ZjYwZTM4CkBAIC0wLDAgKzEgQEAKK3VuaTo6cGk6bWlQLz9uaS4hKFJpPyk4L24hJ2kqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9hZjU1YmFmOGM4ODU1ZTU2M2JlZmRmMWVlZmJjYmQ0NmM1ZGRiOGQyIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9hZjU1YmFmOGM4ODU1ZTU2M2JlZmRmMWVlZmJjYmQ0NmM1ZGRiOGQyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMDE5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2FmNTViYWY4Yzg4NTVlNTYzYmVmZGYxZWVmYmNiZDQ2YzVkZGI4ZDIKQEAgLTAsMCArMSBAQAordW5pOjouaSFpbjovaS9uIWlwdjaeOj8ocFI7OjovYS4yYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvYjNjMGJmNjZjMmJmNWQyNGVmMWRhZjRjYzVhOWQ2ZDViZDBlOGJmZCBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvYjNjMGJmNjZjMmJmNWQyNGVmMWRhZjRjYzVhOWQ2ZDViZDBlOGJmZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTEyMTY3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9iM2MwYmY2NmMyYmY1ZDI0ZWYxZGFmNGNjNWE5ZDZkNWJkMGU4YmZkCkBAIC0wLDAgKzEgQEAKKzppaS9paWxQLmk7P24/biEjaSE7ISUqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9jZWI0ZTIyNjRiYTdhOGQ1YmU0N2QyNzZiMzdlYzA5NDg5ZTAwMjQ1IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9jZWI0ZTIyNjRiYTdhOGQ1YmU0N2QyNzZiMzdlYzA5NDg5ZTAwMjQ1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NjU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2NlYjRlMjI2NGJhN2E4ZDViZTQ3ZDI3NmIzN2VjMDk0ODllMDAyNDUKQEAgLTAsMCArMSBAQAorOodpP1AtbmlJISdp8QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvY2Y0Mzk1OTU4ZjViZmI0NmZkNmY1MzVhMzk2NTdkMDE2Yzc1MTE0YyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvY2Y0Mzk1OTU4ZjViZmI0NmZkNmY1MzVhMzk2NTdkMDE2Yzc1MTE0YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzY1NjcyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9jZjQzOTU5NThmNWJmYjQ2ZmQ2ZjUzNWEzOTY1N2QwMTZjNzUxMTRjCkBAIC0wLDAgKzEgQEAKK3VuaXg6Ly9pcHY2Ojo6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9kNDY2NjgzNzJiN2UyMDE1NGE4OTQwOWE3NDMwYTI4ZTY0MmFmZGNhIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9kNDY2NjgzNzJiN2UyMDE1NGE4OTQwOWE3NDMwYTI4ZTY0MmFmZGNhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NThmYjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2Q0NjY2ODM3MmI3ZTIwMTU0YTg5NDA5YTc0MzBhMjhlNjQyYWZkY2EKQEAgLTAsMCArMSBAQAorOmlsUC9pP24hI2k6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9kNmZlNzQxMmEwYTFkMWM3MzMxNjAyNDZmM2ZhNDI1ZjRmOTc2ODJhIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9kNmZlNzQxMmEwYTFkMWM3MzMxNjAyNDZmM2ZhNDI1ZjRmOTc2ODJhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMzdiNWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2Q2ZmU3NDEyYTBhMWQxYzczMzE2MDI0NmYzZmE0MjVmNGY5NzY4MmEKQEAgLTAsMCArMSBAQAorOmlsUC9pP24sISNpOgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZG5zLnR4dCBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZG5zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzdlMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9kbnMudHh0CkBAIC0wLDAgKzEgQEAKK2RuczoxMC4yLjEuMQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lYTAyZDlmZWE5YmFkNWI4OWNmMzUzYTAxNjkyMzhmNTg0MTc3ZTcxIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lYTAyZDlmZWE5YmFkNWI4OWNmMzUzYTAxNjkyMzhmNTg0MTc3ZTcxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZjVhMjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2VhMDJkOWZlYTliYWQ1Yjg5Y2YzNTNhMDE2OTIzOGY1ODQxNzdlNzEKQEAgLTAsMCArMSw0IEBACitpOmk/biFpcH5mMi46Lzo6YWJpcGlwfjZjLioKKworOjoxCit2OtA6MQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lYzQ3MzFkZGRmOTRlZDNlYTkyYWU0ZDVhNzFmMTQ1YWI2ZTNmNmVlIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lYzQ3MzFkZGRmOTRlZDNlYTkyYWU0ZDVhNzFmMTQ1YWI2ZTNmNmVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYzkzZmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2VjNDczMWRkZGY5NGVkM2VhOTJhZTRkNWE3MWYxNDVhYjZlM2Y2ZWUKQEAgLTAsMCArMSBAQAoraWktaT9uISUqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lZDJmNzg2NDZmMTlmYzQ3ZGQ4NWZmMDg3N2MyMzJiNzE5MTNlY2UyIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9lZDJmNzg2NDZmMTlmYzQ3ZGQ4NWZmMDg3N2MyMzJiNzE5MTNlY2UyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MDY1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2VkMmY3ODY0NmYxOWZjNDdkZDg1ZmYwODc3YzIzMmI3MTkxM2VjZTIKQEAgLTAsMCArMSBAQAorOmlpL2k/biElKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZjY4ODlmNGE2MzUwZmVhMTU5NmEzYWRlYTVjZGFjMDJiZDVkMWZmMyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZjY4ODlmNGE2MzUwZmVhMTU5NmEzYWRlYTVjZGFjMDJiZDVkMWZmMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjE1MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mNjg4OWY0YTYzNTBmZWExNTk2YTNhZGVhNWNkYWMwMmJkNWQxZmYzCkBAIC0wLDAgKzEsMiBAQAorOmlwaXB+Njo6OjEKK3ZpaS86OjppdW5peDo/bi8xL2lwdjYhJQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZjZmM2JkMDMwZjBkMzIxZWZlN2M1MWNhM2YwNTdkZTIzNTA5YWY2NyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZjZmM2JkMDMwZjBkMzIxZWZlN2M1MWNhM2YwNTdkZTIzNTA5YWY2NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDM0ZTEzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mNmYzYmQwMzBmMGQzMjFlZmU3YzUxY2EzZjA1N2RlMjM1MDlhZjY3CkBAIC0wLDAgKzEgQEAKKzppaVAvaT9uIWkqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mOTc1OThjZmYwMzMwNmFmM2M3MDQwMDYwOGZlYzQ3MjY4YjUwNzVkIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mOTc1OThjZmYwMzMwNmFmM2M3MDQwMDYwOGZlYzQ3MjY4YjUwNzVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MDk0NmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2Y5NzU5OGNmZjAzMzA2YWYzYzcwNDAwNjA4ZmVjNDcyNjhiNTA3NWQKQEAgLTAsMCArMSwyIEBACit1bml4Oi8vaXB2Njo6Oi9hLmIuYzEKKwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mOWUxZWMxZmM2NDJiNTc1YmM5OTU1NjE4YjcwNjU3NDdmNTZiMTAxIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mOWUxZWMxZmM2NDJiNTc1YmM5OTU1NjE4YjcwNjU3NDdmNTZiMTAxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwODlhNTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2Y5ZTFlYzFmYzY0MmI1NzViYzk5NTU2MThiNzA2NTc0N2Y1NmIxMDEKQEAgLTAsMCArMSBAQAorOmlsUC5pOz9uISNpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZmUwNjMwYTNhZWVkMmVjNmY0NzRmMzYyZTRjODM5NDc4MjkwZDVjNCBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvZmUwNjMwYTNhZWVkMmVjNmY0NzRmMzYyZTRjODM5NDc4MjkwZDVjNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmVlZmJjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9mZTA2MzBhM2FlZWQyZWM2ZjQ3NGYzNjJlNGM4Mzk0NzgyOTBkNWM0CkBAIC0wLDAgKzEgQEAKKzptaVAvaT8pbiEnaSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2lwdjQudHh0IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9pcHY0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTI5NDg2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9pcHY0LnR4dApAQCAtMCwwICsxIEBACitpcHY0OjEwLjIuMS4xCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfY29ycHVzL2lwdjYudHh0IGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9pcHY2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjY5MzJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy9pcHY2LnR4dApAQCAtMCwwICsxIEBACitpcHY2Ojo6MQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cy91bml4LnR4dCBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvdW5peC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EwOTk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9jb3JwdXMvdW5peC50eHQKQEAgLTAsMCArMSBAQAordW5peDovLy9hLmIuYwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2Z1enplcl90ZXN0LmMgYi90ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfZnV6emVyX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDc0NmMxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2Z1enplcl90ZXN0LmMKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2xpZW50X2NvbmZpZy91cmlfcGFyc2VyLmgiCisKK2ludCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgIGNoYXIgKnMgPSBncHJfbWFsbG9jKHNpemUgKyAxKTsKKyAgbWVtY3B5KHMsIGRhdGEsIHNpemUpOworICBzW3NpemVdID0gMDsKKworICBncnBjX3VyaSAqeDsKKyAgaWYgKCh4ID0gZ3JwY191cmlfcGFyc2UocywgMSkpKSB7CisgICAgZ3JwY191cmlfZGVzdHJveSh4KTsKKyAgfQorICBncHJfZnJlZShzKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9jZW5zdXMuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2NlbnN1cy5jCmluZGV4IDhkNTA0ZTQuLjlkMDkxZDUgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2NlbnN1cy5jCisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2NlbnN1cy5jCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3luYy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC90aGQuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdXNlZnVsLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jbGllbnRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2Nvbm5lY3RlZF9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9jb21wcmVzcy5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfY29tcHJlc3MuYwppbmRleCBhNDVjMjdhLi44ZDhkNWU3IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9jb21wcmVzcy5jCisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2NvbXByZXNzLmMKQEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zeW5jLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RoZC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NsaWVudF9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3Rlc3RfY29uZmlnLmgiCiAKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2Z1bGwrcGlwZS5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCtwaXBlLmMKaW5kZXggZGVmNWVmYS4uZTIzODAyMyAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCtwaXBlLmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCtwaXBlLmMKQEAgLTQxLDEzICs0MSwxMyBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zeW5jLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RoZC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NsaWVudF9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3Ivd2FrZXVwX2ZkX3Bvc2l4LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3BvbGwrcGlwZS5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCtwb2xsK3BpcGUuYwppbmRleCAwNTg0YjgxLi42ODg2ODZlIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3BvbGwrcGlwZS5jCisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2Z1bGwrcG9sbCtwaXBlLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgogCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jbGllbnRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2Nvbm5lY3RlZF9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmgiCkBAIC00OSw3ICs1MCw2IEBACiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3dha2V1cF9mZF9wb3NpeC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCtwb2xsLmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3BvbGwuYwppbmRleCA4NTc2ZTNlLi40YmIxZjgwIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3BvbGwuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3BvbGwuYwpAQCAtNDIsMTMgKzQyLDEzIEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RoZC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KIAorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9wb2xsc2V0X3Bvc2l4LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3RyYWNlLmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsK3RyYWNlLmMKaW5kZXggMGQ1MzE1Ni4uZjFiNGM1ZCAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbCt0cmFjZS5jCisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2Z1bGwrdHJhY2UuYwpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L2Vudi5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbC5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfZnVsbC5jCmluZGV4IDRlYWU2MjAuLmNkODhlZDIgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2Z1bGwuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9mdWxsLmMKQEAgLTQxLDEyICs0MSwxMiBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zeW5jLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RoZC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NsaWVudF9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvcG9ydC5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3Rlc3RfY29uZmlnLmgiCiAKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3Byb3h5LmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9wcm94eS5jCmluZGV4IDM5ZWNkODkuLjI5OWU0NGUgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3Byb3h5LmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfcHJveHkuYwpAQCAtNDEsMTIgKzQxLDEyIEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9wcm94eS5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXIrdHJhY2UuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3NvY2twYWlyK3RyYWNlLmMKaW5kZXggMzc0MzkwZi4uNWZjOGIzMiAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXIrdHJhY2UuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9zb2NrcGFpcit0cmFjZS5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb21wcmVzc19maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L2Vudi5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXIuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3NvY2twYWlyLmMKaW5kZXggYzExYTUyOC4uNzM5ZTU1MyAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXIuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9zb2NrcGFpci5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb21wcmVzc19maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgpAQCAtNDksNyArNTAsNiBAQAogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9pb21nci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXJfMWJ5dGUuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3NvY2twYWlyXzFieXRlLmMKaW5kZXggNmE1MDRjNi4uZjUzMTJjYSAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfc29ja3BhaXJfMWJ5dGUuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9zb2NrcGFpcl8xYnl0ZS5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb21wcmVzc19maWx0ZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgpAQCAtNDksNyArNTAsNiBAQAogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9pb21nci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfdWRzK3BvbGwuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX3Vkcytwb2xsLmMKaW5kZXggZTQzMWVmMy4uMzlhZTM0YSAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfdWRzK3BvbGwuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl91ZHMrcG9sbC5jCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RoZC5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KIAorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgpAQCAtNTIsNyArNTMsNiBAQAogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfdWRzLmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl91ZHMuYwppbmRleCAxYmRjZGVmLi5jYzBkNmJmIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl91ZHMuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl91ZHMuYwpAQCAtNDQsMTMgKzQ0LDEzIEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2xpZW50X2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzAyOTljYTI1ODBlNDM5OGQxNzBjNGEzMzZlMGMzM2ViMmNkOWQ0MjcgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMDI5OWNhMjU4MGU0Mzk4ZDE3MGM0YTMzNmUwYzMzZWIyY2Q5ZDQyNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDZmYWNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzAyOTljYTI1ODBlNDM5OGQxNzBjNGEzMzZlMGMzM2ViMmNkOWQ0MjcKQEAgLTAsMCArMSwyIEBACitIVFRQLzEuMSCFMjAwIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wNWU2MTM4NTNkNjRhOTY2OWVhM2NmNDFiMGRlNzc3ZGMyNDkzMWJhIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzA1ZTYxMzg1M2Q2NGE5NjY5ZWEzY2Y0MWIwZGU3NzdkYzI0OTMxYmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiYWYyZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wNWU2MTM4NTNkNjRhOTY2OWVhM2NmNDFiMGRlNzc3ZGMyNDkzMWJhCkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xLjEgOCkgcBJNS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMDY5MzUyNTE4YTFkMWJhYTA1ZjMxN2M2NzdkMjc1Y2VmZGEyYWM5NyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wNjkzNTI1MThhMWQxYmFhMDVmMzE3YzY3N2QyNzVjZWZkYTJhYzk3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMDY5MzUyNTE4YTFkMWJhYTA1ZjMxN2M2NzdkMjc1Y2VmZGEyYWM5NwpAQCAtMCwwICsxLDIgQEAKK0hUVFAvMS4xIDgwKSBPS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMDkyNTUyN2M5MzU4YjFlMTBlYzBmMDM4N2NkOTlmMzUyMDRkOWEzNCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wOTI1NTI3YzkzNThiMWUxMGVjMGYwMzg3Y2Q5OWYzNTIwNGQ5YTM0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOTY3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMDkyNTUyN2M5MzU4YjFlMTBlYzBmMDM4N2NkOTlmMzUyMDRkOWEzNApAQCAtMCwwICsxLDIgQEAKK4RIVFQvMjEuIDIwMCBIVCFUUC8xT0tILjFIVFRQIDIwMCBPS0gNCit0SFQvLzFUMFAuMXkgMjAwMS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMGM1YjdjMjU2OTQxMGI1MjY2MDVlMzA4MzA5YTdmMzY1NzRlNTMwZCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wYzViN2MyNTY5NDEwYjUyNjYwNWUzMDgzMDlhN2YzNjU3NGU1MzBkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OWU0NTYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMGM1YjdjMjU2OTQxMGI1MjY2MDVlMzA4MzA5YTdmMzY1NzRlNTMwZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMGVmM2QwYTg0MzYwYmI1YWQ2NjI3NGYxMjI2ZjVjYjI3M2VjZGJjZiBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8wZWYzZDBhODQzNjBiYjVhZDY2Mjc0ZjEyMjZmNWNiMjczZWNkYmNmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOTc5YjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMGVmM2QwYTg0MzYwYmI1YWQ2NjI3NGYxMjI2ZjVjYjI3M2VjZGJjZgpAQCAtMCwwICsxLDMgQEAKK0hUVFAvMS4xIDIwMCBPS0gNCit0SFRUUC8wMS4wMjEgIE9lcyxIDQordGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzFlMTI3M2Y5MDE4N2ZkZjVkZjM2MjU3NjQyNDU2MTBmODZhZjZhYTQgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMWUxMjczZjkwMTg3ZmRmNWRmMzYyNTc2NDI0NTYxMGY4NmFmNmFhNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzM4MmI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzFlMTI3M2Y5MDE4N2ZkZjVkZjM2MjU3NjQyNDU2MTBmODZhZjZhYTQKQEAgLTAsMCArMSwzIEBACitIVFRQLzEuMSAyMDAgT0tISFRUUIkvMS4yMDAgT0tIDQorDQordEhUSFRUUC8wIDIwVDp0ZXMvMDEuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzFmYmM1N2QxMThmMzczMzI4N2U5YTlkODA4YmI4OTQ3YjMyNjBlNTUgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMWZiYzU3ZDExOGYzNzMzMjg3ZTlhOWQ4MDhiYjg5NDdiMzI2MGU1NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWI4MjY1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzFmYmM1N2QxMThmMzczMzI4N2U5YTlkODA4YmI4OTQ3YjMyNjBlNTUKQEAgLTAsMCArMSwzIEBACitKSFRULzIxLiAy6DAgSFRUUC8xLjEgMjAwIE9LSEhUVFCJLzEuMjAwIE9LSA0KKw0KK3RIVEhUSFRKSFRUUFQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMjQ3NTZjMzk2YmM3Mjg5NGZkNzIwMDkyYmI2ZjljMDNlNjZiNDY5ZiBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8yNDc1NmMzOTZiYzcyODk0ZmQ3MjAwOTJiYjZmOWMwM2U2NmI0NjlmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMmUwZTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMjQ3NTZjMzk2YmM3Mjg5NGZkNzIwMDkyYmI2ZjljMDNlNjZiNDY5ZgpAQCAtMCwwICsxLDIgQEAKK0pIVFQvMjEuIDIwMJxIVFQvME9LSC4xIEhUVFAvMjAwIE9LSA0KK3RIMS5UClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzI3NmRlZjQxMzExOTMzNDIxYWU3YTllZTQyZTkwNmM4NWI2YTRkM2YgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMjc2ZGVmNDEzMTE5MzM0MjFhZTdhOWVlNDJlOTA2Yzg1YjZhNGQzZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGIwNGIyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzI3NmRlZjQxMzExOTMzNDIxYWU3YTllZTQyZTkwNmM4NWI2YTRkM2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzI5ZGFhNzU0MzIzODE5MzdmZDAwNWNiMjVlMzE0ZTMyOGRlNmU5ZjkgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMjlkYWE3NTQzMjM4MTkzN2ZkMDA1Y2IyNWUzMTRlMzI4ZGU2ZTlmOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWU3MGJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzI5ZGFhNzU0MzIzODE5MzdmZDAwNWNiMjVlMzE0ZTMyOGRlNmU5ZjkKQEAgLTAsMCArMSwyIEBACitKSFRUuTIxLiAyMDAcSFRULzBPS0gxIEhUVFAvMTAwIE9LSA0KK3RIMS5UClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzJhNzUyMDRiYzQ5MjA4NGFkODUzNjgyZjhkZTNmYjEzN2Q1OTA3YmMgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMmE3NTIwNGJjNDkyMDg0YWQ4NTM2ODJmOGRlM2ZiMTM3ZDU5MDdiYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzZiMDBlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzJhNzUyMDRiYzQ5MjA4NGFkODUzNjgyZjhkZTNmYjEzN2Q1OTA3YmMKQEAgLTAsMCArMSwyIEBACitHRVQgLyBIVFRIVFRQLzEuMSAyMDAgT0tIDQordDEwSApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8yZDM0YmEyNDliNzU1YTg4MDUyNWNmNTNjNjY1NjMzYTVlMzU5MzA1IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzJkMzRiYTI0OWI3NTVhODgwNTI1Y2Y1M2M2NjU2MzNhNWUzNTkzMDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzNWY1MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8yZDM0YmEyNDliNzU1YTg4MDUyNWNmNTNjNjY1NjMzYTVlMzU5MzA1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zM2Y0ZWEwYzdlYTI3YzM3ZDhmOTVjZmE2NGQyODIzNzBlZmRhZmQyIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzMzZjRlYTBjN2VhMjdjMzdkOGY5NWNmYTY0ZDI4MjM3MGVmZGFmZDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NlOGRlZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zM2Y0ZWEwYzdlYTI3YzM3ZDhmOTVjZmE2NGQyODIzNzBlZmRhZmQyCkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xKjl5IDIwMCBPS20NCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMzU1NTQ2MTdlYTY0MThiZDQzMTYxZmU5YTJjMzM3ZWQ4MmQ3ZWM1YiBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zNTU1NDYxN2VhNjQxOGJkNDMxNjFmZTlhMmMzMzdlZDgyZDdlYzViCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZWZhM2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMzU1NTQ2MTdlYTY0MThiZDQzMTYxZmU5YTJjMzM3ZWQ4MmQ3ZWM1YgpAQCAtMCwwICsxLDQgQEAKK0pIVFQvMjEuIDIwMCBIVFRQLzBPS0guMSAyMDAgT0tIDQordEhUVFAvMDEuMDIxICBPZXMsSA0KK3QNCit0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzM1ZjBjNTYxMjk3Y2ZjODQwZGRhZWViYjlmYzYxMDkxZjRlYWRlY2UgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvMzVmMGM1NjEyOTdjZmM4NDBkZGFlZWJiOWZjNjEwOTFmNGVhZGVjZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGY0M2U0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzM1ZjBjNTYxMjk3Y2ZjODQwZGRhZWViYjlmYzYxMDkxZjRlYWRlY2UKQEAgLTAsMCArMSwyIEBACitIVFRQLzEuOXkgMjAwIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zOTUzNjg4ODY2Y2NiM2I0ZjM3MWYxYTg1ODU3MGQ2YWZkYjY0NTJkIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzM5NTM2ODg4NjZjY2IzYjRmMzcxZjFhODU4NTcwZDZhZmRiNjQ1MmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg1ZjFkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zOTUzNjg4ODY2Y2NiM2I0ZjM3MWYxYTg1ODU3MGQ2YWZkYjY0NTJkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zOWIxOWM0MWJhNTM3ZjM3NTExZWZmNzcyNzczMzcxNWRiNDMyZTc2IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzM5YjE5YzQxYmE1MzdmMzc1MTFlZmY3NzI3NzMzNzE1ZGI0MzJlNzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmYTQ1MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zOWIxOWM0MWJhNTM3ZjM3NTExZWZmNzcyNzczMzcxNWRiNDMyZTc2CkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xLjEgMDAwIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zZTNjNDc1NmQ1ZTQwYjVhYTI1MDk1NGNiYWM4NmI4MjZlNzBhN2FjIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzNlM2M0NzU2ZDVlNDBiNWFhMjUwOTU0Y2JhYzg2YjgyNmU3MGE3YWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2N2I1NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zZTNjNDc1NmQ1ZTQwYjVhYTI1MDk1NGNiYWM4NmI4MjZlNzBhN2FjCkBAIC0wLDAgKzEsMyBAQAorSFRUUC8xLjEgMjAwIE9LSA0KK3RIVFRQLzAxLjAyMSA6IE9lcyxIDQordGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzNmMDMyNjU5MjExMjBjNmZmYTYxYjk0NGUyMTNlMDYyYTU1MzhkNGIgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvM2YwMzI2NTkyMTEyMGM2ZmZhNjFiOTQ0ZTIxM2UwNjJhNTUzOGQ0YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWY5MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzNmMDMyNjU5MjExMjBjNmZmYTYxYjk0NGUyMTNlMDYyYTU1MzhkNGIKQEAgLTAsMCArMSwyIEBACitAVFRQLzEuMXkgMDAy/09LSA0KK3ZlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zZmIwMzRlNjZlZTU0OTRhNjdhY2FlMWI0ZTZmZjY0YmE5MmEyMDQ2IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzNmYjAzNGU2NmVlNTQ5NGE2N2FjYWUxYjRlNmZmNjRiYTkyYTIwNDYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyMDI2NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy8zZmIwMzRlNjZlZTU0OTRhNjdhY2FlMWI0ZTZmZjY0YmE5MmEyMDQ2CkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xLjF5IDIwMCBPS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDY2MDU5ZWQwN2EwZDU1ZDZhZDVlNTIyYzdkMzY3Y2JmMjc4ZWFmOSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy80NjYwNTllZDA3YTBkNTVkNmFkNWU1MjJjN2QzNjdjYmYyNzhlYWY5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTZiOWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDY2MDU5ZWQwN2EwZDU1ZDZhZDVlNTIyYzdkMzY3Y2JmMjc4ZWFmOQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDg3NzI1ZWIzODUxMWM3OWE5MzQwYmY0NTYwYTE0MTEwNjFmYTZmYSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy80ODc3MjVlYjM4NTExYzc5YTkzNDBiZjQ1NjBhMTQxMTA2MWZhNmZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OWM0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDg3NzI1ZWIzODUxMWM3OWE5MzQwYmY0NTYwYTE0MTEwNjFmYTZmYQpAQCAtMCwwICsxLDIgQEAKK0hUVFAvMDEuMDIxICBPLEgNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDhiOWIyMDVjYWU4YWMyMTUxMmEzZjI2ZjQ5ZmQ1M2UyMWVlMTNjNSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy80OGI5YjIwNWNhZThhYzIxNTEyYTNmMjZmNDlmZDUzZTIxZWUxM2M1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYzdjZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNDhiOWIyMDVjYWU4YWMyMTUxMmEzZjI2ZjQ5ZmQ1M2UyMWVlMTNjNQpAQCAtMCwwICsxLDIgQEAKK0lUVFAvMTEghTIwTyBISw0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy80YjFmMWY3OWEwYmZhM2Y5NDI0NzlkZDVmOGVkYjU5YTdjMjU3YzU1IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzRiMWYxZjc5YTBiZmEzZjk0MjQ3OWRkNWY4ZWRiNTlhN2MyNTdjNTUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlkMWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy80YjFmMWY3OWEwYmZhM2Y5NDI0NzlkZDVmOGVkYjU5YTdjMjU3YzU1CkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xLjEgMjAwIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81MDI4YzU2YTUxMTZhMTg2YjczNDNmZjU5NTY3YjQ3MzQ3YTA3OTZkIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzUwMjhjNTZhNTExNmExODZiNzM0M2ZmNTk1NjdiNDczNDdhMDc5NmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyYzRkZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81MDI4YzU2YTUxMTZhMTg2YjczNDNmZjU5NTY3YjQ3MzQ3YTA3OTZkCkBAIC0wLDAgKzEsMyBAQAorSFRUUC8xLjEgMjAwIE9LSA0KKwkgSFREUC8wMS4wMjEgOiBPZXMsSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81MzNmNjJiM2Y0OTVjZTcwNGJhYmYzZWU4ZDg0MGYxOTZhNzE0ZGZmIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzUzM2Y2MmIzZjQ5NWNlNzA0YmFiZjNlZThkODQwZjE5NmE3MTRkZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMxM2NkOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81MzNmNjJiM2Y0OTVjZTcwNGJhYmYzZWU4ZDg0MGYxOTZhNzE0ZGZmCkBAIC0wLDAgKzEsNCBAQAorSkhUVC8yMS4gMjAwIEhUVFAvMU9LSC4xIDIwMCBPS0gNCit0SFRUUC8wMS4wMjEgIE9lcyxIDQordA0KK3QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNTg5MmNiYjI4NDc3MWZjOTc2MWNhYWUzN2IxOWNkNmUyN2RiYzEwNCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81ODkyY2JiMjg0NzcxZmM5NzYxY2FhZTM3YjE5Y2Q2ZTI3ZGJjMTA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZTU1MTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNTg5MmNiYjI4NDc3MWZjOTc2MWNhYWUzN2IxOWNkNmUyN2RiYzEwNApAQCAtMCwwICsxLDIgQEAKK0rPSFRUUIkvMS4yMDA6T0tISFTjLzIxLiAy6DAgSFRUUC8NCisxLjEgMjAwFCBPS0hIVHRUUIkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNWFlYWI2ZTRmN2MyYTFjMDlkNGFjMGRiZGIzYmVhYzQ4OTM2MDdlZSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YWVhYjZlNGY3YzJhMWMwOWQ0YWMwZGJkYjNiZWFjNDg5MzYwN2VlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkN2UyMzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNWFlYWI2ZTRmN2MyYTFjMDlkNGFjMGRiZGIzYmVhYzQ4OTM2MDdlZQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNWI2MjkyYmRmMDA5YjBkYWVjYmM5MGI4NWNjYTMwYTg4YzM2ZWVjNSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YjYyOTJiZGYwMDliMGRhZWNiYzkwYjg1Y2NhMzBhODhjMzZlZWM1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTVhYjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvNWI2MjkyYmRmMDA5YjBkYWVjYmM5MGI4NWNjYTMwYTg4YzM2ZWVjNQpAQCAtMCwwICsxLDIgQEAKK0hUVFAvMS4gMjAwIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YzE2NTliNzc2NzhiNDFmYWE0ZmExM2RmNzc3MmRhZTMyMzhkMWMwIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzVjMTY1OWI3NzY3OGI0MWZhYTRmYTEzZGY3NzcyZGFlMzIzOGQxYzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgwNzA4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YzE2NTliNzc2NzhiNDFmYWE0ZmExM2RmNzc3MmRhZTMyMzhkMWMwCkBAIC0wLDAgKzEsMiBAQAorQFRUUC8xLjF5oDAwJ0pIVFRQLzEuMSArMDD/T+9IIEhUVFAvDQordmUxLjEgMjAwcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YzgxZjYxNjIxZTI5ZWM5YzZhNjRhYzNhZjliM2IyMTYxNDE2MThlIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzVjODFmNjE2MjFlMjllYzljNmE2NGFjM2FmOWIzYjIxNjE0MTYxOGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkMGRmYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy81YzgxZjYxNjIxZTI5ZWM5YzZhNjRhYzNhZjliM2IyMTYxNDE2MThlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy82NTczNjhkZjUxMmNhNjI5NGI5ZGYxNmFkZjkzNWEzZjM3NGE4YmUyIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzY1NzM2OGRmNTEyY2E2Mjk0YjlkZjE2YWRmOTM1YTNmMzc0YThiZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxNGY2OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy82NTczNjhkZjUxMmNhNjI5NGI5ZGYxNmFkZjkzNWEzZjM3NGE4YmUyCkBAIC0wLDAgKzEsMyBAQAorSFRUCisvMS4xIDIwMSBPS0gNCitkZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvN2ZjNDUyMDA5NDkwMmNlMmM3NjBkNzBlYWFkNWI2NzRkMjgxNzMzNyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy83ZmM0NTIwMDk0OTAyY2UyYzc2MGQ3MGVhYWQ1YjY3NGQyODE3MzM3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYzQ4MWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvN2ZjNDUyMDA5NDkwMmNlMmM3NjBkNzBlYWFkNWI2NzRkMjgxNzMzNwpAQCAtMCwwICsxLDUgQEAKK0pIVFRQLzEuR0VUIC8gSFRUUC8xLjAKKzEgMjAwIE9LSA0KKworCit0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzgxZjU5YTEyYjQ1OGVjMzYwNDAzNWNiOTYyMTY1YzYwNGQxMzU1ZTYgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvODFmNTlhMTJiNDU4ZWMzNjA0MDM1Y2I5NjIxNjVjNjA0ZDEzNTVlNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDIyM2NjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzgxZjU5YTEyYjQ1OGVjMzYwNDAzNWNiOTYyMTY1YzYwNGQxMzU1ZTYKQEAgLTAsMCArMSwyIEBACitIVFRQLzEuMSA4cCkgKU1LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy84ZjQxYzUwZTg4ZWU4YzE3ZWNhZDNkNDFkNjNkMzhmYjEyYWNhMGI5IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzhmNDFjNTBlODhlZThjMTdlY2FkM2Q0MWQ2M2QzOGZiMTJhY2EwYjkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTllMmM0OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy84ZjQxYzUwZTg4ZWU4YzE3ZWNhZDNkNDFkNjNkMzhmYjEyYWNhMGI5CkBAIC0wLDAgKzEsNCBAQAorSFRUUC8xLjEgMjAwIE9LSA0KK3RIVEhUVFAvMS4gMjBUUC8wMS4wMjAoOiBPZXMsSDAgT0tIDQorDQordHRlc2VzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzk3YzE2ZGU3ZmUzYzM5MGEyZTZjMDlmZjVjMjhmMTdkNWM2NzU0MmMgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvOTdjMTZkZTdmZTNjMzkwYTJlNmMwOWZmNWMyOGYxN2Q1YzY3NTQyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzYyNTNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzk3YzE2ZGU3ZmUzYzM5MGEyZTZjMDlmZjVjMjhmMTdkNWM2NzU0MmMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzk3ZTQ0OTlkNDUwYzk1NjYwZGU4Njc0N2Y1MjdlNjcwZjIwMTI1NDggYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvOTdlNDQ5OWQ0NTBjOTU2NjBkZTg2NzQ3ZjUyN2U2NzBmMjAxMjU0OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTkyN2ZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzk3ZTQ0OTlkNDUwYzk1NjYwZGU4Njc0N2Y1MjdlNjcwZjIwMTI1NDgKQEAgLTAsMCArMSwzIEBACitIVEhIVFRgVFQKKy8xLjEgMjAxIFAqL09LSA0KK2RlczEuMSAyVApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy85YTk5Njg1NzE5NmUwOTk4YTEyNzg5OTRhOWJhYjNkMzU1MjZlN2YxIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzlhOTk2ODU3MTk2ZTA5OThhMTI3ODk5NGE5YmFiM2QzNTUyNmU3ZjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViMmMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy85YTk5Njg1NzE5NmUwOTk4YTEyNzg5OTRhOWJhYjNkMzU1MjZlN2YxCkBAIC0wLDAgKzEsMiBAQAorQFRUUC8xLjF5oDAwMv9PS0gNCit2ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvOWI3ZTAwMDQ5ZWMzNTZlY2Q4NGIxNzQ3ZTRlMTk0MTE0MDEzOWFlOCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy85YjdlMDAwNDllYzM1NmVjZDg0YjE3NDdlNGUxOTQxMTQwMTM5YWU4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5M2I5YTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvOWI3ZTAwMDQ5ZWMzNTZlY2Q4NGIxNzQ3ZTRlMTk0MTE0MDEzOWFlOApAQCAtMCwwICsxLDMgQEAKK4RIVFQvMjEuIDIwMCBIVFRQLzEuMSBIVCFUUC8xT0tILjFIVFRQIDIwMCBPS0gNCit0SFQvOi84MCBPS0gNCisxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzlmMGMzOGVjNDU1Y2MzNjMzNjliMzY3NGEyZDMyYmMyMWMyMDZkZTEgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvOWYwYzM4ZWM0NTVjYzM2MzM2OWIzNjc0YTJkMzJiYzIxYzIwNmRlMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWEwN2RjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzLzlmMGMzOGVjNDU1Y2MzNjMzNjliMzY3NGEyZDMyYmMyMWMyMDZkZTEKQEAgLTAsMCArMSw1IEBACitKSFRUUC8xPkdFVCAvIEhUVFAvMi4wCisxIDIwMCBPS0gNCisKKwordApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9hMWRjN2JjMjM1ZTQ2ZWIyMWQ5MTA4NGQ3YjUyZDVmZjlmNDVkZjg1IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2ExZGM3YmMyMzVlNDZlYjIxZDkxMDg0ZDdiNTJkNWZmOWY0NWRmODUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5NWJhYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9hMWRjN2JjMjM1ZTQ2ZWIyMWQ5MTA4NGQ3YjUyZDVmZjlmNDVkZjg1CkBAIC0wLDAgKzEsMyBAQAorhEhUVC8yMS4gMjAwIEhUVFAvMS4xIEhUIVRQLzFPS0guMUhUVFAgMjAwIE9LSA0KK3RIVC8vODApIE9LSA0KKzEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvYWEzYmJiODc2ZWFmYThhZDhjYTRmZjJlYWJjNmRkOTQzNDFkMjQ0MSBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9hYTNiYmI4NzZlYWZhOGFkOGNhNGZmMmVhYmM2ZGQ5NDM0MWQyNDQxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzQ0OWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvYWEzYmJiODc2ZWFmYThhZDhjYTRmZjJlYWJjNmRkOTQzNDFkMjQ0MQpAQCAtMCwwICsxLDIgQEAKK0hUVFAvMS4xIDgw7iBPSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9iMDRmZWE1YzA0MWM3MDdkYjBhZDljMDlhODE2NzI1NTdiNTJjYzQ3IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2IwNGZlYTVjMDQxYzcwN2RiMGFkOWMwOWE4MTY3MjU1N2I1MmNjNDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5MDViZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9iMDRmZWE1YzA0MWM3MDdkYjBhZDljMDlhODE2NzI1NTdiNTJjYzQ3CkBAIC0wLDAgKzEsMiBAQAorSkhUVFAvMS4xIDIwMCBPS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvYzRhY2ZmOGFhMmZmODg2ZjM1NDM5ZjcyNjI1ZDA1MDAyOTkwYzk0MCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9jNGFjZmY4YWEyZmY4ODZmMzU0MzlmNzI2MjVkMDUwMDI5OTBjOTQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MzlkOWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvYzRhY2ZmOGFhMmZmODg2ZjM1NDM5ZjcyNjI1ZDA1MDAyOTkwYzk0MApAQCAtMCwwICsxLDQgQEAKK0pIVFQvMjEuIDIwMCBIVFRQLzJPS0guMSAyMDAgT0tIDQordEhUVFAvMDEuMDIxICBPZXMsSA0KK3QNCit0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2M1NWNlOTk5NWIwMDJlODhhMTAyYWUyODkxYTcxZThiYWNiMzQ2YzggYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvYzU1Y2U5OTk1YjAwMmU4OGExMDJhZTI4OTFhNzFlOGJhY2IzNDZjOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzA0ZTRmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2M1NWNlOTk5NWIwMDJlODhhMTAyYWUyODkxYTcxZThiYWNiMzQ2YzgKQEAgLTAsMCArMSwyIEBACitIVFRQLzEuMSA3NjcpIE9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9jYTVhMGMwMGI4OTY5MzEwYWNiNzNkMTVhZDBkMGM2MDJmMWJkMGMyIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2NhNWEwYzAwYjg5NjkzMTBhY2I3M2QxNWFkMGQwYzYwMmYxYmQwYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVjYmJjNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9jYTVhMGMwMGI4OTY5MzEwYWNiNzNkMTVhZDBkMGM2MDJmMWJkMGMyCkBAIC0wLDAgKzEsMyBAQAorSEpIVEhIVFRgVFQKKy8xLjEgMjAxIFAqSEhUVAIvVDEvT0tIDQorZGVzMS4xIDIuMVQgMjBUMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9jY2U3MzRmMWIyNjNkZTY5OTRmNzk1MGUwZGY3YmYwYzgxNDQ5ZjcwIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2NjZTczNGYxYjI2M2RlNjk5NGY3OTUwZTBkZjdiZjBjODE0NDlmNzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlYTA5YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9jY2U3MzRmMWIyNjNkZTY5OTRmNzk1MGUwZGY3YmYwYzgxNDQ5ZjcwCkBAIC0wLDAgKzEsMyBAQAorSkhUVC8yMS4gMjAwIEhUVFBIVFRQLzEuMSA4MO4gT0gvMU9LSC4wIDIwMCBPS0gNCit0SFRUUC8wDQordGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZDRjM2U0Y2Y1ZDAzNTU5NjQzM2MzMGVhYWJiZDJiMjkyNWY0YjQ1MyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9kNGMzZTRjZjVkMDM1NTk2NDMzYzMwZWFhYmJkMmIyOTI1ZjRiNDUzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMzNkODEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZDRjM2U0Y2Y1ZDAzNTU5NjQzM2MzMGVhYWJiZDJiMjkyNWY0YjQ1MwpAQCAtMCwwICsxLDMgQEAKK0hUVFAvMS4xIDIwMCBPS0gNCisgSFRUUC8wMS4wMjEgOiBPZXMsSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9kNTFmN2ZjYzA4OWYyNjljN2FmZWNhYWNhNTE5NjZiYWI1ZmRlNjI5IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2Q1MWY3ZmNjMDg5ZjI2OWM3YWZlY2FhY2E1MTk2NmJhYjVmZGU2MjkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgxYTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9kNTFmN2ZjYzA4OWYyNjljN2FmZWNhYWNhNTE5NjZiYWI1ZmRlNjI5CkBAIC0wLDAgKzEsMiBAQAorz0hUVFCJLzEuMjAwOk9LSA0KK3RlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9kOTM2ZGFkNzFjMTI5Y2Y2NTkwOTdkYzNkYjY0NTUwYzRkZDQ2N2Y0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2Q5MzZkYWQ3MWMxMjljZjY1OTA5N2RjM2RiNjQ1NTBjNGRkNDY3ZjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NmOTE4NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9kOTM2ZGFkNzFjMTI5Y2Y2NTkwOTdkYzNkYjY0NTUwYzRkZDQ2N2Y0CkBAIC0wLDAgKzEsMiBAQAorSFRUUIkvMS4yMDAgT0tIDQordGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2UyNzViMDQ2NmE4ZmI4ZDllMGUxNTg1NmUzNDNkZGM3MTEyYWU2NmIgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZTI3NWIwNDY2YThmYjhkOWUwZTE1ODU2ZTM0M2RkYzcxMTJhZTY2YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmZjMDk1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2UyNzViMDQ2NmE4ZmI4ZDllMGUxNTg1NmUzNDNkZGM3MTEyYWU2NmIKQEAgLTAsMCArMSwzIEBACitKSFRULzIxLiAyMDAgSFRUUkhUVFAvMS4xIDDuIE9MLzFPS0guMCAyMDAgT0tIDQordEhUVFAvMA0KK3RlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2U1YzM2NGIyMDU4NTVhMjk5MWNlMDc0ODJhZWJiMmEzYTYxNDcwODkgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZTVjMzY0YjIwNTg1NWEyOTkxY2UwNzQ4MmFlYmIyYTNhNjE0NzA4OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGI1ZjYyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2U1YzM2NGIyMDU4NTVhMjk5MWNlMDc0ODJhZWJiMmEzYTYxNDcwODkKQEAgLTAsMCArMSwyIEBACitUVEhQiS8xLjIwMCBPS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZWUyMDc3ZTA4YzNjZmNjZDliZDgyYWRiNTc0YWM0ZmM3ZDQyOWFmYiBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9lZTIwNzdlMDhjM2NmY2NkOWJkODJhZGI1NzRhYzRmYzdkNDI5YWZiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YjM2YzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZWUyMDc3ZTA4YzNjZmNjZDliZDgyYWRiNTc0YWM0ZmM3ZDQyOWFmYgpAQCAtMCwwICsxLDIgQEAKK0lUSFRUVFBIVC8xMiCFMlMgSFRLUC8xLjEgNzY3KSBPS0gNCit0ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZmM1ZDRiOTExN2JhOWU4NzM4ODE3NGFlZTRmNDk3MGJkZmU4ZDA2NiBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9mYzVkNGI5MTE3YmE5ZTg3Mzg4MTc0YWVlNGY0OTcwYmRmZThkMDY2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZjFhM2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvZmM1ZDRiOTExN2JhOWU4NzM4ODE3NGFlZTRmNDk3MGJkZmU4ZDA2NgpAQCAtMCwwICsxIEBACitISApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9mZGViMmM3ZGFhOWU3NzA0ZjY3ZTE0MTEwNjM4NGU2ZGQwMDQyYzBiIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL2ZkZWIyYzdkYWE5ZTc3MDRmNjdlMTQxMTA2Mzg0ZTZkZDAwNDJjMGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2M2QzMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9mZGViMmM3ZGFhOWU3NzA0ZjY3ZTE0MTEwNjM4NGU2ZGQwMDQyYzBiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0MS50eHQgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVxdWVzdDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTc1MGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVxdWVzdDEudHh0CkBAIC0wLDAgKzEsMyBAQAorR0VUIC8gSFRUUC8xLjAKKworCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVxdWVzdDIudHh0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3JlcXVlc3QyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTdhMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3JlcXVlc3QyLnR4dApAQCAtMCwwICsxLDMgQEAKK0dFVCAvIEhUVFAvMS4wCitDb250ZW50LUxlbmd0aDogMTI4CisKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0My50eHQgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVxdWVzdDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTc1YmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVxdWVzdDMudHh0CkBAIC0wLDAgKzEsMyBAQAorR0VUIC8gSFRUUC8xLjEKK0NvbnRlbnQtTGVuZ3RoOiAxMjgKKwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3JlcXVlc3Q0LnR4dCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkzZjZmYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0NC50eHQKQEAgLTAsMCArMSwzIEBACitHRVQgL2Zvby5iYXIgSFRUUC8xLjEKK0NvbnRlbnQtTGVuZ3RoOiAxMjgKKwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3JlcXVlc3Q1LnR4dCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmYjI0NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXF1ZXN0NS50eHQKQEAgLTAsMCArMSwzIEBACitQT1NUIC8gSFRUUC8xLjAKKworYXNkbGZramFkc2ZsO2FrZGpzZmFzZGYKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTEudHh0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Jlc3BvbnNlMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3MTM5OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTEudHh0CkBAIC0wLDAgKzEsNCBAQAorSFRUUC8xLjEgMjAwIE9LCit0ZXN0OiBoZWxsbworCithYmNkCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVzcG9uc2UyLnR4dCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiODY0NDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVzcG9uc2UyLnR4dApAQCAtMCwwICsxLDQgQEAKK0hUVFAvMC45IDIwMCBPSwordGVzdDogaGVsbG8KKworYWJjZApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Jlc3BvbnNlMy50eHQgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVzcG9uc2UzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTViMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Jlc3BvbnNlMy50eHQKQEAgLTAsMCArMSw1IEBACitIVFRQLzAuOSAyMDAgT0sKK3Rlc3Q6IGhlbGxvCitjb250ZW50LWxlbmd0aDogMTAyMzg0Mzk4CisKK2FiY2QKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTQudHh0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Jlc3BvbnNlNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIzN2IwMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTQudHh0CkBAIC0wLDAgKzEsMiBAQAorSFRUUC8xLjEgNDA0IE5vdCBGb3VuZAorCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVzcG9uc2U1LnR4dCBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MzA1OTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvcmVzcG9uc2U1LnR4dApAQCAtMCwwICsxLDUgQEAKK0hUVFAvMC45IDIwMCBPSwordGVzdDogaGVsbG8KK2NvbnRlbnQtbGVuZ3RoOiA0CisKK2FiY2QKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTYudHh0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Jlc3BvbnNlNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3YjZlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9odHRwL2NvcnB1cy9yZXNwb25zZTYudHh0CkBAIC0wLDAgKzEsNSBAQAorSFRUUC8wLjkgMjAwIE9LCit0ZXN0OiBoZWxsbworY29udGVudC1sZW5ndGg6IDYKKworYWJjZApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Rvb2xvbmcudHh0IGIvdGVzdC9jb3JlL2h0dHAvY29ycHVzL3Rvb2xvbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhOWQ1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9jb3JwdXMvdG9vbG9uZy50eHQKQEAgLTAsMCArMSwyIEBACitHRVQgLyBIVFRQLzEuMQorYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvaHR0cC9mdXp6ZXIuYyBiL3Rlc3QvY29yZS9odHRwL2Z1enplci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjg0NmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvaHR0cC9mdXp6ZXIuYwpAQCAtMCwwICsxLDUwIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5oIgorCitpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBncnBjX2h0dHBfcGFyc2VyIHBhcnNlcjsKKyAgZ3JwY19odHRwX3BhcnNlcl9pbml0KCZwYXJzZXIpOworICBncHJfc2xpY2Ugc2xpY2UgPSBncHJfc2xpY2VfZnJvbV9jb3BpZWRfYnVmZmVyKChjb25zdCBjaGFyICopZGF0YSwgc2l6ZSk7CisgIGdycGNfaHR0cF9wYXJzZXJfcGFyc2UoJnBhcnNlciwgc2xpY2UpOworICBncnBjX2h0dHBfcGFyc2VyX2VvZigmcGFyc2VyKTsKKyAgZ3ByX3NsaWNlX3VucmVmKHNsaWNlKTsKKyAgZ3JwY19odHRwX3BhcnNlcl9kZXN0cm95KCZwYXJzZXIpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9odHRwL3BhcnNlcl90ZXN0LmMgYi90ZXN0L2NvcmUvaHR0cC9wYXJzZXJfdGVzdC5jCmluZGV4IGVlYjRkZTcuLjE0OTkxOWQgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9odHRwL3BhcnNlcl90ZXN0LmMKKysrIGIvdGVzdC9jb3JlL2h0dHAvcGFyc2VyX3Rlc3QuYwpAQCAtMTc4LDYgKzE3OCwzNyBAQAogICBncHJfZnJlZShzbGljZXMpOwogfQogCitzdGF0aWMgY29uc3QgdWludDhfdCBmYWlsZWRfdGVzdDFbXSA9IHsKKyAgICAweDllLCAweDQ4LCAweDU0LCAweDU0LCAweDUwLCAweDJmLCAweDMxLCAweDJlLCAweDMwLCAweDRhLAorICAgIDB4NDgsIDB4NTQsIDB4NTQsIDB4MzAsIDB4MzIsIDB4MTYsIDB4YSwgIDB4MmYsIDB4NDgsIDB4MjAsCisgICAgMHgzMSwgMHgyZSwgMHgzMSwgMHgyMCwgMHgzMiwgMHgzMCwgMHgzMSwgMHg1NCwgMHg1NCwgMHhiOSwKKyAgICAweDMyLCAweDMxLCAweDJlLCAweDIwLCAweDMyLCAweDMwLCAweDIwLAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICBjb25zdCB1aW50OF90ICpkYXRhOworICBzaXplX3QgbGVuZ3RoOworfSBmYWlsZWRfdGVzdDsKKworI2RlZmluZSBGQUlMRURfVEVTVChuYW1lKSBcCisgIHsgI25hbWUsIG5hbWUsIHNpemVvZihuYW1lKSB9CisKK2ZhaWxlZF90ZXN0IGZhaWxlZF90ZXN0c1tdID0geworICAgIEZBSUxFRF9URVNUKGZhaWxlZF90ZXN0MSksCit9OworCitzdGF0aWMgdm9pZCB0ZXN0X2RvZXNudF9jcmFzaChmYWlsZWRfdGVzdCB0KSB7CisgIGdwcl9sb2coR1BSX0RFQlVHLCAiUnVuIHByZXZpb3VzbHkgZmFpbGVkIHRlc3Q6ICVzIiwgdC5uYW1lKTsKKyAgZ3JwY19odHRwX3BhcnNlciBwOworICBncnBjX2h0dHBfcGFyc2VyX2luaXQoJnApOworICBncHJfc2xpY2Ugc2xpY2UgPQorICAgICAgZ3ByX3NsaWNlX2Zyb21fY29waWVkX2J1ZmZlcigoY29uc3QgY2hhciAqKXQuZGF0YSwgdC5sZW5ndGgpOworICBncnBjX2h0dHBfcGFyc2VyX3BhcnNlKCZwLCBzbGljZSk7CisgIGdwcl9zbGljZV91bnJlZihzbGljZSk7CisgIGdycGNfaHR0cF9wYXJzZXJfZGVzdHJveSgmcCk7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICBzaXplX3QgaTsKICAgY29uc3QgZ3JwY19zbGljZV9zcGxpdF9tb2RlIHNwbGl0X21vZGVzW10gPSB7R1JQQ19TTElDRV9TUExJVF9JREVOVElUWSwKQEAgLTE4Niw2ICsyMTcsMTAgQEAKIAogICBncnBjX3Rlc3RfaW5pdChhcmdjLCBhcmd2KTsKIAorICBmb3IgKGkgPSAwOyBpIDwgR1BSX0FSUkFZX1NJWkUoZmFpbGVkX3Rlc3RzKTsgaSsrKSB7CisgICAgdGVzdF9kb2VzbnRfY3Jhc2goZmFpbGVkX3Rlc3RzW2ldKTsKKyAgfQorCiAgIGZvciAoaSA9IDA7IGkgPCBHUFJfQVJSQVlfU0laRShzcGxpdF9tb2Rlcyk7IGkrKykgewogICAgIHRlc3Rfc3VjY2VlZHMoc3BsaXRfbW9kZXNbaV0sCiAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjAgMjAwIE9LXHJcbiIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wMDZkNTUyZTk1MmM0MmI1MzQwYmFhZWI4NWMyY2I4MGM4MWU3OGRkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzAwNmQ1NTJlOTUyYzQyYjUzNDBiYWFlYjg1YzJjYjgwYzgxZTc4ZGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYyMDY0YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wMDZkNTUyZTk1MmM0MmI1MzQwYmFhZWI4NWMyY2I4MGM4MWU3OGRkCkBAIC0wLDAgKzEgQEAKKzFlgTkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDA3ZWI5ODVjNDRiNjA4OWEzNDk5NWE3ZDllYmYzNDlmMWMyYmYxOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wMDdlYjk4NWM0NGI2MDg5YTM0OTk1YTdkOWViZjM0OWYxYzJiZjE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZmZhNTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDA3ZWI5ODVjNDRiNjA4OWEzNDk5NWE3ZDllYmYzNDlmMWMyYmYxOApAQCAtMCwwICsxIEBACit7fTNbClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzAzYjc0YTA4ZjIzNzM0NjkxNTEyY2IxMmQwYjM4ZDE4OWE4ZGY5MDUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDNiNzRhMDhmMjM3MzQ2OTE1MTJjYjEyZDBiMzhkMTg5YThkZjkwNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmZlM2YzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzAzYjc0YTA4ZjIzNzM0NjkxNTEyY2IxMmQwYjM4ZDE4OWE4ZGY5MDUKQEAgLTAsMCArMSBAQAorMC42OTkxIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wNDk1NjkzYWYwNzMyNWZiMGQ1MmVhZmQyZDRjNGQ4MDJjNjQ1N2M2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzA0OTU2OTNhZjA3MzI1ZmIwZDUyZWFmZDJkNGM0ZDgwMmM2NDU3YzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3NTJlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wNDk1NjkzYWYwNzMyNWZiMGQ1MmVhZmQyZDRjNGQ4MDJjNjQ1N2M2CkBAIC0wLDAgKzEgQEAKKzAuODMyODIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDU0NTRhYjAxNWNmNzRlOWMzZTg1NzRkOTk1NTE3ZTA1ZGQ1Njc1MSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wNTQ1NGFiMDE1Y2Y3NGU5YzNlODU3NGQ5OTU1MTdlMDVkZDU2NzUxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzdjNTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDU0NTRhYjAxNWNmNzRlOWMzZTg1NzRkOTk1NTE3ZTA1ZGQ1Njc1MQpAQCAtMCwwICsxIEBACisyMS41OTW7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzA3MTZkOTcwOGQzMjFmZmI2YTAwODE4NjE0Nzc5ZTc3OTkyNTM2NWMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMDcxNmQ5NzA4ZDMyMWZmYjZhMDA4MTg2MTQ3NzllNzc5OTI1MzY1YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTJhZmQzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzA3MTZkOTcwOGQzMjFmZmI2YTAwODE4NjE0Nzc5ZTc3OTkyNTM2NWMKQEAgLTAsMCArMSBAQAorMTcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGE5YjM1MjJhOGU3MTFlM2JkNTNlMmMyZWI5ZDI4YjM0YTAwM2FjYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYTliMzUyMmE4ZTcxMWUzYmQ1M2UyYzJlYjlkMjhiMzRhMDAzYWNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNDllYjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGE5YjM1MjJhOGU3MTFlM2JkNTNlMmMyZWI5ZDI4YjM0YTAwM2FjYwpAQCAtMCwwICsxIEBACitbMi4xZQkiiMOBNzk2O10zKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYWRlN2MyY2Y5N2Y3NWQwMDk5NzVmNGQ3MjBkMWZhNmMxOWY0ODk3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzBhZGU3YzJjZjk3Zjc1ZDAwOTk3NWY0ZDcyMGQxZmE2YzE5ZjQ4OTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjExYzgyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYWRlN2MyY2Y5N2Y3NWQwMDk5NzVmNGQ3MjBkMWZhNmMxOWY0ODk3CkBAIC0wLDAgKzEgQEAKKzkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGIxZmNmMGFjMDdlMWU1MGNmZTI3MzE2YzdlMWM4Y2M5OTdmMTMxOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYjFmY2YwYWMwN2UxZTUwY2ZlMjczMTZjN2UxYzhjYzk5N2YxMzE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NmQ2MWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGIxZmNmMGFjMDdlMWU1MGNmZTI3MzE2YzdlMWM4Y2M5OTdmMTMxOApAQCAtMCwwICsxIEBACit7Iic1RTg4NSwhXHUwNjVFewpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYmMxMzU0ODM1NmQwODAwOTcwM2QzNWU5YzhkNzQzOTczNjdiZGZiIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzBiYzEzNTQ4MzU2ZDA4MDA5NzAzZDM1ZTljOGQ3NDM5NzM2N2JkZmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyMzkxNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wYmMxMzU0ODM1NmQwODAwOTcwM2QzNWU5YzhkNzQzOTczNjdiZGZiCkBAIC0wLDAgKzEgQEAKK251LCo6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzBlYTlhMTYwYzU3ZjJjNzA1ZGNlMDM3MTk2ZTM2MGJmOWJlNzM5YzUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGVhOWExNjBjNTdmMmM3MDVkY2UwMzcxOTZlMzYwYmY5YmU3MzljNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTI4OTNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzBlYTlhMTYwYzU3ZjJjNzA1ZGNlMDM3MTk2ZTM2MGJmOWJlNzM5YzUKQEAgLTAsMCArMSBAQAorZicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGYyMGQ5YzQ2OTkxYzBlOTc0MTllMmNjYTA3YzczODlmMWQ2YmRmOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wZjIwZDljNDY5OTFjMGU5NzQxOWUyY2NhMDdjNzM4OWYxZDZiZGY4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YTZmYjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMGYyMGQ5YzQ2OTkxYzBlOTc0MTllMmNjYTA3YzczODlmMWQ2YmRmOApAQCAtMCwwICsxIEBACisxZQkiiMOBOQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wZjJlMmU2MzQ2ZjcwYzQxOTMwMGI2NjEyNTE3NTRkNTBmN2NhOGVhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzBmMmUyZTYzNDZmNzBjNDE5MzAwYjY2MTI1MTc1NGQ1MGY3Y2E4ZWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQyOWY1MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8wZjJlMmU2MzQ2ZjcwYzQxOTMwMGI2NjEyNTE3NTRkNTBmN2NhOGVhCkBAIC0wLDAgKzEgQEAKK1syLjE5ODIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTA4YjMxMGZhY2MxYTE5MzgzM2ZjMjk3MWZkODMwODFmNzc1ZWEwYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMDhiMzEwZmFjYzFhMTkzODMzZmMyOTcxZmQ4MzA4MWY3NzVlYTBjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YmU0NTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTA4YjMxMGZhY2MxYTE5MzgzM2ZjMjk3MWZkODMwODFmNzc1ZWEwYwpAQCAtMCwwICsxIEBACitmYWxzZSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTA4ZTViY2Q2OWIxOWFkMGRmNzQzNjQxMDg1MTYzYjg0ZjM3NmZlOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMDhlNWJjZDY5YjE5YWQwZGY3NDM2NDEwODUxNjNiODRmMzc2ZmU4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NzNjYmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTA4ZTViY2Q2OWIxOWFkMGRmNzQzNjQxMDg1MTYzYjg0ZjM3NmZlOApAQCAtMCwwICsxLDIgQEAKK1t7CisiiMMiICKIwyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTBlM2VjZDU2MjQ0NjUwMjBmZGYwNjYyYTY3ZTBmMDg4NTUzNmNhZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMGUzZWNkNTYyNDQ2NTAyMGZkZjA2NjJhNjdlMGYwODg1NTM2Y2FlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzA2MDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTBlM2VjZDU2MjQ0NjUwMjBmZGYwNjYyYTY3ZTBmMDg4NTUzNmNhZQpAQCAtMCwwICsxIEBACit7IiI6MCwoIdMnKFwnIQ8pClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzExM2M4Yzk3Y2JiMGEyYjYxNzZkNzVlYWE5YWM5YmFhYTdjY2RkY2MgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTEzYzhjOTdjYmIwYTJiNjE3NmQ3NWVhYTlhYzliYWFhN2NjZGRjYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA0MDM0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzExM2M4Yzk3Y2JiMGEyYjYxNzZkNzVlYWE5YWM5YmFhYTdjY2RkY2MKQEAgLTAsMCArMSBAQAorMbkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTE0NzlkOTM2ZGQwMDY0MTBhNTk0NmI2MDgxYTk0ZDU3M2JmOGVmZCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMTQ3OWQ5MzZkZDAwNjQxMGE1OTQ2YjYwODFhOTRkNTczYmY4ZWZkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Y2Y3NDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTE0NzlkOTM2ZGQwMDY0MTBhNTk0NmI2MDgxYTk0ZDU3M2JmOGVmZApAQCAtMCwwICsxIEBACit0crk4MiAnQVxFNTc7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMWFhMDkxMTg5Yjc4ZDFjYzM1YzdmZjQ5MDdhYzE2YTczYWJhNTQ3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzExYWEwOTExODliNzhkMWNjMzVjN2ZmNDkwN2FjMTZhNzNhYmE1NDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4ODgyMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMWFhMDkxMTg5Yjc4ZDFjYzM1YzdmZjQ5MDdhYzE2YTczYWJhNTQ3CkBAIC0wLDAgKzEgQEAKK1s5MjgxLjI7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzEyMjc5MDdiMmVlNWE5NDkyYTg5MGJlZWQ1NTMzMmU0NTYwODM0YzggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTIyNzkwN2IyZWU1YTk0OTJhODkwYmVlZDU1MzMyZTQ1NjA4MzRjOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDM1MjcwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzEyMjc5MDdiMmVlNWE5NDkyYTg5MGJlZWQ1NTMzMmU0NTYwODM0YzgKQEAgLTAsMCArMSBAQAorMn01ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzEzNGQ2NTEzMDk0N2VjNjljZjhkZjg0ODM0MjRiNDVlOTljZjA0ZTMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTM0ZDY1MTMwOTQ3ZWM2OWNmOGRmODQ4MzQyNGI0NWU5OWNmMDRlMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjJhOWJlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzEzNGQ2NTEzMDk0N2VjNjljZjhkZjg0ODM0MjRiNDVlOTljZjA0ZTMKQEAgLTAsMCArMSBAQAorMC4yOTk1IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMzU4NDUwNWNhYTg5MmQ5NDk4MmE5NjhiYmM0MzkxZWJjZmUwZDA2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzEzNTg0NTA1Y2FhODkyZDk0OTgyYTk2OGJiYzQzOTFlYmNmZTBkMDYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiNjI4YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMzU4NDUwNWNhYTg5MmQ5NDk4MmE5NjhiYmM0MzkxZWJjZmUwZDA2CkBAIC0wLDAgKzEgQEAKK3siJywhXHVBPooKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTM3ZjU1NGVlMGY2YjkwM2FjYjgxYWI0ZTFmOThjMTFmZTkyYjAwOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xMzdmNTU0ZWUwZjZiOTAzYWNiODFhYjRlMWY5OGMxMWZlOTJiMDA4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MjMyYzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTM3ZjU1NGVlMGY2YjkwM2FjYjgxYWI0ZTFmOThjMTFmZTkyYjAwOApAQCAtMCwwICsxIEBACit7CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTQwMWVhMDNlYzc4YjhmMjBkYzdiZTk1MjU1NTAwNGQ3MTQ3ZjBmNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xNDAxZWEwM2VjNzhiOGYyMGRjN2JlOTUyNTU1MDA0ZDcxNDdmMGY1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NWZlMDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTQwMWVhMDNlYzc4YjhmMjBkYzdiZTk1MjU1NTAwNGQ3MTQ3ZjBmNQpAQCAtMCwwICsxIEBACisiiMN7KYghClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzE0MWQ0NWE1OWIwNzNhZWVjNDQ0M2NkN2JjZjIwZjc4MzNkZGJjOTUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTQxZDQ1YTU5YjA3M2FlZWM0NDQzY2Q3YmNmMjBmNzgzM2RkYmM5NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmU2OGU4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzE0MWQ0NWE1OWIwNzNhZWVjNDQ0M2NkN2JjZjIwZjc4MzNkZGJjOTUKQEAgLTAsMCArMSBAQAorIicnLCFcdTY1OEV7MTI4MDMxOjspOogpIcM1Kr4/J8qzsyEhKiHgKTohKuA6OikhOTpcdWRiRDg2JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xNWM5YzEyODRjMjdjODg5MzU1OWUxNWM5YjJhNTBjYmQ1YmJiNTZmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzE1YzljMTI4NGMyN2M4ODkzNTU5ZTE1YzliMmE1MGNiZDViYmI1NmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhOTU1NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xNWM5YzEyODRjMjdjODg5MzU1OWUxNWM5YjJhNTBjYmQ1YmJiNTZmCkBAIC0wLDAgKzEgQEAKK1syLCKIwyF7KSE6IiyIwwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xNWQxYTZjZGE0OGVmNTY5YjM2OGEwYzQ2Mjc0MzViYzJjODBhOTg4IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzE1ZDFhNmNkYTQ4ZWY1NjliMzY4YTBjNDYyNzQzNWJjMmM4MGE5ODgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxN2E5OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xNWQxYTZjZGE0OGVmNTY5YjM2OGEwYzQ2Mjc0MzViYzJjODBhOTg4CkBAIC0wLDAgKzEgQEAKKwkiiMMgIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xN2EyOWYyYWM2ZGY3NzQ1ODVkNzcxMzA5MWIyOTk3Mjk3MzgwMzBjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzE3YTI5ZjJhYzZkZjc3NDU4NWQ3NzEzMDkxYjI5OTcyOTczODAzMGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQwMmE2MDMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTdhMjlmMmFjNmRmNzc0NTg1ZDc3MTMwOTFiMjk5NzI5NzM4MDMwYwpAQCAtMCwwICsxIEBACitbEikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTdiODE1ZjFmNzJjYjY0NDgxYmM0MDI2M2U5MWNlMDYzMDQwZjczOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xN2I4MTVmMWY3MmNiNjQ0ODFiYzQwMjYzZTkxY2UwNjMwNDBmNzM5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjIxOGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTdiODE1ZjFmNzJjYjY0NDgxYmM0MDI2M2U5MWNlMDYzMDQwZjczOQpAQCAtMCwwICsxIEBACitbdHIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTgyZDU3NDAzZDJjOTczYTM5NDA1NTAxN2QzNWI3NjIxYWEwYWEwNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xODJkNTc0MDNkMmM5NzNhMzk0MDU1MDE3ZDM1Yjc2MjFhYTBhYTA1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OGY1NWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTgyZDU3NDAzZDJjOTczYTM5NDA1NTAxN2QzNWI3NjIxYWEwYWEwNQpAQCAtMCwwICsxIEBACitudWxsKjoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTkwZmJlMmRhNDQ4ZjZiZGVjMDcwNmM1MzAxYWQxMzM2M2FlM2FkOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xOTBmYmUyZGE0NDhmNmJkZWMwNzA2YzUzMDFhZDEzMzYzYWUzYWQ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MTQ0YzcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMTkwZmJlMmRhNDQ4ZjZiZGVjMDcwNmM1MzAxYWQxMzM2M2FlM2FkOQpAQCAtMCwwICsxIEBACisxZSsyMTg3gTU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xYjA0NWEyNGI4ZjFmMWZkNmU4MjM0ZDUwMTk5NTJlZTc3MTNhOGI3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFiMDQ1YTI0YjhmMWYxZmQ2ZTgyMzRkNTAxOTk1MmVlNzcxM2E4YjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhYzU0MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xYjA0NWEyNGI4ZjFmMWZkNmU4MjM0ZDUwMTk5NTJlZTc3MTNhOGI3CkBAIC0wLDAgKzEgQEAKK1w1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFiNjQ1Mzg5MjQ3M2E0NjdkMDczNzJkNDVlYjA1YWJjMjAzMTY0N2EgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMWI2NDUzODkyNDczYTQ2N2QwNzM3MmQ0NWViMDVhYmMyMDMxNjQ3YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjBkODdhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFiNjQ1Mzg5MjQ3M2E0NjdkMDczNzJkNDVlYjA1YWJjMjAzMTY0N2EKQEAgLTAsMCArMSBAQAorNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xYzY0NjNhYTJkYWJjYjRmYWRjOGU1NDQxZDhiNDE4NTM1ZTc2OGFmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFjNjQ2M2FhMmRhYmNiNGZhZGM4ZTU0NDFkOGI0MTg1MzVlNzY4YWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhMWIyNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xYzY0NjNhYTJkYWJjYjRmYWRjOGU1NDQxZDhiNDE4NTM1ZTc2OGFmCkBAIC0wLDAgKzEgQEAKKzB7OogpIcMiKr4/J8qzsyEhKiHgKTohKuA6OjpcdWRiRDiIKcMhOnshYCE/YL6+IT8nISptLCcpO4UnYApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZGVhOTViNTA1MGI3NjYyNzRlZjgwODQ3NTA1YzBlNGY0N2YzZWJiIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFkZWE5NWI1MDUwYjc2NjI3NGVmODA4NDc1MDVjMGU0ZjQ3ZjNlYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzN2Q3NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZGVhOTViNTA1MGI3NjYyNzRlZjgwODQ3NTA1YzBlNGY0N2YzZWJiCkBAIC0wLDAgKzEgQEAKKzEzZTGBOTA1NjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMWRmMDc1NGQzZTc5NzBiM2FmZTU0OWIxMWNhMTI4ZGNkMGQ0ODMyYiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZGYwNzU0ZDNlNzk3MGIzYWZlNTQ5YjExY2ExMjhkY2QwZDQ4MzJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkOWRmODgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMWRmMDc1NGQzZTc5NzBiM2FmZTU0OWIxMWNhMTI4ZGNkMGQ0ODMyYgpAQCAtMCwwICsxIEBACit7Iic1RTg4NSwhXHUwMDBFewpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZGZlMjY3YjYyM2IyMGNkOTdjNmU4OTY5ZDhiOTE0OGFmOWY0YTJjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFkZmUyNjdiNjIzYjIwY2Q5N2M2ZTg5NjlkOGI5MTQ4YWY5ZjRhMmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwMTBhMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZGZlMjY3YjYyM2IyMGNkOTdjNmU4OTY5ZDhiOTE0OGFmOWY0YTJjCkBAIC0wLDAgKzEgQEAKKzYoMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZTVjMmYzNjdmMDJlNDdhOGMxNjBjZGExY2Q5ZDkxZGVjYmFjNDQxIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzFlNWMyZjM2N2YwMmU0N2E4YzE2MGNkYTFjZDlkOTFkZWNiYWM0NDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyZjBiZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8xZTVjMmYzNjdmMDJlNDdhOGMxNjBjZGExY2Q5ZDkxZGVjYmFjNDQxCkBAIC0wLDAgKzEgQEAKK1sKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjBlZmRiYTEzY2E3YTM2NTdkMDcxYjNkNTY5OTdhYTNiMDgzMDY4YSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yMGVmZGJhMTNjYTdhMzY1N2QwNzFiM2Q1Njk5N2FhM2IwODMwNjhhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOTRiZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjBlZmRiYTEzY2E3YTM2NTdkMDcxYjNkNTY5OTdhYTNiMDgzMDY4YQpAQCAtMCwwICsxIEBACisiiMN7KSE6Kl0pwyE6eyIqvj++Oz9YyrOzJyEhygpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yMTVhOTU2MTY4Zjc3NDIxMjUzZTk0N2MyNDM2MzcxZDU2YWE3ZWExIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzIxNWE5NTYxNjhmNzc0MjEyNTNlOTQ3YzI0MzYzNzFkNTZhYTdlYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhZWVkZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yMTVhOTU2MTY4Zjc3NDIxMjUzZTk0N2MyNDM2MzcxZDU2YWE3ZWExCkBAIC0wLDAgKzEgQEAKK2ZhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzIxNzRiOWFiNmJmNGY3YzIxZmUxZWQ1Njk1N2YxNzc2ZWY2MTE5NTkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjE3NGI5YWI2YmY0ZjdjMjFmZTFlZDU2OTU3ZjE3NzZlZjYxMTk1OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjMyNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzIxNzRiOWFiNmJmNGY3YzIxZmUxZWQ1Njk1N2YxNzc2ZWY2MTE5NTkKQEAgLTAsMCArMSBAQAorMTNlNSEwMTiBNjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjMyZjRiY2VkNDA3NTU0NWJiMTQ2OWQ1YzIzNjBmMDgzZWM3ZWM2NSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yMzJmNGJjZWQ0MDc1NTQ1YmIxNDY5ZDVjMjM2MGYwODNlYzdlYzY1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZTRlYmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjMyZjRiY2VkNDA3NTU0NWJiMTQ2OWQ1YzIzNjBmMDgzZWM3ZWM2NQpAQCAtMCwwICsxIEBACit7IicsIVx1NjVFODg1MHsyMzEyOyk6iCkhwyIqvj8nyrOzISEqIeApOiEq4Do6OCE5Olx1ZGJEODYnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI2YWNhNDFlZThmMTk5ZTdjMGM3Y2YzMWQ5Nzk5NTI1NzFjNTNmYzkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjZhY2E0MWVlOGYxOTllN2MwYzdjZjMxZDk3OTk1MjU3MWM1M2ZjOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTZmZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI2YWNhNDFlZThmMTk5ZTdjMGM3Y2YzMWQ5Nzk5NTI1NzFjNTNmYzkKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI3ZDg0MjEwNjM2ZTllODM3ODZiZTllOWI5NmI2OWY3MGI3NDNiODYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjdkODQyMTA2MzZlOWU4Mzc4NmJlOWU5Yjk2YjY5ZjcwYjc0M2I4NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFiZDAwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI3ZDg0MjEwNjM2ZTllODM3ODZiZTllOWI5NmI2OWY3MGI3NDNiODYKQEAgLTAsMCArMSBAQAoreyInLCFcdSeKClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI3ZGE0MjZhNTg4MzY2MmQxOWVhNzhmMzA2ZDdhOTkyYmU1MmY4MjcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjdkYTQyNmE1ODgzNjYyZDE5ZWE3OGYzMDZkN2E5OTJiZTUyZjgyNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTczNzNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI3ZGE0MjZhNTg4MzY2MmQxOWVhNzhmMzA2ZDdhOTkyYmU1MmY4MjcKQEAgLTAsMCArMSwyIEBACisyDQorUDL3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI5NmRjZGE2ZjdlNjk3OWU2OGRkZWY3Y2JjMTIwNmEzNTUwODRhZDMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjk2ZGNkYTZmN2U2OTc5ZTY4ZGRlZjdjYmMxMjA2YTM1NTA4NGFkMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTEwMTg1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzI5NmRjZGE2ZjdlNjk3OWU2OGRkZWY3Y2JjMTIwNmEzNTUwODRhZDMKQEAgLTAsMCArMSBAQAorLIjDIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjliMDhjMDNjYTVhNjg1MWZhNDYwNGE5ODRjYjdmZjQ0NDMzYTVhNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yOWIwOGMwM2NhNWE2ODUxZmE0NjA0YTk4NGNiN2ZmNDQ0MzNhNWE1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZWM2YzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMjliMDhjMDNjYTVhNjg1MWZhNDYwNGE5ODRjYjdmZjQ0NDMzYTVhNQpAQCAtMCwwICsxIEBACiszXTUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmEzZDk2NGVjNDUyN2FkOWYwMjEyOWZjYmYwODdiNjdhNmVhNjQ0NCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yYTNkOTY0ZWM0NTI3YWQ5ZjAyMTI5ZmNiZjA4N2I2N2E2ZWE2NDQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZTcyM2YKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmEzZDk2NGVjNDUyN2FkOWYwMjEyOWZjYmYwODdiNjdhNmVhNjQ0NApAQCAtMCwwICsxIEBACistdzknwTYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmIwNDk3NDE0OTgxNWIxNDNhZmIxN2FmNDM4OGQ3NTEyMTdlNTRlYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yYjA0OTc0MTQ5ODE1YjE0M2FmYjE3YWY0Mzg4ZDc1MTIxN2U1NGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MGZiNTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmIwNDk3NDE0OTgxNWIxNDNhZmIxN2FmNDM4OGQ3NTEyMTdlNTRlYwpAQCAtMCwwICsxIEBACis4MzJFNDY7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yYjNiMWFkOTUyZTNhY2I1NjZlMzJhODRlMmQ1MDNhY2RlMTNlYjUzIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJiM2IxYWQ5NTJlM2FjYjU2NmUzMmE4NGUyZDUwM2FjZGUxM2ViNTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY1ZTJkYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yYjNiMWFkOTUyZTNhY2I1NjZlMzJhODRlMmQ1MDNhY2RlMTNlYjUzCkBAIC0wLDAgKzEgQEAKKzMxZTikNYE2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yY2MzMDFhNmVkN2YwMWUyY2QzMzlmMDJiZDBmZGEyMGMyMjdhMTdlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJjYzMwMWE2ZWQ3ZjAxZTJjZDMzOWYwMmJkMGZkYTIwYzIyN2ExN2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ1N2ZkOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yY2MzMDFhNmVkN2YwMWUyY2QzMzlmMDJiZDBmZGEyMGMyMjdhMTdlCkBAIC0wLDAgKzEgQEAKKzgyNUUxMzJ9KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZDNkNWI5Mjc1NTUzNDMwYjRjZmE2ODExNDA5OTEyMGFkNzgwOWVlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJkM2Q1YjkyNzU1NTM0MzBiNGNmYTY4MTE0MDk5MTIwYWQ3ODA5ZWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3ZTNmNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZDNkNWI5Mjc1NTUzNDMwYjRjZmE2ODExNDA5OTEyMGFkNzgwOWVlCkBAIC0wLDAgKzEgQEAKK1s0KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZDVkYmY0MDNlMGMxMmUyZmUyMWIwNGNhM2RhZmYxNzFjMDI4YWI3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJkNWRiZjQwM2UwYzEyZTJmZTIxYjA0Y2EzZGFmZjE3MWMwMjhhYjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiYmRmOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZDVkYmY0MDNlMGMxMmUyZmUyMWIwNGNhM2RhZmYxNzFjMDI4YWI3CkBAIC0wLDAgKzEgQEAKKyIiOTE5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJkN2M3NjliZWQ2MjAwNDI3MDAzNGI5NzZiMWQ5NDBhNTY4NjEwNmIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmQ3Yzc2OWJlZDYyMDA0MjcwMDM0Yjk3NmIxZDk0MGE1Njg2MTA2YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTJiNDMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJkN2M3NjliZWQ2MjAwNDI3MDAzNGI5NzZiMWQ5NDBhNTY4NjEwNmIKQEAgLTAsMCArMSBAQAoreyInLCFcdTY1RTg4NTB7MjMxMjspOimIISo/J77K0bOzISGqIcApOioh4Do6OCE5Olx1ZGJENlxcJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZGIxMjAyMzFlZWExMmQ5Y2RjNmEwMGYzMDgzOWIzY2VmMjA0NmJlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJkYjEyMDIzMWVlYTEyZDljZGM2YTAwZjMwODM5YjNjZWYyMDQ2YmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNmYjZlOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZGIxMjAyMzFlZWExMmQ5Y2RjNmEwMGYzMDgzOWIzY2VmMjA0NmJlCkBAIC0wLDAgKzEgQEAKKzAuMCAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmRiNjEwZTFhMjMwNDA5YTIwNWNmMjJmYmFkMzM0OGE1NGNiZTcwMyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZGI2MTBlMWEyMzA0MDlhMjA1Y2YyMmZiYWQzMzQ4YTU0Y2JlNzAzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDFkOGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmRiNjEwZTFhMjMwNDA5YTIwNWNmMjJmYmFkMzM0OGE1NGNiZTcwMwpAQCAtMCwwICsxIEBACitmYeUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmRmMWRkMmUyZjVkNTdlN2Q5ZDRlNjBhNzU2YTg2ZTYwMzU3MzIyNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZGYxZGQyZTJmNWQ1N2U3ZDlkNGU2MGE3NTZhODZlNjAzNTczMjI1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGY0MDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmRmMWRkMmUyZjVkNTdlN2Q5ZDRlNjBhNzU2YTg2ZTYwMzU3MzIyNQpAQCAtMCwwICsxIEBACiswLjkhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJlMzJmYWFjZDNlYTQ0NjFlYzdhYWNlMjk3YjRiZTY5MDRkOWEzODkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmUzMmZhYWNkM2VhNDQ2MWVjN2FhY2UyOTdiNGJlNjkwNGQ5YTM4OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMyM2MyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzJlMzJmYWFjZDNlYTQ0NjFlYzdhYWNlMjk3YjRiZTY5MDRkOWEzODkKQEAgLTAsMCArMSBAQAorW1siiMN7KSE6Kr47PyfKs7MhISoh4Ck6ISrgOjo6XHUxLnkyZGIpOIjDIYc6eyFgIS43Oz8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmU3NTZkOTE3NTlkN2U3NGY1Yjc3NmMwZDJhMTkzNTI5MmY1NzZkMSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZTc1NmQ5MTc1OWQ3ZTc0ZjViNzc2YzBkMmExOTM1MjkyZjU3NmQxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzN2Q5Y2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmU3NTZkOTE3NTlkN2U3NGY1Yjc3NmMwZDJhMTkzNTI5MmY1NzZkMQpAQCAtMCwwICsxIEBACisiiMN7KSE6Kr47PyfKs7MhISoh4Ck6ISrgOjpkXHI6OCkpiMMhWzEuhzk3OnsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmYwOWIyNGY5ZjVmYTBhZjJjMjliNjA0YjRiMGY5N2ZhNjE2Mzg5NSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8yZjA5YjI0ZjlmNWZhMGFmMmMyOWI2MDRiNGIwZjk3ZmE2MTYzODk1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZThlN2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMmYwOWIyNGY5ZjVmYTBhZjJjMjliNjA0YjRiMGY5N2ZhNjE2Mzg5NQpAQCAtMCwwICsxIEBACisgOYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzAyN2Q5MDEzNjExNjJiMzhmY2FmMTdmOTdiYTdkOTY0NmUzMjQ5NSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zMDI3ZDkwMTM2MTE2MmIzOGZjYWYxN2Y5N2JhN2Q5NjQ2ZTMyNDk1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNzJiNDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzAyN2Q5MDEzNjExNjJiMzhmY2FmMTdmOTdiYTdkOTY0NmUzMjQ5NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzBkNDQ2N2VjYjc3MWVjZTllZDZjNzhhNDZhZGMyOTkwNzJkOWRiOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zMGQ0NDY3ZWNiNzcxZWNlOWVkNmM3OGE0NmFkYzI5OTA3MmQ5ZGI5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzOTZmYmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzBkNDQ2N2VjYjc3MWVjZTllZDZjNzhhNDZhZGMyOTkwNzJkOWRiOQpAQCAtMCwwICsxIEBACis0LjkhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMxMTA0OGJiZjRjNGJiYWJjZGU3MzYwN2Q3ZTc2OTE1Y2VlOTMxMmUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzExMDQ4YmJmNGM0YmJhYmNkZTczNjA3ZDdlNzY5MTVjZWU5MzEyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ1M2U5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMxMTA0OGJiZjRjNGJiYWJjZGU3MzYwN2Q3ZTc2OTE1Y2VlOTMxMmUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMyM2I0ODk2OWQ3YmY5YTUwYWFjZjA5MTJmMWI1Y2IwMjExOWUyYWIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzIzYjQ4OTY5ZDdiZjlhNTBhYWNmMDkxMmYxYjVjYjAyMTE5ZTJhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTU4YTlhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMyM2I0ODk2OWQ3YmY5YTUwYWFjZjA5MTJmMWI1Y2IwMjExOWUyYWIKQEAgLTAsMCArMSBAQAorIicsIVx1NjVFODg1MHsyMzEyOyk6iCkhwyIqvj8nyrOzISEqIeApOiEq4Do6KSE5Olx1ZGJEODYnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMzNDAwYTI0MmJhZWI1YzQ2ZGRiMTU3OGMyOGIxMGQzMmE5YzNjZDMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzM0MDBhMjQyYmFlYjVjNDZkZGIxNTc4YzI4YjEwZDMyYTljM2NkMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmI5M2UzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzMzNDAwYTI0MmJhZWI1YzQ2ZGRiMTU3OGMyOGIxMGQzMmE5YzNjZDMKQEAgLTAsMCArMSBAQAoreyInLCFccnU2NUU4ODUwezIzMTI7KTqIKSHDIiq+eyInLCF1NjVFPyc4yjg1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM1NmExOTJiNzkxM2IwNGM1NDU3NGQxOGMyOGQ0NmU2Mzk1NDI4YWIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzU2YTE5MmI3OTEzYjA0YzU0NTc0ZDE4YzI4ZDQ2ZTYzOTU0MjhhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmE2MDUxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM1NmExOTJiNzkxM2IwNGM1NDU3NGQxOGMyOGQ0NmU2Mzk1NDI4YWIKQEAgLTAsMCArMSBAQAorMQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zNWU5OTVjMTA3YTcxY2FlYjgzM2JiM2I3OWY5ZjU0NzgxYjMzZmExIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM1ZTk5NWMxMDdhNzFjYWViODMzYmIzYjc5ZjlmNTQ3ODFiMzNmYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3YTk2MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zNWU5OTVjMTA3YTcxY2FlYjgzM2JiM2I3OWY5ZjU0NzgxYjMzZmExCkBAIC0wLDAgKzEgQEAKKzczClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM3Mzc2OWMxNWMxNDU0NzJjOGVjM2JkZGU4ZmM4NGU4NWVjNzkyMTEgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzczNzY5YzE1YzE0NTQ3MmM4ZWMzYmRkZThmYzg0ZTg1ZWM3OTIxMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjM0MDYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM3Mzc2OWMxNWMxNDU0NzJjOGVjM2JkZGU4ZmM4NGU4NWVjNzkyMTEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM3OTVkOTExOTcwYTFmZDg0MTZiOTM2NDkwNTFiNDE4OTQ4ZTNlZGYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzc5NWQ5MTE5NzBhMWZkODQxNmI5MzY0OTA1MWI0MTg5NDhlM2VkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGYzNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM3OTVkOTExOTcwYTFmZDg0MTZiOTM2NDkwNTFiNDE4OTQ4ZTNlZGYKQEAgLTAsMCArMSBAQAorW1syLjc2O10zKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zN2QzMzMzZTFlMmEzODRjM2JhMTRhNTI2ODJjYTI5ZjA2MWQxYWM3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM3ZDMzMzNlMWUyYTM4NGMzYmExNGE1MjY4MmNhMjlmMDYxZDFhYzcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM3ZTEzMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zN2QzMzMzZTFlMmEzODRjM2JhMTRhNTI2ODJjYTI5ZjA2MWQxYWM3CkBAIC0wLDAgKzEgQEAKK3siISghXHUnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM4Y2QzM2JiMzkwNDQ1ZTM1YjY1MTQwMjRiMTMxNzkwMmNiN2JhMWIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvMzhjZDMzYmIzOTA0NDVlMzViNjUxNDAyNGIxMzE3OTAyY2I3YmExYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMxMmU1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzM4Y2QzM2JiMzkwNDQ1ZTM1YjY1MTQwMjRiMTMxNzkwMmNiN2JhMWIKQEAgLTAsMCArMSBAQAorIojDIXspIToiLIjDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNhOTBjNjg4ZjQ0NDQ3YTc4ZWZjMTExODcyYjA2MWEwMDFmMDRkMmIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2E5MGM2ODhmNDQ0NDdhNzhlZmMxMTE4NzJiMDYxYTAwMWYwNGQyYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjcyOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNhOTBjNjg4ZjQ0NDQ3YTc4ZWZjMTExODcyYjA2MWEwMDFmMDRkMmIKQEAgLTAsMCArMSBAQAorMTgxZTMygTU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zYjFlN2I1NmFkNDQ2NWQxMjZlYTk5NGQzNGQyMGRjZWNiYjNhNTBhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNiMWU3YjU2YWQ0NDY1ZDEyNmVhOTk0ZDM0ZDIwZGNlY2JiM2E1MGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyOWUwNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zYjFlN2I1NmFkNDQ2NWQxMjZlYTk5NGQzNGQyMGRjZWNiYjNhNTBhCkBAIC0wLDAgKzEgQEAKKzVFODgyMzkyKTspClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNjMGE4ZDZjMzFlZGFjYTEyNDcxNDYyNGViNjRjYjhlYzBjYmFiMTMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2MwYThkNmMzMWVkYWNhMTI0NzE0NjI0ZWI2NGNiOGVjMGNiYWIxMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmRiOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNjMGE4ZDZjMzFlZGFjYTEyNDcxNDYyNGViNjRjYjhlYzBjYmFiMTMKQEAgLTAsMCArMSBAQAoreyIqXTrDIXspvj8nyrOzISEqIeApOiEq4Do6Olx1ZGJEOIgpIXvDOnshYCE/YL6+IiihClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNjYzBjOWFkY2YzODgyZjAxNDA5YzcwMzkxYzNjZDMwNTg4ZWYzNGMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2NjMGM5YWRjZjM4ODJmMDE0MDljNzAzOTFjM2NkMzA1ODhlZjM0YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTYzYzhjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNjYzBjOWFkY2YzODgyZjAxNDA5YzcwMzkxYzNjZDMwNTg4ZWYzNGMKQEAgLTAsMCArMSBAQAorW3sKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2QwZDk4NzhiODEyY2U0NjM0OTYyYmEzZGQ3NTVjMDk1MzU1MDIwMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zZDBkOTg3OGI4MTJjZTQ2MzQ5NjJiYTNkZDc1NWMwOTUzNTUwMjAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OTNmMWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2QwZDk4NzhiODEyY2U0NjM0OTYyYmEzZGQ3NTVjMDk1MzU1MDIwMApAQCAtMCwwICsxIEBACitbdHJ1WygwLjE5MztdNCoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2Q0ZDU4ODdhMmZjZGM1ZGQzNjBiOGE2Zjg5ZGJjZTY1MDBkODU4MCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy8zZDRkNTg4N2EyZmNkYzVkZDM2MGI4YTZmODlkYmNlNjUwMGQ4NTgwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MjQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2Q0ZDU4ODdhMmZjZGM1ZGQzNjBiOGE2Zjg5ZGJjZTY1MDBkODU4MApAQCAtMCwwICsxIEBACisiJycsIVx1NjU4RXsxMjgwMzE6Oyk6iCkhwzUqvj8nyrOzISEqIeApOiEq4Do6KSE5Olx1ZGJEOCAnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNlZmI1YjdmZjk0YzViOWQ0MTFjOTNkYTlhNzBlMWNjNTQ3ZjRjNTkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvM2VmYjViN2ZmOTRjNWI5ZDQxMWM5M2RhOWE3MGUxY2M1NDdmNGM1OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGEwODJkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzNlZmI1YjdmZjk0YzViOWQ0MTFjOTNkYTlhNzBlMWNjNTQ3ZjRjNTkKQEAgLTAsMCArMSBAQAorMTNlMoE5MDU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MjFiN2U4ZWE4NmUzYzA3NDc0YWYxNmFiM2NjZWY1NWQxODU3MjA1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQyMWI3ZThlYTg2ZTNjMDc0NzRhZjE2YWIzY2NlZjU1ZDE4NTcyMDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3NDcxNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MjFiN2U4ZWE4NmUzYzA3NDc0YWYxNmFiM2NjZWY1NWQxODU3MjA1CkBAIC0wLDAgKzEsMiBAQAorWzIuMQorJ3siiCLDiMMiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MjhkMDUxZTQzN2RkMjYwZjJhMmY3ZWQ5MjBkOTczNGNhMzRkYzkwIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQyOGQwNTFlNDM3ZGQyNjBmMmEyZjdlZDkyMGQ5NzM0Y2EzNGRjOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ1MGQ0OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MjhkMDUxZTQzN2RkMjYwZjJhMmY3ZWQ5MjBkOTczNGNhMzRkYzkwCkBAIC0wLDAgKzEgQEAKK1syLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MmFkYzI4MTU3OGZmYjFiODY4NGI3OGI0N2FhNDBhMTZkMTBiNmU3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQyYWRjMjgxNTc4ZmZiMWI4Njg0Yjc4YjQ3YWE0MGExNmQxMGI2ZTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTliMTcwOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MmFkYzI4MTU3OGZmYjFiODY4NGI3OGI0N2FhNDBhMTZkMTBiNmU3CkBAIC0wLDAgKzEgQEAKKzM2MywKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDM2MjBlY2QyZTJmZDU4ZmU1NjUwZGEyZTk3ODNmOTgwZjI5ZWMwNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80MzYyMGVjZDJlMmZkNThmZTU2NTBkYTJlOTc4M2Y5ODBmMjllYzA3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxOTgwMzQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDM2MjBlY2QyZTJmZDU4ZmU1NjUwZGEyZTk3ODNmOTgwZjI5ZWMwNwpAQCAtMCwwICsxIEBACisxM2UxMDmBNTYwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQzYjFmZmNkYTQ5NDc3YWRiMTYzMjgyMjIwMjYzMTk5MGVkM2EyNjkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDNiMWZmY2RhNDk0NzdhZGIxNjMyODIyMjAyNjMxOTkwZWQzYTI2OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWRiMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQzYjFmZmNkYTQ5NDc3YWRiMTYzMjgyMjIwMjYzMTk5MGVkM2EyNjkKQEAgLTAsMCArMSBAQAorMWUrMiwxiMMieApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80NTI3OWY4NWJmMmY1MzNhNjI5MDczY2FmODk0MDMwMDYyNzlmYWIyIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ1Mjc5Zjg1YmYyZjUzM2E2MjkwNzNjYWY4OTQwMzAwNjI3OWZhYjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZkM2Q3YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80NTI3OWY4NWJmMmY1MzNhNjI5MDczY2FmODk0MDMwMDYyNzlmYWIyCkBAIC0wLDAgKzEsMiBAQAoreworNjIwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ1NWQ5YmI1OTdmMDhiZjY5ODQ1NDE1N2VjZDg2NjQ3YjVkZWM0ZTAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDU1ZDliYjU5N2YwOGJmNjk4NDU0MTU3ZWNkODY2NDdiNWRlYzRlMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTYwMWViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ1NWQ5YmI1OTdmMDhiZjY5ODQ1NDE1N2VjZDg2NjQ3YjVkZWM0ZTAKQEAgLTAsMCArMSBAQAorMC4zMjgyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ1NjFlYjVjN2U0M2NhZTA0OGMwNmFhYWFkM2Q1ZjUyMThiMzc2ZTkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDU2MWViNWM3ZTQzY2FlMDQ4YzA2YWFhYWQzZDVmNTIxOGIzNzZlOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmRkMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ1NjFlYjVjN2U0M2NhZTA0OGMwNmFhYWFkM2Q1ZjUyMThiMzc2ZTkKQEAgLTAsMCArMSBAQAorZmFsMCUpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2NDE3YjAwMWVlYjg3YzMyYjY0MjQ5OWZkNWUxNjkwZDVkODhjN2YgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDY0MTdiMDAxZWViODdjMzJiNjQyNDk5ZmQ1ZTE2OTBkNWQ4OGM3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDg0ODQwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2NDE3YjAwMWVlYjg3YzMyYjY0MjQ5OWZkNWUxNjkwZDVkODhjN2YKQEAgLTAsMCArMSBAQAorODI1RX0zMjEpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2OGFmMDQwMDI0ZTk2ZTk4NzhlZjMzY2M1Mjc1NWM1ZTdmNWNiZDUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDY4YWYwNDAwMjRlOTZlOTg3OGVmMzNjYzUyNzU1YzVlN2Y1Y2JkNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWZmMWExCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2OGFmMDQwMDI0ZTk2ZTk4NzhlZjMzY2M1Mjc1NWM1ZTdmNWNiZDUKQEAgLTAsMCArMSBAQAorMC43MjQ3OTgzNGU7MC7cM+85OTMpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2OWU1ZWQyNTQ3ZTllNTVhOTZlOTZlYjgzMmM2MTU2MzFlM2I1NzYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDY5ZTVlZDI1NDdlOWU1NWE5NmU5NmViODMyYzYxNTYzMWUzYjU3NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U3Y2FmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ2OWU1ZWQyNTQ3ZTllNTVhOTZlOTZlYjgzMmM2MTU2MzFlM2I1NzYKQEAgLTAsMCArMSBAQAorW10pwyE6eyIqvj8nyrOzISEqIeApOiEq4Do6Olx1ZGJEOIgpe8MhOnshYCE/YL6+IiihClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ3MmIwN2I5ZmNmMmMyNDUxZTg3ODFlOTQ0YmY1Zjc3Y2Q4NDU3YzggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDcyYjA3YjlmY2YyYzI0NTFlODc4MWU5NDRiZjVmNzdjZDg0NTdjOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTA0NWNjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzQ3MmIwN2I5ZmNmMmMyNDUxZTg3ODFlOTQ0YmY1Zjc3Y2Q4NDU3YzgKQEAgLTAsMCArMSBAQAorMjEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDg2ZGE4YWZmMDQwODNjNWUwZmUxMTJlNzMzZjJhZTUxMGUzMTJhMSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ODZkYThhZmYwNDA4M2M1ZTBmZTExMmU3MzNmMmFlNTEwZTMxMmExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZmNjNWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDg2ZGE4YWZmMDQwODNjNWUwZmUxMTJlNzMzZjJhZTUxMGUzMTJhMQpAQCAtMCwwICsxIEBACit0cnW5ODIgJ0FcRTYwOykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDg4YTVlZDY0MWUzNDBhZTUxOTkyZTA0Y2U2NTkwYmRlYzU4NzIxOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ODhhNWVkNjQxZTM0MGFlNTE5OTJlMDRjZTY1OTBiZGVjNTg3MjE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYjY3MWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNDg4YTVlZDY0MWUzNDBhZTUxOTkyZTA0Y2U2NTkwYmRlYzU4NzIxOApAQCAtMCwwICsxIEBACiswLjEpuQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80YTBhMTkyMThlMDgyYTM0M2ExYjE3ZTUzMzM0MDlhZjlkOThmMGY1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRhMGExOTIxOGUwODJhMzQzYTFiMTdlNTMzMzQwOWFmOWQ5OGYwZjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxYWUzNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80YTBhMTkyMThlMDgyYTM0M2ExYjE3ZTUzMzM0MDlhZjlkOThmMGY1CkBAIC0wLDAgKzEgQEAKK2YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGE2NjQ0YTFhM2Q1MjE4ZjRiYmQ2MDIyMGNhYjc5YzBiN2JlZjQ1ZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80YTY2NDRhMWEzZDUyMThmNGJiZDYwMjIwY2FiNzljMGI3YmVmNDVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYjRjYTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGE2NjQ0YTFhM2Q1MjE4ZjRiYmQ2MDIyMGNhYjc5YzBiN2JlZjQ1ZQpAQCAtMCwwICsxIEBACitbMjEuODIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGIzOWQ0YjhhOWEwNGI5NDY5ZThmZTQwMTYzMjIzMjdmZTU0MDg4MiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80YjM5ZDRiOGE5YTA0Yjk0NjllOGZlNDAxNjMyMjMyN2ZlNTQwODgyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzFkMDgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGIzOWQ0YjhhOWEwNGI5NDY5ZThmZTQwMTYzMjIzMjdmZTU0MDg4MgpAQCAtMCwwICsxIEBACiszRTg7NCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGJiMDI5NGUxNDk0NmZiMWY2NDIxMzM4NDA5N2E2NzZkM2VmOTRmMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80YmIwMjk0ZTE0OTQ2ZmIxZjY0MjEzMzg0MDk3YTY3NmQzZWY5NGYwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZTJkYmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGJiMDI5NGUxNDk0NmZiMWY2NDIxMzM4NDA5N2E2NzZkM2VmOTRmMApAQCAtMCwwICsxIEBACiszNjMJCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGNkNjZkZmFiYmQ5NjRmOGM2YzQ0MTRiMDdjZGI0NWRhZTY5MmUxOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80Y2Q2NmRmYWJiZDk2NGY4YzZjNDQxNGIwN2NkYjQ1ZGFlNjkyZTE5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NmM5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGNkNjZkZmFiYmQ5NjRmOGM2YzQ0MTRiMDdjZGI0NWRhZTY5MmUxOQpAQCAtMCwwICsxIEBACis5MQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZDEzNGJjMDcyMjEyYWNlMmRmMzg1ZGFlMTQzMTM5ZGE3NGVjMGVmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRkMTM0YmMwNzIyMTJhY2UyZGYzODVkYWUxNDMxMzlkYTc0ZWMwZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiZjQzYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZDEzNGJjMDcyMjEyYWNlMmRmMzg1ZGFlMTQzMTM5ZGE3NGVjMGVmCkBAIC0wLDAgKzEgQEAKKzI0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRlZmEzNTIyMWIyMDg4ZTc4NTA0OGQwZmY4ZmQ5OWIwM2Q1MzE2ZmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGVmYTM1MjIxYjIwODhlNzg1MDQ4ZDBmZjhmZDk5YjAzZDUzMTZmYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2YyMjMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRlZmEzNTIyMWIyMDg4ZTc4NTA0OGQwZmY4ZmQ5OWIwM2Q1MzE2ZmMKQEAgLTAsMCArMSBAQAorMC4pClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRmYTJhNGE1YTJmN2RjNGRkYmRlY2FlM2VlODVjNzg3ODE3YjRjZjggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGZhMmE0YTVhMmY3ZGM0ZGRiZGVjYWUzZWU4NWM3ODc4MTdiNGNmOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VmNDNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRmYTJhNGE1YTJmN2RjNGRkYmRlY2FlM2VlODVjNzg3ODE3YjRjZjgKQEAgLTAsMCArMSBAQAorODEzZTEyODU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZmVkNGJmMmRjNjI1OWQ5ZGU1NGU5ZmE3ZGI0ZmQ1YTYxZjI1MzVlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRmZWQ0YmYyZGM2MjU5ZDlkZTU0ZTlmYTdkYjRmZDVhNjFmMjUzNWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTljYjk0MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZmVkNGJmMmRjNjI1OWQ5ZGU1NGU5ZmE3ZGI0ZmQ1YTYxZjI1MzVlCkBAIC0wLDAgKzEgQEAKKzI1MzFFMTE3dCkqNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZmY4MDBkZTA4NjNhZGI1ODUxZmEyNjkzNTE1OWFhNTNiMTFjYmE3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzRmZjgwMGRlMDg2M2FkYjU4NTFmYTI2OTM1MTU5YWE1M2IxMWNiYTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRkM2QyYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZmY4MDBkZTA4NjNhZGI1ODUxZmEyNjkzNTE1OWFhNTNiMTFjYmE3CkBAIC0wLDAgKzEgQEAKKzAuODI1MTAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGZmOTlhMDMwNTE4YTEzMjc0OGM0NGJjMWQ4MzYwMThlNWI4MmNkMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy80ZmY5OWEwMzA1MThhMTMyNzQ4YzQ0YmMxZDgzNjAxOGU1YjgyY2QwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNTk0NjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNGZmOTlhMDMwNTE4YTEzMjc0OGM0NGJjMWQ4MzYwMThlNWI4MmNkMApAQCAtMCwwICsxIEBACit7IipdOsMheym+PyfKKZMgOioh4Ck6ISrgOjo6XHVkYjgxXHVEZUExMl0pIXvDOnshYCE/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzUzMWM4N2I5NzcyZTU0ZTNlMTgzZWY3MjlmMGE3ZDVhMGQ1ODRmNDYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTMxYzg3Yjk3NzJlNTRlM2UxODNlZjcyOWYwYTdkNWEwZDU4NGY0NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGYxYmUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzUzMWM4N2I5NzcyZTU0ZTNlMTgzZWY3MjlmMGE3ZDVhMGQ1ODRmNDYKQEAgLTAsMCArMSBAQAoreyInLCFcdTY1RTg4NTB7MjMxMjspOogpISo/J77Ks7MhIaoh4Ck6ISrgOjo4ITk6XHVkYkQ4NicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTM0ZDY2ZTdiMDcwOWQxZTc2OTJmYWFlOWU3ZjcyOTljOTJiYmE0YiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81MzRkNjZlN2IwNzA5ZDFlNzY5MmZhYWU5ZTdmNzI5OWM5MmJiYTRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YjNmYTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTM0ZDY2ZTdiMDcwOWQxZTc2OTJmYWFlOWU3ZjcyOTljOTJiYmE0YgpAQCAtMCwwICsxIEBACitbWzIuMTkzXTQqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU0ODc3NWY5ZDdkMTMzMzlkYmEzMDAxZjgyMzhiODRlOWE0NTc1MzMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTQ4Nzc1ZjlkN2QxMzMzOWRiYTMwMDFmODIzOGI4NGU5YTQ1NzUzMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmVkNmQxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU0ODc3NWY5ZDdkMTMzMzlkYmEzMDAxZjgyMzhiODRlOWE0NTc1MzMKQEAgLTAsMCArMSBAQAorWzEuOTc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU0ZWMzYjJkOGE5YjdhNmQ4MjA0NzEyZWIxYjkwZGE3MDNjZjhhNzkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTRlYzNiMmQ4YTliN2E2ZDgyMDQ3MTJlYjFiOTBkYTcwM2NmOGE3OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTk4NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU0ZWMzYjJkOGE5YjdhNmQ4MjA0NzEyZWIxYjkwZGE3MDNjZjhhNzkKQEAgLTAsMCArMSBAQAorIojDeykhOiq+Oz9YyrOzISEqIeApOiEq4Do6Olx1ZMNiKYg4IYc6eyFgISpgvr4hPychKm0sJyk7hSdgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU1MmNmZTFkODk1OGU2ZDAwM2VjOGU4ODNjNDk4M2RkNjdlZjI1NWUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTUyY2ZlMWQ4OTU4ZTZkMDAzZWM4ZTg4M2M0OTgzZGQ2N2VmMjU1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjE4MzcwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU1MmNmZTFkODk1OGU2ZDAwM2VjOGU4ODNjNDk4M2RkNjdlZjI1NWUKQEAgLTAsMCArMSBAQAorbnUjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU1ZjBjNjFkMDk2YTA4NTA2MDc2NDg5ZGVkM2I4NjhkYjQwODY3NzAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTVmMGM2MWQwOTZhMDg1MDYwNzY0ODlkZWQzYjg2OGRiNDA4Njc3MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjViNTM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU1ZjBjNjFkMDk2YTA4NTA2MDc2NDg5ZGVkM2I4NjhkYjQwODY3NzAKQEAgLTAsMCArMSBAQAorMC4yXUcpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU2ZTVmMzVlM2QwOGI0ZTE3ZTM1NThjYWNkZGY5ZTVlZDEzYTAxNTkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTZlNWYzNWUzZDA4YjRlMTdlMzU1OGNhY2RkZjllNWVkMTNhMDE1OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTYwZmFkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU2ZTVmMzVlM2QwOGI0ZTE3ZTM1NThjYWNkZGY5ZTVlZDEzYTAxNTkKQEAgLTAsMCArMSBAQAorW1tbeyKIw3spIToqvjs/J8qzsyEhKiHgKTohKuA6OjpcdTEyMTk4LnkyZGIpOIjDITM7IciHOgQhYCEuNzs/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU4MGIwM2M0OWZiYTAyYmI4ZTM5OTUwMGViNjZmMmZmMDQ4MmIyMmEgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTgwYjAzYzQ5ZmJhMDJiYjhlMzk5NTAwZWI2NmYyZmYwNDgyYjIyYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzIzZTYyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU4MGIwM2M0OWZiYTAyYmI4ZTM5OTUwMGViNjZmMmZmMDQ4MmIyMmEKQEAgLTAsMCArMSBAQAorMl1HKXkzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU4NTI2NDNmYmJjZjkyYjAxODEzMjdiNjliNDg3NGM2YmE2ZmE5ZjQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTg1MjY0M2ZiYmNmOTJiMDE4MTMyN2I2OWI0ODc0YzZiYTZmYTlmNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzJjN2M3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU4NTI2NDNmYmJjZjkyYjAxODEzMjdiNjliNDg3NGM2YmE2ZmE5ZjQKQEAgLTAsMCArMSBAQAoreyInIVx1M0A6igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81OGY0OTdlNWVmYWY5ZjY5MDgwZjllZWY2M2IwYjlkYWJjZmRiYzBkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU4ZjQ5N2U1ZWZhZjlmNjkwODBmOWVlZjYzYjBiOWRhYmNmZGJjMGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VkNzIyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81OGY0OTdlNWVmYWY5ZjY5MDgwZjllZWY2M2IwYjlkYWJjZmRiYzBkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81OTEyOWFhY2ZiNmNlYmJlMmM1MmYzMGVmMzQyNDIwOWY3MjUyZTgyIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU5MTI5YWFjZmI2Y2ViYmUyYzUyZjMwZWYzNDI0MjA5ZjcyNTJlODIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjYmNmYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81OTEyOWFhY2ZiNmNlYmJlMmM1MmYzMGVmMzQyNDIwOWY3MjUyZTgyCkBAIC0wLDAgKzEgQEAKKzY2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU5OGEyODdhM2U1NmNhYWUyM2VkNjNhYmM5NWQ1ZjM0NTcxNjVlZWYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNTk4YTI4N2EzZTU2Y2FhZTIzZWQ2M2FiYzk1ZDVmMzQ1NzE2NWVlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDNkYjg4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzU5OGEyODdhM2U1NmNhYWUyM2VkNjNhYmM5NWQ1ZjM0NTcxNjVlZWYKQEAgLTAsMCArMSBAQAorODFlNjEyNTM4MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81YTM3YTI2ZGQyNDgyMjI2ZjUzNGY3OWQzMjFkMjhlN2E2MTVhYjcyIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVhMzdhMjZkZDI0ODIyMjZmNTM0Zjc5ZDMyMWQyOGU3YTYxNWFiNzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzliMTFmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81YTM3YTI2ZGQyNDgyMjI2ZjUzNGY3OWQzMjFkMjhlN2E2MTVhYjcyCkBAIC0wLDAgKzEgQEAKK1swLjk1OV0gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVhNzEwZGNkNGM3OGNhMWE3NGNlYjlmYmZiMDExZjdhYzg2YTVmN2IgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWE3MTBkY2Q0Yzc4Y2ExYTc0Y2ViOWZiZmIwMTFmN2FjODZhNWY3YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWNkMmU3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVhNzEwZGNkNGM3OGNhMWE3NGNlYjlmYmZiMDExZjdhYzg2YTVmN2IKQEAgLTAsMCArMSBAQAorW1t7fUczClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVhZTdiODdmNTM3N2Q1ZmZjMTZmZDNmNjliNGE0YWE3YmU4YjExODQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWFlN2I4N2Y1Mzc3ZDVmZmMxNmZkM2Y2OWI0YTRhYTdiZThiMTE4NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWMxMTE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVhZTdiODdmNTM3N2Q1ZmZjMTZmZDNmNjliNGE0YWE3YmU4YjExODQKQEAgLTAsMCArMSwyIEBACit7CisiiCLDiMMiIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81YjNmZTg2ZDVhMzA5YTZiYTc0NTg4MWJkMjIwZmUxMTAwYjI3MWNlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzViM2ZlODZkNWEzMDlhNmJhNzQ1ODgxYmQyMjBmZTExMDBiMjcxY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0NWViZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81YjNmZTg2ZDVhMzA5YTZiYTc0NTg4MWJkMjIwZmUxMTAwYjI3MWNlCkBAIC0wLDAgKzEgQEAKK3RydWU4MiAnQU5FMigwOykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWMzOGI3ZGExMTNhYjQ1MzVkYmMyMjc3N2NlOGExNDgwYzFjOWQxZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81YzM4YjdkYTExM2FiNDUzNWRiYzIyNzc3Y2U4YTE0ODBjMWM5ZDFlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMzU3NDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWMzOGI3ZGExMTNhYjQ1MzVkYmMyMjc3N2NlOGExNDgwYzFjOWQxZQpAQCAtMCwwICsxIEBACit7IichJ1x1M0I6igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81Y2E2YzQ1YThkMmUxMWM3ODI4MDZkZjQzZTc2NjhiZWI0YWJhOGY1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVjYTZjNDVhOGQyZTExYzc4MjgwNmRmNDNlNzY2OGJlYjRhYmE4ZjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY3MzZmZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81Y2E2YzQ1YThkMmUxMWM3ODI4MDZkZjQzZTc2NjhiZWI0YWJhOGY1CkBAIC0wLDAgKzEgQEAKK251bI0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWRhN2I1NDMzMTMzMzlmODRmZDUyZTk2YmFjZjNhNzMzNjhhMWQyYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZGE3YjU0MzMxMzMzOWY4NGZkNTJlOTZiYWNmM2E3MzM2OGExZDJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNDRiM2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWRhN2I1NDMzMTMzMzlmODRmZDUyZTk2YmFjZjNhNzMzNjhhMWQyYwpAQCAtMCwwICsxIEBACitdKcMhOnsiKr4/J8qzsyEhKiHgKTohKuA6OjpcdWRiRDiIKcMhOnshYCE/YL6+IT8nISptLCcpO4UnYApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZTEyYWU5MTE3NjY4YmNjMjI4MzI2NDBjYzYyNjMxNTk0MGFlYmE4IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVlMTJhZTkxMTc2NjhiY2MyMjgzMjY0MGNjNjI2MzE1OTQwYWViYTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE4MjAxOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZTEyYWU5MTE3NjY4YmNjMjI4MzI2NDBjYzYyNjMxNTk0MGFlYmE4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZTM5NzQzOWEyNjgwZWQ4MjdjNDY3MDQ5NjljNjcxMWRhYmJkYTg0IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVlMzk3NDM5YTI2ODBlZDgyN2M0NjcwNDk2OWM2NzExZGFiYmRhODQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlMWY4NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZTM5NzQzOWEyNjgwZWQ4MjdjNDY3MDQ5NjljNjcxMWRhYmJkYTg0CkBAIC0wLDAgKzEgQEAKKyIhIVxcJycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWU2MjlkZmI4Yjc1MzNjN2MyZDE3M2Q0YzNkNTg3Yzg4MTEyY2MyOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZTYyOWRmYjhiNzUzM2M3YzJkMTczZDRjM2Q1ODdjODgxMTJjYzI5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4Yjk4NDAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWU2MjlkZmI4Yjc1MzNjN2MyZDE3M2Q0YzNkNTg3Yzg4MTEyY2MyOQpAQCAtMCwwICsxIEBACisxZTIxODiBNTYwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVlNzg1YzdjMjY4MTM1NzdmM2UzMGVmOGY3ZTM3YWIyYTlmZmUzOWMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWU3ODVjN2MyNjgxMzU3N2YzZTMwZWY4ZjdlMzdhYjJhOWZmZTM5YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzRhZDUyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVlNzg1YzdjMjY4MTM1NzdmM2UzMGVmOGY3ZTM3YWIyYTlmZmUzOWMKQEAgLTAsMCArMSBAQAoreyIiOjAsfWYnK0d7KTEzKKchKCcnXCEPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVmMzM5NGY1MDU4ODIyY2MwNDRiOTI2NTQ4Mzc2MjU4OTcxNzY0ODAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWYzMzk0ZjUwNTg4MjJjYzA0NGI5MjY1NDgzNzYyNTg5NzE3NjQ4MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjQ2MGNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzVmMzM5NGY1MDU4ODIyY2MwNDRiOTI2NTQ4Mzc2MjU4OTcxNzY0ODAKQEAgLTAsMCArMSBAQAorODEzZTE2MjI0Mjc5MTNlMTA5OYE1NjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWZiOWJjYmJiMzBhMzc3MjA5ZWFiMDU0MWQxNDRlNDRlNzE1MDhkNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy81ZmI5YmNiYmIzMGEzNzcyMDllYWIwNTQxZDE0NGU0NGU3MTUwOGQ3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4M2M4MTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNWZiOWJjYmJiMzBhMzc3MjA5ZWFiMDU0MWQxNDRlNDRlNzE1MDhkNwpAQCAtMCwwICsxIEBACissMCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjAwODIxM2E2MWQwNmI0MzgyYjIyMzc2ODUzMGMzNDUyOTY4YjdiMyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82MDA4MjEzYTYxZDA2YjQzODJiMjIzNzY4NTMwYzM0NTI5NjhiN2IzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZjgxMzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjAwODIxM2E2MWQwNmI0MzgyYjIyMzc2ODUzMGMzNDUyOTY4YjdiMwpAQCAtMCwwICsxIEBACit7IicsIXU2NUU4ODUwezIzMTI7KTqIKSEqPye+yrOzIaoh4Ck6ISrA4Do6NCE5Olx1ZEQ4NicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjBiYTRiMmRhYTRlZDRkMDcwZmVjMDY2ODdlMjQ5ZTBlNmY5ZWU0NSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82MGJhNGIyZGFhNGVkNGQwNzBmZWMwNjY4N2UyNDllMGU2ZjllZTQ1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNzUwYjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjBiYTRiMmRhYTRlZDRkMDcwZmVjMDY2ODdlMjQ5ZTBlNmY5ZWU0NQpAQCAtMCwwICsxIEBACit7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzYyNWVkNjRjMzBjOGFiMmYwYjNiYzc1NjkwZjlmYWE0MjcwZjAwNDEgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjI1ZWQ2NGMzMGM4YWIyZjBiM2JjNzU2OTBmOWZhYTQyNzBmMDA0MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTMyMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzYyNWVkNjRjMzBjOGFiMmYwYjNiYzc1NjkwZjlmYWE0MjcwZjAwNDEKQEAgLTAsMCArMSBAQAorIojDeykhOiq+Oz8nyrOzISEqIeApOiEq4Do6ZFxiOjgpKYjDIVsxLoc5Nzp7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzYzMTRjMmIzMDRkMDRkYzAxMDhhOTVkMjlhOTM1MTVlODVlMmIwYjAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjMxNGMyYjMwNGQwNGRjMDEwOGE5NWQyOWE5MzUxNWU4NWUyYjBiMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTgxZDliCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzYzMTRjMmIzMDRkMDRkYzAxMDhhOTVkMjlhOTM1MTVlODVlMmIwYjAKQEAgLTAsMCArMSBAQAoreyIqXTrDIXspvj8nyrOzIDoqIeApOiEq4Do6Olx1ZGJEOFx1KSF7wzp7IWAhP2C+viIpKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjQ2MmQ4MDc5ZDJlYTkyMTYxN2U3ZDA3M2I4NWNmYWI3MDY4MDBkMyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82NDYyZDgwNzlkMmVhOTIxNjE3ZTdkMDczYjg1Y2ZhYjcwNjgwMGQzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlY2QyMDMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjQ2MmQ4MDc5ZDJlYTkyMTYxN2U3ZDA3M2I4NWNmYWI3MDY4MDBkMwpAQCAtMCwwICsxIEBACitudWxsjbMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjQ3NDM4MzI4Mjc4OGU1NTZhYTg2ZjU3ZmM4NjUwMTM3YWQyNjRkMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82NDc0MzgzMjgyNzg4ZTU1NmFhODZmNTdmYzg2NTAxMzdhZDI2NGQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMTBmNjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjQ3NDM4MzI4Mjc4OGU1NTZhYTg2ZjU3ZmM4NjUwMTM3YWQyNjRkMApAQCAtMCwwICsxIEBACit7IiEhXC8hIQ9cJycnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzY0OGMzZjU4ZWNjOGZiNGI4Yzc3OWU2YjExMDA2YWI1YjE5ODZkYWQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjQ4YzNmNThlY2M4ZmI0YjhjNzc5ZTZiMTEwMDZhYjViMTk4NmRhZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzlhOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzY0OGMzZjU4ZWNjOGZiNGI4Yzc3OWU2YjExMDA2YWI1YjE5ODZkYWQKQEAgLTAsMCArMSBAQAorMjEuNDk4IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82NjMyOGUwM2EyY2NkNWU1NGRhYjIzYjgxNjE4Mjc4NmU2ZjUxOGI2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzY2MzI4ZTAzYTJjY2Q1ZTU0ZGFiMjNiODE2MTgyNzg2ZTZmNTE4YjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MDE2YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82NjMyOGUwM2EyY2NkNWU1NGRhYjIzYjgxNjE4Mjc4NmU2ZjUxOGI2CkBAIC0wLDAgKzEgQEAKK1t7IojDXHQ1eykhOioKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjgzZTkwNDViYzk1ZTBjYjVmYzE2ZWM2NGIxMTg0MzM0NzViYTU1OSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ODNlOTA0NWJjOTVlMGNiNWZjMTZlYzY0YjExODQzMzQ3NWJhNTU5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOWVjZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjgzZTkwNDViYzk1ZTBjYjVmYzE2ZWM2NGIxMTg0MzM0NzViYTU1OQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjg5ZjEzNjgwZjQ2ODIzMDNjOGFhNjgyOGI2Nzk1NTk1OWRjOTY2OSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ODlmMTM2ODBmNDY4MjMwM2M4YWE2ODI4YjY3OTU1OTU5ZGM5NjY5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OWM4OTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjg5ZjEzNjgwZjQ2ODIzMDNjOGFhNjgyOGI2Nzk1NTk1OWRjOTY2OQpAQCAtMCwwICsxIEBACitbIipdOsMheym+PyfKs7MhISoh4Ck6ISrgOjo6XHVkY0Q4iCl7wyE6eyFgIT9gvr4iKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjhjNmJhN2YwNjAyYTU0MTBkMWZhM2M1ZGUyNGZlMjY0NDM2Yjk5MyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82OGM2YmE3ZjA2MDJhNTQxMGQxZmEzYzVkZTI0ZmUyNjQ0MzZiOTkzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzU1NmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjhjNmJhN2YwNjAyYTU0MTBkMWZhM2M1ZGUyNGZlMjY0NDM2Yjk5MwpAQCAtMCwwICsxIEBACit7fSxbClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzY5OWNhZmRlODBiMWUxNzc3MzA2Zjc4MTE4NmQxMjUzZjAxOGFiMjMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjk5Y2FmZGU4MGIxZTE3NzczMDZmNzgxMTg2ZDEyNTNmMDE4YWIyMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGE0ZTFlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzY5OWNhZmRlODBiMWUxNzc3MzA2Zjc4MTE4NmQxMjUzZjAxOGFiMjMKQEAgLTAsMCArMSBAQAorWzJ9NXsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjlhYjA1M2I1OWUyMzVmZDZhZjI0NmM1MTgwZjE1YmQ5NTI5NTExMyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82OWFiMDUzYjU5ZTIzNWZkNmFmMjQ2YzUxODBmMTViZDk1Mjk1MTEzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMGY1YTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjlhYjA1M2I1OWUyMzVmZDZhZjI0NmM1MTgwZjE1YmQ5NTI5NTExMwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjlhZmExMjUxMGIyZTY1M2IwYWY3YzcwMzA4MzI2NDdiMmQ2M2MzNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82OWFmYTEyNTEwYjJlNjUzYjBhZjdjNzAzMDgzMjY0N2IyZDYzYzM3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZDUxMDMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNjlhZmExMjUxMGIyZTY1M2IwYWY3YzcwMzA4MzI2NDdiMmQ2M2MzNwpAQCAtMCwwICsxIEBACisiiMMsIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Yjc1ODU3Zjg2YmU1YzUxYjIxYTk3ZjRhNjFlNjllOGJiNmNkNjk4IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZiNzU4NTdmODZiZTVjNTFiMjFhOTdmNGE2MWU2OWU4YmI2Y2Q2OTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwYWJmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Yjc1ODU3Zjg2YmU1YzUxYjIxYTk3ZjRhNjFlNjllOGJiNmNkNjk4CkBAIC0wLDAgKzEgQEAKKzMxMDU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Yzc1ZTcxZWNkZTlmMDczYTdiYWQ4OWY0ODMxYzhjZGUwYmMxODMwIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZjNzVlNzFlY2RlOWYwNzNhN2JhZDg5ZjQ4MzFjOGNkZTBiYzE4MzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRkOGZhNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Yzc1ZTcxZWNkZTlmMDczYTdiYWQ4OWY0ODMxYzhjZGUwYmMxODMwCkBAIC0wLDAgKzEgQEAKKzkJMyfBNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Y2U1MTcwZGM0ZjJlZWUzYjMxYTg3NWI2YTQxZjI0NDQ5NTlmM2RkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZjZTUxNzBkYzRmMmVlZTNiMzFhODc1YjZhNDFmMjQ0NDk1OWYzZGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxYWFiMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82Y2U1MTcwZGM0ZjJlZWUzYjMxYTg3NWI2YTQxZjI0NDQ5NTlmM2RkCkBAIC0wLDAgKzEgQEAKKzB9NTQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmQyODU5NDM2ZmJiZWU2MzdmMGE1OTgxY2E4MmU4Zjg4YTFkMGQyOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ZDI4NTk0MzZmYmJlZTYzN2YwYTU5ODFjYTgyZThmODhhMWQwZDI4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZDdjMDMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmQyODU5NDM2ZmJiZWU2MzdmMGE1OTgxY2E4MmU4Zjg4YTFkMGQyOApAQCAtMCwwICsxIEBACitbdHJbWzAuMTkzO100KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ZDYzZTM5ZjU2ZDFkNTM3YmFiOWMyODMwMzAzY2FiYWIzY2Q5MDM1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZkNjNlMzlmNTZkMWQ1MzdiYWI5YzI4MzAzMDNjYWJhYjNjZDkwMzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI1MTM4MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ZDYzZTM5ZjU2ZDFkNTM3YmFiOWMyODMwMzAzY2FiYWIzY2Q5MDM1CkBAIC0wLDAgKzEgQEAKK3siIjp9K0d7MTKnKCEoJydcIQ8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmUwNWEwYTI0MGZlMjk3NGUxNDUyN2JiZTM5MGQyOTQ1NjQxNTZlMiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy82ZTA1YTBhMjQwZmUyOTc0ZTE0NTI3YmJlMzkwZDI5NDU2NDE1NmUyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjM2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmUwNWEwYTI0MGZlMjk3NGUxNDUyN2JiZTM5MGQyOTQ1NjQxNTZlMgpAQCAtMCwwICsxIEBACitbMi4xOTgxClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZlNmM5ZDMwMWFkYjBmMGRkZmZkNzljZGYzNDI2YTJkZTk5YmFkNDggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmU2YzlkMzAxYWRiMGYwZGRmZmQ3OWNkZjM0MjZhMmRlOTliYWQ0OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjNjNjY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZlNmM5ZDMwMWFkYjBmMGRkZmZkNzljZGYzNDI2YTJkZTk5YmFkNDgKQEAgLTAsMCArMSwyIEBACit7CisiiMMiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZlOTg5ZWRmNzI1ZWM2NDg0OTM3NzY4MWNlMDI2NDFjM2QxODcwZTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNmU5ODllZGY3MjVlYzY0ODQ5Mzc3NjgxY2UwMjY0MWMzZDE4NzBlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWNiNjRkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzZlOTg5ZWRmNzI1ZWM2NDg0OTM3NzY4MWNlMDI2NDFjM2QxODcwZTgKQEAgLTAsMCArMSBAQAorMn1HKXkzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcwMTQyZjY2NDc1YWUyZmIzMzcyMmQ4ZDQ3NTBmMzg2ZWNmZWZlN2IgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNzAxNDJmNjY0NzVhZTJmYjMzNzIyZDhkNDc1MGYzODZlY2ZlZmU3YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTViMTlmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcwMTQyZjY2NDc1YWUyZmIzMzcyMmQ4ZDQ3NTBmMzg2ZWNmZWZlN2IKQEAgLTAsMCArMSBAQAorMi4wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcxOWVkYmU2NjdjZTI3MjlhYzc4YTIyZGFjMjkyNjNjOTExNDQwMjkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNzE5ZWRiZTY2N2NlMjcyOWFjNzhhMjJkYWMyOTI2M2M5MTE0NDAyOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2NiY2EzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcxOWVkYmU2NjdjZTI3MjlhYzc4YTIyZGFjMjkyNjNjOTExNDQwMjkKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcxZjk5Y2EyYmRhNmVmMmUxNWI5NjU0NzlhNzk1ODdmOWQ3OTRiZTAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNzFmOTljYTJiZGE2ZWYyZTE1Yjk2NTQ3OWE3OTU4N2Y5ZDc5NGJlMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ0OWJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzcxZjk5Y2EyYmRhNmVmMmUxNWI5NjU0NzlhNzk1ODdmOWQ3OTRiZTAKQEAgLTAsMCArMSBAQAorODM0RTspClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc3MTRhMWEzMjg3MjQ0MmEyZWFmZjQ3MjY4NWYzZWE2OTQ1MWE3MzIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNzcxNGExYTMyODcyNDQyYTJlYWZmNDcyNjg1ZjNlYTY5NDUxYTczMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2E4MTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc3MTRhMWEzMjg3MjQ0MmEyZWFmZjQ3MjY4NWYzZWE2OTQ1MWE3MzIKQEAgLTAsMCArMSBAQAorODMyNEU2ODU7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83NzE5YTFjNzgyYTFiYTkxYzAzMWE2ODJhMGEyZjg2NTgyMDlhZGJmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc3MTlhMWM3ODJhMWJhOTFjMDMxYTY4MmEwYTJmODY1ODIwOWFkYmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5ZTkwZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83NzE5YTFjNzgyYTFiYTkxYzAzMWE2ODJhMGEyZjg2NTgyMDlhZGJmCkBAIC0wLDAgKzEgQEAKKzI5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc3ZGU2OGRhZWNkODIzYmFiYmI1OGVkYjFjOGUxNGQ3MTA2ZTgzYmIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvNzdkZTY4ZGFlY2Q4MjNiYWJiYjU4ZWRiMWM4ZTE0ZDcxMDZlODNiYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQwZTVjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc3ZGU2OGRhZWNkODIzYmFiYmI1OGVkYjFjOGUxNGQ3MTA2ZTgzYmIKQEAgLTAsMCArMSBAQAorMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83OTU3ZGM5YWFjMzFlNmE2NzgzZmIzYTZlZTA3MzY4OGZlZDZjZjlkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzc5NTdkYzlhYWMzMWU2YTY3ODNmYjNhNmVlMDczNjg4ZmVkNmNmOWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0MTBhNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83OTU3ZGM5YWFjMzFlNmE2NzgzZmIzYTZlZTA3MzY4OGZlZDZjZjlkCkBAIC0wLDAgKzEgQEAKK2ZhbFsyLjE5ODIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2FlODkzY2JiZjliMTFmZjQxMTY0MGI4MDk4NWNlNjE4OTA3NTU5YyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83YWU4OTNjYmJmOWIxMWZmNDExNjQwYjgwOTg1Y2U2MTg5MDc1NTljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMDYwNjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2FlODkzY2JiZjliMTFmZjQxMTY0MGI4MDk4NWNlNjE4OTA3NTU5YwpAQCAtMCwwICsxIEBACitbMC4yOV05NSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2IyMGFjNTA5NTQwNjNlM2FkMDA4MTNhY2FiNGE5OGIyYmZkYjg1OCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83YjIwYWM1MDk1NDA2M2UzYWQwMDgxM2FjYWI0YTk4YjJiZmRiODU4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZmJjMDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2IyMGFjNTA5NTQwNjNlM2FkMDA4MTNhY2FiNGE5OGIyYmZkYjg1OApAQCAtMCwwICsxIEBACitbMi4xOTgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2I2MjczMTQ1ZmIwOTBkZTFjNjE2MzU4NmY4ODRhMWRhNGI1Y2ZiZiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83YjYyNzMxNDVmYjA5MGRlMWM2MTYzNTg2Zjg4NGExZGE0YjVjZmJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNzVhNTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2I2MjczMTQ1ZmIwOTBkZTFjNjE2MzU4NmY4ODRhMWRhNGI1Y2ZiZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2NmODRiNWE3ODI4MWU2YzZiNWE5ODg0MTEwZjNkYmM2YTQwZTMxMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83Y2Y4NGI1YTc4MjgxZTZjNmI1YTk4ODQxMTBmM2RiYzZhNDBlMzEwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MDlhODUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvN2NmODRiNWE3ODI4MWU2YzZiNWE5ODg0MTEwZjNkYmM2YTQwZTMxMApAQCAtMCwwICsxLDIgQEAKK3sKKyKIWzIiOn01iMNbIn01ESIiewpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83ZWYxM2I4M2U2YmRlNTgyZDkwMDBiZTA0M2U3MjljZDMyMjFjMTUwIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzdlZjEzYjgzZTZiZGU1ODJkOTAwMGJlMDQzZTcyOWNkMzIyMWMxNTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2OTA1MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy83ZWYxM2I4M2U2YmRlNTgyZDkwMDBiZTA0M2U3MjljZDMyMjFjMTUwCkBAIC0wLDAgKzEgQEAKK3siIiBcIScoXCchDwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84MjA1OWUyNTA5MDRiNDc4ZjY1ZGFhMGU2NDdjMTY0N2JhNmQ2YTNkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzgyMDU5ZTI1MDkwNGI0NzhmNjVkYWEwZTY0N2MxNjQ3YmE2ZDZhM2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxMmZhNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84MjA1OWUyNTA5MDRiNDc4ZjY1ZGFhMGU2NDdjMTY0N2JhNmQ2YTNkCkBAIC0wLDAgKzEgQEAKKzIxLjU5NrsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODIwN2ZkZjRiZDMwMmQ2YjZiMTg5NDk5MGIzNTM5NDRhODcxNmFhNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84MjA3ZmRmNGJkMzAyZDZiNmIxODk0OTkwYjM1Mzk0NGE4NzE2YWE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYzNlMzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODIwN2ZkZjRiZDMwMmQ2YjZiMTg5NDk5MGIzNTM5NDRhODcxNmFhNwpAQCAtMCwwICsxIEBACit7IipdOsMheym+PyfKKZMgOioh4Ck6ISrgOjo6XHVkYjgxXHVEODNlMTJdKSF7wzp7IWAhPwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84MzFhNDlhZDgxYjU5MDI1YzI0MWFjOWU1OGJkODg0NjNmZDc5OGViIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzgzMWE0OWFkODFiNTkwMjVjMjQxYWM5ZTU4YmQ4ODQ2M2ZkNzk4ZWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0Mjg3NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84MzFhNDlhZDgxYjU5MDI1YzI0MWFjOWU1OGJkODg0NjNmZDc5OGViCkBAIC0wLDAgKzEgQEAKKzVFODg1MHsyMzEyOyk6iCkhwyIqvj8nyrOzISEqIeApOiEq4Do6OCE5Olx1ZGJEOIgpwyE6eyFgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg0NTgyYzFkYmUwMjY0NzUzMTlkZjE0YzE5OTY3ZDFkZDBiZjc1MWYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODQ1ODJjMWRiZTAyNjQ3NTMxOWRmMTRjMTk5NjdkMWRkMGJmNzUxZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjUwOWJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg0NTgyYzFkYmUwMjY0NzUzMTlkZjE0YzE5OTY3ZDFkZDBiZjc1MWYKQEAgLTAsMCArMSBAQAorNTYwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg2MGQ0YWQwYjdjMDI2ZDFmY2Y1MTkzMmI1ZTQ2NTAwYmU3ODYwYTYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODYwZDRhZDBiN2MwMjZkMWZjZjUxOTMyYjVlNDY1MDBiZTc4NjBhNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTFlYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg2MGQ0YWQwYjdjMDI2ZDFmY2Y1MTkzMmI1ZTQ2NTAwYmU3ODYwYTYKQEAgLTAsMCArMSwyIEBACiszCispClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg2NWM3Y2YzNmE0ZjQ0OTlhNjI0MmU1MWI3N2I1OGI4NjhhNzQ0N2IgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODY1YzdjZjM2YTRmNDQ5OWE2MjQyZTUxYjc3YjU4Yjg2OGE3NDQ3YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzhjN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg2NWM3Y2YzNmE0ZjQ0OTlhNjI0MmU1MWI3N2I1OGI4NjhhNzQ0N2IKQEAgLTAsMCArMSBAQAorIjkhW1xiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg3YTJiODBmOTI3MjU4MzUxN2MwMjA3YWYxNzZmYzQwZWE1NTAyMmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODdhMmI4MGY5MjcyNTgzNTE3YzAyMDdhZjE3NmZjNDBlYTU1MDIyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmE1MjM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg3YTJiODBmOTI3MjU4MzUxN2MwMjA3YWYxNzZmYzQwZWE1NTAyMmMKQEAgLTAsMCArMSBAQAorMC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODg3MzA5ZDA0OGJlZWY4M2FkM2VhYmYyYTc5YTY0YTM4OWFiMWM5ZiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ODczMDlkMDQ4YmVlZjgzYWQzZWFiZjJhNzlhNjRhMzg5YWIxYzlmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OGI0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODg3MzA5ZDA0OGJlZWY4M2FkM2VhYmYyYTc5YTY0YTM4OWFiMWM5ZgpAQCAtMCwwICsxIEBACisyNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84OGQ4OTg2MGNjYWYyMWU1ZjBmMDAyMzAzYTJjZDg1M2VjYmIyYWNiIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg4ZDg5ODYwY2NhZjIxZTVmMGYwMDIzMDNhMmNkODUzZWNiYjJhY2IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZmZmNhOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84OGQ4OTg2MGNjYWYyMWU1ZjBmMDAyMzAzYTJjZDg1M2VjYmIyYWNiCkBAIC0wLDAgKzEgQEAKK3siIjp7fStHJyghJyhcJyEPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg4ZjY1ODQwMGIxODcwZGRmMDgxZmIwMzAyMGMzMDk4YjBiMWUwODMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODhmNjU4NDAwYjE4NzBkZGYwODFmYjAzMDIwYzMwOThiMGIxZTA4MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzRjNTM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzg4ZjY1ODQwMGIxODcwZGRmMDgxZmIwMzAyMGMzMDk4YjBiMWUwODMKQEAgLTAsMCArMSBAQAorW1tdKcMhOnsiKr4/J8qzsyEhKiHgKTohKuA6OjpcdWRiRHs4iCl7wyE6eyFgIT9gvr4iKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODhmOGIwOTg0YmIyZjA4MTkxOGFkODgzYzhmMGZmYWNiNWE4ZmYwYSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84OGY4YjA5ODRiYjJmMDgxOTE4YWQ4ODNjOGYwZmZhY2I1YThmZjBhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNzk0MWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODhmOGIwOTg0YmIyZjA4MTkxOGFkODgzYzhmMGZmYWNiNWE4ZmYwYQpAQCAtMCwwICsxLDIgQEAKKzIKK48KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODkzMDQ5NTM0OTVmMDYwYzdhYmQzNTg0ZDgzY2IxYzhlNmQ2NjUzYiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84OTMwNDk1MzQ5NWYwNjBjN2FiZDM1ODRkODNjYjFjOGU2ZDY2NTNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhODZjYjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvODkzMDQ5NTM0OTVmMDYwYzdhYmQzNTg0ZDgzY2IxYzhlNmQ2NjUzYgpAQCAtMCwwICsxIEBACitbW1siiMN7KSE6Kr47PyfKs7MhISoh4CldKcMhOns6ISrgOjo6XCJ1MTIqMb4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGE1ZjZkYzY4NzNlM2ZkNTFmZDg2Njg1NGQ4NTI1OGY4YWE4M2EwMiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84YTVmNmRjNjg3M2UzZmQ1MWZkODY2ODU0ZDg1MjU4ZjhhYTgzYTAyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1N2FkZGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGE1ZjZkYzY4NzNlM2ZkNTFmZDg2Njg1NGQ4NTI1OGY4YWE4M2EwMgpAQCAtMCwwICsxLDIgQEAKK3sKKyKIIjqIwyIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhhODcyNjEyNzdjMTU2NjdlMjk1N2RkNTJjNWRiNjc1N2ViYzhlODggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGE4NzI2MTI3N2MxNTY2N2UyOTU3ZGQ1MmM1ZGI2NzU3ZWJjOGU4OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDdlZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhhODcyNjEyNzdjMTU2NjdlMjk1N2RkNTJjNWRiNjc1N2ViYzhlODgKQEAgLTAsMCArMSBAQAordCKIw3spIToqvjs/WMqzsyEhKiHgKTohKuA6OjpcClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhhYTYxZDhiZDI2MDk0MjUyMWJiMWJhODJjZDRjY2UyMzI0ZmRiZWUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGFhNjFkOGJkMjYwOTQyNTIxYmIxYmE4MmNkNGNjZTIzMjRmZGJlZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzkzZGUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhhYTYxZDhiZDI2MDk0MjUyMWJiMWJhODJjZDRjY2UyMzI0ZmRiZWUKQEAgLTAsMCArMSBAQAorZmFsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhkODg3NDQzOTU2OTgyNGUzNzFhMDI4NDQ2MDQ0MDE3NWNkYjhhMjcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGQ4ODc0NDM5NTY5ODI0ZTM3MWEwMjg0NDYwNDQwMTc1Y2RiOGEyNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTk2NGMyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhkODg3NDQzOTU2OTgyNGUzNzFhMDI4NDQ2MDQ0MDE3NWNkYjhhMjcKQEAgLTAsMCArMSBAQAorNUU4ODIzMTI7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZTZmZWM4YTA1YjI0ZjIyMWI2ZTk0ZmRmZTIwNWU1YmY3NzA5YTJjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlNmZlYzhhMDViMjRmMjIxYjZlOTRmZGZlMjA1ZTViZjc3MDlhMmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0NmIyMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZTZmZWM4YTA1YjI0ZjIyMWI2ZTk0ZmRmZTIwNWU1YmY3NzA5YTJjCkBAIC0wLDAgKzEgQEAKK1t7IltdKcMhOnsmKr6Iw1xmNXspIT8nyrOzISEqIeApOiGW4Do6Olx1YkQ4Oogpa8MhOnshYCE/YL6+IigqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlN2ZkYTc3NjQ0ZmY5MTU3OGQyNTI0M2ZhZDUxYTNjZDZkNjA4NjAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGU3ZmRhNzc2NDRmZjkxNTc4ZDI1MjQzZmFkNTFhM2NkNmQ2MDg2MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzhjMGNjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlN2ZkYTc3NjQ0ZmY5MTU3OGQyNTI0M2ZhZDUxYTNjZDZkNjA4NjAKQEAgLTAsMCArMSBAQAorWzIuMTk4MjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVhNjI5NWZmODJiYjExOWFjZDQ0YTkxYjQ2M2IxOWZlZGFmYjIyNiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZWE2Mjk1ZmY4MmJiMTE5YWNkNDRhOTFiNDYzYjE5ZmVkYWZiMjI2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhY2RjOGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVhNjI5NWZmODJiYjExOWFjZDQ0YTkxYjQ2M2IxOWZlZGFmYjIyNgpAQCAtMCwwICsxIEBACitbWzIuNrs3XTMqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlZTUxY2FhYTJjMmY0ZWUyZTViNGI3ZWY1YTg5ZGI3ZGYxMDY4ZDcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVlNTFjYWFhMmMyZjRlZTJlNWI0YjdlZjVhODlkYjdkZjEwNjhkNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTIyNmY3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlZTUxY2FhYTJjMmY0ZWUyZTViNGI3ZWY1YTg5ZGI3ZGYxMDY4ZDcKQEAgLTAsMCArMSBAQAorOTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVmNGRkOWYyZDBmOWQ3NzBjOTM3ZDlhNDM0MTNkMjRkZjgzZjA5YiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZWY0ZGQ5ZjJkMGY5ZDc3MGM5MzdkOWE0MzQxM2QyNGRmODNmMDliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YWRjYjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVmNGRkOWYyZDBmOWQ3NzBjOTM3ZDlhNDM0MTNkMjRkZjgzZjA5YgpAQCAtMCwwICsxIEBACitbeyKIw1xmNXspIToqXSl7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlZmQ4NmZiNzhhNTZhNTE0NWVkNzczOWRjYjAwYzc4NTgxYzUzNzUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGVmZDg2ZmI3OGE1NmE1MTQ1ZWQ3NzM5ZGNiMDBjNzg1ODFjNTM3NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmY2NGY0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhlZmQ4NmZiNzhhNTZhNTE0NWVkNzczOWRjYjAwYzc4NTgxYzUzNzUKQEAgLTAsMCArMSBAQAordApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZjBiYTc2MmMyZmVkMGZjOTkzZmViOTE5NDg5MDJhYzM5N2IwOTE5IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhmMGJhNzYyYzJmZWQwZmM5OTNmZWI5MTk0ODkwMmFjMzk3YjA5MTkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhNmRmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy84ZjBiYTc2MmMyZmVkMGZjOTkzZmViOTE5NDg5MDJhYzM5N2IwOTE5CkBAIC0wLDAgKzEgQEAKK1siKjrDIXspvj8nyrOzISoqIeApOiEq4Do6Olx1ZGJEOCyIClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhmZTgxZTQ1MDY5NGNhYzFlYjRjNGE1Yzk2NmZmYmM1NmFkZTM1MTMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOGZlODFlNDUwNjk0Y2FjMWViNGM0YTVjOTY2ZmZiYzU2YWRlMzUxMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjNjMDQzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzhmZTgxZTQ1MDY5NGNhYzFlYjRjNGE1Yzk2NmZmYmM1NmFkZTM1MTMKQEAgLTAsMCArMSBAQAorMC4yNDk33CAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTAyYmEzY2RhMTg4MzgwMTU5NGI2ZTFiNDUyNzkwY2M1Mzk0OGZkYSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85MDJiYTNjZGExODgzODAxNTk0YjZlMWI0NTI3OTBjYzUzOTQ4ZmRhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTMwMjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTAyYmEzY2RhMTg4MzgwMTU5NGI2ZTFiNDUyNzkwY2M1Mzk0OGZkYQpAQCAtMCwwICsxIEBACis3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkxMGExNTI4YjI4ZWJjNmZmMmYyYTRmZWRiMDEzYzg2ZGU0MTAzZTIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTEwYTE1MjhiMjhlYmM2ZmYyZjJhNGZlZGIwMTNjODZkZTQxMDNlMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzViYzUxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkxMGExNTI4YjI4ZWJjNmZmMmYyYTRmZWRiMDEzYzg2ZGU0MTAzZTIKQEAgLTAsMCArMSBAQAorODE2MkUyNTE3Oyk2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkyMDQ5YmYzZDhhMGVjOTNjMmQxNjMzNjMxYzAwODJlNjZjYTY5ZTcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTIwNDliZjNkOGEwZWM5M2MyZDE2MzM2MzFjMDA4MmU2NmNhNjllNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGUwMWE3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkyMDQ5YmYzZDhhMGVjOTNjMmQxNjMzNjMxYzAwODJlNjZjYTY5ZTcKQEAgLTAsMCArMSwyIEBACiswCiuPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkyMGEzYzMxOGYzMTI3YjljMzBhYjAyYTA3NzU1NWM3ZGZiYjZlZGIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTIwYTNjMzE4ZjMxMjdiOWMzMGFiMDJhMDc3NTU1YzdkZmJiNmVkYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTdhNjJlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkyMGEzYzMxOGYzMTI3YjljMzBhYjAyYTA3NzU1NWM3ZGZiYjZlZGIKQEAgLTAsMCArMSBAQAorW1tbIojDeykhOiq+Oz8nyrOzISEqIeApOiEq4Do6Olx1MTIxOTgueTJkYik4iMMhMzshhzp7IWAhLjc7PwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85MjVmYzA1ZGQ2NjFhZWI0YTc3NmRjYmM1ZGYzZGNiMmNlZmFmMGE2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkyNWZjMDVkZDY2MWFlYjRhNzc2ZGNiYzVkZjNkY2IyY2VmYWYwYTYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0MjVmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85MjVmYzA1ZGQ2NjFhZWI0YTc3NmRjYmM1ZGYzZGNiMmNlZmFmMGE2CkBAIC0wLDAgKzEgQEAKK3t9K0cnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkzNjdiYTY1YWZmZDViZjdhYWJmNzljMjhlNzgzY2M1ZDkzNTE4ZTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTM2N2JhNjVhZmZkNWJmN2FhYmY3OWMyOGU3ODNjYzVkOTM1MThlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTljMWFhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkzNjdiYTY1YWZmZDViZjdhYWJmNzljMjhlNzgzY2M1ZDkzNTE4ZTgKQEAgLTAsMCArMSBAQAorWzIuMTFFMDIJIojBgTk2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85MzlmNTA0OWIxZWVmYjkxY2NiZDNmY2VjYWVkOGNiMjFlYTZiMjg1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzkzOWY1MDQ5YjFlZWZiOTFjY2JkM2ZjZWNhZWQ4Y2IyMWVhNmIyODUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkZDM0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85MzlmNTA0OWIxZWVmYjkxY2NiZDNmY2VjYWVkOGNiMjFlYTZiMjg1CkBAIC0wLDAgKzEgQEAKKyIhXCcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTQwNWMyYjAwZWFhNTUyNmY3MWNjNzg5MTRkYmQzZWNhZjA5M2I2ZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NDA1YzJiMDBlYWE1NTI2ZjcxY2M3ODkxNGRiZDNlY2FmMDkzYjZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTY2MjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTQwNWMyYjAwZWFhNTUyNmY3MWNjNzg5MTRkYmQzZWNhZjA5M2I2ZQpAQCAtMCwwICsxIEBACisiOSFbXCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTRkMzU5ODc1MTU2OWQyYTViZTI1OGU1OTY2NWNiYmYwNjkyZGZiZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NGQzNTk4NzUxNTY5ZDJhNWJlMjU4ZTU5NjY1Y2JiZjA2OTJkZmJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzljZGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTRkMzU5ODc1MTU2OWQyYTViZTI1OGU1OTY2NWNiYmYwNjkyZGZiZQpAQCAtMCwwICsxIEBACisiJywhXHU2NUU4ODUwezIzMTI7KTqIKSEqPye+yrMwLrMhIaohwCk6KiHgOjs4ITk6XHVkYkQ4XHVEZTI1fzAnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk0Zjk2ZDk1ZDAxZTk4ZmQyZjA0Y2UyNmMwOTEzZTVmOWE4ODJmYjQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTRmOTZkOTVkMDFlOThmZDJmMDRjZTI2YzA5MTNlNWY5YTg4MmZiNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUyY2E4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk0Zjk2ZDk1ZDAxZTk4ZmQyZjA0Y2UyNmMwOTEzZTVmOWE4ODJmYjQKQEAgLTAsMCArMSBAQAorNTghOQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NWI1NGE4NGRiNzVhYmFiNDAxZDI4MmZkYjA0NDQwYTg3OWE5NzA4IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk1YjU0YTg0ZGI3NWFiYWI0MDFkMjgyZmRiMDQ0NDBhODc5YTk3MDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI0MTc0NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NWI1NGE4NGRiNzVhYmFiNDAxZDI4MmZkYjA0NDQwYTg3OWE5NzA4CkBAIC0wLDAgKzEgQEAKK3tdM1sKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTYxODkyMDJlNTg3ZWM5NTFkNTc5NWRhM2UwMzA2MmYyZmI1ZDcwOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NjE4OTIwMmU1ODdlYzk1MWQ1Nzk1ZGEzZTAzMDYyZjJmYjVkNzA4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMmZhN2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTYxODkyMDJlNTg3ZWM5NTFkNTc5NWRhM2UwMzA2MmYyZmI1ZDcwOApAQCAtMCwwICsxIEBACit7IiggXFwhpygnIQ8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTcxMTcwMzQyODcwNGNlMjgyN2E3MTllZGRiOWQ1NGJlMjNhMGNiNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NzExNzAzNDI4NzA0Y2UyODI3YTcxOWVkZGI5ZDU0YmUyM2EwY2I3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYjkzZWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTcxMTcwMzQyODcwNGNlMjgyN2E3MTllZGRiOWQ1NGJlMjNhMGNiNwpAQCAtMCwwICsxIEBACit7IicsIVx1NjVFODg1MHsyMzEyOyk6iCkhKj8nvsqzsyEhqiHgKTohKuA6OjghOTpcdWRiRDgsNicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTczNDU5N2U5NmVlYmU5OWIyMjQzMTIxYTUxZDE3OGEzMzhlYzQ2ZiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NzM0NTk3ZTk2ZWViZTk5YjIyNDMxMjFhNTFkMTc4YTMzOGVjNDZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MDMzNzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTczNDU5N2U5NmVlYmU5OWIyMjQzMTIxYTUxZDE3OGEzMzhlYzQ2ZgpAQCAtMCwwICsxIEBACis4MTYyRS0xMzswLjMyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NzQ3Yzg1YTk1MTAwMTFiZjg3YzIzYTgwYjAyOWI5ZjJkMDRjMzdkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk3NDdjODVhOTUxMDAxMWJmODdjMjNhODBiMDI5YjlmMmQwNGMzN2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE0YzkxYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85NzQ3Yzg1YTk1MTAwMTFiZjg3YzIzYTgwYjAyOWI5ZjJkMDRjMzdkCkBAIC0wLDAgKzEgQEAKK1swLjM2MjksOTUgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk3ZDE3MGUxNTUwZWVlNGFmYzBhZjA2NWI3OGNkYTMwMmE5NzY3NGMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTdkMTcwZTE1NTBlZWU0YWZjMGFmMDY1Yjc4Y2RhMzAyYTk3Njc0YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjM3YTA4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk3ZDE3MGUxNTUwZWVlNGFmYzBhZjA2NWI3OGNkYTMwMmE5NzY3NGMKQEAgLTAsMCArMSBAQAorW10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOThlMDJlN2ZjOTY0NzllOGQxMGZmMmNjNzYxMGJlNzcyZTJkNmZiYSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85OGUwMmU3ZmM5NjQ3OWU4ZDEwZmYyY2M3NjEwYmU3NzJlMmQ2ZmJhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYzBmYjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOThlMDJlN2ZjOTY0NzllOGQxMGZmMmNjNzYxMGJlNzcyZTJkNmZiYQpAQCAtMCwwICsxIEBACitbW3siXC81bohbeyshOioKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTk2MTU2YjE5MWI2MTllZmY3OWIyZmNiYjc1OTg1MThhMDliMDZiYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85OTYxNTZiMTkxYjYxOWVmZjc5YjJmY2JiNzU5ODUxOGEwOWIwNmJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZjU4MmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTk2MTU2YjE5MWI2MTllZmY3OWIyZmNiYjc1OTg1MThhMDliMDZiYwpAQCAtMCwwICsxIEBACisyLjE0OTggClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk5NjY3ZmNmYTZkNTgzYTc0MmZiNTQ1MDUyN2ZjODZkZmI3OGViYmYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOTk2NjdmY2ZhNmQ1ODNhNzQyZmI1NDUwNTI3ZmM4NmRmYjc4ZWJiZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjFhZTAyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzk5NjY3ZmNmYTZkNTgzYTc0MmZiNTQ1MDUyN2ZjODZkZmI3OGViYmYKQEAgLTAsMCArMSBAQAorW3siiMN7KSE6Kl0pwyE6eyIqvj++Oz9YyrOzJyEhygpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85YjFlYWQyZGJlZWIxYTNlOWE3YmViY2Y2OTY0YzNjZmJjN2U4ODY3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzliMWVhZDJkYmVlYjFhM2U5YTdiZWJjZjY5NjRjM2NmYmM3ZTg4NjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmODk1MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85YjFlYWQyZGJlZWIxYTNlOWE3YmViY2Y2OTY0YzNjZmJjN2U4ODY3CkBAIC0wLDAgKzEgQEAKK3QgXCcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWI3NjY5ZTIwMTU3NGJmYjk3OWQ1NjExMDUzOWE5MGRhNWFjYTJjMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85Yjc2NjllMjAxNTc0YmZiOTc5ZDU2MTEwNTM5YTkwZGE1YWNhMmMwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYjNkNDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWI3NjY5ZTIwMTU3NGJmYjk3OWQ1NjExMDUzOWE5MGRhNWFjYTJjMApAQCAtMCwwICsxIEBACit7IiIhIVwnISEPXCcnJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85YzI0YjQ1NmFmM2NiNTFhMWZmMjc4MGMyZDljYmRkN2Q5M2Y2Yzc2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzljMjRiNDU2YWYzY2I1MWExZmYyNzgwYzJkOWNiZGQ3ZDkzZjZjNzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmMDQ4YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85YzI0YjQ1NmFmM2NiNTFhMWZmMjc4MGMyZDljYmRkN2Q5M2Y2Yzc2CkBAIC0wLDAgKzEgQEAKK251/io6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlkMDQ0MWYyM2FlN2Q1YTNhNWIxMTQwNDk3ODY4ZWU2ZWVhYjY1NmIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWQwNDQxZjIzYWU3ZDVhM2E1YjExNDA0OTc4NjhlZTZlZWFiNjU2YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDg2MjI4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlkMDQ0MWYyM2FlN2Q1YTNhNWIxMTQwNDk3ODY4ZWU2ZWVhYjY1NmIKQEAgLTAsMCArMSwyIEBACit7CisiiMMCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlkODkwYmQzMTM5YThmOWE0NGQ0MzVmZjhlZGZiZWI1YjA3MmRlZDAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWQ4OTBiZDMxMzlhOGY5YTQ0ZDQzNWZmOGVkZmJlYjViMDcyZGVkMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjhiZGUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlkODkwYmQzMTM5YThmOWE0NGQ0MzVmZjhlZGZiZWI1YjA3MmRlZDAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzllNmE1NWI2YjQ1NjNlNjUyYTIzYmU5ZDYyM2NhNTA1NWMzNTY5NDAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWU2YTU1YjZiNDU2M2U2NTJhMjNiZTlkNjIzY2E1MDU1YzM1Njk0MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWJmMTdmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzllNmE1NWI2YjQ1NjNlNjUyYTIzYmU5ZDYyM2NhNTA1NWMzNTY5NDAKQEAgLTAsMCArMSBAQAorMTgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWVjODg0MjBlZjA0MDg2NDJmNjkzMDk5NmUzNWY1YjlmMThlYzg4YyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85ZWM4ODQyMGVmMDQwODY0MmY2OTMwOTk2ZTM1ZjViOWYxOGVjODhjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MmVlYWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWVjODg0MjBlZjA0MDg2NDJmNjkzMDk5NmUzNWY1YjlmMThlYzg4YwpAQCAtMCwwICsxIEBACisiiMMiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzllZGQwNjdjNTY5MzE1ZDVlOTNiMGQxNGM3ZWFjOWZhNmQ4MWQzY2QgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWVkZDA2N2M1NjkzMTVkNWU5M2IwZDE0YzdlYWM5ZmE2ZDgxZDNjZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQwYTExCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzllZGQwNjdjNTY5MzE1ZDVlOTNiMGQxNGM3ZWFjOWZhNmQ4MWQzY2QKQEAgLTAsMCArMSBAQAorWzAuMzYyOSxdOTUgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlmYmRhNGY3MTQwNDNkOTc1Mzg5YjUzNmI0NDk3YzZkNzEzNDUyZTUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvOWZiZGE0ZjcxNDA0M2Q5NzUzODliNTM2YjQ0OTdjNmQ3MTM0NTJlNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDJjYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlmYmRhNGY3MTQwNDNkOTc1Mzg5YjUzNmI0NDk3YzZkNzEzNDUyZTUKQEAgLTAsMCArMSBAQAorWzIuNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85ZmM4Y2I4YWIzYjA1ZTMwNmU1ZTgxZDlkOTQ5ZTY5ZjkzMTI0NGVhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzLzlmYzhjYjhhYjNiMDVlMzA2ZTVlODFkOWQ5NDllNjlmOTMxMjQ0ZWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg1YjFjZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy85ZmM4Y2I4YWIzYjA1ZTMwNmU1ZTgxZDlkOTQ5ZTY5ZjkzMTI0NGVhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMDJiODU3ZjJlZmY3M2U4ZTE4OGYzNTUyOWRkOTFmODE0NGIyM2I5IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EwMmI4NTdmMmVmZjczZThlMTg4ZjM1NTI5ZGQ5MWY4MTQ0YjIzYjkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5OTgzYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMDJiODU3ZjJlZmY3M2U4ZTE4OGYzNTUyOWRkOTFmODE0NGIyM2I5CkBAIC0wLDAgKzEgQEAKKzI5NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMDYwZDViZmQxMjM1Y2JiZTRiY2VjZjMzMmZhM2IwM2JjMjI4MmUzIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EwNjBkNWJmZDEyMzVjYmJlNGJjZWNmMzMyZmEzYjAzYmMyMjgyZTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlYjM4YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMDYwZDViZmQxMjM1Y2JiZTRiY2VjZjMzMmZhM2IwM2JjMjI4MmUzCkBAIC0wLDAgKzEgQEAKKzgzMjRFNyIhO1wnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EwOTMxZmFlMWQ0M2U3ODg3YzFjYWJkZTgzZmRmYzUyZWFlZWRiYTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTA5MzFmYWUxZDQzZTc4ODdjMWNhYmRlODNmZGZjNTJlYWVlZGJhOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTUwYmUyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EwOTMxZmFlMWQ0M2U3ODg3YzFjYWJkZTgzZmRmYzUyZWFlZWRiYTgKQEAgLTAsMCArMSBAQAorIicsIVx1NjVFODg1MHsyMzEyOyk6iCkhKj8nvsqzsyEhqiHAKToqIeA6OjghOTpcdWRiRDhcdScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTFhYmU4YTc4NTAzMGQ0NzVhNzM1MDQzOGZkMjNhMDVjMzgyYzExMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMWFiZThhNzg1MDMwZDQ3NWE3MzUwNDM4ZmQyM2EwNWMzODJjMTEwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNGU0MmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTFhYmU4YTc4NTAzMGQ0NzVhNzM1MDQzOGZkMjNhMDVjMzgyYzExMApAQCAtMCwwICsxLDIgQEAKK1t7CisiiMMiIDoiiMMheykhOiIsfSKIiMM7IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMWZiODYyOTNlYWM5NTBjMmI0ZjUxODJkOWU0YjVkOWUwOTgyZWY2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ExZmI4NjI5M2VhYzk1MGMyYjRmNTE4MmQ5ZTRiNWQ5ZTA5ODJlZjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiMWRkMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMWZiODYyOTNlYWM5NTBjMmI0ZjUxODJkOWU0YjVkOWUwOTgyZWY2CkBAIC0wLDAgKzEgQEAKKzFlKzIsWzJ9MYg1e8MiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EyZDRlM2Q2ZjViYTQzYzkxOTlkNWQyMDExNjc4ZjgyY2ZkNTVhZmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTJkNGUzZDZmNWJhNDNjOTE5OWQ1ZDIwMTE2NzhmODJjZmQ1NWFmYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmQyMzM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EyZDRlM2Q2ZjViYTQzYzkxOTlkNWQyMDExNjc4ZjgyY2ZkNTVhZmMKQEAgLTAsMCArMSBAQAorW3siiFxcdDV7KSE6KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMzk2NTNjYjNkOTdjNThjNDQwMTMxOTdmNGQ3NTU3NTc3NzAwMTc3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2EzOTY1M2NiM2Q5N2M1OGM0NDAxMzE5N2Y0ZDc1NTc1Nzc3MDAxNzcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2NjdjYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hMzk2NTNjYjNkOTdjNThjNDQwMTMxOTdmNGQ3NTU3NTc3NzAwMTc3CkBAIC0wLDAgKzEgQEAKK1t0cnVlWygwLjE5MztdNCoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTRjNzRhZDU2YWUwZTk0ZTk2MTAxYThmMmNlOWIxZTU4OGRmNWU0NCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hNGM3NGFkNTZhZTBlOTRlOTYxMDFhOGYyY2U5YjFlNTg4ZGY1ZTQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTkzNmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTRjNzRhZDU2YWUwZTk0ZTk2MTAxYThmMmNlOWIxZTU4OGRmNWU0NApAQCAtMCwwICsxIEBACit7XSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTZiMzRiMDZiMDBlOTIyNmYyYmQ5NjE0ODNmOWRhODFkOGRlOTlhOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hNmIzNGIwNmIwMGU5MjI2ZjJiZDk2MTQ4M2Y5ZGE4MWQ4ZGU5OWE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZmJlZjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTZiMzRiMDZiMDBlOTIyNmYyYmQ5NjE0ODNmOWRhODFkOGRlOTlhOApAQCAtMCwwICsxIEBACit7IipdOsMheym+PyfKs7MgOiEp4CEqOirgOjo6XHVkYkQ4XFwpeyF1wzp7IWAhP2C+viIpKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTcyYzNiOWNjNzFlYjdmMGUwZTRkYWJjZDJkY2QyYjk5N2YyMWMwNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hNzJjM2I5Y2M3MWViN2YwZTBlNGRhYmNkMmRjZDJiOTk3ZjIxYzA3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjIzNzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTcyYzNiOWNjNzFlYjdmMGUwZTRkYWJjZDJkY2QyYjk5N2YyMWMwNwpAQCAtMCwwICsxIEBACiswLjkgfUczClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E3NDlkMjRiYWM1NWJjMTk0NjVhY2M5MmIxMjI0NGM1NmNhMGYyMGQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTc0OWQyNGJhYzU1YmMxOTQ2NWFjYzkyYjEyMjQ0YzU2Y2EwZjIwZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmM2YWJkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E3NDlkMjRiYWM1NWJjMTk0NjVhY2M5MmIxMjI0NGM1NmNhMGYyMGQKQEAgLTAsMCArMSBAQAorfUczClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E3ODAwOWZmOGIzZjRkNzIyZWUwZWI4NDc5NWU4NTdlNzRhNThhZWEgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTc4MDA5ZmY4YjNmNGQ3MjJlZTBlYjg0Nzk1ZTg1N2U3NGE1OGFlYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjE3NThlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E3ODAwOWZmOGIzZjRkNzIyZWUwZWI4NDc5NWU4NTdlNzRhNThhZWEKQEAgLTAsMCArMSBAQAorMzgzNjI3OEUzNDQ7MkU7KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTdhZTRiMTY2Nzc4MDZkNzhkMDAxNmMyNzZiNjcyMmViYThlZWYzYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hN2FlNGIxNjY3NzgwNmQ3OGQwMDE2YzI3NmI2NzIyZWJhOGVlZjNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MjkxNmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTdhZTRiMTY2Nzc4MDZkNzhkMDAxNmMyNzZiNjcyMmViYThlZWYzYwpAQCAtMCwwICsxIEBACiswLjcyNDc5MC7cMzI5OTYgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hODA2ZjQzZGQ0OGUzNWU3NWMyNzgxNGMxM2EyYTk2YzEyNDQ5YmQxIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E4MDZmNDNkZDQ4ZTM1ZTc1YzI3ODE0YzEzYTJhOTZjMTI0NDliZDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE3MjVkYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hODA2ZjQzZGQ0OGUzNWU3NWMyNzgxNGMxM2EyYTk2YzEyNDQ5YmQxCkBAIC0wLDAgKzEgQEAKK1syLjE0OTEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTkwYTg1ODAxM2Y5MGQyYTk0ZTBkNjJhNzE1NmZmZDY4NDhiZjIzOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hOTBhODU4MDEzZjkwZDJhOTRlMGQ2MmE3MTU2ZmZkNjg0OGJmMjM4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNjYzN2EKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTkwYTg1ODAxM2Y5MGQyYTk0ZTBkNjJhNzE1NmZmZDY4NDhiZjIzOApAQCAtMCwwICsxIEBACitbeyKIw1xuNXspIToqXSl7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E5NGJmYmZlMTZkMDI2YjUyZDdmNzNjZjc4ZmRmN2Q2YTZjNWM1OGIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTk0YmZiZmUxNmQwMjZiNTJkN2Y3M2NmNzhmZGY3ZDZhNmM1YzU4YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njc4ZmJhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E5NGJmYmZlMTZkMDI2YjUyZDdmNzNjZjc4ZmRmN2Q2YTZjNWM1OGIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E5NzE4ZjAyOWQxMWE5MzM1ZWY1OTZjYmQ0Mjc5NGRlNWIwYjE4YjUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYTk3MThmMDI5ZDExYTkzMzVlZjU5NmNiZDQyNzk0ZGU1YjBiMThiNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGE5NjliCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2E5NzE4ZjAyOWQxMWE5MzM1ZWY1OTZjYmQ0Mjc5NGRlNWIwYjE4YjUKQEAgLTAsMCArMSBAQAorMC45IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYTZlMDhhNDg4ZDFlZDAwYWE1MWYyMGMyNDc3ZmM4OWU3YjBhODUyIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FhNmUwOGE0ODhkMWVkMDBhYTUxZjIwYzI0NzdmYzg5ZTdiMGE4NTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NGFjMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYTZlMDhhNDg4ZDFlZDAwYWE1MWYyMGMyNDc3ZmM4OWU3YjBhODUyCkBAIC0wLDAgKzEsMiBAQAorW3sKKyKIwyIgOiKIwyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWFhMDM4NTEzYzE5MmZlYzUwMWU0ZTczMDIxNTY4NzJjZTJmZGUzNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYWEwMzg1MTNjMTkyZmVjNTAxZTRlNzMwMjE1Njg3MmNlMmZkZTM3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NTljMmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWFhMDM4NTEzYzE5MmZlYzUwMWU0ZTczMDIxNTY4NzJjZTJmZGUzNwpAQCAtMCwwICsxLDIgQEAKKy0yOgorcH01ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FjMjY4NmMwOTVhNWExYzkyYTFkNDIwOWE2YzI4Nzc3ODcyMGM4NmQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWMyNjg2YzA5NWE1YTFjOTJhMWQ0MjA5YTZjMjg3Nzc4NzIwYzg2ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDJmMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FjMjY4NmMwOTVhNWExYzkyYTFkNDIwOWE2YzI4Nzc3ODcyMGM4NmQKQEAgLTAsMCArMSBAQAorWzIuMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYzM0NzhkNjlhM2M4MWZhNjJlNjBmNWMzNjk2MTY1YTRlNWU2YWM0IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FjMzQ3OGQ2OWEzYzgxZmE2MmU2MGY1YzM2OTYxNjVhNGU1ZTZhYzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMzY4MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYzM0NzhkNjlhM2M4MWZhNjJlNjBmNWMzNjk2MTY1YTRlNWU2YWM0CkBAIC0wLDAgKzEgQEAKKzUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWM5MjMxZGE0MDgyNDMwYWZlOGY0ZDQwMTI3ODE0YzYxMzY0OGQ4ZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hYzkyMzFkYTQwODI0MzBhZmU4ZjRkNDAxMjc4MTRjNjEzNjQ4ZDhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMWE2YmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWM5MjMxZGE0MDgyNDMwYWZlOGY0ZDQwMTI3ODE0YzYxMzY0OGQ4ZQpAQCAtMCwwICsxIEBACisJClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FkYzgzYjE5ZTc5MzQ5MWIxYzZlYTBmZDhiNDZjZDlmMzJlNTkyZmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWRjODNiMTllNzkzNDkxYjFjNmVhMGZkOGI0NmNkOWYzMmU1OTJmYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2FkYzgzYjE5ZTc5MzQ5MWIxYzZlYTBmZDhiNDZjZDlmMzJlNTkyZmMKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWZmMjVlNTY5YmQ4YzkzMTU3ZTA4Y2QxOGViY2Q4OTY0MzhlMzRjOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hZmYyNWU1NjliZDhjOTMxNTdlMDhjZDE4ZWJjZDg5NjQzOGUzNGM5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNDI0MzAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWZmMjVlNTY5YmQ4YzkzMTU3ZTA4Y2QxOGViY2Q4OTY0MzhlMzRjOQpAQCAtMCwwICsxIEBACit7IiggXCEnKFwnIQ8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWZmY2VkODE2OGVjODAxZGU4OWRlYWM2NjNmNzA4ZjBjOTZjZjFhNCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9hZmZjZWQ4MTY4ZWM4MDFkZTg5ZGVhYzY2M2Y3MDhmMGM5NmNmMWE0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NzlmYmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYWZmY2VkODE2OGVjODAxZGU4OWRlYWM2NjNmNzA4ZjBjOTZjZjFhNApAQCAtMCwwICsxIEBACit0OTIgXCc4NjJFNTE3OykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjAxNWRmYzJmNjJiNjQwZDdjMjVhZGFiN2IzOGM1ZmNiNWNiNjRjOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iMDE1ZGZjMmY2MmI2NDBkN2MyNWFkYWI3YjM4YzVmY2I1Y2I2NGM4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZmZlZmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjAxNWRmYzJmNjJiNjQwZDdjMjVhZGFiN2IzOGM1ZmNiNWNiNjRjOApAQCAtMCwwICsxIEBACis1OEUrszR5OzApiAkpIcMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjAyMWRkN2NkOThiNjMwOTI2ODVlYTA5MmRmMGRjMDFjOGY2MzMzNCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iMDIxZGQ3Y2Q5OGI2MzA5MjY4NWVhMDkyZGYwZGMwMWM4ZjYzMzM0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNzg5YjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjAyMWRkN2NkOThiNjMwOTI2ODVlYTA5MmRmMGRjMDFjOGY2MzMzNApAQCAtMCwwICsxIEBACit7IipdOsMheym+PyfKs7MgOioh4Ck6ISrgOjo6XHVkYkQ4XHU4MTNlMTIpIXvDOnshYCE/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2IxNzQ4NWI4YmRlYzg4MDliMzgxOWE4Mzc1M2NhODkzODcxZGY0MDMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjE3NDg1YjhiZGVjODgwOWIzODE5YTgzNzUzY2E4OTM4NzFkZjQwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzVhZDUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2IxNzQ4NWI4YmRlYzg4MDliMzgxOWE4Mzc1M2NhODkzODcxZGY0MDMKQEAgLTAsMCArMSBAQAorMCzTKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iMzJlZjUxZWNhOWM2YzY1OGU2ZmI3NWZkZjk2YmJiYTA2NjQwNGU3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2IzMmVmNTFlY2E5YzZjNjU4ZTZmYjc1ZmRmOTZiYmJhMDY2NDA0ZTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4Mzc2NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iMzJlZjUxZWNhOWM2YzY1OGU2ZmI3NWZkZjk2YmJiYTA2NjQwNGU3CkBAIC0wLDAgKzEgQEAKK2ZhbHMlKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iM2YwYzdmNmJiNzYzYWYxYmU5MWQ5ZTc0ZWFiZmViMTk5ZGMxZjFmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2IzZjBjN2Y2YmI3NjNhZjFiZTkxZDllNzRlYWJmZWIxOTlkYzFmMWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjMmJmNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iM2YwYzdmNmJiNzYzYWYxYmU5MWQ5ZTc0ZWFiZmViMTk5ZGMxZjFmCkBAIC0wLDAgKzEgQEAKKzE5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I0NWExNjM1ZWM1MjZiY2M4OTBmOWQ3MzU5NzY3MDRlNTE2YzVmMTkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjQ1YTE2MzVlYzUyNmJjYzg5MGY5ZDczNTk3NjcwNGU1MTZjNWYxOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGYzOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I0NWExNjM1ZWM1MjZiY2M4OTBmOWQ3MzU5NzY3MDRlNTE2YzVmMTkKQEAgLTAsMCArMSBAQAoreyIiOighJyhcJyEPClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I1MGNlNTFhN2JhYTI4Y2QyOThlYmQwNWI0YTNiOWI3MGY5ZDQzNzAgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjUwY2U1MWE3YmFhMjhjZDI5OGViZDA1YjRhM2I5YjcwZjlkNDM3MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjlhMTE0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I1MGNlNTFhN2JhYTI4Y2QyOThlYmQwNWI0YTNiOWI3MGY5ZDQzNzAKQEAgLTAsMCArMSBAQAorODMyODM0RTRFOzY7KSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjUxMjY3MjE4MTJiOTI1NDI2YjMwZDI4M2QyYmI4YjY5NjlmMjMwYSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNTEyNjcyMTgxMmI5MjU0MjZiMzBkMjgzZDJiYjhiNjk2OWYyMzBhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZDc3MzQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjUxMjY3MjE4MTJiOTI1NDI2YjMwZDI4M2QyYmI4YjY5NjlmMjMwYQpAQCAtMCwwICsxIEBACis1RTkJMyfBOCkyMzI7KTYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjU3YWY5NDNhM2VlNDExYmZmZWFhMzg3MmVlYzljNmZiMDE1NjlhNCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNTdhZjk0M2EzZWU0MTFiZmZlYWEzODcyZWVjOWM2ZmIwMTU2OWE0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OTcwZGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjU3YWY5NDNhM2VlNDExYmZmZWFhMzg3MmVlYzljNmZiMDE1NjlhNApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjVhYmY2ZmQyMmVkMGY4NTI3ODFkZTM1ZDA0MzA1OWQwZjg2ZjNjZCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNWFiZjZmZDIyZWQwZjg1Mjc4MWRlMzVkMDQzMDU5ZDBmODZmM2NkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZjQxNmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjVhYmY2ZmQyMmVkMGY4NTI3ODFkZTM1ZDA0MzA1OWQwZjg2ZjNjZApAQCAtMCwwICsxIEBACiswLGYnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNjU4OWZjNmFiMGRjODJjZjEyMDk5ZDFjMmQ0MGFiOTk0ZTg0MTBjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I2NTg5ZmM2YWIwZGM4MmNmMTIwOTlkMWMyZDQwYWI5OTRlODQxMGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyNzA4MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNjU4OWZjNmFiMGRjODJjZjEyMDk5ZDFjMmQ0MGFiOTk0ZTg0MTBjCkBAIC0wLDAgKzEgQEAKKzAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjZmMTkyMzhkMmIwNGM1Yjg2YTE3MzY5MDkzZGFmZGEzNGYzMzJlNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iNmYxOTIzOGQyYjA0YzViODZhMTczNjkwOTNkYWZkYTM0ZjMzMmU3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMWVkYjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjZmMTkyMzhkMmIwNGM1Yjg2YTE3MzY5MDkzZGFmZGEzNGYzMzJlNwpAQCAtMCwwICsxLDIgQEAKKyIpCivoIojDeykhOiq+OyEnyrOzISEqIeApOiEqIojDeykhOipdKeAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjg1OGNiMjgyNjE3ZmIwOTU2ZDk2MDIxNWM4ZTg0ZDFjY2Y5MDljNiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iODU4Y2IyODI2MTdmYjA5NTZkOTYwMjE1YzhlODRkMWNjZjkwOWM2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MTllY2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjg1OGNiMjgyNjE3ZmIwOTU2ZDk2MDIxNWM4ZTg0ZDFjY2Y5MDljNgpAQCAtMCwwICsxIEBACisgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I5YzM4ZmFkMDljODBkYjc3ODFmZWZiZTUxMDM5NzUyZGU1NzVlY2MgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYjljMzhmYWQwOWM4MGRiNzc4MWZlZmJlNTEwMzk3NTJkZTU3NWVjYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTZkM2JjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2I5YzM4ZmFkMDljODBkYjc3ODFmZWZiZTUxMDM5NzUyZGU1NzVlY2MKQEAgLTAsMCArMSBAQAorM2U0NSEwMTiBNjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmI0MDdjODk5MjgwMDQ0NDIwMWRjY2ZlNzQ0ZGFjNDljMDI5NWZkZSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iYjQwN2M4OTkyODAwNDQ0MjAxZGNjZmU3NDRkYWM0OWMwMjk1ZmRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ODRhNmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmI0MDdjODk5MjgwMDQ0NDIwMWRjY2ZlNzQ0ZGFjNDljMDI5NWZkZQpAQCAtMCwwICsxIEBACit7IiEoIVx0JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iYzMzNTczNGY3MzUwMmI5MmQyYmQzNTg3MjU5Y2U5MTU5ODVmMGVlIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2JjMzM1NzM0ZjczNTAyYjkyZDJiZDM1ODcyNTljZTkxNTk4NWYwZWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjZTZjZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iYzMzNTczNGY3MzUwMmI5MmQyYmQzNTg3MjU5Y2U5MTU5ODVmMGVlCkBAIC0wLDAgKzEgQEAKKzAuNjk5NSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmQxMTNjMmM4YTIzMjhlMzY3NGM2ODBjN2NmZjgyOWE2YzhhYjkyNCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZDExM2MyYzhhMjMyOGUzNjc0YzY4MGM3Y2ZmODI5YTZjOGFiOTI0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ODk0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmQxMTNjMmM4YTIzMjhlMzY3NGM2ODBjN2NmZjgyOWE2YzhhYjkyNApAQCAtMCwwICsxIEBACitbMi4xMDsyO64KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmUwNTFkNTgwMTVkNGFmMTk3N2E1ZGZkMTRlZjNmZDA3MGVjYzlkMiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZTA1MWQ1ODAxNWQ0YWYxOTc3YTVkZmQxNGVmM2ZkMDcwZWNjOWQyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NmFlMGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmUwNTFkNTgwMTVkNGFmMTk3N2E1ZGZkMTRlZjNmZDA3MGVjYzlkMgpAQCAtMCwwICsxIEBACis5IQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZTQ2MWEwY2QxZmRhMDUyYTY5YzNmZDk0ZjhjZjVmNmY4NmFmYTM0IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2JlNDYxYTBjZDFmZGEwNTJhNjljM2ZkOTRmOGNmNWY2Zjg2YWZhMzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhOTA2MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZTQ2MWEwY2QxZmRhMDUyYTY5YzNmZDk0ZjhjZjVmNmY4NmFmYTM0CkBAIC0wLDAgKzEgQEAKKzg0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2JlZjUyNDUwMmY4ZGJiYzQ1YWY3MTdlY2UwMWVjODhlZGQ3ZjkwM2IgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYmVmNTI0NTAyZjhkYmJjNDVhZjcxN2VjZTAxZWM4OGVkZDdmOTAzYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTQyYjEyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2JlZjUyNDUwMmY4ZGJiYzQ1YWY3MTdlY2UwMWVjODhlZGQ3ZjkwM2IKQEAgLTAsMCArMSBAQAorMTNlMTA4gTU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZjIxYTllOGZiYzVhMzg0NmZiMDViNGZhMDg1OWUwOTE3YjIyMDJmIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2JmMjFhOWU4ZmJjNWEzODQ2ZmIwNWI0ZmEwODU5ZTA5MTdiMjIwMmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyNmRmZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9iZjIxYTllOGZiYzVhMzg0NmZiMDViNGZhMDg1OWUwOTE3YjIyMDJmCkBAIC0wLDAgKzEgQEAKK3t9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MwYjZhOTA4MzJiNzhlZDVmNmQxMjlkMzY0MGM2MTI1NDA1MjdjODUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzBiNmE5MDgzMmI3OGVkNWY2ZDEyOWQzNjQwYzYxMjU0MDUyN2M4NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDNjZmMxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MwYjZhOTA4MzJiNzhlZDVmNmQxMjlkMzY0MGM2MTI1NDA1MjdjODUKQEAgLTAsMCArMSBAQAoreyInIVx1M8I6igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jMThkMzE1ZjBkMzU4NDliMmFhZTRhNDdjYWI0NjA4MjA0Yjg1ZDc2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MxOGQzMTVmMGQzNTg0OWIyYWFlNGE0N2NhYjQ2MDgyMDRiODVkNzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4MmM1NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jMThkMzE1ZjBkMzU4NDliMmFhZTRhNDdjYWI0NjA4MjA0Yjg1ZDc2CkBAIC0wLDAgKzEsMiBAQAorW3siKQor6CKIw3spIToqvjshJ8qzsyEhKiHgKTohKiKIw3spIToqXSngClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MyNTdmZDZiYzllNTI1NGE3MzMzNzhhYjRkZGQzOTYyOWM0YTMwNjkgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzI1N2ZkNmJjOWU1MjU0YTczMzM3OGFiNGRkZDM5NjI5YzRhMzA2OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDQwYTVlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MyNTdmZDZiYzllNTI1NGE3MzMzNzhhYjRkZGQzOTYyOWM0YTMwNjkKQEAgLTAsMCArMSBAQAorMTNlMTI4gTU2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jMmJmN2Y0OWQ4ZjJlMTNhNjBhZjQ0NzNiM2IzNDUxYjY1YjNhYTlhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MyYmY3ZjQ5ZDhmMmUxM2E2MGFmNDQ3M2IzYjM0NTFiNjViM2FhOWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y5ZTRhNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jMmJmN2Y0OWQ4ZjJlMTNhNjBhZjQ0NzNiM2IzNDUxYjY1YjNhYTlhCkBAIC0wLDAgKzEgQEAKKzFlKzIxODiBNTYwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MzMDg1MTdhY2Y2ZjcwODg2MzRkNDkxYTE2MDgyNDBmODNhM2FjOTUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzMwODUxN2FjZjZmNzA4ODYzNGQ0OTFhMTYwODI0MGY4M2EzYWM5NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzU2NDc0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2MzMDg1MTdhY2Y2ZjcwODg2MzRkNDkxYTE2MDgyNDBmODNhM2FjOTUKQEAgLTAsMCArMSBAQAorMC40Mhk33CQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzNiYWRkNzFlZjhhNTFiOTdjZTkzY2JmZTk5ZjY3NzgwNDhmMjEyOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jM2JhZGQ3MWVmOGE1MWI5N2NlOTNjYmZlOTlmNjc3ODA0OGYyMTI4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMTBlMDgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzNiYWRkNzFlZjhhNTFiOTdjZTkzY2JmZTk5ZjY3NzgwNDhmMjEyOApAQCAtMCwwICsxIEBACiszKApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jNDgyYTYzMjcwMmFlN2Y1MzJkMTI2ZTcwMTQ5ZGRhNGZhZGMzY2Q3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M0ODJhNjMyNzAyYWU3ZjUzMmQxMjZlNzAxNDlkZGE0ZmFkYzNjZDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0MTM2OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jNDgyYTYzMjcwMmFlN2Y1MzJkMTI2ZTcwMTQ5ZGRhNGZhZGMzY2Q3CkBAIC0wLDAgKzEgQEAKKzAuMjk5NiAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzU0MWJiODZlNTViOThlMDgzYjE0MTExNDA2NmY5YzE3ZDg1MzM3NCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jNTQxYmI4NmU1NWI5OGUwODNiMTQxMTE0MDY2ZjljMTdkODUzMzc0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNjI5ODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzU0MWJiODZlNTViOThlMDgzYjE0MTExNDA2NmY5YzE3ZDg1MzM3NApAQCAtMCwwICsxIEBACitbW1siiMN7KSE6Kr47PyfKs7MhISoh4Ck6ISrgOjo6XHUwNjA5OS55MmRiKTiIwyEzOyGHOnshYCEuNzs/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M1YjUwYjkwMTViNmFhZWRkN2ViMTA3N2IxMjA0ODU4ZjgzN2I1M2MgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzViNTBiOTAxNWI2YWFlZGQ3ZWIxMDc3YjEyMDQ4NThmODM3YjUzYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWIyNmVkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M1YjUwYjkwMTViNmFhZWRkN2ViMTA3N2IxMjA0ODU4ZjgzN2I1M2MKQEAgLTAsMCArMSBAQAorIicsIVx1NjVFODg1MHsyMzEyOyk6iCkhKj8nvsqzMC6zISGqIcApOioh4Do6OCE5Olx1ZGJEOFx1ODI1MTAnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M2MmVmMGRiZDEzNTBkYTllYTVhMzJlNTY2NzJkMzg1ODM3NjQzZTcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzYyZWYwZGJkMTM1MGRhOWVhNWEzMmU1NjY3MmQzODU4Mzc2NDNlNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2FjNjg3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M2MmVmMGRiZDEzNTBkYTllYTVhMzJlNTY2NzJkMzg1ODM3NjQzZTcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M3YTM0ZDZkNDllMWRhMWNjZDQ5MDM1MGMyZGYzYTE2OGVkMDlhZTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzdhMzRkNmQ0OWUxZGExY2NkNDkwMzUwYzJkZjNhMTY4ZWQwOWFlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDA2ZTQzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M3YTM0ZDZkNDllMWRhMWNjZDQ5MDM1MGMyZGYzYTE2OGVkMDlhZTgKQEAgLTAsMCArMSwzIEBACit7CisiiFsyIjp7fQorNYnDWyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzg4YzRiZWM4ZDQ0MGM1NmQzZWE3YWJjZTM5Mjc2ZjA5MjdkYmUwYSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jODhjNGJlYzhkNDQwYzU2ZDNlYTdhYmNlMzkyNzZmMDkyN2RiZTBhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NDIxMjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzg4YzRiZWM4ZDQ0MGM1NmQzZWE3YWJjZTM5Mjc2ZjA5MjdkYmUwYQpAQCAtMCwwICsxIEBACiszMygKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzkyZjE0N2JmYzAzNDAwM2FjNDJlZDllNjJhMTZjODQxMDJhYjQxNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jOTJmMTQ3YmZjMDM0MDAzYWM0MmVkOWU2MmExNmM4NDEwMmFiNDE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYWU0YjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzkyZjE0N2JmYzAzNDAwM2FjNDJlZDllNjJhMTZjODQxMDJhYjQxNwpAQCAtMCwwICsxIEBACitbWzIuMTkzLF00iMMiKigiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M5NmIwZmU2MDM0NjY4ZWRmMzdlZjBmNWYzOTFkNTEwNzk1M2RjMDYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvYzk2YjBmZTYwMzQ2NjhlZGYzN2VmMGY1ZjM5MWQ1MTA3OTUzZGMwNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzViYzM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2M5NmIwZmU2MDM0NjY4ZWRmMzdlZjBmNWYzOTFkNTEwNzk1M2RjMDYKQEAgLTAsMCArMSBAQAorODE2MkU1MTc7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jYWM3NGFhNWQ3YWFiN2ZjZTAyNTNmMDBjMWEwMjU5ODBjMWY5YjdhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NhYzc0YWE1ZDdhYWI3ZmNlMDI1M2YwMGMxYTAyNTk4MGMxZjliN2EKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjOGIyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jYWM3NGFhNWQ3YWFiN2ZjZTAyNTNmMDBjMWEwMjU5ODBjMWY5YjdhCkBAIC0wLDAgKzEgQEAKKyBcJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jYWVhMGEwZTZkODcwOGNmNjgyZWFhNDQ2YzM0NGRhNTZhN2Q1NTE1IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NhZWEwYTBlNmQ4NzA4Y2Y2ODJlYWE0NDZjMzQ0ZGE1NmE3ZDU1MTUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY3ZDg1MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jYWVhMGEwZTZkODcwOGNmNjgyZWFhNDQ2YzM0NGRhNTZhN2Q1NTE1CkBAIC0wLDAgKzEgQEAKKyIhMn1HIVwEJycpeTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2M4YTNkZDI2NzhkNGI0MDBhZDYzMGY0MDIwMTJiODk0ZTg0MWIwNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jYzhhM2RkMjY3OGQ0YjQwMGFkNjMwZjQwMjAxMmI4OTRlODQxYjA1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMTVmODEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2M4YTNkZDI2NzhkNGI0MDBhZDYzMGY0MDIwMTJiODk0ZTg0MWIwNQpAQCAtMCwwICsxIEBACisiOSFbXGYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2Q4NTFiZWM3YWRhZDUyZjc5Nzc3ZmI5MzQ3ZDVmZDJmOTQ4NmFhNyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZDg1MWJlYzdhZGFkNTJmNzk3NzdmYjkzNDdkNWZkMmY5NDg2YWE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGIxZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2Q4NTFiZWM3YWRhZDUyZjc5Nzc3ZmI5MzQ3ZDVmZDJmOTQ4NmFhNwpAQCAtMCwwICsxIEBACit7IicsIQFcdUAnOooKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2UzODk5YjYyYmEzZWZlMDBlYjMxZGRhZDI4NjFmZmUxNmEzMGQwNiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZTM4OTliNjJiYTNlZmUwMGViMzFkZGFkMjg2MWZmZTE2YTMwZDA2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYmQ4MmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2UzODk5YjYyYmEzZWZlMDBlYjMxZGRhZDI4NjFmZmUxNmEzMGQwNgpAQCAtMCwwICsxIEBACitbW1siiMN7KSE6Kr47PyfKs7MhISoh4Ck6ISrgOjo6XFwwNjA5OS55MmRiKTiIwyEzOyGHOnshYCEuNzs/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NlOGI3NmZkY2RiZjFjOTUxYWZjMmIxMTViZTlhY2M4YTYzNThiMzIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2U4Yjc2ZmRjZGJmMWM5NTFhZmMyYjExNWJlOWFjYzhhNjM1OGIzMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWNkMDdhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NlOGI3NmZkY2RiZjFjOTUxYWZjMmIxMTViZTlhY2M4YTYzNThiMzIKQEAgLTAsMCArMSBAQAorODMyNEU1MTI7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZWM4N2I2Nzg3MWZjN2E1OTY1MmJjMzU0NmZiYmI2OGU0ZDMxZTI4IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NlYzg3YjY3ODcxZmM3YTU5NjUyYmMzNTQ2ZmJiYjY4ZTRkMzFlMjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlMWNmNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZWM4N2I2Nzg3MWZjN2E1OTY1MmJjMzU0NmZiYmI2OGU0ZDMxZTI4CkBAIC0wLDAgKzEsMiBAQAorW3sKKyKIwyIgOiKIwyF7KSE6IiwiiIjDwyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2YzMjQwNjExMTkwODU0NGU1MDRjODQ3MzExNDdmMDcyY2RmMmZiZCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZjMyNDA2MTExOTA4NTQ0ZTUwNGM4NDczMTE0N2YwNzJjZGYyZmJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDFlZjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2YzMjQwNjExMTkwODU0NGU1MDRjODQ3MzExNDdmMDcyY2RmMmZiZApAQCAtMCwwICsxIEBACis2MjAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2YzNWRjNzZiZjlhMjA1MjYzNmMxZWNjOTI5NDIxNjE4MzBkY2RjMyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZjM1ZGM3NmJmOWEyMDUyNjM2YzFlY2M5Mjk0MjE2MTgzMGRjZGMzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MDE0MjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2YzNWRjNzZiZjlhMjA1MjYzNmMxZWNjOTI5NDIxNjE4MzBkY2RjMwpAQCAtMCwwICsxIEBACisJM8E2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NmNmE1ZTZiZmU0ZjE1YjQzZTQxMWRkMjc4MmUxMGYxNjcwYzk3NjcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2Y2YTVlNmJmZTRmMTViNDNlNDExZGQyNzgyZTEwZjE2NzBjOTc2NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGMwZDEwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NmNmE1ZTZiZmU0ZjE1YjQzZTQxMWRkMjc4MmUxMGYxNjcwYzk3NjcKQEAgLTAsMCArMSBAQAorMzAuNUU4OyE0OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZmM0NTYxNmY1ZjBlN2MyNWRmOTFmNjk4NGZmNWY2ZjE2NDhiZWFiIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NmYzQ1NjE2ZjVmMGU3YzI1ZGY5MWY2OTg0ZmY1ZjZmMTY0OGJlYWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkYjlhNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZmM0NTYxNmY1ZjBlN2MyNWRmOTFmNjk4NGZmNWY2ZjE2NDhiZWFiCkBAIC0wLDAgKzEgQEAKK3siJywhXHU2NUU4ODUwezIzMTI7KTqIKSEqPye+yrOzISGqIcApOioh4Do6OCE5Olx1ZGJEOFw2JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZmY4OTFlNTg1OGFlNjhkMDhlY2M4NDcwY2E2YTY4Yzk0MzhiZmEzIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NmZjg5MWU1ODU4YWU2OGQwOGVjYzg0NzBjYTZhNjhjOTQzOGJmYTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmMzllYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZmY4OTFlNTg1OGFlNjhkMDhlY2M4NDcwY2E2YTY4Yzk0MzhiZmEzCkBAIC0wLDAgKzEgQEAKK3siKl06yyF7Kb4/J8qzsyAhKiHgKTohKuA6OjpcdWRiRDggISkhe8M6eyFgIT9gvr4iKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2ZmZjRlOWQwOGNiYTgxYjY2M2RkMTk5OTcxMDAwODM0Mjg1MWUxOSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jZmZmNGU5ZDA4Y2JhODFiNjYzZGQxOTk5NzEwMDA4MzQyODUxZTE5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNGQ1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvY2ZmZjRlOWQwOGNiYTgxYjY2M2RkMTk5OTcxMDAwODM0Mjg1MWUxOQpAQCAtMCwwICsxIEBACitudWwqOgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jcmFzaC1mMjE4NjdmZThiNmRmMGI1NGMxM2UyZTZlNjEzZGNlODcxZWNmMGYwIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2NyYXNoLWYyMTg2N2ZlOGI2ZGYwYjU0YzEzZTJlNmU2MTNkY2U4NzFlY2YwZjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQzYmNmZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9jcmFzaC1mMjE4NjdmZThiNmRmMGI1NGMxM2UyZTZlNjEzZGNlODcxZWNmMGYwCkBAIC0wLDAgKzEgQEAKK4gpwyE6eyIqvj8nyrOzISEqIeApOiEq4Do6Olx1ZGJEOIgpwyE6eyFgIT9gvr4hPychKm0sJyk7hSdgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2QxZGIwM2M2MjZmYjE2YzNiOWNkNDRjYzM4Y2Y0MGViZDM1NWExOTQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZDFkYjAzYzYyNmZiMTZjM2I5Y2Q0NGNjMzhjZjQwZWJkMzU1YTE5NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjkyYjUyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2QxZGIwM2M2MjZmYjE2YzNiOWNkNDRjYzM4Y2Y0MGViZDM1NWExOTQKQEAgLTAsMCArMSBAQAorODMyNEU2ODQ7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kODVjYTA1MWRhNzg0YzA0NDE4OThjNWFmZmJmMTFhMmFlOGY1NmJjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Q4NWNhMDUxZGE3ODRjMDQ0MTg5OGM1YWZmYmYxMWEyYWU4ZjU2YmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZjI1MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kODVjYTA1MWRhNzg0YzA0NDE4OThjNWFmZmJmMTFhMmFlOGY1NmJjCkBAIC0wLDAgKzEgQEAKK1tbWyKIw3spIToqvjs/J8qzsyEhKiHgKTohKuA6OjpcdTAwNDkueTJkYik4iMMhMzshhzdgIXs6IS47PwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kYTAzZjUzNmNlYWY2MDk5NzJhYTJhNjk5Njg3Y2M2ZjczYWMwZGNkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RhMDNmNTM2Y2VhZjYwOTk3MmFhMmE2OTk2ODdjYzZmNzNhYzBkY2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlZmE3YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kYTAzZjUzNmNlYWY2MDk5NzJhYTJhNjk5Njg3Y2M2ZjczYWMwZGNkCkBAIC0wLDAgKzEgQEAKKyI3IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kYTRiOTIzN2JhY2NjZGYxOWMwNzYwY2FiN2FlYzRhODM1OTAxMGIwIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RhNGI5MjM3YmFjY2NkZjE5YzA3NjBjYWI3YWVjNGE4MzU5MDEwYjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyNjNlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kYTRiOTIzN2JhY2NjZGYxOWMwNzYwY2FiN2FlYzRhODM1OTAxMGIwCkBAIC0wLDAgKzEgQEAKKzIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGNjNDVlNDA1MjA4ZDdhMmRiMzNkMGI1YjlkYTJhMmYxYjAzNDk1NyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kY2M0NWU0MDUyMDhkN2EyZGIzM2QwYjViOWRhMmEyZjFiMDM0OTU3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNThjMzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGNjNDVlNDA1MjA4ZDdhMmRiMzNkMGI1YjlkYTJhMmYxYjAzNDk1NwpAQCAtMCwwICsxIEBACiswLjUhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RjYzYwZDNhYWExZmM0ZDAwMjAxYTM1MTIyODRmY2I3OWI1YjY4ZWYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGNjNjBkM2FhYTFmYzRkMDAyMDFhMzUxMjI4NGZjYjc5YjViNjhlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTE1YTc0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RjYzYwZDNhYWExZmM0ZDAwMjAxYTM1MTIyODRmY2I3OWI1YjY4ZWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RkMDU2N2FlNTdiZjNjYzg1ODkxYTFjYTk4OGMyOTQ1ZDkxODY2NzggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGQwNTY3YWU1N2JmM2NjODU4OTFhMWNhOTg4YzI5NDVkOTE4NjY3OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTA1ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RkMDU2N2FlNTdiZjNjYzg1ODkxYTFjYTk4OGMyOTQ1ZDkxODY2NzgKQEAgLTAsMCArMSBAQAorIicsIVx1NjVFODg1MHsyMzEyOyk6iCkhKj8nvsqzMC6zISGqIcApOioh4Do6OCE5Olx1ZGJEOFx1RDgyNX8wJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kZDg5MGE1YTMyZTlmMDQ4OWM2Yzc3Njk1ZjIxNTUwNDFmMDBmYzlhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2RkODkwYTVhMzJlOWYwNDg5YzZjNzc2OTVmMjE1NTA0MWYwMGZjOWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkNzA4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kZDg5MGE1YTMyZTlmMDQ4OWM2Yzc3Njk1ZjIxNTUwNDFmMDBmYzlhCkBAIC0wLDAgKzEgQEAKK3siISFcJycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGY4OGUyYmFmN2I3NmZmYjJlOTRiOWRhNTdmZDhkMTM3ZjQ0YjFlZiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9kZjg4ZTJiYWY3Yjc2ZmZiMmU5NGI5ZGE1N2ZkOGQxMzdmNDRiMWVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjFlZjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZGY4OGUyYmFmN2I3NmZmYjJlOTRiOWRhNTdmZDhkMTM3ZjQ0YjFlZgpAQCAtMCwwICsxIEBACisiiMN7KSE6Kr47PyfKs7MhISoh4Ck6ISrgOjo6XClkYik4iMMhhzp7IWAhP2C+viEnPychKm0sJyk7hSdgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwMGVlMzc4YzNmNmUwYjNjZDg5YmQ2ZTc1MTc0NzhkMDkzZjczZGQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTAwZWUzNzhjM2Y2ZTBiM2NkODliZDZlNzUxNzQ3OGQwOTNmNzNkZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjljNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwMGVlMzc4YzNmNmUwYjNjZDg5YmQ2ZTc1MTc0NzhkMDkzZjczZGQKQEAgLTAsMCArMSBAQAorODM0ZTspClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwYzEyNGU5MGQwNjhlMmE3MGEzZTE0ODA1Mjg2OTAzMzQ1M2VjNTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTBjMTI0ZTkwZDA2OGUyYTcwYTNlMTQ4MDUyODY5MDMzNDUzZWM1OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDUzNDNmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwYzEyNGU5MGQwNjhlMmE3MGEzZTE0ODA1Mjg2OTAzMzQ1M2VjNTgKQEAgLTAsMCArMSBAQAorMjdlN6QyOjYwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwZDg3YjFmM2U1NGU1YWRjNWMyMjA1ZjllMTQ3NzI4MjJhMjU3NjYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTBkODdiMWYzZTU0ZTVhZGM1YzIyMDVmOWUxNDc3MjgyMmEyNTc2NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2M2YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UwZDg3YjFmM2U1NGU1YWRjNWMyMjA1ZjllMTQ3NzI4MjJhMjU3NjYKQEAgLTAsMCArMSBAQAorW3siiMNcNXspIToqXSl7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UxMTk5ZGY2NDk2OTdjNTcwZGI1ZDZiMmVhMDlkNzU1ZWRkZDMyYjcgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTExOTlkZjY0OTY5N2M1NzBkYjVkNmIyZWEwOWQ3NTVlZGRkMzJiNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGFjNTFmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UxMTk5ZGY2NDk2OTdjNTcwZGI1ZDZiMmVhMDlkNzU1ZWRkZDMyYjcKQEAgLTAsMCArMSBAQAorW1swLjE5MztdNCoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTIzNWY2ZjJhOGI2YTIyMTE3ZjFiYWE5MzJmYjZjNjk3OTllMTEzNiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lMjM1ZjZmMmE4YjZhMjIxMTdmMWJhYTkzMmZiNmM2OTc5OWUxMTM2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZjJkOGMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTIzNWY2ZjJhOGI2YTIyMTE3ZjFiYWE5MzJmYjZjNjk3OTllMTEzNgpAQCAtMCwwICsxIEBACitbMS4xOTc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UzYTY1NDA1NWE4NjdhZTYyZDhlNjhmYTJjNDEwMjI4YWM1NWNiNmQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTNhNjU0MDU1YTg2N2FlNjJkOGU2OGZhMmM0MTAyMjhhYzU1Y2I2ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjhmZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UzYTY1NDA1NWE4NjdhZTYyZDhlNjhmYTJjNDEwMjI4YWM1NWNiNmQKQEAgLTAsMCArMSBAQAorIiEhD1wnJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lM2M2ODBhYWM0NmI5YzQ2MzkyZTNiMmM0M2VjZGNjMTU0N2YyMDIzIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UzYzY4MGFhYzQ2YjljNDYzOTJlM2IyYzQzZWNkY2MxNTQ3ZjIwMjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNmMDQ4YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lM2M2ODBhYWM0NmI5YzQ2MzkyZTNiMmM0M2VjZGNjMTU0N2YyMDIzCkBAIC0wLDAgKzEgQEAKK1t9RzMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTNkMTM0YjM1Y2MyNWE0ODYxZDkwMDIzYzk1OTg4ZWM2MTAzZGRkNSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lM2QxMzRiMzVjYzI1YTQ4NjFkOTAwMjNjOTU5ODhlYzYxMDNkZGQ1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjI4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTNkMTM0YjM1Y2MyNWE0ODYxZDkwMDIzYzk1OTg4ZWM2MTAzZGRkNQpAQCAtMCwwICsxIEBACisiiMN7KSE6Kr47ISfKs7MhISoh4Ck6ISrgOho6XHVkYik4iMMhhzp7YCE/YL6+IT8nISptLCcpO4UnYApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lM2ZmNjVkZTRiMTYyMjMxNWMzYjM0YjdhNWUzOWJmZmIyNzU0ODlkIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2UzZmY2NWRlNGIxNjIyMzE1YzNiMzRiN2E1ZTM5YmZmYjI3NTQ4OWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4OGRiZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lM2ZmNjVkZTRiMTYyMjMxNWMzYjM0YjdhNWUzOWJmZmIyNzU0ODlkCkBAIC0wLDAgKzEgQEAKK1syLjE5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U0YTQwODVjYzMxNDc2ZjVkZTkwNDc0MjI4NTFkOGNjZjg2MzM5ZGYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTRhNDA4NWNjMzE0NzZmNWRlOTA0NzQyMjg1MWQ4Y2NmODYzMzlkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjczYjZkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U0YTQwODVjYzMxNDc2ZjVkZTkwNDc0MjI4NTFkOGNjZjg2MzM5ZGYKQEAgLTAsMCArMSBAQAoreyInLCFcdUAnOooKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTRlM2M2OWRhMjAwYWY5MzJjOGE3OWZhMDU1ZDdhZWVhMjhlYjFkMSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNGUzYzY5ZGEyMDBhZjkzMmM4YTc5ZmEwNTVkN2FlZWEyOGViMWQxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzFkYmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTRlM2M2OWRhMjAwYWY5MzJjOGE3OWZhMDU1ZDdhZWVhMjhlYjFkMQpAQCAtMCwwICsxIEBACitbMi4iiMMheykhOiIsiMMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTZjM2RkNjMwNDI4ZmQ1NDgzNDE3MmI4ZmQyNzM1ZmVkOTQxNmRhNCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNmMzZGQ2MzA0MjhmZDU0ODM0MTcyYjhmZDI3MzVmZWQ5NDE2ZGE0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiODJkZmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTZjM2RkNjMwNDI4ZmQ1NDgzNDE3MmI4ZmQyNzM1ZmVkOTQxNmRhNApAQCAtMCwwICsxIEBACis2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNzFlYjM3ZmNhMjA3MDUyMWUxZTA3YzUwM2MyYmNkNjQ0NWIzNWVhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U3MWViMzdmY2EyMDcwNTIxZTFlMDdjNTAzYzJiY2Q2NDQ1YjM1ZWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhNjYyOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNzFlYjM3ZmNhMjA3MDUyMWUxZTA3YzUwM2MyYmNkNjQ0NWIzNWVhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNzYwZTZlMjJhZThjZDFlYTc4ZmUyOGI1ZWIxZjNkN2I1ZmRjNTM2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U3NjBlNmUyMmFlOGNkMWVhNzhmZTI4YjVlYjFmM2Q3YjVmZGM1MzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3NDdjYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lNzYwZTZlMjJhZThjZDFlYTc4ZmUyOGI1ZWIxZjNkN2I1ZmRjNTM2CkBAIC0wLDAgKzEgQEAKK3s6iCkhwyIqvj8nyrOzISEqIeApOiEq4Do6Olx1ZGJEOIgpwyE6eyFgIT9gvr4hPychKm0sJyk7hSdgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U5NWZmMTE0MjExOGEyY2E1Yjg0OTM1NjEyYThhNjRkNTUzNjBlNjQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTk1ZmYxMTQyMTE4YTJjYTViODQ5MzU2MTJhOGE2NGQ1NTM2MGU2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYThiYmNjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U5NWZmMTE0MjExOGEyY2E1Yjg0OTM1NjEyYThhNjRkNTUzNjBlNjQKQEAgLTAsMCArMSBAQAorIojDeykhOiq+Oz8nyrOzISEqIeApOiEq4Do6Olx1ZGIpOIjDIYc6eyFgIT9gvr4hPychKm0sJyk7hSdgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U5YzVlMmM2NzkzMDUxMzk0MTc1M2MyZDU0NTkxYzcwOThjODJmNmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZTljNWUyYzY3OTMwNTEzOTQxNzUzYzJkNTQ1OTFjNzA5OGM4MmY2YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTk5MWI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2U5YzVlMmM2NzkzMDUxMzk0MTc1M2MyZDU0NTkxYzcwOThjODJmNmMKQEAgLTAsMCArMSBAQAorWzNdNCoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWIyNjA3MGQxN2ZmYTkwODIwNDkxMmU3NWNiNDMxMzgzNTA0MjAzOCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lYjI2MDcwZDE3ZmZhOTA4MjA0OTEyZTc1Y2I0MzEzODM1MDQyMDM4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMjI5MzcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWIyNjA3MGQxN2ZmYTkwODIwNDkxMmU3NWNiNDMxMzgzNTA0MjAzOApAQCAtMCwwICsxIEBACitbIipdOsMheym+PyfKs7MhISoh4Ck6ISrgOjo6XHVkYkQ4iCl7wyE6eyFgIT9gvr4iKKEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWJjNmFlZTQ5ZTVhZTU3NzIyZGY4NmU3ZmEzM2M0MjBmMDQ1YTQ0OSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lYmM2YWVlNDllNWFlNTc3MjJkZjg2ZTdmYTMzYzQyMGYwNDVhNDQ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNThiOTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWJjNmFlZTQ5ZTVhZTU3NzIyZGY4NmU3ZmEzM2M0MjBmMDQ1YTQ0OQpAQCAtMCwwICsxIEBACiswMygKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWQxZGMxMWQ3MTNlNzQ4N2RlMThjZTgzMTdiNjI5MTY5NTkyMDZkMCBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lZDFkYzExZDcxM2U3NDg3ZGUxOGNlODMxN2I2MjkxNjk1OTIwNmQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTUzNmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZWQxZGMxMWQ3MTNlNzQ4N2RlMThjZTgzMTdiNjI5MTY5NTkyMDZkMApAQCAtMCwwICsxIEBACis4MzI0RTY7KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lZGUzZjY2MTA2YWNkNzc5NmRhOGIzOTQyZDAyOWZlMjEzMDU4Mjg2IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2VkZTNmNjYxMDZhY2Q3Nzk2ZGE4YjM5NDJkMDI5ZmUyMTMwNTgyODYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjljZWE1OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lZGUzZjY2MTA2YWNkNzc5NmRhOGIzOTQyZDAyOWZlMjEzMDU4Mjg2CkBAIC0wLDAgKzEgQEAKKzU4MzRFMHkpOymICSkhwwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lZWQ3YmQyMjBjZDUxMWI2ZDQyY2U2NTUzMDE5MjY2YTIyYTNkNTZhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2VlZDdiZDIyMGNkNTExYjZkNDJjZTY1NTMwMTkyNjZhMjJhM2Q1NmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmODZiZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9lZWQ3YmQyMjBjZDUxMWI2ZDQyY2U2NTUzMDE5MjY2YTIyYTNkNTZhCkBAIC0wLDAgKzEgQEAKKzAsMAkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjA5MDkzMjE2Mjc1NmI3OThiMWEwNTBiMDVlM2QzNmEzNDM3YzRmYyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mMDkwOTMyMTYyNzU2Yjc5OGIxYTA1MGIwNWUzZDM2YTM0MzdjNGZjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0Zjk4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjA5MDkzMjE2Mjc1NmI3OThiMWEwNTBiMDVlM2QzNmEzNDM3YzRmYwpAQCAtMCwwICsxIEBACiszNjcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjE5MDVlYWE4NGJhNmEzNTkzZWM2YWMwNDg2YTViNDI4OTNjMDFmMSBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mMTkwNWVhYTg0YmE2YTM1OTNlYzZhYzA0ODZhNWI0Mjg5M2MwMWYxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMWE3YjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjE5MDVlYWE4NGJhNmEzNTkzZWM2YWMwNDg2YTViNDI4OTNjMDFmMQpAQCAtMCwwICsxIEBACis1MHs6iCkhwyIqvj8nyrOzISEqIeApOiEq4Do6OCE5Olx1ZGJEOIgpwyE6eyFgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y0NjM1ZmJiZjc2NWVhZDgxYTI2MWNhMTUyZGYwMjYyMmUxODJkMmMgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjQ2MzVmYmJmNzY1ZWFkODFhMjYxY2ExNTJkZjAyNjIyZTE4MmQyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGUwZjJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y0NjM1ZmJiZjc2NWVhZDgxYTI2MWNhMTUyZGYwMjYyMmUxODJkMmMKQEAgLTAsMCArMSBAQAorIjE5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y0NmVlYjEwMjBjN2M0MTUzZTc0MmE1MGJjMjRjMmM2OTM5ZGFiMWUgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjQ2ZWViMTAyMGM3YzQxNTNlNzQyYTUwYmMyNGMyYzY5MzlkYWIxZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzBhMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y0NmVlYjEwMjBjN2M0MTUzZTc0MmE1MGJjMjRjMmM2OTM5ZGFiMWUKQEAgLTAsMCArMSBAQAorMzYzCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjQ3MzQ1MTYxMDc4MzUyMWQ1MWJjMDhjZGQ5MjBkZGQ5N2Y4YTcxZiBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mNDczNDUxNjEwNzgzNTIxZDUxYmMwOGNkZDkyMGRkZDk3ZjhhNzFmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3M2M1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjQ3MzQ1MTYxMDc4MzUyMWQ1MWJjMDhjZGQ5MjBkZGQ5N2Y4YTcxZgpAQCAtMCwwICsxIEBACit7IipdOsMheym+PyfKs7MgISoh4Ck6ISrgOjo6XHVkYkQ4XCEpIXvDOnshYCE/YL6+IiihClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y2M2FhNTk5NjAwZjZlN2Q2NDhjNDI4NzkwNWUxNmU4ZTZlNDc5ZmQgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjYzYWE1OTk2MDBmNmU3ZDY0OGM0Mjg3OTA1ZTE2ZThlNmU0NzlmZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjY4MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y2M2FhNTk5NjAwZjZlN2Q2NDhjNDI4NzkwNWUxNmU4ZTZlNDc5ZmQKQEAgLTAsMCArMSBAQAorIojDeykhOiJdKcMhOnsiKr4/J8qzsyEhKiHgKTohKuA6Ojpcvjs/J8qzdWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjY2N2RjZjFjMDZlODdkYjJkYzQ5ZDg2ZWExYzI4NWU3OTZmOGY4YyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mNjY3ZGNmMWMwNmU4N2RiMmRjNDlkODZlYTFjMjg1ZTc5NmY4ZjhjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZGZiZDUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjY2N2RjZjFjMDZlODdkYjJkYzQ5ZDg2ZWExYzI4NWU3OTZmOGY4YwpAQCAtMCwwICsxIEBACis4MTNlMTI0MjgwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y4ZDBmODU5NzVlNDliOTU5Nzk5Y2M1Mjg0NzExMGNjOTQwYjlkYjEgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjhkMGY4NTk3NWU0OWI5NTk3OTljYzUyODQ3MTEwY2M5NDBiOWRiMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzdmNTkyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y4ZDBmODU5NzVlNDliOTU5Nzk5Y2M1Mjg0NzExMGNjOTQwYjlkYjEKQEAgLTAsMCArMSBAQAorNjA0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y5MmM0N2UzNWRhNDJkNzlhNDhiZWZmNTRiOTNjZDI4ZjU1ZjA1ZmIgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjkyYzQ3ZTM1ZGE0MmQ3OWE0OGJlZmY1NGI5M2NkMjhmNTVmMDVmYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDQ0YmEyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y5MmM0N2UzNWRhNDJkNzlhNDhiZWZmNTRiOTNjZDI4ZjU1ZjA1ZmIKQEAgLTAsMCArMSBAQAorMWU5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y5YTMzYmI4YmQ3OGQ4NjlmYmFmYTQwMmQ5YmU1ODk0MGNlMmMzMTggYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZjlhMzNiYjhiZDc4ZDg2OWZiYWZhNDAyZDliZTU4OTQwY2UyYzMxOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmNiOWRhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2Y5YTMzYmI4YmQ3OGQ4NjlmYmFmYTQwMmQ5YmU1ODk0MGNlMmMzMTgKQEAgLTAsMCArMSBAQAorMUUJIojBgTk2MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mYmY2ZjMxNTZjMWJkNGJiNzAxODM5YmMwZTI2NTMzYmRjY2QxYzlhIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ZiZjZmMzE1NmMxYmQ0YmI3MDE4MzliYzBlMjY1MzNiZGNjZDFjOWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYwZjFkOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mYmY2ZjMxNTZjMWJkNGJiNzAxODM5YmMwZTI2NTMzYmRjY2QxYzlhCkBAIC0wLDAgKzEgQEAKKzAsZmElKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mZTJlZjQ5NWExMTUyNTYxNTcyOTQ5Nzg0YzE2YmYyM2FiYjI4MDU3IGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ZlMmVmNDk1YTExNTI1NjE1NzI5NDk3ODRjMTZiZjIzYWJiMjgwNTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJjNGVmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mZTJlZjQ5NWExMTUyNTYxNTcyOTQ5Nzg0YzE2YmYyM2FiYjI4MDU3CkBAIC0wLDAgKzEgQEAKKzQ2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ZlNWRiYmNlYTVjZTdlMjk4OGI4YzY5YmNmZGZkZTg5MDRhYWJjMWYgYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvZmU1ZGJiY2VhNWNlN2UyOTg4YjhjNjliY2ZkZmRlODkwNGFhYmMxZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDExNjBhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ZlNWRiYmNlYTVjZTdlMjk4OGI4YzY5YmNmZGZkZTg5MDRhYWJjMWYKQEAgLTAsMCArMSBAQAorOApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mZjhmYjM0NjAzYzdmNzcyNzY4ZDYxNTA0OTU0NTUzZTZiZWQxNzNjIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL2ZmOGZiMzQ2MDNjN2Y3NzI3NjhkNjE1MDQ5NTQ1NTNlNmJlZDE3M2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4NmFiOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy9mZjhmYjM0NjAzYzdmNzcyNzY4ZDYxNTA0OTU0NTUzZTZiZWQxNzNjCkBAIC0wLDAgKzEgQEAKK24nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3QxLmpzb24gYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvdGVzdDEuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzkzY2QwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3QxLmpzb24KQEAgLTAsMCArMSBAQAoreyJmb28iOiJiYXIifQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3QyLmpzb24gYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvdGVzdDIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTBjOTZlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3QyLmpzb24KQEAgLTAsMCArMSBAQAorImZvbyIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0My5qc29uIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3QzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkYjliYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0My5qc29uCkBAIC0wLDAgKzEgQEAKK1sxLDIsMyw0XQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q0Lmpzb24gYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvdGVzdDQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzNmY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q0Lmpzb24KQEAgLTAsMCArMSBAQAorMWU5NDM5MjMKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0NS5qc29uIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q1Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmMWQ3OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0NS5qc29uCkBAIC0wLDAgKzEgQEAKKzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q2Lmpzb24gYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvdGVzdDYuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2JhNzdkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q2Lmpzb24KQEAgLTAsMCArMSBAQAordHJ1ZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q3Lmpzb24gYi90ZXN0L2NvcmUvanNvbi9jb3JwdXMvdGVzdDcuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA4ZDUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q3Lmpzb24KQEAgLTAsMCArMSBAQAorZmFsc2UKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0OC5qc29uIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q4Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk3NjViZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0OC5qc29uCkBAIC0wLDAgKzEgQEAKK251bGwKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0OS5qc29uIGIvdGVzdC9jb3JlL2pzb24vY29ycHVzL3Rlc3Q5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmYWJhMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2NvcnB1cy90ZXN0OS5qc29uCkBAIC0wLDAgKzEgQEAKK3siYWxwaGEiOm51bGwsImJldGEiOmZhbHNlLCJnYW1tYSI6Mi4zLCJ4eXoiOiJhYmMiLCJuZWdhdGl2ZSI6LTEzM30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9qc29uL2Z1enplci5jIGIvdGVzdC9jb3JlL2pzb24vZnV6emVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmODllNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9qc29uL2Z1enplci5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2pzb24vanNvbi5oIgorCitpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBjaGFyICpzID0gZ3ByX21hbGxvYyhzaXplKTsKKyAgbWVtY3B5KHMsIGRhdGEsIHNpemUpOworICBncnBjX2pzb24gKng7CisgIGlmICgoeCA9IGdycGNfanNvbl9wYXJzZV9zdHJpbmdfd2l0aF9sZW4ocywgc2l6ZSkpKSB7CisgICAgZ3JwY19qc29uX2Rlc3Ryb3koeCk7CisgIH0KKyAgZ3ByX2ZyZWUocyk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2pzb24vanNvbl90ZXN0LmMgYi90ZXN0L2NvcmUvanNvbi9qc29uX3Rlc3QuYwppbmRleCAyYTAwNzYyLi4xM2VlNWJiIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvanNvbi9qc29uX3Rlc3QuYworKysgYi90ZXN0L2NvcmUvanNvbi9qc29uX3Rlc3QuYwpAQCAtNjQsNiArNjQsNyBAQAogICAgIC8qIFRlc3RpbmcgVVRGLTggY2hhcmFjdGVyICLwnYSeIiwgVSsxMUQxRS4gKi8KICAgICB7IlwiXHhmMFx4OWRceDg0XHg5ZVwiIiwgIlwiXFx1ZDgzNFxcdWRkMWVcIiJ9LAogICAgIHsiXCJcXHVkODM0XFx1ZGQxZVwiIiwgIlwiXFx1ZDgzNFxcdWRkMWVcIiJ9LAorICAgIHsie1wiXFx1ZDgzNFxcdWRkMWVcIjowfSIsICJ7XCJcXHVkODM0XFx1ZGQxZVwiOjB9In0sCiAgICAgLyogVGVzdGluZyBuZXN0ZWQgZW1wdHkgY29udGFpbmVycy4gKi8KICAgICB7CiAgICAgICAgICIgWyBbIF0gLCB7IH0gLCBbIF0gXSAiLCAiW1tdLHt9LFtdXSIsCkBAIC04NSwyMCArODYsMzEgQEAKICAgICAvKiBUZXN0aW5nIHBsYWluIGludmFsaWQgdGhpbmdzLCBleGVyY2lzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lLiAqLwogICAgIHsiXFwiLCBOVUxMfSwKICAgICB7Im51IGxsIiwgTlVMTH0sCisgICAgeyJ7XCJmb29cIjogYmFyfSIsIE5VTEx9LAorICAgIHsie1wiZm9vXCI6IGJhclwieFwifSIsIE5VTEx9LAogICAgIHsiZmFscyIsIE5VTEx9LAogICAgIC8qIFRlc3RpbmcgdW50ZXJtaW5hdGVkIHN0cmluZy4gKi8KICAgICB7IlwiXFx4IiwgTlVMTH0sCiAgICAgLyogVGVzdGluZyBpbnZhbGlkIFVURi0xNiBudW1iZXIuICovCiAgICAgeyJcIlxcdTEyM3giLCBOVUxMfSwKKyAgICB7IntcIlxcdTEyM3giLCBOVUxMfSwKICAgICAvKiBUZXN0aW5nIGltYmFsYW5jZWQgc3Vycm9nYXRlIHBhaXJzLiAqLwogICAgIHsiXCJcXHVkODM0ZiIsIE5VTEx9LAorICAgIHsie1wiXFx1ZDgzNGZcIjowfSIsIE5VTEx9LAogICAgIHsiXCJcXHVkODM0XFxuIiwgTlVMTH0sCisgICAgeyJ7XCJcXHVkODM0XFxuXCI6MH0iLCBOVUxMfSwKICAgICB7IlwiXFx1ZGQxZWYiLCBOVUxMfSwKKyAgICB7IntcIlxcdWRkMWVmXCI6MH0iLCBOVUxMfSwKICAgICB7IlwiXFx1ZDgzNFxcdWQ4MzRcIiIsIE5VTEx9LAorICAgIHsie1wiXFx1ZDgzNFxcdWQ4MzRcIlwiOjB9IiwgTlVMTH0sCiAgICAgeyJcIlxcdWQ4MzRcXHUxMjM0XCIiLCBOVUxMfSwKKyAgICB7IntcIlxcdWQ4MzRcXHUxMjM0XCJcIjowfSIsIE5VTEx9LAogICAgIHsiXCJcXHVkODM0XVwiIiwgTlVMTH0sCisgICAgeyJ7XCJcXHVkODM0XVwiXCI6MH0iLCBOVUxMfSwKICAgICB7IlwiXFx1ZDgzNCBcIiIsIE5VTEx9LAorICAgIHsie1wiXFx1ZDgzNCBcIlwiOjB9IiwgTlVMTH0sCiAgICAgeyJcIlxcdWQ4MzRcXFxcXCIiLCBOVUxMfSwKKyAgICB7IntcIlxcdWQ4MzRcXFxcXCJcIjowfSIsIE5VTEx9LAogICAgIC8qIFRlc3RpbmcgZW1iZWRkZWQgaW52YWxpZCB3aGl0ZWNoYXJzLiAqLwogICAgIHsiXCJcblwiIiwgTlVMTH0sCiAgICAgeyJcIlx0XCIiLCBOVUxMfSwKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2FscG5fdGVzdC5jIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvYWxwbl90ZXN0LmMKaW5kZXggYTNjOGE5YS4uMTM1MDljMSAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvYWxwbl90ZXN0LmMKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvYWxwbl90ZXN0LmMKQEAgLTMxLDcgKzMxLDcgQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5oIgogCiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3Rlc3RfY29uZmlnLmgiCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlcl90ZXN0LmMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlcl90ZXN0LmMKaW5kZXggZmQ3OThkOC4uNTZiODZlMCAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXJfdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyX3Rlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogICoKICAqLwogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyX3Rlc3QuYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXJfdGVzdC5jCmluZGV4IGIyM2U5OTkuLjgxOGNlMDkgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXJfdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXJfdGVzdC5jCkBAIC0zMSwxNSArMzEsMTUgQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3BhcnNlX2hleHN0cmluZy5oIgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3NsaWNlX3NwbGl0dGVyLmgiCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzAxNDFmY2RkYzk4MDdlZTA5MzMxM2IyMjU2ZjEzMDZmYmJkYzZjZGEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzAxNDFmY2RkYzk4MDdlZTA5MzMxM2IyMjU2ZjEzMDZmYmJkYzZjZGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiMTI1MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDE0MWZjZGRjOTgwN2VlMDkzMzEzYjIyNTZmMTMwNmZiYmRjNmNkYQpAQCAtMCwwICsxIEBACisoP6QfpKQf26Tb8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDI1NTA1MGE5Y2NiMjVmNDZkNmMxYmY2YTVhOGE0YzBjNzYzNTU5OSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDI1NTA1MGE5Y2NiMjVmNDZkNmMxYmY2YTVhOGE0YzBjNzYzNTU5OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjhhNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wMjU1MDUwYTljY2IyNWY0NmQ2YzFiZjZhNWE4YTRjMGM3NjM1NTk5CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDMyMGE5OTVhOGM3NmM2NGM4YTBlMDI5N2Y2MzJiNzZkOWJjOTJkNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDMyMGE5OTVhOGM3NmM2NGM4YTBlMDI5N2Y2MzJiNzZkOWJjOTJkNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWEzNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wMzIwYTk5NWE4Yzc2YzY0YzhhMGUwMjk3ZjYzMmI3NmQ5YmM5MmQ2CkBAIC0wLDAgKzEgQEAKK6QfIYPb8KQfIYO22/AqYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDQyMDkxYWVhYzRjYzI1NTUwNmI5NmZhMTFjNzM1NGU2OTlmZGU3NiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDQyMDkxYWVhYzRjYzI1NTUwNmI5NmZhMTFjNzM1NGU2OTlmZGU3NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTY1ZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wNDIwOTFhZWFjNGNjMjU1NTA2Yjk2ZmExMWM3MzU0ZTY5OWZkZTc2CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluOz8wYyEoB/BLCfBbTiGLY1s6pBAH8KQPLVwZIfVHISk6WyghIaQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA2OTZlN2JmNzgzN2Q5OGRlMDFjOTE1ZDNjOWQ4MGU1ZDIxYjMwZDIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA2OTZlN2JmNzgzN2Q5OGRlMDFjOTE1ZDNjOWQ4MGU1ZDIxYjMwZDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5MzZmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDY5NmU3YmY3ODM3ZDk4ZGUwMWM5MTVkM2M5ZDgwZTVkMjFiMzBkMgpAQCAtMCwwICsxIEBACisQB/BbKC1iaW4hCfAoIVwJPyqgpK5ACBAHOvBbBgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDY5OTVjMmYzZjAxYzdlYzUwNTQ3NDE1ZGMzMjRjNjQwMzBiN2EzZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDY5OTVjMmYzZjAxYzdlYzUwNTQ3NDE1ZGMzMjRjNjQwMzBiN2EzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTIwZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wNjk5NWMyZjNmMDFjN2VjNTA1NDc0MTVkYzMyNGM2NDAzMGI3YTNlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDZmN2NlNzY5ZmUwNzgwNGZjODQyNDYyZDRiZThjMWFhMmJhODJjMiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDZmN2NlNzY5ZmUwNzgwNGZjODQyNDYyZDRiZThjMWFhMmJhODJjMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWRjOWY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wNmY3Y2U3NjlmZTA3ODA0ZmM4NDI0NjJkNGJlOGMxYWEyYmE4MmMyCkBAIC0wLDAgKzEgQEAKK66ApIgoY2MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA3ODFiMDU1Yzg1YWI4ZmJkMGEzZDAwODBhMzJlMzk0YWY4NzYxYzQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA3ODFiMDU1Yzg1YWI4ZmJkMGEzZDAwODBhMzJlMzk0YWY4NzYxYzQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiMWU4OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDc4MWIwNTVjODVhYjhmYmQwYTNkMDA4MGEzMmUzOTRhZjg3NjFjNApAQCAtMCwwICsxIEBACiukHyGD2/DwpB8hg9vw8GMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA4MGUxZjE5ZTYwNjFjNWJjYWMzMWFkZDIwOTVmODdmNmNlNDYxMjkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA4MGUxZjE5ZTYwNjFjNWJjYWMzMWFkZDIwOTVmODdmNmNlNDYxMjkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg4MGQ1NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDgwZTFmMTllNjA2MWM1YmNhYzMxYWRkMjA5NWY4N2Y2Y2U0NjEyOQpAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJIeVH/SEqKCEJIeVH/UEpKCEp7SG8KinlR/1JKSjZOymKClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wODI4MTY5YmE4MjE1MmE4OTA3ZjEwMDFlM2Q5ODgwNDM5N2Q0NjEwIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wODI4MTY5YmE4MjE1MmE4OTA3ZjEwMDFlM2Q5ODgwNDM5N2Q0NjEwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNzc4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA4MjgxNjliYTgyMTUyYTg5MDdmMTAwMWUzZDk4ODA0Mzk3ZDQ2MTAKQEAgLTAsMCArMSBAQAorpB+k2/Ah8AljYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA4ZmZjNGE0MTYwZTlmZTZmMzIyYzI4ODcwYTg5YTQxZmQ5YzM3ZDcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA4ZmZjNGE0MTYwZTlmZTZmMzIyYzI4ODcwYTg5YTQxZmQ5YzM3ZDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjODgwNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDhmZmM0YTQxNjBlOWZlNmYzMjJjMjg4NzBhODlhNDFmZDljMzdkNwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA5MGE3YTc1ODg5OGE2ZTdjOTEwOGI3ZThhMWNiOWNkYTM4M2U3MDcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA5MGE3YTc1ODg5OGE2ZTdjOTEwOGI3ZThhMWNiOWNkYTM4M2U3MDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmNTk5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDkwYTdhNzU4ODk4YTZlN2M5MTA4YjdlOGExY2I5Y2RhMzgzZTcwNwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JISE/pB/b8CEQB/B7KC1iaW7wCSFcCSHlH+kbOz9H7VsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA5NDA2NjM3Mjk1MDFiNzUwYTE4NTQyZTEwNDFjYzI2Mzg1YzYxNDggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzA5NDA2NjM3Mjk1MDFiNzUwYTE4NTQyZTEwNDFjYzI2Mzg1YzYxNDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU5Mjg5NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMDk0MDY2MzcyOTUwMWI3NTBhMTg1NDJlMTA0MWNjMjYzODVjNjE0OApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbovkY1vyKSgnLWJpLgkqKSE/pB/b4iEQB/B7KC1iaVxuIQkhCfDlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYTEwYmQxNDBjNmM1ZmIxMDlhMDgxNmNhMDYxNzM5Njg4YTZkYjlhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYTEwYmQxNDBjNmM1ZmIxMDlhMDgxNmNhMDYxNzM5Njg4YTZkYjlhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YTY5OTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBhMTBiZDE0MGM2YzVmYjEwOWEwODE2Y2EwNjE3Mzk2ODhhNmRiOWEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYTRkM2ZkYTAyY2RjYjdhZGFkMWRhYTgwZDY1NzgwYzljOGQxNDY0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYTRkM2ZkYTAyY2RjYjdhZGFkMWRhYTgwZDY1NzgwYzljOGQxNDY0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWY1OGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBhNGQzZmRhMDJjZGNiN2FkYWQxZGFhODBkNjU3ODBjOWM4ZDE0NjQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYWQ4MTI4MzJlZmEzM2UwODY4NzRmYmYzNDk2NjY0ZDNmMWI0ZGJlIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYWQ4MTI4MzJlZmEzM2UwODY4NzRmYmYzNDk2NjY0ZDNmMWI0ZGJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZWM3ODAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBhZDgxMjgzMmVmYTMzZTA4Njg3NGZiZjM0OTY2NjRkM2YxYjRkYmUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYzk5OTZkNGZlZjg3YmFjZDdhMDAxZTk5YTUxNWIzYmEzZDU3ODhmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wYzk5OTZkNGZlZjg3YmFjZDdhMDAxZTk5YTUxNWIzYmEzZDU3ODhmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOWE4OTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBjOTk5NmQ0ZmVmODdiYWNkN2EwMDFlOTlhNTE1YjNiYTNkNTc4OGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZDYyMTAyMDg4MzFmZTU1OTUxYWY1NmNkZWVlM2Q1NGE5MWE1MzYxIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZDYyMTAyMDg4MzFmZTU1OTUxYWY1NmNkZWVlM2Q1NGE5MWE1MzYxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMWZkMGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkNjIxMDIwODgzMWZlNTU5NTFhZjU2Y2RlZWUzZDU0YTkxYTUzNjEKQEAgLTAsMCArMSBAQAorZhMhKCEhCWlb0SHlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZDc4NDk2NWIyMjYyZGY3ZWQ3YTFlYjU3YjkyYTcxOGNjNzZiZGU4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZDc4NDk2NWIyMjYyZGY3ZWQ3YTFlYjU3YjkyYTcxOGNjNzZiZGU4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ODA3N2UKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkNzg0OTY1YjIyNjJkZjdlZDdhMWViNTdiOTJhNzE4Y2M3NmJkZTgKQEAgLTAsMCArMSBAQAorpB/KIfAJYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkYzllNDFlZWRmMzVjY2VkZjRlMmIwZDIzMGVhZDdjNGQ3MmZkYjIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkYzllNDFlZWRmMzVjY2VkZjRlMmIwZDIzMGVhZDdjNGQ3MmZkYjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxOTE2MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMGRjOWU0MWVlZGYzNWNjZWRmNGUyYjBkMjMwZWFkN2M0ZDcyZmRiMgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkZDQ3MGM4OTM5ZWQ1MzVkZTZiMzZmN2I3YmZiNjhhZWFjZTQ5M2UgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBkZDQ3MGM4OTM5ZWQ1MzVkZTZiMzZmN2I3YmZiNjhhZWFjZTQ5M2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E3Y2JkMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMGRkNDcwYzg5MzllZDUzNWRlNmIzNmY3YjdiZmI2OGFlYWNlNDkzZQpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoJy1iaAkqISE/pB/b4iEQB/B7KC1iaVxuIQkhCfDlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZTYxZTQ3MWZhNmQzNDA1ZGFlZjQyNzZlZTAwY2Y1ZmMxODlmMzc4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZTYxZTQ3MWZhNmQzNDA1ZGFlZjQyNzZlZTAwY2Y1ZmMxODlmMzc4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzgzN2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBlNjFlNDcxZmE2ZDM0MDVkYWVmNDI3NmVlMDBjZjVmYzE4OWYzNzgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZTkxOTZmOTUxODc0ZWRiYjVlZDA5ODczOWVhNWM4YjZjMDc1MWMyIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8wZTkxOTZmOTUxODc0ZWRiYjVlZDA5ODczOWVhNWM4YjZjMDc1MWMyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhM2VmOWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzBlOTE5NmY5NTE4NzRlZGJiNWVkMDk4NzM5ZWE1YzhiNmMwNzUxYzIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xMTQ0MmQ5M2E1NTRiOWU3ZjlhYjAyNzgyYmJmOTQ0M2JmNmUxZGRjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xMTQ0MmQ5M2E1NTRiOWU3ZjlhYjAyNzgyYmJmOTQ0M2JmNmUxZGRjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZWIxMGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzExNDQyZDkzYTU1NGI5ZTdmOWFiMDI3ODJiYmY5NDQzYmY2ZTFkZGMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xMTgzM2I3OTVkMDRlZGE1YTNhZjU2ZWY3YjNjM2EyNmE4ZWUzNDQ0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xMTgzM2I3OTVkMDRlZGE1YTNhZjU2ZWY3YjNjM2EyNmE4ZWUzNDQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MGEwNTYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzExODMzYjc5NWQwNGVkYTVhM2FmNTZlZjdiM2MzYTI2YThlZTM0NDQKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LKVsnKC1jYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMTQxMjcyMzE2MzgyYjBmM2U5ZWM4NDFjNzM1Yjg0ZTdhYTUxN2MzZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMTQxMjcyMzE2MzgyYjBmM2U5ZWM4NDFjNzM1Yjg0ZTdhYTUxN2MzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzA2YmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xNDEyNzIzMTYzODJiMGYzZTllYzg0MWM3MzViODRlN2FhNTE3YzNlCkBAIC0wLDAgKzEgQEAKKzs/MGMhKAfwSwnwW04hXBkh9UchWyghIQkh5Uf9QSkoISntISrlR4C+/UEpKdkrqYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE1YWU0MzM2OTc5OGU0OGMzOTZkZmU3ZDUzYTIxODc4Yjk2ZTY2YzggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE1YWU0MzM2OTc5OGU0OGMzOTZkZmU3ZDUzYTIxODc4Yjk2ZTY2YzgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRjMjE3YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMTVhZTQzMzY5Nzk4ZTQ4YzM5NmRmZTdkNTNhMjE4NzhiOTZlNjZjOApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE2NmJmMTg0M2MyMjlkMzRhMjg4MGQyMzRkZDE2NmMyN2JkYzExZmQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE2NmJmMTg0M2MyMjlkMzRhMjg4MGQyMzRkZDE2NmMyN2JkYzExZmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmZGQ5NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMTY2YmYxODQzYzIyOWQzNGEyODgwZDIzNGRkMTY2YzI3YmRjMTFmZApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbovtpC1bYychKaQQYmkHClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xNzllOGFjNzYzYjQwNTFhOTUzYTM4YjZiM2IxZjFlMWY2Y2M2YzllIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xNzllOGFjNzYzYjQwNTFhOTUzYTM4YjZiM2IxZjFlMWY2Y2M2YzllCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NzZlOWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE3OWU4YWM3NjNiNDA1MWE5NTNhMzhiNmIzYjFmMWUxZjZjYzZjOWUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xN2ZhZjBiYThhNDkxYTgzNWQzNTk3N2E5MDA3YjkwYWI3ZDMwZDJhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xN2ZhZjBiYThhNDkxYTgzNWQzNTk3N2E5MDA3YjkwYWI3ZDMwZDJhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MzA5NzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE3ZmFmMGJhOGE0OTFhODM1ZDM1OTc3YTkwMDdiOTBhYjdkMzBkMmEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xODhmNmNmMjQ3MGU5NWIyMjgzNDFkZTMwNWVmODM5YjI3ZjAxYTVjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xODhmNmNmMjQ3MGU5NWIyMjgzNDFkZTMwNWVmODM5YjI3ZjAxYTVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YWE0NWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzE4OGY2Y2YyNDcwZTk1YjIyODM0MWRlMzA1ZWY4MzliMjdmMDFhNWMKQEAgLTAsMCArMSBAQAorOz8wYwfwWyghCfBbTiFcCSHlR/0hWyghIQkh5Uf9QSkoISntIbwqKeVH/UEpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFhYjNlNTJhZGFjZTMzNWQwMmUyYjUxMzBlYjRmN2M5MThhZGQ3ZmQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFhYjNlNTJhZGFjZTMzNWQwMmUyYjUxMzBlYjRmN2M5MThhZGQ3ZmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0ZTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMWFiM2U1MmFkYWNlMzM1ZDAyZTJiNTEzMGViNGY3YzkxOGFkZDdmZApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWycpKC0nYmluCSEhP6Qf2/AhEAfweygtYmFu8AkhXAkhKOUf6RuWOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xYjUxNTA1MTQzNjRlMmMxN2Y1YTRlZGFjMWI3YWY5OWI5MzZmNTVhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xYjUxNTA1MTQzNjRlMmMxN2Y1YTRlZGFjMWI3YWY5OWI5MzZmNTVhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMmY1YTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFiNTE1MDUxNDM2NGUyYzE3ZjVhNGVkYWMxYjdhZjk5YjkzNmY1NWEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZThiZWZiOThjYmFiYTA1OWQ2NzcxYWJkMTY4MGUxOTQ4NGU3NzIzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZThiZWZiOThjYmFiYTA1OWQ2NzcxYWJkMTY4MGUxOTQ4NGU3NzIzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTBjZDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFlOGJlZmI5OGNiYWJhMDU5ZDY3NzFhYmQxNjgwZTE5NDg0ZTc3MjMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZTliOTYyOTY5YzM1OWJjMmZmNzY2NzA0YzhjYThlMjVmNWVjY2ZjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZTliOTYyOTY5YzM1OWJjMmZmNzY2NzA0YzhjYThlMjVmNWVjY2ZjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MGE5MTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFlOWI5NjI5NjljMzU5YmMyZmY3NjY3MDRjOGNhOGUyNWY1ZWNjZmMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZjgwYWYxMDRhY2Y0MWI5MTJiZjRhNDhmYjkzODI2N2UzNzE4NzE5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZjgwYWYxMDRhY2Y0MWI5MTJiZjRhNDhmYjkzODI2N2UzNzE4NzE5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMGFiNTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzFmODBhZjEwNGFjZjQxYjkxMmJmNGE0OGZiOTM4MjY3ZTM3MTg3MTkKQEAgLTAsMCArMSBAQAorPyquQAg6WwcQ8Ab4YwkoISFc/jvwASF+CR/b5UekD6Tb8P0h0GFtpApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMWZjYzRhZmQ2ZjQ4ZTgzZDYxZWE3NDk3MGRmM2NhOWRjZDhlYzI5MSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMWZjYzRhZmQ2ZjQ4ZTgzZDYxZWE3NDk3MGRmM2NhOWRjZDhlYzI5MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGIyZDBlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8xZmNjNGFmZDZmNDhlODNkNjFlYTc0OTcwZGYzY2E5ZGNkOGVjMjkxCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjEzYTczNGNjZGI4MTNiMThhZDlmMmRkOTliN2Y5OTY3ZWUxNDYwYiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjEzYTczNGNjZGI4MTNiMThhZDlmMmRkOTliN2Y5OTY3ZWUxNDYwYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGFiOWJhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yMTNhNzM0Y2NkYjgxM2IxOGFkOWYyZGQ5OWI3Zjk5NjdlZTE0NjBiCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui5lbKSgnLWJpbgkhIT+kH9vwIRAH8HsoLWJpXG4hCSEJ8OUf6Rs7P0ftOlsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzIxNTE5NDVmNDM5OTFjMjdlMTIzYzQ1ZGM3MmI5Mzc1MmE0N2U2NWYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzIxNTE5NDVmNDM5OTFjMjdlMTIzYzQ1ZGM3MmI5Mzc1MmE0N2U2NWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNWQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjE1MTk0NWY0Mzk5MWMyN2UxMjNjNDVkYzcyYjkzNzUyYTQ3ZTY1ZgpAQCAtMCwwICsxIEBACisQB/BbKC1iaW4hCfAoIVwJIeVH/TpbKCEn8FsoISEJ8FsoKiEJIeUh/UflR/1BKSgTWygJISHlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yMTU0NWQ5OThjMjdhNWExNTcyYTg5YTU1MjkzNzc1MjQzMmIxYzE0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yMTU0NWQ5OThjMjdhNWExNTcyYTg5YTU1MjkzNzc1MjQzMmIxYzE0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYjdkODIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzIxNTQ1ZDk5OGMyN2E1YTE1NzJhODlhNTUyOTM3NzUyNDMyYjFjMTQKQEAgLTAsMCArMSBAQAorKqQQB/CkDy1i6W4nH4MnYylb8GkoYm4tIT+kH9vwIQnwKCFcYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjNjNzQ0M2ZhMWFiNzEzZTdjMzRlYzUwMjIyYjFiOGNjZWFlZGM2NSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjNjNzQ0M2ZhMWFiNzEzZTdjMzRlYzUwMjIyYjFiOGNjZWFlZGM2NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjIyZjVjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yM2M3NDQzZmExYWI3MTNlN2MzNGVjNTAyMjJiMWI4Y2NlYWVkYzY1CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluiy1bYycoKWJpbgkhIT+kH9vwITsH8HsoLWJpbvAJIVwJIZgf6Rs7P0ftOlsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NDViYjJjNjc3OTcxMmRjOWUxNGMwMWZlY2I3MTAzZjg3MzI4NTggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NDViYjJjNjc3OTcxMmRjOWUxNGMwMWZlY2I3MTAzZjg3MzI4NTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExMmM0MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjQ0NWJiMmM2Nzc5NzEyZGM5ZTE0YzAxZmVjYjcxMDNmODczMjg1OApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NGIwYTIwNTAwZTMxZDNjNTM4NDE4ODAwZGI4MTZiMDdmNGQyMTAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NGIwYTIwNTAwZTMxZDNjNTM4NDE4ODAwZGI4MTZiMDdmNGQyMTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4ZDU1OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjQ0YjBhMjA1MDBlMzFkM2M1Mzg0MTg4MDBkYjgxNmIwN2Y0ZDIxMApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JMSE/pB/b8CE7EAcq8HsoLWJpbvAJIVwJIeUf6Rs7P0ftOlsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NjFiOWZhNmI1YmM0YjY0MjRkZWM1YjlhMThkNGVjN2MzMDkxMTIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI0NjFiOWZhNmI1YmM0YjY0MjRkZWM1YjlhMThkNGVjN2MzMDkxMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkMWRhZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjQ2MWI5ZmE2YjViYzRiNjQyNGRlYzViOWExOGQ0ZWM3YzMwOTExMgpAQCAtMCwwICsxIEBACis/KqCkrkAIEAc68FsG+GMJKDv+ISFc8Akhfgkf2+VH/SHwY206JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjRlYzJmM2UxN2QzODUwNTY0Nzg4ZjNmZWQxN2E1YzU4NmM0NDY1OCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjRlYzJmM2UxN2QzODUwNTY0Nzg4ZjNmZWQxN2E1YzU4NmM0NDY1OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjZhNzQyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNGVjMmYzZTE3ZDM4NTA1NjQ3ODhmM2ZlZDE3YTVjNTg2YzQ0NjU4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjUzN2I4ZDZiOTAyYjhkZmM2ZTE3ZjE5NGNmN2QwNWRkZWNmNzRjZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMjUzN2I4ZDZiOTAyYjhkZmM2ZTE3ZjE5NGNmN2QwNWRkZWNmNzRjZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNlZTRmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNTM3YjhkNmI5MDJiOGRmYzZlMTdmMTk0Y2Y3ZDA1ZGRlY2Y3NGNmCkBAIC0wLDAgKzEgQEAKK6QfIYPb8NCkHyGDOltv8PBjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNTNhZDAxYWNlYTRiNzAzOGVkYzNmMmE4YzRhMGMwZjVjNGRjZDA1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNTNhZDAxYWNlYTRiNzAzOGVkYzNmMmE4YzRhMGMwZjVjNGRjZDA1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMWRhYzMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI1M2FkMDFhY2VhNGI3MDM4ZWRjM2YyYThjNGEwYzBmNWM0ZGNkMDUKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5TfpGzs/R+0oWyghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNTZkMGJiZGJlZDIyZjU4NjdhNmY1MDNiZjA4MjAxMWU2MWVlMTJiIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNTZkMGJiZGJlZDIyZjU4NjdhNmY1MDNiZjA4MjAxMWU2MWVlMTJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZDY5YjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI1NmQwYmJkYmVkMjJmNTg2N2E2ZjUwM2JmMDgyMDExZTYxZWUxMmIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNmYwZTg4YWRiZDhmOGNkZjc3ODEzMWEzNWIzM2VjZjg3MTFmYTQ5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yNmYwZTg4YWRiZDhmOGNkZjc3ODEzMWEzNWIzM2VjZjg3MTFmYTQ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ODU3NmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzI2ZjBlODhhZGJkOGY4Y2RmNzc4MTMxYTM1YjMzZWNmODcxMWZhNDkKQEAgLTAsMCArMSBAQAorpHCD2/DwpB8hg9snKfBjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yZTVkZDhmYjlkMmEzMWZhZDlkNjgxZWRhNjk3ZDA4NWI2NDdiNTdjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yZTVkZDhmYjlkMmEzMWZhZDlkNjgxZWRhNjk3ZDA4NWI2NDdiNTdjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OWQ3ZjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzJlNWRkOGZiOWQyYTMxZmFkOWQ2ODFlZGE2OTdkMDg1YjY0N2I1N2MKQEAgLTAsMCArMSBAQAorpB8hg/DxpB8hg9vwsfBjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yZmRmZDJhYmYzMGM2MzZlYzhjODQxZjFhYzI2NTk0ZTI1NjY0ZjBmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8yZmRmZDJhYmYzMGM2MzZlYzhjODQxZjFhYzI2NTk0ZTI1NjY0ZjBmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzI3YWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzJmZGZkMmFiZjMwYzYzNmVjOGM4NDFmMWFjMjY1OTRlMjU2NjRmMGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zMTFkYWM1MDkyZTM2MTM0ZDM0OTBmOThhYTQyMDc0MjVlMGVlOTQxIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zMTFkYWM1MDkyZTM2MTM0ZDM0OTBmOThhYTQyMDc0MjVlMGVlOTQxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOTAwZWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzMxMWRhYzUwOTJlMzYxMzRkMzQ5MGY5OGFhNDIwNzQyNWUwZWU5NDEKQEAgLTAsMCArMSBAQAorEAfwWyghCfBbKCFcCSHlR/06WyghIRNbKAkh5Uf9QSkoISntIbgqISEJKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzIwZmU2MjI0YTViNjkxYzA0MjVlMzRiNmIxNGU4YzZmZTlmOTYyMCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzIwZmU2MjI0YTViNjkxYzA0MjVlMzRiNmIxNGU4YzZmZTlmOTYyMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzA2MTg3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zMjBmZTYyMjRhNWI2OTFjMDQyNWUzNGI2YjE0ZThjNmZlOWY5NjIwCkBAIC0wLDAgKzEgQEAKKyqgpK5ACBAH8Fs6BvhjCTg7J/4hIVzwCSF+CR/bREf9IfBrbScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzMyNTVmMWM3NDQxYTcxNTBkYzNjMzMwMjJiZmJlOGM5NTZjN2I3YjEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzMyNTVmMWM3NDQxYTcxNTBkYzNjMzMwMjJiZmJlOGM5NTZjN2I3YjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFjMDkwNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzI1NWYxYzc0NDFhNzE1MGRjM2MzMzAyMmJmYmU4Yzk1NmM3YjdiMQpAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJIeVF/SEqKCEhCSHlR/1BKSghKe0hvCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzNiYzlkYjEwNGViNzI4OTFmYjA5NmYzNGNiYWMxOTFiM2Y5OTE4ZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzNiYzlkYjEwNGViNzI4OTFmYjA5NmYzNGNiYWMxOTFiM2Y5OTE4ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWY1OWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zM2JjOWRiMTA0ZWI3Mjg5MWZiMDk2ZjM0Y2JhYzE5MWIzZjk5MThkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzQyZmYxZGI3MGE3NjE2YjRlZjc2YzAzYTQyODAyYzY3MDJjMThjYiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzQyZmYxZGI3MGE3NjE2YjRlZjc2YzAzYTQyODAyYzY3MDJjMThjYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjkyMTkzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zNDJmZjFkYjcwYTc2MTZiNGVmNzZjMDNhNDI4MDJjNjcwMmMxOGNiCkBAIC0wLDAgKzEgQEAKKykHOjshnMon0tgpKjt9dik3Sc8hpCk7HpYtTSqx5OIhJ2QqQ3UYDquRWCQwDik68yo7OuTdOzsoKTs6Xe/mQApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzQ0YzAxMWRmOTkyY2NmYzBlYzY4MmMxNGExY2IyZDc5NTk5OThjNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzQ0YzAxMWRmOTkyY2NmYzBlYzY4MmMxNGExY2IyZDc5NTk5OThjNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODJhZjdiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zNDRjMDExZGY5OTJjY2ZjMGVjNjgyYzE0YTFjYjJkNzk1OTk5OGM3CkBAIC0wLDAgKzEgQEAKKzukpBAH8KQPLWJpbotjKlsppA+kpCgQB/AKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzM1Nzc1ZWZiOWQwZDY4ZmEwNzk4N2I5YTg0OTM0Mzg5YjUyOGU0MzYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzM1Nzc1ZWZiOWQwZDY4ZmEwNzk4N2I5YTg0OTM0Mzg5YjUyOGU0MzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyMDQwMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzU3NzVlZmI5ZDBkNjhmYTA3OTg3YjlhODQ5MzQzODliNTI4ZTQzNgpAQCAtMCwwICsxIEBACis/pB/T8CHc8AljJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzY1MDE2OGRiNmZlMTE1ZmIxZTczZWVkNGI3NmNkMjI0ZDk3N2QwMSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzY1MDE2OGRiNmZlMTE1ZmIxZTczZWVkNGI3NmNkMjI0ZDk3N2QwMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTUwN2QyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zNjUwMTY4ZGI2ZmUxMTVmYjFlNzNlZWQ0Yjc2Y2QyMjRkOTc3ZDAxCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2MpKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzgyMjhiZjk4Y2RiNTBmZDNmYTgzMGJhNWE5ZDRjNzM5OTA2M2RmZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzgyMjhiZjk4Y2RiNTBmZDNmYTgzMGJhNWE5ZDRjNzM5OTA2M2RmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmRiNjYyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zODIyOGJmOThjZGI1MGZkM2ZhODMwYmE1YTlkNGM3Mzk5MDYzZGZmCkBAIC0wLDAgKzEgQEAKKyqgpK5ACBAHOvBbKPhjCSg7/iEhXAkhY+VH/ToKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzM4NzE3YmVlOTAxMTUxYjIyYTEwYmViMTJjNjYyM2NjYzg0NGQzYzIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzM4NzE3YmVlOTAxMTUxYjIyYTEwYmViMTJjNjYyM2NjYzg0NGQzYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0YjIyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvMzg3MTdiZWU5MDExNTFiMjJhMTBiZWIxMmM2NjIzY2NjODQ0ZDNjMgpAQCAtMCwwICsxIEBACis7Py4QB/BbKC1iaW4hCfAoIaRcCSHlR/06WyghJ/BbKCEnYwfwIQnwY1sKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNhNGJiNDI3YTg1YmRjNWJmNjZhYzcxZGIwNzNjOTllMGRjOWY4ODEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNhNGJiNDI3YTg1YmRjNWJmNjZhYzcxZGIwNzNjOTllMGRjOWY4ODEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ0MDBhMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2E0YmI0MjdhODViZGM1YmY2NmFjNzFkYjA3M2M5OWUwZGM5Zjg4MQpAQCAtMCwwICsxIEBACiukEAfwWygnIQnwKCFcCSHlR/06KCEn8FsoISEJpB9b8CHwCWPwWyghIR8JIeVH/SHlR/0nQSkoE1soCSchIeUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNhYjQ4NjIxZDliOGYwNzUzNjkwOTlhOGVjNzUxN2JkMjNmZDZlNzAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNhYjQ4NjIxZDliOGYwNzUzNjkwOTlhOGVjNzUxN2JkMjNmZDZlNzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0M2U2MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2FiNDg2MjFkOWI4ZjA3NTM2OTA5OWE4ZWM3NTE3YmQyM2ZkNmU3MApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JQSEhP6Qf2/AhEAdie/BpLShu8AkhXAkh5R/pGzs/R+0hITpbKChc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2FlYzhkOTMxMTEzMGRmYmI2NTg0ZmU2ZTYxOTU3OWMyMTk5MmI1ZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2FlYzhkOTMxMTEzMGRmYmI2NTg0ZmU2ZTYxOTU3OWMyMTk5MmI1ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDViOGIyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYWVjOGQ5MzExMTMwZGZiYjY1ODRmZTZlNjE5NTc5YzIxOTkyYjVmCkBAIC0wLDAgKzEgQEAKK6QPpNvwpIMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNiMTQ4MzdmMjI5MDVkY2IwNGY5M2FlZDJhYTY5YmY5NTkyNGZiOWQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNiMTQ4MzdmMjI5MDVkY2IwNGY5M2FlZDJhYTY5YmY5NTkyNGZiOWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNlYWYwNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2IxNDgzN2YyMjkwNWRjYjA0ZjkzYWVkMmFhNjliZjk1OTI0ZmI5ZApAQCAtMCwwICsxIEBACitmEyohKIEhIQlpW9EhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYmU2M2MxNjM4MDU5MjdlMDRmZDdmODRkOTYxMjJjNDgyNDBlNjAxIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYmU2M2MxNjM4MDU5MjdlMDRmZDdmODRkOTYxMjJjNDgyNDBlNjAxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNDlhODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNiZTYzYzE2MzgwNTkyN2UwNGZkN2Y4NGQ5NjEyMmM0ODI0MGU2MDEKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LpB/KIfAJYylbJycoClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYmYyZTM0OTc0N2MwZjUzOTE4MWUwZDQwODRhNWZlNTA2ODExYTllIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYmYyZTM0OTc0N2MwZjUzOTE4MWUwZDQwODRhNWZlNTA2ODExYTllCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZTdhOGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNiZjJlMzQ5NzQ3YzBmNTM5MTgxZTBkNDA4NGE1ZmU1MDY4MTFhOWUKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW4/8ItjWykoLSdiaW4JISE/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYzVhZjRkNzNlOTRkMGU4YWQ1NjY2YjZhY2IzNDBmOTI5MDMxZTk1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zYzVhZjRkNzNlOTRkMGU4YWQ1NjY2YjZhY2IzNDBmOTI5MDMxZTk1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMjQ0NmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNjNWFmNGQ3M2U5NGQwZThhZDU2NjZiNmFjYjM0MGY5MjkwMzFlOTUKQEAgLTAsMCArMSBAQAorpB9jClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZDJiMjUzNDZhOTY3MWQ4M2JkMDgyZDE3MGE0NWVlZDczOWJhZTZiIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZDJiMjUzNDZhOTY3MWQ4M2JkMDgyZDE3MGE0NWVlZDczOWJhZTZiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZmYxMWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNkMmIyNTM0NmE5NjcxZDgzYmQwODJkMTcwYTQ1ZWVkNzM5YmFlNmIKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1uQKaQoKqQHO1soJ6TwISgtDglif25pJyEhL6QfCdvwIR8oClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZGU3Yjg2MGMzZmJhMmJjNTU3MDdmZDY4NzVkY2UyNzZmMmYyNDliIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZGU3Yjg2MGMzZmJhMmJjNTU3MDdmZDY4NzVkY2UyNzZmMmYyNDliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkODc1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzNkZTdiODYwYzNmYmEyYmM1NTcwN2ZkNjg3NWRjZTI3NmYyZjI0OWIKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2UyMDA0ZmY5ZjQwZTM5OGUwZjQxMTM4YTI1YThiNjZlM2Q4NDNkOSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2UyMDA0ZmY5ZjQwZTM5OGUwZjQxMTM4YTI1YThiNjZlM2Q4NDNkOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGY2YzdjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZTIwMDRmZjlmNDBlMzk4ZTBmNDExMzhhMjVhOGI2NmUzZDg0M2Q5CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2Y4OTgzZTQ1NzAzM2NjODU5OTdjMzU2OTM1YmE5YzIxNDYwZTg2YiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvM2Y4OTgzZTQ1NzAzM2NjODU5OTdjMzU2OTM1YmE5YzIxNDYwZTg2YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzUwZjVhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy8zZjg5ODNlNDU3MDMzY2M4NTk5N2MzNTY5MzViYTljMjE0NjBlODZiCkBAIC0wLDAgKzEgQEAKKy46pGMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQxMDU2NjkwODZkODNhMjBmOGQ5OTEwODg1NTNiYTA4MjAyNDc4Y2QgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQxMDU2NjkwODZkODNhMjBmOGQ5OTEwODg1NTNiYTA4MjAyNDc4Y2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcyYWYxYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDEwNTY2OTA4NmQ4M2EyMGY4ZDk5MTA4ODU1M2JhMDgyMDI0NzhjZApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpboukH9vwIWNbKSgnLWJsCSohIT+kH9viIRAH8PB7KC1iaW5cCWMhJwkhCfAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQxODA2MTkzMTZlZWY3OTEyZDFjZjUyZmZlODU4OTcyNDJlMWFlODggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQxODA2MTkzMTZlZWY3OTEyZDFjZjUyZmZlODU4OTcyNDJlMWFlODgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJmYmRmNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDE4MDYxOTMxNmVlZjc5MTJkMWNmNTJmZmU4NTg5NzI0MmUxYWU4OApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JIyE/pB/b8CEQB/B7KC1iaW7wCSFcCSHlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MjAyOTFkNzEzOWQ5MjQ2ZGU3NDc3MzlmZDk4MTAyNDM0YTc0MmRkIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MjAyOTFkNzEzOWQ5MjQ2ZGU3NDc3MzlmZDk4MTAyNDM0YTc0MmRkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZjZhMjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQyMDI5MWQ3MTM5ZDkyNDZkZTc0NzczOWZkOTgxMDI0MzRhNzQyZGQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MjU2NDM3ZmM1ODk3YzBjZDVkNzU1ODE2ZTRlNjhjN2JlMzI2ODQ5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MjU2NDM3ZmM1ODk3YzBjZDVkNzU1ODE2ZTRlNjhjN2JlMzI2ODQ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZWJlMTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQyNTY0MzdmYzU4OTdjMGNkNWQ3NTU4MTZlNGU2OGM3YmUzMjY4NDkKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MmIyNWE1NDEzYzUzNjQ3OGEzZTYzZGE1YWRlZjQyNTBiYWJmMmY0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MmIyNWE1NDEzYzUzNjQ3OGEzZTYzZGE1YWRlZjQyNTBiYWJmMmY0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MTZjYWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQyYjI1YTU0MTNjNTM2NDc4YTNlNjNkYTVhZGVmNDI1MGJhYmYyZjQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MmJlZjQ0YWU3NTFhNDVjNjcxZDlkYTViMTIzMWQyYWM3NDdhNDhkIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MmJlZjQ0YWU3NTFhNDVjNjcxZDlkYTViMTIzMWQyYWM3NDdhNDhkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YzQ4NzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQyYmVmNDRhZTc1MWE0NWM2NzFkOWRhNWIxMjMxZDJhYzc0N2E0OGQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MzhjM2M5MDQ1YzNjZjc5MTBhY2VlYzM0Zjc3YjQ3YTcwY2E0YWJkIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80MzhjM2M5MDQ1YzNjZjc5MTBhY2VlYzM0Zjc3YjQ3YTcwY2E0YWJkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDBkYTcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQzOGMzYzkwNDVjM2NmNzkxMGFjZWVjMzRmNzdiNDdhNzBjYTRhYmQKQEAgLTAsMCArMSBAQAorEAfwWygtYmluIQnwKCEJIeVH/TpbKAghJ/BbKKQhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80M2FmOTZiNGY2NWVkMGFjZTcyMzY0MjdmMmY4ODMzYzQ4MzU5ODllIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80M2FmOTZiNGY2NWVkMGFjZTcyMzY0MjdmMmY4ODMzYzQ4MzU5ODllCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZDUyYWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQzYWY5NmI0ZjY1ZWQwYWNlNzIzNjQyN2YyZjg4MzNjNDgzNTk4OWUKQEAgLTAsMCArMSBAQAorpB8hg9sqpBAH8KQPLWJpbqQPpPDw2/BjYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ0YzYxMTliYjkxYTQ1MmQ2MTI4Y2UwZWEwZDYyOTM4ODAwNzc5ZWEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ0YzYxMTliYjkxYTQ1MmQ2MTI4Y2UwZWEwZDYyOTM4ODAwNzc5ZWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5NGFkNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDRjNjExOWJiOTFhNDUyZDYxMjhjZTBlYTBkNjI5Mzg4MDA3NzllYQpAQCAtMCwwICsxIEBACis7PzBjISgH8EsJ8FtOIVwZIeVHIVsoISEJIeVH/UEpKCEp7SEq5UeAvv1BKSjZO4oKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ2ZDU5NTMzMTY4OWFlMDFkNzdhZmYzODc3NDdhOThmZjM0ODAwOTYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ2ZDU5NTMzMTY4OWFlMDFkNzdhZmYzODc3NDdhOThmZjM0ODAwOTYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNiNzYyOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDZkNTk1MzMxNjg5YWUwMWQ3N2FmZjM4Nzc0N2E5OGZmMzQ4MDA5NgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ3MWEzMDdiODFkYzM3NDU5MDg3ZDQxNTMyNzQxYzVjOWQ3YmE4MzYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ3MWEzMDdiODFkYzM3NDU5MDg3ZDQxNTMyNzQxYzVjOWQ3YmE4MzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwN2ZjNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDcxYTMwN2I4MWRjMzc0NTkwODdkNDE1MzI3NDFjNWM5ZDdiYTgzNgpAQCAtMCwwICsxIEBACiukDn8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ4OTAwYjRhNTU1NzUzMDkyMmNlNDVjMTVhZDBkM2IwYTMzNzUyMGQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ4OTAwYjRhNTU1NzUzMDkyMmNlNDVjMTVhZDBkM2IwYTMzNzUyMGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5ZDAzNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDg5MDBiNGE1NTU3NTMwOTIyY2U0NWMxNWFkMGQzYjBhMzM3NTIwZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ4YmNjZTJjNjQ4N2IxODcwNmVmMGM2MDljYTM5YzQ1NjIxNWJhYzggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzQ4YmNjZTJjNjQ4N2IxODcwNmVmMGM2MDljYTM5YzQ1NjIxNWJhYzgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhNWExMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDhiY2NlMmM2NDg3YjE4NzA2ZWYwYzYwOWNhMzljNDU2MjE1YmFjOApAQCAtMCwwICsxIEBACiukHwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDkwMjdiYmQzZjNmM2NhZmEzMTU4NDNjOGZlODI4MGY4Njk4NTI3MyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDkwMjdiYmQzZjNmM2NhZmEzMTU4NDNjOGZlODI4MGY4Njk4NTI3MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjM5MGZkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80OTAyN2JiZDNmM2YzY2FmYTMxNTg0M2M4ZmU4MjgwZjg2OTg1MjczCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDk5Mzc2YzVlMjkxZGEyZjljMjU5OTlhYmY0OTYwZmFiNWE5MmVjOCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNDk5Mzc2YzVlMjkxZGEyZjljMjU5OTlhYmY0OTYwZmFiNWE5MmVjOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmNlYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80OTkzNzZjNWUyOTFkYTJmOWMyNTk5OWFiZjQ5NjBmYWI1YTkyZWM4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGEzYjdjZTBjZGYyMTc5NjNhMGI2OTI3NjllNWQ2ZjRiZWZlNzNiOCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGEzYjdjZTBjZGYyMTc5NjNhMGI2OTI3NjllNWQ2ZjRiZWZlNzNiOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjkzYzgyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80YTNiN2NlMGNkZjIxNzk2M2EwYjY5Mjc2OWU1ZDZmNGJlZmU3M2I4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGEzZmRiOTZiYzhjODBmMTk5MmYwZjcyZjk2M2Y4NDg1NmNiYWRlOCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGEzZmRiOTZiYzhjODBmMTk5MmYwZjcyZjk2M2Y4NDg1NmNiYWRlOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmY2YjZlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80YTNmZGI5NmJjOGM4MGYxOTkyZjBmNzJmOTYzZjg0ODU2Y2JhZGU4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGFhZTgwZTA1NzkzZDdhZGI0MmE3ZTZlOGE1MjgzYjY3NzMxODc3NyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGFhZTgwZTA1NzkzZDdhZGI0MmE3ZTZlOGE1MjgzYjY3NzMxODc3NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzhiZGQxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80YWFlODBlMDU3OTNkN2FkYjQyYTdlNmU4YTUyODNiNjc3MzE4Nzc3CkBAIC0wLDAgKzEgQEAKKyhCpAE6P/AfYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGM3YTAzNGQzYTNiNGYyOWQ5OWNhZjAyMWEwZTliYmI4OTcwNmMyZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGM3YTAzNGQzYTNiNGYyOWQ5OWNhZjAyMWEwZTliYmI4OTcwNmMyZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzhlY2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80YzdhMDM0ZDNhM2I0ZjI5ZDk5Y2FmMDIxYTBlOWJiYjg5NzA2YzJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGNlOGE0M2ZiMTdhMDc1NjI3MTYwODEyYWQyNmMyNTIxMGQ4YTgyZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNGNlOGE0M2ZiMTdhMDc1NjI3MTYwODEyYWQyNmMyNTIxMGQ4YTgyZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTNjNjFhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy80Y2U4YTQzZmIxN2EwNzU2MjcxNjA4MTJhZDI2YzI1MjEwZDhhODJkCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2MpKC0nKmluCSEhP6Qf2/AhIRAH8HsoLWJpbvAJIVxIIR/l6Rs7P0ftOlsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUwMzJhNzVhOThjZDE0ZDRkYWI3NWMxYzVlMmNkOTgxYWJiMTlkY2YgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUwMzJhNzVhOThjZDE0ZDRkYWI3NWMxYzVlMmNkOTgxYWJiMTlkY2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhMDZhMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTAzMmE3NWE5OGNkMTRkNGRhYjc1YzFjNWUyY2Q5ODFhYmIxOWRjZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUwYjNmNGI2YWVkOTdmNDQyNDk2ZDI3ZjNiNDMxNWExOGJhNzZkNWYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUwYjNmNGI2YWVkOTdmNDQyNDk2ZDI3ZjNiNDMxNWExOGJhNzZkNWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJlOGY5YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTBiM2Y0YjZhZWQ5N2Y0NDI0OTZkMjdmM2I0MzE1YTE4YmE3NmQ1ZgpAQCAtMCwwICsxIEBACis7Oz8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUxMDY0Yjg4YTk4NjU4ZDQ4YTBkYTdmMTU0NWMyZDEyOTNhZDk1MzggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUxMDY0Yjg4YTk4NjU4ZDQ4YTBkYTdmMTU0NWMyZDEyOTNhZDk1MzgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwOGFmOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTEwNjRiODhhOTg2NThkNDhhMGRhN2YxNTQ1YzJkMTI5M2FkOTUzOApAQCAtMCwwICsxIEBACisqpBAH8KQPLWJpbqQPpNsnKD+kB/A7WygnpPAhCR8oClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81MTc1MmYxMmQ1OWZhZGFhYTBkYzcyZTYzNzA2MTJiODRlZTE1NTViIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81MTc1MmYxMmQ1OWZhZGFhYTBkYzcyZTYzNzA2MTJiODRlZTE1NTViCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViY2MwMDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUxNzUyZjEyZDU5ZmFkYWFhMGRjNzJlNjM3MDYxMmI4NGVlMTU1NWIKQEAgLTAsMCArMSBAQAorKqCkrkAIEAc68Fso+GMJKDv+ISFcJyFj5Uf9OgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTFlZmY2ZmNiZmUxYTUxY2ViM2Y1ZjIxNDBjMDFlZWE4OWI0MzEzZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTFlZmY2ZmNiZmUxYTUxY2ViM2Y1ZjIxNDBjMDFlZWE4OWI0MzEzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjYxMThmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81MWVmZjZmY2JmZTFhNTFjZWIzZjVmMjE0MGMwMWVlYTg5YjQzMTNkCkBAIC0wLDAgKzEgQEAKK6QfpNvw8INjYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUxZjY1ZjY4MWNmM2ExMjE4ZDgzYWQ1ODY0MmMwNmRlYWVhODYyMTAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUxZjY1ZjY4MWNmM2ExMjE4ZDgzYWQ1ODY0MmMwNmRlYWVhODYyMTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzNjkyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTFmNjVmNjgxY2YzYTEyMThkODNhZDU4NjQyYzA2ZGVhZWE4NjIxMApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUyMTgwOTkwM2QzNmRiODBiMWNjZDcwN2YzNTQzNjFmMmJmMDUwNzUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUyMTgwOTkwM2QzNmRiODBiMWNjZDcwN2YzNTQzNjFmMmJmMDUwNzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4NThlZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTIxODA5OTAzZDM2ZGI4MGIxY2NkNzA3ZjM1NDM2MWYyYmYwNTA3NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUyZmU4ZjBlMWZhMjcwZWExNmY2NmM5M2YyZmZhYjI2NWNlMDU5ZTggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUyZmU4ZjBlMWZhMjcwZWExNmY2NmM5M2YyZmZhYjI2NWNlMDU5ZTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNlYzVkNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTJmZThmMGUxZmEyNzBlYTE2ZjY2YzkzZjJmZmFiMjY1Y2UwNTllOApAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJYuUzR/0hKighIQlC5Uf9QSkoISntIWQqKeVH/UkpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUzZGU4N2FlOTRhY2RjOGU1OGEzNjk0NTljMTJhMzI0MGYxMjk0ZmUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzUzZGU4N2FlOTRhY2RjOGU1OGEzNjk0NTljMTJhMzI0MGYxMjk0ZmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhZGE0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTNkZTg3YWU5NGFjZGM4ZTU4YTM2OTQ1OWMxMmEzMjQwZjEyOTRmZQpAQCAtMCwwICsxIEBACis/KqCkrkAIEPA6B1sG+GMJKDv+ISFc8Akhfgkf2+VH/SHwY206JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTRhMmIzOTkzYzM0ODM3NDVmNjMxNGM4NzBhMDM4YThlNThmOTdhNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTRhMmIzOTkzYzM0ODM3NDVmNjMxNGM4NzBhMDM4YThlNThmOTdhNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzljODEzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81NGEyYjM5OTNjMzQ4Mzc0NWY2MzE0Yzg3MGEwMzhhOGU1OGY5N2E3CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTVkNjBjMmU1MDQwYTM4YmU4Y2E0MWRlNjNlMTM3ZTNmZWY4OTJhNCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTVkNjBjMmU1MDQwYTM4YmU4Y2E0MWRlNjNlMTM3ZTNmZWY4OTJhNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQ3MjI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81NWQ2MGMyZTUwNDBhMzhiZThjYTQxZGU2M2UxMzdlM2ZlZjg5MmE0CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKCopP6CkrkAIEAc6ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81NjUzYzQ0YTViNTIwYmRmMmJkYzU5OWI3OTY2ZjFkN2M0NDk1MGIzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81NjUzYzQ0YTViNTIwYmRmMmJkYzU5OWI3OTY2ZjFkN2M0NDk1MGIzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2YxYTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU2NTNjNDRhNWI1MjBiZGYyYmRjNTk5Yjc5NjZmMWQ3YzQ0OTUwYjMKQEAgLTAsMCArMSBAQAorpH8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4MzhiNWE2ODMyMjllYmI2ZTYyNzdlMjgxMDg2M2U2NDJiOGFmYzIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4MzhiNWE2ODMyMjllYmI2ZTYyNzdlMjgxMDg2M2U2NDJiOGFmYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJmYzU5NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTgzOGI1YTY4MzIyOWViYjZlNjI3N2UyODEwODYzZTY0MmI4YWZjMgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4OGQyMjU3ODQ4OTFhYzg4ZTMwYWM2ZWI1NjUxZDYzZmFjMzQwODMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4OGQyMjU3ODQ4OTFhYzg4ZTMwYWM2ZWI1NjUxZDYzZmFjMzQwODMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhjMWRmZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNTg4ZDIyNTc4NDg5MWFjODhlMzBhYzZlYjU2NTFkNjNmYWMzNDA4MwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpboshY1spKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNThkNTFjMjFhMjBiNjU0OTU2N2EwYWI4ZmVlMjlkMTYyZGQzZmM1YSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNThkNTFjMjFhMjBiNjU0OTU2N2EwYWI4ZmVlMjlkMTYyZGQzZmM1YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2UxMTVmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81OGQ1MWMyMWEyMGI2NTQ5NTY3YTBhYjhmZWUyOWQxNjJkZDNmYzVhCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKSg7LScnYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs6P+3lWygoITshXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4ZjEwMzZkOGZmODU1ODQxZWMyNWIzYzMzZTg1YThmZWMwZDk0YjcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzU4ZjEwMzZkOGZmODU1ODQxZWMyNWIzYzMzZTg1YThmZWMwZDk0YjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjNDE2NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNThmMTAzNmQ4ZmY4NTU4NDFlYzI1YjNjMzNlODVhOGZlYzBkOTRiNwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWyktJ2JpbgkxIT+kH9vwITsnEAcq8HsoLWJpbvAJIVwJIeUf6Rs7P0ftOlsoKCEhTPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzVhOTlkZjQyZmI3YmJhZmEyZDU1NzE0ZWUyMzViMWM0Njc3NmIyYWQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzVhOTlkZjQyZmI3YmJhZmEyZDU1NzE0ZWUyMzViMWM0Njc3NmIyYWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4YzA2MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWE5OWRmNDJmYjdiYmFmYTJkNTU3MTRlZTIzNWIxYzQ2Nzc2YjJhZApAQCAtMCwwICsxIEBACiukH1vwIfAJYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzViNDI3OTM1NTA2OTliMmMwMTViZWQ2NzdjZmNkZGMwNTJmNzM1MTMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzViNDI3OTM1NTA2OTliMmMwMTViZWQ2NzdjZmNkZGMwNTJmNzM1MTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0ZTY4YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWI0Mjc5MzU1MDY5OWIyYzAxNWJlZDY3N2NmY2RkYzA1MmY3MzUxMwpAQCAtMCwwICsxIEBACiukcIPb8PCkHyGD2/Ap8GMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzViOGNhNzJiYTAwMjMxYzM4YjE5ZjU4MjEyN2U2YTE0NmViYTQyODIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzViOGNhNzJiYTAwMjMxYzM4YjE5ZjU4MjEyN2U2YTE0NmViYTQyODIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI0OWQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWI4Y2E3MmJhMDAyMzFjMzhiMTlmNTgyMTI3ZTZhMTQ2ZWJhNDI4MgpAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJIeVH/SEqKCEJIdTlR/1BKSghKe0hvCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWJhYTEzZGM5NWRhMDVlN2JhMDJiYmU5NTgzZWEyNDUxN2EyOWExYSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWJhYTEzZGM5NWRhMDVlN2JhMDJiYmU5NTgzZWEyNDUxN2EyOWExYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjVhODg3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81YmFhMTNkYzk1ZGEwNWU3YmEwMmJiZTk1ODNlYTI0NTE3YTI5YTFhCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui6TwW2MnISmkEGJpFwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWJhYjYxZWI1MzE3NjQ0OWUyNWMyYzgyZjE3MmI4MmNiMTNmZmI5ZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWJhYjYxZWI1MzE3NjQ0OWUyNWMyYzgyZjE3MmI4MmNiMTNmZmI5ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDc1OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81YmFiNjFlYjUzMTc2NDQ5ZTI1YzJjODJmMTcyYjgyY2IxM2ZmYjlkCkBAIC0wLDAgKzEgQEAKKz8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzVjNmY2YjZmN2YzZTdiNDM1ZjA2MGFiYjczYzIwZDJiNzczYTdmNTYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzVjNmY2YjZmN2YzZTdiNDM1ZjA2MGFiYjczYzIwZDJiNzczYTdmNTYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhlMzE1NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWM2ZjZiNmY3ZjNlN2I0MzVmMDYwYWJiNzNjMjBkMmI3NzNhN2Y1NgpAQCAtMCwwICsxIEBACis7PzBjISgH8EsJ8FtOIVwZIeVHIVsoISEJIeVH/UEpKCEp7SEq5UeAvkEpKNk7igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWM5ZmQ5Y2M3MTAwZmVhZWVhZDFlMGU0NTIwMTk0NWE2ZTc2ZmQ4NSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWM5ZmQ5Y2M3MTAwZmVhZWVhZDFlMGU0NTIwMTk0NWE2ZTc2ZmQ4NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzg0ODFjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81YzlmZDljYzcxMDBmZWFlZWFkMWUwZTQ1MjAxOTQ1YTZlNzZmZDg1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWZmNDljOWVkYzczNjE3OTdhOTUxNTg1ZjNlMTgwMjIyYzhkZDk1ZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNWZmNDljOWVkYzczNjE3OTdhOTUxNTg1ZjNlMTgwMjIyYzhkZDk1ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGNlNWEyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy81ZmY0OWM5ZWRjNzM2MTc5N2E5NTE1ODVmM2UxODAyMjJjOGRkOTVkCkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQBzrwWyj4YwkoO/4hIVzwCSFjCR/l20f9IfBjbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82MTI5OTU0OTQyZTI2YzJhOWVjMDcxYjY2NTk2NzU3NDU2MTNjZjNjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82MTI5OTU0OTQyZTI2YzJhOWVjMDcxYjY2NTk2NzU3NDU2MTNjZjNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZTUzOWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzYxMjk5NTQ5NDJlMjZjMmE5ZWMwNzFiNjY1OTY3NTc0NTYxM2NmM2MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82MWZhNjliNmI1MWIwZWQ5MTkxNGZlNDg3NzkxNzNmOGQyNmExZDU0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82MWZhNjliNmI1MWIwZWQ5MTkxNGZlNDg3NzkxNzNmOGQyNmExZDU0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTlkNWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzYxZmE2OWI2YjUxYjBlZDkxOTE0ZmU0ODc3OTE3M2Y4ZDI2YTFkNTQKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKC0nYmluCTshIT+kH9vwIRAH8HsoLWJpbvAJIVwJIeUf6Rs7P0ftWygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjM2MmFjNjFjZmI2ZTk2NGFmZjc4ZjNjZDY0ODQ3NWRmZDVmZDRlOSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjM2MmFjNjFjZmI2ZTk2NGFmZjc4ZjNjZDY0ODQ3NWRmZDVmZDRlOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmFmNTRkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82MzYyYWM2MWNmYjZlOTY0YWZmNzhmM2NkNjQ4NDc1ZGZkNWZkNGU5CkBAIC0wLDAgKzEgQEAKKzs/J2MH8FsoIQnwW04hXAli5TNH/SEqKCEhCULlR/1BKSghKe0hvCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjQ0ZGViYTUxYzc5YjZlYmQ0NzBiZDQzNjc0NTI5NDEwNDVkMTEyYSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjQ0ZGViYTUxYzc5YjZlYmQ0NzBiZDQzNjc0NTI5NDEwNDVkMTEyYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzU3MzMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NDRkZWJhNTFjNzliNmViZDQ3MGJkNDM2NzQ1Mjk0MTA0NWQxMTJhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjRiZWFlOThlMjI3Njc0OWIxMzNlNjM2OGM5ZTBmMTlhNzllYmE5NiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjRiZWFlOThlMjI3Njc0OWIxMzNlNjM2OGM5ZTBmMTlhNzllYmE5NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWE3YjlkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NGJlYWU5OGUyMjc2NzQ5YjEzM2U2MzY4YzllMGYxOWE3OWViYTk2CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKaQoLQ4JYn9uaSchIS+kH9vwIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjRkN2FkZDkxOTIzMDFmZDg3ODg1NGRjOTZmOWZhOTA1M2YwMzk5MiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjRkN2FkZDkxOTIzMDFmZDg3ODg1NGRjOTZmOWZhOTA1M2YwMzk5MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjAzZWIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NGQ3YWRkOTE5MjMwMWZkODc4ODU0ZGM5NmY5ZmE5MDUzZjAzOTkyCkBAIC0wLDAgKzEgQEAKK6QfIYPb8PBjYydfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NTU2NmRmNjVlOGY1NTQyOGI2NjcyY2MzNTFkZjQxNGZhOGY5MzZjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NTU2NmRmNjVlOGY1NTQyOGI2NjcyY2MzNTFkZjQxNGZhOGY5MzZjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNzNlOTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY1NTY2ZGY2NWU4ZjU1NDI4YjY2NzJjYzM1MWRmNDE0ZmE4ZjkzNmMKQEAgLTAsMCArMSBAQAorJ/BbKCEhCfBbKCEhCSHlR/0h5Uf9QSkoISntIbwp2To7h4oqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NWJiNzAzYWYzNWQ1YWZiODI0Y2Q2OGM0MWQ3YTFhZWIzODQ4ZDM1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NWJiNzAzYWYzNWQ1YWZiODI0Y2Q2OGM0MWQ3YTFhZWIzODQ4ZDM1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYzQyOTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY1YmI3MDNhZjM1ZDVhZmI4MjRjZDY4YzQxZDdhMWFlYjM4NDhkMzUKQEAgLTAsMCArMSBAQAorW/Ah8AknKCFbKCEhCSHlR/0h5Uf9QSkoISntIbwp2To7h4oqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NmM1MzdiZjU5Y2IzNjY3YzAzN2IzNTE3YmUzZDMxMjQ1YzlkYThhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NmM1MzdiZjU5Y2IzNjY3YzAzN2IzNTE3YmUzZDMxMjQ1YzlkYThhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3Y2YzZWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY2YzUzN2JmNTljYjM2NjdjMDM3YjM1MTdiZTNkMzEyNDVjOWRhOGEKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKC0nYmluKSMhP6Qf2/AhEAfweygtYmlu8AkhXCHlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NmY1NzZiYWViMGM5NDM1YTU2ZWI3Mzc1ZGFkYzViNWQ2MzBlZDg3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82NmY1NzZiYWViMGM5NDM1YTU2ZWI3Mzc1ZGFkYzViNWQ2MzBlZDg3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YThjYzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY2ZjU3NmJhZWIwYzk0MzVhNTZlYjczNzVkYWRjNWI1ZDYzMGVkODcKQEAgLTAsMCArMSBAQAorPyqgpK5QCBAHroCkiDrwWwb4Ywk4O/4hIVzwCSF+KAkf20RH/SHwbWM6YycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY3YjRjZWM1MTgzNjU5YWVhZTBmNWJjNzFiM2FkZjA1NDJhMTE4MjggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY3YjRjZWM1MTgzNjU5YWVhZTBmNWJjNzFiM2FkZjA1NDJhMTE4MjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FkN2E5MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjdiNGNlYzUxODM2NTlhZWFlMGY1YmM3MWIzYWRmMDU0MmExMTgyOApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY4Yzk0NzIxZWRhMmY2MjQ4MWJmZjlmMWQxODNkZjcwNDk4ZDBjNWIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY4Yzk0NzIxZWRhMmY2MjQ4MWJmZjlmMWQxODNkZjcwNDk4ZDBjNWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZlOGY2MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjhjOTQ3MjFlZGEyZjYyNDgxYmZmOWYxZDE4M2RmNzA0OThkMGM1YgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWIhboukLVtjJyEppBBiaQcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY4ZWU4MTY5YTY1ZDU4ZWRiOWZjMWM3NTJlYTgxZGZlYzM4MzIwM2MgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzY4ZWU4MTY5YTY1ZDU4ZWRiOWZjMWM3NTJlYTgxZGZlYzM4MzIwM2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiNmUyOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNjhlZTgxNjlhNjVkNThlZGI5ZmMxYzc1MmVhODFkZmVjMzgzMjAzYwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzZiMjAzZDQ5YmJiYTZlZTc0ZGVmMGQzNWMyMjY2ZTA2YWQzYzQ1ZDkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzZiMjAzZDQ5YmJiYTZlZTc0ZGVmMGQzNWMyMjY2ZTA2YWQzYzQ1ZDkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1NDBhZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNmIyMDNkNDliYmJhNmVlNzRkZWYwZDM1YzIyNjZlMDZhZDNjNDVkOQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzZkNTgwZjI4ZDc4NWMwYmY4N2FjMzUxYTMxYTg5Mjg5NDQ5ZmVhZGIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzZkNTgwZjI4ZDc4NWMwYmY4N2FjMzUxYTMxYTg5Mjg5NDQ5ZmVhZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZjOThhNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNmQ1ODBmMjhkNzg1YzBiZjg3YWMzNTFhMzFhODkyODk0NDlmZWFkYgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWymoLS4nYmkqCSEhKD+kH9sh8CEQBzrwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82ZjIzMWRlYzc1OWViMjEwNWUwOTI2M2Q1M2UxNzFkZTE5YTkyYzc0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy82ZjIzMWRlYzc1OWViMjEwNWUwOTI2M2Q1M2UxNzFkZTE5YTkyYzc0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjk1NWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzZmMjMxZGVjNzU5ZWIyMTA1ZTA5MjYzZDUzZTE3MWRlMTlhOTJjNzQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83MGZmNjYyMWEwOWU0ZjY0MTUzOGNiMWIyN2U4YjM4MmIyZjU2YTk0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83MGZmNjYyMWEwOWU0ZjY0MTUzOGNiMWIyN2U4YjM4MmIyZjU2YTk0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjM2M0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzcwZmY2NjIxYTA5ZTRmNjQxNTM4Y2IxYjI3ZThiMzgyYjJmNTZhOTQKQEAgLTAsMCArMSBAQAorpB8hg9sqpBAH8KQPLWJpbqQPpvDw2/BjYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzcxOTgxYjU1ZjI3YTFlYjYyNzRlZGEyNDcwNDhmYTJjNTk3ZjUwMDQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzcxOTgxYjU1ZjI3YTFlYjYyNzRlZGEyNDcwNDhmYTJjNTk3ZjUwMDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3YjJhYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzE5ODFiNTVmMjdhMWViNjI3NGVkYTI0NzA0OGZhMmM1OTdmNTAwNApAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJIeVH/SEqKCEJIeVH/UEpKCEh7SG8KCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzFjMmIwYmViZjdmMGU5MTZlNGFiN2ViMzZkNDdjY2NhMmI5MTAxYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzFjMmIwYmViZjdmMGU5MTZlNGFiN2ViMzZkNDdjY2NhMmI5MTAxYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTc4Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83MWMyYjBiZWJmN2YwZTkxNmU0YWI3ZWIzNmQ0N2NjY2EyYjkxMDFjCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzQ2MTBlMjc4YTViOTBhYTEyY2UxYmVhZjIyMmM0MzA2YjAyZWQ0MyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzQ2MTBlMjc4YTViOTBhYTEyY2UxYmVhZjIyMmM0MzA2YjAyZWQ0MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdmMjNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83NDYxMGUyNzhhNWI5MGFhMTJjZTFiZWFmMjIyYzQzMDZiMDJlZDQzCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbaaQoLQcOfydiaW4JISE/pB/b8CEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc0OGVlOTgxN2ViYTU2ZWM5OTM4NjAxYTBlMzgwYzc0YmFkNDU2M2YgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc0OGVlOTgxN2ViYTU2ZWM5OTM4NjAxYTBlMzgwYzc0YmFkNDU2M2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhN2M2NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzQ4ZWU5ODE3ZWJhNTZlYzk5Mzg2MDFhMGUzODBjNzRiYWQ0NTYzZgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoJy1iaW4JISE/pB/b8CEQB/B7KC1iaVxuIQkhCfDlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83NzI3ZTNlZWIyYTQ4YzQ2YmY1YTY3OGMzMDBmZjhhMzhiOGZmZTNhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83NzI3ZTNlZWIyYTQ4YzQ2YmY1YTY3OGMzMDBmZjhhMzhiOGZmZTNhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViN2M1MmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc3MjdlM2VlYjJhNDhjNDZiZjVhNjc4YzMwMGZmOGEzOGI4ZmZlM2EKQEAgLTAsMCArMSBAQAorPyqgpK5QCBAHroCkiDrwWwb4Ywk4O/4hIVzwCSF+KAkf20RH/SHwY21jOmMnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83ODE3NmQ4MGMxZDc0YzRiMWI4MjBkMzg2YWU0ODNhYzRkMWQ5MmI3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83ODE3NmQ4MGMxZDc0YzRiMWI4MjBkMzg2YWU0ODNhYzRkMWQ5MmI3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZGM4NWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc4MTc2ZDgwYzFkNzRjNGIxYjgyMGQzODZhZTQ4M2FjNGQxZDkyYjcKQEAgLTAsMCArMSBAQAorKD+kH5vwIQljClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83ODlhYmI1NzE1NjNhNjc5NTIyMDA0NmY3NmI3Y2YwYWRlOTA3NDNjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83ODlhYmI1NzE1NjNhNjc5NTIyMDA0NmY3NmI3Y2YwYWRlOTA3NDNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDFjNGMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc4OWFiYjU3MTU2M2E2Nzk1MjIwMDQ2Zjc2YjdjZjBhZGU5MDc0M2MKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKC0uJ2JpbgkhIT+kH9vwIRAHOvAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc4ZjVmZjQwZTU1NTRhYTljMzFiNDVmNzlhN2FlOTY5OWY5M2U3ZmQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzc4ZjVmZjQwZTU1NTRhYTljMzFiNDVmNzlhN2FlOTY5OWY5M2U3ZmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkNDM5MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvNzhmNWZmNDBlNTU1NGFhOWMzMWI0NWY3OWE3YWU5Njk5ZjkzZTdmZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzdhMjhmYzJlOWM3MmQ1MWQyOWU4N2VlZDYzZWQ0MDVjOTc3OWI1ZTEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzdhMjhmYzJlOWM3MmQ1MWQyOWU4N2VlZDYzZWQ0MDVjOTc3OWI1ZTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ1Njk1YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2EyOGZjMmU5YzcyZDUxZDI5ZTg3ZWVkNjNlZDQwNWM5Nzc5YjVlMQpAQCAtMCwwICsxIEBACiukD6Tb8PCDgGNjJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2E0MjA4M2JlMjFkY2U3Zjk2ZWRlZjFmM2IzYjJmZWEwYmNhZWIzZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2E0MjA4M2JlMjFkY2U3Zjk2ZWRlZjFmM2IzYjJmZWEwYmNhZWIzZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2JhN2FhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83YTQyMDgzYmUyMWRjZTdmOTZlZGVmMWYzYjNiMmZlYTBiY2FlYjNmCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKSgtJ2JpbgmrIT+kH9vwITsQByrweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2E1MTI3NWIxMWVjYjFlZmVjOTI1MTM5MDUzMTY4MWM4ZDZmMjQ4MSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2E1MTI3NWIxMWVjYjFlZmVjOTI1MTM5MDUzMTY4MWM4ZDZmMjQ4MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTI5Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83YTUxMjc1YjExZWNiMWVmZWM5MjUxMzkwNTMxNjgxYzhkNmYyNDgxCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2I5NjgyY2Q3YTM5ODQ2OThmNmVhYzAzNGM1OWMwZjkxYjRmYjgzZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2I5NjgyY2Q3YTM5ODQ2OThmNmVhYzAzNGM1OWMwZjkxYjRmYjgzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjQxM2JlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83Yjk2ODJjZDdhMzk4NDY5OGY2ZWFjMDM0YzU5YzBmOTFiNGZiODNkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2JhNzIzOWEyOWQ2MTgzOTYwZTM5ODZhYmM4ZjE5Y2ZiNTQ4YjkwNSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2JhNzIzOWEyOWQ2MTgzOTYwZTM5ODZhYmM4ZjE5Y2ZiNTQ4YjkwNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTg1YTA3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy83YmE3MjM5YTI5ZDYxODM5NjBlMzk4NmFiYzhmMTljZmI1NDhiOTA1CkBAIC0wLDAgKzEgQEAKK6QfIYPb8PBjYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzdkM2IzZDVmMjNkMGVkZTlmN2U1ZGJkMTExNWRiNThjOGE1NGEyMTMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzdkM2IzZDVmMjNkMGVkZTlmN2U1ZGJkMTExNWRiNThjOGE1NGEyMTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxYTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvN2QzYjNkNWYyM2QwZWRlOWY3ZTVkYmQxMTE1ZGI1OGM4YTU0YTIxMwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWymoLSdiaW4JJyEhP6Tb8CEQB/B7Oz8wYyEoLWIoaW7wClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MDM1YzgxYzk1ZGVkZmMyN2MzNjQ5MDY0Zjk4ZjQ5ZTNlNzJjMjFmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MDM1YzgxYzk1ZGVkZmMyN2MzNjQ5MDY0Zjk4ZjQ5ZTNlNzJjMjFmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzdkZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwMzVjODFjOTVkZWRmYzI3YzM2NDkwNjRmOThmNDllM2U3MmMyMWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MDRlMTA1Mjg0MmNlNGQ0NGI5Yzc3NWFkZTJiMThmY2I4Y2U3YmNmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MDRlMTA1Mjg0MmNlNGQ0NGI5Yzc3NWFkZTJiMThmY2I4Y2U3YmNmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYTYwOGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNGUxMDUyODQyY2U0ZDQ0YjljNzc1YWRlMmIxOGZjYjhjZTdiY2YKQEAgLTAsMCArMSBAQAorpKQQB/CkHy1iaW6LpC1bYychKaYQYmkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNTE0Yjg1OTMzZWE5YmRkMzQ2MjU5NWY5NDljNWFmMjQ0MDliODcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNTE0Yjg1OTMzZWE5YmRkMzQ2MjU5NWY5NDljNWFmMjQ0MDliODcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAzMDMzYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODA1MTRiODU5MzNlYTliZGQzNDYyNTk1Zjk0OWM1YWYyNDQwOWI4NwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWymkJw8oraTb8CfwKINjaW4JISEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNTdjMzJiOGJkMjhhNWVjMjEwNWQ2MmYyYWJlOGNmNjljOWY1ZmMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNTdjMzJiOGJkMjhhNWVjMjEwNWQ2MmYyYWJlOGNmNjljOWY1ZmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM4NDM1OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODA1N2MzMmI4YmQyOGE1ZWMyMTA1ZDYyZjJhYmU4Y2Y2OWM5ZjVmYwpAQCAtMCwwICsxIEBACitmEyEoISFjJwlpW9Eh8FsoISEJ8FsoISEJIeVI/SFbKCEhCSHlR/3lQSkoISntIbwqKeVH/UEpKNkhKYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNmEzYmQ0ZTA3OGQ5MWFkZWFjZWRmZDNlNDdlZjhhZTIyOTI0NGEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwNmEzYmQ0ZTA3OGQ5MWFkZWFjZWRmZDNlNDdlZjhhZTIyOTI0NGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2MGUwMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODA2YTNiZDRlMDc4ZDkxYWRlYWNlZGZkM2U0N2VmOGFlMjI5MjQ0YQpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWyk6pA8oLaTb8CfwYoNjaW4JISEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwOTA0NDRmOTgyMThlNjVmZjk1OTQ3ODlmZjIyYmJlYTNjMDQ5N2MgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwOTA0NDRmOTgyMThlNjVmZjk1OTQ3ODlmZjIyYmJlYTNjMDQ5N2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk2NjNhMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODA5MDQ0NGY5ODIxOGU2NWZmOTU5NDc4OWZmMjJiYmVhM2MwNDk3YwpAQCAtMCwwICsxIEBACivVH/Bjqgnb8CcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwZTUxNjY5Mjk1NWQ1ZjIyNDcwNmYyNjhlMjQ3ODU4ODU4ZTE2ZDggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgwZTUxNjY5Mjk1NWQ1ZjIyNDcwNmYyNjhlMjQ3ODU4ODU4ZTE2ZDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEyMzQ1MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODBlNTE2NjkyOTU1ZDVmMjI0NzA2ZjI2OGUyNDc4NTg4NThlMTZkOApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgxMGExMzcyZmE5NzM4MDI2NWY1NTI5YzUwNDNhZTk2ZjAwN2Y1YmIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgxMGExMzcyZmE5NzM4MDI2NWY1NTI5YzUwNDNhZTk2ZjAwN2Y1YmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhM2FlZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODEwYTEzNzJmYTk3MzgwMjY1ZjU1MjljNTA0M2FlOTZmMDA3ZjViYgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgxMjc1OTdkM2MxNDZiMmE4OTU3OWU0NGRhZWY5ZDAzYTBmOTQxZWMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgxMjc1OTdkM2MxNDZiMmE4OTU3OWU0NGRhZWY5ZDAzYTBmOTQxZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3MDM1YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODEyNzU5N2QzYzE0NmIyYTg5NTc5ZTQ0ZGFlZjlkMDNhMGY5NDFlYwpAQCAtMCwwICsxIEBACisqQK6koAgQBzrwWyj4YwkoO/4hIVwJIWPlpEf9On8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgyZWQ1NzFmODkyMmNhYTU3MmQxM2I0Y2M5YjVjNWZhYmFmYWFkZTkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgyZWQ1NzFmODkyMmNhYTU3MmQxM2I0Y2M5YjVjNWZhYmFmYWFkZTkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiOTU5OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODJlZDU3MWY4OTIyY2FhNTcyZDEzYjRjYzliNWM1ZmFiYWZhYWRlOQpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JISE/pCEf8NsQB/B7KPZi6W7wCSEJXCHlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MzI4ZTg2MTc4ODAwZjg3YTNiZjZmODA3NDk5ODRmNDViMGNkMGU4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84MzI4ZTg2MTc4ODAwZjg3YTNiZjZmODA3NDk5ODRmNDViMGNkMGU4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZTUyNzcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzgzMjhlODYxNzg4MDBmODdhM2JmNmY4MDc0OTk4NGY0NWIwY2QwZTgKQEAgLTAsMCArMSBAQAorKD8qpCEH8KQPaGVtZYOkBycHKCek8CFjCQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODQ0NDFlZmQ3ZDhiZGIwY2UyZmFjMjhmMjE4ZDNkNWQ0ZDc3ZjFkNCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODQ0NDFlZmQ3ZDhiZGIwY2UyZmFjMjhmMjE4ZDNkNWQ0ZDc3ZjFkNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGFiODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84NDQ0MWVmZDdkOGJkYjBjZTJmYWMyOGYyMThkM2Q1ZDRkNzdmMWQ0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODRjYmY3MGY0NWE2NGQ1YTAxZDFjOTYzNjdiNmQ2MTYwMTM0ZjFhZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODRjYmY3MGY0NWE2NGQ1YTAxZDFjOTYzNjdiNmQ2MTYwMTM0ZjFhZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWY0YzY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84NGNiZjcwZjQ1YTY0ZDVhMDFkMWM5NjM2N2I2ZDYxNjAxMzRmMWFkCkBAIC0wLDAgKzEgQEAKKzs/MGMhKAfwSwnwW04hXBkh9UchWyghIQkh5Uf9QSkoISntISrlR4C+/UEpKNkrKYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg1ZWIwZjQ1MDJhNTFlNjQ2ZGFiNGFlMDhlYWJkOTA2MTNjZGY4ZTEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg1ZWIwZjQ1MDJhNTFlNjQ2ZGFiNGFlMDhlYWJkOTA2MTNjZGY4ZTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkZTUyMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODVlYjBmNDUwMmE1MWU2NDZkYWI0YWUwOGVhYmQ5MDYxM2NkZjhlMQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2MDgwZjMzZTRlYWUyMWIzNzg2M2MyNTNjZTYxZWFhMTMwMjFhOTcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2MDgwZjMzZTRlYWUyMWIzNzg2M2MyNTNjZTYxZWFhMTMwMjFhOTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY1YzdhOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODYwODBmMzNlNGVhZTIxYjM3ODYzYzI1M2NlNjFlYWExMzAyMWE5NwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2MmUzY2NmNjAxZWUwZjdmYmQ4YjIzZTY4MTFmZDUwNDg1YTExOGYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2MmUzY2NmNjAxZWUwZjdmYmQ4YjIzZTY4MTFmZDUwNDg1YTExOGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFlNzIyYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODYyZTNjY2Y2MDFlZTBmN2ZiZDhiMjNlNjgxMWZkNTA0ODVhMTE4ZgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiaW4JISE/Tx/b8CEQB/B7KC1iCVxuaSHwCSHlH+kbOz9H7VsoKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2YmFlMDU5YjE4YWY4YWUyNjNlNWFlMDAyMmI2N2RhMGNmYzBmYmUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg2YmFlMDU5YjE4YWY4YWUyNjNlNWFlMDAyMmI2N2RhMGNmYzBmYmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM4ZjJhZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODZiYWUwNTliMThhZjhhZTI2M2U1YWUwMDIyYjY3ZGEwY2ZjMGZiZQpAQCAtMCwwICsxIEBACiuk/wpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODcwZjljYzRiZDg5YzZjMDRjNmE1MWNlYWUxZWZhODYzNDYyN2NkNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODcwZjljYzRiZDg5YzZjMDRjNmE1MWNlYWUxZWZhODYzNDYyN2NkNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDM1Y2M4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84NzBmOWNjNGJkODljNmMwNGM2YTUxY2VhZTFlZmE4NjM0NjI3Y2Q2CkBAIC0wLDAgKzEgQEAKKz8qrkAIOlsHEPAG+GMJKCEhXP478AEhfgkf2+VH/SHQYW06JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODc2MmE1MjNjZGI3OGQyMzQ0ZDU1M2ZhNTJhMjI5YmQ2M2M0NGU1MSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvODc2MmE1MjNjZGI3OGQyMzQ0ZDU1M2ZhNTJhMjI5YmQ2M2M0NGU1MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTJmMTE1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84NzYyYTUyM2NkYjc4ZDIzNDRkNTUzZmE1MmEyMjliZDYzYzQ0ZTUxCkBAIC0wLDAgKzEgQEAKKx+kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84OTQyMTE1NzFmOTE1M2MzYzJlYTQxMDI1NDFkYWM2OWJlOGFhYTljIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84OTQyMTE1NzFmOTE1M2MzYzJlYTQxMDI1NDFkYWM2OWJlOGFhYTljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZDAzZWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg5NDIxMTU3MWY5MTUzYzNjMmVhNDEwMjU0MWRhYzY5YmU4YWFhOWMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84OTRlOWI3ODMyYzUyYWNiMDRiZmE5OTRlZjUzYzcxMDVkOGRiMjA2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84OTRlOWI3ODMyYzUyYWNiMDRiZmE5OTRlZjUzYzcxMDVkOGRiMjA2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOGJmYTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzg5NGU5Yjc4MzJjNTJhY2IwNGJmYTk5NGVmNTNjNzEwNWQ4ZGIyMDYKQEAgLTAsMCArMSBAQAorPyquQAg6WwcQ8Ab4YwkoISFc/jvwASF+CR/b5Uf9IdBhbScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhiMGUxMjk3OGI4ZTJlZWNmNjIzNDZlNDM4ZTQ3ZDA5OTM4NDU2OTMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhiMGUxMjk3OGI4ZTJlZWNmNjIzNDZlNDM4ZTQ3ZDA5OTM4NDU2OTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiNTkyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOGIwZTEyOTc4YjhlMmVlY2Y2MjM0NmU0MzhlNDdkMDk5Mzg0NTY5MwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoID+kLSdiaW4JISE/pDoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhiM2ZhMGJkNGYyODllZmY2YTA0YTUyMDVlMDRiYWFlYWZiZGY2MzcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhiM2ZhMGJkNGYyODllZmY2YTA0YTUyMDVlMDRiYWFlYWZiZGY2MzcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTczZGFhNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOGIzZmEwYmQ0ZjI4OWVmZjZhMDRhNTIwNWUwNGJhYWVhZmJkZjYzNwpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbosoKVtjLSdiaW4JISE/pB/b8CEQB/B7KC1iaW7wCSFcCSHlH+kbOz9H7TpbKCgjIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZDFkZWVkZDFlNDYzZjhjOTUxMjlhNmY4MzljMzgwYTdjODNhYjA0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZDFkZWVkZDFlNDYzZjhjOTUxMjlhNmY4MzljMzgwYTdjODNhYjA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZTQzYmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhkMWRlZWRkMWU0NjNmOGM5NTEyOWE2ZjgzOWMzODBhN2M4M2FiMDQKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LYypbKaQPKC2k2/An8GKDY2luCSEhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZDFlMDI5YmQ3MjM4MWUzODJjODdlNjFiNGM1YTk3NDFkODBkNjQ0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZDFlMDI5YmQ3MjM4MWUzODJjODdlNjFiNGM1YTk3NDFkODBkNjQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YTFmM2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhkMWUwMjliZDcyMzgxZTM4MmM4N2U2MWI0YzVhOTc0MWQ4MGQ2NDQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZGQxOTgzODg5YjY2MzIyMjhkNDg5N2MzNjVhMWU2MTI0ZDEwMWUxIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZGQxOTgzODg5YjY2MzIyMjhkNDg5N2MzNjVhMWU2MTI0ZDEwMWUxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTgyMjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhkZDE5ODM4ODliNjYzMjIyOGQ0ODk3YzM2NWExZTYxMjRkMTAxZTEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZGZjMjE4MzY5MTM4NTQzMmY5Mjk1N2NmZjBiMjUzOGU1YTBlYmZhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZGZjMjE4MzY5MTM4NTQzMmY5Mjk1N2NmZjBiMjUzOGU1YTBlYmZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NTUyYzMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhkZmMyMTgzNjkxMzg1NDMyZjkyOTU3Y2ZmMGIyNTM4ZTVhMGViZmEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZWI5Yjg2YjRmMGFhNzliOGVmODRiNDRlMWZiMDMwOTRlN2JiNDI2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZWI5Yjg2YjRmMGFhNzliOGVmODRiNDRlMWZiMDMwOTRlN2JiNDI2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjODc1NzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhlYjliODZiNGYwYWE3OWI4ZWY4NGI0NGUxZmIwMzA5NGU3YmI0MjYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZWM1NDBjMzZkYTM4MTRlOTNkYTc2NWJmMmZmMDgyNWI1OWMxYmQwIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZWM1NDBjMzZkYTM4MTRlOTNkYTc2NWJmMmZmMDgyNWI1OWMxYmQwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyOGUxMmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhlYzU0MGMzNmRhMzgxNGU5M2RhNzY1YmYyZmYwODI1YjU5YzFiZDAKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW5jWykoLSdiaW4JISE/pB/b8CEQB/B7KC1iaW7wCSFcCSHln+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZjFiZWMzMmY0YjhlNjQwNjJmNTQwNWEwOTY1NDNlNjFkNzcxMDc2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZjFiZWMzMmY0YjhlNjQwNjJmNTQwNWEwOTY1NDNlNjFkNzcxMDc2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZTlmYzQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhmMWJlYzMyZjRiOGU2NDA2MmY1NDA1YTA5NjU0M2U2MWQ3NzEwNzYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZjNlNDhjNDlkMDc5NDkwOWY2ZThlNjFlNWE0MzEyZWRmNDg0YzMzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZjNlNDhjNDlkMDc5NDkwOWY2ZThlNjFlNWE0MzEyZWRmNDg0YzMzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzhiNTUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhmM2U0OGM0OWQwNzk0OTA5ZjZlOGU2MWU1YTQzMTJlZGY0ODRjMzMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZmJiZjNjMGVhYTI1YjY0ZDBhOTdhOGVlMDgwMDY1MzllNjQ5MTk5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy84ZmJiZjNjMGVhYTI1YjY0ZDBhOTdhOGVlMDgwMDY1MzllNjQ5MTk5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmVlNjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzhmYmJmM2MwZWFhMjViNjRkMGE5N2E4ZWUwODAwNjUzOWU2NDkxOTkKQEAgLTAsMCArMSBAQAorpGMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkwN2QwMDIxZDQyZDBmZGM4NjdmZDAyZDM2MDljZGNlMTNjOGEwNTUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkwN2QwMDIxZDQyZDBmZGM4NjdmZDAyZDM2MDljZGNlMTNjOGEwNTUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJmZjBmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTA3ZDAwMjFkNDJkMGZkYzg2N2ZkMDJkMzYwOWNkY2UxM2M4YTA1NQpAQCAtMCwwICsxIEBACiuuB/BbKICkLWJkaW4hClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MTk1MTFjMjE3YTM0MjdjMjJjYWQ0YTcxYWFlMzFhNmNkNDdiMTkzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MTk1MTFjMjE3YTM0MjdjMjJjYWQ0YTcxYWFlMzFhNmNkNDdiMTkzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYWVmMzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkxOTUxMWMyMTdhMzQyN2MyMmNhZDRhNzFhYWUzMWE2Y2Q0N2IxOTMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MjY3YzgxYzMyODNkYTgxOTNjMTk4ZGUwNWUwNWZhMzA2MzFhNDUzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MjY3YzgxYzMyODNkYTgxOTNjMTk4ZGUwNWUwNWZhMzA2MzFhNDUzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OTUxZmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkyNjdjODFjMzI4M2RhODE5M2MxOThkZTA1ZTA1ZmEzMDYzMWE0NTMKQEAgLTAsMCArMSBAQAorPyqgpK5ACBAHOvBbBvhjCSghIVz+O/AJIX4JH9vlR/0h0GNtOicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkyZTgwOTk3YTQyMzdkNzZmMTBiNzBkYWUyODcwYjcyNTVjOTc0MzUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkyZTgwOTk3YTQyMzdkNzZmMTBiNzBkYWUyODcwYjcyNTVjOTc0MzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUxNzZlMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTJlODA5OTdhNDIzN2Q3NmYxMGI3MGRhZTI4NzBiNzI1NWM5NzQzNQpAQCAtMCwwICsxIEBACis/KqCkrkAIEAc68FsobmMJKDv+ITtc8AkhYwkf2+VH/SHwY206JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTM1MzIyZGI3NmY1ZDRjNzRjMmRjNjhmYzQ2MzE5MTViOGUyNDMyMyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTM1MzIyZGI3NmY1ZDRjNzRjMmRjNjhmYzQ2MzE5MTViOGUyNDMyMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmY1OGNmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MzUzMjJkYjc2ZjVkNGM3NGMyZGM2OGZjNDYzMTkxNWI4ZTI0MzIzCkBAIC0wLDAgKzEgQEAKK6QPpNvwpDGDClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MzlmMjYyN2VmNjI2M2QwMTc2NTY2ZGUyNjdmZjNlYjkxMGU2YTYwIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85MzlmMjYyN2VmNjI2M2QwMTc2NTY2ZGUyNjdmZjNlYjkxMGU2YTYwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZmRmNDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzkzOWYyNjI3ZWY2MjYzZDAxNzY1NjZkZTI2N2ZmM2ViOTEwZTZhNjAKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LKVsnKD1jYmluCWEhP6Qf2/AhEAfweygtYmlupPAfpNsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk0YWRlYTZhMGQ5YTQ0YmVlNmY1ZTg4YWRjZWU1N2JlOWU5ZTM1OTcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk0YWRlYTZhMGQ5YTQ0YmVlNmY1ZTg4YWRjZWU1N2JlOWU5ZTM1OTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlMjlhNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTRhZGVhNmEwZDlhNDRiZWU2ZjVlODhhZGNlZTU3YmU5ZTllMzU5NwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk0ZGNiZTBkMzM1MmJkOWIyMzAwOTZiOGRjZTljNmQ4ZDYzZjlkNTEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk0ZGNiZTBkMzM1MmJkOWIyMzAwOTZiOGRjZTljNmQ4ZDYzZjlkNTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ5YzBkYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTRkY2JlMGQzMzUyYmQ5YjIzMDA5NmI4ZGNlOWM2ZDhkNjNmOWQ1MQpAQCAtMCwwICsxIEBACisoPzikpKQfH9sh19vwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NWRhZDczOGY2MGUzZTVlYjBmMWNkYWZkOTFhZDQ2MWY0NDE4ZThmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NWRhZDczOGY2MGUzZTVlYjBmMWNkYWZkOTFhZDQ2MWY0NDE4ZThmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NDAyZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk1ZGFkNzM4ZjYwZTNlNWViMGYxY2RhZmQ5MWFkNDYxZjQ0MThlOGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NjBjMGEyMWM5ZTVjMWE2MWI5M2IzNGRhMzE4OWIwZGUxYzI2NGRmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NjBjMGEyMWM5ZTVjMWE2MWI5M2IzNGRhMzE4OWIwZGUxYzI2NGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNjVlMmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk2MGMwYTIxYzllNWMxYTYxYjkzYjM0ZGEzMTg5YjBkZTFjMjY0ZGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NjkwMzUxMmIxZjFkZWMwODIwNjEyM2YwMjRiNjJkMGUzMWNkNGRjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NjkwMzUxMmIxZjFkZWMwODIwNjEyM2YwMjRiNjJkMGUzMWNkNGRjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YzcxYmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk2OTAzNTEyYjFmMWRlYzA4MjA2MTIzZjAyNGI2MmQwZTMxY2Q0ZGMKQEAgLTAsMCArMSBAQAorEGMH8FsoIQnwWyghXAkh5Uf9IVsoISEJIeVH/UEpKCEp7SG4KinlR/1BKSjZOymKClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NmE4OWMwMDVlOGQ5OTkyZTM0Y2MxNDliMGJlMDk2YWQwMDUxNDQ2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85NmE4OWMwMDVlOGQ5OTkyZTM0Y2MxNDliMGJlMDk2YWQwMDUxNDQ2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYzJkNzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk2YTg5YzAwNWU4ZDk5OTJlMzRjYzE0OWIwYmUwOTZhZDAwNTE0NDYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85N2RiOGE2NmRkNTEzZWVhNDdhNWEyNTExNTUwOGY0ZTU5OTg0ODU0IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85N2RiOGE2NmRkNTEzZWVhNDdhNWEyNTExNTUwOGY0ZTU5OTg0ODU0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MWY1NTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk3ZGI4YTY2ZGQ1MTNlZWE0N2E1YTI1MTE1NTA4ZjRlNTk5ODQ4NTQKQEAgLTAsMCArMSBAQAorpCgeKqCkrkAIEDrwB1soP6QHOzooJ6TwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OGYyY2I4NGFkODk1NTBjZjU2ZWU1NGUxMWYxNDQ4YWU3Mjg3MjQ3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OGYyY2I4NGFkODk1NTBjZjU2ZWU1NGUxMWYxNDQ4YWU3Mjg3MjQ3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MjgxNmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk4ZjJjYjg0YWQ4OTU1MGNmNTZlZTU0ZTExZjE0NDhhZTcyODcyNDcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OTM0OTc0MjJhNTliN2Y5ZjBmNmRiOGM4NjczMzliNWM5ZTRjOTc4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OTM0OTc0MjJhNTliN2Y5ZjBmNmRiOGM4NjczMzliNWM5ZTRjOTc4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMDI4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk5MzQ5NzQyMmE1OWI3ZjlmMGY2ZGI4Yzg2NzMzOWI1YzllNGM5NzgKQEAgLTAsMCArMSBAQAorpKQQB6TwDy1iaW6LY1spzhBACK4/KqSgBzoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk5OTgyMWUzNzUwYTdmMmM5ZGI2NjNkMmQxMDBiNDQwNGMyMjUwNDAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzk5OTgyMWUzNzUwYTdmMmM5ZGI2NjNkMmQxMDBiNDQwNGMyMjUwNDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFmYzc2NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTk5ODIxZTM3NTBhN2YyYzlkYjY2M2QyZDEwMGI0NDA0YzIyNTA0MApAQCAtMCwwICsxIEBACisTWyghIQkhW/Ah5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTliMmVkODNiZTQwY2FiNDMxZDE5NDBlOGRlMmRjM2ViZmU5MzUyZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTliMmVkODNiZTQwY2FiNDMxZDE5NDBlOGRlMmRjM2ViZmU5MzUyZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjhhMjE1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OWIyZWQ4M2JlNDBjYWI0MzFkMTk0MGU4ZGUyZGMzZWJmZTkzNTJmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTllODg4YjczNzJiMjkyNTZkYmVmZDQ3Njg1NWZmNzM1ODRjYzAwZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOTllODg4YjczNzJiMjkyNTZkYmVmZDQ3Njg1NWZmNzM1ODRjYzAwZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTczYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85OWU4ODhiNzM3MmIyOTI1NmRiZWZkNDc2ODU1ZmY3MzU4NGNjMDBmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWIxODA4N2RlYjNjZmFmYTFiOTY0YWE2NWQ4ZWU5ODBiYzYxNDA0ZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWIxODA4N2RlYjNjZmFmYTFiOTY0YWE2NWQ4ZWU5ODBiYzYxNDA0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzhkMGQyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85YjE4MDg3ZGViM2NmYWZhMWI5NjRhYTY1ZDhlZTk4MGJjNjE0MDRlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWIzYzc0NWVhM2UzMTM5MDlhMjI4YTA3YjQ5YWFlMTEwYjAyYWU0YSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWIzYzc0NWVhM2UzMTM5MDlhMjI4YTA3YjQ5YWFlMTEwYjAyYWU0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzg1NWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85YjNjNzQ1ZWEzZTMxMzkwOWEyMjhhMDdiNDlhYWUxMTBiMDJhZTRhCkBAIC0wLDAgKzEgQEAKK6Rwg9vw8KQfIYNb8GMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzliZTFjZTBiYTc3NzU4OTI4ZmY1ZTljNDUxMzliMTYyNGNiZTljMmQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzliZTFjZTBiYTc3NzU4OTI4ZmY1ZTljNDUxMzliMTYyNGNiZTljMmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwYjc2YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWJlMWNlMGJhNzc3NTg5MjhmZjVlOWM0NTEzOWIxNjI0Y2JlOWMyZApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpboukLVtjJyEppBBiaQcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzljNzAzMTQxZWZkNjllYjhmMzJhNTgxMzNjODAzNWZiNTg1ZTBmNGMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzljNzAzMTQxZWZkNjllYjhmMzJhNTgxMzNjODAzNWZiNTg1ZTBmNGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkNTUxYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWM3MDMxNDFlZmQ2OWViOGYzMmE1ODEzM2M4MDM1ZmI1ODVlMGY0YwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzljN2Y3Nzk4MTY3NzQ5OWYwNDI2YTBmZmI1Y2I3OWQ1ZmU1NWRjYjIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzljN2Y3Nzk4MTY3NzQ5OWYwNDI2YTBmZmI1Y2I3OWQ1ZmU1NWRjYjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjNjdiNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWM3Zjc3OTgxNjc3NDk5ZjA0MjZhMGZmYjVjYjc5ZDVmZTU1ZGNiMgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWykoLSdiKW4JIyE/pB/b8CEQB/B7KC1iaW7wCSFcCSHlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85Y2E1OWU2Y2FkYWE1YmU5YWYzMGRmZTU2MjBkMWJjZDcwZjQ0MmU1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85Y2E1OWU2Y2FkYWE1YmU5YWYzMGRmZTU2MjBkMWJjZDcwZjQ0MmU1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NTVhNGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzljYTU5ZTZjYWRhYTViZTlhZjMwZGZlNTYyMGQxYmNkNzBmNDQyZTUKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LYypbKaQTWygopC0P2/An8GIhg2NpbgkhIQkhIVvwIeUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzlkMTM5ODM1ZDkxNDc0ZThkODM2MWQ2NTY5OGEzMWI4YjM4YzRmN2IgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzlkMTM5ODM1ZDkxNDc0ZThkODM2MWQ2NTY5OGEzMWI4YjM4YzRmN2IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4MTU1NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWQxMzk4MzVkOTE0NzRlOGQ4MzYxZDY1Njk4YTMxYjhiMzhjNGY3YgpAQCAtMCwwICsxIEBACis/pB/b8CHwpKSQB/AJYyekDy1iaW6LpPJbYychKaQQYmkXClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZTIxNzk1NjRhOTllOTZlMTc5Yzk2ZjI4ODAyYTBhMjc1OWI1ODFjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZTIxNzk1NjRhOTllOTZlMTc5Yzk2ZjI4ODAyYTBhMjc1OWI1ODFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MGY3MjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzllMjE3OTU2NGE5OWU5NmUxNzljOTZmMjg4MDJhMGEyNzU5YjU4MWMKQEAgLTAsMCArMSBAQAorKCqgpK5ACBA68AdbKD+kBztbKCek8CEJHyj4YwkoO/4hIVwJIWNy5Uf9OgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWU1NmJiM2I2OGQyZTI2MTdjYjJkMmYwZjM5NDFmN2ZjODMyZTQ2MiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWU1NmJiM2I2OGQyZTI2MTdjYjJkMmYwZjM5NDFmN2ZjODMyZTQ2MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzQ0MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZTU2YmIzYjY4ZDJlMjYxN2NiMmQyZjBmMzk0MWY3ZmM4MzJlNDYyCkBAIC0wLDAgKzEgQEAKK2Mn8FsoISEJ8FsoISEJIeVH/SFbKCEhCSHlR/1BKSghKe0hvCop5Uf9QSko2SEpigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWYzMThiMmMyZmY5Y2Y0NjE1YmQwNmJhMTNiZGQwODZiNGFkMDhjNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvOWYzMThiMmMyZmY5Y2Y0NjE1YmQwNmJhMTNiZGQwODZiNGFkMDhjNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGE2YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZjMxOGIyYzJmZjljZjQ2MTViZDA2YmExM2JkZDA4NmI0YWQwOGM2CkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgYBzrwWwb4YwkoISFc/jvwASF+CR/b5Uf9IdBpbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZjhkOTBiMTQ4MDk4OWZjNDZlYTJmMWM2NmNmNjg3NjM4OTk0NTg3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy85ZjhkOTBiMTQ4MDk4OWZjNDZlYTJmMWM2NmNmNjg3NjM4OTk0NTg3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNjU1YWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzLzlmOGQ5MGIxNDgwOTg5ZmM0NmVhMmYxYzY2Y2Y2ODc2Mzg5OTQ1ODcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hMDlkYjU3MTVmMGJjMzg3OWEwZTE4ZTRkYjVhNmI1NjQwYjI1NGEzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hMDlkYjU3MTVmMGJjMzg3OWEwZTE4ZTRkYjVhNmI1NjQwYjI1NGEzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmY1ODYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2EwOWRiNTcxNWYwYmMzODc5YTBlMThlNGRiNWE2YjU2NDBiMjU0YTMKQEAgLTAsMCArMSBAQAorOz8wYyEoB/JLCfBbTtRcCSHlRyFbKCEhCSHlR/1BKSghKe0hKuW8R4D9QSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYTBjNTlhMDkwODE4YmNhMjlkNzZjY2Y5ODQzZjdlMmZhZjMzMGRkZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYTBjNTlhMDkwODE4YmNhMjlkNzZjY2Y5ODQzZjdlMmZhZjMzMGRkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmEzMTZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hMGM1OWEwOTA4MThiY2EyOWQ3NmNjZjk4NDNmN2UyZmFmMzMwZGRmCkBAIC0wLDAgKzEgQEAKKyqkEAfwpA8tYmlupA+k2/AKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2ExY2YxMDQ3OGU1ZTAxYTBkOTUxYzc0M2EzZGQ0NWFhNWZjNDA5ZjIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2ExY2YxMDQ3OGU1ZTAxYTBkOTUxYzc0M2EzZGQ0NWFhNWZjNDA5ZjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVjY2U1NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYTFjZjEwNDc4ZTVlMDFhMGQ5NTFjNzQzYTNkZDQ1YWE1ZmM0MDlmMgpAQCAtMCwwICsxIEBACiukHyGD3/DwpB8hg9ukH+QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2EyMmMwZjAzZjhjMDA1YTQ2MTJhOWRjYmNkNmE2NDMzMzRjMzVkMmYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2EyMmMwZjAzZjhjMDA1YTQ2MTJhOWRjYmNkNmE2NDMzMzRjMzVkMmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEyOGFhMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYTIyYzBmMDNmOGMwMDVhNDYxMmE5ZGNiY2Q2YTY0MzMzNGMzNWQyZgpAQCAtMCwwICsxIEBACis7PzBjISgH8EsJ8FtO1FwJIeVHIVsoISEJIeVH/UEpKCEp7SEq5bxHgP1BKSjZOymKClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hMzE1NGI4ZWQyNmIzNDYxZjJiMDkxYzczMmRhMDBiNjNjZThiZWQzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hMzE1NGI4ZWQyNmIzNDYxZjJiMDkxYzczMmRhMDBiNjNjZThiZWQzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYTRlNDQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2EzMTU0YjhlZDI2YjM0NjFmMmIwOTFjNzMyZGEwMGI2M2NlOGJlZDMKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LpC1bYyf5KaQQYmkHClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hODRhMWVkMWEyNGU3NTNhMjdhZGZkM2JhODA2ZjA2ZmM0NGY4OTlmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hODRhMWVkMWEyNGU3NTNhMjdhZGZkM2JhODA2ZjA2ZmM0NGY4OTlmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWE1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2E4NGExZWQxYTI0ZTc1M2EyN2FkZmQzYmE4MDZmMDZmYzQ0Zjg5OWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hODcxZTdjZTY2YWZkNGY1NzcwMmNkMTI5OWRlMDZjZDA4OTk1NTYxIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hODcxZTdjZTY2YWZkNGY1NzcwMmNkMTI5OWRlMDZjZDA4OTk1NTYxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Mjk1YWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2E4NzFlN2NlNjZhZmQ0ZjU3NzAyY2QxMjk5ZGUwNmNkMDg5OTU1NjEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hOGRjNzM2ZWE5NjQ1ODZiN2RjYmYyYmMwNjVlYzQ2NzVkMWRhYmEzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hOGRjNzM2ZWE5NjQ1ODZiN2RjYmYyYmMwNjVlYzQ2NzVkMWRhYmEzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOWFmNDAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2E4ZGM3MzZlYTk2NDU4NmI3ZGNiZjJiYzA2NWVjNDY3NWQxZGFiYTMKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1sppCgtDn8nYmluCSEhP6Qf2/AhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hOTFhODM1ODM2YzcyMjE3ODI0ZjBiNjM0OTFkOWI2MjMxMzA1MDJhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hOTFhODM1ODM2YzcyMjE3ODI0ZjBiNjM0OTFkOWI2MjMxMzA1MDJhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MWRkMjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2E5MWE4MzU4MzZjNzIyMTc4MjRmMGI2MzQ5MWQ5YjYyMzEzMDUwMmEKQEAgLTAsMCArMSBAQAorPyqgpK5ACBAHOvBbKPhjCSg7/iEhXPAJIWMJH9vlR/0h8GNtOicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FiOTdjMWY2MDMzZGM3ZDk2ZjY5YjllMTQ2MWZkNTk0YzE2ZjRlYmYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FiOTdjMWY2MDMzZGM3ZDk2ZjY5YjllMTQ2MWZkNTk0YzE2ZjRlYmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM1OWNiNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWI5N2MxZjYwMzNkYzdkOTZmNjliOWUxNDYxZmQ1OTRjMTZmNGViZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FjOGE4YzIzYWNkOGMyOTBhMTFkYzc4MjhmN2YzOTc5NTdmYTY0MDAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FjOGE4YzIzYWNkOGMyOTBhMTFkYzc4MjhmN2YzOTc5NTdmYTY0MDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk5ODVmYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWM4YThjMjNhY2Q4YzI5MGExMWRjNzgyOGY3ZjM5Nzk1N2ZhNjQwMApAQCAtMCwwICsxIEBACis/KqCmrkAIEAc68FsG+GMJKCEhXP478AEhfgkfR/0h0GltOicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FjOTRiMjc4OGY1MjUyZjllMmU4NTAyYzdjNzVlMDRiZWY0YzBiNzYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FjOTRiMjc4OGY1MjUyZjllMmU4NTAyYzdjNzVlMDRiZWY0YzBiNzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFjYzU3YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWM5NGIyNzg4ZjUyNTJmOWUyZTg1MDJjN2M3NWUwNGJlZjRjMGI3NgpAQCAtMCwwICsxIEBACiukPwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWQwM2I0ZjU4NDcwYzQzZGI2NTkzYTM1YmU0ODk4OTQ4NmQ3NTRmOSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWQwM2I0ZjU4NDcwYzQzZGI2NTkzYTM1YmU0ODk4OTQ4NmQ3NTRmOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjkxMDAxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hZDAzYjRmNTg0NzBjNDNkYjY1OTNhMzViZTQ4OTg5NDg2ZDc1NGY5CkBAIC0wLDAgKzEgQEAKK6Rwg9vw8KQfIYPb8PBjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hZjQxN2M4M2U4MzFhOTZmZGExYmRkZTk5YTFhZjY1MDllZjJkZjNkIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hZjQxN2M4M2U4MzFhOTZmZGExYmRkZTk5YTFhZjY1MDllZjJkZjNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMTcxNjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2FmNDE3YzgzZTgzMWE5NmZkYTFiZGRlOTlhMWFmNjUwOWVmMmRmM2QKQEAgLTAsMCArMSBAQAorKD+kH6SkH9vb8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWZmZDI5MmNkMmNlMzMwNmI0NjUxY2M3ZWMwZWMwNTI0Y2JiYWUzZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYWZmZDI5MmNkMmNlMzMwNmI0NjUxY2M3ZWMwZWMwNTI0Y2JiYWUzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWExYjZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9hZmZkMjkyY2QyY2UzMzA2YjQ2NTFjYzdlYzBlYzA1MjRjYmJhZTNkCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA+jYmlui+RjW/IpJy1iaS4JKikhP6Qf2+IQB/B7KC1iaVxuIQkhCfDlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMDU4N2U2ZTMxOWY0YjU2ZDg3N2U3ZWQ0NmJjN2RhOWIxZTcyNDljIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMDU4N2U2ZTMxOWY0YjU2ZDg3N2U3ZWQ0NmJjN2RhOWIxZTcyNDljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNjEwNzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2IwNTg3ZTZlMzE5ZjRiNTZkODc3ZTdlZDQ2YmM3ZGE5YjFlNzI0OWMKQEAgLTAsMCArMSBAQAorpCkHOjshnMon0tgpKjt9dik3Sc8hpCk7HpYtTSqx5OIhJ2QqQ3UYDquRWCQwDik68yo7OuTdOzsoKTs6Xe/mQApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjE2NmFhNjZiNWIzYWQxNzhiYzM4YWVlNTc2ODIyNmM4YWRjMDgyZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjE2NmFhNjZiNWIzYWQxNzhiYzM4YWVlNTc2ODIyNmM4YWRjMDgyZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTFlNjUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMTY2YWE2NmI1YjNhZDE3OGJjMzhhZWU1NzY4MjI2YzhhZGMwODJmCkBAIC0wLDAgKzEgQEAKK6Rwg9vwpB8hg9vwYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjFhZGUwNTcxMjYyYzZlNWYxZDcyZjZkMjVlYmI1MTNkMjA1NWJjOSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjFhZGUwNTcxMjYyYzZlNWYxZDcyZjZkMjVlYmI1MTNkMjA1NWJjOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzA3M2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMWFkZTA1NzEyNjJjNmU1ZjFkNzJmNmQyNWViYjUxM2QyMDU1YmM5CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKSgnLWJpLgkqISE/pB/b4iEQB/B7KC1iaVxuIQkhCfDlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMjQ0YzY5MDE1N2ZmMjFkMDczOTQwZWY4Yzc3ZDE4OThmMzdjZjhlIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iMjQ0YzY5MDE1N2ZmMjFkMDczOTQwZWY4Yzc3ZDE4OThmMzdjZjhlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MzY3MGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2IyNDRjNjkwMTU3ZmYyMWQwNzM5NDBlZjhjNzdkMTg5OGYzN2NmOGUKQEAgLTAsMCArMSBAQAorpB+k2/DwCWNjJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjUyMzA5MWVlNGYxN2QyMGY1MWY5YjVjZjgyMjkzNDY1Y2Y2MTc4MCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjUyMzA5MWVlNGYxN2QyMGY1MWY5YjVjZjgyMjkzNDY1Y2Y2MTc4MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDY2ZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iNTIzMDkxZWU0ZjE3ZDIwZjUxZjliNWNmODIyOTM0NjVjZjYxNzgwCkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQ8DoHWwb4YwkoO/4hIVzwCSN+CR/b5XL9IfBjbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iN2Q0ZDQ5YWMyYzUzMGViODQ0NGE0NDlmZWI2ODllZTUwZmQyMTBkIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iN2Q0ZDQ5YWMyYzUzMGViODQ0NGE0NDlmZWI2ODllZTUwZmQyMTBkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyY2JjY2MKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2I3ZDRkNDlhYzJjNTMwZWI4NDQ0YTQ0OWZlYjY4OWVlNTBmZDIxMGQKQEAgLTAsMCArMSBAQAorOz8nYwfwWyghCfBbTiFcCSPlR/0hKighIQkh5Uf9QSkoISntIbwqKeVH/UkpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2I4NTVjMTYxMTIxYmZhMjljNmZiMjJkM2MwMjM2ZmFlNGFmNjk4NGUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2I4NTVjMTYxMTIxYmZhMjljNmZiMjJkM2MwMjM2ZmFlNGFmNjk4NGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0ODU2YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYjg1NWMxNjExMjFiZmEyOWM2ZmIyMmQzYzAyMzZmYWU0YWY2OTg0ZQpAQCAtMCwwICsxIEBACis7PzBjISgH8EsJ8FtOIVwZO+VHIVsoISEJIeVH/UEpKCEp7SEq5UeAvkEpKNk7igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmNhYTcxYWJmMjNiMmU1MTMwZTBjYzQ2NDc1NWZlNzY5YmY0YWFhNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmNhYTcxYWJmMjNiMmU1MTMwZTBjYzQ2NDc1NWZlNzY5YmY0YWFhNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWQ4N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iY2FhNzFhYmYyM2IyZTUxMzBlMGNjNDY0NzU1ZmU3NjliZjRhYWE3CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui4ljWymkKC0OfydiaW4JISE/pB/b8CEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JjZjQ2ODRjZTA5N2ZhYTdlOWQ5OWI2ZTkzY2MyZGUyNGY1N2FlZTMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JjZjQ2ODRjZTA5N2ZhYTdlOWQ5OWI2ZTkzY2MyZGUyNGY1N2FlZTMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3ZmI2ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmNmNDY4NGNlMDk3ZmFhN2U5ZDk5YjZlOTNjYzJkZTI0ZjU3YWVlMwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JkY2E2NTA0ZDJlZTc5MjVmNjJlMTc2MzU1YmI0ODEzNDQ3NzIwNzUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JkY2E2NTA0ZDJlZTc5MjVmNjJlMTc2MzU1YmI0ODEzNDQ3NzIwNzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU0YmUzMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmRjYTY1MDRkMmVlNzkyNWY2MmUxNzYzNTViYjQ4MTM0NDc3MjA3NQpAQCAtMCwwICsxIEBACis7PydjB/BbKCEJ8FtOIVwJIeVH/SEqKCEhCSHlR/1BKSghKe0hvCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmViMjA4ZmQ4Njc1YmE3ZGUyZWNiMTI5OThkMmQ2MjhkNTc5Y2E3YyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYmViMjA4ZmQ4Njc1YmE3ZGUyZWNiMTI5OThkMmQ2MjhkNTc5Y2E3YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDRlNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZWIyMDhmZDg2NzViYTdkZTJlY2IxMjk5OGQyZDYyOGQ1NzljYTdjCkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQBzrwWwb4Ywk4O/4hIVzwCSF+CR/bREf9IfBjbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjBjOTg2ODlhYjgxZmMzMjc4NzAyMzMwMGNhZjlhNDE3NTU4M2RjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjBjOTg2ODlhYjgxZmMzMjc4NzAyMzMwMGNhZjlhNDE3NTU4M2RjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMGNiZmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JmMGM5ODY4OWFiODFmYzMyNzg3MDIzMzAwY2FmOWE0MTc1NTgzZGMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjQ3OWU5N2IzOWI2OTdlNzE1NjYzZGU2YTFlNzhkZDU4ZDY0MTIyIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjQ3OWU5N2IzOWI2OTdlNzE1NjYzZGU2YTFlNzhkZDU4ZDY0MTIyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNmI3YmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JmNDc5ZTk3YjM5YjY5N2U3MTU2NjNkZTZhMWU3OGRkNThkNjQxMjIKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LYypbKaQopC0P2/An8GKDY2luCSEhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjgyNmM5NmJlOTRkMWI0MmVlYTA2NjZmNzIzOWNjNWY2OTlhMzc1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9iZjgyNmM5NmJlOTRkMWI0MmVlYTA2NjZmNzIzOWNjNWY2OTlhMzc1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNjc5YjkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2JmODI2Yzk2YmU5NGQxYjQyZWVhMDY2NmY3MjM5Y2M1ZjY5OWEzNzUKQEAgLTAsMCArMSBAQAorEAfwWygtYmlupKQQB/CkDy1iaW6LY1spKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8CEJ8CgJISEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2MxNzY1MGQxOWFlNGE0OGFiYjM2NzM5YzgzZDg5Nzk0NTNmNTcwNWYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2MxNzY1MGQxOWFlNGE0OGFiYjM2NzM5YzgzZDg5Nzk0NTNmNTcwNWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgyZDdkYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzE3NjUwZDE5YWU0YTQ4YWJiMzY3MzljODNkODk3OTQ1M2Y1NzA1ZgpAQCAtMCwwICsxIEBACis7PzBjISgH8EsJ8FtOIVwJIeVHIVsoISEJIeVH/UEpKCEp7SEq5bxHgP1BKSjZOymKClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jMWU1MzA3ZDg4ZmVkYTJjM2IxNWZjMjIxY2JhOTJiY2Y0MTYyMmJmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jMWU1MzA3ZDg4ZmVkYTJjM2IxNWZjMjIxY2JhOTJiY2Y0MTYyMmJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NTMyNDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2MxZTUzMDdkODhmZWRhMmMzYjE1ZmMyMjFjYmE5MmJjZjQxNjIyYmYKQEAgLTAsMCArMSBAQAorKD8qpBAH8KQPLWJpboOkBztbKCek8CFjCQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzI0OWY0MDhjNTUyYTA0MDhlYWIzZmUxZDFjYmVjYTk1Y2Q1MzdjMSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzI0OWY0MDhjNTUyYTA0MDhlYWIzZmUxZDFjYmVjYTk1Y2Q1MzdjMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmY1MThiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jMjQ5ZjQwOGM1NTJhMDQwOGVhYjNmZTFkMWNiZWNhOTVjZDUzN2MxCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKSgtYqSkEAfwpA8tYmlui2NbKSgnLWJpLgkqISE/pB/b4gpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzI2YjQ2MGFlYmM5MDgyYzUxOTUzOTA2OWY3ZTA2MDA0Mjk4OTY5NiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzI2YjQ2MGFlYmM5MDgyYzUxOTUzOTA2OWY3ZTA2MDA0Mjk4OTY5NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzljYTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jMjZiNDYwYWViYzkwODJjNTE5NTM5MDY5ZjdlMDYwMDQyOTg5Njk2CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2NbKSgtJ2JuaQkhJT+kH9vwIRAH8HsoLWJpbvAJIVwh5R/pGzs/R1soKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2MyZWFlNzFkYWFkMGQzNTYxYWI0ZDA5YjhiODUzNzJiOGQ3OTBiYzEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2MyZWFlNzFkYWFkMGQzNTYxYWI0ZDA5YjhiODUzNzJiOGQ3OTBiYzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIwYjc0YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzJlYWU3MWRhYWQwZDM1NjFhYjRkMDliOGI4NTM3MmI4ZDc5MGJjMQpAQCAtMCwwICsxIEBACis7PzBjIScH8EsJ8FtOIVwZIeVHIVsoISEJIeVH/UEpKCEp7SEq5UeAvkEpKNk7igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzM3ZmRhOGQwMmU5OTEzMmExZGU5OWY5NTk1OTZjNzg0YWI4YTUzYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzM3ZmRhOGQwMmU5OTEzMmExZGU5OWY5NTk1OTZjNzg0YWI4YTUzYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWQ2OGViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jMzdmZGE4ZDAyZTk5MTMyYTFkZTk5Zjk1OTU5NmM3ODRhYjhhNTNjCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzQ4MzY3NjAzNzdhNzA5MWZiMjBmNGFmYTljNzEyODc1NzkyYjlhNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzQ4MzY3NjAzNzdhNzA5MWZiMjBmNGFmYTljNzEyODc1NzkyYjlhNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNkNjNhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNDgzNjc2MDM3N2E3MDkxZmIyMGY0YWZhOWM3MTI4NzU3OTJiOWE3CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzQ4Y2FhZDU5NzE3NjQwNGY3NzZkNTMyZDRiYWY5ZmFmNzY1NWVlMiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzQ4Y2FhZDU5NzE3NjQwNGY3NzZkNTMyZDRiYWY5ZmFmNzY1NWVlMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzc5MTJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNDhjYWFkNTk3MTc2NDA0Zjc3NmQ1MzJkNGJhZjlmYWY3NjU1ZWUyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzRlZmYwZjU5OTg2ZmM1YWIwOWQ1YmQ5NWYzOTQyOTJmMjg4MjY1OSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzRlZmYwZjU5OTg2ZmM1YWIwOWQ1YmQ5NWYzOTQyOTJmMjg4MjY1OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjcwNGY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNGVmZjBmNTk5ODZmYzVhYjA5ZDViZDk1ZjM5NDI5MmYyODgyNjU5CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluKWNbKS0nYmluCTGkpBAhP6Qf2/AhBwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzVmYzIwODZkMTY3YzhjM2E3ZDllYzc3OGRiNjljNWZhMTRhNTlmZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzVmYzIwODZkMTY3YzhjM2E3ZDllYzc3OGRiNjljNWZhMTRhNTlmZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTI4MzMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNWZjMjA4NmQxNjdjOGMzYTdkOWVjNzc4ZGI2OWM1ZmExNGE1OWZlCkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgYBzrwXwb4YwkoISFc/jvwASF+CSEf2+VH/SHQO206JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzYwMDg3N2NlNTQ3MTY2ZWIxYjlkODNhZmJlMTI4ZDk4NzY3ZjhhMyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzYwMDg3N2NlNTQ3MTY2ZWIxYjlkODNhZmJlMTI4ZDk4NzY3ZjhhMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTI2MjE2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNjAwODc3Y2U1NDcxNjZlYjFiOWQ4M2FmYmUxMjhkOTg3NjdmOGEzCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlug2MpLWJpCShuJyEhP6Qf2yHwEAfweygtYmlu8AkhXAkh5R/pGzs/R+06WygoISFc8ApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzZhOThmZGFmNmRlNzhlNTllMWExNDlhNDNmM2U0MjIyMmQ2NTBiNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzZhOThmZGFmNmRlNzhlNTllMWExNDlhNDNmM2U0MjIyMmQ2NTBiNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmNhZDMzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jNmE5OGZkYWY2ZGU3OGU1OWUxYTE0OWE0M2YzZTQyMjIyZDY1MGI3CkBAIC0wLDAgKzEgQEAKKz8qoKyuQAgQ8DoHWwb4YwkoO/4hXCHwCSF+CR/bLWJpbuVH/SHwY206JwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzhkMjJmN2ZiNGYzN2YyZDhjYzc5NTNmYTJkNTk5ZDM4ZDg5OWFlYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzhkMjJmN2ZiNGYzN2YyZDhjYzc5NTNmYTJkNTk5ZDM4ZDg5OWFlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDRhYjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jOGQyMmY3ZmI0ZjM3ZjJkOGNjNzk1M2ZhMmQ1OTlkMzhkODk5YWVjCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzkwOTUxYzE5YjI0YmFjODQyOTZlM2VjMzJjZGVhZmU5OWU5OWNmYiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvYzkwOTUxYzE5YjI0YmFjODQyOTZlM2VjMzJjZGVhZmU5OWU5OWNmYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDNjMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jOTA5NTFjMTliMjRiYWM4NDI5NmUzZWMzMmNkZWFmZTk5ZTk5Y2ZiCkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQBzrwWwb4YwkoISFc/jvwASF+CR/b5Uf9IdBhbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jOTVmZjJhMTcyNjI2ZWZiNTBlOTRhYTY3ODFmZWJhNjA5ODIwMDc2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jOTVmZjJhMTcyNjI2ZWZiNTBlOTRhYTY3ODFmZWJhNjA5ODIwMDc2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMTA0YzcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2M5NWZmMmExNzI2MjZlZmI1MGU5NGFhNjc4MWZlYmE2MDk4MjAwNzYKQEAgLTAsMCArMSBAQAorEAfwWygtYmluIQnwKCFcCSHlR/2kHyE6WyghJ/BbKCEhCfAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NhNmM1NTdhZmI5YzU3MWRlNjJlOWI2NWNhNjQ2OWE2MTMzNzYwZGEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NhNmM1NTdhZmI5YzU3MWRlNjJlOWI2NWNhNjQ2OWE2MTMzNzYwZGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5NWJlNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2E2YzU1N2FmYjljNTcxZGU2MmU5YjY1Y2E2NDY5YTYxMzM3NjBkYQpAQCAtMCwwICsxIEBACis/IWPwCR/ffScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NiMmQwZmIyM2Y2NmM5NjhhZjJlODBkNTlmNzFkNGMxYWVkOTZmYmQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NiMmQwZmIyM2Y2NmM5NjhhZjJlODBkNTlmNzFkNGMxYWVkOTZmYmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNiYjMzNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2IyZDBmYjIzZjY2Yzk2OGFmMmU4MGQ1OWY3MWQ0YzFhZWQ5NmZiZApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWymkDygtpNvwJ/Big2NpbgkhIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2M2MGE2NDJjYzIwMzdhZDNjNDU5YTU3MzgxYjhmNjVkOGQ3YWEzNSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2M2MGE2NDJjYzIwMzdhZDNjNDU5YTU3MzgxYjhmNjVkOGQ3YWEzNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQzODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jYzYwYTY0MmNjMjAzN2FkM2M0NTlhNTczODFiOGY2NWQ4ZDdhYTM1CkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQBzrwWwb44wk0O/4hIVzwCSF+CR/bREf98GNtOicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NjZDNiOGFhMjZjNTJmNmQ5YzYwN2MyNmViZGY2MjExNDJhZmY3NDUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NjZDNiOGFhMjZjNTJmNmQ5YzYwN2MyNmViZGY2MjExNDJhZmY3NDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5NzJhNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2NkM2I4YWEyNmM1MmY2ZDljNjA3YzI2ZWJkZjYyMTE0MmFmZjc0NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NjZGZkMTM1NDk5N2ViMTE3YmQ3NmI3NTQ0MGE3ZTRmZjIwYmY1NjQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NjZGZkMTM1NDk5N2ViMTE3YmQ3NmI3NTQ0MGE3ZTRmZjIwYmY1NjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4YTllNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2NkZmQxMzU0OTk3ZWIxMTdiZDc2Yjc1NDQwYTdlNGZmMjBiZjU2NApAQCAtMCwwICsxIEBACisrpKQQB/CkDy1iaW4LOWNbKSgtYqSkEAfwpApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2Q3YTdiOGYwOGMxODllOTVhZTNlMmVhNDRiOTAxNTAwMGU4MjNmMyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2Q3YTdiOGYwOGMxODllOTVhZTNlMmVhNDRiOTAxNTAwMGU4MjNmMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzY2NiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jZDdhN2I4ZjA4YzE4OWU5NWFlM2UyZWE0NGI5MDE1MDAwZTgyM2YzCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluiyNaKaQoLaQOYqQJEAfwpA8tYmluP/CLY1spKC1/bmknJ2JpbiEhCSEvpCE/HyfwIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2UwNTY3OGQ4MTJhNWY4YWU4ZTExNTkzODQxMDExNmNlOTE2OTQ1NiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2UwNTY3OGQ4MTJhNWY4YWU4ZTExNTkzODQxMDExNmNlOTE2OTQ1NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2FmMzhhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jZTA1Njc4ZDgxMmE1ZjhhZThlMTE1OTM4NDEwMTE2Y2U5MTY5NDU2CkBAIC0wLDAgKzEgQEAKKzs/MGMhKAfwSwnwW04hXBkh5UchWyghIQkh5Uf9QSkoISntISrlR4C+/UEpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NlNmI2NDJiODEzNzNmMDViYWEyYTZmZTZlOWQ1ZDEzODcwNDYyODUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NlNmI2NDJiODEzNzNmMDViYWEyYTZmZTZlOWQ1ZDEzODcwNDYyODUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMxMTI2NQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2U2YjY0MmI4MTM3M2YwNWJhYTJhNmZlNmU5ZDVkMTM4NzA0NjI4NQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NmODRkMDZlNGRkZGI5OTdhNzlhNDFmOWI2MTIyYmY2MjBiYmRiNGIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2NmODRkMDZlNGRkZGI5OTdhNzlhNDFmOWI2MTIyYmY2MjBiYmRiNGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwYzk0MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2Y4NGQwNmU0ZGRkYjk5N2E3OWE0MWY5YjYxMjJiZjYyMGJiZGI0YgpAQCAtMCwwICsxIEBACis7PydjB/BbKSEJ8FtOIdwJYuU0R/0hKighIQlC5Uf9QSkhKe0hvCop5Uf9SSko2TspigpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2ZiY2MzZThjZDY1YWE4YjY1NDY4ODE0NWFkZTM0Yjg3ODk0NjhhNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvY2ZiY2MzZThjZDY1YWE4YjY1NDY4ODE0NWFkZTM0Yjg3ODk0NjhhNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDdmZjNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9jZmJjYzNlOGNkNjVhYThiNjU0Njg4MTQ1YWRlMzRiODc4OTQ2OGE2CkBAIC0wLDAgKzEgQEAKKyc/MGMhKAfwSwnwW04hXBkh5UchWyghIQkh5UcpQf0oISnlISrlR4BBviko2Ts7igpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDAwMDUwMmYzMmNhNTYyMGQ3NzQ1ZjM5ZmY2YmUzYjU0N2UyNmE2ZCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDAwMDUwMmYzMmNhNTYyMGQ3NzQ1ZjM5ZmY2YmUzYjU0N2UyNmE2ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDIyZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kMDAwNTAyZjMyY2E1NjIwZDc3NDVmMzlmZjZiZTNiNTQ3ZTI2YTZkCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDEzMWY4M2VlNzM0NTBmZjQ1NTY1ZDBjNjM4YmU3ZDhiZWViMzBkOSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDEzMWY4M2VlNzM0NTBmZjQ1NTY1ZDBjNjM4YmU3ZDhiZWViMzBkOQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDQwNGJhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kMTMxZjgzZWU3MzQ1MGZmNDU1NjVkMGM2MzhiZTdkOGJlZWIzMGQ5CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluiymgpFsnKD1jYmluCWEhP+Qf2/AhEPB7KC1iaW6k8B+kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kMjgxN2I4OWQ3YWFhN2ZhODgwYzA3N2IxYTY3MTY4ZWMyZjRmMGY3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kMjgxN2I4OWQ3YWFhN2ZhODgwYzA3N2IxYTY3MTY4ZWMyZjRmMGY3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MmJlNzQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2QyODE3Yjg5ZDdhYWE3ZmE4ODBjMDc3YjFhNjcxNjhlYzJmNGYwZjcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kM2NjZDcwMzlkZDM0YmFlZjQ2NWM0Yjc4YmFhN2EzMDMxMmE4ZjA3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kM2NjZDcwMzlkZDM0YmFlZjQ2NWM0Yjc4YmFhN2EzMDMxMmE4ZjA3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Y2I3ODgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2QzY2NkNzAzOWRkMzRiYWVmNDY1YzRiNzhiYWE3YTMwMzEyYThmMDcKQEAgLTAsMCArMSBAQAorPyqgpK5ACBAHOvBbKPhjCSgz/iEhXPAJIWMJKNvlR/0h8GNtOicKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q0Y2ZhZjNiNTliMjJiNjU0ZDdhZjgwZWU2NzE1Y2U1MDE1YmZkYzAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q0Y2ZhZjNiNTliMjJiNjU0ZDdhZjgwZWU2NzE1Y2U1MDE1YmZkYzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU4YjgwNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDRjZmFmM2I1OWIyMmI2NTRkN2FmODBlZTY3MTVjZTUwMTViZmRjMApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q1NjcwODI3YzhlOGQ0Yzk1YWMwZjczOGMwNzkwYzE5OTE2YzAzMzYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q1NjcwODI3YzhlOGQ0Yzk1YWMwZjczOGMwNzkwYzE5OTE2YzAzMzYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5MDZjNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDU2NzA4MjdjOGU4ZDRjOTVhYzBmNzM4YzA3OTBjMTk5MTZjMDMzNgpAQCAtMCwwICsxIEBACisqpBAH8KQPLWJpbqQPpKS4EAfwD6Qt2ycoP6QH8DtbKApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDU5ZDdlOTQ4NjNmMWVkODljYWNmYmFhYmY3YmM1OTk0NjAzNmM4ZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDU5ZDdlOTQ4NjNmMWVkODljYWNmYmFhYmY3YmM1OTk0NjAzNmM4ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDkyOWViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kNTlkN2U5NDg2M2YxZWQ4OWNhY2ZiYWFiZjdiYzU5OTQ2MDM2YzhmCkBAIC0wLDAgKzEgQEAKKyqkEAfwpA8tYmlugygfgCdb8GkoYm4tIT+gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kNzZkMGM3ZjI0YWUzY2MzZjUzMGQ1MzA2YjhkY2MxNTI5MGM3ZmYyIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kNzZkMGM3ZjI0YWUzY2MzZjUzMGQ1MzA2YjhkY2MxNTI5MGM3ZmYyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2MwZmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q3NmQwYzdmMjRhZTNjYzNmNTMwZDUzMDZiOGRjYzE1MjkwYzdmZjIKQEAgLTAsMCArMSBAQAorpB/klwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDhiMTVlOWU1NTVhZDk5MDBiYTRiZThjYzlmODdiZWY3NTcyNWIyNCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZDhiMTVlOWU1NTVhZDk5MDBiYTRiZThjYzlmODdiZWY3NTcyNWIyNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQwYzgwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kOGIxNWU5ZTU1NWFkOTkwMGJhNGJlOGNjOWY4N2JlZjc1NzI1YjI0CkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQBzrwWwb4YwkoISFc/jvwASF+CR/b5Uf9IdBpbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kOTc0OGFiZDU0MDgxMGMyNDQ5YzNkZDM5YTBlYmI2Mjc1NGU1MjBmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kOTc0OGFiZDU0MDgxMGMyNDQ5YzNkZDM5YTBlYmI2Mjc1NGU1MjBmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NTA4M2YKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Q5NzQ4YWJkNTQwODEwYzI0NDljM2RkMzlhMGViYjYyNzU0ZTUyMGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kYTlmYzgyMWYwYzFlMDA3MjhiMTM5YjM2MjY5YmMzZDIxYzBhOGNjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kYTlmYzgyMWYwYzFlMDA3MjhiMTM5YjM2MjY5YmMzZDIxYzBhOGNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NTJiYWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RhOWZjODIxZjBjMWUwMDcyOGIxMzliMzYyNjliYzNkMjFjMGE4Y2MKQEAgLTAsMCArMSBAQAorpKQQB/CkD3JiaW6LY1spKC0nYmluCSEhP6Qf2/AhEAfweygtYmlu8AkhXAkh5R/pGzs/R1soKCEhXPAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RjZDFiZDk0YWQ5N2I0ZTY3ZmQ3ZTEyZmYxYmY3YzAzOWViMTdmNjYgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RjZDFiZDk0YWQ5N2I0ZTY3ZmQ3ZTEyZmYxYmY3YzAzOWViMTdmNjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5YmY2MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZGNkMWJkOTRhZDk3YjRlNjdmZDdlMTJmZjFiZjdjMDM5ZWIxN2Y2NgpAQCAtMCwwICsxIEBACiukpNspgPDwjmNjJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZGQzYmE5YjEzOWUxMzMyNGZjNzZjZDYyYWY4NGIwMGNhOGI4NzIwNSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZGQzYmE5YjEzOWUxMzMyNGZjNzZjZDYyYWY4NGIwMGNhOGI4NzIwNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ3ZjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZDNiYTliMTM5ZTEzMzI0ZmM3NmNkNjJhZjg0YjAwY2E4Yjg3MjA1CkBAIC0wLDAgKzEgQEAKK6Rwg9vw8KQfIYPLVPAqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZTBhOWRjZTBlYTRlNGJmZGNiMTNmNzg4YWU3MjhiZjk3OWZlZDI1IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZTBhOWRjZTBlYTRlNGJmZGNiMTNmNzg4YWU3MjhiZjk3OWZlZDI1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMmEwMjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RlMGE5ZGNlMGVhNGU0YmZkY2IxM2Y3ODhhZTcyOGJmOTc5ZmVkMjUKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LI1oppCgfLaSkEAcJDmLwpA8tYmluP/CLY1spKC1/bmknJ2JpbiE7CSEvpCE/HyfwIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZGViNmY5YTkzMGQ5YjMxNTg2ZWRlMTlmZDhmZDNjYWFlMGU1YjFmMiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZGViNmY5YTkzMGQ5YjMxNTg2ZWRlMTlmZDhmZDNjYWFlMGU1YjFmMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2ViNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZWI2ZjlhOTMwZDliMzE1ODZlZGUxOWZkOGZkM2NhYWUwZTViMWYyCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluiylbJyg7LWNiaW4JISE/pB/b8CEQB/B7KC1iaW7wCSFcCSHlH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZWU5NWUwMjgwYjcwNjgxZWRkZmI2OGUzYjQxODEyNmM1NjYxZTE4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZWU5NWUwMjgwYjcwNjgxZWRkZmI2OGUzYjQxODEyNmM1NjYxZTE4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxM2QxNzgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RlZTk1ZTAyODBiNzA2ODFlZGRmYjY4ZTNiNDE4MTI2YzU2NjFlMTgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZjAxMjAzZWRmYTJkZmU5ZTEwOGRkZGU3ODZhZTQ4MjM1NjI0ZmVmIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZjAxMjAzZWRmYTJkZmU5ZTEwOGRkZGU3ODZhZTQ4MjM1NjI0ZmVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NTIwZmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RmMDEyMDNlZGZhMmRmZTllMTA4ZGRkZTc4NmFlNDgyMzU2MjRmZWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZjBhZGJlMjUyMzUwOGU5YWZiNDJhNThkOThjMjY1NzcxMGQ2MDMzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9kZjBhZGJlMjUyMzUwOGU5YWZiNDJhNThkOThjMjY1NzcxMGQ2MDMzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYjdhOWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2RmMGFkYmUyNTIzNTA4ZTlhZmI0MmE1OGQ5OGMyNjU3NzEwZDYwMzMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMDVmY2JhMWIyMmY2NThjOGJkNmYzYzMzMGIyYjNjOWZhZWJmOTc3IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMDVmY2JhMWIyMmY2NThjOGJkNmYzYzMzMGIyYjNjOWZhZWJmOTc3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMzExODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UwNWZjYmExYjIyZjY1OGM4YmQ2ZjNjMzMwYjJiM2M5ZmFlYmY5NzcKQEAgLTAsMCArMSBAQAorEAfwWygtYGlupKQQB/CkDy3eaW6LY1spKDonYmluCSEhKT+kH9vwIRAH8HsoOi1iaW7wIQnwKAkhIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTE0NWNhYTc1ZDczZTNkODE5YTljYjRiNjIxN2YxZjUzMTEyZjNmOCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTE0NWNhYTc1ZDczZTNkODE5YTljYjRiNjIxN2YxZjUzMTEyZjNmOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjU3NDc3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMTQ1Y2FhNzVkNzNlM2Q4MTlhOWNiNGI2MjE3ZjFmNTMxMTJmM2Y4CkBAIC0wLDAgKzEgQEAKK6QfIYPf8KQfIYPbpBAH8KQfpA8tYmlug2NbLSdi5Dpu8AkhP6Qf2/AhKCFc8AljClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMWQ4NmMwMDk0NjU3Mzg2MTk3ZDE5MTg1NWI1NjQ1YWMxZGQ1OTM2IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMWQ4NmMwMDk0NjU3Mzg2MTk3ZDE5MTg1NWI1NjQ1YWMxZGQ1OTM2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMTU3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UxZDg2YzAwOTQ2NTczODYxOTdkMTkxODU1YjU2NDVhYzFkZDU5MzYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMjVhZGY4ZGU0NGY1OTc4ZDAwYjdlOGM1MmFlZTg5YzVjZDFmZTkzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMjVhZGY4ZGU0NGY1OTc4ZDAwYjdlOGM1MmFlZTg5YzVjZDFmZTkzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTJhOWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UyNWFkZjhkZTQ0ZjU5NzhkMDBiN2U4YzUyYWVlODljNWNkMWZlOTMKQEAgLTAsMCArMSBAQAorP6Qf2/Ah8AljJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTI5ZjA1MTYyZTNkOTZkNTU0OWY5NmFhNGE1NGM4Njg1MzViMjg0NyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTI5ZjA1MTYyZTNkOTZkNTU0OWY5NmFhNGE1NGM4Njg1MzViMjg0NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDBjNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lMjlmMDUxNjJlM2Q5NmQ1NTQ5Zjk2YWE0YTU0Yzg2ODUzNWIyODQ3CkBAIC0wLDAgKzEgQEAKK6QPpNvw8INjYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UzYTk3MGFjODYzNmQyOWRhM2RlZDMyOGI4NzZlZDM1NTBjYjMyMDkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UzYTk3MGFjODYzNmQyOWRhM2RlZDMyOGI4NzZlZDM1NTBjYjMyMDkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk4OTgzMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTNhOTcwYWM4NjM2ZDI5ZGEzZGVkMzI4Yjg3NmVkMzU1MGNiMzIwOQpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbostW2MqKCliaW4JISE/pB/b8CE7B/B7KC1iaW7wCSFcCSEqH+kbOz9H7TpbKCghIVzwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lM2NmZGM4NjIxODdiNGVjMjhiZDRmYjJjZWQ1MDk0YmI1YjA5OTA5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lM2NmZGM4NjIxODdiNGVjMjhiZDRmYjJjZWQ1MDk0YmI1YjA5OTA5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTZmMGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2UzY2ZkYzg2MjE4N2I0ZWMyOGJkNGZiMmNlZDUwOTRiYjViMDk5MDkKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lNGNlNTIwMDdkMDAxODA2ZmM5MzY4YjYyYzEyNGRmYzU2ZTg0NzFjIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lNGNlNTIwMDdkMDAxODA2ZmM5MzY4YjYyYzEyNGRmYzU2ZTg0NzFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZGU3YWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U0Y2U1MjAwN2QwMDE4MDZmYzkzNjhiNjJjMTI0ZGZjNTZlODQ3MWMKQEAgLTAsMCArMSBAQAorKQc6OyGcyifS2CkqO312LTdJzyGkKRseli1NKrHk4iEnZCpDdRgOq1gkMA4pOvMqOzrk3Ts7KCk7Ol3v5kAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U1MjE3M2YwYmMzMzI1NjI5MDQ2ZTg1ZTJkYzQxYWNjNmJhN2QxYzMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U1MjE3M2YwYmMzMzI1NjI5MDQ2ZTg1ZTJkYzQxYWNjNmJhN2QxYzMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNDc1MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTUyMTczZjBiYzMzMjU2MjkwNDZlODVlMmRjNDFhY2M2YmE3ZDFjMwpAQCAtMCwwICsxIEBACiukpBAH8KQfLWJpbmMoWymkKKQtD9sKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U2NTg5MDA2ZTNiZGE0YzU3MjQ3YWQ2NmZjZDczYWMwMGVlMmNiZTIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U2NTg5MDA2ZTNiZGE0YzU3MjQ3YWQ2NmZjZDczYWMwMGVlMmNiZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0ZTA5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTY1ODkwMDZlM2JkYTRjNTcyNDdhZDY2ZmNkNzNhYzAwZWUyY2JlMgpAQCAtMCwwICsxIEBACis7J2MH8FsoIQnwW04hXIch5Uf9ISooIQkh5Uf9QSkoISntIbwqKeVH/UkpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U2ZmFiNzU3MmZiMmExYzZlMTA3YjZmODNjZmZkMTAzYTIzM2QwMjEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U2ZmFiNzU3MmZiMmExYzZlMTA3YjZmODNjZmZkMTAzYTIzM2QwMjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIwYTU3NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTZmYWI3NTcyZmIyYTFjNmUxMDdiNmY4M2NmZmQxMDNhMjMzZDAyMQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U3OTBmNWQzMTI5NTdkYmZkMjBhYmRlZmU0YjE3MzU3NzlmZjk2ODkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U3OTBmNWQzMTI5NTdkYmZkMjBhYmRlZmU0YjE3MzU3NzlmZjk2ODkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxODc3OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTc5MGY1ZDMxMjk1N2RiZmQyMGFiZGVmZTRiMTczNTc3OWZmOTY4OQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U4ODA5MDE3YTRjZjZjMWU4MGE5M2Y2NjExNjZlYWQ5NjFmMjZiYjQgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U4ODA5MDE3YTRjZjZjMWU4MGE5M2Y2NjExNjZlYWQ5NjFmMjZiYjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNlMzljNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTg4MDkwMTdhNGNmNmMxZTgwYTkzZjY2MTE2NmVhZDk2MWYyNmJiNApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U5NzMzZTk3M2MzM2IzOGMyMDg3YjdmMWRlYjM2Njg4YjNiMTQyNTkgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2U5NzMzZTk3M2MzM2IzOGMyMDg3YjdmMWRlYjM2Njg4YjNiMTQyNTkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3YTM2ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZTk3MzNlOTczYzMzYjM4YzIwODdiN2YxZGViMzY2ODhiM2IxNDI1OQpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjKlsppA8oKqCkrkAIEDrwB1soP6QHO1soJ6TwKC2k2yEJ8CfwH2IKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VhODEzNDc2OTg1NWQ1NzRmNjY3M2JmMDMwMWViMmUyNDYzMmM2ZWIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VhODEzNDc2OTg1NWQ1NzRmNjY3M2JmMDMwMWViMmUyNDYzMmM2ZWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExNmE3NAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWE4MTM0NzY5ODU1ZDU3NGY2NjczYmYwMzAxZWIyZTI0NjMyYzZlYgpAQCAtMCwwICsxIEBACisQB/BbKC1iaW6kpBAH8KQtYmlui2NbKSgtJ2JpbgkhIT+kH9vwIRAH8HsoLWJpbvAhCfAoCSEhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYjQ4OTUzNmU0ZTU1ODlhOTNhMTdjZDM2NjY5NDc1YjhmMmE1ZTFiIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYjQ4OTUzNmU0ZTU1ODlhOTNhMTdjZDM2NjY5NDc1YjhmMmE1ZTFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYTk0MzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2ViNDg5NTM2ZTRlNTU4OWE5M2ExN2NkMzY2Njk0NzViOGYyYTVlMWIKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LI1oppCgtpA4JYqQQB/CkDy1iaW4/8ItjWykoLX9uaScnYmluISEJIS+kIT8f2/AhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYjQ4ZWJkNGQwMWU1NjIzZGQxNmFlNjE5MzhiMzMzM2ZhYjNjZTc4IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYjQ4ZWJkNGQwMWU1NjIzZGQxNmFlNjE5MzhiMzMzM2ZhYjNjZTc4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MjgxN2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2ViNDhlYmQ0ZDAxZTU2MjNkZDE2YWU2MTkzOGIzMzMzZmFiM2NlNzgKQEAgLTAsMCArMSBAQAorpB+k2/Dw3GNjJwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWI2Y2E3NjI0Mzg0MjM5YzdmN2UwZDgzZWRiN2NjMzM0Yjc5MjZkNyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWI2Y2E3NjI0Mzg0MjM5YzdmN2UwZDgzZWRiN2NjMzM0Yjc5MjZkNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjY4ZGZkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYjZjYTc2MjQzODQyMzljN2Y3ZTBkODNlZGI3Y2MzMzRiNzkyNmQ3CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWM5NDU3YWQ0MWVkNzQ1ZWE5Mzc3ZmZkYjE2YWQwOWY5ODFkYWE3ZiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWM5NDU3YWQ0MWVkNzQ1ZWE5Mzc3ZmZkYjE2YWQwOWY5ODFkYWE3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjE1ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lYzk0NTdhZDQxZWQ3NDVlYTkzNzdmZmRiMTZhZDA5Zjk4MWRhYTdmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWRmZjUyNTZhMmQ2MGQwZTUxY2FlZjI1ZGMxZDZmMTY0M2RhZDZkNSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWRmZjUyNTZhMmQ2MGQwZTUxY2FlZjI1ZGMxZDZmMTY0M2RhZDZkNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWY2NjJkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lZGZmNTI1NmEyZDYwZDBlNTFjYWVmMjVkYzFkNmYxNjQzZGFkNmQ1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWU0ZDljNWQyMjUxMmRhNDI3MjZmNDcyMTNmZjU2NDA0ZDFkODFkMSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWU0ZDljNWQyMjUxMmRhNDI3MjZmNDcyMTNmZjU2NDA0ZDFkODFkMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDQ1ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lZTRkOWM1ZDIyNTEyZGE0MjcyNmY0NzIxM2ZmNTY0MDRkMWQ4MWQxCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWVmMmYzMGI1ZTJlY2Q5OGViZWZiMTJkNTdhYmE4YjRhZDUyZDkwNCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWVmMmYzMGI1ZTJlY2Q5OGViZWZiMTJkNTdhYmE4YjRhZDUyZDkwNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzI3YjM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lZWYyZjMwYjVlMmVjZDk4ZWJlZmIxMmQ1N2FiYThiNGFkNTJkOTA0CkBAIC0wLDAgKzEgQEAKKz/wCR/bIfBjbScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmMjM5MTFkZTFhMjdkMDNkMmQ0OTgzY2ExNTI3ZTE3ZDZhNzA5MmIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmMjM5MTFkZTFhMjdkMDNkMmQ0OTgzY2ExNTI3ZTE3ZDZhNzA5MmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUzNTEyNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWYyMzkxMWRlMWEyN2QwM2QyZDQ5ODNjYTE1MjdlMTdkNmE3MDkyYgpAQCAtMCwwICsxIEBACiswYyfwWyghCfBbKCFcCSHlR/0hWyghIQkh5Uf9QSkoISntIbwqKeVH/UEpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmNWI3ZmM2MmEyZGFlY2YxZThmOTI4YjFmYTNlYmQwMjg0MTNhNDEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmNWI3ZmM2MmEyZGFlY2YxZThmOTI4YjFmYTNlYmQwMjg0MTNhNDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNjNmQ3MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWY1YjdmYzYyYTJkYWVjZjFlOGY5MjhiMWZhM2ViZDAyODQxM2E0MQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmNzE4MjU4Y2ExODcwMTk4ZTkxYTJmYmMxZWFhOTBiNjIwNjczZmIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmNzE4MjU4Y2ExODcwMTk4ZTkxYTJmYmMxZWFhOTBiNjIwNjczZmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUwMWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWY3MTgyNThjYTE4NzAxOThlOTFhMmZiYzFlYWE5MGI2MjA2NzNmYgpAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWymyKC0nYmlupApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWZiNDZkZWIzN2E3OGY0MWRkNzYwZjZiNzIwM2IyMDk1NmViMTE0ZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWZiNDZkZWIzN2E3OGY0MWRkNzYwZjZiNzIwM2IyMDk1NmViMTE0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGNjMjJmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9lZmI0NmRlYjM3YTc4ZjQxZGQ3NjBmNmI3MjAzYjIwOTU2ZWIxMTRlCkBAIC0wLDAgKzEgQEAKKzs/MGMhKAfwSwnwE07UXAkh5UchWyghIQkh5Uf9QSkoOintISrlvEeA/UEpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmZGQ2ODI0YmQyNDU2ZTNlNDA4ZTBlODQzNjljNGZhM2FhMTRmNDEgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmZGQ2ODI0YmQyNDU2ZTNlNDA4ZTBlODQzNjljNGZhM2FhMTRmNDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyNmM2MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWZkZDY4MjRiZDI0NTZlM2U0MDhlMGU4NDM2OWM0ZmEzYWExNGY0MQpAQCAtMCwwICsxIEBACiswYwfwWyghCfBbKCFcCSHlR/0hWyghIQkh5Uf9QSkoISntIbwqKeVH/UEpKNk7KYoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmZWMwNDBhNWRlMTk2OWRmNWUzN2U0YmM1MGEwYThmMGRlMzQxZDggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2VmZWMwNDBhNWRlMTk2OWRmNWUzN2U0YmM1MGEwYThmMGRlMzQxZDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyMWMwZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZWZlYzA0MGE1ZGUxOTY5ZGY1ZTM3ZTRiYzUwYTBhOGYwZGUzNDFkOApAQCAtMCwwICsxIEBACisoP6Q6H5vwIQljClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mMWUzMDQ2NGMyNGRjMWQ3Y2VjN2VjMWRkMmFkZWM4NTEyMjMyYjQzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mMWUzMDQ2NGMyNGRjMWQ3Y2VjN2VjMWRkMmFkZWM4NTEyMjMyYjQzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMTdlNGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2YxZTMwNDY0YzI0ZGMxZDdjZWM3ZWMxZGQyYWRlYzg1MTIyMzJiNDMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mMjdhNjE3YjkzNjgxNDQ3Njc3MGEzYjMxYTVhZmI4MGQwZjNiNDIzIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mMjdhNjE3YjkzNjgxNDQ3Njc3MGEzYjMxYTVhZmI4MGQwZjNiNDIzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNmFjNGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2YyN2E2MTdiOTM2ODE0NDc2NzcwYTNiMzFhNWFmYjgwZDBmM2I0MjMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mM2YwZDk5YWMyOTYyZjhmZGRiMjVjNjVmYjRjOGM2ZWI2MzUxOGE5IGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mM2YwZDk5YWMyOTYyZjhmZGRiMjVjNjVmYjRjOGM2ZWI2MzUxOGE5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMGQxNmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2YzZjBkOTlhYzI5NjJmOGZkZGIyNWM2NWZiNGM4YzZlYjYzNTE4YTkKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iaW6LY1spKD8qoKSuQAgQBzoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y0NjI4MDg0Y2Y0NmYxMzliYWJiODg2YTc4MmI0YWI1OTc3ZDVkMmUgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y0NjI4MDg0Y2Y0NmYxMzliYWJiODg2YTc4MmI0YWI1OTc3ZDVkMmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkyNmRlMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjQ2MjgwODRjZjQ2ZjEzOWJhYmI4ODZhNzgyYjRhYjU5NzdkNWQyZQpAQCAtMCwwICsxIEBACisoP6QHO1soJ6TwIQkfKApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjQ3NTNlODg4MWU0YjNjNzFmMjcyODE0OWJlN2QwNGNjNjQ4ZjZhNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjQ3NTNlODg4MWU0YjNjNzFmMjcyODE0OWJlN2QwNGNjNjQ4ZjZhNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzhkMjkwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mNDc1M2U4ODgxZTRiM2M3MWYyNzI4MTQ5YmU3ZDA0Y2M2NDhmNmE2CkBAIC0wLDAgKzEgQEAKKz8qoKSuQAgQB1pu8DooYwkoO/4hKGMfIQk7XAnb5Ef9IfBjbTonClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mNGQ2ZmY2MzVhZTRmZGE0OTcyMjFkYTRiZmEzZTU5M2RmNTlhNDRlIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mNGQ2ZmY2MzVhZTRmZGE0OTcyMjFkYTRiZmEzZTU5M2RmNTlhNDRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3Yzg0MWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y0ZDZmZjYzNWFlNGZkYTQ5NzIyMWRhNGJmYTNlNTkzZGY1OWE0NGUKQEAgLTAsMCArMSBAQAorpKQQB/CkDy1iKW6LY1spKDoqoKSuQAgxBzoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y1MmY0ZDUxYWFhZWQwZjljM2EyMDkzNmNmNWVmZDI1ZDA2OTJmNjcgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y1MmY0ZDUxYWFhZWQwZjljM2EyMDkzNmNmNWVmZDI1ZDA2OTJmNjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiN2JlMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjUyZjRkNTFhYWFlZDBmOWMzYTIwOTM2Y2Y1ZWZkMjVkMDY5MmY2NwpAQCAtMCwwICsxIEBACiukcIPb8PCkHyGD2/BU8CoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y3Y2YzMDcyNGFiNzQwOTE4ZWVlNmU0YTZiNjY1OGFlM2Q3NzA2ZTggYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y3Y2YzMDcyNGFiNzQwOTE4ZWVlNmU0YTZiNjY1OGFlM2Q3NzA2ZTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY5ZTRhOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjdjZjMwNzI0YWI3NDA5MThlZWU2ZTRhNmI2NjU4YWUzZDc3MDZlOApAQCAtMCwwICsxIEBACiukCGMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y4MjM4MjhmZmQyYTYwZWZlZTM2ZjFkZTUyY2IwZjAyNGFjNWI0YmIgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y4MjM4MjhmZmQyYTYwZWZlZTM2ZjFkZTUyY2IwZjAyNGFjNWI0YmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZTY4NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjgyMzgyOGZmZDJhNjBlZmVlMzZmMWRlNTJjYjBmMDI0YWM1YjRiYgpAQCAtMCwwICsxIEBACiukH9vwIfAJYycKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y4NzYwNzYxYmQ1YWI3YjQ3Mzc2YmZiYzVhNDRlMTZiMmQ1Y2E4MDAgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2Y4NzYwNzYxYmQ1YWI3YjQ3Mzc2YmZiYzVhNDRlMTZiMmQ1Y2E4MDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3YzI0NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZjg3NjA3NjFiZDVhYjdiNDczNzZiZmJjNWE0NGUxNmIyZDVjYTgwMApAQCAtMCwwICsxIEBACiukpBAH8KQPLWJpbotjWycnKC0nYmluCSEhP6QfpAhj2/AhEApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmIxNTA0MmMyNjg2MjUwODllZjZjOGFhM2Q4YTZmMTJkMWQwMmM3NCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmIxNTA0MmMyNjg2MjUwODllZjZjOGFhM2Q4YTZmMTJkMWQwMmM3NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2Y4NGM1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mYjE1MDQyYzI2ODYyNTA4OWVmNmM4YWEzZDhhNmYxMmQxZDAyYzc0CkBAIC0wLDAgKzEgQEAKKxAH8FsoIQnwKCFcCSHlR/06WyghJ/BbKCEhCfBbKCEhCSHlR/0h5Uf9QSkoE1soCSEh5QpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmMzZGQ0MjkyZDY4ODRhNzcwMTk5NTk2ZjVlOWNiYzFlODY5ZTVmYiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmMzZGQ0MjkyZDY4ODRhNzcwMTk5NTk2ZjVlOWNiYzFlODY5ZTVmYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWQ5MGEwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mYzNkZDQyOTJkNjg4NGE3NzAxOTk1OTZmNWU5Y2JjMWU4NjllNWZiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmQzNGVjOTBmZThmOTIxOGZkMjVjM2VhYzE1MWFlYzk5OGNmZjZkOCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmQzNGVjOTBmZThmOTIxOGZkMjVjM2VhYzE1MWFlYzk5OGNmZjZkOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTAwNWM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZDM0ZWM5MGZlOGY5MjE4ZmQyNWMzZWFjMTUxYWVjOTk4Y2ZmNmQ4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmRmNTQ4Y2RlOTgxZmFiNGZiMTdiZDYzYTEyNGI3NWVkZGM1YzgzNiBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmRmNTQ4Y2RlOTgxZmFiNGZiMTdiZDYzYTEyNGI3NWVkZGM1YzgzNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2FlNWNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZGY1NDhjZGU5ODFmYWI0ZmIxN2JkNjNhMTI0Yjc1ZWRkYzVjODM2CkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmluix/KIfAJYyg/pClbJx+b8CEJYycoClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZTQ3ZmIxOGIwNjRlMjY0NzljM2MzMTQwMDgyYmQwMTA2NWU4OTdhIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZTQ3ZmIxOGIwNjRlMjY0NzljM2MzMTQwMDgyYmQwMTA2NWU4OTdhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZDg0NGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfY29ycHVzL2ZlNDdmYjE4YjA2NGUyNjQ3OWMzYzMxNDAwODJiZDAxMDY1ZTg5N2EKQEAgLTAsMCArMSBAQAorKD8/gTtbKKQoJz+kBwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmYyMDk3NzM0YmQ3YmI4NDUxYWVjZTEzYzkzMzZjNDYyNDczNTE3MCBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmYyMDk3NzM0YmQ3YmI4NDUxYWVjZTEzYzkzMzZjNDYyNDczNTE3MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGUzMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZjIwOTc3MzRiZDdiYjg0NTFhZWNlMTNjOTMzNmM0NjI0NzM1MTcwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmY3ZDZmZjA2MGU2MzM1NTcwMWIyZTY1NWM4MDI5MDIzMzg0OTdkZSBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9jb3JwdXMvZmY3ZDZmZjA2MGU2MzM1NTcwMWIyZTY1NWM4MDI5MDIzMzg0OTdkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODMzN2ZiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cy9mZjdkNmZmMDYwZTYzMzU1NzAxYjJlNjU1YzgwMjkwMjMzODQ5N2RlCkBAIC0wLDAgKzEgQEAKK6SkEAfwpA8tYmlui2OXKlsppA8oLaTb8CfwIWKDY2luCTshIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5jIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3N2ZhMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oIgorCitzdGF0aWMgdm9pZCBvbmhkcih2b2lkICp1ZCwgZ3JwY19tZGVsZW0gKm1kKSB7IEdSUENfTURFTEVNX1VOUkVGKG1kKTsgfQorCitpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICBncnBjX3Rlc3Rfb25seV9zZXRfbWV0YWRhdGFfaGFzaF9zZWVkKDApOworICBncnBjX2luaXQoKTsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyIHBhcnNlcjsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2luaXQoJnBhcnNlcik7CisgIHBhcnNlci5vbl9oZWFkZXIgPSBvbmhkcjsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX3BhcnNlKCZwYXJzZXIsIGRhdGEsIGRhdGEgKyBzaXplKTsKKyAgZ3JwY19jaHR0cDJfaHBhY2tfcGFyc2VyX2Rlc3Ryb3koJnBhcnNlcik7CisgIGdycGNfc2h1dGRvd24oKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfdGVzdC5jIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX3Rlc3QuYwppbmRleCBlNzE2ZDM4Li4xZWM0Nzk3IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl90ZXN0LmMKQEAgLTMxLDcgKzMxLDcgQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZV90ZXN0LmMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZV90ZXN0LmMKaW5kZXggZmJhY2RjMy4uNmEyZGFkZiAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGVfdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlX3Rlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogICoKICAqLwogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbl90ZXN0LmMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbl90ZXN0LmMKaW5kZXggZjI3NzBlNS4uOGYzOWZmMyAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb25fdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uX3Rlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogICoKICAqLwogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uaCIKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CiAjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKIApkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcF90ZXN0LmMgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwX3Rlc3QuYwppbmRleCBiYWVhYzE3Li5jNTE0ODE0IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwX3Rlc3QuYworKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwX3Rlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogICoKICAqLwogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmgiCiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgogI2luY2x1ZGUgInRlc3QvY29yZS91dGlsL3Rlc3RfY29uZmlnLmgiCiAKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmdfdGVzdC5jIGIvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZ190ZXN0LmMKaW5kZXggOWE5MWExNDQzLi43Y2M2OThlIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nX3Rlc3QuYworKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi90aW1lb3V0X2VuY29kaW5nX3Rlc3QuYwpAQCAtMzEsNyArMzEsNyBAQAogICoKICAqLwogCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50X3Rlc3QuYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL3ZhcmludF90ZXN0LmMKaW5kZXggOTYwYzk1My4uODVjNmM4NCAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50X3Rlc3QuYworKysgYi90ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi92YXJpbnRfdGVzdC5jCkBAIC0zMSw3ICszMSw3IEBACiAgKgogICovCiAKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgiCiAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvdHJhbnNwb3J0L21ldGFkYXRhX3Rlc3QuYyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvbWV0YWRhdGFfdGVzdC5jCmluZGV4IDMwZTMxMTMuLjgzNmI1MDMgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS90cmFuc3BvcnQvbWV0YWRhdGFfdGVzdC5jCisrKyBiL3Rlc3QvY29yZS90cmFuc3BvcnQvbWV0YWRhdGFfdGVzdC5jCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zdHJpbmdfdXRpbC5oPgogCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cHBvcnQvc3RyaW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCIKICNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgogCiAjZGVmaW5lIExPR19URVNUKHgpIGdwcl9sb2coR1BSX0lORk8sICIlcyIsIHgpCmRpZmYgLS1naXQgYS90b29scy9idWlsZGdlbi9wbHVnaW5zL2V4cGFuZF9maWxlZ3JvdXBzLnB5IGIvdG9vbHMvYnVpbGRnZW4vcGx1Z2lucy9leHBhbmRfZmlsZWdyb3Vwcy5weQppbmRleCAxNTZiZGM0Li5jNDAxNDNlIDEwMDc1NQotLS0gYS90b29scy9idWlsZGdlbi9wbHVnaW5zL2V4cGFuZF9maWxlZ3JvdXBzLnB5CisrKyBiL3Rvb2xzL2J1aWxkZ2VuL3BsdWdpbnMvZXhwYW5kX2ZpbGVncm91cHMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorIyBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDYgKzQyLDkgQEAKICAgcmV0dXJuIEZhbHNlCiAKIAorRklMRUdST1VQX0xJU1RTID0gWydzcmMnLCAnaGVhZGVycycsICdwdWJsaWNfaGVhZGVycyddCisKKwogZGVmIG1ha29fcGx1Z2luKGRpY3Rpb25hcnkpOgogICAiIiJUaGUgZXhwb3J0ZWQgcGx1Z2luIGNvZGUgZm9yIGV4cGFuZF9maWxlZ3JvdXBzLgogCkBAIC01NCwyMSArNTcsNDQgQEAKICAgZmlsZWdyb3Vwc19saXN0ID0gZGljdGlvbmFyeS5nZXQoJ2ZpbGVncm91cHMnKQogICBmaWxlZ3JvdXBzID0ge30KIAotICBmb3IgZmcgaW4gZmlsZWdyb3Vwc19saXN0OgotICAgIGZpbGVncm91cHNbZmdbJ25hbWUnXV0gPSBmZworICB0b2RvID0gZmlsZWdyb3Vwc19saXN0WzpdCisgIHNraXBzID0gMAorCisgIHdoaWxlIHRvZG86CisgICAgYXNzZXJ0IHNraXBzICE9IGxlbih0b2RvKSwgImluZmluaXRlIGxvb3AgaW4gZmlsZWdyb3VwIHVzZXMgY2xhdXNlcyIKKyAgICAjIHRha2UgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHRvZG8gbGlzdAorICAgIGN1ciA9IHRvZG9bMF0KKyAgICB0b2RvID0gdG9kb1sxOl0KKyAgICAjIGNoZWNrIGFsbCB1c2VzIGZpbGVncm91cHMgYXJlIHByZXNlbnQgKGlmIG5vLCBza2lwIGFuZCBjb21lIGJhY2sgbGF0ZXIpCisgICAgc2tpcCA9IEZhbHNlCisgICAgZm9yIHVzZXMgaW4gY3VyLmdldCgndXNlcycsIFtdKToKKyAgICAgIGlmIHVzZXMgbm90IGluIGZpbGVncm91cHM6CisgICAgICAgIHNraXAgPSBUcnVlCisgICAgaWYgc2tpcDoKKyAgICAgIHNraXBzICs9IDEKKyAgICAgIHRvZG8uYXBwZW5kKGN1cikKKyAgICBlbHNlOgorICAgICAgc2tpcHMgPSAwCisgICAgICBmb3IgdXNlcyBpbiBjdXIuZ2V0KCd1c2VzJywgW10pOgorICAgICAgICBmb3IgbHN0IGluIEZJTEVHUk9VUF9MSVNUUzoKKyAgICAgICAgICB2YWxzID0gY3VyLmdldChsc3QsIFtdKQorICAgICAgICAgIHZhbHMuZXh0ZW5kKGZpbGVncm91cHNbdXNlc10uZ2V0KGxzdCwgW10pKQorICAgICAgICAgIGN1cltsc3RdID0gdmFscworICAgICAgZmlsZWdyb3Vwc1tjdXJbJ25hbWUnXV0gPSBjdXIKKworICAjIHRoZSBhYm92ZSBleHBhbnNpb24gY2FuIGludHJvZHVjZSBkdXBsaWNhdGUgZmlsZW5hbWVzOiBjb250cmFjdCB0aGVtIGhlcmUKKyAgZm9yIGZnIGluIGZpbGVncm91cHMuaXRlcnZhbHVlcygpOgorICAgIGZvciBsc3QgaW4gRklMRUdST1VQX0xJU1RTOgorICAgICAgZmdbbHN0XSA9IHNvcnRlZChsaXN0KHNldChmZy5nZXQobHN0LCBbXSkpKSkKIAogICBmb3IgbGliIGluIGxpYnM6CiAgICAgZm9yIGZnX25hbWUgaW4gbGliLmdldCgnZmlsZWdyb3VwcycsIFtdKToKICAgICAgIGZnID0gZmlsZWdyb3Vwc1tmZ19uYW1lXQogCi0gICAgICBzcmMgPSBsaWIuZ2V0KCdzcmMnLCBbXSkKLSAgICAgIHNyYy5leHRlbmQoZmcuZ2V0KCdzcmMnLCBbXSkpCi0gICAgICBsaWJbJ3NyYyddID0gc3JjCisgICAgICBmb3IgbHN0IGluIEZJTEVHUk9VUF9MSVNUUzoKKyAgICAgICAgdmFscyA9IGxpYi5nZXQobHN0LCBbXSkKKyAgICAgICAgdmFscy5leHRlbmQoZmcuZ2V0KGxzdCwgW10pKQorICAgICAgICBsaWJbbHN0XSA9IHZhbHMKIAotICAgICAgaGVhZGVycyA9IGxpYi5nZXQoJ2hlYWRlcnMnLCBbXSkKLSAgICAgIGhlYWRlcnMuZXh0ZW5kKGZnLmdldCgnaGVhZGVycycsIFtdKSkKLSAgICAgIGxpYlsnaGVhZGVycyddID0gaGVhZGVycwotCi0gICAgICBwdWJsaWNfaGVhZGVycyA9IGxpYi5nZXQoJ3B1YmxpY19oZWFkZXJzJywgW10pCi0gICAgICBwdWJsaWNfaGVhZGVycy5leHRlbmQoZmcuZ2V0KCdwdWJsaWNfaGVhZGVycycsIFtdKSkKLSAgICAgIGxpYlsncHVibGljX2hlYWRlcnMnXSA9IHB1YmxpY19oZWFkZXJzCisgICAgZm9yIGxzdCBpbiBGSUxFR1JPVVBfTElTVFM6CisgICAgICBsaWJbbHN0XSA9IHNvcnRlZChsaXN0KHNldChsaWIuZ2V0KGxzdCwgW10pKSkpCmRpZmYgLS1naXQgYS90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX2hwYWNrX3RhYmxlcy5jIGIvdG9vbHMvY29kZWdlbi9jb3JlL2dlbl9ocGFja190YWJsZXMuYwppbmRleCBkODA5YmQzLi5jYjJiODlhIDEwMDY0NAotLS0gYS90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX2hwYWNrX3RhYmxlcy5jCisrKyBiL3Rvb2xzL2NvZGVnZW4vY29yZS9nZW5faHBhY2tfdGFibGVzLmMKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KLSNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5oIgogCiAvKgogICogZmlyc3QgYnl0ZSBMVVQgZ2VuZXJhdGlvbgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9ncnBjX2ludGVyb3Bfc3RyZXNzX2N4eC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9ncnBjX2ludGVyb3Bfc3RyZXNzX2N4eC9Eb2NrZXJmaWxlCmluZGV4IDQxMjNjYzEuLjU1NmEyNmUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZ3JwY19pbnRlcm9wX3N0cmVzc19jeHgvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL2dycGNfaW50ZXJvcF9zdHJlc3NfY3h4L0RvY2tlcmZpbGUKQEAgLTI3LDEyICsyNyw5IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jIEEgd29yay1pbi1wcm9ncmVzcyBEb2NrZXJmaWxlIHRoYXQgYWxsb3dzIHJ1bm5pbmcgZ1JQQyB0ZXN0IHN1aXRlcwotIyBpbnNpZGUgYSBkb2NrZXIgY29udGFpbmVyLgotCiBGUk9NIGRlYmlhbjpqZXNzaWUKIAotIyBJbnN0YWxsIEdpdC4KKyMgSW5zdGFsbCBHaXQgYW5kIGJhc2ljIHBhY2thZ2VzLgogUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBcCiAgIGF1dG9jb25mIFwKICAgYXV0b3Rvb2xzLWRldiBcCkBAIC00MywxMyArNDAsMTYgQEAKICAgZ2NjIFwKICAgZ2NjLW11bHRpbGliIFwKICAgZ2l0IFwKKyAgZ29sYW5nIFwKICAgZ3lwIFwKKyAgbGNvdiBcCiAgIGxpYmM2IFwKICAgbGliYzYtZGJnIFwKICAgbGliYzYtZGV2IFwKICAgbGliZ3Rlc3QtZGV2IFwKICAgbGlidG9vbCBcCiAgIG1ha2UgXAorICBwZXJsIFwKICAgc3RyYWNlIFwKICAgcHl0aG9uLWRldiBcCiAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKQEAgLTU5LDcgKzU5LDkgQEAKICAgd2dldCBcCiAgIHppcCAmJiBhcHQtZ2V0IGNsZWFuCiAKLVJVTiBlYXN5X2luc3RhbGwgLVUgcGlwCisjPT09PT09PT09PT09PT09PQorIyBCdWlsZCBwcm9maWxpbmcKK1JVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgdGltZSAmJiBhcHQtZ2V0IGNsZWFuCiAKICMgUHJlcGFyZSBjY2FjaGUKIFJVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vZ2NjCkBAIC02OSwxMiArNzEsNDcgQEAKIFJVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vY2xhbmcKIFJVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vY2xhbmcrKwogCi0jIyMjIyMjIyMjIyMjIyMjIyMKKyM9PT09PT09PT09PT09PT09PQogIyBDKysgZGVwZW5kZW5jaWVzCi1SVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCAteSBpbnN0YWxsIGxpYmdmbGFncy1kZXYgbGliZ3Rlc3QtZGV2IGxpYmMrKy1kZXYgY2xhbmcKK1JVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IC15IGluc3RhbGwgbGliZ2ZsYWdzLWRldiBsaWJndGVzdC1kZXYgbGliYysrLWRldiBjbGFuZyAmJiBhcHQtZ2V0IGNsZWFuCiAKLSMgR29vZ2xlIENsb3VkIHBsYXRmb3JtIEFQSSBsaWJyYXJpZXMgKGZvciBCaWdRdWVyeSkKKyMgR29vZ2xlIENsb3VkIHBsYXRmb3JtIEFQSSBsaWJyYXJpZXMKK1JVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgcHl0aG9uLXBpcCAmJiBhcHQtZ2V0IGNsZWFuCiBSVU4gcGlwIGluc3RhbGwgLS11cGdyYWRlIGdvb2dsZS1hcGktcHl0aG9uLWNsaWVudAogCisKKyM9PT09PT09PT09PT09PT09PQorIyBVcGRhdGUgY2xhbmcgdG8gYSB2ZXJzaW9uIHdpdGggaW1wcm92ZWQgdHNhbiBhbmQgZnV6emluZyBjYXBhYmlsaXRpZXMKKworUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgLXkgaW5zdGFsbCBweXRob24gY21ha2UgJiYgYXB0LWdldCBjbGVhbgorCitSVU4gZ2l0IGNsb25lIC1uIC1iIHJlbGVhc2VfMzggaHR0cDovL2xsdm0ub3JnL2dpdC9sbHZtLmdpdCAmJiBcCisgIGNkIGxsdm0gJiYgZ2l0IGNoZWNrb3V0IGFkNTc1MDMgJiYgY2QgLi4KK1JVTiBnaXQgY2xvbmUgLW4gLWIgcmVsZWFzZV8zOCBodHRwOi8vbGx2bS5vcmcvZ2l0L2NsYW5nLmdpdCAmJiBcCisgIGNkIGNsYW5nICYmIGdpdCBjaGVja291dCBhZDJjNTZlICYmIGNkIC4uCitSVU4gZ2l0IGNsb25lIC1uIC1iIHJlbGVhc2VfMzggaHR0cDovL2xsdm0ub3JnL2dpdC9jb21waWxlci1ydC5naXQgJiYgXAorICBjZCBjb21waWxlci1ydCAmJiBnaXQgY2hlY2tvdXQgMzE3NjkyMiAmJiBjZCAuLgorUlVOIGdpdCBjbG9uZSAtbiAtYiByZWxlYXNlXzM4IFwKKyAgaHR0cDovL2xsdm0ub3JnL2dpdC9jbGFuZy10b29scy1leHRyYS5naXQgJiYgY2QgY2xhbmctdG9vbHMtZXh0cmEgJiYgXAorICBnaXQgY2hlY2tvdXQgYzI4ODUyNSAmJiBjZCAuLgorUlVOIGdpdCBjbG9uZSAtbiAtYiByZWxlYXNlXzM4IGh0dHA6Ly9sbHZtLm9yZy9naXQvbGliY3h4LmdpdCAmJiBcCisgIGNkIGxpYmN4eCAmJiBnaXQgY2hlY2tvdXQgZmRhMzU0OSAgJiYgY2QgLi4KK1JVTiBnaXQgY2xvbmUgLW4gLWIgcmVsZWFzZV8zOCBodHRwOi8vbGx2bS5vcmcvZ2l0L2xpYmN4eGFiaS5naXQgJiYgXAorICBjZCBsaWJjeHhhYmkgJiYgZ2l0IGNoZWNrb3V0IDhkNGU1MWQgJiYgY2QgLi4KKworUlVOIG12IGNsYW5nIGxsdm0vdG9vbHMKK1JVTiBtdiBjb21waWxlci1ydCBsbHZtL3Byb2plY3RzCitSVU4gbXYgY2xhbmctdG9vbHMtZXh0cmEgbGx2bS90b29scy9jbGFuZy90b29scworUlVOIG12IGxpYmN4eCBsbHZtL3Byb2plY3RzCitSVU4gbXYgbGliY3h4YWJpIGxsdm0vcHJvamVjdHMKKworUlVOIG1rZGlyIGxsdm0tYnVpbGQKK1JVTiBjZCBsbHZtLWJ1aWxkICYmIGNtYWtlIFwKKyAgLURDTUFLRV9CVUlMRF9UWVBFOlNUUklORz1SZWxlYXNlIFwKKyAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpTVFJJTkc9L3VzciBcCisgIC1ETExWTV9UQVJHRVRTX1RPX0JVSUxEOlNUUklORz1YODYgXAorICAuLi9sbHZtCitSVU4gbWFrZSAtQyBsbHZtLWJ1aWxkIC1qIDEyICYmIG1ha2UgLUMgbGx2bS1idWlsZCBpbnN0YWxsICYmIHJtIC1yZiBsbHZtLWJ1aWxkCisKICMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCiBDTUQgWyJiYXNoIl0KZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZ3JwY19pbnRlcm9wX3N0cmVzc19jeHgvYnVpbGRfaW50ZXJvcF9zdHJlc3Muc2ggYi90b29scy9kb2NrZXJmaWxlL2dycGNfaW50ZXJvcF9zdHJlc3NfY3h4L2J1aWxkX2ludGVyb3Bfc3RyZXNzLnNoCmluZGV4IDM5MmJkZmMuLjQ3MGRiNGMgMTAwNzU1Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZ3JwY19pbnRlcm9wX3N0cmVzc19jeHgvYnVpbGRfaW50ZXJvcF9zdHJlc3Muc2gKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9ncnBjX2ludGVyb3Bfc3RyZXNzX2N4eC9idWlsZF9pbnRlcm9wX3N0cmVzcy5zaApAQCAtNDEsNSArNDEsNyBAQAogCiBtYWtlIGluc3RhbGwtY2VydHMKIAorQlVJTERfVFlQRT0ke0JVSUxEX1RZUEU6PW9wdH0KKwogIyBidWlsZCBDKysgaW50ZXJvcCBzdHJlc3MgY2xpZW50LCBpbnRlcm9wIGNsaWVudCBhbmQgc2VydmVyCi1tYWtlIHN0cmVzc190ZXN0IG1ldHJpY3NfY2xpZW50IGludGVyb3BfY2xpZW50IGludGVyb3Bfc2VydmVyCittYWtlIENPTkZJRz0kQlVJTERfVFlQRSBzdHJlc3NfdGVzdCBtZXRyaWNzX2NsaWVudCBpbnRlcm9wX2NsaWVudCBpbnRlcm9wX3NlcnZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS90ZXN0L2N4eF9qZXNzaWVfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL3Rlc3QvY3h4X2plc3NpZV94NjQvRG9ja2VyZmlsZQppbmRleCBiODQ4ZjIzLi42YzdhZWNlIDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL3Rlc3QvY3h4X2plc3NpZV94NjQvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL3Rlc3QvY3h4X2plc3NpZV94NjQvRG9ja2VyZmlsZQpAQCAtNjgsNyArNjgsNyBAQAogUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgLXkgaW5zdGFsbCBsaWJnZmxhZ3MtZGV2IGxpYmd0ZXN0LWRldiBsaWJjKystZGV2IGNsYW5nICYmIGFwdC1nZXQgY2xlYW4KIAogIz09PT09PT09PT09PT09PT09Ci0jIFVwZGF0ZSBjbGFuZyB0byBhIHZlcnNpb24gd2l0aCBpbXByb3ZlZCB0c2FuCisjIFVwZGF0ZSBjbGFuZyB0byBhIHZlcnNpb24gd2l0aCBpbXByb3ZlZCB0c2FuIGFuZCBmdXp6aW5nIGNhcGFiaWxpdGllcwogCiBSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCAteSBpbnN0YWxsIHB5dGhvbiBjbWFrZSAmJiBhcHQtZ2V0IGNsZWFuCiAKQEAgLTk4LDcgKzk4LDcgQEAKICAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpTVFJJTkc9L3VzciBcCiAgIC1ETExWTV9UQVJHRVRTX1RPX0JVSUxEOlNUUklORz1YODYgXAogICAuLi9sbHZtCi1SVU4gbWFrZSAtQyBsbHZtLWJ1aWxkICYmIG1ha2UgLUMgbGx2bS1idWlsZCBpbnN0YWxsICYmIHJtIC1yZiBsbHZtLWJ1aWxkCitSVU4gbWFrZSAtQyBsbHZtLWJ1aWxkIC1qIDEyICYmIG1ha2UgLUMgbGx2bS1idWlsZCBpbnN0YWxsICYmIHJtIC1yZiBsbHZtLWJ1aWxkCiAKICMgUHJlcGFyZSBjY2FjaGUKIFJVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vZ2NjCmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL3Rlc3QvZnV6emVyL0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL3Rlc3QvZnV6emVyL0RvY2tlcmZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IzNWMwMAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9mdXp6ZXIvRG9ja2VyZmlsZQpAQCAtMCwwICsxLDEyMyBAQAorIyBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworRlJPTSBkZWJpYW46amVzc2llCisKKyMgSW5zdGFsbCBHaXQgYW5kIGJhc2ljIHBhY2thZ2VzLgorUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBcCisgIGF1dG9jb25mIFwKKyAgYXV0b3Rvb2xzLWRldiBcCisgIGJ1aWxkLWVzc2VudGlhbCBcCisgIGJ6aXAyIFwKKyAgY2NhY2hlIFwKKyAgY3VybCBcCisgIGdjYyBcCisgIGdjYy1tdWx0aWxpYiBcCisgIGdpdCBcCisgIGdvbGFuZyBcCisgIGd5cCBcCisgIGxjb3YgXAorICBsaWJjNiBcCisgIGxpYmM2LWRiZyBcCisgIGxpYmM2LWRldiBcCisgIGxpYmd0ZXN0LWRldiBcCisgIGxpYnRvb2wgXAorICBtYWtlIFwKKyAgcGVybCBcCisgIHN0cmFjZSBcCisgIHB5dGhvbi1kZXYgXAorICBweXRob24tc2V0dXB0b29scyBcCisgIHB5dGhvbi15YW1sIFwKKyAgdGVsbmV0IFwKKyAgdW56aXAgXAorICB3Z2V0IFwKKyAgemlwICYmIGFwdC1nZXQgY2xlYW4KKworIz09PT09PT09PT09PT09PT0KKyMgQnVpbGQgcHJvZmlsaW5nCitSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IHRpbWUgJiYgYXB0LWdldCBjbGVhbgorCisjPT09PT09PT09PT09PT09PT0KKyMgQysrIGRlcGVuZGVuY2llcworUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgLXkgaW5zdGFsbCBsaWJnZmxhZ3MtZGV2IGxpYmd0ZXN0LWRldiBsaWJjKystZGV2IGNsYW5nICYmIGFwdC1nZXQgY2xlYW4KKworIz09PT09PT09PT09PT09PT09CisjIFVwZGF0ZSBjbGFuZyB0byBhIHZlcnNpb24gd2l0aCBpbXByb3ZlZCB0c2FuIGFuZCBmdXp6aW5nIGNhcGFiaWxpdGllcworCitSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCAteSBpbnN0YWxsIHB5dGhvbiBjbWFrZSAmJiBhcHQtZ2V0IGNsZWFuCisKK1JVTiBnaXQgY2xvbmUgLW4gLWIgcmVsZWFzZV8zOCBodHRwOi8vbGx2bS5vcmcvZ2l0L2xsdm0uZ2l0ICYmIFwKKyAgY2QgbGx2bSAmJiBnaXQgY2hlY2tvdXQgYWQ1NzUwMyAmJiBjZCAuLgorUlVOIGdpdCBjbG9uZSAtbiAtYiByZWxlYXNlXzM4IGh0dHA6Ly9sbHZtLm9yZy9naXQvY2xhbmcuZ2l0ICYmIFwKKyAgY2QgY2xhbmcgJiYgZ2l0IGNoZWNrb3V0IGFkMmM1NmUgJiYgY2QgLi4KK1JVTiBnaXQgY2xvbmUgLW4gLWIgcmVsZWFzZV8zOCBodHRwOi8vbGx2bS5vcmcvZ2l0L2NvbXBpbGVyLXJ0LmdpdCAmJiBcCisgIGNkIGNvbXBpbGVyLXJ0ICYmIGdpdCBjaGVja291dCAzMTc2OTIyICYmIGNkIC4uCitSVU4gZ2l0IGNsb25lIC1uIC1iIHJlbGVhc2VfMzggXAorICBodHRwOi8vbGx2bS5vcmcvZ2l0L2NsYW5nLXRvb2xzLWV4dHJhLmdpdCAmJiBjZCBjbGFuZy10b29scy1leHRyYSAmJiBcCisgIGdpdCBjaGVja291dCBjMjg4NTI1ICYmIGNkIC4uCitSVU4gZ2l0IGNsb25lIC1uIC1iIHJlbGVhc2VfMzggaHR0cDovL2xsdm0ub3JnL2dpdC9saWJjeHguZ2l0ICYmIFwKKyAgY2QgbGliY3h4ICYmIGdpdCBjaGVja291dCBmZGEzNTQ5ICAmJiBjZCAuLgorUlVOIGdpdCBjbG9uZSAtbiAtYiByZWxlYXNlXzM4IGh0dHA6Ly9sbHZtLm9yZy9naXQvbGliY3h4YWJpLmdpdCAmJiBcCisgIGNkIGxpYmN4eGFiaSAmJiBnaXQgY2hlY2tvdXQgOGQ0ZTUxZCAmJiBjZCAuLgorCitSVU4gbXYgY2xhbmcgbGx2bS90b29scworUlVOIG12IGNvbXBpbGVyLXJ0IGxsdm0vcHJvamVjdHMKK1JVTiBtdiBjbGFuZy10b29scy1leHRyYSBsbHZtL3Rvb2xzL2NsYW5nL3Rvb2xzCitSVU4gbXYgbGliY3h4IGxsdm0vcHJvamVjdHMKK1JVTiBtdiBsaWJjeHhhYmkgbGx2bS9wcm9qZWN0cworCitSVU4gbWtkaXIgbGx2bS1idWlsZAorUlVOIGNkIGxsdm0tYnVpbGQgJiYgY21ha2UgXAorICAtRENNQUtFX0JVSUxEX1RZUEU6U1RSSU5HPVJlbGVhc2UgXAorICAtRENNQUtFX0lOU1RBTExfUFJFRklYOlNUUklORz0vdXNyIFwKKyAgLURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ6U1RSSU5HPVg4NiBcCisgIC4uL2xsdm0KK1JVTiBtYWtlIC1DIGxsdm0tYnVpbGQgLWogMTIgJiYgbWFrZSAtQyBsbHZtLWJ1aWxkIGluc3RhbGwgJiYgcm0gLXJmIGxsdm0tYnVpbGQKKworIyBQcmVwYXJlIGNjYWNoZQorUlVOIGxuIC1zIC91c3IvYmluL2NjYWNoZSAvdXNyL2xvY2FsL2Jpbi9nY2MKK1JVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vZysrCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2NjCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2MrKworUlVOIGxuIC1zIC91c3IvYmluL2NjYWNoZSAvdXNyL2xvY2FsL2Jpbi9jbGFuZworUlVOIGxuIC1zIC91c3IvYmluL2NjYWNoZSAvdXNyL2xvY2FsL2Jpbi9jbGFuZysrCisKKyM9PT09PT09PT09PT09PT09PT09PT09CisjIFpvb2tlZXBlciBkZXBlbmRlbmNpZXMKKyMgVE9ETyhqdGF0dGVybXVzY2gpOiBpcyB6b29rZWVwZXIgc3RpbGwgbmVlZGVkPworUlVOIGFwdC1nZXQgaW5zdGFsbCAteSBsaWJ6b29rZWVwZXItbXQtZGV2CisKK1JVTiBta2RpciAvdmFyL2xvY2FsL2plbmtpbnMKKworUlVOIGNsYW5nKysgLWMgLWcgLU8yIC1zdGQ9YysrMTEgbGx2bS9saWIvRnV6emVyLyouY3BwIC1JRnV6emVyCitSVU4gYXIgcnV2IGxpYkZ1enplci5hIEZ1enplcioubworUlVOIG12IGxpYkZ1enplci5hIC91c3IvbGliCitSVU4gcm0gLWYgRnV6emVyKi5vCisjIERlZmluZSB0aGUgZGVmYXVsdCBjb21tYW5kLgorQ01EIFsiYmFzaCJdCmRpZmYgLS1naXQgYS90b29scy9kb3h5Z2VuL0RveHlmaWxlLmMrKyBiL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuYysrCmluZGV4IDI1MzI2MmMuLmZlNzk2MmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuYysrCisrKyBiL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuYysrCkBAIC03NzAsNiArNzcwLDM3IEBACiBpbmNsdWRlL2dycGMrKy9ncnBjKysuaCBcCiBpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaCBcCiBpbmNsdWRlL2dycGMrKy9pbXBsL2NsaWVudF91bmFyeV9jYWxsLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGwuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbF9ob29rLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF9jb250ZXh0LmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF91bmFyeV9jYWxsLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZV90YWcuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3Byb3RvX3V0aWxzLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlY3VyaXR5L2F1dGhfY29udGV4dC5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfaW50ZXJmYWNlLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RhdHVzX2NvZGVfZW51bS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX3N0cmVhbS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmggXAogaW5jbHVkZS9ncnBjKysvaW1wbC9ncnBjX2xpYnJhcnkuaCBcCiBpbmNsdWRlL2dycGMrKy9pbXBsL21ldGhvZF9oYW5kbGVyX2ltcGwuaCBcCiBpbmNsdWRlL2dycGMrKy9pbXBsL3Byb3RvX3V0aWxzLmggXApAQCAtODAzLDM4ICs4MzQsNyBAQAogaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zdHJpbmdfcmVmLmggXAogaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zdHViX29wdGlvbnMuaCBcCiBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N5bmNfc3RyZWFtLmggXAotaW5jbHVkZS9ncnBjKysvc3VwcG9ydC90aW1lLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGwuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbF9ob29rLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF9jb250ZXh0LmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF91bmFyeV9jYWxsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZV90YWcuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3Byb3RvX3V0aWxzLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlY3VyaXR5L2F1dGhfY29udGV4dC5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfaW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RhdHVzX2NvZGVfZW51bS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX3N0cmVhbS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmgKK2luY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oCiAKICMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMKICMgdGhhdCBkb3h5Z2VuIHBhcnNlcy4gSW50ZXJuYWxseSBkb3h5Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5nLiBEb3h5Z2VuIHVzZXMKZGlmZiAtLWdpdCBhL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuYysrLmludGVybmFsIGIvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jKysuaW50ZXJuYWwKaW5kZXggMTM0YjE2Zi4uMzBiZjdiZiAxMDA2NDQKLS0tIGEvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jKysuaW50ZXJuYWwKKysrIGIvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jKysuaW50ZXJuYWwKQEAgLTc3MCw2ICs3NzAsMzcgQEAKIGluY2x1ZGUvZ3JwYysrL2dycGMrKy5oIFwKIGluY2x1ZGUvZ3JwYysrL2ltcGwvY2FsbC5oIFwKIGluY2x1ZGUvZ3JwYysrL2ltcGwvY2xpZW50X3VuYXJ5X2NhbGwuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbC5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2hhbm5lbF9pbnRlcmZhY2UuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X2NvbnRleHQuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlX3RhZy5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnX3Byb3RvYnVmLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbl9pbnRlcmZhY2UuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcHJvdG9fdXRpbHMuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfc2VydmljZV9tZXRob2QuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VjdXJpdHkvYXV0aF9jb250ZXh0LmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9pbnRlcmZhY2UuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXNfY29kZV9lbnVtLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3R1Yl9vcHRpb25zLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmMuaCBcCitpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oIFwKK2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmggXAoraW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiBpbmNsdWRlL2dycGMrKy9pbXBsL2dycGNfbGlicmFyeS5oIFwKIGluY2x1ZGUvZ3JwYysrL2ltcGwvbWV0aG9kX2hhbmRsZXJfaW1wbC5oIFwKIGluY2x1ZGUvZ3JwYysrL2ltcGwvcHJvdG9fdXRpbHMuaCBcCkBAIC04MDQsNTIgKzgzNSwxNCBAQAogaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zdHViX29wdGlvbnMuaCBcCiBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N5bmNfc3RyZWFtLmggXAogaW5jbHVkZS9ncnBjKysvc3VwcG9ydC90aW1lLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGwuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbF9ob29rLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NoYW5uZWxfaW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF9jb250ZXh0LmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NsaWVudF91bmFyeV9jYWxsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWUuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZV90YWcuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3Byb3RvX3V0aWxzLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlY3VyaXR5L2F1dGhfY29udGV4dC5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfaW50ZXJmYWNlLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RhdHVzX2NvZGVfZW51bS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jLmggXAotaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaCBcCi1pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX3N0cmVhbS5oIFwKLWluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmggXAorc3JjL2NwcC9jbGllbnQvY3JlYXRlX2NoYW5uZWxfaW50ZXJuYWwuaCBcCiBzcmMvY3BwL2NsaWVudC9zZWN1cmVfY3JlZGVudGlhbHMuaCBcCiBzcmMvY3BwL2NvbW1vbi9jb3JlX2NvZGVnZW4uaCBcCi1zcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmggXAotc3JjL2NwcC9zZXJ2ZXIvc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5oIFwKLXNyYy9jcHAvY2xpZW50L2NyZWF0ZV9jaGFubmVsX2ludGVybmFsLmggXAotc3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmggXAogc3JjL2NwcC9jb21tb24vY3JlYXRlX2F1dGhfY29udGV4dC5oIFwKK3NyYy9jcHAvY29tbW9uL3NlY3VyZV9hdXRoX2NvbnRleHQuaCBcCiBzcmMvY3BwL3NlcnZlci9keW5hbWljX3RocmVhZF9wb29sLmggXAorc3JjL2NwcC9zZXJ2ZXIvc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5oIFwKIHNyYy9jcHAvc2VydmVyL3RocmVhZF9wb29sX2ludGVyZmFjZS5oIFwKLXNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5jYyBcCi1zcmMvY3BwL2NvbW1vbi9hdXRoX3Byb3BlcnR5X2l0ZXJhdG9yLmNjIFwKLXNyYy9jcHAvY29tbW9uL3NlY3VyZV9hdXRoX2NvbnRleHQuY2MgXAotc3JjL2NwcC9jb21tb24vc2VjdXJlX2NoYW5uZWxfYXJndW1lbnRzLmNjIFwKLXNyYy9jcHAvY29tbW9uL3NlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIFwKLXNyYy9jcHAvc2VydmVyL3NlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MgXAogc3JjL2NwcC9jbGllbnQvY2hhbm5lbC5jYyBcCiBzcmMvY3BwL2NsaWVudC9jbGllbnRfY29udGV4dC5jYyBcCiBzcmMvY3BwL2NsaWVudC9jcmVhdGVfY2hhbm5lbC5jYyBcCkBAIC04NTcsMTQgKzg1MCwyMSBAQAogc3JjL2NwcC9jbGllbnQvY3JlZGVudGlhbHMuY2MgXAogc3JjL2NwcC9jbGllbnQvZ2VuZXJpY19zdHViLmNjIFwKIHNyYy9jcHAvY2xpZW50L2luc2VjdXJlX2NyZWRlbnRpYWxzLmNjIFwKK3NyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5jYyBcCitzcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjIFwKK3NyYy9jcHAvY29tbW9uL2F1dGhfcHJvcGVydHlfaXRlcmF0b3IuY2MgXAogc3JjL2NwcC9jb21tb24vY2hhbm5lbF9hcmd1bWVudHMuY2MgXAogc3JjL2NwcC9jb21tb24vY29tcGxldGlvbl9xdWV1ZS5jYyBcCiBzcmMvY3BwL2NvbW1vbi9jb3JlX2NvZGVnZW4uY2MgXAogc3JjL2NwcC9jb21tb24vcnBjX21ldGhvZC5jYyBcCitzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmNjIFwKK3NyYy9jcHAvY29tbW9uL3NlY3VyZV9jaGFubmVsX2FyZ3VtZW50cy5jYyBcCitzcmMvY3BwL2NvbW1vbi9zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyBcCiBzcmMvY3BwL3NlcnZlci9hc3luY19nZW5lcmljX3NlcnZpY2UuY2MgXAogc3JjL2NwcC9zZXJ2ZXIvY3JlYXRlX2RlZmF1bHRfdGhyZWFkX3Bvb2wuY2MgXAogc3JjL2NwcC9zZXJ2ZXIvZHluYW1pY190aHJlYWRfcG9vbC5jYyBcCiBzcmMvY3BwL3NlcnZlci9pbnNlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MgXAorc3JjL2NwcC9zZXJ2ZXIvc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5jYyBcCiBzcmMvY3BwL3NlcnZlci9zZXJ2ZXIuY2MgXAogc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2J1aWxkZXIuY2MgXAogc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2NvbnRleHQuY2MgXApAQCAtODczLDggKzg3Myw3IEBACiBzcmMvY3BwL3V0aWwvc2xpY2UuY2MgXAogc3JjL2NwcC91dGlsL3N0YXR1cy5jYyBcCiBzcmMvY3BwL3V0aWwvc3RyaW5nX3JlZi5jYyBcCi1zcmMvY3BwL3V0aWwvdGltZS5jYyBcCi1zcmMvY3BwL2NvZGVnZW4vY29kZWdlbl9pbml0LmNjCitzcmMvY3BwL3V0aWwvdGltZS5jYwogCiAjIFRoaXMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBvZiB0aGUgc291cmNlIGZpbGVzCiAjIHRoYXQgZG94eWdlbiBwYXJzZXMuIEludGVybmFsbHkgZG94eWdlbiB1c2VzIHRoZSBVVEYtOCBlbmNvZGluZy4gRG94eWdlbiB1c2VzCmRpZmYgLS1naXQgYS90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUgYi90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUKaW5kZXggZTMyNmFkYy4uNTVmNGZmZSAxMDA2NDQKLS0tIGEvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jb3JlCisrKyBiL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuY29yZQpAQCAtNzYwLDE5ICs3NjAsMzMgQEAKICMgc3BhY2VzLgogIyBOb3RlOiBJZiB0aGlzIHRhZyBpcyBlbXB0eSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCiAKLUlOUFVUICAgICAgICAgICAgICAgICAgPSBpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oIFwKLWluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIFwKK0lOUFVUICAgICAgICAgICAgICAgICAgPSBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXIuaCBcCiBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmggXAoraW5jbHVkZS9ncnBjL2NlbnN1cy5oIFwKIGluY2x1ZGUvZ3JwYy9jb21wcmVzc2lvbi5oIFwKIGluY2x1ZGUvZ3JwYy9ncnBjLmggXAotaW5jbHVkZS9ncnBjL3N0YXR1cy5oIFwKK2luY2x1ZGUvZ3JwYy9ncnBjX3NlY3VyaXR5LmggXAogaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oIFwKIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29tcHJlc3Npb25fdHlwZXMuaCBcCiBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIFwKIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vZ3JwY190eXBlcy5oIFwKIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcHJvcGFnYXRpb25fYml0cy5oIFwKIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmggXAotaW5jbHVkZS9ncnBjL2NlbnN1cy5oIFwKK2luY2x1ZGUvZ3JwYy9zdGF0dXMuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKK2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKK2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiBpbmNsdWRlL2dycGMvc3VwcG9ydC9hbGxvYy5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bV9nY2NfYXRvbWljLmggXApAQCAtODAwLDIxICs4MTQsNyBAQAogaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX2djYy5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3Rsc19tc3ZjLmggXAogaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX3B0aHJlYWQuaCBcCi1pbmNsdWRlL2dycGMvc3VwcG9ydC91c2VmdWwuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaAoraW5jbHVkZS9ncnBjL3N1cHBvcnQvdXNlZnVsLmgKIAogIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxlcwogIyB0aGF0IGRveHlnZW4gcGFyc2VzLiBJbnRlcm5hbGx5IGRveHlnZW4gdXNlcyB0aGUgVVRGLTggZW5jb2RpbmcuIERveHlnZW4gdXNlcwpkaWZmIC0tZ2l0IGEvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jb3JlLmludGVybmFsIGIvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jb3JlLmludGVybmFsCmluZGV4IDdmOTExMTUuLmJiNzE3N2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuY29yZS5pbnRlcm5hbAorKysgYi90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUuaW50ZXJuYWwKQEAgLTc2MCwyMSArNzYwLDQ1IEBACiAjIHNwYWNlcy4KICMgTm90ZTogSWYgdGhpcyB0YWcgaXMgZW1wdHkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNlYXJjaGVkLgogCi1JTlBVVCAgICAgICAgICAgICAgICAgID0gaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaCBcCi1pbmNsdWRlL2dycGMvYnl0ZV9idWZmZXIuaCBcCitJTlBVVCAgICAgICAgICAgICAgICAgID0gaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyLmggXAogaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oIFwKK2luY2x1ZGUvZ3JwYy9jZW5zdXMuaCBcCiBpbmNsdWRlL2dycGMvY29tcHJlc3Npb24uaCBcCiBpbmNsdWRlL2dycGMvZ3JwYy5oIFwKLWluY2x1ZGUvZ3JwYy9zdGF0dXMuaCBcCitpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eS5oIFwKIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCBcCiBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmggXAogaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaCBcCiBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCBcCiBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCBcCiBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIFwKLWluY2x1ZGUvZ3JwYy9jZW5zdXMuaCBcCitpbmNsdWRlL2dycGMvc3RhdHVzLmggXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmggXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmggXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmggXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmggXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5oIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCBcCiBzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmggXAogc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5oIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5oIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvcnBjX21ldHJpY19pZC5oIFwKIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5oIFwKIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaCBcCiBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCBcCkBAIC04NTEsNiArODc1LDE1IEBACiBzcmMvY29yZS9saWIvanNvbi9qc29uX3JlYWRlci5oIFwKIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmggXAogc3JjL2NvcmUvbGliL3Byb3RvL2dycGMvbGIvdjAvbG9hZF9iYWxhbmNlci5wYi5oIFwKK3NyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCBcCitzcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmggXAorc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmggXAorc3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIFwKK3NyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmggXAorc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oIFwKK3NyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCBcCitzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmggXAorc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCBcCiBzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfaW50ZXJmYWNlLmggXAogc3JjL2NvcmUvbGliL3N0YXRpc3RpY3MvY2Vuc3VzX3JwY19zdGF0cy5oIFwKIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5oIFwKQEAgLTg2Niw1NyArODk5LDU1IEBACiBzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCBcCiBzcmMvY29yZS9saWIvc3VyZmFjZS9zdXJmYWNlX3RyYWNlLmggXAogc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9ieXRlX3N0cmVhbS5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZGF0YS5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3BpbmcuaCBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfZW5jb2Rlci5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHR0cDJfZXJyb3JzLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbWFwLmggXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIFwKIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmggXAogc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIFwKIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGFfYmF0Y2guaCBcCiBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oIFwKIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmggXAogc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnRfaW1wbC5oIFwKLXNyYy9jb3JlL2xpYi9zZWN1cml0eS9hdXRoX2ZpbHRlcnMuaCBcCi1zcmMvY29yZS9saWIvc2VjdXJpdHkvYjY0LmggXAotc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmggXAotc3JjL2NvcmUvbGliL3NlY3VyaXR5L2hhbmRzaGFrZS5oIFwKLXNyYy9jb3JlL2xpYi9zZWN1cml0eS9qc29uX3Rva2VuLmggXAotc3JjL2NvcmUvbGliL3NlY3VyaXR5L2p3dF92ZXJpZmllci5oIFwKLXNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cmVfZW5kcG9pbnQuaCBcCi1zcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29ubmVjdG9yLmggXAotc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2NvbnRleHQuaCBcCiBzcmMvY29yZS9saWIvdHNpL2Zha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmggXAogc3JjL2NvcmUvbGliL3RzaS9zc2xfdHJhbnNwb3J0X3NlY3VyaXR5LmggXAogc3JjL2NvcmUvbGliL3RzaS9zc2xfdHlwZXMuaCBcCiBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5oIFwKIHNyYy9jb3JlL2xpYi90c2kvdHJhbnNwb3J0X3NlY3VyaXR5X2ludGVyZmFjZS5oIFwKLXNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCBcCi1zcmMvY29yZS9saWIvY2Vuc3VzL21sb2cuaCBcCi1zcmMvY29yZS9saWIvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCBcCiB0aGlyZF9wYXJ0eS9uYW5vcGIvcGIuaCBcCiB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmggXAogdGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5oIFwKIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuaCBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbGlzdHMuYyBcCitzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmMgXAorc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3ZhcmludC5jIFwKK3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMgXAorc3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMgXAogc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX2NvbnRleHQuYyBcCiBzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfZmlsdGVyLmMgXAogc3JjL2NvcmUvbGliL2NlbnN1cy9ncnBjX3BsdWdpbi5jIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIFwKK3NyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAorc3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCitzcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyBcCiBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyBcCiBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMgXAogc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMgXApAQCAtOTUwLDYgKzk4MSw3IEBACiBzcmMvY29yZS9saWIvZGVidWcvdHJhY2UuYyBcCiBzcmMvY29yZS9saWIvaHR0cC9mb3JtYXRfcmVxdWVzdC5jIFwKIHNyYy9jb3JlL2xpYi9odHRwL2h0dHBjbGkuYyBcCitzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIFwKIHNyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jIFwKIHNyYy9jb3JlL2xpYi9pb21nci9jbG9zdXJlLmMgXAogc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50LmMgXApAQCAtOTk4LDU3ICsxMDMwLDYgQEAKIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMgXAogc3JjL2NvcmUvbGliL2pzb24vanNvbl93cml0ZXIuYyBcCiBzcmMvY29yZS9saWIvcHJvdG8vZ3JwYy9sYi92MC9sb2FkX2JhbGFuY2VyLnBiLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvYWxhcm0uYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9hcGlfdHJhY2UuYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2J5dGVfYnVmZmVyX3JlYWRlci5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2xvZ19iYXRjaC5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2Nvbm5lY3Rpdml0eS5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9zdGFja190eXBlLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvY29tcGxldGlvbl9xdWV1ZS5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyBcCi1zcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL21ldGFkYXRhX2FycmF5LmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jIFwKLXNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3JzdF9zdHJlYW0uYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX2xpc3RzLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIFwKLXNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgXAotc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuYyBcCi1zcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyBcCi1zcmMvY29yZS9saWIvaHR0cC9odHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIFwKIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9iNjQuYyBcCiBzcmMvY29yZS9saWIvc2VjdXJpdHkvY2xpZW50X2F1dGhfZmlsdGVyLmMgXAogc3JjL2NvcmUvbGliL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmMgXApAQCAtMTA2MywyMSArMTA0NCw1NCBAQAogc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlY3VyaXR5X2Nvbm5lY3Rvci5jIFwKIHNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMgXAogc3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jIFwKLXNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIFwKK3NyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvYXBpX3RyYWNlLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvYnl0ZV9idWZmZXIuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9kZXRhaWxzLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3BpbmcuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX3N0YWNrX3R5cGUuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvZXZlbnRfc3RyaW5nLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jIFwKIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfc2VjdXJlLmMgXAotc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyBcCitzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIFwKK3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIFwKK3NyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMgXAorc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIFwKK3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyBcCitzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIFwKK3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyBcCitzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhX2JhdGNoLmMgXAorc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYyBcCitzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIFwKK3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0X29wX3N0cmluZy5jIFwKIHNyYy9jb3JlL2xpYi90c2kvZmFrZV90cmFuc3BvcnRfc2VjdXJpdHkuYyBcCiBzcmMvY29yZS9saWIvdHNpL3NzbF90cmFuc3BvcnRfc2VjdXJpdHkuYyBcCiBzcmMvY29yZS9saWIvdHNpL3RyYW5zcG9ydF9zZWN1cml0eS5jIFwKLXNyYy9jb3JlL2xpYi9jZW5zdXMvY29udGV4dC5jIFwKLXNyYy9jb3JlL2xpYi9jZW5zdXMvaW5pdGlhbGl6ZS5jIFwKLXNyYy9jb3JlL2xpYi9jZW5zdXMvbWxvZy5jIFwKLXNyYy9jb3JlL2xpYi9jZW5zdXMvb3BlcmF0aW9uLmMgXAotc3JjL2NvcmUvbGliL2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCi1zcmMvY29yZS9saWIvY2Vuc3VzL3RyYWNpbmcuYyBcCiB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmMgXAogdGhpcmRfcGFydHkvbmFub3BiL3BiX2RlY29kZS5jIFwKIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW4zMi5oIFwKK2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZS5oIFwKK2luY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jLmggXAoraW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX2dlbmVyaWMuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfd2luMzIuaCBcCitpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaCBcCiBpbmNsdWRlL2dycGMvc3VwcG9ydC9hbGxvYy5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bV9nY2NfYXRvbWljLmggXApAQCAtMTEwNiwyMCArMTEyMCw2IEBACiBpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfbXN2Yy5oIFwKIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3Rsc19wdGhyZWFkLmggXAogaW5jbHVkZS9ncnBjL3N1cHBvcnQvdXNlZnVsLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hbGxvYy5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19zeW5jLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fd2luMzIuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaCBcCi1pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKLWluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbjMyLmggXAotaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmggXAogc3JjL2NvcmUvbGliL3Byb2ZpbGluZy90aW1lcnMuaCBcCiBzcmMvY29yZS9saWIvc3VwcG9ydC9iYWNrb2ZmLmggXAogc3JjL2NvcmUvbGliL3N1cHBvcnQvYmxvY2tfYW5ub3RhdGUuaCBcCmRpZmYgLS1naXQgYS90b29scy9mdXp6ZXIvYnVpbGRfYW5kX3J1bl9mdXp6ZXIuc2ggYi90b29scy9mdXp6ZXIvYnVpbGRfYW5kX3J1bl9mdXp6ZXIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmJlNjg4OAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2Z1enplci9idWlsZF9hbmRfcnVuX2Z1enplci5zaApAQCAtMCwwICsxLDM3IEBACisjIS9iaW4vYmFzaAorIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKK3NldCAtZXgKKworY2QgJChkaXJuYW1lICQwKS8uLi8uLgorbWFrZSBDT05GSUc9JGNvbmZpZyAkMSAtajMKK21rZGlyIC1wIGZ1enplcl9vdXRwdXQKKy4gdG9vbHMvZnV6emVyL3J1bm5lcnMvJDEuc2gKZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enplci9ydW5uZXJzL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5zaCBiL3Rvb2xzL2Z1enplci9ydW5uZXJzL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg5ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZnV6emVyL3J1bm5lcnMvaHBhY2tfcGFyc2VyX2Z1enplcl90ZXN0LnNoCkBAIC0wLDAgKzEsMzggQEAKKyMhL2Jpbi9iYXNoCisjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworZmxhZ3M9Ii1tYXhfdG90YWxfdGltZT0zNjAwIC1qb2JzPTIwIC13b3JrZXJzPTIwIgoraWYgWyAiJGNvbmZpZyIgPT0gImFzYW4tdHJhY2UtY21wIiBdCit0aGVuCisgIGZsYWdzPSItdXNlX3RyYWNlcz0xICRmbGFncyIKK2ZpCisKK2JpbnMvJGNvbmZpZy9ocGFja19wYXJzZXJfZnV6emVyX3Rlc3QgJGZsYWdzIGZ1enplcl9vdXRwdXQgdGVzdC9jb3JlL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyX2NvcnB1cwpkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6emVyL3J1bm5lcnMvaHR0cF9mdXp6ZXJfdGVzdC5zaCBiL3Rvb2xzL2Z1enplci9ydW5uZXJzL2h0dHBfZnV6emVyX3Rlc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3MTIwZAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2Z1enplci9ydW5uZXJzL2h0dHBfZnV6emVyX3Rlc3Quc2gKQEAgLTAsMCArMSwzOCBAQAorIyEvYmluL2Jhc2gKKyMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworCitmbGFncz0iLW1heF90b3RhbF90aW1lPTM2MDAgLWpvYnM9MjAgLXdvcmtlcnM9MjAiCitpZiBbICIkY29uZmlnIiA9PSAiYXNhbi10cmFjZS1jbXAiIF0KK3RoZW4KKyAgZmxhZ3M9Ii11c2VfdHJhY2VzPTEgJGZsYWdzIgorZmkKKworYmlucy8kY29uZmlnL2h0dHBfZnV6emVyX3Rlc3QgJGZsYWdzIGZ1enplcl9vdXRwdXQgdGVzdC9jb3JlL2h0dHAvY29ycHVzCmRpZmYgLS1naXQgYS90b29scy9mdXp6ZXIvcnVubmVycy9qc29uX2Z1enplcl90ZXN0LnNoIGIvdG9vbHMvZnV6emVyL3J1bm5lcnMvanNvbl9mdXp6ZXJfdGVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzEwYzc3Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZnV6emVyL3J1bm5lcnMvanNvbl9mdXp6ZXJfdGVzdC5zaApAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vYmFzaAorIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisKK2ZsYWdzPSItbWF4X3RvdGFsX3RpbWU9MzYwMCAtam9icz0yMCAtd29ya2Vycz0yMCIKK2lmIFsgIiRjb25maWciID09ICJhc2FuLXRyYWNlLWNtcCIgXQordGhlbgorICBmbGFncz0iLXVzZV90cmFjZXM9MSAkZmxhZ3MiCitmaQorCitiaW5zLyRjb25maWcvanNvbl9mdXp6ZXJfdGVzdCAkZmxhZ3MgZnV6emVyX291dHB1dCB0ZXN0L2NvcmUvanNvbi9jb3JwdXMKZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enplci9ydW5uZXJzL3VyaV9mdXp6ZXJfdGVzdC5zaCBiL3Rvb2xzL2Z1enplci9ydW5uZXJzL3VyaV9mdXp6ZXJfdGVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjJmYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZnV6emVyL3J1bm5lcnMvdXJpX2Z1enplcl90ZXN0LnNoCkBAIC0wLDAgKzEsMzggQEAKKyMhL2Jpbi9iYXNoCisjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKworZmxhZ3M9Ii1tYXhfdG90YWxfdGltZT0zNjAwIC1qb2JzPTIwIC13b3JrZXJzPTIwIgoraWYgWyAiJGNvbmZpZyIgPT0gImFzYW4tdHJhY2UtY21wIiBdCit0aGVuCisgIGZsYWdzPSItdXNlX3RyYWNlcz0xICRmbGFncyIKK2ZpCisKK2JpbnMvJGNvbmZpZy91cmlfZnV6emVyX3Rlc3QgJGZsYWdzIGZ1enplcl9vdXRwdXQgdGVzdC9jb3JlL2NsaWVudF9jb25maWcvdXJpX2NvcnB1cwpkaWZmIC0tZ2l0IGEvdG9vbHMvamVua2lucy9idWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaCBiL3Rvb2xzL2plbmtpbnMvYnVpbGRfaW50ZXJvcF9zdHJlc3NfaW1hZ2Uuc2gKaW5kZXggNTAxZGM1Yi4uYjVkYmNjNSAxMDA3NTUKLS0tIGEvdG9vbHMvamVua2lucy9idWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaAorKysgYi90b29scy9qZW5raW5zL2J1aWxkX2ludGVyb3Bfc3RyZXNzX2ltYWdlLnNoCkBAIC0zNCwxMCArMzQsMTIgQEAKIHNldCAteAogCiAjIFBhcmFtczoKLSMgIElOVEVST1BfSU1BR0UgLSBuYW1lIG9mIHRhZyBvZiB0aGUgZmluYWwgaW50ZXJvcCBpbWFnZQorIyAgSU5URVJPUF9JTUFHRSAtIE5hbWUgb2YgdGFnIG9mIHRoZSBmaW5hbCBpbnRlcm9wIGltYWdlCiAjICBJTlRFUk9QX0lNQUdFX1RBRyAtIE9wdGlvbmFsLiBJZiBzZXQsIHRoZSBjcmVhdGVkIGltYWdlIHdpbGwgYmUgdGFnZ2VkIHVzaW5nCiAjICAgIHRoZSBjb21tYW5kOiAnZG9ja2VyIHRhZyAkSU5URVJPUF9JTUFHRSAkSU5URVJPUF9JTUFHRV9SRVBPU0lUT1JZX1RBRycKLSMgIEJBU0VfTkFNRSAtIGJhc2UgbmFtZSB1c2VkIHRvIGxvY2F0ZSB0aGUgYmFzZSBEb2NrZXJmaWxlIGFuZCBidWlsZCBzY3JpcHQKKyMgIEJBU0VfTkFNRSAtIEJhc2UgbmFtZSB1c2VkIHRvIGxvY2F0ZSB0aGUgYmFzZSBEb2NrZXJmaWxlIGFuZCBidWlsZCBzY3JpcHQKKyMgIEJVSUxEX1RZUEUgLSBUaGUgJ0NPTkZJRycgdmFyaWFibGUgcGFzc2VkIHRvIHRoZSAnbWFrZScgY29tbWFuZCAoZXhhbXBsZToKKyMgIGFzYW4sIHRzYW4uIERlZmF1bHQgdmFsdWU6IG9wdCkuCiAjICBUVFlfRkxBRyAtIG9wdGlvbmFsIC10IGZsYWcgdG8gbWFrZSBkb2NrZXIgYWxsb2NhdGUgdHR5CiAjICBCVUlMRF9JTlRFUk9QX0RPQ0tFUl9FWFRSQV9BUkdTIC0gb3B0aW9uYWwgYXJncyB0byBiZSBwYXNzZWQgdG8gdGhlCiAjICAgIGRvY2tlciBydW4gY29tbWFuZApAQCAtNzEsNiArNzMsNyBAQAogKGRvY2tlciBydW4gXAogICAtZSBDQ0FDSEVfRElSPS90bXAvY2NhY2hlIFwKICAgLWUgVEhJU19JU19SRUFMTFlfTkVFREVEPSdzZWUgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzE0MjAzIGZvciB3aHkgZG9ja2VyIGlzIGF3ZnVsJyBcCisgIC1lIEJVSUxEX1RZUEU9JHtCVUlMRF9UWVBFOj1vcHR9IFwKICAgLWkgJFRUWV9GTEFHIFwKICAgJE1PVU5UX0FSR1MgXAogICAkQlVJTERfSU5URVJPUF9ET0NLRVJfRVhUUkFfQVJHUyBcCmRpZmYgLS1naXQgYS90b29scy9qZW5raW5zL2RvY2tlcl9ydW5fdGVzdHMuc2ggYi90b29scy9qZW5raW5zL2RvY2tlcl9ydW5fdGVzdHMuc2gKaW5kZXggOGQ2YzQyYy4uOTBhMmJkOCAxMDA3NTUKLS0tIGEvdG9vbHMvamVua2lucy9kb2NrZXJfcnVuX3Rlc3RzLnNoCisrKyBiL3Rvb2xzL2plbmtpbnMvZG9ja2VyX3J1bl90ZXN0cy5zaApAQCAtMzQsNyArMzQsNyBAQAogc2V0IC1lCiAKIGV4cG9ydCBDT05GSUc9JGNvbmZpZwotZXhwb3J0IEFTQU5fU1lNQk9MSVpFUl9QQVRIPS91c3IvYmluL2xsdm0tc3ltYm9saXplci0zLjUKK2V4cG9ydCBBU0FOX1NZTUJPTElaRVJfUEFUSD0vdXNyL2Jpbi9sbHZtLXN5bWJvbGl6ZXIKIAogIyBFbnN1cmUgdGhhdCBwcm9ncmFtcyBkZXBlbmRpbmcgb24gY3VycmVudC11c2VyLW93bmVyc2hpcCBvZiBjYWNoZSBkaXJlY3RvcmllcwogIyBhcmUgc2F0aXNmaWVkIChpdCdzIGJlaW5nIG1vdW50ZWQgZnJvbSBvdXRzaWRlIHRoZSBpbWFnZSkuCmRpZmYgLS1naXQgYS90b29scy9qZW5raW5zL3J1bl9mdXp6ZXIuc2ggYi90b29scy9qZW5raW5zL3J1bl9mdXp6ZXIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2Q2ZGE5OQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2plbmtpbnMvcnVuX2Z1enplci5zaApAQCAtMCwwICsxLDQzIEBACisjIS9iaW4vYmFzaAorIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIEJ1aWxkcyBhbmQgcnVucyBhIGZ1enplciAoc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBjb21tYW5kIGxpbmUgYXJndW1lbnQpCisKK3NldCAtZXgKKworZXhwb3J0IFJVTl9DT01NQU5EPSJ0b29scy9mdXp6ZXIvYnVpbGRfYW5kX3J1bl9mdXp6ZXIuc2ggJDEiCitleHBvcnQgRE9DS0VSX1JVTl9TQ1JJUFQ9dG9vbHMvamVua2lucy9kb2NrZXJfcnVuLnNoCitleHBvcnQgRE9DS0VSRklMRV9ESVI9dG9vbHMvZG9ja2VyZmlsZS90ZXN0L2Z1enplcgorZXhwb3J0IE9VVFBVVF9ESVI9ZnV6emVyX291dHB1dAorCit0b29scy9qZW5raW5zL2J1aWxkX2FuZF9ydW5fZG9ja2VyLnNoIFwKKyAgLWUgUlVOX0NPTU1BTkQ9IiRSVU5fQ09NTUFORCIgXAorICAtZSBPVVRQVVRfRElSPSIkT1VUUFVUX0RJUiIgXAorICAtZSBjb25maWc9IiRjb25maWciCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvY29uZmlncy5qc29uIGIvdG9vbHMvcnVuX3Rlc3RzL2NvbmZpZ3MuanNvbgppbmRleCBhODU4MTcwLi4zMjVlOWFhIDEwMDY0NAotLS0gYS90b29scy9ydW5fdGVzdHMvY29uZmlncy5qc29uCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9jb25maWdzLmpzb24KQEAgLTMsNiArMywxNCBAQAogICAgICJjb25maWciOiAib3B0IgogICB9LCAKICAgeworICAgICJjb25maWciOiAiYXNhbi10cmFjZS1jbXAiLCAKKyAgICAiZW52aXJvbiI6IHsKKyAgICAgICJBU0FOX09QVElPTlMiOiAiZGV0ZWN0X2xlYWtzPTE6Y29sb3I9YWx3YXlzIiwgCisgICAgICAiTFNBTl9PUFRJT05TIjogInN1cHByZXNzaW9ucz10b29scy9sc2FuX3N1cHByZXNzaW9ucy50eHQ6cmVwb3J0X29iamVjdHM9MSIKKyAgICB9LCAKKyAgICAidGltZW91dF9tdWx0aXBsaWVyIjogMworICB9LCAKKyAgewogICAgICJjb25maWciOiAiZGJnIgogICB9LCAKICAgewpkaWZmIC0tZ2l0IGEvdG9vbHMvcnVuX3Rlc3RzL3NvdXJjZXNfYW5kX2hlYWRlcnMuanNvbiBiL3Rvb2xzL3J1bl90ZXN0cy9zb3VyY2VzX2FuZF9oZWFkZXJzLmpzb24KaW5kZXggODY1M2NmNy4uZDdjOTgzOSAxMDA2NDQKLS0tIGEvdG9vbHMvcnVuX3Rlc3RzL3NvdXJjZXNfYW5kX2hlYWRlcnMuanNvbgorKysgYi90b29scy9ydW5fdGVzdHMvc291cmNlc19hbmRfaGVhZGVycy5qc29uCkBAIC04OTEsNiArODkxLDIyIEBACiAgICAgXSwgCiAgICAgImhlYWRlcnMiOiBbXSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJocGFja19wYXJzZXJfZnV6emVyX3Rlc3QiLCAKKyAgICAic3JjIjogWworICAgICAgInRlc3QvY29yZS90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlcl9mdXp6ZXJfdGVzdC5jIgorICAgIF0sIAorICAgICJ0aGlyZF9wYXJ0eSI6IGZhbHNlLCAKKyAgICAidHlwZSI6ICJ0YXJnZXQiCisgIH0sIAorICB7CisgICAgImRlcHMiOiBbCisgICAgICAiZ3ByIiwgCisgICAgICAiZ3ByX3Rlc3RfdXRpbCIsIAorICAgICAgImdycGMiLCAKKyAgICAgICJncnBjX3Rlc3RfdXRpbCIKKyAgICBdLCAKKyAgICAiaGVhZGVycyI6IFtdLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAogICAgICJuYW1lIjogImhwYWNrX3BhcnNlcl90ZXN0IiwgCiAgICAgInNyYyI6IFsKICAgICAgICJ0ZXN0L2NvcmUvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXJfdGVzdC5jIgpAQCAtOTIzLDYgKzkzOSwyMiBAQAogICAgIF0sIAogICAgICJoZWFkZXJzIjogW10sIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaHR0cF9mdXp6ZXJfdGVzdCIsIAorICAgICJzcmMiOiBbCisgICAgICAidGVzdC9jb3JlL2h0dHAvZnV6emVyLmMiCisgICAgXSwgCisgICAgInRoaXJkX3BhcnR5IjogZmFsc2UsIAorICAgICJ0eXBlIjogInRhcmdldCIKKyAgfSwgCisgIHsKKyAgICAiZGVwcyI6IFsKKyAgICAgICJncHIiLCAKKyAgICAgICJncHJfdGVzdF91dGlsIiwgCisgICAgICAiZ3JwYyIsIAorICAgICAgImdycGNfdGVzdF91dGlsIgorICAgIF0sIAorICAgICJoZWFkZXJzIjogW10sIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCiAgICAgIm5hbWUiOiAiaHR0cF9wYXJzZXJfdGVzdCIsIAogICAgICJzcmMiOiBbCiAgICAgICAidGVzdC9jb3JlL2h0dHAvcGFyc2VyX3Rlc3QuYyIKQEAgLTEwMTMsNiArMTA0NSwyMiBAQAogICB7CiAgICAgImRlcHMiOiBbCiAgICAgICAiZ3ByIiwgCisgICAgICAiZ3ByX3Rlc3RfdXRpbCIsIAorICAgICAgImdycGMiLCAKKyAgICAgICJncnBjX3Rlc3RfdXRpbCIKKyAgICBdLCAKKyAgICAiaGVhZGVycyI6IFtdLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImpzb25fZnV6emVyX3Rlc3QiLCAKKyAgICAic3JjIjogWworICAgICAgInRlc3QvY29yZS9qc29uL2Z1enplci5jIgorICAgIF0sIAorICAgICJ0aGlyZF9wYXJ0eSI6IGZhbHNlLCAKKyAgICAidHlwZSI6ICJ0YXJnZXQiCisgIH0sIAorICB7CisgICAgImRlcHMiOiBbCisgICAgICAiZ3ByIiwgCiAgICAgICAiZ3JwYyIKICAgICBdLCAKICAgICAiaGVhZGVycyI6IFtdLCAKQEAgLTE1NDQsNiArMTU5MiwyMiBAQAogICAgIF0sIAogICAgICJoZWFkZXJzIjogW10sIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAidXJpX2Z1enplcl90ZXN0IiwgCisgICAgInNyYyI6IFsKKyAgICAgICJ0ZXN0L2NvcmUvY2xpZW50X2NvbmZpZy91cmlfZnV6emVyX3Rlc3QuYyIKKyAgICBdLCAKKyAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCisgICAgInR5cGUiOiAidGFyZ2V0IgorICB9LCAKKyAgeworICAgICJkZXBzIjogWworICAgICAgImdwciIsIAorICAgICAgImdwcl90ZXN0X3V0aWwiLCAKKyAgICAgICJncnBjIiwgCisgICAgICAiZ3JwY190ZXN0X3V0aWwiCisgICAgXSwgCisgICAgImhlYWRlcnMiOiBbXSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKICAgICAibmFtZSI6ICJ1cmlfcGFyc2VyX3Rlc3QiLCAKICAgICAic3JjIjogWwogICAgICAgInRlc3QvY29yZS9jbGllbnRfY29uZmlnL3VyaV9wYXJzZXJfdGVzdC5jIgpAQCAtMzkyNCw2ICszOTg4LDI3IEBACiAgICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLCAKICAgICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwgCiAgICAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCIsIApAQCAtNDAyOSwyNyArNDExNCw2IEBACiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zdXJmYWNlX3RyYWNlLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5oIiwgCkBAIC00MDgyLDYgKzQxNDYsNTIgQEAKICAgICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCIsIAogICAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmgiLCAKICAgICAgICJpbmNsdWRlL2dycGMvc3RhdHVzLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9hbHBuLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYmluX2VuY29kZXIuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWUuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZGF0YS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2dvYXdheS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3JzdF9zdHJlYW0uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9zZXR0aW5ncy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfZW5jb2Rlci5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3BhcnNlci5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX3RhYmxlLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odHRwMl9lcnJvcnMuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9odWZmc3ltcy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ludGVybmFsLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvcGFyc2luZy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbGlzdHMuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC90aW1lb3V0X2VuY29kaW5nLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdmFyaW50LmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL2NlbnN1cy9jb250ZXh0LmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2dycGNfY29udGV4dC5jIiwgCkBAIC00Mjc3LDcgKzQzODcsNiBAQAogICAgICAgInNyYy9jb3JlL2xpYi9zZWN1cml0eS9zZWN1cml0eV9jb250ZXh0LmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc2VjdXJpdHkvc2VjdXJpdHlfY29udGV4dC5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9hdXRoX2ZpbHRlci5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3NlY3VyaXR5L3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfaW50ZXJmYWNlLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3RhdGlzdGljcy9jZW5zdXNfcnBjX3N0YXRzLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9hbGFybS5jIiwgCkBAIC00MjkzLDcgKzQ0MDIsNiBAQAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY29ubmVjdGl2aXR5LmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2NyZWF0ZS5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9pbml0LmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfcGluZy5jIiwgCkBAIC00MzA5LDU3ICs0NDE3LDEzIEBACiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyX2NodHRwMi5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc3VyZmFjZV90cmFjZS5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZlcnNpb24uYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvYnl0ZV9zdHJlYW0uaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2FscG4uaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2Jpbl9lbmNvZGVyLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfZ29hd2F5LmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9waW5nLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9yc3Rfc3RyZWFtLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9zZXR0aW5ncy5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfcGFyc2VyLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja190YWJsZS5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbmNvbWluZ19tZXRhZGF0YS5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ludGVybmFsLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9wYXJzaW5nLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdGF0dXNfY29udmVyc2lvbi5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9saXN0cy5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RyZWFtX21hcC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdGltZW91dF9lbmNvZGluZy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi92YXJpbnQuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3dyaXRpbmcuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyIsIApAQCAtNDU1Miw2ICs0NjE2LDI3IEBACiAgICAgICAiaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgiLCAKICAgICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oIiwgCiAgICAgICAiaW5jbHVkZS9ncnBjL3N0YXR1cy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9nb2F3YXkuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9waW5nLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19wYXJzZXIuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW5jb21pbmdfbWV0YWRhdGEuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbnRlcm5hbC5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0YXR1c19jb252ZXJzaW9uLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RyZWFtX21hcC5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvYWdncmVnYXRpb24uaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19wbHVnaW4uaCIsIApAQCAtNDY0OCwyNyArNDczMyw2IEBACiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zdXJmYWNlX3RyYWNlLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2RhdGEuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3dpbmRvd191cGRhdGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX2VuY29kZXIuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h0dHAyX2Vycm9ycy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHVmZnN5bXMuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YS5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5oIiwgCkBAIC00Njk1LDYgKzQ3NTksNTAgQEAKICAgICAgICJpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaCIsIAogICAgICAgImluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmgiLCAKICAgICAgICJpbmNsdWRlL2dycGMvc3RhdHVzLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvYWxwbi5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2FscG4uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9iaW5fZW5jb2Rlci5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2Jpbl9lbmNvZGVyLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX2RhdGEuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9kYXRhLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfZ29hd2F5LmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcGluZy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3BpbmcuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV9yc3Rfc3RyZWFtLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2ZyYW1lX3NldHRpbmdzLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfc2V0dGluZ3MuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvZnJhbWVfd2luZG93X3VwZGF0ZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2hwYWNrX2VuY29kZXIuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja19lbmNvZGVyLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfcGFyc2VyLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHBhY2tfdGFibGUuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9ocGFja190YWJsZS5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h0dHAyX2Vycm9ycy5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2h1ZmZzeW1zLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaHVmZnN5bXMuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9pbmNvbWluZ19tZXRhZGF0YS5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2luY29taW5nX21ldGFkYXRhLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvaW50ZXJuYWwuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9wYXJzaW5nLmMiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvc3RhdHVzX2NvbnZlcnNpb24uYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdGF0dXNfY29udmVyc2lvbi5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9saXN0cy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3N0cmVhbV9tYXAuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9zdHJlYW1fbWFwLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvdGltZW91dF9lbmNvZGluZy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3RpbWVvdXRfZW5jb2RpbmcuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC92YXJpbnQuaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvY2Vuc3VzL2NvbnRleHQuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9jZW5zdXMvZ3JwY19jb250ZXh0LmMiLCAKQEAgLTQ4ODEsNyArNDk4OSw2IEBACiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9jb25uZWN0aXZpdHkuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfaW5pdC5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMiLCAKQEAgLTQ4OTksNTQgKzUwMDYsMTEgQEAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlcl9jaHR0cDIuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3N1cmZhY2VfdHJhY2UuaCIsIAogICAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL3ZhbGlkYXRlX21ldGFkYXRhLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS92ZXJzaW9uLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9hbHBuLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9iaW5fZW5jb2Rlci5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvYmluX2VuY29kZXIuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9kYXRhLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV9nb2F3YXkuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX2dvYXdheS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcGluZy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfcnN0X3N0cmVhbS5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvZnJhbWVfc2V0dGluZ3MuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2ZyYW1lX3NldHRpbmdzLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9mcmFtZV93aW5kb3dfdXBkYXRlLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19lbmNvZGVyLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9ocGFja19wYXJzZXIuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3BhcnNlci5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaHBhY2tfdGFibGUuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2hwYWNrX3RhYmxlLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odHRwMl9lcnJvcnMuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2h1ZmZzeW1zLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9odWZmc3ltcy5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvaW5jb21pbmdfbWV0YWRhdGEuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL2luY29taW5nX21ldGFkYXRhLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9pbnRlcm5hbC5oIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvcGFyc2luZy5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvc3RhdHVzX2NvbnZlcnNpb24uYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0YXR1c19jb252ZXJzaW9uLmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi9zdHJlYW1fbGlzdHMuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3N0cmVhbV9tYXAuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3RpbWVvdXRfZW5jb2RpbmcuaCIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyL3ZhcmludC5jIiwgCi0gICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jaHR0cDIvdmFyaW50LmgiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMi93cml0aW5nLmMiLCAKLSAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYyIsIAotICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5oIiwgCiAgICAgICAic3JjL2NvcmUvbGliL3RyYW5zcG9ydC9jb25uZWN0aXZpdHlfc3RhdGUuYyIsIAogICAgICAgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmgiLCAKICAgICAgICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmMiLCAKQEAgLTUxMDQsNyArNTE2OCw2IEBACiAgICAgICAic3JjL2NwcC9jbGllbnQvY3JlYXRlX2NoYW5uZWxfaW50ZXJuYWwuaCIsIAogICAgICAgInNyYy9jcHAvY2xpZW50L3NlY3VyZV9jcmVkZW50aWFscy5oIiwgCiAgICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmgiLCAKLSAgICAgICJzcmMvY3BwL2NvbW1vbi9jb3JlX2NvZGVnZW4uaCIsIAogICAgICAgInNyYy9jcHAvY29tbW9uL2NyZWF0ZV9hdXRoX2NvbnRleHQuaCIsIAogICAgICAgInNyYy9jcHAvY29tbW9uL3NlY3VyZV9hdXRoX2NvbnRleHQuaCIsIAogICAgICAgInNyYy9jcHAvc2VydmVyL2R5bmFtaWNfdGhyZWFkX3Bvb2wuaCIsIApAQCAtNTIwNSw3ICs1MjY4LDYgQEAKICAgICAgICJzcmMvY3BwL2NvbW1vbi9jb21wbGV0aW9uX3F1ZXVlLmNjIiwgCiAgICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmNjIiwgCiAgICAgICAic3JjL2NwcC9jb21tb24vY29yZV9jb2RlZ2VuLmgiLCAKLSAgICAgICJzcmMvY3BwL2NvbW1vbi9jb3JlX2NvZGVnZW4uaCIsIAogICAgICAgInNyYy9jcHAvY29tbW9uL2NyZWF0ZV9hdXRoX2NvbnRleHQuaCIsIAogICAgICAgInNyYy9jcHAvY29tbW9uL3JwY19tZXRob2QuY2MiLCAKICAgICAgICJzcmMvY3BwL2NvbW1vbi9zZWN1cmVfYXV0aF9jb250ZXh0LmNjIiwgCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvUkVBRE1FLm1kIGIvdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L1JFQURNRS5tZAppbmRleCAxYTQ4ZTkwLi44NGY5NzE5IDEwMDY0NAotLS0gYS90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvUkVBRE1FLm1kCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9SRUFETUUubWQKQEAgLTY3LDggKzY3LDEwIEBACiAgIC0gYDxncnBjX3Jvb3RfZGlyPiQgdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L3J1bl9zdHJlc3NfdGVzdHNfb25fZ2tlLnB5IC0taGVscGANCiANCiA+ICoqRXhhbXBsZSoqDQotPiBgJCB0b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvcnVuX3N0cmVzc190ZXN0c19vbl9na2UucHkgLS1wcm9qZWN0X2lkPXNyZWUtZ2NlIC0tdGVzdF9kdXJhdGlvbl9zZWNzPTE4MCAtLW51bV9jbGllbnRzPTVgDQorPiBgYGBiYXNoDQorPiAkICMgQ2hhbmdlIHRvIHRoZSBncnBjIHJvb3QgZGlyZWN0b3J5DQorPiAkIGNkICRHUlBDX1JPT1QNCis+ICQgdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L3J1bl9vbl9na2UucHkgLS1wcm9qZWN0X2lkPXNyZWUtZ2NlIC0tY29uZmlnX2ZpbGU9dG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L2NvbmZpZ3Mvb3B0Lmpzb24NCis+IGBgYA0KIA0KLT4gTGF1bmNoZXMgdGhlIDUgaW5zdGFuY2VzIG9mIHN0cmVzcyB0ZXN0IGNsaWVudHMsIDEgaW5zdGFuY2Ugb2Ygc3RyZXNzIHRlc3Qgc2VydmVyIGFuZCBydW5zIHRoZSB0ZXN0IGZvciAxODAgc2Vjb25kcy4gVGhlIHRlc3Qgd291bGQgYmUgcnVuIG9uIHRoZSBkZWZhdWx0IGNvbnRhaW5lciBjbHVzdGVyICh0aGF0IHlvdSBoYXZlIHNldCBpbiBgZ2Nsb3VkYCkgaW4gdGhlIHByb2plY3QgYHNyZWUtZ2NlYC4NCi0NCi0+IE5vdGU6IHdlIGN1cnJlbnRseSBkbyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBsYXVuY2ggbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzZXJ2ZXIuIFRoaXMgY2FuIGJlIGFkZGVkIHZlcnkgZWFzaWx5IGluIGZ1dHVyZQ0KKz4gVGhlIGFib3ZlIHJ1bnMgdGhlIHN0cmVzcyB0ZXN0IG9uIEdLRSB1bmRlciB0aGUgcHJvamVjdCBgc3JlZS1nY2VgIGluIHRoZSBkZWZhdWx0IGNsdXN0ZXIgKHRoYXQgeW91IHNldCBieSBgZ2Nsb3VkYCBjb21tYW5kIGVhcmxpZXIpLiBUaGUgdGVzdCBzZXR0aW5ncyAobGlrZSBudW1iZXIgb2YgY2xpZW50IGluc3RhbmNlcywgc2VydmVycywgdGhlIHBhcm1ldGVycyB0byBwYXNzLCB0ZXN0IGNhc2VzIGV0YykgYXJlIGFsbCBsb2FkZWQgZnJvbSB0aGUgY29uZmlnIGZpbGUgYCRHUlBDX1JPT1QvdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L29wdC5qc29uYA0KZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9jb25maWdzL29wdC10c2FuLWFzYW4uanNvbiBiL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9jb25maWdzL29wdC10c2FuLWFzYW4uanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGMyZDNmCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L2NvbmZpZ3Mvb3B0LXRzYW4tYXNhbi5qc29uCkBAIC0wLDAgKzEsMTM1IEBACit7CisgICJkb2NrZXJJbWFnZXMiOiB7CisgICAgImdycGNfc3RyZXNzX2N4eF9vcHQiIDogeworICAgICAgImJ1aWxkU2NyaXB0IjogInRvb2xzL2plbmtpbnMvYnVpbGRfaW50ZXJvcF9zdHJlc3NfaW1hZ2Uuc2giLAorICAgICAgImRvY2tlckZpbGVEaXIiOiAiZ3JwY19pbnRlcm9wX3N0cmVzc19jeHgiLAorICAgICAgImJ1aWxkVHlwZSI6ICJvcHQiCisgICAgfSwKKyAgICAiZ3JwY19zdHJlc3NfY3h4X3RzYW4iOiB7CisgICAgICAiYnVpbGRTY3JpcHQiOiAidG9vbHMvamVua2lucy9idWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaCIsCisgICAgICAiZG9ja2VyRmlsZURpciI6ICJncnBjX2ludGVyb3Bfc3RyZXNzX2N4eCIsCisgICAgICAiYnVpbGRUeXBlIjogInRzYW4iCisgICAgfSwKKyAgICAiZ3JwY19zdHJlc3NfY3h4X2FzYW4iOiB7CisgICAgICAiYnVpbGRTY3JpcHQiOiAidG9vbHMvamVua2lucy9idWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaCIsCisgICAgICAiZG9ja2VyRmlsZURpciI6ICJncnBjX2ludGVyb3Bfc3RyZXNzX2N4eCIsCisgICAgICAiYnVpbGRUeXBlIjogImFzYW4iCisgICAgfQorICB9LAorCisgICJjbGllbnRUZW1wbGF0ZXMiOiB7CisgICAgImJhc2VUZW1wbGF0ZXMiOiB7CisgICAgICAiZGVmYXVsdCI6IHsKKyAgICAgICAgIndyYXBwZXJTY3JpcHRQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvdG9vbHMvZ2NwL3N0cmVzc190ZXN0L3J1bl9jbGllbnQucHkiLAorICAgICAgICAicG9sbEludGVydmFsU2VjcyI6IDYwLAorICAgICAgICAiY2xpZW50QXJncyI6IHsKKyAgICAgICAgICAibnVtX2NoYW5uZWxzX3Blcl9zZXJ2ZXIiOjUsCisgICAgICAgICAgIm51bV9zdHVic19wZXJfY2hhbm5lbCI6MTAsCisgICAgICAgICAgInRlc3RfY2FzZXMiOiAiZW1wdHlfdW5hcnk6MSxsYXJnZV91bmFyeToxLGNsaWVudF9zdHJlYW1pbmc6MSxzZXJ2ZXJfc3RyZWFtaW5nOjEsZW1wdHlfc3RyZWFtOjEiLAorICAgICAgICAgICJtZXRyaWNzX3BvcnQiOiA4MDgxLAorICAgICAgICAgICJtZXRyaWNzX2NvbGxlY3Rpb25faW50ZXJ2YWxfc2VjcyI6NjAKKyAgICAgICAgfSwKKyAgICAgICAgIm1ldHJpY3NQb3J0IjogODA4MSwKKyAgICAgICAgIm1ldHJpY3NBcmdzIjogeworICAgICAgICAgICJtZXRyaWNzX3NlcnZlcl9hZGRyZXNzIjogImxvY2FsaG9zdDo4MDgxIiwKKyAgICAgICAgICAidG90YWxfb25seSI6ICJ0cnVlIgorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAidGVtcGxhdGVzIjogeworICAgICAgImN4eF9jbGllbnRfb3B0IjogeworICAgICAgICAiYmFzZVRlbXBsYXRlIjogImRlZmF1bHQiLAorICAgICAgICAiY2xpZW50SW1hZ2VQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvYmlucy9vcHQvc3RyZXNzX3Rlc3QiLAorICAgICAgICAibWV0cmljc0NsaWVudEltYWdlUGF0aCI6ICIvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvb3B0L21ldHJpY3NfY2xpZW50IgorICAgICAgfSwKKyAgICAgICJjeHhfY2xpZW50X3RzYW4iOiB7CisgICAgICAgICJiYXNlVGVtcGxhdGUiOiAiZGVmYXVsdCIsCisgICAgICAgICJjbGllbnRJbWFnZVBhdGgiOiAiL3Zhci9sb2NhbC9naXQvZ3JwYy9iaW5zL3RzYW4vc3RyZXNzX3Rlc3QiLAorICAgICAgICAibWV0cmljc0NsaWVudEltYWdlUGF0aCI6ICIvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvdHNhbi9tZXRyaWNzX2NsaWVudCIKKyAgICAgIH0sCisgICAgImN4eF9jbGllbnRfYXNhbiI6IHsKKyAgICAgICAgImJhc2VUZW1wbGF0ZSI6ICJkZWZhdWx0IiwKKyAgICAgICAgImNsaWVudEltYWdlUGF0aCI6ICIvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvYXNhbi9zdHJlc3NfdGVzdCIsCisgICAgICAgICJtZXRyaWNzQ2xpZW50SW1hZ2VQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvYmlucy9hc2FuL21ldHJpY3NfY2xpZW50IgorICAgICAgfQorICAgIH0KKyAgfSwKKworICAic2VydmVyVGVtcGxhdGVzIjogeworICAgICJiYXNlVGVtcGxhdGVzIjp7CisgICAgICAiZGVmYXVsdCI6IHsKKyAgICAgICAgIndyYXBwZXJTY3JpcHRQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvdG9vbHMvZ2NwL3N0cmVzc190ZXN0L3J1bl9zZXJ2ZXIucHkiLAorICAgICAgICAic2VydmVyUG9ydCI6IDgwODAsCisgICAgICAgICJzZXJ2ZXJBcmdzIjogeworICAgICAgICAgICJwb3J0IjogODA4MAorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAidGVtcGxhdGVzIjogeworICAgICAgImN4eF9zZXJ2ZXJfb3B0IjogeworICAgICAgICAiYmFzZVRlbXBsYXRlIjogImRlZmF1bHQiLAorICAgICAgICAic2VydmVySW1hZ2VQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvYmlucy9vcHQvaW50ZXJvcF9zZXJ2ZXIiCisgICAgICB9LAorICAgICAgImN4eF9zZXJ2ZXJfdHNhbiI6IHsKKyAgICAgICAgImJhc2VUZW1wbGF0ZSI6ICJkZWZhdWx0IiwKKyAgICAgICAgInNlcnZlckltYWdlUGF0aCI6ICIvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvdHNhbi9pbnRlcm9wX3NlcnZlciIKKyAgICAgIH0sCisgICAgImN4eF9zZXJ2ZXJfYXNhbiI6IHsKKyAgICAgICAgImJhc2VUZW1wbGF0ZSI6ICJkZWZhdWx0IiwKKyAgICAgICAgInNlcnZlckltYWdlUGF0aCI6ICIvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvYXNhbi9pbnRlcm9wX3NlcnZlciIKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgInRlc3RNYXRyaXgiOiB7CisgICAgInNlcnZlclBvZFNwZWNzIjogeworICAgICAgInN0cmVzcy1zZXJ2ZXItb3B0IjogeworICAgICAgICAic2VydmVyVGVtcGxhdGUiOiAiY3h4X3NlcnZlcl9vcHQiLAorICAgICAgICAiZG9ja2VySW1hZ2UiOiAiZ3JwY19zdHJlc3NfY3h4X29wdCIsCisgICAgICAgICJudW1JbnN0YW5jZXMiOiAxCisgICAgICB9LAorICAgICAgInN0cmVzcy1zZXJ2ZXItdHNhbiI6IHsKKyAgICAgICAgInNlcnZlclRlbXBsYXRlIjogImN4eF9zZXJ2ZXJfdHNhbiIsCisgICAgICAgICJkb2NrZXJJbWFnZSI6ICJncnBjX3N0cmVzc19jeHhfdHNhbiIsCisgICAgICAgICJudW1JbnN0YW5jZXMiOiAxCisgICAgICB9LAorICAgICAgInN0cmVzcy1zZXJ2ZXItYXNhbiI6IHsKKyAgICAgICAgInNlcnZlclRlbXBsYXRlIjogImN4eF9zZXJ2ZXJfYXNhbiIsCisgICAgICAgICJkb2NrZXJJbWFnZSI6ICJncnBjX3N0cmVzc19jeHhfYXNhbiIsCisgICAgICAgICJudW1JbnN0YW5jZXMiOiAxCisgICAgICB9CisgICB9LAorCisgICAgImNsaWVudFBvZFNwZWNzIjogeworICAgICAgInN0cmVzcy1jbGllbnQtb3B0IjogeworICAgICAgICAiY2xpZW50VGVtcGxhdGUiOiAiY3h4X2NsaWVudF9vcHQiLAorICAgICAgICAiZG9ja2VySW1hZ2UiOiAiZ3JwY19zdHJlc3NfY3h4X29wdCIsCisgICAgICAgICJudW1JbnN0YW5jZXMiOiAzLAorICAgICAgICAic2VydmVyUG9kU3BlYyI6ICJzdHJlc3Mtc2VydmVyLW9wdCIKKyAgICAgIH0sCisgICAgICAic3RyZXNzLWNsaWVudC10c2FuIjogeworICAgICAgICAiY2xpZW50VGVtcGxhdGUiOiAiY3h4X2NsaWVudF90c2FuIiwKKyAgICAgICAgImRvY2tlckltYWdlIjogImdycGNfc3RyZXNzX2N4eF90c2FuIiwKKyAgICAgICAgIm51bUluc3RhbmNlcyI6IDMsCisgICAgICAgICJzZXJ2ZXJQb2RTcGVjIjogInN0cmVzcy1zZXJ2ZXItdHNhbiIKKyAgICAgIH0sCisgICAgICAic3RyZXNzLWNsaWVudC1hc2FuIjogeworICAgICAgICAiY2xpZW50VGVtcGxhdGUiOiAiY3h4X2NsaWVudF9hc2FuIiwKKyAgICAgICAgImRvY2tlckltYWdlIjogImdycGNfc3RyZXNzX2N4eF9hc2FuIiwKKyAgICAgICAgIm51bUluc3RhbmNlcyI6IDMsCisgICAgICAgICJzZXJ2ZXJQb2RTcGVjIjogInN0cmVzcy1zZXJ2ZXItYXNhbiIKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgImdsb2JhbFNldHRpbmdzIjogeworICAgICJidWlsZERvY2tlckltYWdlcyI6IHRydWUsCisgICAgInBvbGxJbnRlcnZhbFNlY3MiOiA2MCwKKyAgICAidGVzdER1cmF0aW9uU2VjcyI6IDcyMDAsCisgICAgImt1YmVybmV0ZXNQcm94eVBvcnQiOiA4MDAxLAorICAgICJkYXRhc2V0SWROYW1lUHJlZml4IjogInN0cmVzc190ZXN0X29wdF90c2FuIiwKKyAgICAic3VtbWFyeVRhYmxlSWQiOiAic3VtbWFyeSIsCisgICAgInFwc1RhYmxlSWQiOiAicXBzIiwKKyAgICAicG9kV2FybXVwU2VjcyI6IDYwCisgIH0KK30KZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9jb25maWdzL29wdC5qc29uIGIvdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L2NvbmZpZ3Mvb3B0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjMDI0MAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9jb25maWdzL29wdC5qc29uCkBAIC0wLDAgKzEsODYgQEAKK3sKKyAgImRvY2tlckltYWdlcyI6IHsKKyAgICAiZ3JwY19zdHJlc3NfY3h4X29wdCIgOiB7CisgICAgICAiYnVpbGRTY3JpcHQiOiAidG9vbHMvamVua2lucy9idWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaCIsCisgICAgICAiZG9ja2VyRmlsZURpciI6ICJncnBjX2ludGVyb3Bfc3RyZXNzX2N4eCIsCisgICAgICAiYnVpbGRUeXBlIjogIm9wdCIKKyAgICB9CisgIH0sCisKKyAgImNsaWVudFRlbXBsYXRlcyI6IHsKKyAgICAiYmFzZVRlbXBsYXRlcyI6IHsKKyAgICAgICJkZWZhdWx0IjogeworICAgICAgICAid3JhcHBlclNjcmlwdFBhdGgiOiAiL3Zhci9sb2NhbC9naXQvZ3JwYy90b29scy9nY3Avc3RyZXNzX3Rlc3QvcnVuX2NsaWVudC5weSIsCisgICAgICAgICJwb2xsSW50ZXJ2YWxTZWNzIjogNjAsCisgICAgICAgICJjbGllbnRBcmdzIjogeworICAgICAgICAgICJudW1fY2hhbm5lbHNfcGVyX3NlcnZlciI6NSwKKyAgICAgICAgICAibnVtX3N0dWJzX3Blcl9jaGFubmVsIjoxMCwKKyAgICAgICAgICAidGVzdF9jYXNlcyI6ICJlbXB0eV91bmFyeToxLGxhcmdlX3VuYXJ5OjEsY2xpZW50X3N0cmVhbWluZzoxLHNlcnZlcl9zdHJlYW1pbmc6MSxlbXB0eV9zdHJlYW06MSIsCisgICAgICAgICAgIm1ldHJpY3NfcG9ydCI6IDgwODEsCisgICAgICAgICAgIm1ldHJpY3NfY29sbGVjdGlvbl9pbnRlcnZhbF9zZWNzIjo2MAorICAgICAgICB9LAorICAgICAgICAibWV0cmljc1BvcnQiOiA4MDgxLAorICAgICAgICAibWV0cmljc0FyZ3MiOiB7CisgICAgICAgICAgIm1ldHJpY3Nfc2VydmVyX2FkZHJlc3MiOiAibG9jYWxob3N0OjgwODEiLAorICAgICAgICAgICJ0b3RhbF9vbmx5IjogInRydWUiCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ0ZW1wbGF0ZXMiOiB7CisgICAgICAiY3h4X2NsaWVudF9vcHQiOiB7CisgICAgICAgICJiYXNlVGVtcGxhdGUiOiAiZGVmYXVsdCIsCisgICAgICAgICJjbGllbnRJbWFnZVBhdGgiOiAiL3Zhci9sb2NhbC9naXQvZ3JwYy9iaW5zL29wdC9zdHJlc3NfdGVzdCIsCisgICAgICAgICJtZXRyaWNzQ2xpZW50SW1hZ2VQYXRoIjogIi92YXIvbG9jYWwvZ2l0L2dycGMvYmlucy9vcHQvbWV0cmljc19jbGllbnQiCisgICAgICB9CisgICAgfQorICB9LAorCisgICJzZXJ2ZXJUZW1wbGF0ZXMiOiB7CisgICAgImJhc2VUZW1wbGF0ZXMiOnsKKyAgICAgICJkZWZhdWx0IjogeworICAgICAgICAid3JhcHBlclNjcmlwdFBhdGgiOiAiL3Zhci9sb2NhbC9naXQvZ3JwYy90b29scy9nY3Avc3RyZXNzX3Rlc3QvcnVuX3NlcnZlci5weSIsCisgICAgICAgICJzZXJ2ZXJQb3J0IjogODA4MCwKKyAgICAgICAgInNlcnZlckFyZ3MiOiB7CisgICAgICAgICAgInBvcnQiOiA4MDgwCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJ0ZW1wbGF0ZXMiOiB7CisgICAgICAiY3h4X3NlcnZlcl9vcHQiOiB7CisgICAgICAgICJiYXNlVGVtcGxhdGUiOiAiZGVmYXVsdCIsCisgICAgICAgICJzZXJ2ZXJJbWFnZVBhdGgiOiAiL3Zhci9sb2NhbC9naXQvZ3JwYy9iaW5zL29wdC9pbnRlcm9wX3NlcnZlciIKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAgInRlc3RNYXRyaXgiOiB7CisgICAgInNlcnZlclBvZFNwZWNzIjogeworICAgICAgInN0cmVzcy1zZXJ2ZXItb3B0IjogeworICAgICAgICAic2VydmVyVGVtcGxhdGUiOiAiY3h4X3NlcnZlcl9vcHQiLAorICAgICAgICAiZG9ja2VySW1hZ2UiOiAiZ3JwY19zdHJlc3NfY3h4X29wdCIsCisgICAgICAgICJudW1JbnN0YW5jZXMiOiAxCisgICAgICB9CisgICAgfSwKKworICAgICJjbGllbnRQb2RTcGVjcyI6IHsKKyAgICAgICJzdHJlc3MtY2xpZW50LW9wdCI6IHsKKyAgICAgICAgImNsaWVudFRlbXBsYXRlIjogImN4eF9jbGllbnRfb3B0IiwKKyAgICAgICAgImRvY2tlckltYWdlIjogImdycGNfc3RyZXNzX2N4eF9vcHQiLAorICAgICAgICAibnVtSW5zdGFuY2VzIjogMTAsCisgICAgICAgICJzZXJ2ZXJQb2RTcGVjIjogInN0cmVzcy1zZXJ2ZXItb3B0IgorICAgICAgfQorICAgIH0KKyAgfSwKKworICAiZ2xvYmFsU2V0dGluZ3MiOiB7CisgICAgImJ1aWxkRG9ja2VySW1hZ2VzIjogdHJ1ZSwKKyAgICAicG9sbEludGVydmFsU2VjcyI6IDEwLAorICAgICJ0ZXN0RHVyYXRpb25TZWNzIjogMTIwLAorICAgICJrdWJlcm5ldGVzUHJveHlQb3J0IjogODAwMSwKKyAgICAiZGF0YXNldElkTmFtZVByZWZpeCI6ICJzdHJlc3NfdGVzdF9vcHQiLAorICAgICJzdW1tYXJ5VGFibGVJZCI6ICJzdW1tYXJ5IiwKKyAgICAicXBzVGFibGVJZCI6ICJxcHMiLAorICAgICJwb2RXYXJtdXBTZWNzIjogNjAKKyAgfQorfQorCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvcnVuX29uX2drZS5weSBiL3Rvb2xzL3J1bl90ZXN0cy9zdHJlc3NfdGVzdC9ydW5fb25fZ2tlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNhODFjMWEKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvcnVuX29uX2drZS5weQpAQCAtMCwwICsxLDYzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMi43CisjIENvcHlyaWdodCAyMDE1LTIwMTYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCitzdHJlc3NfdGVzdF91dGlsc19kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKAorICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLi8uLi9nY3Avc3RyZXNzX3Rlc3QnKSkKK3N5cy5wYXRoLmFwcGVuZChzdHJlc3NfdGVzdF91dGlsc19kaXIpCitmcm9tIHN0cmVzc190ZXN0X3V0aWxzIGltcG9ydCBCaWdRdWVyeUhlbHBlcgorCitrdWJlcm5ldGVzX2FwaV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKAorICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLi8uLi9nY3AvdXRpbHMnKSkKK3N5cy5wYXRoLmFwcGVuZChrdWJlcm5ldGVzX2FwaV9kaXIpCisKK2ltcG9ydCBrdWJlcm5ldGVzX2FwaQorCisKK2NsYXNzIEdsb2JhbFNldHRpbmdzOgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBnY3BfcHJvamVjdF9pZCwgYnVpbGRfZG9ja2VyX2ltYWdlcywKKyAgICAgICAgICAgICAgIHRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzLCB0ZXN0X2R1cmF0aW9uX3NlY3MsCisgICAgICAgICAgICAgICBrdWJlcm5ldGVzX3Byb3h5X3BvcnQsIGRhdGFzZXRfaWRfcHJlZml4LCBzdW1tYXJ5X3RhYmxlX2lkLAorICAgICAgICAgICAgICAgcXBzX3RhYmxlX2lkLCBwb2Rfd2FybXVwX3NlY3MpOgorICAgIHNlbGYuZ2NwX3Byb2plY3RfaWQgPSBnY3BfcHJvamVjdF9pZAorICAgIHNlbGYuYnVpbGRfZG9ja2VyX2ltYWdlcyA9IGJ1aWxkX2RvY2tlcl9pbWFnZXMKKyAgICBzZWxmLnRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzID0gdGVzdF9wb2xsX2ludGVydmFsX3NlY3MKKyAgICBzZWxmLnRlc3RfZHVyYXRpb25fc2VjcyA9IHRlc3RfZHVyYXRpb25fc2VjcworICAgIHNlbGYua3ViZXJuZXRlc19wcm94eV9wb3J0ID0ga3ViZXJuZXRlc19wcm94eV9wb3J0CisgICAgc2VsZi5kYXRhc2V0X2lkX3ByZWZpeCA9IGRhdGFzZXRfaWRfcHJlZml4CisgICAgc2VsZi5zdW1tYXJ5X3RhYmxlX2lkID0gc3VtbWFyeV90YWJsZV9pZAorICAgIHNlbGYucXBzX3RhYmxlX2lkID0gcXBzX3RhYmxlX2lkCisgICAgc2VsZi5wb2Rfd2FybXVwX3NlY3MgPSBwb2Rfd2FybXVwX3NlY3MKKworCitjbGFzcyBDbGllbnRUZW1wbGF0ZToKKyAgIiIiIENvbnRhaW5zIGFsbCB0aGUgY29tbW9uIHNldHRpbmdzIHRoYXQgYXJlIHVzZWQgYnkgYSBzdHJlc3MgY2xpZW50ICIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBjbGllbnRfaW1hZ2VfcGF0aCwgbWV0cmljc19jbGllbnRfaW1hZ2VfcGF0aCwKKyAgICAgICAgICAgICAgIG1ldHJpY3NfcG9ydCwgd3JhcHBlcl9zY3JpcHRfcGF0aCwgcG9sbF9pbnRlcnZhbF9zZWNzLAorICAgICAgICAgICAgICAgY2xpZW50X2FyZ3NfZGljdCwgbWV0cmljc19hcmdzX2RpY3QpOgorICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICBzZWxmLmNsaWVudF9pbWFnZV9wYXRoID0gY2xpZW50X2ltYWdlX3BhdGgKKyAgICBzZWxmLm1ldHJpY3NfY2xpZW50X2ltYWdlX3BhdGggPSBtZXRyaWNzX2NsaWVudF9pbWFnZV9wYXRoCisgICAgc2VsZi5tZXRyaWNzX3BvcnQgPSBtZXRyaWNzX3BvcnQKKyAgICBzZWxmLndyYXBwZXJfc2NyaXB0X3BhdGggPSB3cmFwcGVyX3NjcmlwdF9wYXRoCisgICAgc2VsZi5wb2xsX2ludGVydmFsX3NlY3MgPSBwb2xsX2ludGVydmFsX3NlY3MKKyAgICBzZWxmLmNsaWVudF9hcmdzX2RpY3QgPSBjbGllbnRfYXJnc19kaWN0CisgICAgc2VsZi5tZXRyaWNzX2FyZ3NfZGljdCA9IG1ldHJpY3NfYXJnc19kaWN0CisKKworY2xhc3MgU2VydmVyVGVtcGxhdGU6CisgICIiIiBDb250YWlucyBhbGwgdGhlIGNvbW1vbiBzZXR0aW5ncyB1c2VkIGJ5IGEgc3RyZXNzIHNlcnZlciAiIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc2VydmVyX2ltYWdlX3BhdGgsIHdyYXBwZXJfc2NyaXB0X3BhdGgsIHNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgc2VydmVyX2FyZ3NfZGljdCk6CisgICAgc2VsZi5uYW1lID0gbmFtZQorICAgIHNlbGYuc2VydmVyX2ltYWdlX3BhdGggPSBzZXJ2ZXJfaW1hZ2VfcGF0aAorICAgIHNlbGYud3JhcHBlcl9zY3JpcHRfcGF0aCA9IHdyYXBwZXJfc2NyaXB0X3BhdGgKKyAgICBzZWxmLnNlcnZlcl9wb3J0ID0gc2VydmVyX3BvcnQKKyAgICBzZWxmLnNlcnZlcl9hcmdzX2RpY3QgPSBzZXJ2ZXJfYXJnc19kaWN0CisKKworY2xhc3MgRG9ja2VySW1hZ2U6CisgICIiIiBSZXByZXNlbnRzIHByb3BlcnRpZXMgb2YgYSBEb2NrZXIgaW1hZ2UuIFByb3ZpZGVzIG1ldGhvZHMgdG8gYnVpbGQgdGhlCisgIGltYWdlIGFuZCBwdXNoIGl0IHRvIEdLRSByZWdpc3RyeQorICAiIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgZ2NwX3Byb2plY3RfaWQsIGltYWdlX25hbWUsIGJ1aWxkX3NjcmlwdF9wYXRoLAorICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9kaXIsIGJ1aWxkX3R5cGUpOgorICAgICIiIkFyZ3M6CisKKyAgICAgIGltYWdlX25hbWU6IFRoZSBkb2NrZXIgaW1hZ2UgbmFtZQorICAgICAgdGFnX25hbWU6IFRoZSBhZGRpdGlvbmFsIHRhZyBuYW1lLiBUaGlzIGlzIHRoZSBuYW1lIHVzZWQgd2hlbiBwdXNoaW5nIHRoZQorICAgICAgICBkb2NrZXIgaW1hZ2UgdG8gR0tFIHJlZ2lzdHJ5CisgICAgICBidWlsZF9zY3JpcHRfcGF0aDogVGhlIHBhdGggdG8gdGhlIGJ1aWxkIHNjcmlwdCB0aGF0IGJ1aWxkcyB0aGlzIGRvY2tlcgorICAgICAgaW1hZ2UKKyAgICAgIGRvY2tlcmZpbGVfZGlyOiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHVuZGVyCisgICAgICAnPGdycGNfcm9vdD4vdG9vbHMvZG9ja2VyZmlsZScgdGhhdCBjb250YWlucyB0aGUgZG9ja2VyZmlsZQorICAgICIiIgorICAgIHNlbGYuaW1hZ2VfbmFtZSA9IGltYWdlX25hbWUKKyAgICBzZWxmLmdjcF9wcm9qZWN0X2lkID0gZ2NwX3Byb2plY3RfaWQKKyAgICBzZWxmLmJ1aWxkX3NjcmlwdF9wYXRoID0gYnVpbGRfc2NyaXB0X3BhdGgKKyAgICBzZWxmLmRvY2tlcmZpbGVfZGlyID0gZG9ja2VyZmlsZV9kaXIKKyAgICBzZWxmLmJ1aWxkX3R5cGUgPSBidWlsZF90eXBlCisgICAgc2VsZi50YWdfbmFtZSA9IHNlbGYuX21ha2VfdGFnX25hbWUoZ2NwX3Byb2plY3RfaWQsIGltYWdlX25hbWUpCisKKyAgZGVmIF9tYWtlX3RhZ19uYW1lKHNlbGYsIHByb2plY3RfaWQsIGltYWdlX25hbWUpOgorICAgIHJldHVybiAnZ2NyLmlvLyVzLyVzJyAlIChwcm9qZWN0X2lkLCBpbWFnZV9uYW1lKQorCisgIGRlZiBidWlsZF9pbWFnZShzZWxmKToKKyAgICBwcmludCAnQnVpbGRpbmcgZG9ja2VyIGltYWdlOiAlcyAodGFnOiAlcyknICUgKHNlbGYuaW1hZ2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFnX25hbWUpCisgICAgb3MuZW52aXJvblsnSU5URVJPUF9JTUFHRSddID0gc2VsZi5pbWFnZV9uYW1lCisgICAgb3MuZW52aXJvblsnSU5URVJPUF9JTUFHRV9SRVBPU0lUT1JZX1RBRyddID0gc2VsZi50YWdfbmFtZQorICAgIG9zLmVudmlyb25bJ0JBU0VfTkFNRSddID0gc2VsZi5kb2NrZXJmaWxlX2RpcgorICAgIG9zLmVudmlyb25bJ0JVSUxEX1RZUEUnXSA9IHNlbGYuYnVpbGRfdHlwZQorICAgIHByaW50ICdERUJVRzogcGF0aDogJywgc2VsZi5idWlsZF9zY3JpcHRfcGF0aAorICAgIGlmIHN1YnByb2Nlc3MuY2FsbChhcmdzPVtzZWxmLmJ1aWxkX3NjcmlwdF9wYXRoXSkgIT0gMDoKKyAgICAgIHByaW50ICdFcnJvciBpbiBidWlsZGluZyB0aGUgRG9ja2VyIGltYWdlJworICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworICBkZWYgcHVzaF90b19na2VfcmVnaXN0cnkoc2VsZik6CisgICAgY21kID0gWydnY2xvdWQnLCAnZG9ja2VyJywgJ3B1c2gnLCBzZWxmLnRhZ19uYW1lXQorICAgIHByaW50ICdQdXNoaW5nICVzIHRvIHRoZSBHS0UgcmVnaXN0cnkuLicgJSBzZWxmLnRhZ19uYW1lCisgICAgaWYgc3VicHJvY2Vzcy5jYWxsKGFyZ3M9Y21kKSAhPSAwOgorICAgICAgcHJpbnQgJ0Vycm9yIGluIHB1c2hpbmcgdGhlIGltYWdlICVzIHRvIHRoZSBHS0UgcmVnaXN0cnknICUgc2VsZi50YWdfbmFtZQorICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBTZXJ2ZXJQb2RTcGVjOgorICAiIiIgQ29udGFpbnMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGxhdW5jaCBzZXJ2ZXIgcG9kcy4gIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNlcnZlcl90ZW1wbGF0ZSwgZG9ja2VyX2ltYWdlLCBudW1faW5zdGFuY2VzKToKKyAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgc2VsZi50ZW1wbGF0ZSA9IHNlcnZlcl90ZW1wbGF0ZQorICAgIHNlbGYuZG9ja2VyX2ltYWdlID0gZG9ja2VyX2ltYWdlCisgICAgc2VsZi5udW1faW5zdGFuY2VzID0gbnVtX2luc3RhbmNlcworCisgIGRlZiBwb2RfbmFtZXMoc2VsZik6CisgICAgIiIiIFJldHVybiBhIGxpc3Qgb2YgbmFtZXMgb2Ygc2VydmVyIHBvZHMgdG8gY3JlYXRlLiAiIiIKKyAgICByZXR1cm4gWyclcy0lZCcgJSAoc2VsZi5uYW1lLCBpKSBmb3IgaSBpbiByYW5nZSgxLCBzZWxmLm51bV9pbnN0YW5jZXMgKyAxKV0KKworICBkZWYgc2VydmVyX2FkZHJlc3NlcyhzZWxmKToKKyAgICAiIiIgUmV0dXJuIHN0cmluZyBvZiBzZXJ2ZXIgYWRkcmVzc2VzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICAgICAgJzxzZXJ2ZXJfcG9kX25hbWVfMT46PHNlcnZlcl9wb3J0Piw8c2VydmVyX3BvZF9uYW1lXzI+OjxzZXJ2ZXJfcG9ydD4uLi4nCisgICAgIiIiCisgICAgcmV0dXJuICcsJy5qb2luKFsnJXM6JWQnICUgKHBvZF9uYW1lLCBzZWxmLnRlbXBsYXRlLnNlcnZlcl9wb3J0KQorICAgICAgICAgICAgICAgICAgICAgZm9yIHBvZF9uYW1lIGluIHNlbGYucG9kX25hbWVzKCldKQorCisKK2NsYXNzIENsaWVudFBvZFNwZWM6CisgICIiIiBDb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gbGF1bmNoIGNsaWVudCBwb2RzICIiIgorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBjbGllbnRfdGVtcGxhdGUsIGRvY2tlcl9pbWFnZSwgbnVtX2luc3RhbmNlcywKKyAgICAgICAgICAgICAgIHNlcnZlcl9hZGRyZXNzZXMpOgorICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICBzZWxmLnRlbXBsYXRlID0gY2xpZW50X3RlbXBsYXRlCisgICAgc2VsZi5kb2NrZXJfaW1hZ2UgPSBkb2NrZXJfaW1hZ2UKKyAgICBzZWxmLm51bV9pbnN0YW5jZXMgPSBudW1faW5zdGFuY2VzCisgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzc2VzID0gc2VydmVyX2FkZHJlc3NlcworCisgIGRlZiBwb2RfbmFtZXMoc2VsZik6CisgICAgIiIiIFJldHVybiBhIGxpc3Qgb2YgbmFtZXMgb2YgY2xpZW50IHBvZHMgdG8gY3JlYXRlICIiIgorICAgIHJldHVybiBbJyVzLSVkJyAlIChzZWxmLm5hbWUsIGkpIGZvciBpIGluIHJhbmdlKDEsIHNlbGYubnVtX2luc3RhbmNlcyArIDEpXQorCisgICMgVGhlIGNsaWVudCBhcmdzIGluIHRoZSB0ZW1wbGF0ZSBkbyBub3QgaGF2ZSBzZXJ2ZXIgYWRkcmVzc2VzLiBUaGlzIGZ1bmN0aW9uCisgICMgYWRkcyB0aGUgc2VydmVyIGFkZHJlc3NlcyBhbmQgcmV0dXJucyB0aGUgdXBkYXRlZCBjbGllbnQgYXJncworICBkZWYgZ2V0X2NsaWVudF9hcmdzX2RpY3Qoc2VsZik6CisgICAgYXJnc19kaWN0ID0gc2VsZi50ZW1wbGF0ZS5jbGllbnRfYXJnc19kaWN0LmNvcHkoKQorICAgIGFyZ3NfZGljdFsnc2VydmVyX2FkZHJlc3NlcyddID0gc2VsZi5zZXJ2ZXJfYWRkcmVzc2VzCisgICAgcmV0dXJuIGFyZ3NfZGljdAorCisKK2NsYXNzIEdrZToKKyAgIiIiIENsYXNzIHRoYXQgaGFzIGhlbHBlciBtZXRob2RzIHRvIGludGVyYWN0IHdpdGggR0tFICIiIgorCisgIGNsYXNzIEt1YmVybmV0ZXNQcm94eToKKyAgICAiIiJDbGFzcyB0byBzdGFydCBhIHByb3h5IG9uIGxvY2FsaG9zdCB0byB0YWxrIHRvIHRoZSBLdWJlcm5ldGVzIEFQSSBzZXJ2ZXIiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0KToKKyAgICAgIGNtZCA9IFsna3ViZWN0bCcsICdwcm94eScsICctLXBvcnQ9JWQnICUgcG9ydF0KKyAgICAgIHNlbGYucCA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncz1jbWQpCisgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICBwcmludCAnXG5TdGFydGVkIGt1YmVybmV0ZXMgcHJveHkgb24gcG9ydDogJWQnICUgcG9ydAorCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICBpZiBzZWxmLnAgaXMgbm90IE5vbmU6CisgICAgICAgIHByaW50ICdTaHV0dGluZyBkb3duIEt1YmVybmV0ZXMgcHJveHkuLicKKyAgICAgICAgc2VsZi5wLmtpbGwoKQorCisgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X2lkLCBydW5faWQsIGRhdGFzZXRfaWQsIHN1bW1hcnlfdGFibGVfaWQsCisgICAgICAgICAgICAgICBxcHNfdGFibGVfaWQsIGt1YmVybmV0ZXNfcG9ydCk6CisgICAgc2VsZi5wcm9qZWN0X2lkID0gcHJvamVjdF9pZAorICAgIHNlbGYucnVuX2lkID0gcnVuX2lkCisgICAgc2VsZi5kYXRhc2V0X2lkID0gZGF0YXNldF9pZAorICAgIHNlbGYuc3VtbWFyeV90YWJsZV9pZCA9IHN1bW1hcnlfdGFibGVfaWQKKyAgICBzZWxmLnFwc190YWJsZV9pZCA9IHFwc190YWJsZV9pZAorCisgICAgIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdlIHdvdWxkIGxpa2UgdG8gcGFzcyB0byBldmVyeSBwb2QgKGJvdGggY2xpZW50CisgICAgIyBhbmQgc2VydmVyKSBsYXVuY2hlZCBpbiBHS0UKKyAgICBzZWxmLmdrZV9lbnYgPSB7CisgICAgICAgICdSVU5fSUQnOiBzZWxmLnJ1bl9pZCwKKyAgICAgICAgJ0dDUF9QUk9KRUNUX0lEJzogc2VsZi5wcm9qZWN0X2lkLAorICAgICAgICAnREFUQVNFVF9JRCc6IHNlbGYuZGF0YXNldF9pZCwKKyAgICAgICAgJ1NVTU1BUllfVEFCTEVfSUQnOiBzZWxmLnN1bW1hcnlfdGFibGVfaWQsCisgICAgICAgICdRUFNfVEFCTEVfSUQnOiBzZWxmLnFwc190YWJsZV9pZAorICAgIH0KKworICAgIHNlbGYua3ViZXJuZXRlc19wb3J0ID0ga3ViZXJuZXRlc19wb3J0CisgICAgIyBTdGFydCBrdWJlcm5ldGVzIHByb3h5CisgICAgc2VsZi5rdWJlcm5ldGVzX3Byb3h5ID0gR2tlLkt1YmVybmV0ZXNQcm94eShrdWJlcm5ldGVzX3BvcnQpCisKKyAgZGVmIF9hcmdzX2RpY3RfdG9fc3RyKHNlbGYsIGFyZ3NfZGljdCk6CisgICAgcmV0dXJuICcgJy5qb2luKCctLSVzPSVzJyAlIChrLCBhcmdzX2RpY3Rba10pIGZvciBrIGluIGFyZ3NfZGljdC5rZXlzKCkpCisKKyAgZGVmIGxhdW5jaF9zZXJ2ZXJzKHNlbGYsIHNlcnZlcl9wb2Rfc3BlYyk6CisgICAgaXNfc3VjY2VzcyA9IFRydWUKKworICAgICMgVGhlIGNvbW1hbmQgdG8gcnVuIGluc2lkZSB0aGUgY29udGFpbmVyIGlzIHRoZSB3cmFwcGVyIHNjcmlwdCAod2hpY2ggdGhlbgorICAgICMgbGF1bmNoZXMgdGhlIGFjdHVhbCBzZXJ2ZXIpCisgICAgY29udGFpbmVyX2NtZCA9IHNlcnZlcl9wb2Rfc3BlYy50ZW1wbGF0ZS53cmFwcGVyX3NjcmlwdF9wYXRoCisKKyAgICAjIFRoZSBwYXJhbWV0ZXJzIHRvIHRoZSB3cmFwcGVyIHNjcmlwdCAoZGVmaW5lZCBpbgorICAgICMgc2VydmVyX3BvZF9zcGVjLnRlbXBsYXRlLndyYXBwZXJfc2NyaXB0X3BhdGgpIGFyZSBhcmUgaW5qZWN0ZWQgaW50byB0aGUKKyAgICAjIGNvbnRhaW5lciB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgc2VydmVyX2VudiA9IHNlbGYuZ2tlX2Vudi5jb3B5KCkKKyAgICBzZXJ2ZXJfZW52LnVwZGF0ZSh7CisgICAgICAgICdTVFJFU1NfVEVTVF9JTUFHRV9UWVBFJzogJ1NFUlZFUicsCisgICAgICAgICdTVFJFU1NfVEVTVF9JTUFHRSc6IHNlcnZlcl9wb2Rfc3BlYy50ZW1wbGF0ZS5zZXJ2ZXJfaW1hZ2VfcGF0aCwKKyAgICAgICAgJ1NUUkVTU19URVNUX0FSR1NfU1RSJzogc2VsZi5fYXJnc19kaWN0X3RvX3N0cigKKyAgICAgICAgICAgIHNlcnZlcl9wb2Rfc3BlYy50ZW1wbGF0ZS5zZXJ2ZXJfYXJnc19kaWN0KQorICAgIH0pCisKKyAgICBmb3IgcG9kX25hbWUgaW4gc2VydmVyX3BvZF9zcGVjLnBvZF9uYW1lcygpOgorICAgICAgc2VydmVyX2VudlsnUE9EX05BTUUnXSA9IHBvZF9uYW1lCisgICAgICBwcmludCAnQ3JlYXRpbmcgc2VydmVyOiAlcycgJSBwb2RfbmFtZQorICAgICAgaXNfc3VjY2VzcyA9IGt1YmVybmV0ZXNfYXBpLmNyZWF0ZV9wb2RfYW5kX3NlcnZpY2UoCisgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAgICAgICAgc2VsZi5rdWJlcm5ldGVzX3BvcnQsCisgICAgICAgICAgJ2RlZmF1bHQnLCAgIyBVc2UgJ2RlZmF1bHQnIG5hbWVzcGFjZQorICAgICAgICAgIHBvZF9uYW1lLAorICAgICAgICAgIHNlcnZlcl9wb2Rfc3BlYy5kb2NrZXJfaW1hZ2UudGFnX25hbWUsCisgICAgICAgICAgW3NlcnZlcl9wb2Rfc3BlYy50ZW1wbGF0ZS5zZXJ2ZXJfcG9ydF0sICAjIFBvcnRzIHRvIGV4cG9zZSBvbiB0aGUgcG9kCisgICAgICAgICAgW2NvbnRhaW5lcl9jbWRdLAorICAgICAgICAgIFtdLCAgIyBBcmdzIGxpc3QgaXMgZW1wdHkgc2luY2Ugd2UgYXJlIHBhc3NpbmcgYWxsIGFyZ3MgdmlhIGVudiB2YXJpYWJsZXMKKyAgICAgICAgICBzZXJ2ZXJfZW52LAorICAgICAgICAgIFRydWUgICMgSGVhZGxlc3MgPSBUcnVlIGZvciBzZXJ2ZXIgdG8gdGhhdCBHS0UgY3JlYXRlcyBhIEROUyByZWNvcmQgZm9yIHBvZF9uYW1lCisgICAgICApCisgICAgICBpZiBub3QgaXNfc3VjY2VzczoKKyAgICAgICAgcHJpbnQgJ0Vycm9yIGluIGxhdW5jaGluZyBzZXJ2ZXI6ICVzJyAlIHBvZF9uYW1lCisgICAgICAgIGJyZWFrCisKKyAgICBpZiBpc19zdWNjZXNzOgorICAgICAgcHJpbnQgJ1N1Y2Nlc3NmdWxseSBjcmVhdGVkIHNlcnZlcihzKScKKworICAgIHJldHVybiBpc19zdWNjZXNzCisKKyAgZGVmIGxhdW5jaF9jbGllbnRzKHNlbGYsIGNsaWVudF9wb2Rfc3BlYyk6CisgICAgaXNfc3VjY2VzcyA9IFRydWUKKworICAgICMgVGhlIGNvbW1hbmQgdG8gcnVuIGluc2lkZSB0aGUgY29udGFpbmVyIGlzIHRoZSB3cmFwcGVyIHNjcmlwdCAod2hpY2ggdGhlbgorICAgICMgbGF1bmNoZXMgdGhlIGFjdHVhbCBzdHJlc3MgY2xpZW50KQorICAgIGNvbnRhaW5lcl9jbWQgPSBjbGllbnRfcG9kX3NwZWMudGVtcGxhdGUud3JhcHBlcl9zY3JpcHRfcGF0aAorCisgICAgIyBUaGUgcGFyYW1ldGVycyB0byB0aGUgd3JhcHBlciBzY3JpcHQgKGRlZmluZWQgaW4KKyAgICAjIGNsaWVudF9wb2Rfc3BlYy50ZW1wbGF0ZS53cmFwcGVyX3NjcmlwdF9wYXRoKSBhcmUgYXJlIGluamVjdGVkIGludG8gdGhlCisgICAgIyBjb250YWluZXIgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgIGNsaWVudF9lbnYgPSBzZWxmLmdrZV9lbnYuY29weSgpCisgICAgY2xpZW50X2Vudi51cGRhdGUoeworICAgICAgICAnU1RSRVNTX1RFU1RfSU1BR0VfVFlQRSc6ICdDTElFTlQnLAorICAgICAgICAnU1RSRVNTX1RFU1RfSU1BR0UnOiBjbGllbnRfcG9kX3NwZWMudGVtcGxhdGUuY2xpZW50X2ltYWdlX3BhdGgsCisgICAgICAgICdTVFJFU1NfVEVTVF9BUkdTX1NUUic6IHNlbGYuX2FyZ3NfZGljdF90b19zdHIoCisgICAgICAgICAgICBjbGllbnRfcG9kX3NwZWMuZ2V0X2NsaWVudF9hcmdzX2RpY3QoKSksCisgICAgICAgICdNRVRSSUNTX0NMSUVOVF9JTUFHRSc6CisgICAgICAgICAgICBjbGllbnRfcG9kX3NwZWMudGVtcGxhdGUubWV0cmljc19jbGllbnRfaW1hZ2VfcGF0aCwKKyAgICAgICAgJ01FVFJJQ1NfQ0xJRU5UX0FSR1NfU1RSJzogc2VsZi5fYXJnc19kaWN0X3RvX3N0cigKKyAgICAgICAgICAgIGNsaWVudF9wb2Rfc3BlYy50ZW1wbGF0ZS5tZXRyaWNzX2FyZ3NfZGljdCksCisgICAgICAgICdQT0xMX0lOVEVSVkFMX1NFQ1MnOiBzdHIoY2xpZW50X3BvZF9zcGVjLnRlbXBsYXRlLnBvbGxfaW50ZXJ2YWxfc2VjcykKKyAgICB9KQorCisgICAgZm9yIHBvZF9uYW1lIGluIGNsaWVudF9wb2Rfc3BlYy5wb2RfbmFtZXMoKToKKyAgICAgIGNsaWVudF9lbnZbJ1BPRF9OQU1FJ10gPSBwb2RfbmFtZQorICAgICAgcHJpbnQgJ0NyZWF0aW5nIGNsaWVudDogJXMnICUgcG9kX25hbWUKKyAgICAgIGlzX3N1Y2Nlc3MgPSBrdWJlcm5ldGVzX2FwaS5jcmVhdGVfcG9kX2FuZF9zZXJ2aWNlKAorICAgICAgICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgIHNlbGYua3ViZXJuZXRlc19wb3J0LAorICAgICAgICAgICdkZWZhdWx0JywgICMgZGVmYXVsdCBuYW1lc3BhY2UsCisgICAgICAgICAgcG9kX25hbWUsCisgICAgICAgICAgY2xpZW50X3BvZF9zcGVjLmRvY2tlcl9pbWFnZS50YWdfbmFtZSwKKyAgICAgICAgICBbY2xpZW50X3BvZF9zcGVjLnRlbXBsYXRlLm1ldHJpY3NfcG9ydF0sICAjIFBvcnRzIHRvIGV4cG9zZSBvbiB0aGUgcG9kCisgICAgICAgICAgW2NvbnRhaW5lcl9jbWRdLAorICAgICAgICAgIFtdLCAgIyBFbXB0eSBhcmdzIGxpc3Qgc2luY2UgYWxsIGFyZ3MgYXJlIHBhc3NlZCB2aWEgZW52IHZhcmlhYmxlcworICAgICAgICAgIGNsaWVudF9lbnYsCisgICAgICAgICAgRmFsc2UgICMgQ2xpZW50IGlzIG5vdCBhIGhlYWRsZXNzIHNlcnZpY2UuCisgICAgICApCisKKyAgICAgIGlmIG5vdCBpc19zdWNjZXNzOgorICAgICAgICBwcmludCAnRXJyb3IgaW4gbGF1bmNoaW5nIGNsaWVudCAlcycgJSBwb2RfbmFtZQorICAgICAgICBicmVhaworCisgICAgaWYgaXNfc3VjY2VzczoKKyAgICAgIHByaW50ICdTdWNjZXNzZnVsbHkgY3JlYXRlZCBhbGwgY2xpZW50KHMpJworCisgICAgcmV0dXJuIGlzX3N1Y2Nlc3MKKworICBkZWYgX2RlbGV0ZV9wb2RzKHNlbGYsIHBvZF9uYW1lX2xpc3QpOgorICAgIGlzX3N1Y2Nlc3MgPSBUcnVlCisgICAgZm9yIHBvZF9uYW1lIGluIHBvZF9uYW1lX2xpc3Q6CisgICAgICBwcmludCAnRGVsZXRpbmcgJXMnICUgcG9kX25hbWUKKyAgICAgIGlzX3N1Y2Nlc3MgPSBrdWJlcm5ldGVzX2FwaS5kZWxldGVfcG9kX2FuZF9zZXJ2aWNlKAorICAgICAgICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgIHNlbGYua3ViZXJuZXRlc19wb3J0LAorICAgICAgICAgICdkZWZhdWx0JywgICMgZGVmYXVsdCBuYW1lc3BhY2UKKyAgICAgICAgICBwb2RfbmFtZSkKKworICAgICAgaWYgbm90IGlzX3N1Y2Nlc3M6CisgICAgICAgIHByaW50ICdFcnJvciBpbiBkZWxldGluZyBwb2QgJXMnICUgcG9kX25hbWUKKyAgICAgICAgYnJlYWsKKworICAgIGlmIGlzX3N1Y2Nlc3M6CisgICAgICBwcmludCAnU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYWxsIHBvZHMnCisKKyAgICByZXR1cm4gaXNfc3VjY2VzcworCisgIGRlZiBkZWxldGVfc2VydmVycyhzZWxmLCBzZXJ2ZXJfcG9kX3NwZWMpOgorICAgIHJldHVybiBzZWxmLl9kZWxldGVfcG9kcyhzZXJ2ZXJfcG9kX3NwZWMucG9kX25hbWVzKCkpCisKKyAgZGVmIGRlbGV0ZV9jbGllbnRzKHNlbGYsIGNsaWVudF9wb2Rfc3BlYyk6CisgICAgcmV0dXJuIHNlbGYuX2RlbGV0ZV9wb2RzKGNsaWVudF9wb2Rfc3BlYy5wb2RfbmFtZXMoKSkKKworCitjbGFzcyBDb25maWc6CisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ19maWxlbmFtZSwgZ2NwX3Byb2plY3RfaWQpOgorICAgIHByaW50ICdMb2FkaW5nIGNvbmZpZ3VyYXRpb24uLi4nCisgICAgY29uZmlnX2RpY3QgPSBzZWxmLl9sb2FkX2NvbmZpZyhjb25maWdfZmlsZW5hbWUpCisKKyAgICBzZWxmLmdsb2JhbF9zZXR0aW5ncyA9IHNlbGYuX3BhcnNlX2dsb2JhbF9zZXR0aW5ncyhjb25maWdfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3BfcHJvamVjdF9pZCkKKyAgICBzZWxmLmRvY2tlcl9pbWFnZXNfZGljdCA9IHNlbGYuX3BhcnNlX2RvY2tlcl9pbWFnZXMoCisgICAgICAgIGNvbmZpZ19kaWN0LCBzZWxmLmdsb2JhbF9zZXR0aW5ncy5nY3BfcHJvamVjdF9pZCkKKyAgICBzZWxmLmNsaWVudF90ZW1wbGF0ZXNfZGljdCA9IHNlbGYuX3BhcnNlX2NsaWVudF90ZW1wbGF0ZXMoY29uZmlnX2RpY3QpCisgICAgc2VsZi5zZXJ2ZXJfdGVtcGxhdGVzX2RpY3QgPSBzZWxmLl9wYXJzZV9zZXJ2ZXJfdGVtcGxhdGVzKGNvbmZpZ19kaWN0KQorICAgIHNlbGYuc2VydmVyX3BvZF9zcGVjc19kaWN0ID0gc2VsZi5fcGFyc2Vfc2VydmVyX3BvZF9zcGVjcygKKyAgICAgICAgY29uZmlnX2RpY3QsIHNlbGYuZG9ja2VyX2ltYWdlc19kaWN0LCBzZWxmLnNlcnZlcl90ZW1wbGF0ZXNfZGljdCkKKyAgICBzZWxmLmNsaWVudF9wb2Rfc3BlY3NfZGljdCA9IHNlbGYuX3BhcnNlX2NsaWVudF9wb2Rfc3BlY3MoCisgICAgICAgIGNvbmZpZ19kaWN0LCBzZWxmLmRvY2tlcl9pbWFnZXNfZGljdCwgc2VsZi5jbGllbnRfdGVtcGxhdGVzX2RpY3QsCisgICAgICAgIHNlbGYuc2VydmVyX3BvZF9zcGVjc19kaWN0KQorICAgIHByaW50ICdMb2FkZWQgQ29uZmlndWFyYXRpb24uJworCisgIGRlZiBfcGFyc2VfZ2xvYmFsX3NldHRpbmdzKHNlbGYsIGNvbmZpZ19kaWN0LCBnY3BfcHJvamVjdF9pZCk6CisgICAgZ2xvYmFsX3NldHRpbmdzX2RpY3QgPSBjb25maWdfZGljdFsnZ2xvYmFsU2V0dGluZ3MnXQorICAgIHJldHVybiBHbG9iYWxTZXR0aW5ncyhnY3BfcHJvamVjdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsX3NldHRpbmdzX2RpY3RbJ2J1aWxkRG9ja2VySW1hZ2VzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9zZXR0aW5nc19kaWN0Wydwb2xsSW50ZXJ2YWxTZWNzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9zZXR0aW5nc19kaWN0Wyd0ZXN0RHVyYXRpb25TZWNzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9zZXR0aW5nc19kaWN0WydrdWJlcm5ldGVzUHJveHlQb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9zZXR0aW5nc19kaWN0WydkYXRhc2V0SWROYW1lUHJlZml4J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9zZXR0aW5nc19kaWN0WydzdW1tYXJ5VGFibGVJZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfc2V0dGluZ3NfZGljdFsncXBzVGFibGVJZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfc2V0dGluZ3NfZGljdFsncG9kV2FybXVwU2VjcyddKQorCisgIGRlZiBfcGFyc2VfZG9ja2VyX2ltYWdlcyhzZWxmLCBjb25maWdfZGljdCwgZ2NwX3Byb2plY3RfaWQpOgorICAgICIiIlBhcnNlcyB0aGUgJ2RvY2tlckltYWdlcycgc2VjdGlvbiBvZiB0aGUgY29uZmlnIGZpbGUgYW5kIHJldHVybnMgYQorICAgIERpY3Rpb25hcnkgb2YgJ0RvY2tlckltYWdlJyBvYmplY3RzIGtleWVkIGJ5IGRvY2tlciBpbWFnZSBuYW1lcyIiIgorICAgIGRvY2tlcl9pbWFnZXNfZGljdCA9IHt9CisKKyAgICBkb2NrZXJfY29uZmlnX2RpY3QgPSBjb25maWdfZGljdFsnZG9ja2VySW1hZ2VzJ10KKyAgICBmb3IgaW1hZ2VfbmFtZSBpbiBkb2NrZXJfY29uZmlnX2RpY3Qua2V5cygpOgorICAgICAgYnVpbGRfc2NyaXB0X3BhdGggPSBkb2NrZXJfY29uZmlnX2RpY3RbaW1hZ2VfbmFtZV1bJ2J1aWxkU2NyaXB0J10KKyAgICAgIGRvY2tlcmZpbGVfZGlyID0gZG9ja2VyX2NvbmZpZ19kaWN0W2ltYWdlX25hbWVdWydkb2NrZXJGaWxlRGlyJ10KKyAgICAgIGJ1aWxkX3R5cGUgPSBkb2NrZXJfY29uZmlnX2RpY3RbaW1hZ2VfbmFtZV1bJ2J1aWxkVHlwZSddCisgICAgICBkb2NrZXJfaW1hZ2VzX2RpY3RbaW1hZ2VfbmFtZV0gPSBEb2NrZXJJbWFnZShnY3BfcHJvamVjdF9pZCwgaW1hZ2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3NjcmlwdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9kaXIsIGJ1aWxkX3R5cGUpCisgICAgcmV0dXJuIGRvY2tlcl9pbWFnZXNfZGljdAorCisgIGRlZiBfcGFyc2VfY2xpZW50X3RlbXBsYXRlcyhzZWxmLCBjb25maWdfZGljdCk6CisgICAgIiIiUGFyc2VzIHRoZSAnY2xpZW50VGVtcGxhdGVzJyBzZWN0aW9uIG9mIHRoZSBjb25maWcgZmlsZSBhbmQgcmV0dXJucyBhCisgICAgRGljdGlvbmFyeSBvZiAnQ2xpZW50VGVtcGxhdGUnIG9iamVjdHMga2V5ZWQgYnkgY2xpZW50IHRlbXBsYXRlIG5hbWVzLgorCisgICAgTm90ZTogVGhlICdiYXNlVGVtcGxhdGVzJyBzdWIgc2VjdGlvbiBvZiB0aGUgY29uZmlnIGZpbGUgY29udGFpbnMgdGVtcGxhdGVzCisgICAgd2l0aCBkZWZhdWx0IHZhbHVlcyAgYW5kIHRoZSAndGVtcGxhdGVzJyBzdWIgc2VjdGlvbiBjb250YWlucyB0aGUgYWN0dWFsCisgICAgY2xpZW50IHRlbXBsYXRlcyAod2hpY2ggcmVmZXIgdG8gdGhlIGJhc2UgdGVtcGxhdGUgbmFtZSB0byB1c2UgZm9yIGRlZmF1bHQKKyAgICB2YWx1ZXMpLgorICAgICIiIgorICAgIGNsaWVudF90ZW1wbGF0ZXNfZGljdCA9IHt9CisKKyAgICB0ZW1wbGF0ZXNfZGljdCA9IGNvbmZpZ19kaWN0WydjbGllbnRUZW1wbGF0ZXMnXVsndGVtcGxhdGVzJ10KKyAgICBiYXNlX3RlbXBsYXRlc19kaWN0ID0gY29uZmlnX2RpY3RbJ2NsaWVudFRlbXBsYXRlcyddLmdldCgnYmFzZVRlbXBsYXRlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30pCisgICAgZm9yIHRlbXBsYXRlX25hbWUgaW4gdGVtcGxhdGVzX2RpY3Qua2V5cygpOgorICAgICAgIyB0ZW1wX2RpY3QgaXMgYSB0ZW1wb3JhcnkgZGljdGlvbmFyeSB0aGF0IG1lcmdlcyBiYXNlIHRlbXBsYXRlIGRpY3Rpb25hcnkKKyAgICAgICMgYW5kIGNsaWVudCB0ZW1wbGF0ZSBkaWN0aW9uYXJ5ICh3aXRoIGNsaWVudCB0ZW1wbGF0ZSBkaWN0aW9uYXJ5IHZhbHVlcworICAgICAgIyBvdmVycmlkaW5nIGJhc2UgdGVtcGxhdGUgdmFsdWVzKQorICAgICAgdGVtcF9kaWN0ID0ge30KKworICAgICAgYmFzZV90ZW1wbGF0ZV9uYW1lID0gdGVtcGxhdGVzX2RpY3RbdGVtcGxhdGVfbmFtZV0uZ2V0KCdiYXNlVGVtcGxhdGUnKQorICAgICAgaWYgbm90IGJhc2VfdGVtcGxhdGVfbmFtZSBpcyBOb25lOgorICAgICAgICB0ZW1wX2RpY3QgPSBiYXNlX3RlbXBsYXRlc19kaWN0W2Jhc2VfdGVtcGxhdGVfbmFtZV0uY29weSgpCisKKyAgICAgIHRlbXBfZGljdC51cGRhdGUodGVtcGxhdGVzX2RpY3RbdGVtcGxhdGVfbmFtZV0pCisKKyAgICAgICMgQ3JlYXRlIGFuZCBhZGQgQ2xpZW50VGVtcGxhdGUgb2JqZWN0IHRvIHRoZSBmaW5hbCBjbGllbnRfdGVtcGxhdGVzX2RpY3QKKyAgICAgIGNsaWVudF90ZW1wbGF0ZXNfZGljdFt0ZW1wbGF0ZV9uYW1lXSA9IENsaWVudFRlbXBsYXRlKAorICAgICAgICAgIHRlbXBsYXRlX25hbWUsIHRlbXBfZGljdFsnY2xpZW50SW1hZ2VQYXRoJ10sCisgICAgICAgICAgdGVtcF9kaWN0WydtZXRyaWNzQ2xpZW50SW1hZ2VQYXRoJ10sIHRlbXBfZGljdFsnbWV0cmljc1BvcnQnXSwKKyAgICAgICAgICB0ZW1wX2RpY3RbJ3dyYXBwZXJTY3JpcHRQYXRoJ10sIHRlbXBfZGljdFsncG9sbEludGVydmFsU2VjcyddLAorICAgICAgICAgIHRlbXBfZGljdFsnY2xpZW50QXJncyddLmNvcHkoKSwgdGVtcF9kaWN0WydtZXRyaWNzQXJncyddLmNvcHkoKSkKKworICAgIHJldHVybiBjbGllbnRfdGVtcGxhdGVzX2RpY3QKKworICBkZWYgX3BhcnNlX3NlcnZlcl90ZW1wbGF0ZXMoc2VsZiwgY29uZmlnX2RpY3QpOgorICAgICIiIlBhcnNlcyB0aGUgJ3NlcnZlclRlbXBsYXRlcycgc2VjdGlvbiBvZiB0aGUgY29uZmlnIGZpbGUgYW5kIHJldHVybnMgYQorICAgIERpY3Rpb25hcnkgb2YgJ3NlcnZlclRlbXBsYXRlJyBvYmplY3RzIGtleWVkIGJ5IHNlcnZlciB0ZW1wbGF0ZSBuYW1lcy4KKworICAgIE5vdGU6IFRoZSAnYmFzZVRlbXBsYXRlcycgc3ViIHNlY3Rpb24gb2YgdGhlIGNvbmZpZyBmaWxlIGNvbnRhaW5zIHRlbXBsYXRlcworICAgIHdpdGggZGVmYXVsdCB2YWx1ZXMgIGFuZCB0aGUgJ3RlbXBsYXRlcycgc3ViIHNlY3Rpb24gY29udGFpbnMgdGhlIGFjdHVhbAorICAgIHNlcnZlciB0ZW1wbGF0ZXMgKHdoaWNoIHJlZmVyIHRvIHRoZSBiYXNlIHRlbXBsYXRlIG5hbWUgdG8gdXNlIGZvciBkZWZhdWx0CisgICAgdmFsdWVzKS4KKyAgICAiIiIKKyAgICBzZXJ2ZXJfdGVtcGxhdGVzX2RpY3QgPSB7fQorCisgICAgdGVtcGxhdGVzX2RpY3QgPSBjb25maWdfZGljdFsnc2VydmVyVGVtcGxhdGVzJ11bJ3RlbXBsYXRlcyddCisgICAgYmFzZV90ZW1wbGF0ZXNfZGljdCA9IGNvbmZpZ19kaWN0WydzZXJ2ZXJUZW1wbGF0ZXMnXS5nZXQoJ2Jhc2VUZW1wbGF0ZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9KQorCisgICAgZm9yIHRlbXBsYXRlX25hbWUgaW4gdGVtcGxhdGVzX2RpY3Qua2V5cygpOgorICAgICAgIyB0ZW1wX2RpY3QgaXMgYSB0ZW1wb3JhcnkgZGljdGlvbmFyeSB0aGF0IG1lcmdlcyBiYXNlIHRlbXBsYXRlIGRpY3Rpb25hcnkKKyAgICAgICMgYW5kIHNlcnZlciB0ZW1wbGF0ZSBkaWN0aW9uYXJ5ICh3aXRoIHNlcnZlciB0ZW1wbGF0ZSBkaWN0aW9uYXJ5IHZhbHVlcworICAgICAgIyBvdmVycmlkaW5nIGJhc2UgdGVtcGxhdGUgdmFsdWVzKQorICAgICAgdGVtcF9kaWN0ID0ge30KKworICAgICAgYmFzZV90ZW1wbGF0ZV9uYW1lID0gdGVtcGxhdGVzX2RpY3RbdGVtcGxhdGVfbmFtZV0uZ2V0KCdiYXNlVGVtcGxhdGUnKQorICAgICAgaWYgbm90IGJhc2VfdGVtcGxhdGVfbmFtZSBpcyBOb25lOgorICAgICAgICB0ZW1wX2RpY3QgPSBiYXNlX3RlbXBsYXRlc19kaWN0W2Jhc2VfdGVtcGxhdGVfbmFtZV0uY29weSgpCisKKyAgICAgIHRlbXBfZGljdC51cGRhdGUodGVtcGxhdGVzX2RpY3RbdGVtcGxhdGVfbmFtZV0pCisKKyAgICAgICMgQ3JlYXRlIGFuZCBhZGQgU2VydmVyVGVtcGxhdGUgb2JqZWN0IHRvIHRoZSBmaW5hbCBzZXJ2ZXJfdGVtcGxhdGVzX2RpY3QKKyAgICAgIHNlcnZlcl90ZW1wbGF0ZXNfZGljdFt0ZW1wbGF0ZV9uYW1lXSA9IFNlcnZlclRlbXBsYXRlKAorICAgICAgICAgIHRlbXBsYXRlX25hbWUsIHRlbXBfZGljdFsnc2VydmVySW1hZ2VQYXRoJ10sCisgICAgICAgICAgdGVtcF9kaWN0Wyd3cmFwcGVyU2NyaXB0UGF0aCddLCB0ZW1wX2RpY3RbJ3NlcnZlclBvcnQnXSwKKyAgICAgICAgICB0ZW1wX2RpY3RbJ3NlcnZlckFyZ3MnXS5jb3B5KCkpCisKKyAgICByZXR1cm4gc2VydmVyX3RlbXBsYXRlc19kaWN0CisKKyAgZGVmIF9wYXJzZV9zZXJ2ZXJfcG9kX3NwZWNzKHNlbGYsIGNvbmZpZ19kaWN0LCBkb2NrZXJfaW1hZ2VzX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfdGVtcGxhdGVzX2RpY3QpOgorICAgICIiIlBhcnNlcyB0aGUgJ3NlcnZlclBvZFNwZWNzJyBzdWItc2VjdGlvbiAodW5kZXIgJ3Rlc3RNYXRyaXgnIHNlY3Rpb24pIG9mCisgICAgdGhlIGNvbmZpZyBmaWxlIGFuZCByZXR1cm5zIGEgRGljdGlvbmFyeSBvZiAnU2VydmVyUG9kU3BlYycgb2JqZWN0cyBrZXllZAorICAgIGJ5IHNlcnZlciBwb2Qgc3BlYyBuYW1lcyIiIgorICAgIHNlcnZlcl9wb2Rfc3BlY3NfZGljdCA9IHt9CisKKyAgICBwb2Rfc3BlY3NfZGljdCA9IGNvbmZpZ19kaWN0Wyd0ZXN0TWF0cml4J10uZ2V0KCdzZXJ2ZXJQb2RTcGVjcycsIHt9KQorCisgICAgZm9yIHBvZF9uYW1lIGluIHBvZF9zcGVjc19kaWN0LmtleXMoKToKKyAgICAgIHNlcnZlcl90ZW1wbGF0ZV9uYW1lID0gcG9kX3NwZWNzX2RpY3RbcG9kX25hbWVdWydzZXJ2ZXJUZW1wbGF0ZSddCisgICAgICBkb2NrZXJfaW1hZ2VfbmFtZSA9IHBvZF9zcGVjc19kaWN0W3BvZF9uYW1lXVsnZG9ja2VySW1hZ2UnXQorICAgICAgbnVtX2luc3RhbmNlcyA9IHBvZF9zcGVjc19kaWN0W3BvZF9uYW1lXS5nZXQoJ251bUluc3RhbmNlcycsIDEpCisKKyAgICAgICMgQ3JlYXRlIGFuZCBhZGQgdGhlIFNlcnZlclBvZFNwZWMgb2JqZWN0IHRvIHRoZSBmaW5hbAorICAgICAgIyBzZXJ2ZXJfcG9kX3NwZWNzX2RpY3QKKyAgICAgIHNlcnZlcl9wb2Rfc3BlY3NfZGljdFtwb2RfbmFtZV0gPSBTZXJ2ZXJQb2RTcGVjKAorICAgICAgICAgIHBvZF9uYW1lLCBzZXJ2ZXJfdGVtcGxhdGVzX2RpY3Rbc2VydmVyX3RlbXBsYXRlX25hbWVdLAorICAgICAgICAgIGRvY2tlcl9pbWFnZXNfZGljdFtkb2NrZXJfaW1hZ2VfbmFtZV0sIG51bV9pbnN0YW5jZXMpCisKKyAgICByZXR1cm4gc2VydmVyX3BvZF9zcGVjc19kaWN0CisKKyAgZGVmIF9wYXJzZV9jbGllbnRfcG9kX3NwZWNzKHNlbGYsIGNvbmZpZ19kaWN0LCBkb2NrZXJfaW1hZ2VzX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfdGVtcGxhdGVzX2RpY3QsIHNlcnZlcl9wb2Rfc3BlY3NfZGljdCk6CisgICAgIiIiUGFyc2VzIHRoZSAnY2xpZW50UG9kU3BlY3MnIHN1Yi1zZWN0aW9uICh1bmRlciAndGVzdE1hdHJpeCcgc2VjdGlvbikgb2YKKyAgICB0aGUgY29uZmlnIGZpbGUgYW5kIHJldHVybnMgYSBEaWN0aW9uYXJ5IG9mICdDbGllbnRQb2RTcGVjJyBvYmplY3RzIGtleWVkCisgICAgYnkgY2xpZW50IHBvZCBzcGVjIG5hbWVzIiIiCisgICAgY2xpZW50X3BvZF9zcGVjc19kaWN0ID0ge30KKworICAgIHBvZF9zcGVjc19kaWN0ID0gY29uZmlnX2RpY3RbJ3Rlc3RNYXRyaXgnXS5nZXQoJ2NsaWVudFBvZFNwZWNzJywge30pCisgICAgZm9yIHBvZF9uYW1lIGluIHBvZF9zcGVjc19kaWN0LmtleXMoKToKKyAgICAgIGNsaWVudF90ZW1wbGF0ZV9uYW1lID0gcG9kX3NwZWNzX2RpY3RbcG9kX25hbWVdWydjbGllbnRUZW1wbGF0ZSddCisgICAgICBkb2NrZXJfaW1hZ2VfbmFtZSA9IHBvZF9zcGVjc19kaWN0W3BvZF9uYW1lXVsnZG9ja2VySW1hZ2UnXQorICAgICAgbnVtX2luc3RhbmNlcyA9IHBvZF9zcGVjc19kaWN0W3BvZF9uYW1lXVsnbnVtSW5zdGFuY2VzJ10KKworICAgICAgIyBHZXQgdGhlIHNlcnZlciBhZGRyZXNzZXMgZnJvbSB0aGUgc2VydmVyIHBvZCBzcGVjIG9iamVjdAorICAgICAgc2VydmVyX3BvZF9zcGVjX25hbWUgPSBwb2Rfc3BlY3NfZGljdFtwb2RfbmFtZV1bJ3NlcnZlclBvZFNwZWMnXQorICAgICAgc2VydmVyX2FkZHJlc3NlcyA9IHNlcnZlcl9wb2Rfc3BlY3NfZGljdFsKKyAgICAgICAgICBzZXJ2ZXJfcG9kX3NwZWNfbmFtZV0uc2VydmVyX2FkZHJlc3NlcygpCisKKyAgICAgIGNsaWVudF9wb2Rfc3BlY3NfZGljdFtwb2RfbmFtZV0gPSBDbGllbnRQb2RTcGVjKAorICAgICAgICAgIHBvZF9uYW1lLCBjbGllbnRfdGVtcGxhdGVzX2RpY3RbY2xpZW50X3RlbXBsYXRlX25hbWVdLAorICAgICAgICAgIGRvY2tlcl9pbWFnZXNfZGljdFtkb2NrZXJfaW1hZ2VfbmFtZV0sIG51bV9pbnN0YW5jZXMsCisgICAgICAgICAgc2VydmVyX2FkZHJlc3NlcykKKworICAgIHJldHVybiBjbGllbnRfcG9kX3NwZWNzX2RpY3QKKworICBkZWYgX2xvYWRfY29uZmlnKHNlbGYsIGNvbmZpZ19maWxlbmFtZSk6CisgICAgIiIiT3BlbnMgdGhlIGNvbmZpZyBmaWxlIGFuZCBjb252ZXJ0cyB0aGUgSnNvbiB0ZXh0IHRvIERpY3Rpb25hcnkiIiIKKyAgICBpZiBub3Qgb3MucGF0aC5pc2Ficyhjb25maWdfZmlsZW5hbWUpOgorICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDb25maWcgb2JqZWN0cyBleHBlY3RzIGFuIGFic29sdXRlIGZpbGUgcGF0aC4gJworICAgICAgICAgICAgICAgICAgICAgICdjb25maWcgZmlsZSBuYW1lIHBhc3NlZDogJXMnICUgY29uZmlnX2ZpbGVuYW1lKQorICAgIHdpdGggb3Blbihjb25maWdfZmlsZW5hbWUpIGFzIGNvbmZpZ19maWxlOgorICAgICAgcmV0dXJuIGpzb24ubG9hZChjb25maWdfZmlsZSkKKworCitkZWYgcnVuX3Rlc3RzKGNvbmZpZyk6CisgICIiIiBUaGUgbWFpbiBmdW5jdGlvbiB0aGF0IGxhdW5jaGVzIHRoZSBzdHJlc3MgdGVzdHMgIiIiCisgICMgQnVpbGQgZG9ja2VyIGltYWdlcyBhbmQgcHVzaCB0byBHS0UgcmVnaXN0cnkKKyAgaWYgY29uZmlnLmdsb2JhbF9zZXR0aW5ncy5idWlsZF9kb2NrZXJfaW1hZ2VzOgorICAgIGZvciBuYW1lLCBkb2NrZXJfaW1hZ2UgaW4gY29uZmlnLmRvY2tlcl9pbWFnZXNfZGljdC5pdGVyaXRlbXMoKToKKyAgICAgIGlmIG5vdCAoZG9ja2VyX2ltYWdlLmJ1aWxkX2ltYWdlKCkgYW5kCisgICAgICAgICAgICAgIGRvY2tlcl9pbWFnZS5wdXNoX3RvX2drZV9yZWdpc3RyeSgpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgIyBDcmVhdGUgYSB1bmlxdWUgaWQgZm9yIHRoaXMgcnVuIChOb3RlOiBVc2luZyB0aW1lc3RhbXAgaW5zdGVhZCBvZiBVVUlEIHRvCisgICMgbWFrZSBpdCBlYXNpZXIgdG8gZGVkdWNlIHRoZSBkYXRlL3RpbWUgb2YgdGhlIHJ1biBqdXN0IGJ5IGxvb2tpbmcgYXQgdGhlIHJ1bgorICAjIHJ1biBpZC4gVGhpcyBpcyB1c2VmdWwgaW4gZGVidWdnaW5nIHdoZW4gbG9va2luZyBhdCByZWNvcmRzIGluIEJpcSBxdWVyeSkKKyAgcnVuX2lkID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZXyVtXyVkXyVIXyVNXyVTJykKKyAgZGF0YXNldF9pZCA9ICclc18lcycgJSAoY29uZmlnLmdsb2JhbF9zZXR0aW5ncy5kYXRhc2V0X2lkX3ByZWZpeCwgcnVuX2lkKQorCisgIGJxX2hlbHBlciA9IEJpZ1F1ZXJ5SGVscGVyKHJ1bl9pZCwgJycsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZ2xvYmFsX3NldHRpbmdzLmdjcF9wcm9qZWN0X2lkLCBkYXRhc2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZ2xvYmFsX3NldHRpbmdzLnN1bW1hcnlfdGFibGVfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5nbG9iYWxfc2V0dGluZ3MucXBzX3RhYmxlX2lkKQorICBicV9oZWxwZXIuaW5pdGlhbGl6ZSgpCisKKyAgZ2tlID0gR2tlKGNvbmZpZy5nbG9iYWxfc2V0dGluZ3MuZ2NwX3Byb2plY3RfaWQsIHJ1bl9pZCwgZGF0YXNldF9pZCwKKyAgICAgICAgICAgIGNvbmZpZy5nbG9iYWxfc2V0dGluZ3Muc3VtbWFyeV90YWJsZV9pZCwKKyAgICAgICAgICAgIGNvbmZpZy5nbG9iYWxfc2V0dGluZ3MucXBzX3RhYmxlX2lkLAorICAgICAgICAgICAgY29uZmlnLmdsb2JhbF9zZXR0aW5ncy5rdWJlcm5ldGVzX3Byb3h5X3BvcnQpCisKKyAgaXNfc3VjY2VzcyA9IFRydWUKKworICB0cnk6CisgICAgcHJpbnQgJ0xhdW5jaGluZyBzZXJ2ZXJzLi4nCisgICAgZm9yIG5hbWUsIHNlcnZlcl9wb2Rfc3BlYyBpbiBjb25maWcuc2VydmVyX3BvZF9zcGVjc19kaWN0Lml0ZXJpdGVtcygpOgorICAgICAgaWYgbm90IGdrZS5sYXVuY2hfc2VydmVycyhzZXJ2ZXJfcG9kX3NwZWMpOgorICAgICAgICBpc19zdWNjZXNzID0gRmFsc2UgICMgaXNfc3VjY2VzcyBpcyBjaGVja2VkIGluIHRoZSAnZmluYWxseScgYmxvY2sKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBwcmludCgnTGF1bmNoZWQgc2VydmVycy4gV2FpdGluZyBmb3IgJWQgc2Vjb25kcyBmb3IgdGhlIHNlcnZlciBwb2RzIHRvIGJlICcKKyAgICAgICAgICAnZnVsbHkgb25saW5lJykgJSBjb25maWcuZ2xvYmFsX3NldHRpbmdzLnBvZF93YXJtdXBfc2VjcworICAgIHRpbWUuc2xlZXAoY29uZmlnLmdsb2JhbF9zZXR0aW5ncy5wb2Rfd2FybXVwX3NlY3MpCisKKyAgICBmb3IgbmFtZSwgY2xpZW50X3BvZF9zcGVjIGluIGNvbmZpZy5jbGllbnRfcG9kX3NwZWNzX2RpY3QuaXRlcml0ZW1zKCk6CisgICAgICBpZiBub3QgZ2tlLmxhdW5jaF9jbGllbnRzKGNsaWVudF9wb2Rfc3BlYyk6CisgICAgICAgIGlzX3N1Y2Nlc3MgPSBGYWxzZSAgIyBpc19zdWNjZXNzIGlzIGNoZWNrZWQgaW4gdGhlICdmaW5hbGx5JyBibG9jaworICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHByaW50KCdMYXVuY2hlZCBhbGwgY2xpZW50cy4gV2FpdGluZyBmb3IgJWQgc2Vjb25kcyBmb3IgdGhlIGNsaWVudCBwb2RzIHRvICcKKyAgICAgICAgICAnYmUgZnVsbHkgb25saW5lJykgJSBjb25maWcuZ2xvYmFsX3NldHRpbmdzLnBvZF93YXJtdXBfc2VjcworICAgIHRpbWUuc2xlZXAoY29uZmlnLmdsb2JhbF9zZXR0aW5ncy5wb2Rfd2FybXVwX3NlY3MpCisKKyAgICBzdGFydF90aW1lID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkYXRldGltZS50aW1lZGVsdGEoCisgICAgICAgIHNlY29uZHM9Y29uZmlnLmdsb2JhbF9zZXR0aW5ncy50ZXN0X2R1cmF0aW9uX3NlY3MpCisgICAgcHJpbnQgJ1J1bm5pbmcgdGhlIHRlc3QgdW50aWwgJXMnICUgZW5kX3RpbWUuaXNvZm9ybWF0KCkKKworICAgIHdoaWxlIFRydWU6CisgICAgICBpZiBkYXRldGltZS5kYXRldGltZS5ub3coKSA+IGVuZF90aW1lOgorICAgICAgICBwcmludCAnVGVzdCB3YXMgcnVuIGZvciAlZCBzZWNvbmRzJyAlIGNvbmZpZy5nbG9iYWxfc2V0dGluZ3MudGVzdF9kdXJhdGlvbl9zZWNzCisgICAgICAgIGJyZWFrCisKKyAgICAgICMgQ2hlY2sgaWYgZWl0aGVyIHN0cmVzcyBzZXJ2ZXIgb3IgY2xpZW50cyBoYXZlIGZhaWxlZCAoYnR3LCB0aGUgYnFfaGVscGVyCisgICAgICAjIG1vbml0b3JzIGFsbCB0aGUgcm93cyBpbiB0aGUgc3VtbWFyeSB0YWJsZSBhbmQgY2hlY2tzIGlmIGFueSBvZiB0aGVtCisgICAgICAjIGhhdmUgYSBmYWlsdXJlIHN0YXR1cykKKyAgICAgIGlmIGJxX2hlbHBlci5jaGVja19pZl9hbnlfdGVzdHNfZmFpbGVkKCk6CisgICAgICAgIGlzX3N1Y2Nlc3MgPSBGYWxzZQorICAgICAgICBwcmludCAnU29tZSB0ZXN0cyBmYWlsZWQuJworICAgICAgICBicmVhayAgIyBEb24ndCAncmV0dXJuJyBoZXJlLiBXZSBzdGlsbCB3YW50IHRvIGNhbGwgYnFfaGVscGVyIHRvIHByaW50IHFwcy9zdW1tYXJ5IHRhYmxlcworCisgICAgICAjIFRlc3RzIHJ1bm5pbmcgZmluZS4gV2FpdCB1bnRpbCBuZXh0IHBvbGwgdGltZSB0byBjaGVjayB0aGUgc3RhdHVzCisgICAgICBwcmludCAnU2xlZXBpbmcgZm9yICVkIHNlY29uZHMuLicgJSBjb25maWcuZ2xvYmFsX3NldHRpbmdzLnRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzCisgICAgICB0aW1lLnNsZWVwKGNvbmZpZy5nbG9iYWxfc2V0dGluZ3MudGVzdF9wb2xsX2ludGVydmFsX3NlY3MpCisKKyAgICAjIFByaW50IEJpcVF1ZXJ5IHRhYmxlcworICAgIGJxX2hlbHBlci5wcmludF9xcHNfcmVjb3JkcygpCisgICAgYnFfaGVscGVyLnByaW50X3N1bW1hcnlfcmVjb3JkcygpCisKKyAgZmluYWxseToKKyAgICAjIElmIHRoZXJlIHdhcyBhIHRlc3QgZmFpbHVyZSwgd2Ugc2hvdWxkIG5vdCBkZWxldGUgdGhlIHBvZHMgc2luY2UgdGhleQorICAgICMgd291bGQgY29udGFpbiB1c2VmdWwgZGVidWcgaW5mb3JtYXRpb24gKGxvZ3MsIGNvcmUgZHVtcHMgZXRjKQorICAgIGlmIGlzX3N1Y2Nlc3M6CisgICAgICBmb3IgbmFtZSwgc2VydmVyX3BvZF9zcGVjIGluIGNvbmZpZy5zZXJ2ZXJfcG9kX3NwZWNzX2RpY3QuaXRlcml0ZW1zKCk6CisgICAgICAgIGdrZS5kZWxldGVfc2VydmVycyhzZXJ2ZXJfcG9kX3NwZWMpCisgICAgICBmb3IgbmFtZSwgY2xpZW50X3BvZF9zcGVjIGluIGNvbmZpZy5jbGllbnRfcG9kX3NwZWNzX2RpY3QuaXRlcml0ZW1zKCk6CisgICAgICAgIGdrZS5kZWxldGVfY2xpZW50cyhjbGllbnRfcG9kX3NwZWMpCisKKyAgcmV0dXJuIGlzX3N1Y2Nlc3MKKworCithcmdwID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgZGVzY3JpcHRpb249J0xhdW5jaCBzdHJlc3MgdGVzdHMgaW4gR0tFJywKKyAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXIpCithcmdwLmFkZF9hcmd1bWVudCgnLS1nY3BfcHJvamVjdF9pZCcsCisgICAgICAgICAgICAgICAgICByZXF1aXJlZD1UcnVlLAorICAgICAgICAgICAgICAgICAgaGVscD0nVGhlIEdvb2dsZSBDbG91ZCBQbGF0Zm9ybSBQcm9qZWN0IElkJykKK2FyZ3AuYWRkX2FyZ3VtZW50KCctLWNvbmZpZ19maWxlJywKKyAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPVRydWUsCisgICAgICAgICAgICAgICAgICB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgIGhlbHA9J1RoZSB0ZXN0IGNvbmZpZyBmaWxlJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgYXJncyA9IGFyZ3AucGFyc2VfYXJncygpCisKKyAgY29uZmlnX2ZpbGVuYW1lID0gYXJncy5jb25maWdfZmlsZQorCisgICMgU2luY2Ugd2Ugd2lsbCBiZSBjaGFuZ2luZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byBncnBjIHJvb3QgaW4gdGhlCisgICMgbmV4dCBzdGVwLCB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIGNvbmZpZyBmaWxlbmFtZSBwYXRoIGlzIGEgcmVsYXRpdmUgcGF0aAorICAjIChpLmUgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBhbmQgaWYgc28sIGNvbnZlcnQgaXQKKyAgIyB0byBhYm9zdWx0ZSBwYXRoCisgIGlmIG5vdCBvcy5wYXRoLmlzYWJzKGNvbmZpZ19maWxlbmFtZSk6CisgICAgY29uZmlnX2ZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGNvbmZpZ19maWxlbmFtZSkKKworICBjb25maWcgPSBDb25maWcoY29uZmlnX2ZpbGVuYW1lLCBhcmdzLmdjcF9wcm9qZWN0X2lkKQorCisgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gZ3JwYyByb290CisgICMgKFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgYWxsIHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gdGhlIGNvbmZpZyBmaWxlIGFyZQorICAjIHN1cHBvc2VkIHRvIGludGVycHJldGVkIGFzIHJlbGF0aXZlIHRvIHRoZSBHUlBDIHJvb3QpCisgIGdycGNfcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oCisgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLCAnLi4vLi4vLi4nKSkKKyAgb3MuY2hkaXIoZ3JwY19yb290KQorCisgIHJ1bl90ZXN0cyhjb25maWcpCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvcnVuX3N0cmVzc190ZXN0c19vbl9na2UucHkgYi90b29scy9ydW5fdGVzdHMvc3RyZXNzX3Rlc3QvcnVuX3N0cmVzc190ZXN0c19vbl9na2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYzNGViMWEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcnVuX3Rlc3RzL3N0cmVzc190ZXN0L3J1bl9zdHJlc3NfdGVzdHNfb25fZ2tlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjIuNwotIyBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotCi1zdHJlc3NfdGVzdF91dGlsc19kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKAotICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLi8uLi9nY3Avc3RyZXNzX3Rlc3QnKSkKLXN5cy5wYXRoLmFwcGVuZChzdHJlc3NfdGVzdF91dGlsc19kaXIpCi1mcm9tIHN0cmVzc190ZXN0X3V0aWxzIGltcG9ydCBCaWdRdWVyeUhlbHBlcgotCi1rdWJlcm5ldGVzX2FwaV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKAotICAgIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLi8uLi9nY3AvdXRpbHMnKSkKLXN5cy5wYXRoLmFwcGVuZChrdWJlcm5ldGVzX2FwaV9kaXIpCi0KLWltcG9ydCBrdWJlcm5ldGVzX2FwaQotCi1fR1JQQ19ST09UID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbigKLSAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pLCAnLi4vLi4vLi4nKSkKLW9zLmNoZGlyKF9HUlBDX1JPT1QpCi0KLSMgbnVtIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIEdLRSBpbWFnZSB0byBzdGFydCBhbmQgd2FybXVwCi1fR0tFX0lNQUdFX1dBUk1VUF9XQUlUX1NFQ1MgPSA2MAotCi1fU0VSVkVSX1BPRF9OQU1FID0gJ3N0cmVzcy1zZXJ2ZXInCi1fQ0xJRU5UX1BPRF9OQU1FX1BSRUZJWCA9ICdzdHJlc3MtY2xpZW50JwotX0RBVEFTRVRfSURfUFJFRklYID0gJ3N0cmVzc190ZXN0JwotX1NVTU1BUllfVEFCTEVfSUQgPSAnc3VtbWFyeScKLV9RUFNfVEFCTEVfSUQgPSAncXBzJwotCi1fREVGQVVMVF9ET0NLRVJfSU1BR0VfTkFNRSA9ICdncnBjX3N0cmVzc190ZXN0JwotCi0jIFRoZSBkZWZhdWx0IHBvcnQgb24gd2hpY2ggdGhlIGt1YmVybmV0ZXMgcHJveHkgc2VydmVyIGlzIHN0YXJ0ZWQgb24gbG9jYWxob3N0Ci0jIChpLmUga3ViZWN0bCBwcm94eSAtLXBvcnQ9PHBvcnQ+KQotX0RFRkFVTFRfS1VCRVJORVRFU19QUk9YWV9QT1JUID0gODAwMQotCi0jIEhvdyBmcmVxdWVudGx5IHNob3VsZCB0aGUgc3RyZXNzIGNsaWVudCB3cmFwcGVyIHNjcmlwdCAocnVubmluZyBpbnNpZGUgYSBHS0UKLSMgY29udGFpbmVyKSBwb2xsIHRoZSBoZWFsdGggb2YgdGhlIHN0cmVzcyBjbGllbnQgKGFsc28gcnVubmluZyBpbnNpZGUgdGhlIEdLRQotIyBjb250YWluZXIpIGFuZCB1cGxvYWQgbWV0cmljcyB0byBCaWdRdWVyeQotX0RFRkFVTFRfU1RSRVNTX0NMSUVOVF9QT0xMX0lOVEVSVkFMX1NFQ1MgPSA2MAotCi0jIFRoZSBkZWZhdWx0IHNldHRpbmcgZm9yIHN0cmVzcyB0ZXN0IHNlcnZlciBhbmQgY2xpZW50Ci1fREVGQVVMVF9TVFJFU1NfU0VSVkVSX1BPUlQgPSA4MDgwCi1fREVGQVVMVF9NRVRSSUNTX1BPUlQgPSA4MDgxCi1fREVGQVVMVF9URVNUX0NBU0VTX1NUUiA9ICdlbXB0eV91bmFyeToxLGxhcmdlX3VuYXJ5OjEsY2xpZW50X3N0cmVhbWluZzoxLHNlcnZlcl9zdHJlYW1pbmc6MSxlbXB0eV9zdHJlYW06MScKLV9ERUZBVUxUX05VTV9DSEFOTkVMU19QRVJfU0VSVkVSID0gNQotX0RFRkFVTFRfTlVNX1NUVUJTX1BFUl9DSEFOTkVMID0gMTAKLV9ERUZBVUxUX01FVFJJQ1NfQ09MTEVDVElPTl9JTlRFUlZBTF9TRUNTID0gMzAKLQotIyBOdW1iZXIgb2Ygc3RyZXNzIGNsaWVudCBpbnN0YW5jZXMgdG8gbGF1bmNoCi1fREVGQVVMVF9OVU1fQ0xJRU5UUyA9IDMKLQotIyBIb3cgZnJlcXVlbnRseSBzaG91bGQgdGhpcyB0ZXN0IG1vbml0b3IgdGhlIGhlYWx0aCBvZiBTdHJlc3MgY2xpZW50cyBhbmQKLSMgU2VydmVycyBydW5uaW5nIGluIEdLRQotX0RFRkFVTFRfVEVTVF9QT0xMX0lOVEVSVkFMX1NFQ1MgPSA2MAotCi0jIERlZmF1bHQgcnVuIHRpbWUgZm9yIHRoaXMgdGVzdCAoMiBob3VyKQotX0RFRkFVTFRfVEVTVF9EVVJBVElPTl9TRUNTID0gNzIwMAotCi0jIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBpdCB3b3VsZCB0YWtlIGEgR0tFIHBvZCB0byB3YXJtIHVwIChpLmUgZ2V0IHRvICdSdW5uaW5nJwotIyBzdGF0ZSBmcm9tIHRoZSB0aW1lIG9mIGNyZWF0aW9uKS4gSWRlYWxseSB0aGlzIGlzIHNvbWV0aGluZyB0aGUgdGVzdCBzaG91bGQKLSMgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgYnkgdXNpbmcgS3ViZXJuZXRlcyBBUEkgdG8gcG9sbCB0aGUgcG9kcyBzdGF0dXMuCi1fREVGQVVMVF9HS0VfV0FSTVVQX1NFQ1MgPSA2MAotCi0KLWNsYXNzIEt1YmVybmV0ZXNQcm94eToKLSAgIiIiIENsYXNzIHRvIHN0YXJ0IGEgcHJveHkgb24gbG9jYWxob3N0IHRvIHRoZSBLdWJlcm5ldGVzIEFQSSBzZXJ2ZXIgIiIiCi0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIGFwaV9wb3J0KToKLSAgICBzZWxmLnBvcnQgPSBhcGlfcG9ydAotICAgIHNlbGYucCA9IE5vbmUKLSAgICBzZWxmLnN0YXJ0ZWQgPSBGYWxzZQotCi0gIGRlZiBzdGFydChzZWxmKToKLSAgICBjbWQgPSBbJ2t1YmVjdGwnLCAncHJveHknLCAnLS1wb3J0PSVkJyAlIHNlbGYucG9ydF0KLSAgICBzZWxmLnAgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3M9Y21kKQotICAgIHNlbGYuc3RhcnRlZCA9IFRydWUKLSAgICB0aW1lLnNsZWVwKDIpCi0gICAgcHJpbnQgJy4uU3RhcnRlZCcKLQotICBkZWYgZ2V0X3BvcnQoc2VsZik6Ci0gICAgcmV0dXJuIHNlbGYucG9ydAotCi0gIGRlZiBpc19zdGFydGVkKHNlbGYpOgotICAgIHJldHVybiBzZWxmLnN0YXJ0ZWQKLQotICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICBpZiBzZWxmLnAgaXMgbm90IE5vbmU6Ci0gICAgICBwcmludCAnU2h1dHRpbmcgZG93biBLdWJlcm5ldGVzIHByb3h5Li4nCi0gICAgICBzZWxmLnAua2lsbCgpCi0KLQotY2xhc3MgVGVzdFNldHRpbmdzOgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBidWlsZF9kb2NrZXJfaW1hZ2UsIHRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzLAotICAgICAgICAgICAgICAgdGVzdF9kdXJhdGlvbl9zZWNzLCBrdWJlcm5ldGVzX3Byb3h5X3BvcnQpOgotICAgIHNlbGYuYnVpbGRfZG9ja2VyX2ltYWdlID0gYnVpbGRfZG9ja2VyX2ltYWdlCi0gICAgc2VsZi50ZXN0X3BvbGxfaW50ZXJ2YWxfc2VjcyA9IHRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzCi0gICAgc2VsZi50ZXN0X2R1cmF0aW9uX3NlY3MgPSB0ZXN0X2R1cmF0aW9uX3NlY3MKLSAgICBzZWxmLmt1YmVybmV0ZXNfcHJveHlfcG9ydCA9IGt1YmVybmV0ZXNfcHJveHlfcG9ydAotCi0KLWNsYXNzIEdrZVNldHRpbmdzOgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0X2lkLCBkb2NrZXJfaW1hZ2VfbmFtZSk6Ci0gICAgc2VsZi5wcm9qZWN0X2lkID0gcHJvamVjdF9pZAotICAgIHNlbGYuZG9ja2VyX2ltYWdlX25hbWUgPSBkb2NrZXJfaW1hZ2VfbmFtZQotICAgIHNlbGYudGFnX25hbWUgPSAnZ2NyLmlvLyVzLyVzJyAlIChwcm9qZWN0X2lkLCBkb2NrZXJfaW1hZ2VfbmFtZSkKLQotCi1jbGFzcyBCaWdRdWVyeVNldHRpbmdzOgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBydW5faWQsIGRhdGFzZXRfaWQsIHN1bW1hcnlfdGFibGVfaWQsIHFwc190YWJsZV9pZCk6Ci0gICAgc2VsZi5ydW5faWQgPSBydW5faWQKLSAgICBzZWxmLmRhdGFzZXRfaWQgPSBkYXRhc2V0X2lkCi0gICAgc2VsZi5zdW1tYXJ5X3RhYmxlX2lkID0gc3VtbWFyeV90YWJsZV9pZAotICAgIHNlbGYucXBzX3RhYmxlX2lkID0gcXBzX3RhYmxlX2lkCi0KLQotY2xhc3MgU3RyZXNzU2VydmVyU2V0dGluZ3M6Ci0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9wb2RfbmFtZSwgc2VydmVyX3BvcnQpOgotICAgIHNlbGYuc2VydmVyX3BvZF9uYW1lID0gc2VydmVyX3BvZF9uYW1lCi0gICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlcnZlcl9wb3J0Ci0KLQotY2xhc3MgU3RyZXNzQ2xpZW50U2V0dGluZ3M6Ci0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIG51bV9jbGllbnRzLCBjbGllbnRfcG9kX25hbWVfcHJlZml4LCBzZXJ2ZXJfcG9kX25hbWUsCi0gICAgICAgICAgICAgICBzZXJ2ZXJfcG9ydCwgbWV0cmljc19wb3J0LCBtZXRyaWNzX2NvbGxlY3Rpb25faW50ZXJ2YWxfc2VjcywKLSAgICAgICAgICAgICAgIHN0cmVzc19jbGllbnRfcG9sbF9pbnRlcnZhbF9zZWNzLCBudW1fY2hhbm5lbHNfcGVyX3NlcnZlciwKLSAgICAgICAgICAgICAgIG51bV9zdHVic19wZXJfY2hhbm5lbCwgdGVzdF9jYXNlc19zdHIpOgotICAgIHNlbGYubnVtX2NsaWVudHMgPSBudW1fY2xpZW50cwotICAgIHNlbGYuY2xpZW50X3BvZF9uYW1lX3ByZWZpeCA9IGNsaWVudF9wb2RfbmFtZV9wcmVmaXgKLSAgICBzZWxmLnNlcnZlcl9wb2RfbmFtZSA9IHNlcnZlcl9wb2RfbmFtZQotICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZXJ2ZXJfcG9ydAotICAgIHNlbGYubWV0cmljc19wb3J0ID0gbWV0cmljc19wb3J0Ci0gICAgc2VsZi5tZXRyaWNzX2NvbGxlY3Rpb25faW50ZXJ2YWxfc2VjcyA9IG1ldHJpY3NfY29sbGVjdGlvbl9pbnRlcnZhbF9zZWNzCi0gICAgc2VsZi5zdHJlc3NfY2xpZW50X3BvbGxfaW50ZXJ2YWxfc2VjcyA9IHN0cmVzc19jbGllbnRfcG9sbF9pbnRlcnZhbF9zZWNzCi0gICAgc2VsZi5udW1fY2hhbm5lbHNfcGVyX3NlcnZlciA9IG51bV9jaGFubmVsc19wZXJfc2VydmVyCi0gICAgc2VsZi5udW1fc3R1YnNfcGVyX2NoYW5uZWwgPSBudW1fc3R1YnNfcGVyX2NoYW5uZWwKLSAgICBzZWxmLnRlc3RfY2FzZXNfc3RyID0gdGVzdF9jYXNlc19zdHIKLQotICAgICMgPT0gRGVyaXZlZCBwcm9wZXJ0aWVzID09Ci0gICAgIyBOb3RlOiBDbGllbnQgY2FuIGFjY2VwdCBhIGxpc3Qgb2Ygc2VydmVyIGFkZHJlc3NlcyAoYSBjb21tYSBzZXBhcmF0ZWQgbGlzdAotICAgICMgb2YgJ3NlcnZlcl9uYW1lOnNlcnZlcl9wb3J0JykuIEluIHRoaXMgY2FzZSwgd2Ugb25seSBoYXZlIG9uZSBzZXJ2ZXIKLSAgICAjIGFkZHJlc3MgdG8gcGFzcwotICAgIHNlbGYuc2VydmVyX2FkZHJlc3NlcyA9ICclcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsOiVkJyAlICgKLSAgICAgICAgc2VydmVyX3BvZF9uYW1lLCBzZXJ2ZXJfcG9ydCkKLSAgICBzZWxmLmNsaWVudF9wb2RfbmFtZXNfbGlzdCA9IFsnJXMtJWQnICUgKGNsaWVudF9wb2RfbmFtZV9wcmVmaXgsIGkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbnVtX2NsaWVudHMgKyAxKV0KLQotCi1kZWYgX2J1aWxkX2RvY2tlcl9pbWFnZShpbWFnZV9uYW1lLCB0YWdfbmFtZSk6Ci0gICIiIiBCdWlsZCB0aGUgZG9ja2VyIGltYWdlIGFuZCBhZGQgdGFnIGl0IHRvIHRoZSBHS0UgcmVwb3NpdG9yeSAiIiIKLSAgcHJpbnQgJ0J1aWxkaW5nIGRvY2tlciBpbWFnZTogJXMnICUgaW1hZ2VfbmFtZQotICBvcy5lbnZpcm9uWydJTlRFUk9QX0lNQUdFJ10gPSBpbWFnZV9uYW1lCi0gIG9zLmVudmlyb25bJ0lOVEVST1BfSU1BR0VfUkVQT1NJVE9SWV9UQUcnXSA9IHRhZ19uYW1lCi0gICMgTm90ZSB0aGF0ICdCQVNFX05BTUUnIEhBUyB0byBiZSAnZ3JwY19pbnRlcm9wX3N0cmVzc19jeHgnIHNpbmNlIHRoZSBzY3JpcHQKLSAgIyBidWlsZF9pbnRlcm9wX3N0cmVzc19pbWFnZS5zaCBpbnZva2VzIHRoZSBmb2xsb3dpbmcgc2NyaXB0OgotICAjICAgdG9vbHMvZG9ja2VyZmlsZS8kQkFTRV9OQU1FL2J1aWxkX2ludGVyb3Bfc3RyZXNzLnNoCi0gIG9zLmVudmlyb25bJ0JBU0VfTkFNRSddID0gJ2dycGNfaW50ZXJvcF9zdHJlc3NfY3h4JwotICBjbWQgPSBbJ3Rvb2xzL2plbmtpbnMvYnVpbGRfaW50ZXJvcF9zdHJlc3NfaW1hZ2Uuc2gnXQotICByZXRjb2RlID0gc3VicHJvY2Vzcy5jYWxsKGFyZ3M9Y21kKQotICBpZiByZXRjb2RlICE9IDA6Ci0gICAgcHJpbnQgJ0Vycm9yIGluIGJ1aWxkaW5nIGRvY2tlciBpbWFnZScKLSAgICByZXR1cm4gRmFsc2UKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgX3B1c2hfZG9ja2VyX2ltYWdlX3RvX2drZV9yZWdpc3RyeShkb2NrZXJfdGFnX25hbWUpOgotICAiIiJFeGVjdXRlcyAnZ2Nsb3VkIGRvY2tlciBwdXNoIDxkb2NrZXJfdGFnX25hbWU+JyB0byBwdXNoIHRoZSBpbWFnZSB0byBHS0UgcmVnaXN0cnkiIiIKLSAgY21kID0gWydnY2xvdWQnLCAnZG9ja2VyJywgJ3B1c2gnLCBkb2NrZXJfdGFnX25hbWVdCi0gIHByaW50ICdQdXNoaW5nICVzIHRvIEdLRSByZWdpc3RyeS4uJyAlIGRvY2tlcl90YWdfbmFtZQotICByZXRjb2RlID0gc3VicHJvY2Vzcy5jYWxsKGFyZ3M9Y21kKQotICBpZiByZXRjb2RlICE9IDA6Ci0gICAgcHJpbnQgJ0Vycm9yIGluIHB1c2hpbmcgZG9ja2VyIGltYWdlICVzIHRvIHRoZSBHS0UgcmVnaXN0cnknICUgZG9ja2VyX3RhZ19uYW1lCi0gICAgcmV0dXJuIEZhbHNlCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIF9sYXVuY2hfc2VydmVyKGdrZV9zZXR0aW5ncywgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncywgYnFfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAga3ViZXJuZXRlc19wcm94eSk6Ci0gICIiIiBMYXVuY2hlcyBhIHN0cmVzcyB0ZXN0IHNlcnZlciBpbnN0YW5jZSBpbiBHS0UgY2x1c3RlciAiIiIKLSAgaWYgbm90IGt1YmVybmV0ZXNfcHJveHkuaXNfc3RhcnRlZDoKLSAgICBwcmludCAnS3ViZXJuZXRlcyBwcm94eSBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbicKLSAgICByZXR1cm4gRmFsc2UKLQotICAjIFRoaXMgaXMgdGhlIHdyYXBwZXIgc2NyaXB0IHRoYXQgaXMgcnVuIGluIHRoZSBjb250YWluZXIuIFRoaXMgc2NyaXB0IHJ1bnMKLSAgIyB0aGUgYWN0dWFsIHN0cmVzcyB0ZXN0IHNlcnZlcgotICBzZXJ2ZXJfY21kX2xpc3QgPSBbJy92YXIvbG9jYWwvZ2l0L2dycGMvdG9vbHMvZ2NwL3N0cmVzc190ZXN0L3J1bl9zZXJ2ZXIucHknXQotCi0gICMgcnVuX3NlcnZlci5weSBkb2VzIG5vdCB0YWtlIGFueSBhcmdzIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gVGhlIGFyZ3MgYXJlCi0gICMgaW5zdGVhZCBwYXNzZWQgdmlhIGVudmlyb25tZW50IHZhcmlhYmxlcyAoc2VlIHNlcnZlcl9lbnYgYmVsb3cpCi0gIHNlcnZlcl9hcmdfbGlzdCA9IFtdCi0KLSAgIyBUaGUgcGFyYW1ldGVycyB0byB0aGUgc2NyaXB0IHJ1bl9zZXJ2ZXIucHkgYXJlIGluamVjdGVkIGludG8gdGhlIGNvbnRhaW5lcgotICAjIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgc2VydmVyX2VudiA9IHsKLSAgICAgICdTVFJFU1NfVEVTVF9JTUFHRV9UWVBFJzogJ1NFUlZFUicsCi0gICAgICAnU1RSRVNTX1RFU1RfSU1BR0UnOiAnL3Zhci9sb2NhbC9naXQvZ3JwYy9iaW5zL29wdC9pbnRlcm9wX3NlcnZlcicsCi0gICAgICAnU1RSRVNTX1RFU1RfQVJHU19TVFInOiAnLS1wb3J0PSVzJyAlIHN0cmVzc19zZXJ2ZXJfc2V0dGluZ3Muc2VydmVyX3BvcnQsCi0gICAgICAnUlVOX0lEJzogYnFfc2V0dGluZ3MucnVuX2lkLAotICAgICAgJ1BPRF9OQU1FJzogc3RyZXNzX3NlcnZlcl9zZXR0aW5ncy5zZXJ2ZXJfcG9kX25hbWUsCi0gICAgICAnR0NQX1BST0pFQ1RfSUQnOiBna2Vfc2V0dGluZ3MucHJvamVjdF9pZCwKLSAgICAgICdEQVRBU0VUX0lEJzogYnFfc2V0dGluZ3MuZGF0YXNldF9pZCwKLSAgICAgICdTVU1NQVJZX1RBQkxFX0lEJzogYnFfc2V0dGluZ3Muc3VtbWFyeV90YWJsZV9pZCwKLSAgICAgICdRUFNfVEFCTEVfSUQnOiBicV9zZXR0aW5ncy5xcHNfdGFibGVfaWQKLSAgfQotCi0gICMgTGF1bmNoIFNlcnZlcgotICBpc19zdWNjZXNzID0ga3ViZXJuZXRlc19hcGkuY3JlYXRlX3BvZF9hbmRfc2VydmljZSgKLSAgICAgICdsb2NhbGhvc3QnLAotICAgICAga3ViZXJuZXRlc19wcm94eS5nZXRfcG9ydCgpLAotICAgICAgJ2RlZmF1bHQnLCAgIyBVc2UgJ2RlZmF1bHQnIG5hbWVzcGFjZQotICAgICAgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncy5zZXJ2ZXJfcG9kX25hbWUsCi0gICAgICBna2Vfc2V0dGluZ3MudGFnX25hbWUsCi0gICAgICBbc3RyZXNzX3NlcnZlcl9zZXR0aW5ncy5zZXJ2ZXJfcG9ydF0sICAjIFBvcnQgdGhhdCBzaG91bGQgYmUgZXhwb3NlZAotICAgICAgc2VydmVyX2NtZF9saXN0LAotICAgICAgc2VydmVyX2FyZ19saXN0LAotICAgICAgc2VydmVyX2VudiwKLSAgICAgIFRydWUgICMgSGVhZGxlc3MgPSBUcnVlIGZvciBzZXJ2ZXIuIFNpbmNlIHdlIHdhbnQgRE5TIHJlY29yZHMgdG8gYmUgY3JlYXRlZCBieSBHS0UKLSAgKQotCi0gIHJldHVybiBpc19zdWNjZXNzCi0KLQotZGVmIF9sYXVuY2hfY2xpZW50KGdrZV9zZXR0aW5ncywgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncywgc3RyZXNzX2NsaWVudF9zZXR0aW5ncywKLSAgICAgICAgICAgICAgICAgICBicV9zZXR0aW5ncywga3ViZXJuZXRlc19wcm94eSk6Ci0gICIiIiBMYXVuY2hlcyBhIGNvbmZpZ3VyYWJsZSBudW1iZXIgb2Ygc3RyZXNzIHRlc3QgY2xpZW50cyBvbiBHS0UgY2x1c3RlciAiIiIKLSAgaWYgbm90IGt1YmVybmV0ZXNfcHJveHkuaXNfc3RhcnRlZDoKLSAgICBwcmludCAnS3ViZXJuZXRlcyBwcm94eSBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbicKLSAgICByZXR1cm4gRmFsc2UKLQotICBzdHJlc3NfY2xpZW50X2FyZ19saXN0ID0gWwotICAgICAgJy0tc2VydmVyX2FkZHJlc3Nlcz0lcycgJSBzdHJlc3NfY2xpZW50X3NldHRpbmdzLnNlcnZlcl9hZGRyZXNzZXMsCi0gICAgICAnLS10ZXN0X2Nhc2VzPSVzJyAlIHN0cmVzc19jbGllbnRfc2V0dGluZ3MudGVzdF9jYXNlc19zdHIsCi0gICAgICAnLS1udW1fc3R1YnNfcGVyX2NoYW5uZWw9JWQnICUKLSAgICAgIHN0cmVzc19jbGllbnRfc2V0dGluZ3MubnVtX3N0dWJzX3Blcl9jaGFubmVsCi0gIF0KLQotICAjIFRoaXMgaXMgdGhlIHdyYXBwZXIgc2NyaXB0IHRoYXQgaXMgcnVuIGluIHRoZSBjb250YWluZXIuIFRoaXMgc2NyaXB0IHJ1bnMKLSAgIyB0aGUgYWN0dWFsIHN0cmVzcyBjbGllbnQKLSAgY2xpZW50X2NtZF9saXN0ID0gWycvdmFyL2xvY2FsL2dpdC9ncnBjL3Rvb2xzL2djcC9zdHJlc3NfdGVzdC9ydW5fY2xpZW50LnB5J10KLQotICAjIHJ1bl9jbGllbnQucHkgdGFrZXMgbm8gYXJncy4gQWxsIGFyZ3MgYXJlIHBhc3NlZCBhcyBlbnYgdmFyaWFibGVzIChzZWUKLSAgIyBjbGllbnRfZW52KQotICBjbGllbnRfYXJnX2xpc3QgPSBbXQotCi0gIG1ldHJpY3Nfc2VydmVyX2FkZHJlc3MgPSAnbG9jYWxob3N0OiVkJyAlIHN0cmVzc19jbGllbnRfc2V0dGluZ3MubWV0cmljc19wb3J0Ci0gIG1ldHJpY3NfY2xpZW50X2FyZ19saXN0ID0gWwotICAgICAgJy0tbWV0cmljc19zZXJ2ZXJfYWRkcmVzcz0lcycgJSBtZXRyaWNzX3NlcnZlcl9hZGRyZXNzLAotICAgICAgJy0tdG90YWxfb25seT10cnVlJwotICBdCi0KLSAgIyBUaGUgcGFyYW1ldGVycyB0byB0aGUgc2NyaXB0IHJ1bl9jbGllbnQucHkgYXJlIGluamVjdGVkIGludG8gdGhlIGNvbnRhaW5lcgotICAjIHZpYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgY2xpZW50X2VudiA9IHsKLSAgICAgICdTVFJFU1NfVEVTVF9JTUFHRV9UWVBFJzogJ0NMSUVOVCcsCi0gICAgICAnU1RSRVNTX1RFU1RfSU1BR0UnOiAnL3Zhci9sb2NhbC9naXQvZ3JwYy9iaW5zL29wdC9zdHJlc3NfdGVzdCcsCi0gICAgICAnU1RSRVNTX1RFU1RfQVJHU19TVFInOiAnICcuam9pbihzdHJlc3NfY2xpZW50X2FyZ19saXN0KSwKLSAgICAgICdNRVRSSUNTX0NMSUVOVF9JTUFHRSc6ICcvdmFyL2xvY2FsL2dpdC9ncnBjL2JpbnMvb3B0L21ldHJpY3NfY2xpZW50JywKLSAgICAgICdNRVRSSUNTX0NMSUVOVF9BUkdTX1NUUic6ICcgJy5qb2luKG1ldHJpY3NfY2xpZW50X2FyZ19saXN0KSwKLSAgICAgICdSVU5fSUQnOiBicV9zZXR0aW5ncy5ydW5faWQsCi0gICAgICAnUE9MTF9JTlRFUlZBTF9TRUNTJzoKLSAgICAgICAgICBzdHIoc3RyZXNzX2NsaWVudF9zZXR0aW5ncy5zdHJlc3NfY2xpZW50X3BvbGxfaW50ZXJ2YWxfc2VjcyksCi0gICAgICAnR0NQX1BST0pFQ1RfSUQnOiBna2Vfc2V0dGluZ3MucHJvamVjdF9pZCwKLSAgICAgICdEQVRBU0VUX0lEJzogYnFfc2V0dGluZ3MuZGF0YXNldF9pZCwKLSAgICAgICdTVU1NQVJZX1RBQkxFX0lEJzogYnFfc2V0dGluZ3Muc3VtbWFyeV90YWJsZV9pZCwKLSAgICAgICdRUFNfVEFCTEVfSUQnOiBicV9zZXR0aW5ncy5xcHNfdGFibGVfaWQKLSAgfQotCi0gIGZvciBwb2RfbmFtZSBpbiBzdHJlc3NfY2xpZW50X3NldHRpbmdzLmNsaWVudF9wb2RfbmFtZXNfbGlzdDoKLSAgICBjbGllbnRfZW52WydQT0RfTkFNRSddID0gcG9kX25hbWUKLSAgICBpc19zdWNjZXNzID0ga3ViZXJuZXRlc19hcGkuY3JlYXRlX3BvZF9hbmRfc2VydmljZSgKLSAgICAgICAgJ2xvY2FsaG9zdCcsICAjIFNpbmNlIHByb3h5IGlzIHJ1bm5pbmcgb24gbG9jYWxob3N0Ci0gICAgICAgIGt1YmVybmV0ZXNfcHJveHkuZ2V0X3BvcnQoKSwKLSAgICAgICAgJ2RlZmF1bHQnLCAgIyBkZWZhdWx0IG5hbWVzcGFjZQotICAgICAgICBwb2RfbmFtZSwKLSAgICAgICAgZ2tlX3NldHRpbmdzLnRhZ19uYW1lLAotICAgICAgICBbc3RyZXNzX2NsaWVudF9zZXR0aW5ncy5tZXRyaWNzX3BvcnQKLSAgICAgICAgXSwgICMgQ2xpZW50IHBvZHMgZXhwb3NlIG1ldHJpY3MgcG9ydAotICAgICAgICBjbGllbnRfY21kX2xpc3QsCi0gICAgICAgIGNsaWVudF9hcmdfbGlzdCwKLSAgICAgICAgY2xpZW50X2VudiwKLSAgICAgICAgRmFsc2UgICMgQ2xpZW50IGlzIG5vdCBhIGhlYWRsZXNzIHNlcnZpY2UKLSAgICApCi0gICAgaWYgbm90IGlzX3N1Y2Nlc3M6Ci0gICAgICBwcmludCAnRXJyb3IgaW4gbGF1bmNoaW5nIGNsaWVudCAlcycgJSBwb2RfbmFtZQotICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgX2xhdW5jaF9zZXJ2ZXJfYW5kX2NsaWVudChna2Vfc2V0dGluZ3MsIHN0cmVzc19zZXJ2ZXJfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlc3NfY2xpZW50X3NldHRpbmdzLCBicV9zZXR0aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt1YmVybmV0ZXNfcHJveHlfcG9ydCk6Ci0gICMgU3RhcnQga3ViZXJuZXRlcyBwcm94eQotICBwcmludCAnS3ViZXJuZXRlcyBwcm94eScKLSAga3ViZXJuZXRlc19wcm94eSA9IEt1YmVybmV0ZXNQcm94eShrdWJlcm5ldGVzX3Byb3h5X3BvcnQpCi0gIGt1YmVybmV0ZXNfcHJveHkuc3RhcnQoKQotCi0gIHByaW50ICdMYXVuY2hpbmcgc2VydmVyLi4nCi0gIGlzX3N1Y2Nlc3MgPSBfbGF1bmNoX3NlcnZlcihna2Vfc2V0dGluZ3MsIHN0cmVzc19zZXJ2ZXJfc2V0dGluZ3MsIGJxX3NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3ViZXJuZXRlc19wcm94eSkKLSAgaWYgbm90IGlzX3N1Y2Nlc3M6Ci0gICAgcHJpbnQgJ0Vycm9yIGluIGxhdW5jaGluZyBzZXJ2ZXInCi0gICAgcmV0dXJuIEZhbHNlCi0KLSAgIyBTZXJ2ZXIgdGFrZXMgYSB3aGlsZSB0byBzdGFydC4KLSAgIyBUT0RPKHNyZWUpIFVzZSBLdWJlcm5ldGVzIEFQSSB0byBxdWVyeSB0aGUgc3RhdHVzIG9mIHRoZSBzZXJ2ZXIgaW5zdGVhZCBvZgotICAjIHNsZWVwaW5nCi0gIHByaW50ICdXYWl0aW5nIGZvciAlcyBzZWNvbmRzIGZvciB0aGUgc2VydmVyIHRvIHN0YXJ0Li4uJyAlIF9HS0VfSU1BR0VfV0FSTVVQX1dBSVRfU0VDUwotICB0aW1lLnNsZWVwKF9HS0VfSU1BR0VfV0FSTVVQX1dBSVRfU0VDUykKLQotICAjIExhdW5jaCBjbGllbnQKLSAgY2xpZW50X3BvZF9uYW1lX3ByZWZpeCA9ICdzdHJlc3MtY2xpZW50JwotICBpc19zdWNjZXNzID0gX2xhdW5jaF9jbGllbnQoZ2tlX3NldHRpbmdzLCBzdHJlc3Nfc2VydmVyX3NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXNzX2NsaWVudF9zZXR0aW5ncywgYnFfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdWJlcm5ldGVzX3Byb3h5KQotCi0gIGlmIG5vdCBpc19zdWNjZXNzOgotICAgIHByaW50ICdFcnJvciBpbiBsYXVuY2hpbmcgY2xpZW50KHMpJwotICAgIHJldHVybiBGYWxzZQotCi0gIHByaW50ICdXYWl0aW5nIGZvciAlcyBzZWNvbmRzIGZvciB0aGUgY2xpZW50IGltYWdlcyB0byBzdGFydC4uLicgJSBfR0tFX0lNQUdFX1dBUk1VUF9XQUlUX1NFQ1MKLSAgdGltZS5zbGVlcChfR0tFX0lNQUdFX1dBUk1VUF9XQUlUX1NFQ1MpCi0gIHJldHVybiBUcnVlCi0KLQotZGVmIF9kZWxldGVfc2VydmVyX2FuZF9jbGllbnQoc3RyZXNzX3NlcnZlcl9zZXR0aW5ncywgc3RyZXNzX2NsaWVudF9zZXR0aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt1YmVybmV0ZXNfcHJveHlfcG9ydCk6Ci0gIGt1YmVybmV0ZXNfcHJveHkgPSBLdWJlcm5ldGVzUHJveHkoa3ViZXJuZXRlc19wcm94eV9wb3J0KQotICBrdWJlcm5ldGVzX3Byb3h5LnN0YXJ0KCkKLQotICAjIERlbGV0ZSBjbGllbnRzIGZpcnN0Ci0gIGlzX3N1Y2Nlc3MgPSBUcnVlCi0gIGZvciBwb2RfbmFtZSBpbiBzdHJlc3NfY2xpZW50X3NldHRpbmdzLmNsaWVudF9wb2RfbmFtZXNfbGlzdDoKLSAgICBpc19zdWNjZXNzID0ga3ViZXJuZXRlc19hcGkuZGVsZXRlX3BvZF9hbmRfc2VydmljZSgKLSAgICAgICAgJ2xvY2FsaG9zdCcsIGt1YmVybmV0ZXNfcHJveHlfcG9ydCwgJ2RlZmF1bHQnLCBwb2RfbmFtZSkKLSAgICBpZiBub3QgaXNfc3VjY2VzczoKLSAgICAgIHJldHVybiBGYWxzZQotCi0gICMgRGVsZXRlIHNlcnZlcgotICBpc19zdWNjZXNzID0ga3ViZXJuZXRlc19hcGkuZGVsZXRlX3BvZF9hbmRfc2VydmljZSgKLSAgICAgICdsb2NhbGhvc3QnLCBrdWJlcm5ldGVzX3Byb3h5X3BvcnQsICdkZWZhdWx0JywKLSAgICAgIHN0cmVzc19zZXJ2ZXJfc2V0dGluZ3Muc2VydmVyX3BvZF9uYW1lKQotICByZXR1cm4gaXNfc3VjY2VzcwotCi0KLWRlZiBydW5fdGVzdF9tYWluKHRlc3Rfc2V0dGluZ3MsIGdrZV9zZXR0aW5ncywgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncywKLSAgICAgICAgICAgICAgICAgIHN0cmVzc19jbGllbnRfY2xpZW50cyk6Ci0gIGlzX3N1Y2Nlc3MgPSBUcnVlCi0KLSAgaWYgdGVzdF9zZXR0aW5ncy5idWlsZF9kb2NrZXJfaW1hZ2U6Ci0gICAgaXNfc3VjY2VzcyA9IF9idWlsZF9kb2NrZXJfaW1hZ2UoZ2tlX3NldHRpbmdzLmRvY2tlcl9pbWFnZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdrZV9zZXR0aW5ncy50YWdfbmFtZSkKLSAgICBpZiBub3QgaXNfc3VjY2VzczoKLSAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaXNfc3VjY2VzcyA9IF9wdXNoX2RvY2tlcl9pbWFnZV90b19na2VfcmVnaXN0cnkoZ2tlX3NldHRpbmdzLnRhZ19uYW1lKQotICAgIGlmIG5vdCBpc19zdWNjZXNzOgotICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgIyBDcmVhdGUgYSB1bmlxdWUgaWQgZm9yIHRoaXMgcnVuIChOb3RlOiBVc2luZyB0aW1lc3RhbXAgaW5zdGVhZCBvZiBVVUlEIHRvCi0gICMgbWFrZSBpdCBlYXNpZXIgdG8gZGVkdWNlIHRoZSBkYXRlL3RpbWUgb2YgdGhlIHJ1biBqdXN0IGJ5IGxvb2tpbmcgYXQgdGhlIHJ1bgotICAjIHJ1biBpZC4gVGhpcyBpcyB1c2VmdWwgaW4gZGVidWdnaW5nIHdoZW4gbG9va2luZyBhdCByZWNvcmRzIGluIEJpcSBxdWVyeSkKLSAgcnVuX2lkID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZXyVtXyVkXyVIXyVNXyVTJykKLSAgZGF0YXNldF9pZCA9ICclc18lcycgJSAoX0RBVEFTRVRfSURfUFJFRklYLCBydW5faWQpCi0KLSAgIyBCaWcgUXVlcnkgc2V0dGluZ3MgKGNvbW1vbiBmb3IgYm90aCBTdHJlc3MgU2VydmVyIGFuZCBDbGllbnQpCi0gIGJxX3NldHRpbmdzID0gQmlnUXVlcnlTZXR0aW5ncyhydW5faWQsIGRhdGFzZXRfaWQsIF9TVU1NQVJZX1RBQkxFX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1FQU19UQUJMRV9JRCkKLQotICBicV9oZWxwZXIgPSBCaWdRdWVyeUhlbHBlcihydW5faWQsICcnLCAnJywgYXJncy5wcm9qZWN0X2lkLCBkYXRhc2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfU1VNTUFSWV9UQUJMRV9JRCwgX1FQU19UQUJMRV9JRCkKLSAgYnFfaGVscGVyLmluaXRpYWxpemUoKQotCi0gIHRyeToKLSAgICBpc19zdWNjZXNzID0gX2xhdW5jaF9zZXJ2ZXJfYW5kX2NsaWVudChna2Vfc2V0dGluZ3MsIHN0cmVzc19zZXJ2ZXJfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXNzX2NsaWVudF9zZXR0aW5ncywgYnFfc2V0dGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9zZXR0aW5ncy5rdWJlcm5ldGVzX3Byb3h5X3BvcnQpCi0gICAgaWYgbm90IGlzX3N1Y2Nlc3M6Ci0gICAgICByZXR1cm4gRmFsc2UKLQotICAgIHN0YXJ0X3RpbWUgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQotICAgIGVuZF90aW1lID0gc3RhcnRfdGltZSArIGRhdGV0aW1lLnRpbWVkZWx0YSgKLSAgICAgICAgc2Vjb25kcz10ZXN0X3NldHRpbmdzLnRlc3RfZHVyYXRpb25fc2VjcykKLSAgICBwcmludCAnUnVubmluZyB0aGUgdGVzdCB1bnRpbCAlcycgJSBlbmRfdGltZS5pc29mb3JtYXQoKQotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgIGlmIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpID4gZW5kX3RpbWU6Ci0gICAgICAgIHByaW50ICdUZXN0IHdhcyBydW4gZm9yICVkIHNlY29uZHMnICUgdGVzdF9zZXR0aW5ncy50ZXN0X2R1cmF0aW9uX3NlY3MKLSAgICAgICAgYnJlYWsKLQotICAgICAgIyBDaGVjayBpZiBlaXRoZXIgc3RyZXNzIHNlcnZlciBvciBjbGllbnRzIGhhdmUgZmFpbGVkCi0gICAgICBpZiBicV9oZWxwZXIuY2hlY2tfaWZfYW55X3Rlc3RzX2ZhaWxlZCgpOgotICAgICAgICBpc19zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgcHJpbnQgJ1NvbWUgdGVzdHMgZmFpbGVkLicKLSAgICAgICAgYnJlYWsKLQotICAgICAgIyBUaGluZ3Mgc2VlbSB0byBiZSBydW5uaW5nIGZpbmUuIFdhaXQgdW50aWwgbmV4dCBwb2xsIHRpbWUgdG8gY2hlY2sgdGhlCi0gICAgICAjIHN0YXR1cwotICAgICAgcHJpbnQgJ1NsZWVwaW5nIGZvciAlZCBzZWNvbmRzLi4nICUgdGVzdF9zZXR0aW5ncy50ZXN0X3BvbGxfaW50ZXJ2YWxfc2VjcwotICAgICAgdGltZS5zbGVlcCh0ZXN0X3NldHRpbmdzLnRlc3RfcG9sbF9pbnRlcnZhbF9zZWNzKQotCi0gICAgIyBQcmludCBCaXFRdWVyeSB0YWJsZXMKLSAgICBicV9oZWxwZXIucHJpbnRfc3VtbWFyeV9yZWNvcmRzKCkKLSAgICBicV9oZWxwZXIucHJpbnRfcXBzX3JlY29yZHMoKQotCi0gIGZpbmFsbHk6Ci0gICAgIyBJZiBpc19zdWNjZXNzIGlzIEZhbHNlIGF0IHRoaXMgcG9pbnQsIGl0IG1lYW5zIHRoYXQgdGhlIHN0cmVzcyB0ZXN0cyB3ZXJlCi0gICAgIyBzdGFydGVkIHN1Y2Nlc3NmdWxseSBidXQgZmFpbGVkIHdoaWxlIHJ1bm5pbmcgdGhlIHRlc3RzLiBJbiB0aGlzIGNhc2Ugd2UKLSAgICAjIGRvIHNob3VsZCBub3QgZGVsZXRlIHRoZSBwb2RzIChzaW5jZSB0aGV5IGNvbnRhaW4gYWxsIHRoZSBmYWlsdXJlCi0gICAgIyBpbmZvcm1hdGlvbikKLSAgICBpZiBpc19zdWNjZXNzOgotICAgICAgX2RlbGV0ZV9zZXJ2ZXJfYW5kX2NsaWVudChzdHJlc3Nfc2VydmVyX3NldHRpbmdzLCBzdHJlc3NfY2xpZW50X3NldHRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NldHRpbmdzLmt1YmVybmV0ZXNfcHJveHlfcG9ydCkKLQotICByZXR1cm4gaXNfc3VjY2VzcwotCi0KLWFyZ3AgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKLSAgICBkZXNjcmlwdGlvbj0nTGF1bmNoIHN0cmVzcyB0ZXN0cyBpbiBHS0UnLAotICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5Bcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcikKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLXByb2plY3RfaWQnLAotICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J1RoZSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0gUHJvamVjdCBJZCcpCi1hcmdwLmFkZF9hcmd1bWVudCgnLS1udW1fY2xpZW50cycsCi0gICAgICAgICAgICAgICAgICBkZWZhdWx0PTEsCi0gICAgICAgICAgICAgICAgICB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J051bWJlciBvZiBjbGllbnQgaW5zdGFuY2VzIHRvIHN0YXJ0JykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLWRvY2tlcl9pbWFnZV9uYW1lJywKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfRE9DS0VSX0lNQUdFX05BTUUsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdUaGUgbmFtZSBvZiB0aGUgZG9ja2VyIGltYWdlIGNvbnRhaW5pbmcgc3RyZXNzIGNsaWVudCAnCi0gICAgICAgICAgICAgICAgICAnYW5kIHN0cmVzcyBzZXJ2ZXJzJykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLWJ1aWxkX2RvY2tlcl9pbWFnZScsCi0gICAgICAgICAgICAgICAgICBkZXN0PSdidWlsZF9kb2NrZXJfaW1hZ2UnLAotICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgIGhlbHA9J0J1aWxkIGEgZG9ja2VyIGltYWdlIGFuZCBwdXNoIHRvIEdvb2dsZSBDb250YWluZXIgJwotICAgICAgICAgICAgICAgICAgJ1JlZ2lzdHJ5JykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLWRvX25vdF9idWlsZF9kb2NrZXJfaW1hZ2UnLAotICAgICAgICAgICAgICAgICAgZGVzdD0nYnVpbGRfZG9ja2VyX2ltYWdlJywKLSAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICAgICAgICAgICAgICAgaGVscD0nRG8gbm90IGJ1aWxkIGFuZCBwdXNoIGRvY2tlciBpbWFnZSB0byBHb29nbGUgQ29udGFpbmVyICcKLSAgICAgICAgICAgICAgICAgICdSZWdpc3RyeScpCi1hcmdwLnNldF9kZWZhdWx0cyhidWlsZF9kb2NrZXJfaW1hZ2U9VHJ1ZSkKLQotYXJncC5hZGRfYXJndW1lbnQoJy0tdGVzdF9wb2xsX2ludGVydmFsX3NlY3MnLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9URVNUX1BPTExfSU5URVJWQUxfU0VDUywKLSAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgaGVscD0nSG93IGZyZXF1ZW50bHkgc2hvdWxkIHRoaXMgc2NyaXB0IHNob3VsZCBtb25pdG9yIHRoZSAnCi0gICAgICAgICAgICAgICAgICAnaGVhbHRoIG9mIHN0cmVzcyBjbGllbnRzIGFuZCBzZXJ2ZXJzIHJ1bm5pbmcgaW4gdGhlIEdLRSAnCi0gICAgICAgICAgICAgICAgICAnY2x1c3RlcicpCi1hcmdwLmFkZF9hcmd1bWVudCgnLS10ZXN0X2R1cmF0aW9uX3NlY3MnLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9URVNUX0RVUkFUSU9OX1NFQ1MsCi0gICAgICAgICAgICAgICAgICB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J0hvdyBsb25nIHNob3VsZCB0aGlzIHRlc3QgYmUgcnVuJykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLWt1YmVybmV0ZXNfcHJveHlfcG9ydCcsCi0gICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0tVQkVSTkVURVNfUFJPWFlfUE9SVCwKLSAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgaGVscD0nVGhlIHBvcnQgb24gd2hpY2ggdGhlIGt1YmVybmV0ZXMgcHJveHkgKG9uIGxvY2FsaG9zdCknCi0gICAgICAgICAgICAgICAgICAnIGlzIHN0YXJ0ZWQnKQotYXJncC5hZGRfYXJndW1lbnQoJy0tc3RyZXNzX3NlcnZlcl9wb3J0JywKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfU1RSRVNTX1NFUlZFUl9QT1JULAotICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdUaGUgcG9ydCBvbiB3aGljaCB0aGUgc3RyZXNzIHNlcnZlciAoaW4gR0tFICcKLSAgICAgICAgICAgICAgICAgICdjb250YWluZXJzKSBsaXN0ZW5zJykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLXN0cmVzc19jbGllbnRfbWV0cmljc19wb3J0JywKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTUVUUklDU19QT1JULAotICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdUaGUgcG9ydCBvbiB3aGljaCB0aGUgc3RyZXNzIGNsaWVudHMgKGluIEdLRSAnCi0gICAgICAgICAgICAgICAgICAnY29udGFpbmVycykgZXhwb3NlIG1ldHJpY3MnKQotYXJncC5hZGRfYXJndW1lbnQoJy0tc3RyZXNzX2NsaWVudF9wb2xsX2ludGVydmFsX3NlY3MnLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9TVFJFU1NfQ0xJRU5UX1BPTExfSU5URVJWQUxfU0VDUywKLSAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgaGVscD0nSG93IGZyZXF1ZW50bHkgc2hvdWxkIHRoZSBzdHJlc3MgY2xpZW50IHdyYXBwZXIgc2NyaXB0JwotICAgICAgICAgICAgICAgICAgJyBydW5uaW5nIGluc2lkZSBHS0Ugc2hvdWxkIG1vbml0b3IgaGVhbHRoIG9mIHRoZSBhY3R1YWwgJwotICAgICAgICAgICAgICAgICAgJyBzdHJlc3MgY2xpZW50IHByb2Nlc3MgYW5kIHVwbG9hZCB0aGUgbWV0cmljcyB0byBCaWdRdWVyeScpCi1hcmdwLmFkZF9hcmd1bWVudCgnLS1zdHJlc3NfY2xpZW50X21ldHJpY3NfY29sbGVjdGlvbl9pbnRlcnZhbF9zZWNzJywKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTUVUUklDU19DT0xMRUNUSU9OX0lOVEVSVkFMX1NFQ1MsCi0gICAgICAgICAgICAgICAgICB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J0hvdyBmcmVxdWVudGx5IHNob3VsZCBtZXRyaWNzIGJlIGNvbGxlY3RlZCBpbi1tZW1vcnkgb24nCi0gICAgICAgICAgICAgICAgICAnIHRoZSBzdHJlc3MgY2xpZW50cyAocnVubmluZyBpbnNpZGUgR0tFIGNvbnRhaW5lcnMpLiBOb3RlICcKLSAgICAgICAgICAgICAgICAgICd0aGF0IHRoaXMgaXMgTk9UIHRoZSBzYW1lIGFzIHRoZSB1cGxvYWQtdG8tQmlnUXVlcnkgJwotICAgICAgICAgICAgICAgICAgJ2ZyZXF1ZW5jeS4gVGhlIG1ldHJpY3MgdXBsb2FkIGZyZXF1ZW5jeSBpcyBjb250cm9sbGVkIGJ5IHRoZScKLSAgICAgICAgICAgICAgICAgICcgLS1zdHJlc3NfY2xpZW50X3BvbGxfaW50ZXJ2YWxfc2VjcyBmbGFnJykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLXN0cmVzc19jbGllbnRfbnVtX2NoYW5uZWxzX3Blcl9zZXJ2ZXInLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9OVU1fQ0hBTk5FTFNfUEVSX1NFUlZFUiwKLSAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgaGVscD0nVGhlIG51bWJlciBvZiBjaGFubmVscyBjcmVhdGVkIHRvIGVhY2ggc2VydmVyIGZyb20gYSAnCi0gICAgICAgICAgICAgICAgICAnc3RyZXNzIGNsaWVudCcpCi1hcmdwLmFkZF9hcmd1bWVudCgnLS1zdHJlc3NfY2xpZW50X251bV9zdHVic19wZXJfY2hhbm5lbCcsCi0gICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX05VTV9TVFVCU19QRVJfQ0hBTk5FTCwKLSAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgaGVscD0nVGhlIG51bWJlciBvZiBzdHVicyBjcmVhdGVkIHBlciBjaGFubmVsLiBUaGlzIG51bWJlciAnCi0gICAgICAgICAgICAgICAgICAnaW5kaWNhdGVzIHRoZSBtYXggbnVtYmVyIG9mIFJQQ3MgdGhhdCBjYW4gYmUgbWFkZSBpbiAnCi0gICAgICAgICAgICAgICAgICAncGFyYWxsZWwgb24gZWFjaCBjaGFubmVsIGF0IGFueSBnaXZlbiB0aW1lJykKLWFyZ3AuYWRkX2FyZ3VtZW50KCctLXN0cmVzc19jbGllbnRfdGVzdF9jYXNlcycsCi0gICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX1RFU1RfQ0FTRVNfU1RSLAotICAgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBvZiB0ZXN0IGNhc2VzICh3aXRoIHdlaWdodHMpIHRvIGJlIGV4ZWN1dGVkIGJ5IHRoZScKLSAgICAgICAgICAgICAgICAgICcgc3RyZXNzIHRlc3QgY2xpZW50LiBUaGUgbGlzdCBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbicKLSAgICAgICAgICAgICAgICAgICcgIDx0ZXN0Y2FzZV8xOndfMSw8dGVzdF9jYXNlMjp3XzI+Li48dGVzdGNhc2Vfbjp3X24+XG4nCi0gICAgICAgICAgICAgICAgICAnIChOb3RlOiBUaGUgd2VpZ2h0cyBkbyBub3QgaGF2ZSB0byBhZGQgdXAgdG8gMTAwKScpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGFyZ3MgPSBhcmdwLnBhcnNlX2FyZ3MoKQotCi0gIHRlc3Rfc2V0dGluZ3MgPSBUZXN0U2V0dGluZ3MoCi0gICAgICBhcmdzLmJ1aWxkX2RvY2tlcl9pbWFnZSwgYXJncy50ZXN0X3BvbGxfaW50ZXJ2YWxfc2VjcywKLSAgICAgIGFyZ3MudGVzdF9kdXJhdGlvbl9zZWNzLCBhcmdzLmt1YmVybmV0ZXNfcHJveHlfcG9ydCkKLQotICBna2Vfc2V0dGluZ3MgPSBHa2VTZXR0aW5ncyhhcmdzLnByb2plY3RfaWQsIGFyZ3MuZG9ja2VyX2ltYWdlX25hbWUpCi0KLSAgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncyA9IFN0cmVzc1NlcnZlclNldHRpbmdzKF9TRVJWRVJfUE9EX05BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnN0cmVzc19zZXJ2ZXJfcG9ydCkKLSAgc3RyZXNzX2NsaWVudF9zZXR0aW5ncyA9IFN0cmVzc0NsaWVudFNldHRpbmdzKAotICAgICAgYXJncy5udW1fY2xpZW50cywgX0NMSUVOVF9QT0RfTkFNRV9QUkVGSVgsIF9TRVJWRVJfUE9EX05BTUUsCi0gICAgICBhcmdzLnN0cmVzc19zZXJ2ZXJfcG9ydCwgYXJncy5zdHJlc3NfY2xpZW50X21ldHJpY3NfcG9ydCwKLSAgICAgIGFyZ3Muc3RyZXNzX2NsaWVudF9tZXRyaWNzX2NvbGxlY3Rpb25faW50ZXJ2YWxfc2VjcywKLSAgICAgIGFyZ3Muc3RyZXNzX2NsaWVudF9wb2xsX2ludGVydmFsX3NlY3MsCi0gICAgICBhcmdzLnN0cmVzc19jbGllbnRfbnVtX2NoYW5uZWxzX3Blcl9zZXJ2ZXIsCi0gICAgICBhcmdzLnN0cmVzc19jbGllbnRfbnVtX3N0dWJzX3Blcl9jaGFubmVsLCBhcmdzLnN0cmVzc19jbGllbnRfdGVzdF9jYXNlcykKLQotICBydW5fdGVzdF9tYWluKHRlc3Rfc2V0dGluZ3MsIGdrZV9zZXR0aW5ncywgc3RyZXNzX3NlcnZlcl9zZXR0aW5ncywKLSAgICAgICAgICAgICAgICBzdHJlc3NfY2xpZW50X3NldHRpbmdzKQpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dwci9ncHIudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncHIvZ3ByLnZjeHByb2oKaW5kZXggY2RiMTI4ZS4uODcwMjQ2YyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dwci9ncHIudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3ByL2dwci52Y3hwcm9qCkBAIC0xNDcsNiArMTQ3LDIwIEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhbGxvYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19hdG9taWMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19zeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV93aW4zMi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxsb2cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccG9ydF9wbGF0Zm9ybS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZV9idWZmZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX2dlbmVyaWMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3dpbjMyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHRpbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdXBwb3J0XGFsbG9jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcc3VwcG9ydFxhdG0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdXBwb3J0XGF0bV9nY2NfYXRvbWljLmgiIC8+CkBAIC0xNzUsMjAgKzE4OSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcc3VwcG9ydFx0bHNfbXN2Yy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN1cHBvcnRcdGxzX3B0aHJlYWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdXBwb3J0XHVzZWZ1bC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhbGxvYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19hdG9taWMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19zeW5jLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV93aW4zMi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxsb2cuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccG9ydF9wbGF0Zm9ybS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZV9idWZmZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX2dlbmVyaWMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19wb3NpeC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3dpbjMyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHRpbWUuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJccHJvZmlsaW5nXHRpbWVycy5oIiAvPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dwci9ncHIudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dwci9ncHIudmN4cHJvai5maWx0ZXJzCmluZGV4IDhhZjZmZGQuLmI5MzI0MjAgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncHIvZ3ByLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3ByL2dwci52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzNSw2ICsxMzUsNDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGFsbG9jLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX2F0b21pYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX3N5bmMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX3dpbjMyLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGxvZy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwb3J0X3BsYXRmb3JtLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlX2J1ZmZlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfZ2VuZXJpYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3Bvc2l4LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfd2luMzIuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN1cHBvcnRcYWxsb2MuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xzdXBwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yMTksNDggKzI2MSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcc3VwcG9ydFx1c2VmdWwuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xzdXBwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGFsbG9jLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX2F0b21pYy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX3N5bmMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX3dpbjMyLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGxvZy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwb3J0X3BsYXRmb3JtLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlX2J1ZmZlci5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfZ2VuZXJpYy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3Bvc2l4LmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfd2luMzIuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxwcm9maWxpbmdcdGltZXJzLmgiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrKy9ncnBjKysudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKysvZ3JwYysrLnZjeHByb2oKaW5kZXggZDI5ZTY4OS4uMmM2NDQyMSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrKy9ncnBjKysudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrL2dycGMrKy52Y3hwcm9qCkBAIC0yNjgsNiArMjY4LDM3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xncnBjKysuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjbGllbnRfdW5hcnlfY2FsbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3N0cmVhbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2FsbF9ob29rLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfY29udGV4dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF91bmFyeV9jYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbXBsZXRpb25fcXVldWVfdGFnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGdycGNfbGlicmFyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxwcm90b191dGlscy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHJwY19tZXRob2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZWN1cml0eVxhdXRoX2NvbnRleHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJpYWxpemF0aW9uX3RyYWl0cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmVyX2ludGVyZmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZpY2VfdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1c19jb2RlX2VudW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzdHJpbmdfcmVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN5bmNfY3h4MTEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19zdHJlYW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblx0aW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGdycGNfbGlicmFyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxtZXRob2RfaGFuZGxlcl9pbXBsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXHByb3RvX3V0aWxzLmgiIC8+CkBAIC0zMDIsNjIgKzMzMywxOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcc3VwcG9ydFxzdHViX29wdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXHN1cHBvcnRcc3luY19zdHJlYW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXHN1cHBvcnRcdGltZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3N0cmVhbS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2FsbF9ob29rLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfY29udGV4dC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF91bmFyeV9jYWxsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbXBsZXRpb25fcXVldWVfdGFnLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGdycGNfbGlicmFyeS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxwcm90b191dGlscy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHJwY19tZXRob2QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZWN1cml0eVxhdXRoX2NvbnRleHQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJpYWxpemF0aW9uX3RyYWl0cy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmVyX2ludGVyZmFjZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZpY2VfdHlwZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1c19jb2RlX2VudW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzdHJpbmdfcmVmLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN5bmNfY3h4MTEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19zdHJlYW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblx0aW1lLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcY3JlYXRlX2NoYW5uZWxfaW50ZXJuYWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XHNlY3VyZV9jcmVkZW50aWFscy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY29yZV9jb2RlZ2VuLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfYXV0aF9jb250ZXh0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxzZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNsaWVudFxjcmVhdGVfY2hhbm5lbF9pbnRlcm5hbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY29yZV9jb2RlZ2VuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxjcmVhdGVfYXV0aF9jb250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfYXV0aF9jb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxkeW5hbWljX3RocmVhZF9wb29sLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxzZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclx0aHJlYWRfcG9vbF9pbnRlcmZhY2UuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNsaWVudFxzZWN1cmVfY3JlZGVudGlhbHMuY2MiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cYXV0aF9wcm9wZXJ0eV9pdGVyYXRvci5jYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfYXV0aF9jb250ZXh0LmNjIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHNlY3VyZV9jaGFubmVsX2FyZ3VtZW50cy5jYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxzZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmNjIj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGNoYW5uZWwuY2MiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcY2xpZW50X2NvbnRleHQuY2MiPgpAQCAtMzcyLDYgKzM1OSwxMiBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcaW5zZWN1cmVfY3JlZGVudGlhbHMuY2MiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcc2VjdXJlX2NyZWRlbnRpYWxzLmNjIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cYXV0aF9wcm9wZXJ0eV9pdGVyYXRvci5jYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxjaGFubmVsX2FyZ3VtZW50cy5jYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxjb21wbGV0aW9uX3F1ZXVlLmNjIj4KQEAgLTM4MCw2ICszNzMsMTIgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHJwY19tZXRob2QuY2MiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cc2VjdXJlX2F1dGhfY29udGV4dC5jYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfY2hhbm5lbF9hcmd1bWVudHMuY2MiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cc2VjdXJlX2NyZWF0ZV9hdXRoX2NvbnRleHQuY2MiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcYXN5bmNfZ2VuZXJpY19zZXJ2aWNlLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXGNyZWF0ZV9kZWZhdWx0X3RocmVhZF9wb29sLmNjIj4KQEAgLTM4OCw2ICszODcsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcaW5zZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXHNlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcc2VydmVyLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXHNlcnZlcl9idWlsZGVyLmNjIj4KQEAgLTQwNiw4ICs0MDcsNiBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFx1dGlsXHRpbWUuY2MiPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb2RlZ2VuXGNvZGVnZW5faW5pdC5jYyI+Ci0gICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdycGNcZ3JwYy52Y3hwcm9qIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKysvZ3JwYysrLnZjeHByb2ouZmlsdGVycyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKysvZ3JwYysrLnZjeHByb2ouZmlsdGVycwppbmRleCBjOWIzYmI5Li4zNTQ2OGVhIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrL2dycGMrKy52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrKy9ncnBjKysudmN4cHJvai5maWx0ZXJzCkBAIC0xLDI0ICsxLDYgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNsaWVudFxzZWN1cmVfY3JlZGVudGlhbHMuY2MiPgotICAgICAgPEZpbHRlcj5zcmNcY3BwXGNsaWVudDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cYXV0aF9wcm9wZXJ0eV9pdGVyYXRvci5jYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfYXV0aF9jb250ZXh0LmNjIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHNlY3VyZV9jaGFubmVsX2FyZ3VtZW50cy5jYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxzZWN1cmVfc2VydmVyX2NyZWRlbnRpYWxzLmNjIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNwcFxzZXJ2ZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGNoYW5uZWwuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXGNsaWVudDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDAsNiArMjIsMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGluc2VjdXJlX2NyZWRlbnRpYWxzLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjbGllbnQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XHNlY3VyZV9jcmVkZW50aWFscy5jYyI+CisgICAgICA8RmlsdGVyPnNyY1xjcHBcY2xpZW50PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvZGVnZW5cY29kZWdlbl9pbml0LmNjIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxhdXRoX3Byb3BlcnR5X2l0ZXJhdG9yLmNjIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXGNoYW5uZWxfYXJndW1lbnRzLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTUyLDYgKzQzLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxycGNfbWV0aG9kLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHNlY3VyZV9hdXRoX2NvbnRleHQuY2MiPgorICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvbW1vbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cc2VjdXJlX2NoYW5uZWxfYXJndW1lbnRzLmNjIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXGFzeW5jX2dlbmVyaWNfc2VydmljZS5jYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjcHBcc2VydmVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC02NCw2ICs2NCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxpbnNlY3VyZV9zZXJ2ZXJfY3JlZGVudGlhbHMuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXHNlcnZlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5jYyI+CisgICAgICA8RmlsdGVyPnNyY1xjcHBcc2VydmVyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxzZXJ2ZXIuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXHNlcnZlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtOTEsOSArOTQsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFx1dGlsXHRpbWUuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXHV0aWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgotICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xhbGFybS5oIj4KQEAgLTEyNiw2ICsxMjYsOTkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY2xpZW50X3VuYXJ5X2NhbGwuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxhc3luY19zdHJlYW0uaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGxfaG9vay5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF9jb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfdW5hcnlfY2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZV90YWcuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxncnBjX2xpYnJhcnkuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHByb3RvX3V0aWxzLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfbWV0aG9kLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5XGF1dGhfY29udGV4dC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VyaWFsaXphdGlvbl90cmFpdHMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2ZXJfaW50ZXJmYWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2aWNlX3R5cGUuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RhdHVzX2NvZGVfZW51bS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RyaW5nX3JlZi5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX2N4eDExLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX3N0cmVhbS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGdycGNfbGlicmFyeS5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjI4LDExNCArMzIxLDEyIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xzdXBwb3J0XHRpbWUuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXHN1cHBvcnQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxhc3luY19zdHJlYW0uaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGwuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGxfaG9vay5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF9jb250ZXh0LmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfdW5hcnlfY2FsbC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZV90YWcuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbmZpZy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxncnBjX2xpYnJhcnkuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHByb3RvX3V0aWxzLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfbWV0aG9kLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5XGF1dGhfY29udGV4dC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VyaWFsaXphdGlvbl90cmFpdHMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2ZXJfaW50ZXJmYWNlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2aWNlX3R5cGUuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RhdHVzX2NvZGVfZW51bS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RyaW5nX3JlZi5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX2N4eDExLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX3N0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcc2VjdXJlX2NyZWRlbnRpYWxzLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcY3JlYXRlX2NoYW5uZWxfaW50ZXJuYWwuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjcHBcY2xpZW50PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxjb3JlX2NvZGVnZW4uaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxzZWN1cmVfYXV0aF9jb250ZXh0LmgiPgotICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvbW1vbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNwcFxzZXJ2ZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGNyZWF0ZV9jaGFubmVsX2ludGVybmFsLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcc2VjdXJlX2NyZWRlbnRpYWxzLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXGNsaWVudDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY29yZV9jb2RlZ2VuLmgiPgpAQCAtMzQ0LDkgKzMzNSwxNSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY3JlYXRlX2F1dGhfY29udGV4dC5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHNlY3VyZV9hdXRoX2NvbnRleHQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclxkeW5hbWljX3RocmVhZF9wb29sLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXHNlcnZlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxzZXJ2ZXJcc2VjdXJlX3NlcnZlcl9jcmVkZW50aWFscy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxzZXJ2ZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXHRocmVhZF9wb29sX2ludGVyZmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxzZXJ2ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfY29kZWdlbl9saWIvZ3JwYysrX2NvZGVnZW5fbGliLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX2NvZGVnZW5fbGliL2dycGMrK19jb2RlZ2VuX2xpYi52Y3hwcm9qCmluZGV4IGRlMjUyNmIuLmZhNTZkMmEgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfY29kZWdlbl9saWIvZ3JwYysrX2NvZGVnZW5fbGliLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK19jb2RlZ2VuX2xpYi9ncnBjKytfY29kZWdlbl9saWIudmN4cHJvagpAQCAtMTQ3LDI2ICsxNDcsNiBAQAogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYWxsb2MuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2NfYXRvbWljLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2Nfc3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fd2luMzIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cbG9nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHBvcnRfcGxhdGZvcm0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2VfYnVmZmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19nZW5lcmljLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfcG9zaXguaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY193aW4zMi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblx0aW1lLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbXByZXNzaW9uX3R5cGVzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbm5lY3Rpdml0eV9zdGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxncnBjX3R5cGVzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHByb3BhZ2F0aW9uX2JpdHMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfc3RyZWFtLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfdW5hcnlfY2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGwuaCIgLz4KQEAgLTE5OCw2ICsxNzgsMjYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19zdHJlYW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblx0aW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGFsbG9jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX2F0b21pYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fZ2NjX3N5bmMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX3dpbjMyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbXByZXNzaW9uX3R5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbm5lY3Rpdml0eV9zdGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxncnBjX3R5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGxvZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwb3J0X3BsYXRmb3JtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHByb3BhZ2F0aW9uX2JpdHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2VfYnVmZmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfZ2VuZXJpYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3Bvc2l4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfd2luMzIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cdGltZS5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK19jb2RlZ2VuX2xpYi9ncnBjKytfY29kZWdlbl9saWIudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK19jb2RlZ2VuX2xpYi9ncnBjKytfY29kZWdlbl9saWIudmN4cHJvai5maWx0ZXJzCmluZGV4IDNjYzAwODIuLjMyNTllOTggMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfY29kZWdlbl9saWIvZ3JwYysrX2NvZGVnZW5fbGliLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX2NvZGVnZW5fbGliL2dycGMrK19jb2RlZ2VuX2xpYi52Y3hwcm9qLmZpbHRlcnMKQEAgLTYsNjYgKzYsNiBAQAogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYWxsb2MuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2NfYXRvbWljLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2Nfc3luYy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fd2luMzIuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cbG9nLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHBvcnRfcGxhdGZvcm0uaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2UuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc2xpY2VfYnVmZmVyLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19nZW5lcmljLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfcG9zaXguaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY193aW4zMi5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblx0aW1lLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbXByZXNzaW9uX3R5cGVzLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbm5lY3Rpdml0eV9zdGF0ZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxncnBjX3R5cGVzLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHByb3BhZ2F0aW9uX2JpdHMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfc3RyZWFtLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE1OSw2ICs5OSw2NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHRpbWUuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhbGxvYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG0uaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19hdG9taWMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19zeW5jLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV93aW4zMi5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxieXRlX2J1ZmZlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb21wcmVzc2lvbl90eXBlcy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb25uZWN0aXZpdHlfc3RhdGUuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cZ3JwY190eXBlcy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxsb2cuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccG9ydF9wbGF0Zm9ybS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwcm9wYWdhdGlvbl9iaXRzLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlX2J1ZmZlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzdGF0dXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX2dlbmVyaWMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19wb3NpeC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3dpbjMyLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHRpbWUuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfdGVzdF91dGlsL2dycGMrK190ZXN0X3V0aWwudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfdGVzdF91dGlsL2dycGMrK190ZXN0X3V0aWwudmN4cHJvagppbmRleCAzMzg2MGFmLi4wYjQ0OThmIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3Rlc3RfdXRpbC9ncnBjKytfdGVzdF91dGlsLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK190ZXN0X3V0aWwvZ3JwYysrX3Rlc3RfdXRpbC52Y3hwcm9qCkBAIC0xNTYsMTMgKzE1NiwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjcHBcdXRpbFx0ZXN0X2NyZWRlbnRpYWxzX3Byb3ZpZGVyLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xlY2hvX21lc3NhZ2VzLnBiLmNjIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlXGVjaG9fZHVwbGljYXRlLnBiLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZWNob19tZXNzYWdlcy5wYi5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlXGVjaG9fZHVwbGljYXRlLnBiLmgiPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xlY2hvX21lc3NhZ2VzLmdycGMucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xkdXBsaWNhdGVcZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG9fbWVzc2FnZXMuZ3JwYy5wYi5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlXGVjaG9fZHVwbGljYXRlLmdycGMucGIuaCI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG8ucGIuY2MiPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTcyLDEzICsxNzIsMTMgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZWNoby5ncnBjLnBiLmgiPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xkdXBsaWNhdGVcZWNob19kdXBsaWNhdGUucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xlY2hvX21lc3NhZ2VzLnBiLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlXGVjaG9fZHVwbGljYXRlLnBiLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xlY2hvX21lc3NhZ2VzLnBiLmgiPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xkdXBsaWNhdGVcZWNob19kdXBsaWNhdGUuZ3JwYy5wYi5jYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG9fbWVzc2FnZXMuZ3JwYy5wYi5jYyI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGR1cGxpY2F0ZVxlY2hvX2R1cGxpY2F0ZS5ncnBjLnBiLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xlY2hvX21lc3NhZ2VzLmdycGMucGIuaCI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNwcFxlbmQyZW5kXHRlc3Rfc2VydmljZV9pbXBsLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfdGVzdF91dGlsL2dycGMrK190ZXN0X3V0aWwudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK190ZXN0X3V0aWwvZ3JwYysrX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYjM1YmExZi4uM2ExNmM2NSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK190ZXN0X3V0aWwvZ3JwYysrX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK190ZXN0X3V0aWwvZ3JwYysrX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsMTQgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG9fbWVzc2FnZXMucHJvdG8iPgotICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGR1cGxpY2F0ZVxlY2hvX2R1cGxpY2F0ZS5wcm90byI+CisgICAgICA8RmlsdGVyPnNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG8ucHJvdG8iPgogICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGR1cGxpY2F0ZVxlY2hvX2R1cGxpY2F0ZS5wcm90byI+Ci0gICAgICA8RmlsdGVyPnNyY1xwcm90b1xncnBjXHRlc3RpbmdcZHVwbGljYXRlPC9GaWx0ZXI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXGVjaG9fbWVzc2FnZXMucHJvdG8iPgorICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNwcFxlbmQyZW5kXHRlc3Rfc2VydmljZV9pbXBsLmNjIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjcHBcZW5kMmVuZDwvRmlsdGVyPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK191bnNlY3VyZS9ncnBjKytfdW5zZWN1cmUudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfdW5zZWN1cmUvZ3JwYysrX3Vuc2VjdXJlLnZjeHByb2oKaW5kZXggM2QxYWVlMC4uNzQ1NWU4OCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK191bnNlY3VyZS9ncnBjKytfdW5zZWN1cmUudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3Vuc2VjdXJlL2dycGMrK191bnNlY3VyZS52Y3hwcm9qCkBAIC0yNjgsNiArMjY4LDM3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xncnBjKysuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjbGllbnRfdW5hcnlfY2FsbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3N0cmVhbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2FsbF9ob29rLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfY29udGV4dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF91bmFyeV9jYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbXBsZXRpb25fcXVldWVfdGFnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGdycGNfbGlicmFyeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxwcm90b191dGlscy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHJwY19tZXRob2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZWN1cml0eVxhdXRoX2NvbnRleHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJpYWxpemF0aW9uX3RyYWl0cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmVyX2ludGVyZmFjZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZpY2VfdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1c19jb2RlX2VudW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzdHJpbmdfcmVmLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN5bmNfY3h4MTEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19zdHJlYW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblx0aW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGdycGNfbGlicmFyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxtZXRob2RfaGFuZGxlcl9pbXBsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXHByb3RvX3V0aWxzLmgiIC8+CkBAIC0zMDIsMzcgKzMzMyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xzdXBwb3J0XHN0dWJfb3B0aW9ucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcc3VwcG9ydFxzeW5jX3N0cmVhbS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcc3VwcG9ydFx0aW1lLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfc3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfdW5hcnlfY2FsbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsX2hvb2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjaGFubmVsX2ludGVyZmFjZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF9jb250ZXh0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2xpZW50X3VuYXJ5X2NhbGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb21wbGV0aW9uX3F1ZXVlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZV90YWcuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb25maWcuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb25maWdfcHJvdG9idWYuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cZ3JwY19saWJyYXJ5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cbWV0aG9kX2hhbmRsZXJfaW1wbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHByb3RvX3V0aWxzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5ccnBjX21ldGhvZC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHJwY19zZXJ2aWNlX21ldGhvZC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5XGF1dGhfY29udGV4dC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcmlhbGl6YXRpb25fdHJhaXRzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmVyX2NvbnRleHQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2ZXJfaW50ZXJmYWNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmljZV90eXBlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RhdHVzX2NvZGVfZW51bS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0cmluZ19yZWYuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzdHViX29wdGlvbnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19jeHgxMS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN5bmNfbm9fY3h4MTEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX3N0cmVhbS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHRpbWUuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNsaWVudFxjcmVhdGVfY2hhbm5lbF9pbnRlcm5hbC5oIiAvPgpAQCAtMzQyLDggKzM0Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXHNlcnZlclx0aHJlYWRfcG9vbF9pbnRlcmZhY2UuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxpbnNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGNoYW5uZWwuY2MiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjbGllbnRcY2xpZW50X2NvbnRleHQuY2MiPgpAQCAtMzU4LDEyICszNTYsMTYgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGluc2VjdXJlX2NyZWRlbnRpYWxzLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY2hhbm5lbF9hcmd1bWVudHMuY2MiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25cY29tcGxldGlvbl9xdWV1ZS5jYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxjb3JlX2NvZGVnZW4uY2MiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25caW5zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxycGNfbWV0aG9kLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcc2VydmVyXGFzeW5jX2dlbmVyaWNfc2VydmljZS5jYyI+CkBAIC0zOTIsOCArMzk0LDYgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcdXRpbFx0aW1lLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgotICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncHJcZ3ByLnZjeHByb2oiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK191bnNlY3VyZS9ncnBjKytfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK191bnNlY3VyZS9ncnBjKytfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDcwYTIzYmYuLmRkYTkwYjEgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfdW5zZWN1cmUvZ3JwYysrX3Vuc2VjdXJlLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3Vuc2VjdXJlL2dycGMrK191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsOSArMSw2IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFxjb21tb25caW5zZWN1cmVfY3JlYXRlX2F1dGhfY29udGV4dC5jYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNsaWVudFxjaGFubmVsLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjbGllbnQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI1LDYgKzIyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGluc2VjdXJlX2NyZWRlbnRpYWxzLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjbGllbnQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgorICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXGNoYW5uZWxfYXJndW1lbnRzLmNjIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM0LDYgKzM0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXGNvcmVfY29kZWdlbi5jYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjcHBcY29tbW9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY3BwXGNvbW1vblxpbnNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNwcFxjb21tb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29tbW9uXHJwY19tZXRob2QuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvbW1vbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzYsOSArNzksNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNwcFx1dGlsXHRpbWUuY2MiPgogICAgICAgPEZpbHRlcj5zcmNcY3BwXHV0aWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY29kZWdlblxjb2RlZ2VuX2luaXQuY2MiPgotICAgICAgPEZpbHRlcj5zcmNcY3BwXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xhbGFybS5oIj4KQEAgLTExMSw2ICsxMTEsOTkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY2xpZW50X3VuYXJ5X2NhbGwuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxhc3luY19zdHJlYW0uaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGFzeW5jX3VuYXJ5X2NhbGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNhbGxfaG9vay5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2hhbm5lbF9pbnRlcmZhY2UuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNsaWVudF9jb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfdW5hcnlfY2FsbC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29tcGxldGlvbl9xdWV1ZV90YWcuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29uZmlnX3Byb3RvYnVmLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxncnBjX2xpYnJhcnkuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXG1ldGhvZF9oYW5kbGVyX2ltcGwuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHByb3RvX3V0aWxzLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfbWV0aG9kLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxycGNfc2VydmljZV9tZXRob2QuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5XGF1dGhfY29udGV4dC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlY3VyaXR5PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VyaWFsaXphdGlvbl90cmFpdHMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcnZlcl9jb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2ZXJfaW50ZXJmYWNlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2aWNlX3R5cGUuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RhdHVzX2NvZGVfZW51bS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3RyaW5nX3JlZi5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3R1Yl9vcHRpb25zLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX2N4eDExLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX25vX2N4eDExLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzeW5jX3N0cmVhbS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGdycGNfbGlicmFyeS5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjEzLDk5ICszMDYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcc3VwcG9ydFx0aW1lLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xzdXBwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cYXN5bmNfc3RyZWFtLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxhc3luY191bmFyeV9jYWxsLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjYWxsX2hvb2suaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNoYW5uZWxfaW50ZXJmYWNlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjbGllbnRfY29udGV4dC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY2xpZW50X3VuYXJ5X2NhbGwuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbXBsZXRpb25fcXVldWUuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbXBsZXRpb25fcXVldWVfdGFnLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxjb25maWcuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXGNvbmZpZ19wcm90b2J1Zi5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cZ3JwY19saWJyYXJ5LmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxtZXRob2RfaGFuZGxlcl9pbXBsLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxwcm90b191dGlscy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5ccnBjX21ldGhvZC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5ccnBjX3NlcnZpY2VfbWV0aG9kLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZWN1cml0eVxhdXRoX2NvbnRleHQuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZWN1cml0eTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHNlcmlhbGl6YXRpb25fdHJhaXRzLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzZXJ2ZXJfY29udGV4dC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmVyX2ludGVyZmFjZS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc2VydmljZV90eXBlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlblxzdGF0dXMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0YXR1c19jb2RlX2VudW0uaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0cmluZ19yZWYuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHN0dWJfb3B0aW9ucy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luYy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19jeHgxMS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19ub19jeHgxMS5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGMrK1xpbXBsXGNvZGVnZW5cc3luY19zdHJlYW0uaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjKytcaW1wbFxjb2RlZ2VuXHRpbWUuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYysrXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjcHBcY2xpZW50XGNyZWF0ZV9jaGFubmVsX2ludGVybmFsLmgiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qCmluZGV4IGIwOWFiYjIuLmMyMGY4ZDcgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjL2dycGMudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2oKQEAgLTI2NywyMyArMjY3LDQ3IEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGdycGNfc2VjdXJpdHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xieXRlX2J1ZmZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGJ5dGVfYnVmZmVyX3JlYWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNlbnN1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNvbXByZXNzaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcZ3JwYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGdycGNfc2VjdXJpdHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYnl0ZV9idWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29tcHJlc3Npb25fdHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29ubmVjdGl2aXR5X3N0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGdycGNfdHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccHJvcGFnYXRpb25fYml0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzdGF0dXMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xjZW5zdXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdGF0dXMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYWxwbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGJpbl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcY2h0dHAyX3RyYW5zcG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZGF0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX2dvYXdheS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3BpbmcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9yc3Rfc3RyZWFtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfc2V0dGluZ3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV93aW5kb3dfdXBkYXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3BhcnNlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3RhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHR0cDJfZXJyb3JzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHVmZnN5bXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxpbmNvbWluZ19tZXRhZGF0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGludGVybmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RhdHVzX2NvbnZlcnNpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxzdHJlYW1fbWFwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdGltZW91dF9lbmNvZGluZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHZhcmludC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xhZ2dyZWdhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX2ZpbHRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX3BsdWdpbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xtbG9nLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfYXJncy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9zdGFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9zdGFja19idWlsZGVyLmgiIC8+CkBAIC0zNjAsNiArMzg0LDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcanNvblxqc29uX3JlYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbl93cml0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxwcm90b1xncnBjXGxiXHYwXGxvYWRfYmFsYW5jZXIucGIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxhdXRoX2ZpbHRlcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxiNjQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxjcmVkZW50aWFscy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGhhbmRzaGFrZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGpzb25fdG9rZW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxqd3RfdmVyaWZpZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cmVfZW5kcG9pbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cml0eV9jb25uZWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cml0eV9jb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3RhdGlzdGljc1xjZW5zdXNfaW50ZXJmYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3RhdGlzdGljc1xjZW5zdXNfcnBjX3N0YXRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxhcGlfdHJhY2UuaCIgLz4KQEAgLTM3NSw2MiArNDA4LDkxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZXJ2ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHN1cmZhY2VfdHJhY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcYnl0ZV9zdHJlYW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGFscG4uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGJpbl9lbmNvZGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZ29hd2F5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9waW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9zZXR0aW5ncy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfd2luZG93X3VwZGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfcGFyc2VyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja190YWJsZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHR0cDJfZXJyb3JzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxodWZmc3ltcy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaW5jb21pbmdfbWV0YWRhdGEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGludGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdGF0dXNfY29udmVyc2lvbi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcc3RyZWFtX21hcC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdGltZW91dF9lbmNvZGluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdmFyaW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhX2JhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHN0YXRpY19tZXRhZGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0X2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxhdXRoX2ZpbHRlcnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxiNjQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxjcmVkZW50aWFscy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGhhbmRzaGFrZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGpzb25fdG9rZW4uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxqd3RfdmVyaWZpZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cmVfZW5kcG9pbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cml0eV9jb25uZWN0b3IuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cml0eV9jb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHNpXGZha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHNpXHNzbF90cmFuc3BvcnRfc2VjdXJpdHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0c2lcc3NsX3R5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHNpXHRyYW5zcG9ydF9zZWN1cml0eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRzaVx0cmFuc3BvcnRfc2VjdXJpdHlfaW50ZXJmYWNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGFnZ3JlZ2F0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNccnBjX21ldHJpY19pZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfY29tbW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfZGVjb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfZW5jb2RlLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50XGluc2VjdXJlXGNoYW5uZWxfY3JlYXRlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50XHNlY3VyZVxzZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxzZXJ2ZXJcaW5zZWN1cmVcc2VydmVyX2NodHRwMi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHNlcnZlclxzZWN1cmVcc2VydmVyX3NlY3VyZV9jaHR0cDIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYWxwbi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxiaW5fZW5jb2Rlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxjaHR0cDJfdHJhbnNwb3J0LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX2RhdGEuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZ29hd2F5LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3BpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfcnN0X3N0cmVhbS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9zZXR0aW5ncy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX2VuY29kZXIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfcGFyc2VyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3RhYmxlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGh1ZmZzeW1zLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGluY29taW5nX21ldGFkYXRhLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHBhcnNpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RhdHVzX2NvbnZlcnNpb24uYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RyZWFtX2xpc3RzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0cmVhbV9tYXAuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdGltZW91dF9lbmNvZGluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx2YXJpbnQuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcd3JpdGluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19jb250ZXh0LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX2ZpbHRlci5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19wbHVnaW4uYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGluaXRpYWxpemUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG9wZXJhdGlvbi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNccGxhY2Vob2xkZXJzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1x0cmFjaW5nLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9hcmdzLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9zdGFjay5jIj4KQEAgLTQ5Nyw2ICs1NTksOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcaHR0cGNsaS5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxodHRwXGh0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBccGFyc2VyLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGNsb3N1cmUuYyI+CkBAIC01OTMsMTA4ICs2NTcsNiBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHByb3RvXGdycGNcbGJcdjBcbG9hZF9iYWxhbmNlci5wYi5jIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFsYXJtLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYXBpX3RyYWNlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYnl0ZV9idWZmZXIuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxieXRlX2J1ZmZlcl9yZWFkZXIuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9kZXRhaWxzLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9sb2dfYmF0Y2guYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9jb25uZWN0aXZpdHkuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2NyZWF0ZS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfaW5pdC5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfcGluZy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfc3RhY2tfdHlwZS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNvbXBsZXRpb25fcXVldWUuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxldmVudF9zdHJpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxpbml0LmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbGFtZV9jbGllbnQuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxtZXRhZGF0YV9hcnJheS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlcl9jaHR0cDIuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2YWxpZGF0ZV9tZXRhZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHZlcnNpb24uYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGJ5dGVfc3RyZWFtLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcYWxwbi5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGJpbl9lbmNvZGVyLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2dvYXdheS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3BpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfc2V0dGluZ3MuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3BhcnNlci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3RhYmxlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHVmZnN5bXMuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxpbmNvbWluZ19tZXRhZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHBhcnNpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdGF0dXNfY29udmVyc2lvbi5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9saXN0cy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9tYXAuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlx0aW1lb3V0X2VuY29kaW5nLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdmFyaW50LmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcd3JpdGluZy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyX3RyYW5zcG9ydC5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxtZXRhZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHN0YXRpY19tZXRhZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0LmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfb3Bfc3RyaW5nLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcaHR0cGNsaV9zZWN1cml0eV9jb25uZWN0b3IuYyI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcYjY0LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGNsaWVudF9hdXRoX2ZpbHRlci5jIj4KQEAgLTcyMywxMSArNjg1LDYxIEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcc2VydmVyX2F1dGhfZmlsdGVyLmMiPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XHNlcnZlcl9zZWN1cmVfY2h0dHAyLmMiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYWxhcm0uYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxhcGlfdHJhY2UuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxieXRlX2J1ZmZlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGJ5dGVfYnVmZmVyX3JlYWRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGwuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsX2RldGFpbHMuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsX2xvZ19iYXRjaC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWwuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2Nvbm5lY3Rpdml0eS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfaW5pdC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfcGluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfc3RhY2tfdHlwZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNvbXBsZXRpb25fcXVldWUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxldmVudF9zdHJpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxpbml0LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcaW5pdF9zZWN1cmUuYyI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZWN1cmVfY2hhbm5lbF9jcmVhdGUuYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxsYW1lX2NsaWVudC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXG1ldGFkYXRhX2FycmF5LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2Vcc2VydmVyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcdmFsaWRhdGVfbWV0YWRhdGEuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2ZXJzaW9uLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxieXRlX3N0cmVhbS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxtZXRhZGF0YS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHN0YXRpY19tZXRhZGF0YS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfb3Bfc3RyaW5nLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRzaVxmYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jIj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTczNSwxOCArNzQ3LDYgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0c2lcdHJhbnNwb3J0X3NlY3VyaXR5LmMiPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xjb250ZXh0LmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xpbml0aWFsaXplLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xtbG9nLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xvcGVyYXRpb24uYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHBsYWNlaG9sZGVycy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcdHJhY2luZy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9jb21tb24uYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfZGVjb2RlLmMiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycwppbmRleCA4MTEzNmViLi5mMDNiMjA3IDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycwpAQCAtMSw2ICsxLDg0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50XGluc2VjdXJlXGNoYW5uZWxfY3JlYXRlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcaW5zZWN1cmU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXGNsaWVudFxzZWN1cmVcc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcc2VjdXJlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxzZXJ2ZXJcaW5zZWN1cmVcc2VydmVyX2NodHRwMi5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXGluc2VjdXJlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxzZXJ2ZXJcc2VjdXJlXHNlcnZlcl9zZWN1cmVfY2h0dHAyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxzZXJ2ZXJcc2VjdXJlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYWxwbi5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYmluX2VuY29kZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX2RhdGEuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX2dvYXdheS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfcGluZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfcnN0X3N0cmVhbS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfc2V0dGluZ3MuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3dpbmRvd191cGRhdGUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX2VuY29kZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3BhcnNlci5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfdGFibGUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGh1ZmZzeW1zLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxpbmNvbWluZ19tZXRhZGF0YS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRccGFyc2luZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RhdHVzX2NvbnZlcnNpb24uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0cmVhbV9saXN0cy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RyZWFtX21hcC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdGltZW91dF9lbmNvZGluZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdmFyaW50LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx3cml0aW5nLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX2NvbnRleHQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEwLDYgKzg4LDIxIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGdycGNfcGx1Z2luLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGluaXRpYWxpemUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xvcGVyYXRpb24uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNccGxhY2Vob2xkZXJzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHRyYWNpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfYXJncy5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEwOSw2ICsyMDIsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcaHR0cGNsaS5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGh0dHA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxodHRwXGh0dHBjbGlfc2VjdXJpdHlfY29ubmVjdG9yLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaHR0cDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBccGFyc2VyLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaHR0cDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjUzLDE1OSArMzQ5LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxwcm90b1xncnBjXGxiXHYwXGxvYWRfYmFsYW5jZXIucGIuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxwcm90b1xncnBjXGxiXHYwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxhbGFybS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFwaV90cmFjZS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGJ5dGVfYnVmZmVyLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYnl0ZV9idWZmZXJfcmVhZGVyLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGxfZGV0YWlscy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGxfbG9nX2JhdGNoLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfY29ubmVjdGl2aXR5LmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9jcmVhdGUuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2luaXQuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3BpbmcuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3N0YWNrX3R5cGUuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjb21wbGV0aW9uX3F1ZXVlLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcZXZlbnRfc3RyaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcaW5pdC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGxhbWVfY2xpZW50LmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbWV0YWRhdGFfYXJyYXkuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZXJ2ZXIuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZXJ2ZXJfY2h0dHAyLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcdmFsaWRhdGVfbWV0YWRhdGEuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2ZXJzaW9uLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxieXRlX3N0cmVhbS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcYWxwbi5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGJpbl9lbmNvZGVyLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2dvYXdheS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3BpbmcuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfc2V0dGluZ3MuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3BhcnNlci5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3RhYmxlLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHVmZnN5bXMuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxpbmNvbWluZ19tZXRhZGF0YS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHBhcnNpbmcuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdGF0dXNfY29udmVyc2lvbi5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9saXN0cy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9tYXAuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlx0aW1lb3V0X2VuY29kaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdmFyaW50LmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcd3JpdGluZy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyX3RyYW5zcG9ydC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGEuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcc3RhdGljX21ldGFkYXRhLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfb3Bfc3RyaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaHR0cFxodHRwY2xpX3NlY3VyaXR5X2Nvbm5lY3Rvci5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGh0dHA8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxiNjQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDQ4LDE1ICszOTEsOTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZXJ2ZXJfYXV0aF9maWx0ZXIuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XHNlcnZlcl9zZWN1cmVfY2h0dHAyLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc2VjdXJpdHk8L0ZpbHRlcj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFsYXJtLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYXBpX3RyYWNlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYnl0ZV9idWZmZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxieXRlX2J1ZmZlcl9yZWFkZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9kZXRhaWxzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9sb2dfYmF0Y2guYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9jb25uZWN0aXZpdHkuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2luaXQuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3BpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3N0YWNrX3R5cGUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjb21wbGV0aW9uX3F1ZXVlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcZXZlbnRfc3RyaW5nLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcaW5pdC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGluaXRfc2VjdXJlLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2Vcc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbGFtZV9jbGllbnQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxtZXRhZGF0YV9hcnJheS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlci5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHZhbGlkYXRlX21ldGFkYXRhLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcdmVyc2lvbi5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcYnl0ZV9zdHJlYW0uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhX2JhdGNoLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHN0YXRpY19tZXRhZGF0YS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnQuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0X29wX3N0cmluZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRzaVxmYWtlX3RyYW5zcG9ydF9zZWN1cml0eS5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRzaTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDY2LDI0ICs0ODQsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRzaVx0cmFuc3BvcnRfc2VjdXJpdHkuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0c2k8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xpbml0aWFsaXplLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcb3BlcmF0aW9uLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHBsYWNlaG9sZGVycy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1x0cmFjaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfY29tbW9uLmMiPgogICAgICAgPEZpbHRlcj50aGlyZF9wYXJ0eVxuYW5vcGI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ5NSwyMiArNDk1LDIyIEBACiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGdycGNfc2VjdXJpdHkuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGJ5dGVfYnVmZmVyLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xieXRlX2J1ZmZlcl9yZWFkZXIuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNlbnN1cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcY29tcHJlc3Npb24uaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGdycGMuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN0YXR1cy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xncnBjX3NlY3VyaXR5LmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYnl0ZV9idWZmZXIuaCI+CkBAIC01MzEsMTcgKzUzMSw4OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzdGF0dXMuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xjZW5zdXMuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcc3RhdHVzLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYWxwbi5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYmluX2VuY29kZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9kYXRhLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9nb2F3YXkuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3BpbmcuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3JzdF9zdHJlYW0uaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3NldHRpbmdzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV93aW5kb3dfdXBkYXRlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja19lbmNvZGVyLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja19wYXJzZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3RhYmxlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxodHRwMl9lcnJvcnMuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGh1ZmZzeW1zLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxpbmNvbWluZ19tZXRhZGF0YS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaW50ZXJuYWwuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0YXR1c19jb252ZXJzaW9uLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxzdHJlYW1fbWFwLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx0aW1lb3V0X2VuY29kaW5nLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx2YXJpbnQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xhZ2dyZWdhdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX2ZpbHRlci5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX3BsdWdpbi5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xtbG9nLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfYXJncy5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTc3MCw2ICs4NDIsMzMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxwcm90b1xncnBjXGxiXHYwXGxvYWRfYmFsYW5jZXIucGIuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxwcm90b1xncnBjXGxiXHYwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcYXV0aF9maWx0ZXJzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc2VjdXJpdHk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxiNjQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGNyZWRlbnRpYWxzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc2VjdXJpdHk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxoYW5kc2hha2UuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGpzb25fdG9rZW4uaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGp3dF92ZXJpZmllci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcc2VjdXJlX2VuZHBvaW50LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc2VjdXJpdHk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cml0eV9jb25uZWN0b3IuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XHNlY3VyaXR5X2NvbnRleHQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN0YXRpc3RpY3NcY2Vuc3VzX2ludGVyZmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN0YXRpc3RpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTgxNSw2OSArOTE0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcYnl0ZV9zdHJlYW0uaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGFscG4uaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxiaW5fZW5jb2Rlci5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2dvYXdheS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3BpbmcuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfc2V0dGluZ3MuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV93aW5kb3dfdXBkYXRlLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3BhcnNlci5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3RhYmxlLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHR0cDJfZXJyb3JzLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHVmZnN5bXMuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxpbmNvbWluZ19tZXRhZGF0YS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGludGVybmFsLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcc3RhdHVzX2NvbnZlcnNpb24uaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdHJlYW1fbWFwLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdGltZW91dF9lbmNvZGluZy5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHZhcmludC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyX3RyYW5zcG9ydC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTg5NiwzMyArOTMyLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0X2ltcGwuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxhdXRoX2ZpbHRlcnMuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGI2NC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcY3JlZGVudGlhbHMuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XGhhbmRzaGFrZS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcanNvbl90b2tlbi5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcand0X3ZlcmlmaWVyLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc2VjdXJpdHk8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzZWN1cml0eVxzZWN1cmVfZW5kcG9pbnQuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzZWN1cml0eTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHNlY3VyaXR5XHNlY3VyaXR5X2Nvbm5lY3Rvci5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc2VjdXJpdHlcc2VjdXJpdHlfY29udGV4dC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHNlY3VyaXR5PC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHNpXGZha2VfdHJhbnNwb3J0X3NlY3VyaXR5LmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHNpPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC05MzgsMTUgKzk0Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHNpXHRyYW5zcG9ydF9zZWN1cml0eV9pbnRlcmZhY2UuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0c2k8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcYWdncmVnYXRpb24uaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xycGNfbWV0cmljX2lkLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGIuaCI+CiAgICAgICA8RmlsdGVyPnRoaXJkX3BhcnR5XG5hbm9wYjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtOTgwLDYgKzk4MCwzNiBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2VhNzQ1NjgwLTIxZWEtOWM1ZS02NzliLTY0ZGM0MDU2MmQwOH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxleHQiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNmMzJhNThmLTM5NGYtNWYxMy0wNmFhLTZjYzUyY2MyZGFhZn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxleHRcdHJhbnNwb3J0Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlM2FiZmQwYS0wNjRlLTBmMmYtYzhlOC03YzVhN2U5ODE0MmF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDIiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2FjNDI2NjdiLWJiYmEtMzU3MS0yMGJjLTdhNDI0MGVmMjZjYX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnQiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RiZmZlYmUwLWVlYmItNTc3ZC0xODYwLWVmNjgzN2Y0Y2Y1MH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcaW5zZWN1cmUiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRlNjk5YjAyLWZhZTQtZGFiZC1hZmQyLTJlNDFiMDViZWYwZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcc2VjdXJlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlOThlZDI4ZS04ZGM1LTNiYjQtMjJhMi04ODkzODMxYTBhYjh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxZDM2ZmUxNi1iMDA0LTZiZWUtYzY2MS0zMjgyMzRiYmI0Njl9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXGluc2VjdXJlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlODUzOTg2My02MDI5LWNjYTQtNDRhOS01NDgxY2FjZjgxNDR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXHNlY3VyZSI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGFmYTUzOWYtOGM4My1kNGI5LWNkZWEtNTUwMDkxZjA5NjM4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydCI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NmYzNDI1NGUtZTY5Zi1jOWI0LTE1NmQtNTAyNGJhZGU1NDA4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlXGxpYiI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWIyZGVkM2YtODRhNS1mNmI0LTIwNjAtMjg2YzdkMWRjOTQ1fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwMzcsOSArMTA2Nyw2IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcdHJhbnNwb3J0Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlOWQwZDNmYy1jMTAwLWYzZTYtODliOC02NDlmMjQxMTU1YmZ9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDIiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2E0N2ZlZGZjLWI2YzYtZDU4OC0xNGZjLTY2NDVkNzM2YmNkNn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcdHNpIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5NWFkMjgxMS1jOGQwLTdhNDItMmE3My1iYWYwM2ZjYmY2OTl9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfY29kZWdlbl9saWIvZ3JwY19jb2RlZ2VuX2xpYi52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfY29kZWdlbl9saWIvZ3JwY19jb2RlZ2VuX2xpYi52Y3hwcm9qCmluZGV4IGE2YTVhODUuLjdkN2E2MDkgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX2NvZGVnZW5fbGliL2dycGNfY29kZWdlbl9saWIudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY19jb2RlZ2VuX2xpYi9ncnBjX2NvZGVnZW5fbGliLnZjeHByb2oKQEAgLTE1MiwyMSArMTUyLDIxIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2NfYXRvbWljLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2Nfc3luYy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fd2luMzIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYnl0ZV9idWZmZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29tcHJlc3Npb25fdHlwZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29ubmVjdGl2aXR5X3N0YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGdycGNfdHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cbG9nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHBvcnRfcGxhdGZvcm0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccHJvcGFnYXRpb25fYml0cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZV9idWZmZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19nZW5lcmljLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfcG9zaXguaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY193aW4zMi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblx0aW1lLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbXByZXNzaW9uX3R5cGVzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGNvbm5lY3Rpdml0eV9zdGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxncnBjX3R5cGVzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHByb3BhZ2F0aW9uX2JpdHMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xkdW1teS5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX2NvZGVnZW5fbGliL2dycGNfY29kZWdlbl9saWIudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfY29kZWdlbl9saWIvZ3JwY19jb2RlZ2VuX2xpYi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYmUxZTYyMy4uODkxZGZmMCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfY29kZWdlbl9saWIvZ3JwY19jb2RlZ2VuX2xpYi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfY29kZWdlbl9saWIvZ3JwY19jb2RlZ2VuX2xpYi52Y3hwcm9qLmZpbHRlcnMKQEAgLTE2LDE4ICsxNiwzNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fd2luMzIuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYnl0ZV9idWZmZXIuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29tcHJlc3Npb25fdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29ubmVjdGl2aXR5X3N0YXRlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGdycGNfdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cbG9nLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHBvcnRfcGxhdGZvcm0uaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccHJvcGFnYXRpb25fYml0cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZS5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZV9idWZmZXIuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmMuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQzLDI0ICs2MSw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHRpbWUuaCI+CiAgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYnl0ZV9idWZmZXIuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29tcHJlc3Npb25fdHlwZXMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29ubmVjdGl2aXR5X3N0YXRlLmgiPgotICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGdycGNfdHlwZXMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccHJvcGFnYXRpb25fYml0cy5oIj4KLSAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzdGF0dXMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Rlc3RfdXRpbC9ncnBjX3Rlc3RfdXRpbC52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKaW5kZXggNDg3ZmZlMC4uNjY4ZjhhNSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKQEAgLTE0NywxMSArMTQ3LDExIEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzc2xfdGVzdF9kYXRhLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxjcV92ZXJpZmllci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzc2xfdGVzdF9kYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlc1xwcm94eS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGlvbWdyXGVuZHBvaW50X3Rlc3RzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxncnBjX3Byb2ZpbGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxwYXJzZV9oZXhzdHJpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVx1dGlsXHBvcnQuaCIgLz4KQEAgLTE1OSwyMCArMTU5LDIwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxzbGljZV9zcGxpdHRlci5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGNxX3ZlcmlmaWVyLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzZXJ2ZXIxX2NlcnQuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxkYXRhXHNlcnZlcjFfa2V5LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVx0ZXN0X3Jvb3RfY2VydC5jIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxzZWN1cml0eVxvYXV0aDJfdXRpbHMuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxjcV92ZXJpZmllci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzXHByb3h5LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGlvbWdyXGVuZHBvaW50X3Rlc3RzLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXHNlY3VyaXR5XG9hdXRoMl91dGlscy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVx1dGlsXGdycGNfcHJvZmlsZXIuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxwYXJzZV9oZXhzdHJpbmcuYyI+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY190ZXN0X3V0aWwvZ3JwY190ZXN0X3V0aWwudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2ouZmlsdGVycwppbmRleCA2OGM3NWU4Li43ZjI4NzZkIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY190ZXN0X3V0aWwvZ3JwY190ZXN0X3V0aWwudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Rlc3RfdXRpbC9ncnBjX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsNiArMSw5IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcY3FfdmVyaWZpZXIuYyI+CisgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxkYXRhXHNlcnZlcjFfY2VydC5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcZGF0YTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTAsMTggKzEzLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxkYXRhXHRlc3Rfcm9vdF9jZXJ0LmMiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFxkYXRhPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmMiPgotICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcc2VjdXJpdHk8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGNxX3ZlcmlmaWVyLmMiPgotICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNccHJveHkuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcaW9tZ3JcZW5kcG9pbnRfdGVzdHMuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxpb21ncjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXHNlY3VyaXR5XG9hdXRoMl91dGlscy5jIj4KKyAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXHNlY3VyaXR5PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxncnBjX3Byb2ZpbGVyLmMiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcdXRpbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDIsMjEgKzQyLDIxIEBACiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzc2xfdGVzdF9kYXRhLmgiPgotICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFxkYXRhPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmgiPgotICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcc2VjdXJpdHk8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGNxX3ZlcmlmaWVyLmgiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzc2xfdGVzdF9kYXRhLmgiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFxkYXRhPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlc1xwcm94eS5oIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxpb21nclxlbmRwb2ludF90ZXN0cy5oIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGlvbWdyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmgiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcc2VjdXJpdHk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVx1dGlsXGdycGNfcHJvZmlsZXIuaCI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVx1dGlsPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY191bnNlY3VyZS9ncnBjX3Vuc2VjdXJlLnZjeHByb2oKaW5kZXggMDUxMjUwMS4uZTg5Y2M4YSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvagpAQCAtMjYwLDIwICsyNjAsNDQgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xieXRlX2J1ZmZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGJ5dGVfYnVmZmVyX3JlYWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNlbnN1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNvbXByZXNzaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcZ3JwYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN0YXR1cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxieXRlX2J1ZmZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb21wcmVzc2lvbl90eXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb25uZWN0aXZpdHlfc3RhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cZ3JwY190eXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwcm9wYWdhdGlvbl9iaXRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNlbnN1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN0YXR1cy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxhbHBuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYmluX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxjaHR0cDJfdHJhbnNwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9kYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZ29hd2F5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfcGluZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3JzdF9zdHJlYW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9zZXR0aW5ncy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3dpbmRvd191cGRhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja19lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfcGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfdGFibGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxodHRwMl9lcnJvcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxodWZmc3ltcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGluY29taW5nX21ldGFkYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaW50ZXJuYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxzdGF0dXNfY29udmVyc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0cmVhbV9tYXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx0aW1lb3V0X2VuY29kaW5nLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdmFyaW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGFnZ3JlZ2F0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGdycGNfZmlsdGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGdycGNfcGx1Z2luLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNccnBjX21ldHJpY19pZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9hcmdzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIgLz4KQEAgLTM2NSw0MyArMzg5LDY1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZXJ2ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHN1cmZhY2VfdHJhY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcYnl0ZV9zdHJlYW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGFscG4uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGJpbl9lbmNvZGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZ29hd2F5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9waW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9zZXR0aW5ncy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfd2luZG93X3VwZGF0ZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfcGFyc2VyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja190YWJsZS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHR0cDJfZXJyb3JzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxodWZmc3ltcy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaW5jb21pbmdfbWV0YWRhdGEuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGludGVybmFsLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdGF0dXNfY29udmVyc2lvbi5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcc3RyZWFtX21hcC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdGltZW91dF9lbmNvZGluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdmFyaW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhX2JhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHN0YXRpY19tZXRhZGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0X2ltcGwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcYWdncmVnYXRpb24uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xycGNfbWV0cmljX2lkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9jb21tb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9kZWNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYl9lbmNvZGUuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxpbml0X3Vuc2VjdXJlLmMiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50XGluc2VjdXJlXGNoYW5uZWxfY3JlYXRlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXGluc2VjdXJlXHNlcnZlcl9jaHR0cDIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcYWxwbi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxiaW5fZW5jb2Rlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxjaHR0cDJfdHJhbnNwb3J0LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX2RhdGEuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZ29hd2F5LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3BpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfcnN0X3N0cmVhbS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9zZXR0aW5ncy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX2VuY29kZXIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfcGFyc2VyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3RhYmxlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGh1ZmZzeW1zLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGluY29taW5nX21ldGFkYXRhLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHBhcnNpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RhdHVzX2NvbnZlcnNpb24uYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RyZWFtX2xpc3RzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0cmVhbV9tYXAuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdGltZW91dF9lbmNvZGluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFx2YXJpbnQuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcd3JpdGluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19jb250ZXh0LmMiPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDA5LDYgKzQ1NSwxNiBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX3BsdWdpbi5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcaW5pdGlhbGl6ZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcb3BlcmF0aW9uLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHRyYWNpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX2FyZ3MuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrLmMiPgpAQCAtNTg5LDggKzY0NSw2IEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2Nvbm5lY3Rpdml0eS5jIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfY3JlYXRlLmMiPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9pbml0LmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9waW5nLmMiPgpAQCAtNjAzLDYyICs2NTcsMjAgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGluaXQuYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxpbml0X3Vuc2VjdXJlLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbGFtZV9jbGllbnQuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxtZXRhZGF0YV9hcnJheS5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlci5jIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlcl9jaHR0cDIuYyI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2YWxpZGF0ZV9tZXRhZGF0YS5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHZlcnNpb24uYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGJ5dGVfc3RyZWFtLmMiPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcYWxwbi5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGJpbl9lbmNvZGVyLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2dvYXdheS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3BpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9yc3Rfc3RyZWFtLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfc2V0dGluZ3MuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHBhY2tfZW5jb2Rlci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3BhcnNlci5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX3RhYmxlLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaHVmZnN5bXMuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxpbmNvbWluZ19tZXRhZGF0YS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHBhcnNpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdGF0dXNfY29udmVyc2lvbi5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9saXN0cy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0cmVhbV9tYXAuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlx0aW1lb3V0X2VuY29kaW5nLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdmFyaW50LmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcd3JpdGluZy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyX3RyYW5zcG9ydC5jIj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxtZXRhZGF0YS5jIj4KQEAgLTY3MSwxOCArNjgzLDYgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcdHJhbnNwb3J0X29wX3N0cmluZy5jIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcaW5pdGlhbGl6ZS5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5jIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcb3BlcmF0aW9uLmMiPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHRyYWNpbmcuYyI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfY29tbW9uLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiX2RlY29kZS5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNTMwOWIxOC4uYzlmMWFkNiAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsOCArMSw3NyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGluaXRfdW5zZWN1cmUuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcaW5zZWN1cmVcY2hhbm5lbF9jcmVhdGUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXGNsaWVudFxpbnNlY3VyZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXGluc2VjdXJlXHNlcnZlcl9jaHR0cDIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHNlcnZlclxpbnNlY3VyZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGFscG4uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGJpbl9lbmNvZGVyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxjaHR0cDJfdHJhbnNwb3J0LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9kYXRhLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9nb2F3YXkuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3BpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3JzdF9zdHJlYW0uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGZyYW1lX3NldHRpbmdzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV93aW5kb3dfdXBkYXRlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja19lbmNvZGVyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja19wYXJzZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGhwYWNrX3RhYmxlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxodWZmc3ltcy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaW5jb21pbmdfbWV0YWRhdGEuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHBhcnNpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0YXR1c19jb252ZXJzaW9uLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxzdHJlYW1fbGlzdHMuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHN0cmVhbV9tYXAuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHRpbWVvdXRfZW5jb2RpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XHZhcmludC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcd3JpdGluZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGNvbnRleHQuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19jb250ZXh0LmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CkBAIC0xMyw2ICs4MiwyMSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xncnBjX3BsdWdpbi5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xpbml0aWFsaXplLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcb3BlcmF0aW9uLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHBsYWNlaG9sZGVycy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1x0cmFjaW5nLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX2FyZ3MuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yODMsOSArMzY3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfY29ubmVjdGl2aXR5LmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9jcmVhdGUuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2luaXQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zMDQsNiArMzg1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGluaXQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxpbml0X3Vuc2VjdXJlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbGFtZV9jbGllbnQuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zMTMsOSArMzk3LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlci5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlcl9jaHR0cDIuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2YWxpZGF0ZV9tZXRhZGF0YS5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTMyNSw2OSArNDA2LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcYnl0ZV9zdHJlYW0uYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGFscG4uYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxiaW5fZW5jb2Rlci5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2RhdGEuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9nb2F3YXkuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9waW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfcnN0X3N0cmVhbS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3NldHRpbmdzLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfd2luZG93X3VwZGF0ZS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX2VuY29kZXIuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja19wYXJzZXIuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja190YWJsZS5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGh1ZmZzeW1zLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaW5jb21pbmdfbWV0YWRhdGEuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxwYXJzaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcc3RhdHVzX2NvbnZlcnNpb24uYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdHJlYW1fbGlzdHMuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxzdHJlYW1fbWFwLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcdGltZW91dF9lbmNvZGluZy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHZhcmludC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHdyaXRpbmcuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00MDYsMjQgKzQyNCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydF9vcF9zdHJpbmcuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcY29udGV4dC5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xpbml0aWFsaXplLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuYyI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcb3BlcmF0aW9uLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXHBsYWNlaG9sZGVycy5jIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1x0cmFjaW5nLmMiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0aGlyZF9wYXJ0eVxuYW5vcGJccGJfY29tbW9uLmMiPgogICAgICAgPEZpbHRlcj50aGlyZF9wYXJ0eVxuYW5vcGI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ0MSwxNSArNDQxLDE1IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcYnl0ZV9idWZmZXJfcmVhZGVyLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xjZW5zdXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNvbXByZXNzaW9uLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xncnBjLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdGF0dXMuaCI+Ci0gICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxieXRlX2J1ZmZlci5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDY4LDE3ICs0NjgsODkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3RhdHVzLmgiPgogICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcY2Vuc3VzLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXHN0YXR1cy5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGFscG4uaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGJpbl9lbmNvZGVyLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxjaHR0cDJfdHJhbnNwb3J0LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZGF0YS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfZ29hd2F5LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9waW5nLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9yc3Rfc3RyZWFtLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxmcmFtZV9zZXR0aW5ncy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcZnJhbWVfd2luZG93X3VwZGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfZW5jb2Rlci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHBhY2tfcGFyc2VyLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxocGFja190YWJsZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaHR0cDJfZXJyb3JzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxodWZmc3ltcy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcaW5jb21pbmdfbWV0YWRhdGEuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0XGludGVybmFsLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXHRyYW5zcG9ydFxzdGF0dXNfY29udmVyc2lvbi5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcc3RyZWFtX21hcC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdGltZW91dF9lbmNvZGluZy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnRcdmFyaW50LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcYWdncmVnYXRpb24uaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19maWx0ZXIuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcZ3JwY19wbHVnaW4uaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNcbWxvZy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNlbnN1c1xycGNfbWV0cmljX2lkLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX2FyZ3MuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC03NTIsNjkgKzgyNCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGJ5dGVfc3RyZWFtLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxhbHBuLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcYmluX2VuY29kZXIuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX2RhdGEuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9nb2F3YXkuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxmcmFtZV9waW5nLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfcnN0X3N0cmVhbS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGZyYW1lX3NldHRpbmdzLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcZnJhbWVfd2luZG93X3VwZGF0ZS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGhwYWNrX2VuY29kZXIuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja19wYXJzZXIuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxocGFja190YWJsZS5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGh0dHAyX2Vycm9ycy5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXGh1ZmZzeW1zLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcaW5jb21pbmdfbWV0YWRhdGEuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlxpbnRlcm5hbC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHN0YXR1c19jb252ZXJzaW9uLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMjwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDJcc3RyZWFtX21hcC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyXHRpbWVvdXRfZW5jb2RpbmcuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMlx2YXJpbnQuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY2h0dHAyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGNodHRwMl90cmFuc3BvcnQuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcY29ubmVjdGl2aXR5X3N0YXRlLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC04MzMsMTUgKzg0Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydF9pbXBsLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXGFnZ3JlZ2F0aW9uLmgiPgotICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2Vuc3VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2Vuc3VzXG1sb2cuaCI+Ci0gICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjZW5zdXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjZW5zdXNccnBjX21ldHJpY19pZC5oIj4KLSAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNlbnN1czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiLmgiPgogICAgICAgPEZpbHRlcj50aGlyZF9wYXJ0eVxuYW5vcGI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTg3NSw2ICs4NzUsMzAgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4ODQ5MTA3Ny0zODZiLTIwMzktZDE0Yy0wYzQwMTM2YjVmN2F9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4MmY4NmU4Yy0wMGE0LWY1NjYtZDIzNS02NzBmYzYyOTc5OGR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydCI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTY3Yzg5ZmUtYzk3Yy0yN2UyLWFhYzAtOWJhNTg1NGNiNWZhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3MDI4MjlmMC0wOTllLTJhYjctNmI0NC1lZDdjZmYzZWMwODN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswZDU4OWUxNi1lNDcwLTQ5NjgtMzE4Yy03OTZhZjVhMzM2Mzd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcY2xpZW50XGluc2VjdXJlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszNGRmZGM5Yi1hYjk3LTQ3ZjAtYzFlMS1iMmU3MzgxYzNkZTZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4MWZiNTVmNC05MjE2LTQ0MWItODM4OS1hNzEyMGJiY2Q0NWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcc2VydmVyXGluc2VjdXJlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszZjUzZGNiNi03MWQ3LTI4ZmYtMTc5NC0yNmEwOGU0NjAxZmV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcZXh0XHRyYW5zcG9ydFxjaHR0cDJcdHJhbnNwb3J0Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0NWIyMGYyOC0zNzZjLTlkZWEtMTgwMC04YTAxOTM0MTE5NDZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4YmQ1YjQ2MS1iZmY4LTZhYTgtYjVhNi04NWRhMjgzNGViOGF9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtOTI5LDkgKzk1Myw2IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcdHJhbnNwb3J0Ij4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2YzMzOTRkMS0yN2U5LTAwM2UtMTllZC04MTE2ZDIxMGY3Y2N9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjaHR0cDIiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezIxMmE2OTk3LTliOWMtM2I0Ny1kOTUzLWFhZmYzNGQ2MDhiMX08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJ0aGlyZF9wYXJ0eSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MDI1YzA1MWUtOGViYS0xMjViLTY3ZjktMTczZjk1MTc2ZWIyfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9xcHMvcXBzLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovcXBzL3Fwcy52Y3hwcm9qCmluZGV4IGE1N2I3NDAuLmQ0NTg2NjQgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9xcHMvcXBzLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Fwcy9xcHMudmN4cHJvagpAQCAtMTYxLDYgKzE2MSwxNCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjcHBcdXRpbFxiZW5jaG1hcmtfY29uZmlnLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xjb250cm9sLnBiLmNjIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5wYi5oIj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5ncnBjLnBiLmNjIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5ncnBjLnBiLmgiPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xtZXNzYWdlcy5wYi5jYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXG1lc3NhZ2VzLnBiLmgiPgpAQCAtMTc3LDIxICsxODUsMTMgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdccGF5bG9hZHMuZ3JwYy5wYi5oIj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3Rpbmdcc3RhdHMucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xwZXJmX2RiLnBiLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3Rpbmdcc3RhdHMucGIuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHBlcmZfZGIucGIuaCI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHN0YXRzLmdycGMucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xwZXJmX2RiLmdycGMucGIuY2MiPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xzdGF0cy5ncnBjLnBiLmgiPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xjb250cm9sLnBiLmNjIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5wYi5oIj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5ncnBjLnBiLmNjIj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5ncnBjLnBiLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xwZXJmX2RiLmdycGMucGIuaCI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHNlcnZpY2VzLnBiLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTIwMSwxMyArMjAxLDEzIEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHNlcnZpY2VzLmdycGMucGIuaCI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHBlcmZfZGIucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xzdGF0cy5wYi5jYyI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHBlcmZfZGIucGIuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHN0YXRzLnBiLmgiPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xwZXJmX2RiLmdycGMucGIuY2MiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xzdGF0cy5ncnBjLnBiLmNjIj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdccGVyZl9kYi5ncnBjLnBiLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xzdGF0cy5ncnBjLnBiLmgiPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjcHBccXBzXGNsaWVudF9hc3luYy5jYyI+CiAgICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovcXBzL3Fwcy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovcXBzL3Fwcy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZWViOTU1NS4uYzNlYTYzZCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Fwcy9xcHMudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9xcHMvcXBzLnZjeHByb2ouZmlsdGVycwpAQCAtMSwyMiArMSwyMiBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5wcm90byI+CisgICAgICA8RmlsdGVyPnNyY1xwcm90b1xncnBjXHRlc3Rpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcbWVzc2FnZXMucHJvdG8iPgogICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHBheWxvYWRzLnByb3RvIj4KICAgICAgIDxGaWx0ZXI+c3JjXHByb3RvXGdycGNcdGVzdGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xzdGF0cy5wcm90byI+Ci0gICAgICA8RmlsdGVyPnNyY1xwcm90b1xncnBjXHRlc3Rpbmc8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3RpbmdcY29udHJvbC5wcm90byI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHBlcmZfZGIucHJvdG8iPgogICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1x0ZXN0aW5nXHNlcnZpY2VzLnByb3RvIj4KICAgICAgIDxGaWx0ZXI+c3JjXHByb3RvXGdycGNcdGVzdGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcdGVzdGluZ1xwZXJmX2RiLnByb3RvIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHRlc3Rpbmdcc3RhdHMucHJvdG8iPgogICAgICAgPEZpbHRlcj5zcmNccHJvdG9cZ3JwY1x0ZXN0aW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNwcFxxcHNcY2xpZW50X2FzeW5jLmNjIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qCmluZGV4IDJmM2I1OTEuLjU2OGEwNTEgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvagpAQCAtMTQ3LDggKzE0Nyw4IEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcY2FuY2VsX3Rlc3RfaGVscGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZW5kMmVuZF90ZXN0cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcY2FuY2VsX3Rlc3RfaGVscGVycy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGVuZDJlbmRfbm9zZWNfdGVzdHMuYyI+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYzYzZWJlNy4uZWNjMjNlOCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2ouZmlsdGVycwpAQCAtMTExLDEyICsxMTEsMTIgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xjYW5jZWxfdGVzdF9oZWxwZXJzLmgiPgotICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZW5kMmVuZF90ZXN0cy5oIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGNhbmNlbF90ZXN0X2hlbHBlcnMuaCI+CisgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogCiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvagppbmRleCBmM2IzMTFiLi4zZTAwOTJlZiAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qCkBAIC0xNDcsOCArMTQ3LDggQEAKICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogCiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xjYW5jZWxfdGVzdF9oZWxwZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxlbmQyZW5kX3Rlc3RzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xjYW5jZWxfdGVzdF9oZWxwZXJzLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZW5kMmVuZF90ZXN0cy5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ouZmlsdGVycyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ouZmlsdGVycwppbmRleCBjMzAwNTRhLi5jM2FhYmM0IDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvai5maWx0ZXJzCkBAIC0xMTQsMTIgKzExNCwxMiBAQAogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGNhbmNlbF90ZXN0X2hlbHBlcnMuaCI+Ci0gICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxlbmQyZW5kX3Rlc3RzLmgiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcY2FuY2VsX3Rlc3RfaGVscGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgPC9JdGVtR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4K