ZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9jb25mL0V4dGVybmFsQXBwQ29uZmlnLmphdmEgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvY29uZi9FeHRlcm5hbEFwcENvbmZpZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMDdiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvY29uZi9FeHRlcm5hbEFwcENvbmZpZy5qYXZhCkBAIC0wLDAgKzEsMjM5IEBACisvKi0NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIE9TQU0NCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBVCZUDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICogDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKiANCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICogPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKi8NCisNCisNCisNCitwYWNrYWdlIG9yZy5vbmFwLnBvcnRhbGFwcC5jb25mOw0KKw0KK2ltcG9ydCBqYXZheC5zcWwuRGF0YVNvdXJjZTsNCisNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsYXBwLmxvZ2luLkxvZ2luU3RyYXRlZ3lJbXBsOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxhcHAuc2NoZWR1bGVyLlJlZ2lzdHJ5QWRhcHRlcjsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuYXV0aC5Mb2dpblN0cmF0ZWd5Ow0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5jb25mLkFwcENvbmZpZzsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuY29uZi5Db25maWd1cmFibGU7DQoraW1wb3J0IG9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmxvZ2dpbmcubG9naWMuRUVMRkxvZ2dlckRlbGVnYXRlOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5vYmplY3RjYWNoZS5BYnN0cmFjdENhY2hlTWFuYWdlcjsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuc2VydmljZS5EYXRhQWNjZXNzU2VydmljZTsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUudXRpbC5DYWNoZU1hbmFnZXI7DQoraW1wb3J0IG9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLnV0aWwuU3lzdGVtUHJvcGVydGllczsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5WYWx1ZTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uQmVhbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uQ29tcG9uZW50U2NhbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uQ29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uRGVwZW5kc09uOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5JbXBvcnQ7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLlByb2ZpbGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLlByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcuYW5ub3RhdGlvbi5FbmFibGVBc3luYzsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLmFubm90YXRpb24uRW5hYmxlU2NoZWR1bGluZzsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLnF1YXJ0ei5TY2hlZHVsZXJGYWN0b3J5QmVhbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLnF1YXJ0ei5TcHJpbmdCZWFuSm9iRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIubXVsdGlwYXJ0LmNvbW1vbnMuQ29tbW9uc011bHRpcGFydFJlc29sdmVyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LlZpZXdSZXNvbHZlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldC5jb25maWcuYW5ub3RhdGlvbi5FbmFibGVXZWJNdmM7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQuY29uZmlnLmFubm90YXRpb24uSW50ZXJjZXB0b3JSZWdpc3RyeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldC5jb25maWcuYW5ub3RhdGlvbi5SZXNvdXJjZUhhbmRsZXJSZWdpc3RyeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlLmlvLlJlc291cmNlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmpkYmMuZGF0YXNvdXJjZS5pbml0LkRhdGFTb3VyY2VJbml0aWFsaXplcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5qZGJjLmRhdGFzb3VyY2UuaW5pdC5EYXRhYmFzZVBvcHVsYXRvcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5qZGJjLmRhdGFzb3VyY2UuaW5pdC5SZXNvdXJjZURhdGFiYXNlUG9wdWxhdG9yOw0KKw0KKy8qKg0KKyAqIE9OQVAgUG9ydGFsIFNESyBzYW1wbGUgYXBwbGljYXRpb24uIEV4dGVuZHMgY29yZSBBcHBDb25maWcgY2xhc3MgdG8NCisgKiByZXVzZSBpbnRlcmNlcHRvcnMsIHZpZXcgcmVzb2x2ZXJzIGFuZCBvdGhlciBmZWF0dXJlcyBkZWZpbmVkIHRoZXJlLg0KKyAqLw0KK0BDb25maWd1cmF0aW9uDQorQEVuYWJsZVdlYk12Yw0KK0BDb21wb25lbnRTY2FuKGJhc2VQYWNrYWdlcyA9IHsib3JnLm9uYXAifSkNCitAUHJvcGVydHlTb3VyY2UodmFsdWUgPSB7ICIke2NvbnRhaW5lci5jbGFzc3BhdGg6fS9XRUItSU5GL2NvbmYvYXBwL3Rlc3QucHJvcGVydGllcyIgfSwgaWdub3JlUmVzb3VyY2VOb3RGb3VuZCA9IHRydWUpDQorQFByb2ZpbGUoInNyYyIpDQorQEVuYWJsZUFzeW5jDQorQEVuYWJsZVNjaGVkdWxpbmcNCitwdWJsaWMgY2xhc3MgRXh0ZXJuYWxBcHBDb25maWcgZXh0ZW5kcyBBcHBDb25maWcgaW1wbGVtZW50cyBDb25maWd1cmFibGUgew0KKw0KKwlwcml2YXRlIFJlZ2lzdHJ5QWRhcHRlciBzY2hlZHVsZXJSZWdpc3RyeUFkYXB0ZXI7DQorICAgIC8qKiBUaGUgQ29uc3RhbnQgTE9HLiAqLw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBFRUxGTG9nZ2VyRGVsZWdhdGUgTE9HID0gRUVMRkxvZ2dlckRlbGVnYXRlLmdldExvZ2dlcihFeHRlcm5hbEFwcENvbmZpZy5jbGFzcyk7DQorIA0KKyAgICAvKiogVGhlIHZpZCBzY2hlbWEgc2NyaXB0LiAqLw0KKyAgICBAVmFsdWUoImNsYXNzcGF0aDpvc2FtLWNvcmUtc2NoZW1hLnNxbCIpDQorICAgIHByaXZhdGUgUmVzb3VyY2Ugb3NhbUNvcmVTY2hlbWFTY3JpcHQ7DQorDQorICAgIC8qKiBUaGUgdmlkIGRhdGEgc2NyaXB0LiAqLw0KKyAgICBAVmFsdWUoImNsYXNzcGF0aDpvc2FtLWNvcmUtZGF0YS5zcWwiKQ0KKyAgICBwcml2YXRlIFJlc291cmNlIG9zYW1Db3JlRGF0YVNjcmlwdDsNCisgICAgDQorICAgIC8qKg0KKyAgICAgKiBUaGUgQ2xhc3MgSW5uZXJDb25maWd1cmF0aW9uLg0KKyAgICAgKi8NCisJQENvbmZpZ3VyYXRpb24NCisJQEltcG9ydChTeXN0ZW1Qcm9wZXJ0aWVzLmNsYXNzKQ0KKwlzdGF0aWMgY2xhc3MgSW5uZXJDb25maWd1cmF0aW9uIHsNCisJfQ0KKw0KKwkvKioNCisJICogQHNlZSBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5jb25mLkFwcENvbmZpZyN2aWV3UmVzb2x2ZXIoKQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBWaWV3UmVzb2x2ZXIgdmlld1Jlc29sdmVyKCkgew0KKwkJcmV0dXJuIHN1cGVyLnZpZXdSZXNvbHZlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmNvbmYuQXBwQ29uZmlnI2FkZFJlc291cmNlSGFuZGxlcnMoUmVzb3VyY2VIYW5kbGVyUmVnaXN0cnkpDQorCSAqIA0KKwkgKiBAcGFyYW0gcmVnaXN0cnkNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBhZGRSZXNvdXJjZUhhbmRsZXJzKFJlc291cmNlSGFuZGxlclJlZ2lzdHJ5IHJlZ2lzdHJ5KSB7DQorCQlzdXBlci5hZGRSZXNvdXJjZUhhbmRsZXJzKHJlZ2lzdHJ5KTsNCisJfQ0KKw0KKwkvKioNCisJICogQHNlZSBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5jb25mLkFwcENvbmZpZyNkYXRhQWNjZXNzU2VydmljZSgpDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIERhdGFBY2Nlc3NTZXJ2aWNlIGRhdGFBY2Nlc3NTZXJ2aWNlKCkgew0KKwkJLy8gRWNobyB0aGUgSkRCQyBVUkwgdG8gYXNzaXN0IGRldmVsb3BlcnMgd2hlbiBzdGFydGluZyB0aGUgYXBwLg0KKwkJU3lzdGVtLm91dC5wcmludGxuKCJFeHRlcm5hbEFwcENvbmZpZzogIiArIFN5c3RlbVByb3BlcnRpZXMuREJfQ09OTkVDVElPTlVSTCArICIgaXMgIg0KKwkJCQkrIFN5c3RlbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoU3lzdGVtUHJvcGVydGllcy5EQl9DT05ORUNUSU9OVVJMKSk7DQorCQlyZXR1cm4gc3VwZXIuZGF0YUFjY2Vzc1NlcnZpY2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBsaXN0IHdpdGggYSBzaW5nbGUgZW50cnkgdGhhdCBpcyB0aGUgZXh0ZXJuYWwgYXBwDQorCSAqIGRlZmluaXRpb25zLnhtbCBwYXRoLg0KKwkgKiANCisJICogQHJldHVybiBMaXN0IG9mIFN0cmluZywgc2l6ZSAxDQorCSAqLw0KKwkvKkBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxTdHJpbmc+IGFkZFRpbGVEZWZpbml0aW9ucygpIHsNCisJCUxpc3Q8U3RyaW5nPiBkZWZpbml0aW9ucyA9IG5ldyBBcnJheUxpc3Q8PigpOw0KKwkJZGVmaW5pdGlvbnMuYWRkKCIvV0VCLUlORi9kZWZzL2RlZmluaXRpb25zLnhtbCIpOw0KKwkJcmV0dXJuIGRlZmluaXRpb25zOw0KKwl9Ki8NCisNCisJLyoqDQorCSAqIEFkZHMgcmVxdWVzdCBpbnRlcmNlcHRvcnMgdG8gdGhlIHNwZWNpZmllZCByZWdpc3RyeSBieSBjYWxsaW5nDQorCSAqIHtAbGluayBBcHBDb25maWcjYWRkSW50ZXJjZXB0b3JzKEludGVyY2VwdG9yUmVnaXN0cnkpfSwgYnV0IGV4Y2x1ZGVzDQorCSAqIGNlcnRhaW4gcGF0aHMgZnJvbSB0aGUgc2Vzc2lvbiB0aW1lb3V0IGludGVyY2VwdG9yLg0KKwkgKi8NCisvLwlAT3ZlcnJpZGUNCisJLy9wdWJsaWMgdm9pZCBhZGRJbnRlcmNlcHRvcnMoSW50ZXJjZXB0b3JSZWdpc3RyeSByZWdpc3RyeSkgew0KKy8vCQlzdXBlci5zZXRFeGNsdWRlVXJsUGF0aHNGb3JTZXNzaW9uVGltZW91dCgiL2xvZ2luX2V4dGVybmFsIiwgIiovbG9naW5fZXh0ZXJuYWwuaHRtIiwgImxvZ2luIiwgIi9sb2dpbi5odG0iLA0KKy8vCQkJCSIvYXBpKiIsICIvc2luZ2xlX3NpZ25vbi5odG0iLCAiL3NpbmdsZV9zaWdub24iKTsNCisvLwkJc3VwZXIuYWRkSW50ZXJjZXB0b3JzKHJlZ2lzdHJ5KTsNCisvLwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIGEge0BsaW5rIENhY2hlTWFuYWdlcn0gY2xhc3MuDQorCSAqIA0KKwkgKiBAcmV0dXJuIE5ldyBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FjaGVNYW5hZ2VyfQ0KKwkgKi8NCisJQEJlYW4NCisJcHVibGljIEFic3RyYWN0Q2FjaGVNYW5hZ2VyIGNhY2hlTWFuYWdlcigpIHsNCisJCXJldHVybiBuZXcgQ2FjaGVNYW5hZ2VyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgYSB7QGxpbmsgU2NoZWR1bGVyRmFjdG9yeUJlYW59IGFuZA0KKwkgKiBwb3B1bGF0ZXMgaXQgd2l0aCB0cmlnZ2Vycy4NCisJICogDQorCSAqIEByZXR1cm4gTmV3IGluc3RhbmNlIG9mIHtAbGluayBTY2hlZHVsZXJGYWN0b3J5QmVhbn0NCisJICogQHRocm93cyBFeGNlcHRpb24NCisJICovDQorCUBCZWFuIC8vIEFOTk9UQVRJT04gQ09NTUVOVEVEIE9VVA0KKwkvLyBBUFBMSUNBVElPTlMgUkVRVUlSSU5HIFFVQVJUWiBTSE9VTEQgUkVTVE9SRSBBTk5PVEFUSU9ODQorCUBEZXBlbmRzT24oImRhdGFTb3VyY2VJbml0aWFsaXplciIpDQorCXB1YmxpYyBTY2hlZHVsZXJGYWN0b3J5QmVhbiBzY2hlZHVsZXJGYWN0b3J5QmVhbigpIHRocm93cyBFeGNlcHRpb24gew0KKwkJU2NoZWR1bGVyRmFjdG9yeUJlYW4gc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlckZhY3RvcnlCZWFuKCk7DQorCQlzY2hlZHVsZXIuc2V0VHJpZ2dlcnMoc2NoZWR1bGVyUmVnaXN0cnlBZGFwdGVyLmdldFRyaWdnZXJzKCkpOw0KKwkJc2NoZWR1bGVyLnNldENvbmZpZ0xvY2F0aW9uKGFwcEFwcGxpY2F0aW9uQ29udGV4dC5nZXRSZXNvdXJjZSgiV0VCLUlORi9jb25mL3F1YXJ0ei5wcm9wZXJ0aWVzIikpOw0KKwkJc2NoZWR1bGVyLnNldERhdGFTb3VyY2UoZGF0YVNvdXJjZSgpKTsNCisJICAgIHNjaGVkdWxlci5zZXRKb2JGYWN0b3J5KG5ldyBTcHJpbmdCZWFuSm9iRmFjdG9yeSgpKTsNCisJCXJldHVybiBzY2hlZHVsZXI7DQorCX0NCisNCisJDQorCS8qKg0KKyAgICAgKiBEYXRhIHNvdXJjZSBpbml0aWFsaXplci4NCisgICAgICoNCisgICAgICogQHBhcmFtIGRhdGFTb3VyY2UgdGhlIGRhdGEgc291cmNlDQorICAgICAqIEByZXR1cm4gdGhlIGRhdGEgc291cmNlIGluaXRpYWxpemVyDQorICAgICAqLw0KKyAgICBAQmVhbg0KKyAgICBwdWJsaWMgRGF0YVNvdXJjZUluaXRpYWxpemVyIGRhdGFTb3VyY2VJbml0aWFsaXplcihEYXRhU291cmNlIGRhdGFTb3VyY2UpIHsNCisgICAgICAgIA0KKyAgICAgICAgTE9HLmluZm8oIkluaXRpYWxpemluZyBPU0FNIENPUkUgZGF0YSBzb3VyY2UiKTsNCisgICAgICAgIA0KKyAgICAgICAgZmluYWwgRGF0YVNvdXJjZUluaXRpYWxpemVyIGluaXRpYWxpemVyID0gbmV3IERhdGFTb3VyY2VJbml0aWFsaXplcigpOw0KKyAgICAgICAgaW5pdGlhbGl6ZXIuc2V0RGF0YVNvdXJjZShkYXRhU291cmNlKTsNCisgICAgICAgIGluaXRpYWxpemVyLnNldERhdGFiYXNlUG9wdWxhdG9yKGRhdGFiYXNlUG9wdWxhdG9yKCkpOw0KKyAgICAgICAgcmV0dXJuIGluaXRpYWxpemVyOw0KKyAgICB9DQorICAgIA0KKyAgICAvKioNCisgICAgICogRGF0YWJhc2UgcG9wdWxhdG9yLg0KKyAgICAgKg0KKyAgICAgKiBAcmV0dXJuIHRoZSBkYXRhYmFzZSBwb3B1bGF0b3INCisgICAgICovDQorICAgIHB1YmxpYyBEYXRhYmFzZVBvcHVsYXRvciBkYXRhYmFzZVBvcHVsYXRvcigpIHsNCisgICAgICAgIExPRy5pbmZvKCJQb3B1bGF0aW5nIE9TQU0gQ09SRSBkYXRhIHNvdXJjZSIpOw0KKyAgICAgICAgDQorICAgICAgICBmaW5hbCBSZXNvdXJjZURhdGFiYXNlUG9wdWxhdG9yIHBvcHVsYXRvciA9IG5ldyBSZXNvdXJjZURhdGFiYXNlUG9wdWxhdG9yKCk7DQorICAgICAgICBwb3B1bGF0b3IuYWRkU2NyaXB0KG9zYW1Db3JlU2NoZW1hU2NyaXB0KTsNCisgICAgICAgIHBvcHVsYXRvci5hZGRTY3JpcHQob3NhbUNvcmVEYXRhU2NyaXB0KTsNCisgICAgICAgIHJldHVybiBwb3B1bGF0b3I7DQorICAgIH0NCisJDQorDQorCS8qQEJlYW4NCisJcHVibGljIFNwcmluZ0xpcXVpYmFzZSBsaXF1aWJhc2VCZWFuKERhdGFTb3VyY2UgZGF0YVNvdXJjZSkgew0KKwkJU3ByaW5nTGlxdWliYXNlIHNwcmluZ0xpcXVpYmFzZSA9IG5ldyBTcHJpbmdMaXF1aWJhc2UoKTsNCisJCXNwcmluZ0xpcXVpYmFzZS5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UpOw0KKwkJc3ByaW5nTGlxdWliYXNlLnNldENoYW5nZUxvZygiY2xhc3NwYXRoOmRiLW1hc3Rlci1jaGFuZ2Vsb2cueG1sIik7DQorCQlyZXR1cm4gc3ByaW5nTGlxdWliYXNlOw0KKwl9Ki8NCisJDQorCS8qKg0KKwkgKiBTZXRzIHRoZSBzY2hlZHVsZXIgcmVnaXN0cnkgYWRhcHRlci4NCisJICogDQorCSAqIEBwYXJhbSBzY2hlZHVsZXJSZWdpc3RyeUFkYXB0ZXINCisJICovDQorCUBBdXRvd2lyZWQNCisJcHVibGljIHZvaWQgc2V0U2NoZWR1bGVyUmVnaXN0cnlBZGFwdGVyKGZpbmFsIFJlZ2lzdHJ5QWRhcHRlciBzY2hlZHVsZXJSZWdpc3RyeUFkYXB0ZXIpIHsNCisJCXRoaXMuc2NoZWR1bGVyUmVnaXN0cnlBZGFwdGVyID0gc2NoZWR1bGVyUmVnaXN0cnlBZGFwdGVyOw0KKwl9DQorDQorCUBCZWFuDQorCXB1YmxpYyBMb2dpblN0cmF0ZWd5IGxvZ2luU3RyYXRlZ3koKSB7DQorCQlyZXR1cm4gbmV3IExvZ2luU3RyYXRlZ3lJbXBsKCk7DQorCX0NCisNCisJQEJlYW4NCisJcHVibGljIENvbW1vbnNNdWx0aXBhcnRSZXNvbHZlciBtdWx0aXBhcnRSZXNvbHZlcigpIHsNCisJCUNvbW1vbnNNdWx0aXBhcnRSZXNvbHZlciByZXNvbHZlcj1uZXcgQ29tbW9uc011bHRpcGFydFJlc29sdmVyKCk7DQorCQlyZXNvbHZlci5zZXREZWZhdWx0RW5jb2RpbmcoInV0Zi04Iik7DQorCQlyZXR1cm4gcmVzb2x2ZXI7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2NvbmYvRXh0ZXJuYWxBcHBJbml0aWFsaXplci5qYXZhIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2NvbmYvRXh0ZXJuYWxBcHBJbml0aWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTc3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvY29uZi9FeHRlcm5hbEFwcEluaXRpYWxpemVyLmphdmEKQEAgLTAsMCArMSw2OSBAQAorLyotDQorICogPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBPU0FNDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQVQmVA0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqIA0KKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICogDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICovDQorDQorDQorDQorcGFja2FnZSBvcmcub25hcC5wb3J0YWxhcHAuY29uZjsNCisNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuY29uZi5BcHBJbml0aWFsaXplcjsNCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsNCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7DQorDQorcHVibGljIGNsYXNzIEV4dGVybmFsQXBwSW5pdGlhbGl6ZXIgZXh0ZW5kcyBBcHBJbml0aWFsaXplciB7DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ2xhc3M8Pz5bXSBnZXRSb290Q29uZmlnQ2xhc3NlcygpIHsNCisJCXJldHVybiBzdXBlci5nZXRSb290Q29uZmlnQ2xhc3NlcygpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ2xhc3M8Pz5bXSBnZXRTZXJ2bGV0Q29uZmlnQ2xhc3NlcygpIHsNCisJCUNsYXNzPD8+IGFwcENvbmZpZ0NsYXNzID0gRXh0ZXJuYWxBcHBDb25maWcuY2xhc3M7DQorCQkvLyBTaG93IHNvbWV0aGluZyBvbiBzdGRvdXQgdG8gaW5kaWNhdGUgdGhlIGFwcCBpcyBzdGFydGluZy4NCisJCVN5c3RlbS5vdXQucHJpbnRsbigiRXh0ZXJuYWxBcHBJbml0aWFsaXplcjogc2VydmxldCBjb25maWd1cmF0aW9uIGNsYXNzIGlzICIgKyBhcHBDb25maWdDbGFzcy5nZXROYW1lKCkpOw0KKwkJcmV0dXJuIG5ldyBDbGFzc1tdIHsgYXBwQ29uZmlnQ2xhc3MgfTsNCisJfQ0KKw0KKwkvKg0KKwkgKiBVUkwgcmVxdWVzdCB3aWxsIGRpcmVjdCB0byB0aGUgU3ByaW5nIGRpc3BhdGNoZXIgZm9yIHByb2Nlc3NpbmcNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgU3RyaW5nW10gZ2V0U2VydmxldE1hcHBpbmdzKCkgew0KKwkJcmV0dXJuIHN1cGVyLmdldFNlcnZsZXRNYXBwaW5ncygpOw0KKwl9DQorDQorLy8JQE92ZXJyaWRlDQorLy8JcHVibGljIHZvaWQgb25TdGFydHVwKFNlcnZsZXRDb250ZXh0IHNlcnZsZXRDb250ZXh0KSB0aHJvd3MgU2VydmxldEV4Y2VwdGlvbiB7DQorLy8JCXN1cGVyLm9uU3RhcnR1cChzZXJ2bGV0Q29udGV4dCk7DQorLy8JCXNldERlZmF1bHRUaW1lWm9uZVRvVVRDKCk7DQorLy8JCXNlcnZsZXRDb250ZXh0LmFkZEZpbHRlcigicmVxdWVzdEZyb21Mb2NhbGhvc3QiLCBMb2NhbGhvc3RGaWx0ZXIuY2xhc3MpDQorLy8JCQkJLmFkZE1hcHBpbmdGb3JVcmxQYXR0ZXJucyhudWxsLCBmYWxzZSwNCisvLwkJCQkJCVN0cmluZy5mb3JtYXQoIi8lcy8lcy8qIiwgQ2hhbmdlTWFuYWdlbWVudENvbnRyb2xsZXIuQ0hBTkdFX01BTkFHRU1FTlQsIENoYW5nZU1hbmFnZW1lbnRDb250cm9sbGVyLlZORl9XT1JLRkxPV19SRUxBVElPTiksDQorLy8JCQkJCQlTdHJpbmcuZm9ybWF0KCIvJXMvKiIsIFJvbGVHZW5lcmF0b3JDb250cm9sbGVyLkdFTkVSQVRFX1JPTEVfU0NSSVBUKSwNCisvLwkJCQkJCVN0cmluZy5mb3JtYXQoIi8lcy8qIiwgTWFpbnRlbmFuY2VDb250cm9sbGVyLk1BSU5URU5BTkNFKSk7DQorLy8JfQ0KKw0KKwkvL3NldCB0aW1lIHpvbmUgdG8gVVRDIHNvIERhdGVzIHdvdWxkIGJlIHdyaXR0ZW4gdG8gREIgaW4gVVRDIHRpbWV6b25lDQorCXByaXZhdGUgdm9pZCBzZXREZWZhdWx0VGltZVpvbmVUb1VUQygpIHsNCisJCVN5c3RlbS5zZXRQcm9wZXJ0eSgidXNlci50aW1lem9uZSIsICJVVEMiKTsNCisJCVRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlVUQyIpKTsgLy9zaW5jZSBUaW1lWm9uZSBjYWNoZSBwcmV2aW91cyB1c2VyLnRpbWV6b25lDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2NvbmYvSGliZXJuYXRlTWFwcGluZ0xvY2F0aW9ucy5qYXZhIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2NvbmYvSGliZXJuYXRlTWFwcGluZ0xvY2F0aW9ucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDhmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvY29uZi9IaWJlcm5hdGVNYXBwaW5nTG9jYXRpb25zLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyotDQorICogPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBPU0FNDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQVQmVA0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqIA0KKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICogDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICovDQorDQorDQorDQorcGFja2FnZSBvcmcub25hcC5wb3J0YWxhcHAuY29uZjsNCisNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuY29uZi5IaWJlcm5hdGVNYXBwaW5nTG9jYXRhYmxlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5Qcm9maWxlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuaW8uQ2xhc3NQYXRoUmVzb3VyY2U7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29yZS5pby5SZXNvdXJjZTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLkNvbXBvbmVudDsNCisNCitAQ29tcG9uZW50DQorQFByb2ZpbGUoInNyYyIpDQorcHVibGljIGNsYXNzIEhpYmVybmF0ZU1hcHBpbmdMb2NhdGlvbnMgaW1wbGVtZW50cyBIaWJlcm5hdGVNYXBwaW5nTG9jYXRhYmxlIHsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZVtdIGdldE1hcHBpbmdMb2NhdGlvbnMoKSB7DQorCQlyZXR1cm4gbmV3IFJlc291cmNlW10geyBuZXcgQ2xhc3NQYXRoUmVzb3VyY2UoIi4uL2Z1c2lvbi9vcm0vRnVzaW9uLmhibS54bWwiKSwNCisJCQkJbmV3IENsYXNzUGF0aFJlc291cmNlKCIuLi9mdXNpb24vb3JtL1dvcmtmbG93LmhibS54bWwiKSwNCisJCQkJbmV3IENsYXNzUGF0aFJlc291cmNlKCIuLi9mdXNpb24vb3JtL1JOb3RlQm9va0ludGVncmF0aW9uLmhibS54bWwiKSB9Ow0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nW10gZ2V0UGFja2FnZXNUb1NjYW4oKSB7DQorCQlyZXR1cm4gbmV3IFN0cmluZ1tdIHsgIm9yZy5vbmFwIiB9Ow0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9maWx0ZXIvU2VjdXJpdHlYc3NGaWx0ZXIuamF2YSBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9maWx0ZXIvU2VjdXJpdHlYc3NGaWx0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmY4ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2ZpbHRlci9TZWN1cml0eVhzc0ZpbHRlci5qYXZhCkBAIC0wLDAgKzEsOTIgQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogT1NBTQ0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKiANCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqIA0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqLw0KKw0KKw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAucG9ydGFsYXBwLmZpbHRlcjsNCisNCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOw0KKw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlckNoYWluOw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb247DQoraW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7DQoraW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsYXBwLnV0aWwuU2VjdXJpdHlYc3NWYWxpZGF0b3I7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmZpbHRlci5PbmNlUGVyUmVxdWVzdEZpbHRlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIudXRpbC5Db250ZW50Q2FjaGluZ1JlcXVlc3RXcmFwcGVyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi51dGlsLkNvbnRlbnRDYWNoaW5nUmVzcG9uc2VXcmFwcGVyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi51dGlsLldlYlV0aWxzOw0KKw0KK3B1YmxpYyBjbGFzcyBTZWN1cml0eVhzc0ZpbHRlciBleHRlbmRzIE9uY2VQZXJSZXF1ZXN0RmlsdGVyIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBRF9SRVFVRVNUID0gIkJBRF9SRVFVRVNUIjsNCisNCisJcHJpdmF0ZSBTZWN1cml0eVhzc1ZhbGlkYXRvciB2YWxpZGF0b3IgPSBTZWN1cml0eVhzc1ZhbGlkYXRvci5nZXRJbnN0YW5jZSgpOw0KKw0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0UmVxdWVzdERhdGEoZmluYWwgSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsNCisJCVN0cmluZyBwYXlsb2FkID0gbnVsbDsNCisJCUNvbnRlbnRDYWNoaW5nUmVxdWVzdFdyYXBwZXIgd3JhcHBlciA9IFdlYlV0aWxzLmdldE5hdGl2ZVJlcXVlc3QocmVxdWVzdCwgQ29udGVudENhY2hpbmdSZXF1ZXN0V3JhcHBlci5jbGFzcyk7DQorCQlpZiAod3JhcHBlciAhPSBudWxsKSB7DQorCQkJYnl0ZVtdIGJ1ZiA9IHdyYXBwZXIuZ2V0Q29udGVudEFzQnl0ZUFycmF5KCk7DQorCQkJaWYgKGJ1Zi5sZW5ndGggPiAwKSB7DQorCQkJCXBheWxvYWQgPSBuZXcgU3RyaW5nKGJ1ZiwgMCwgYnVmLmxlbmd0aCwgd3JhcHBlci5nZXRDaGFyYWN0ZXJFbmNvZGluZygpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcGF5bG9hZDsNCisJfQ0KKw0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0UmVzcG9uc2VEYXRhKGZpbmFsIEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQlTdHJpbmcgcGF5bG9hZCA9IG51bGw7DQorCQlDb250ZW50Q2FjaGluZ1Jlc3BvbnNlV3JhcHBlciB3cmFwcGVyID0gV2ViVXRpbHMuZ2V0TmF0aXZlUmVzcG9uc2UocmVzcG9uc2UsDQorCQkJCUNvbnRlbnRDYWNoaW5nUmVzcG9uc2VXcmFwcGVyLmNsYXNzKTsNCisJCWlmICh3cmFwcGVyICE9IG51bGwpIHsNCisJCQlieXRlW10gYnVmID0gd3JhcHBlci5nZXRDb250ZW50QXNCeXRlQXJyYXkoKTsNCisJCQlpZiAoYnVmLmxlbmd0aCA+IDApIHsNCisJCQkJcGF5bG9hZCA9IG5ldyBTdHJpbmcoYnVmLCAwLCBidWYubGVuZ3RoLCB3cmFwcGVyLmdldENoYXJhY3RlckVuY29kaW5nKCkpOw0KKwkJCQl3cmFwcGVyLmNvcHlCb2R5VG9SZXNwb25zZSgpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBwYXlsb2FkOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBkb0ZpbHRlckludGVybmFsKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLCBGaWx0ZXJDaGFpbiBmaWx0ZXJDaGFpbikNCisJCQl0aHJvd3MgU2VydmxldEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gew0KKw0KKwkJaWYgKHJlcXVlc3QuZ2V0TWV0aG9kKCkuZXF1YWxzSWdub3JlQ2FzZSgiUE9TVCIpIHx8IHJlcXVlc3QuZ2V0TWV0aG9kKCkuZXF1YWxzSWdub3JlQ2FzZSgiUFVUIikpIHsNCisNCisJCQlIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdFRvQ2FjaGUgPSBuZXcgQ29udGVudENhY2hpbmdSZXF1ZXN0V3JhcHBlcihyZXF1ZXN0KTsNCisJCQlIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlVG9DYWNoZSA9IG5ldyBDb250ZW50Q2FjaGluZ1Jlc3BvbnNlV3JhcHBlcihyZXNwb25zZSk7DQorCQkJZmlsdGVyQ2hhaW4uZG9GaWx0ZXIocmVxdWVzdFRvQ2FjaGUsIHJlc3BvbnNlVG9DYWNoZSk7DQorCQkJU3RyaW5nIHJlcXVlc3REYXRhID0gZ2V0UmVxdWVzdERhdGEocmVxdWVzdFRvQ2FjaGUpOw0KKwkJCVN0cmluZyByZXNwb25zZURhdGEgPSBnZXRSZXNwb25zZURhdGEocmVzcG9uc2VUb0NhY2hlKTsNCisJCQlpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXF1ZXN0RGF0YSkgJiYgdmFsaWRhdG9yLmRlbnlYU1MocmVxdWVzdERhdGEpKSB7DQorCQkJCXRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihCQURfUkVRVUVTVCk7DQorCQkJfQ0KKw0KKwkJfSBlbHNlIHsNCisJCQlmaWx0ZXJDaGFpbi5kb0ZpbHRlcihyZXF1ZXN0LCByZXNwb25zZSk7DQorCQl9DQorDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2xvZ2luL0xvZ2luU3RyYXRlZ3lJbXBsLmphdmEgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvbG9naW4vTG9naW5TdHJhdGVneUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjIwY2IxCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL2xvZ2luL0xvZ2luU3RyYXRlZ3lJbXBsLmphdmEKQEAgLTAsMCArMSwxMTUgQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogT1NBTQ0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKiANCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqIA0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqLw0KKw0KKw0KKw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAucG9ydGFsYXBwLmxvZ2luOw0KKw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuQ29va2llOw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Ow0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsNCisNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuYXV0aC5Mb2dpblN0cmF0ZWd5Ow0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5sb2dnaW5nLmxvZ2ljLkVFTEZMb2dnZXJEZWxlZ2F0ZTsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUub25ib2FyZGluZy5leGNlcHRpb24uQ2lwaGVyVXRpbEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUub25ib2FyZGluZy5leGNlcHRpb24uUG9ydGFsQVBJRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5vbmJvYXJkaW5nLnV0aWwuQ2lwaGVyVXRpbDsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUudXRpbC5TeXN0ZW1Qcm9wZXJ0aWVzOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0Lk1vZGVsQW5kVmlldzsNCisNCisvKioNCisgKiBJbXBsZW1lbnRzIGJhc2ljIHNpbmdsZS1zaWdub24gbG9naW4gc3RyYXRlZ3kgZm9yIG9wZW4tc291cmNlIGFwcGxpY2F0aW9ucw0KKyAqIHdoZW4gdXNlcnMgc3RhcnQgYXQgUG9ydGFsLiBFeHRyYWN0cyBhbiBlbmNyeXB0ZWQgdXNlciBJRCBzZW50IGJ5IFBvcnRhbC4NCisgKi8NCitwdWJsaWMgY2xhc3MgTG9naW5TdHJhdGVneUltcGwgZXh0ZW5kcyBMb2dpblN0cmF0ZWd5IHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgRUVMRkxvZ2dlckRlbGVnYXRlIGxvZ2dlciA9IEVFTEZMb2dnZXJEZWxlZ2F0ZS5nZXRMb2dnZXIoTG9naW5TdHJhdGVneUltcGwuY2xhc3MpOw0KKw0KKwkvKioNCisJICogbG9naW4gZm9yIG9wZW4gc291cmNlIGlzIHNhbWUgYXMgZXh0ZXJuYWwgbG9naW4gaW4gdGhlIG5vbi1vcGVuLXNvdXJjZQ0KKwkgKiB2ZXJzaW9uLg0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBNb2RlbEFuZFZpZXcgZG9Mb2dpbihIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlyZXR1cm4gZG9FeHRlcm5hbExvZ2luKHJlcXVlc3QsIHJlc3BvbnNlKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRVc2VySWQoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QpIHRocm93cyBQb3J0YWxBUElFeGNlcHRpb24gew0KKwkJLy8gQ2hlY2sgRUNPTVAgUG9ydGFsIGNvb2tpZQ0KKwkJQ29va2llIGVwID0gZ2V0Q29va2llKHJlcXVlc3QsIEVQX1NFUlZJQ0UpOw0KKwkJaWYgKGVwID09IG51bGwpIHsNCisJCQlsb2dnZXIuZGVidWcoRUVMRkxvZ2dlckRlbGVnYXRlLmRlYnVnTG9nZ2VyLCAiZ2V0VXNlcklkOiBubyBFUF9TRVJWSUNFIGNvb2tpZSwgcmV0dXJuaW5nIG51bGwiKTsNCisJCQlyZXR1cm4gbnVsbDsNCisJCX0NCisNCisJCVN0cmluZyB1c2VyaWQgPSBudWxsOw0KKwkJdHJ5IHsNCisJCQl1c2VyaWQgPSBnZXRVc2VySWRGcm9tQ29va2llKHJlcXVlc3QpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlsb2dnZXIuZXJyb3IoRUVMRkxvZ2dlckRlbGVnYXRlLmVycm9yTG9nZ2VyLCAiZ2V0VXNlcklkIGZhaWxlZCIsIGUpOw0KKwkJfQ0KKwkJcmV0dXJuIHVzZXJpZDsNCisJfQ0KKw0KKwkvKioNCisJICogU2VhcmNoZXMgdGhlIHJlcXVlc3QgZm9yIHRoZSB1c2VyLUlEIGNvb2tpZSBhbmQgZGVjcnlwdHMgdGhlIHZhbHVlIHVzaW5nIGENCisJICoga2V5IGNvbmZpZ3VyZWQgaW4gcHJvcGVydGllcw0KKwkgKiANCisJICogQHBhcmFtIHJlcXVlc3QNCisJICogICAgICAgICAgICBIdHRwU2VydmxldFJlcXVlc3QNCisJICogQHJldHVybiBVc2VyIElEDQorCSAqIEB0aHJvd3MgQ2lwaGVyVXRpbEV4Y2VwdGlvbg0KKwkgKiAgICAgICAgICAgICBPbiBhbnkgZmFpbHVyZSB0byBkZWNyeXB0DQorCSAqLw0KKwlwcml2YXRlIFN0cmluZyBnZXRVc2VySWRGcm9tQ29va2llKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0KSB0aHJvd3MgQ2lwaGVyVXRpbEV4Y2VwdGlvbiB7DQorCQlTdHJpbmcgdXNlcklkID0gIiI7DQorCQlDb29raWUgdXNlcklkQ29va2llID0gZ2V0Q29va2llKHJlcXVlc3QsIFVTRVJfSUQpOw0KKwkJaWYgKHVzZXJJZENvb2tpZSAhPSBudWxsKSB7DQorCQkJZmluYWwgU3RyaW5nIGNvb2tpZVZhbHVlID0gdXNlcklkQ29va2llLmdldFZhbHVlKCk7DQorCQkJaWYgKCFTeXN0ZW1Qcm9wZXJ0aWVzLmNvbnRhaW5zUHJvcGVydHkoU3lzdGVtUHJvcGVydGllcy5EZWNyeXB0aW9uX0tleSkpDQorCQkJCXRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkZhaWxlZCB0byBmaW5kIHByb3BlcnR5ICIgKyBTeXN0ZW1Qcm9wZXJ0aWVzLkRlY3J5cHRpb25fS2V5KTsNCisJCQlmaW5hbCBTdHJpbmcgZGVjcnlwdGlvbktleSA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoU3lzdGVtUHJvcGVydGllcy5EZWNyeXB0aW9uX0tleSk7DQorCQkJdXNlcklkID0gQ2lwaGVyVXRpbC5kZWNyeXB0KGNvb2tpZVZhbHVlLCBkZWNyeXB0aW9uS2V5KTsNCisJCQlsb2dnZXIuZGVidWcoRUVMRkxvZ2dlckRlbGVnYXRlLmRlYnVnTG9nZ2VyLCAiZ2V0VXNlcklkRnJvbUNvb2tpZTogZGVjcnlwdGVkIGFzIHt9IiwgdXNlcklkKTsNCisJCX0NCisJCXJldHVybiB1c2VySWQ7DQorCX0NCisNCisJLyoqDQorCSAqIFNlYXJjaGVzIHRoZSByZXF1ZXN0IGZvciB0aGUgbmFtZWQgY29va2llLg0KKwkgKiANCisJICogQHBhcmFtIHJlcXVlc3QNCisJICogICAgICAgICAgICBIdHRwU2VydmxldFJlcXVlc3QNCisJICogQHBhcmFtIGNvb2tpZU5hbWUNCisJICogICAgICAgICAgICBOYW1lIG9mIGRlc2lyZWQgY29va2llDQorCSAqIEByZXR1cm4gQ29va2llIGlmIGZvdW5kOyBvdGhlcndpc2UgbnVsbC4NCisJICovDQorCXByaXZhdGUgQ29va2llIGdldENvb2tpZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGNvb2tpZU5hbWUpIHsNCisJCUNvb2tpZVtdIGNvb2tpZXMgPSByZXF1ZXN0LmdldENvb2tpZXMoKTsNCisJCWlmIChjb29raWVzICE9IG51bGwpDQorCQkJZm9yIChDb29raWUgY29va2llIDogY29va2llcykNCisJCQkJaWYgKGNvb2tpZS5nZXROYW1lKCkuZXF1YWxzKGNvb2tpZU5hbWUpKQ0KKwkJCQkJcmV0dXJuIGNvb2tpZTsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9zY2hlZHVsZXIvUmVnaXN0ZXIuamF2YSBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9zY2hlZHVsZXIvUmVnaXN0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTk3ZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL3NjaGVkdWxlci9SZWdpc3Rlci5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogT1NBTQ0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKiANCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqIA0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqLw0KKw0KKw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAucG9ydGFsYXBwLnNjaGVkdWxlcjsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmxvZ2dpbmcubG9naWMuRUVMRkxvZ2dlckRlbGVnYXRlOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5zY2hlZHVsZXIuUmVnaXN0ZXJhYmxlOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS51dGlsLlN5c3RlbVByb3BlcnRpZXM7DQoraW1wb3J0IG9yZy5xdWFydHouVHJpZ2dlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5EZXBlbmRzT247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5Db21wb25lbnQ7DQorDQorQENvbXBvbmVudA0KK0BEZXBlbmRzT24oeyAibG9nUmVnaXN0cnkiLCAic3lzdGVtUHJvcGVydGllcyIgfSkNCitwdWJsaWMgY2xhc3MgUmVnaXN0ZXIgaW1wbGVtZW50cyBSZWdpc3RlcmFibGUgew0KKw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBFRUxGTG9nZ2VyRGVsZWdhdGUgbG9nZ2VyID0gRUVMRkxvZ2dlckRlbGVnYXRlLmdldExvZ2dlcihSZWdpc3Rlci5jbGFzcyk7DQorDQorCXByaXZhdGUgTGlzdDxUcmlnZ2VyPiBzY2hlZHVsZVRyaWdnZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorCVRyaWdnZXJbXSB0cmlnZ2VyID0gbmV3IFRyaWdnZXJbMV07DQorDQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBMb2dSZWdpc3RyeSBsb2dSZWdpc3RyeTsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBUcmlnZ2VyW10gZ2V0VHJpZ2dlcnMoKSB7DQorCQlyZXR1cm4gZ2V0U2NoZWR1bGVUcmlnZ2VycygpLnRvQXJyYXkodHJpZ2dlcik7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHJlZ2lzdGVyVHJpZ2dlcnMoKSB7DQorCQkvLyBpZiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgbm90IGF2YWlsYWJsZTsgdGhlIGNyb24gd2lsbCBub3QgYmUgYWRkZWQuDQorCQlpZiAoU3lzdGVtUHJvcGVydGllcy5jb250YWluc1Byb3BlcnR5KFN5c3RlbVByb3BlcnRpZXMuTE9HX0NST04pKSB7DQorCQkJbG9nZ2VyLmRlYnVnKEVFTEZMb2dnZXJEZWxlZ2F0ZS5kZWJ1Z0xvZ2dlciwNCisJCQkJCSJBZGRpbmcgbG9nIHJlZ2lzdHJ5IGZvciBjcm9uIHByb3BlcnR5IHt9IiwgU3lzdGVtUHJvcGVydGllcy5nZXRQcm9wZXJ0eShTeXN0ZW1Qcm9wZXJ0aWVzLkxPR19DUk9OKSk7DQorCQkJZ2V0U2NoZWR1bGVUcmlnZ2VycygpLmFkZChsb2dSZWdpc3RyeS5nZXRUcmlnZ2VyKCkpOw0KKwkJfQ0KKwl9DQorDQorCXB1YmxpYyBMaXN0PFRyaWdnZXI+IGdldFNjaGVkdWxlVHJpZ2dlcnMoKSB7DQorCQlyZXR1cm4gc2NoZWR1bGVUcmlnZ2VyczsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTY2hlZHVsZVRyaWdnZXJzKExpc3Q8VHJpZ2dlcj4gc2NoZWR1bGVUcmlnZ2Vycykgew0KKwkJdGhpcy5zY2hlZHVsZVRyaWdnZXJzID0gc2NoZWR1bGVUcmlnZ2VyczsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vamF2YS9vcmcvb25hcC9wb3J0YWxhcHAvc2NoZWR1bGVyL1JlZ2lzdHJ5QWRhcHRlci5qYXZhIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL3NjaGVkdWxlci9SZWdpc3RyeUFkYXB0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTNmMmExCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL3NjaGVkdWxlci9SZWdpc3RyeUFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKi0NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIE9TQU0NCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBVCZUDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICogDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKiANCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICogPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKi8NCisNCisNCisNCitwYWNrYWdlIG9yZy5vbmFwLnBvcnRhbGFwcC5zY2hlZHVsZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5zY2hlZHVsZXIuUmVnaXN0ZXJhYmxlOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsud29ya2Zsb3cuc2VydmljZXMuV29ya2Zsb3dTY2hlZHVsZVNlcnZpY2U7DQoraW1wb3J0IG9yZy5xdWFydHouVHJpZ2dlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcucXVhcnR6LlNjaGVkdWxlckZhY3RvcnlCZWFuOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuQ29tcG9uZW50Ow0KKw0KK0BDb21wb25lbnQNCitwdWJsaWMgY2xhc3MgUmVnaXN0cnlBZGFwdGVyIHsNCisNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFJlZ2lzdGVyYWJsZSByZWdpc3RyeTsNCisNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFdvcmtmbG93U2NoZWR1bGVTZXJ2aWNlIHdvcmtmbG93U2NoZWR1bGVTZXJ2aWNlOw0KKw0KKwlwcml2YXRlIFNjaGVkdWxlckZhY3RvcnlCZWFuIHNjaGVkdWxlckJlYW47DQorDQorCVRyaWdnZXIgW10gdHJpZ2dlciA9IG5ldyBUcmlnZ2VyWzFdOw0KKw0KKwlwdWJsaWMgVHJpZ2dlcltdIGdldFRyaWdnZXJzKCkgew0KKwkJcmVnaXN0cnkucmVnaXN0ZXJUcmlnZ2VycygpOw0KKwkJTGlzdDxUcmlnZ2VyPiBhbGxUcmlnZ2VycyA9IG5ldyBBcnJheUxpc3Q8PigpOw0KKwkJTGlzdDxUcmlnZ2VyPiBjb3JlVHJpZ2dlcnMgPSBhZGRDb3JlVHJpZ2dlcnMoKTsNCisJCWZpbmFsIFRyaWdnZXJbXSBleHRUcmlnZ2VyQXJyYXkgPSByZWdpc3RyeS5nZXRUcmlnZ2VycygpOw0KKwkJYWxsVHJpZ2dlcnMuYWRkQWxsKEFycmF5cy5hc0xpc3QoZXh0VHJpZ2dlckFycmF5KSk7DQorCQlhbGxUcmlnZ2Vycy5hZGRBbGwoY29yZVRyaWdnZXJzKTsNCisJCXJldHVybiBhbGxUcmlnZ2Vycy50b0FycmF5KHRyaWdnZXIpOw0KKwl9DQorDQorCXB1YmxpYyBMaXN0PFRyaWdnZXI+IGFkZENvcmVUcmlnZ2VycygpIHsNCisJCS8vIE9uIHN0YXJ0dXAgb2YgdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGNyYXNoIHJlY292ZXJ5LCBpbnZva2Ugd29ya2Zsb3cNCisJCS8vIHNjaGVkdWxlIHRyaWdnZXINCisJCUxpc3Q8VHJpZ2dlcj4gdHJpZ2dlcnMgPSBnZXRXb3JrZmxvd1NjaGVkdWxlU2VydmljZSgpLnRyaWdnZXJXb3JrZmxvd1NjaGVkdWxpbmcoKTsNCisJCXJldHVybiB0cmlnZ2VyczsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTY2hlZHVsZXJCZWFuKGZpbmFsIFNjaGVkdWxlckZhY3RvcnlCZWFuIHNjaGVkdWxlckJlYW4pIHsNCisJCXRoaXMuc2NoZWR1bGVyQmVhbiA9IHNjaGVkdWxlckJlYW47DQorCX0NCisNCisJcHVibGljIFNjaGVkdWxlckZhY3RvcnlCZWFuIGdldFNjaGVkdWxlckJlYW4oKSB7DQorCQlyZXR1cm4gc2NoZWR1bGVyQmVhbjsNCisJfQ0KKw0KKwlwdWJsaWMgUmVnaXN0ZXJhYmxlIGdldFJlZ2lzdHJ5KCkgew0KKwkJcmV0dXJuIHJlZ2lzdHJ5Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFJlZ2lzdHJ5KFJlZ2lzdGVyYWJsZSByZWdpc3RyeSkgew0KKwkJdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5Ow0KKwl9DQorDQorCXB1YmxpYyBXb3JrZmxvd1NjaGVkdWxlU2VydmljZSBnZXRXb3JrZmxvd1NjaGVkdWxlU2VydmljZSgpIHsNCisJCXJldHVybiB3b3JrZmxvd1NjaGVkdWxlU2VydmljZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRXb3JrZmxvd1NjaGVkdWxlU2VydmljZShXb3JrZmxvd1NjaGVkdWxlU2VydmljZSB3b3JrZmxvd1NjaGVkdWxlU2VydmljZSkgew0KKwkJdGhpcy53b3JrZmxvd1NjaGVkdWxlU2VydmljZSA9IHdvcmtmbG93U2NoZWR1bGVTZXJ2aWNlOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9zZXJ2aWNlL0FkbWluQXV0aEV4dGVuc2lvbi5qYXZhIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL2phdmEvb3JnL29uYXAvcG9ydGFsYXBwL3NlcnZpY2UvQWRtaW5BdXRoRXh0ZW5zaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJlZDQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL3BvcnRhbGFwcC9zZXJ2aWNlL0FkbWluQXV0aEV4dGVuc2lvbi5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogT1NBTQ0KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKiANCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqIA0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqLw0KKw0KKw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAucG9ydGFsYXBwLnNlcnZpY2U7DQorDQoraW1wb3J0IGphdmEudXRpbC5TZXQ7DQorDQoraW1wb3J0IG9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5Sb2xlOw0KK2ltcG9ydCBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kb21haW4uVXNlcjsNCitpbXBvcnQgb3JnLm9uYXAucG9ydGFsc2RrLmNvcmUubG9nZ2luZy5sb2dpYy5FRUxGTG9nZ2VyRGVsZWdhdGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5TZXJ2aWNlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsNCisNCisNCitAU2VydmljZSgiYWRtaW5BdXRoRXh0ZW5zaW9uIikNCitAVHJhbnNhY3Rpb25hbA0KKy8qKg0KKyAqIFByb3ZpZGVzIGVtcHR5IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbWV0aG9kcyBpbiBJQWRtaW5BdXRoRXh0ZW5zaW9uLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBZG1pbkF1dGhFeHRlbnNpb24gaW1wbGVtZW50cyBJQWRtaW5BdXRoRXh0ZW5zaW9uIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgRUVMRkxvZ2dlckRlbGVnYXRlIGxvZ2dlciA9IEVFTEZMb2dnZXJEZWxlZ2F0ZS5nZXRMb2dnZXIoQWRtaW5BdXRoRXh0ZW5zaW9uLmNsYXNzKTsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHNhdmVVc2VyRXh0ZW5zaW9uKFVzZXIgdXNlcikgew0KKwkJbG9nZ2VyLmRlYnVnKEVFTEZMb2dnZXJEZWxlZ2F0ZS5kZWJ1Z0xvZ2dlciwgInNhdmVVc2VyRXh0ZW5zaW9uIik7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVkaXRVc2VyRXh0ZW5zaW9uKFVzZXIgdXNlcikgew0KKwkJbG9nZ2VyLmRlYnVnKEVFTEZMb2dnZXJEZWxlZ2F0ZS5kZWJ1Z0xvZ2dlciwgImVkaXRVc2VyRXh0ZW5zaW9uIik7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHNhdmVVc2VyUm9sZUV4dGVuc2lvbihTZXQ8Um9sZT4gcm9sZXMsIFVzZXIgdXNlcikgew0KKwkJbG9nZ2VyLmRlYnVnKEVFTEZMb2dnZXJEZWxlZ2F0ZS5kZWJ1Z0xvZ2dlciwgInNhdmVVc2VyUm9sZUV4dGVuc2lvbiIpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvY2FjaGUuY2NmIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9jYWNoZS5jY2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJjYWNlMQotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvY2FjaGUuY2NmCkBAIC0wLDAgKzEsNTIgQEAKKyM8IS0tLyotDQorIyAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICogT1NBTSBDb3JlDQorIyAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisjICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyAgICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICAgICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgICAgICAgICoNCisjICAgICAgICAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyAgICAgICAgKg0KKyMgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjICAgICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgICAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgICAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICovDQorIy0tPg0KKw0KKw0KKyMgREVGQVVMVCBDQUNIRSBSRUdJT04NCitqY3MuZGVmYXVsdD1EQw0KK2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuQ29tcG9zaXRlQ2FjaGVBdHRyaWJ1dGVzDQoramNzLmRlZmF1bHQuY2FjaGVhdHRyaWJ1dGVzLk1heE9iamVjdHM9MTAwMA0KK2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5NZW1vcnlDYWNoZU5hbWU9b3JnLmFwYWNoZS5qY3MuZW5naW5lLm1lbW9yeS5scnUuTFJVTWVtb3J5Q2FjaGUNCitqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuRWxlbWVudEF0dHJpYnV0ZXMNCitqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcy5Jc0V0ZXJuYWw9dHJ1ZQ0KK2pjcy5kZWZhdWx0LmVsZW1lbnRhdHRyaWJ1dGVzLklzU3Bvb2w9dHJ1ZQ0KKw0KKw0KKyMgTUVNT1JZIFNIUklOS0lORyBDT05GSUdVUkFUSU9OIChDb21tZW50ZWQpDQorI2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5Vc2VNZW1vcnlTaHJpbmtlcj10cnVlDQorI2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5NYXhNZW1vcnlJZGxlVGltZVNlY29uZHM9MzYwMA0KKyNqY3MuZGVmYXVsdC5jYWNoZWF0dHJpYnV0ZXMuU2hyaW5rZXJJbnRlcnZhbFNlY29uZHM9NjANCisjamNzLmRlZmF1bHQuY2FjaGVhdHRyaWJ1dGVzLk1heFNwb29sUGVyUnVuPTUwMA0KKyNqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuRWxlbWVudEF0dHJpYnV0ZXMNCisjamNzLmRlZmF1bHQuZWxlbWVudGF0dHJpYnV0ZXMuSXNFdGVybmFsPWZhbHNlDQorDQorDQorIyBBVVhJTExBUlkgQ0FDSEUgQ09ORklHVVJBVElPTg0KK2pjcy5hdXhpbGlhcnkuREM9b3JnLmFwYWNoZS5qY3MuYXV4aWxpYXJ5LmRpc2suaW5kZXhlZC5JbmRleGVkRGlza0NhY2hlRmFjdG9yeQ0KK2pjcy5hdXhpbGlhcnkuREMuYXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5hdXhpbGlhcnkuZGlzay5pbmRleGVkLkluZGV4ZWREaXNrQ2FjaGVBdHRyaWJ1dGVzDQoramNzLmF1eGlsaWFyeS5EQy5hdHRyaWJ1dGVzLkRpc2tQYXRoPS90bXANCisNCisNCisjIFBSRS1ERUZJTkVEIFJFR0lPTiBGT1IgTE9PS1VQIERBVEENCitqY3MucmVnaW9uLmxvb2tVcE9iamVjdENhY2hlPURDDQoramNzLnJlZ2lvbi5sb29rVXBPYmplY3RDYWNoZS5jYWNoZWF0dHJpYnV0ZXM9b3JnLmFwYWNoZS5qY3MuZW5naW5lLkNvbXBvc2l0ZUNhY2hlQXR0cmlidXRlcw0KK2pjcy5yZWdpb24ubG9va1VwT2JqZWN0Q2FjaGUuY2FjaGVhdHRyaWJ1dGVzLk1heE9iamVjdHM9NDAwMA0KK2pjcy5yZWdpb24ubG9va1VwT2JqZWN0Q2FjaGUuY2FjaGVhdHRyaWJ1dGVzLk1lbW9yeUNhY2hlTmFtZT1vcmcuYXBhY2hlLmpjcy5lbmdpbmUubWVtb3J5LmxydS5MUlVNZW1vcnlDYWNoZQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvY2FjaGVfdGVtcGxhdGUuY2NmIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9jYWNoZV90ZW1wbGF0ZS5jY2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTljMzZiYgotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvY2FjaGVfdGVtcGxhdGUuY2NmCkBAIC0wLDAgKzEsNTIgQEAKKyM8IS0tLyotDQorIyAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICogT1NBTSBDb3JlDQorIyAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisjICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyAgICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICAgICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgICAgICAgICoNCisjICAgICAgICAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyAgICAgICAgKg0KKyMgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjICAgICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgICAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgICAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgICAgICAgICovDQorIy0tPg0KKw0KKw0KKyMgREVGQVVMVCBDQUNIRSBSRUdJT04NCitqY3MuZGVmYXVsdD1EQw0KK2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuQ29tcG9zaXRlQ2FjaGVBdHRyaWJ1dGVzDQoramNzLmRlZmF1bHQuY2FjaGVhdHRyaWJ1dGVzLk1heE9iamVjdHM9MTAwMA0KK2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5NZW1vcnlDYWNoZU5hbWU9b3JnLmFwYWNoZS5qY3MuZW5naW5lLm1lbW9yeS5scnUuTFJVTWVtb3J5Q2FjaGUNCitqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuRWxlbWVudEF0dHJpYnV0ZXMNCitqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcy5Jc0V0ZXJuYWw9dHJ1ZQ0KK2pjcy5kZWZhdWx0LmVsZW1lbnRhdHRyaWJ1dGVzLklzU3Bvb2w9dHJ1ZQ0KKw0KKw0KKyMgTUVNT1JZIFNIUklOS0lORyBDT05GSUdVUkFUSU9OIChDb21tZW50ZWQpDQorI2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5Vc2VNZW1vcnlTaHJpbmtlcj10cnVlDQorI2pjcy5kZWZhdWx0LmNhY2hlYXR0cmlidXRlcy5NYXhNZW1vcnlJZGxlVGltZVNlY29uZHM9MzYwMA0KKyNqY3MuZGVmYXVsdC5jYWNoZWF0dHJpYnV0ZXMuU2hyaW5rZXJJbnRlcnZhbFNlY29uZHM9NjANCisjamNzLmRlZmF1bHQuY2FjaGVhdHRyaWJ1dGVzLk1heFNwb29sUGVyUnVuPTUwMA0KKyNqY3MuZGVmYXVsdC5lbGVtZW50YXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuRWxlbWVudEF0dHJpYnV0ZXMNCisjamNzLmRlZmF1bHQuZWxlbWVudGF0dHJpYnV0ZXMuSXNFdGVybmFsPWZhbHNlDQorDQorDQorIyBBVVhJTExBUlkgQ0FDSEUgQ09ORklHVVJBVElPTg0KK2pjcy5hdXhpbGlhcnkuREM9b3JnLmFwYWNoZS5qY3MuYXV4aWxpYXJ5LmRpc2suaW5kZXhlZC5JbmRleGVkRGlza0NhY2hlRmFjdG9yeQ0KK2pjcy5hdXhpbGlhcnkuREMuYXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5hdXhpbGlhcnkuZGlzay5pbmRleGVkLkluZGV4ZWREaXNrQ2FjaGVBdHRyaWJ1dGVzDQoramNzLmF1eGlsaWFyeS5EQy5hdHRyaWJ1dGVzLkRpc2tQYXRoPSR7Q0FDSEVfRElSRUNUT1JZfQ0KKw0KKw0KKyMgUFJFLURFRklORUQgUkVHSU9OIEZPUiBMT09LVVAgREFUQQ0KK2pjcy5yZWdpb24ubG9va1VwT2JqZWN0Q2FjaGU9REMNCitqY3MucmVnaW9uLmxvb2tVcE9iamVjdENhY2hlLmNhY2hlYXR0cmlidXRlcz1vcmcuYXBhY2hlLmpjcy5lbmdpbmUuQ29tcG9zaXRlQ2FjaGVBdHRyaWJ1dGVzDQoramNzLnJlZ2lvbi5sb29rVXBPYmplY3RDYWNoZS5jYWNoZWF0dHJpYnV0ZXMuTWF4T2JqZWN0cz00MDAwDQoramNzLnJlZ2lvbi5sb29rVXBPYmplY3RDYWNoZS5jYWNoZWF0dHJpYnV0ZXMuTWVtb3J5Q2FjaGVOYW1lPW9yZy5hcGFjaGUuamNzLmVuZ2luZS5tZW1vcnkubHJ1LkxSVU1lbW9yeUNhY2hlDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9jYXRhbG9nLmpzb24gYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2NhdGFsb2cuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWZiNTIxCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9jYXRhbG9nLmpzb24KQEAgLTAsMCArMSwxNzQgQEAKK3sNCisJInNlcnZpY2VzIjogew0KKwkJIjAzNDZhYTlmLTU3YjctNDU4YS05NjgxLWRhZjViMTlkNTJiMCI6IHsNCisJCQkidXVpZCI6ICIwMzQ2YWE5Zi01N2I3LTQ1OGEtOTY4MS1kYWY1YjE5ZDUyYjAiLA0KKwkJCSJuYW1lIjogIlRoZSBXb3JzdCBTZXJ2aWNlIiwNCisJCQkidmVyc2lvbiI6ICIxLjAiLA0KKwkJCSJ0b3NjYU1vZGVsVVJMIjogInNhbXBsZVRvc2NhLmNzYXIiLA0KKwkJCSJjYXRlZ29yeSI6ICJCYWQgU2VydmljZXMiLA0KKwkJCSJsaWZlY3ljbGVTdGF0ZSI6ICJOT1RfQ0VSVElGSUVEX0NIRUNLT1VUIiwNCisJCQkibGFzdFVwZGF0ZXJVc2VySWQiOiAiZXhhbXBsZUBleGFtcGxlLm9yZyIsDQorCQkJImxhc3RVcGRhdGVyRnVsbE5hbWUiOiAiRXhhbXBsZSBVc2VyIiwNCisJCQkiZGlzdHJpYnV0aW9uU3RhdHVzIjogIkRJU1RSSUJVVElPTl9SRUpFQ1RFRCIsDQorCQkJImFydGlmYWN0cyI6IFtdLA0KKwkJCSJyZXNvdXJjZXMiOiBbXQ0KKwkJfSwNCisJCSIxMzQ2YWE5Zi01N2I3LTQ1OGEtOTY4MS1kYWY1YjE5ZDUyYjEiOiB7DQorCQkJInV1aWQiOiAiMTM0NmFhOWYtNTdiNy00NThhLTk2ODEtZGFmNWIxOWQ1MmIxIiwNCisJCQkibmFtZSI6ICJUaGUgV29yc3QgU2VydmljZSIsDQorCQkJInZlcnNpb24iOiAiMS4xIiwNCisJCQkidG9zY2FNb2RlbFVSTCI6ICJzYW1wbGVUb3NjYS5jc2FyIiwNCisJCQkiY2F0ZWdvcnkiOiAiQmFkIFNlcnZpY2VzIiwNCisJCQkibGlmZWN5Y2xlU3RhdGUiOiAiQ0VSVElGSUVEIiwNCisJCQkibGFzdFVwZGF0ZXJVc2VySWQiOiAiZXhhbXBsZUBleGFtcGxlLm9yZyIsDQorCQkJImxhc3RVcGRhdGVyRnVsbE5hbWUiOiAiRXhhbXBsZSBVc2VyIiwNCisJCQkiZGlzdHJpYnV0aW9uU3RhdHVzIjogIkRJU1RSSUJVVEVEIiwNCisJCQkiYXJ0aWZhY3RzIjogW10sDQorCQkJInJlc291cmNlcyI6IFtdDQorCQl9LA0KKwkJIjMzNDZhYTlmLTU3YjctNDU4YS05NjgxLWRhZjViMTlkNTJiMyI6IHsNCisJCQkidXVpZCI6ICIzMzQ2YWE5Zi01N2I3LTQ1OGEtOTY4MS1kYWY1YjE5ZDUyYjMiLA0KKwkJCSJuYW1lIjogIkJsYW5kIFNlcnZpY2UiLA0KKwkJCSJ2ZXJzaW9uIjogIjEuOSIsDQorCQkJInRvc2NhTW9kZWxVUkwiOiAic2FtcGxlVG9zY2EuY3NhciIsDQorCQkJImNhdGVnb3J5IjogIk5ldXRyYWwgU2VydmljZXMiLA0KKwkJCSJsaWZlY3ljbGVTdGF0ZSI6ICJDRVJUSUZJRUQiLA0KKwkJCSJsYXN0VXBkYXRlclVzZXJJZCI6ICJleGFtcGxlQGV4YW1wbGUub3JnIiwNCisJCQkibGFzdFVwZGF0ZXJGdWxsTmFtZSI6ICJFeGFtcGxlIFVzZXIiLA0KKwkJCSJkaXN0cmlidXRpb25TdGF0dXMiOiAiRElTVFJJQlVUSU9OX05PVF9BUFBST1ZFRCIsDQorCQkJImFydGlmYWN0cyI6IFtdLA0KKwkJCSJyZXNvdXJjZXMiOiBbXQ0KKwkJfSwNCisJCSIyMzQ2YWE5Zi01N2I3LTQ1OGEtOTY4MS1kYWY1YjE5ZDUyYjIiOiB7DQorCQkJInV1aWQiOiAiMjM0NmFhOWYtNTdiNy00NThhLTk2ODEtZGFmNWIxOWQ1MmIyIiwNCisJCQkibmFtZSI6ICJUaGUgQmVzdCBTZXJ2aWNlIiwNCisJCQkidmVyc2lvbiI6ICIxLjMiLA0KKwkJCSJ0b3NjYU1vZGVsVVJMIjogInNhbXBsZVRvc2NhLmNzYXIiLA0KKwkJCSJjYXRlZ29yeSI6ICJHb29kIFNlcnZpY2VzIiwNCisJCQkibGlmZWN5Y2xlU3RhdGUiOiAiQ0VSVElGSUVEIiwNCisJCQkibGFzdFVwZGF0ZXJVc2VySWQiOiAiZXhhbXBsZUBleGFtcGxlLm9yZyIsDQorCQkJImxhc3RVcGRhdGVyRnVsbE5hbWUiOiAiRXhhbXBsZSBVc2VyIiwNCisJCQkiZGlzdHJpYnV0aW9uU3RhdHVzIjogIkRJU1RSSUJVVElPTl9BUFBST1ZFRCIsDQorCQkJImFydGlmYWN0cyI6IFsNCisJCQkJCXsNCisJCQkJCQkiYXJ0aWZhY3RVVUlEIjogIjBjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MCIsDQorCQkJCQkJImdlbmVyYXRlZEZyb21VVUlEIjogIjNjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MCIsDQorCQkJCQkJImFydGlmYWN0TmFtZSI6ICJUaGUgV29yc3QgQXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFR5cGUiOiAiSEVBVCIsDQorCQkJCQkJImFydGlmYWN0RGVzY3JpcHRpb24iOiAiVGhpcyBpcyB0aGUgd29yc3QgYXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFVSTCI6ICJodHRwOi8vd3d3Lm9wZW5lY29tcC5vcmcvIiwNCisJCQkJCQkiYXJ0aWZhY3RUaW1lb3V0IjogIjYwIiwNCisJCQkJCQkiYXJ0aWZhY3RDaGVja3N1bSI6ICJBIHdvcnRoeSBjaGVja3N1bSIsDQorCQkJCQkJImFydGlmYWN0VmVyc2lvbiI6ICIwLjEiLA0KKwkJCQkJfSwNCisJCQkJCXsNCisJCQkJCQkiYXJ0aWZhY3RVVUlEIjogIjFjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MSIsDQorCQkJCQkJImdlbmVyYXRlZEZyb21VVUlEIjogIjNjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MCIsDQorCQkJCQkJImFydGlmYWN0TmFtZSI6ICJUaGUgV29yc3QgQXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFR5cGUiOiAiSEVBVCIsDQorCQkJCQkJImFydGlmYWN0RGVzY3JpcHRpb24iOiAiVGhpcyBpcyB0aGUgd29yc3QgYXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFVSTCI6ICJodHRwOi8vd3d3Lm9wZW5lY29tcC5vcmcvIiwNCisJCQkJCQkiYXJ0aWZhY3RUaW1lb3V0IjogIjYwIiwNCisJCQkJCQkiYXJ0aWZhY3RDaGVja3N1bSI6ICJBIHdvcnRoeSBjaGVja3N1bSIsDQorCQkJCQkJImFydGlmYWN0VmVyc2lvbiI6ICIwLjEiLA0KKwkJCQkJfSwNCisJCQkJCXsNCisJCQkJCQkiYXJ0aWZhY3RVVUlEIjogIjJjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MiIsDQorCQkJCQkJImdlbmVyYXRlZEZyb21VVUlEIjogIjNjZjc4YzgxLTEyNDYtNDVlNy1hMTkwLWVhYTMwOWVlNTY4MCIsDQorCQkJCQkJImFydGlmYWN0TmFtZSI6ICJUaGUgV29yc3QgQXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFR5cGUiOiAiSEVBVCIsDQorCQkJCQkJImFydGlmYWN0RGVzY3JpcHRpb24iOiAiVGhpcyBpcyB0aGUgd29yc3QgYXJ0aWZhY3QiLA0KKwkJCQkJCSJhcnRpZmFjdFVSTCI6ICJodHRwOi8vd3d3Lm9wZW5lY29tcC5vcmcvIiwNCisJCQkJCQkiYXJ0aWZhY3RUaW1lb3V0IjogIjYwIiwNCisJCQkJCQkiYXJ0aWZhY3RDaGVja3N1bSI6ICJBIHdvcnRoeSBjaGVja3N1bSIsDQorCQkJCQkJImFydGlmYWN0VmVyc2lvbiI6ICIwLjEiLA0KKwkJCQkJfQ0KKwkJCV0sDQorCQkJInJlc291cmNlcyI6IFtdDQorCQl9DQorCX0sDQorCSJyZXNvdXJjZXMiOiB7DQorCQkiMmY5MmI1YjAtMTBmZi00Y2Y0LTk1MzEtODg1NDZmZTg4YTQyIjogew0KKwkJCSJ1dWlkIjogIjJmOTJiNWIwLTEwZmYtNGNmNC05NTMxLTg4NTQ2ZmU4OGE0MiIsDQorCQkJImludmFyaWFudFVVSUQiOiAiZGY5MmI1YjAtMTBmZi00Y2Y0LTk1MzEtODg1NDZmZTg4YTRkIiwNCisJCQkibmFtZSI6ICJUaGUgV29yc3QgUmVzb3VyY2UiLA0KKwkJCSJ2ZXJzaW9uIjogIjAuMSIsDQorCQkJInRvc2NhTW9kZWxVUkwiOiAic2FtcGxlVG9zY2EuY3NhciIsDQorCQkJInRvc2NhTW9kZWwiOiAiaHR0cDovL3d3dy5vcGVuZWNvbXAub3JnLyIsDQorCQkJInRvc2NhUmVzb3VyY2VOYW1lIjogIlRoZSBXb3JzdCBSZXNvdXJjZSAoVE9TQ0EpIiwNCisJCQkiY2F0ZWdvcnkiOiAiQmFkIFJlc291cmNlcyIsDQorCQkJInN1YkNhdGVnb3J5IjogIlJlYWxseSBCYWQgUmVzb3VyY2VzIiwNCisJCQkicmVzb3VyY2VUeXBlIjogIlZGIiwNCisJCQkibGlmZWN5Y2xlU3RhdGUiOiAiQ0VSVElGSUVEIiwNCisJCQkibGFzdFVwZGF0ZXJVc2VySWQiOiAiZXhhbXBsZUBleGFtcGxlLm9yZyIsDQorCQkJImxhc3RVcGRhdGVyRnVsbE5hbWUiOiAiRXhhbXBsZSBVc2VyIiwNCisJCQkiYXJ0aWZhY3RzIjogWw0KKwkJCQkJew0KKwkJCQkJCSJhcnRpZmFjdFVVSUQiOiAiMGNmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgwIiwNCisJCQkJCQkiZ2VuZXJhdGVkRnJvbVVVSUQiOiAiM2NmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgwIiwNCisJCQkJCQkiYXJ0aWZhY3ROYW1lIjogIlRoZSBXb3JzdCBBcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VHlwZSI6ICJIRUFUIiwNCisJCQkJCQkiYXJ0aWZhY3REZXNjcmlwdGlvbiI6ICJUaGlzIGlzIHRoZSB3b3JzdCBhcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VVJMIjogImh0dHA6Ly93d3cub3BlbmVjb21wLm9yZy8iLA0KKwkJCQkJCSJhcnRpZmFjdFRpbWVvdXQiOiAiNjAiLA0KKwkJCQkJCSJhcnRpZmFjdENoZWNrc3VtIjogIkEgd29ydGh5IGNoZWNrc3VtIiwNCisJCQkJCQkiYXJ0aWZhY3RWZXJzaW9uIjogIjAuMSIsDQorCQkJCQl9LA0KKwkJCQkJew0KKwkJCQkJCSJhcnRpZmFjdFVVSUQiOiAiMWNmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgxIiwNCisJCQkJCQkiZ2VuZXJhdGVkRnJvbVVVSUQiOiAiM2NmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgwIiwNCisJCQkJCQkiYXJ0aWZhY3ROYW1lIjogIlRoZSBXb3JzdCBBcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VHlwZSI6ICJIRUFUIiwNCisJCQkJCQkiYXJ0aWZhY3REZXNjcmlwdGlvbiI6ICJUaGlzIGlzIHRoZSB3b3JzdCBhcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VVJMIjogImh0dHA6Ly93d3cub3BlbmVjb21wLm9yZy8iLA0KKwkJCQkJCSJhcnRpZmFjdFRpbWVvdXQiOiAiNjAiLA0KKwkJCQkJCSJhcnRpZmFjdENoZWNrc3VtIjogIkEgd29ydGh5IGNoZWNrc3VtIiwNCisJCQkJCQkiYXJ0aWZhY3RWZXJzaW9uIjogIjAuMSIsDQorCQkJCQl9LA0KKwkJCQkJew0KKwkJCQkJCSJhcnRpZmFjdFVVSUQiOiAiMmNmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgyIiwNCisJCQkJCQkiZ2VuZXJhdGVkRnJvbVVVSUQiOiAiM2NmNzhjODEtMTI0Ni00NWU3LWExOTAtZWFhMzA5ZWU1NjgwIiwNCisJCQkJCQkiYXJ0aWZhY3ROYW1lIjogIlRoZSBXb3JzdCBBcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VHlwZSI6ICJIRUFUIiwNCisJCQkJCQkiYXJ0aWZhY3REZXNjcmlwdGlvbiI6ICJUaGlzIGlzIHRoZSB3b3JzdCBhcnRpZmFjdCIsDQorCQkJCQkJImFydGlmYWN0VVJMIjogImh0dHA6Ly93d3cub3BlbmVjb21wLm9yZy8iLA0KKwkJCQkJCSJhcnRpZmFjdFRpbWVvdXQiOiAiNjAiLA0KKwkJCQkJCSJhcnRpZmFjdENoZWNrc3VtIjogIkEgd29ydGh5IGNoZWNrc3VtIiwNCisJCQkJCQkiYXJ0aWZhY3RWZXJzaW9uIjogIjAuMSIsDQorCQkJCQl9DQorCQkJXQ0KKwkJfSwNCisJCSIwZjkyYjViMC0xMGZmLTRjZjQtOTUzMS04ODU0NmZlODhhNDAiOiB7DQorCQkJInV1aWQiOiAiMGY5MmI1YjAtMTBmZi00Y2Y0LTk1MzEtODg1NDZmZTg4YTQwIiwNCisJCQkiaW52YXJpYW50VVVJRCI6ICJkZjkyYjViMC0xMGZmLTRjZjQtOTUzMS04ODU0NmZlODhhNGQiLA0KKwkJCSJuYW1lIjogIlRoZSBXb3JzdCBSZXNvdXJjZSIsDQorCQkJInZlcnNpb24iOiAiMC4xIiwNCisJCQkidG9zY2FNb2RlbFVSTCI6ICJzYW1wbGVUb3NjYS5jc2FyIiwNCisJCQkidG9zY2FNb2RlbCI6ICJodHRwOi8vd3d3Lm9wZW5lY29tcC5vcmcvIiwNCisJCQkidG9zY2FSZXNvdXJjZU5hbWUiOiAiVGhlIFdvcnN0IFJlc291cmNlIChUT1NDQSkiLA0KKwkJCSJjYXRlZ29yeSI6ICJCYWQgUmVzb3VyY2VzIiwNCisJCQkic3ViQ2F0ZWdvcnkiOiAiUmVhbGx5IEJhZCBSZXNvdXJjZXMiLA0KKwkJCSJyZXNvdXJjZVR5cGUiOiAiVkYiLA0KKwkJCSJsaWZlY3ljbGVTdGF0ZSI6ICJDRVJUSUZJRUQiLA0KKwkJCSJsYXN0VXBkYXRlclVzZXJJZCI6ICJleGFtcGxlQGV4YW1wbGUub3JnIiwNCisJCQkibGFzdFVwZGF0ZXJGdWxsTmFtZSI6ICJFeGFtcGxlIFVzZXIiLA0KKwkJCSJhcnRpZmFjdHMiOiBbXQ0KKwkJfSwNCisJCSIxZjkyYjViMC0xMGZmLTRjZjQtOTUzMS04ODU0NmZlODhhNDEiOiB7DQorCQkJInV1aWQiOiAiMWY5MmI1YjAtMTBmZi00Y2Y0LTk1MzEtODg1NDZmZTg4YTQxIiwNCisJCQkiaW52YXJpYW50VVVJRCI6ICJkZjkyYjViMC0xMGZmLTRjZjQtOTUzMS04ODU0NmZlODhhNGQiLA0KKwkJCSJuYW1lIjogIlRoZSBXb3JzdCBSZXNvdXJjZSIsDQorCQkJInZlcnNpb24iOiAiMC4xIiwNCisJCQkidG9zY2FNb2RlbFVSTCI6ICJzYW1wbGVUb3NjYS5jc2FyIiwNCisJCQkidG9zY2FNb2RlbCI6ICJodHRwOi8vd3d3Lm9wZW5lY29tcC5vcmcvIiwNCisJCQkidG9zY2FSZXNvdXJjZU5hbWUiOiAiVGhlIFdvcnN0IFJlc291cmNlIChUT1NDQSkiLA0KKwkJCSJjYXRlZ29yeSI6ICJCYWQgUmVzb3VyY2VzIiwNCisJCQkic3ViQ2F0ZWdvcnkiOiAiUmVhbGx5IEJhZCBSZXNvdXJjZXMiLA0KKwkJCSJyZXNvdXJjZVR5cGUiOiAiVkYiLA0KKwkJCSJsaWZlY3ljbGVTdGF0ZSI6ICJDRVJUSUZJRUQiLA0KKwkJCSJsYXN0VXBkYXRlclVzZXJJZCI6ICJleGFtcGxlQGV4YW1wbGUub3JnIiwNCisJCQkibGFzdFVwZGF0ZXJGdWxsTmFtZSI6ICJFeGFtcGxlIFVzZXIiLA0KKwkJCSJhcnRpZmFjdHMiOiBbXQ0KKwkJfQ0KKwl9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMva2V5LnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2tleS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYmZiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2tleS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsNDEgQEAKKyMjIw0KKyMgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgT05BUCBQb3J0YWwgU0RLDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBDb3B5cmlnaHQgwqkgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjDQorIyBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHNvZnR3YXJlIGNvbnRhaW5lZCBoZXJlaW4gaXMgbGljZW5zZWQNCisjIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSDigJxMaWNlbnNl4oCdKTsNCisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjDQorIyAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjDQorIyBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIGRvY3VtZW50YXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyMgdW5kZXIgdGhlIENyZWF0aXZlIENvbW1vbnMgTGljZW5zZSwgQXR0cmlidXRpb24gNC4wIEludGwuICh0aGUg4oCcTGljZW5zZeKAnSk7DQorIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBkb2N1bWVudGF0aW9uIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjDQorIyAgICAgICAgICAgICBodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wLw0KKyMNCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgZG9jdW1lbnRhdGlvbg0KKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIw0KKyMgPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMNCisjIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorIyMjDQorDQorIyBQcm9wZXJ0aWVzIHJlYWQgYnkgdGhlIEVDT01QIEZyYW1ld29yayBsaWJyYXJ5IChlcHNkay1mdykNCisNCitjaXBoZXIuZW5jLmtleSA9IEFHTERkRzREMDRCS20ySXhJV0VyOG89PSEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2JhY2sueG1sIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9sb2diYWNrLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGI1MzRkCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9sb2diYWNrLnhtbApAQCAtMCwwICsxLDM3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICBPTkFQIFBvcnRhbCBTREsNCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgIENvcHlyaWdodCDCqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgc29mdHdhcmUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyAgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIOKAnExpY2Vuc2XigJ0pOw0KKyAgeW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgZG9jdW1lbnRhdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGxpY2Vuc2VkDQorICB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlLCBBdHRyaWJ1dGlvbiA0LjAgSW50bC4gKHRoZSDigJxMaWNlbnNl4oCdKTsNCisgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGRvY3VtZW50YXRpb24gZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvDQorIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBkb2N1bWVudGF0aW9uDQorICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgDQorICA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIA0KKyAgRUNPTVAgaXMgYSB0cmFkZW1hcmsgYW5kIHNlcnZpY2UgbWFyayBvZiBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgIC0tPg0KKzxjb25maWd1cmF0aW9uIHNjYW49InRydWUiIHNjYW5QZXJpb2Q9IjMgc2Vjb25kcyIgZGVidWc9InRydWUiPg0KKyAgPCEtLSANCisgIExvZ2JhY2sgZmlsZXMgZm9yIHRoZSBPTkFQIFBvcnRhbCBTREsgQXBwbGljYXRpb24gImVwc2RrLWFwcC1vcyINCisgIGFyZSBjcmVhdGVkIGluIGRpcmVjdG9yeSAke2NhdGFsaW5hLmJhc2V9L2xvZ3MvZXBzZGtfYXBwX29zOw0KKyAgZS5nLiwgYXBhY2hlLXRvbWNhdC04LjAuMzUvbG9ncy9lcHNka19hcHBfb3MvYXBwbGljYXRpb24ubG9nICANCisgIC0tPg0KKyAgPCEtLTxqbXhDb25maWd1cmF0b3IgLz4gLS0+DQorDQorICA8IS0tICBzcGVjaWZ5IHRoZSBjb21wb25lbnQgbmFtZSAtLT4NCisgIDxwcm9wZXJ0eSBuYW1lPSJjb21wb25lbnROYW1lIiB2YWx1ZT0iZXBfc2RrX2FwcCI+PC9wcm9wZXJ0eT4NCisgIA0KKyAgPCEtLSAgc3BlY2lmeSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBsb2cgZGlyZWN0b3J5IC0tPg0KKyAgPHByb3BlcnR5IG5hbWU9ImxvZ0RpclByZWZpeCIgdmFsdWU9IiR7Y2F0YWxpbmEuYmFzZX0vbG9ncyI+PC9wcm9wZXJ0eT4NCisgIA0KKyAgPCEtLSBUaGUgZGlyZWN0b3JpZXMgd2hlcmUgbG9ncyBhcmUgd3JpdHRlbiAtLT4NCisgIDxwcm9wZXJ0eSBuYW1lPSJsb2dEaXJlY3RvcnkiIHZhbHVlPSIke2xvZ0RpclByZWZpeH0vJHtjb21wb25lbnROYW1lfSIgLz4NCisgIDwhLS0gQ2FuIGVhc2lseSByZWxvY2F0ZSBkZWJ1ZyBsb2dzIGJ5IG1vZGlmeWluZyB0aGlzIHBhdGguIC0tPg0KKyAgPHByb3BlcnR5IG5hbWU9ImRlYnVnTG9nRGlyZWN0b3J5IiB2YWx1ZT0iJHtsb2dEaXJQcmVmaXh9LyR7Y29tcG9uZW50TmFtZX0iIC8+DQorICANCisgIDwhLS0gIGxvZyBmaWxlIG5hbWVzIC0tPg0KKyAgPHByb3BlcnR5IG5hbWU9ImdlbmVyYWxMb2dOYW1lIiB2YWx1ZT0iYXBwbGljYXRpb24iIC8+DQorICA8cHJvcGVydHkgbmFtZT0iZXJyb3JMb2dOYW1lIiB2YWx1ZT0iZXJyb3IiIC8+DQorICA8cHJvcGVydHkgbmFtZT0ibWV0cmljc0xvZ05hbWUiIHZhbHVlPSJtZXRyaWNzIiAvPg0KKyAgPHByb3BlcnR5IG5hbWU9ImF1ZGl0TG9nTmFtZSIgdmFsdWU9ImF1ZGl0IiAvPg0KKyAgPHByb3BlcnR5IG5hbWU9ImRlYnVnTG9nTmFtZSIgdmFsdWU9ImRlYnVnIiAvPg0KKyAgPCEtLQ0KKyAgVGhlc2UgbG9nZ2VycyBhcmUgbm90IHVzZWQgaW4gY29kZSAoeWV0KS4gDQorICA8cHJvcGVydHkgbmFtZT0ic2VjdXJpdHlMb2dOYW1lIiB2YWx1ZT0ic2VjdXJpdHkiIC8+DQorICA8cHJvcGVydHkgbmFtZT0icG9saWN5TG9nTmFtZSIgdmFsdWU9InBvbGljeSIgLz4NCisgIDxwcm9wZXJ0eSBuYW1lPSJwZXJmb3JtYW5jZUxvZ05hbWUiIHZhbHVlPSJwZXJmb3JtYW5jZSIgLz4NCisgIDxwcm9wZXJ0eSBuYW1lPSJzZXJ2ZXJMb2dOYW1lIiB2YWx1ZT0ic2VydmVyIiAvPg0KKyAgIC0tPg0KKyAgDQorICA8IS0tIDE2MTAgTG9nZ2luZyBGaWVsZHMgRm9ybWF0IFJldmlzaW9ucyAtLT4gDQorICA8cHJvcGVydHkgbmFtZT0iYXVkaXRMb2dnZXJQYXR0ZXJuIg0KKwl2YWx1ZT0iJVh7QXVkaXRMb2dCZWdpblRpbWVzdGFtcH18JVh7QXVkaXRMb2dFbmRUaW1lc3RhbXB9fCVYe1JlcXVlc3RJZH18JVh7U2VydmljZUluc3RhbmNlSWR9fCV0aHJlYWR8JVh7VmlydHVhbFNlcnZlck5hbWV9fCVYe1NlcnZpY2VOYW1lfXwlWHtQYXJ0bmVyTmFtZX18JVh7U3RhdHVzQ29kZX18JVh7UmVzcG9uc2VDb2RlfXwlWHtSZXNwb25zZURlc2NyaXB0aW9ufXwlWHtJbnN0YW5jZVVVSUR9fCUuLTVsZXZlbHwlWHtBbGVydFNldmVyaXR5fXwlWHtTZXJ2ZXJJUEFkZHJlc3N9fCVYe1RpbWVyfXwlWHtTZXJ2ZXJGUUROfXwlWHtDbGllbnRJUEFkZHJlc3N9fCVYe0NsYXNzTmFtZX18JVh7VW51c2VkfXwlWHtQcm9jZXNzS2V5fXwlWHtDdXN0b21GaWVsZDF9fCVYe0N1c3RvbUZpZWxkMn18JVh7Q3VzdG9tRmllbGQzfXwlWHtDdXN0b21GaWVsZDR9fCAlbXNnJW4iIC8+DQorDQorICA8cHJvcGVydHkgbmFtZT0ibWV0cmljc0xvZ2dlclBhdHRlcm4iDQorCXZhbHVlPSIlWHtNZXRyaWNzTG9nQmVnaW5UaW1lc3RhbXB9fCVYe01ldHJpY3NMb2dFbmRUaW1lc3RhbXB9fCVYe1JlcXVlc3RJZH18JVh7U2VydmljZUluc3RhbmNlSWR9fCV0aHJlYWR8JVh7VmlydHVhbFNlcnZlck5hbWV9fCVYe1NlcnZpY2VOYW1lfXwlWHtQYXJ0bmVyTmFtZX18JVh7VGFyZ2V0RW50aXR5fXwlWHtUYXJnZXRTZXJ2aWNlTmFtZX18JVh7U3RhdHVzQ29kZX18JVh7UmVzcG9uc2VDb2RlfXwlWHtSZXNwb25zZURlc2NyaXB0aW9ufXwlWHtJbnN0YW5jZVVVSUR9fCUuLTVsZXZlbHwlWHtBbGVydFNldmVyaXR5fXwlWHtTZXJ2ZXJJUEFkZHJlc3N9fCVYe1RpbWVyfXwlWHtTZXJ2ZXJGUUROfXwlWHtDbGllbnRJUEFkZHJlc3N9fCVYe0NsYXNzTmFtZX18JVh7VW51c2VkfXwlWHtQcm9jZXNzS2V5fXwlWHtUYXJnZXRWaXN1YWxFbnRpdHl9fCVYe0N1c3RvbUZpZWxkMX18JVh7Q3VzdG9tRmllbGQyfXwlWHtDdXN0b21GaWVsZDN9fCVYe0N1c3RvbUZpZWxkNH18ICVtc2clbiIgLz4NCisNCisgIDxwcm9wZXJ0eSBuYW1lPSJlcnJvckxvZ2dlclBhdHRlcm4iDQorCXZhbHVlPSIlZGF0ZXt5eXl5LU1NLWRkJ1QnSEg6bW06c3MuU1NTWFhYfXwlWHtSZXF1ZXN0SWR9fCV0aHJlYWR8JVh7U2VydmljZU5hbWV9fCVYe1BhcnRuZXJOYW1lfXwlWHtUYXJnZXRFbnRpdHl9fCVYe1RhcmdldFNlcnZpY2VOYW1lfXwlWHtDbGFzc05hbWV9fCVYe0FsZXJ0U2V2ZXJpdHl9fCVYe0Vycm9yQ29kZX18JVh7RXJyb3JEZXNjcmlwdGlvbn18ICVtc2clbiIgLz4NCisNCisgIDxwcm9wZXJ0eSBuYW1lPSJkZWZhdWx0TG9nZ2VyUGF0dGVybiINCisJdmFsdWU9IiVkYXRle3l5eXktTU0tZGQnVCdISDptbTpzcy5TU1NYWFh9fCVYe1JlcXVlc3RJZH18JXRocmVhZHwlWHtDbGFzc05hbWV9fCAlbXNnJW4iIC8+DQorDQorICA8IS0tIHVzZSAlY2xhc3Mgc28gbGlicmFyeSBsb2dnaW5nIGNhbGxzIHlpZWxkIHRoZWlyIGNsYXNzIG5hbWUgLS0+DQorICA8cHJvcGVydHkgbmFtZT0iYXBwbGljYXRpb25Mb2dnZXJQYXR0ZXJuIg0KKwl2YWx1ZT0iJWRhdGV7eXl5eS1NTS1kZCdUJ0hIOm1tOnNzLlNTU1hYWH18JVh7UmVxdWVzdElkfXwldGhyZWFkfCVjbGFzc3szNn18ICVtc2clbiIgLz4NCisNCisgIDwhLS0gRXhhbXBsZSBldmFsdWF0b3IgZmlsdGVyIGFwcGxpZWQgYWdhaW5zdCBjb25zb2xlIGFwcGVuZGVyIC0tPg0KKyAgPGFwcGVuZGVyIG5hbWU9IlNURE9VVCIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUuQ29uc29sZUFwcGVuZGVyIj4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0TG9nZ2VyUGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorDQorICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICA8IS0tIEVFTEYgQXBwZW5kZXJzIC0tPg0KKyAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKw0KKyAgPCEtLSBUaGUgRUVMRkFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIGV2ZW50cyB0byB0aGUgZ2VuZXJhbCBhcHBsaWNhdGlvbiANCisgICAgbG9nIC0tPg0KKyAgICANCisgICAgDQorICA8YXBwZW5kZXIgbmFtZT0iRUVMRiINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7Z2VuZXJhbExvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5UaW1lQmFzZWRSb2xsaW5nUG9saWN5Ij4gDQorICAgICAgPCEtLSBkYWlseSByb2xsb3ZlciAtLT4gDQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtnZW5lcmFsTG9nTmFtZX0uJWR7eXl5eS1NTS1kZH0ubG9nLnppcDwvZmlsZU5hbWVQYXR0ZXJuPiANCisgDQorICAgICAgPCEtLSBrZWVwIDMwIGRheXMnIHdvcnRoIG9mIGhpc3RvcnkgY2FwcGVkIGF0IDNHQiB0b3RhbCBzaXplIC0tPiANCisgICAgICA8bWF4SGlzdG9yeT4zMDwvbWF4SGlzdG9yeT4gDQorICAgICAgPHRvdGFsU2l6ZUNhcD4zR0I8L3RvdGFsU2l6ZUNhcD4gDQorIA0KKyAgICA8L3JvbGxpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgIDxwYXR0ZXJuPiR7YXBwbGljYXRpb25Mb2dnZXJQYXR0ZXJufTwvcGF0dGVybj4NCisgICAgPC9lbmNvZGVyPg0KKyAgICA8ZmlsdGVyIGNsYXNzPSJvcmcub25hcC5wb3J0YWxhcHAudXRpbC5DdXN0b21Mb2dnaW5nRmlsdGVyIiAvPg0KKyAgPC9hcHBlbmRlcj4NCisgIA0KKyAgPGFwcGVuZGVyIG5hbWU9ImFzeW5jRUVMRiIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuQXN5bmNBcHBlbmRlciI+DQorICAgIDxxdWV1ZVNpemU+MjU2PC9xdWV1ZVNpemU+DQorICAgIDwhLS0gQ2xhc3MgbmFtZSBpcyBwYXJ0IG9mIGNhbGxlciBkYXRhIC0tPg0KKyAgICA8aW5jbHVkZUNhbGxlckRhdGE+dHJ1ZTwvaW5jbHVkZUNhbGxlckRhdGE+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJFRUxGIiAvPg0KKyAgPC9hcHBlbmRlcj4NCisNCisgIDwhLS0gRUVMRiBTZWN1cml0eSBBcHBlbmRlci4gVGhpcyBhcHBlbmRlciBpcyB1c2VkIHRvIHJlY29yZCBzZWN1cml0eSBldmVudHMgDQorICAgIHRvIHRoZSBzZWN1cml0eSBsb2cgZmlsZS4gU2VjdXJpdHkgZXZlbnRzIGFyZSBzZXBhcmF0ZSBmcm9tIG90aGVyIGxvZ2dlcnMgDQorICAgIGluIEVFTEYgc28gdGhhdCBzZWN1cml0eSBsb2cgcmVjb3JkcyBjYW4gYmUgY2FwdHVyZWQgYW5kIG1hbmFnZWQgaW4gYSBzZWN1cmUgDQorICAgIHdheSBzZXBhcmF0ZSBmcm9tIHRoZSBvdGhlciBsb2dzLiBUaGlzIGFwcGVuZGVyIGlzIHNldCB0byBuZXZlciBkaXNjYXJkIGFueSANCisgICAgZXZlbnRzLiAtLT4NCisgIDwhLS0gICAgIA0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZTZWN1cml0eSINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7c2VjdXJpdHlMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7c2VjdXJpdHlMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICANCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZTZWN1cml0eSIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuQXN5bmNBcHBlbmRlciI+DQorICAgIDxxdWV1ZVNpemU+MjU2PC9xdWV1ZVNpemU+DQorICAgIDxkaXNjYXJkaW5nVGhyZXNob2xkPjA8L2Rpc2NhcmRpbmdUaHJlc2hvbGQ+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJFRUxGU2VjdXJpdHkiIC8+DQorICA8L2FwcGVuZGVyPg0KKyAgIC0tPg0KKyAgIA0KKyAgPCEtLSBFRUxGIFBlcmZvcm1hbmNlIEFwcGVuZGVyLiBUaGlzIGFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIHBlcmZvcm1hbmNlIA0KKyAgICByZWNvcmRzLiAtLT4NCisgIDwhLS0NCisgIDxhcHBlbmRlciBuYW1lPSJFRUxGUGVyZm9ybWFuY2UiDQorICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuUm9sbGluZ0ZpbGVBcHBlbmRlciI+DQorICAgIDxmaWxlPiR7bG9nRGlyZWN0b3J5fS8ke3BlcmZvcm1hbmNlTG9nTmFtZX0ubG9nPC9maWxlPg0KKyAgICA8cm9sbGluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuRml4ZWRXaW5kb3dSb2xsaW5nUG9saWN5Ij4NCisgICAgICA8ZmlsZU5hbWVQYXR0ZXJuPiR7bG9nRGlyZWN0b3J5fS8ke3BlcmZvcm1hbmNlTG9nTmFtZX0uJWkubG9nLnppcA0KKyAgICAgIDwvZmlsZU5hbWVQYXR0ZXJuPg0KKyAgICAgIDxtaW5JbmRleD4xPC9taW5JbmRleD4NCisgICAgICA8bWF4SW5kZXg+OTwvbWF4SW5kZXg+DQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPHRyaWdnZXJpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlNpemVCYXNlZFRyaWdnZXJpbmdQb2xpY3kiPg0KKyAgICAgIDxtYXhGaWxlU2l6ZT41TUI8L21heEZpbGVTaXplPg0KKyAgICA8L3RyaWdnZXJpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgIDxvdXRwdXRQYXR0ZXJuQXNIZWFkZXI+dHJ1ZTwvb3V0cHV0UGF0dGVybkFzSGVhZGVyPg0KKyAgICAgIDxwYXR0ZXJuPiR7ZGVmYXVsdFBhdHRlcm59PC9wYXR0ZXJuPg0KKyAgICA8L2VuY29kZXI+DQorICA8L2FwcGVuZGVyPg0KKyAgPGFwcGVuZGVyIG5hbWU9ImFzeW5jRUVMRlBlcmZvcm1hbmNlIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEZQZXJmb3JtYW5jZSIgLz4NCisgIDwvYXBwZW5kZXI+DQorICAtLT4NCisNCisgIDwhLS0gRUVMRiBTZXJ2ZXIgQXBwZW5kZXIuIFRoaXMgYXBwZW5kZXIgaXMgdXNlZCB0byByZWNvcmQgU2VydmVyIHJlbGF0ZWQgDQorICAgIGxvZ2dpbmcgZXZlbnRzLiBUaGUgU2VydmVyIGxvZ2dlciBhbmQgYXBwZW5kZXIgYXJlIHNwZWNpYWxpemF0aW9ucyBvZiB0aGUgDQorICAgIEVFTEYgYXBwbGljYXRpb24gcm9vdCBsb2dnZXIgYW5kIGFwcGVuZGVyLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlZ3JlZ2F0ZSBTZXJ2ZXIgDQorICAgIGV2ZW50cyBmcm9tIG90aGVyIGNvbXBvbmVudHMsIG9yIGl0IGNhbiBiZSBlbGltaW5hdGVkIHRvIHJlY29yZCB0aGVzZSBldmVudHMgDQorICAgIGFzIHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIHJvb3QgbG9nLiAtLT4NCisgIDwhLS0NCisgIDxhcHBlbmRlciBuYW1lPSJFRUxGU2VydmVyIg0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2xvZ0RpcmVjdG9yeX0vJHtzZXJ2ZXJMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7c2VydmVyTG9nTmFtZX0uJWkubG9nLnppcA0KKyAgICAgIDwvZmlsZU5hbWVQYXR0ZXJuPg0KKyAgICAgIDxtaW5JbmRleD4xPC9taW5JbmRleD4NCisgICAgICA8bWF4SW5kZXg+OTwvbWF4SW5kZXg+DQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPHRyaWdnZXJpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlNpemVCYXNlZFRyaWdnZXJpbmdQb2xpY3kiPg0KKyAgICAgIDxtYXhGaWxlU2l6ZT41TUI8L21heEZpbGVTaXplPg0KKyAgICA8L3RyaWdnZXJpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGU2VydmVyIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEZTZXJ2ZXIiIC8+DQorICA8L2FwcGVuZGVyPg0KKyAgIC0tPg0KKyAgDQorICA8IS0tIEVFTEYgUG9saWN5IEFwcGVuZGVyLiBUaGlzIGFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIFBvbGljeSBlbmdpbmUgDQorICAgIHJlbGF0ZWQgbG9nZ2luZyBldmVudHMuIFRoZSBQb2xpY3kgbG9nZ2VyIGFuZCBhcHBlbmRlciBhcmUgc3BlY2lhbGl6YXRpb25zIA0KKyAgICBvZiB0aGUgRUVMRiBhcHBsaWNhdGlvbiByb290IGxvZ2dlciBhbmQgYXBwZW5kZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2VncmVnYXRlIA0KKyAgICBQb2xpY3kgZW5naW5lIGV2ZW50cyBmcm9tIG90aGVyIGNvbXBvbmVudHMsIG9yIGl0IGNhbiBiZSBlbGltaW5hdGVkIHRvIHJlY29yZCANCisgICAgdGhlc2UgZXZlbnRzIGFzIHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uIHJvb3QgbG9nLiAtLT4NCisgIDwhLS0NCisgIDxhcHBlbmRlciBuYW1lPSJFRUxGUG9saWN5Ig0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2xvZ0RpcmVjdG9yeX0vJHtwb2xpY3lMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7cG9saWN5TG9nTmFtZX0uJWkubG9nLnppcA0KKyAgICAgIDwvZmlsZU5hbWVQYXR0ZXJuPg0KKyAgICAgIDxtaW5JbmRleD4xPC9taW5JbmRleD4NCisgICAgICA8bWF4SW5kZXg+OTwvbWF4SW5kZXg+DQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPHRyaWdnZXJpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlNpemVCYXNlZFRyaWdnZXJpbmdQb2xpY3kiPg0KKyAgICAgIDxtYXhGaWxlU2l6ZT41TUI8L21heEZpbGVTaXplPg0KKyAgICA8L3RyaWdnZXJpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGUG9saWN5IiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEZQb2xpY3kiIC8+DQorICA8L2FwcGVuZGVyPg0KKyAgLS0+DQorICANCisgIDwhLS0gRUVMRiBBdWRpdCBBcHBlbmRlci4gVGhpcyBhcHBlbmRlciBpcyB1c2VkIHRvIHJlY29yZCBhdWRpdCBlbmdpbmUgDQorICAgIHJlbGF0ZWQgbG9nZ2luZyBldmVudHMuIFRoZSBhdWRpdCBsb2dnZXIgYW5kIGFwcGVuZGVyIGFyZSBzcGVjaWFsaXphdGlvbnMgDQorICAgIG9mIHRoZSBFRUxGIGFwcGxpY2F0aW9uIHJvb3QgbG9nZ2VyIGFuZCBhcHBlbmRlci4gVGhpcyBjYW4gYmUgdXNlZCB0byBzZWdyZWdhdGUgDQorICAgIFBvbGljeSBlbmdpbmUgZXZlbnRzIGZyb20gb3RoZXIgY29tcG9uZW50cywgb3IgaXQgY2FuIGJlIGVsaW1pbmF0ZWQgdG8gcmVjb3JkIA0KKyAgICB0aGVzZSBldmVudHMgYXMgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gcm9vdCBsb2cuIC0tPg0KKyAgICANCisgIDxhcHBlbmRlciBuYW1lPSJFRUxGQXVkaXQiDQorICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuUm9sbGluZ0ZpbGVBcHBlbmRlciI+DQorICAgIDxmaWxlPiR7bG9nRGlyZWN0b3J5fS8ke2F1ZGl0TG9nTmFtZX0ubG9nPC9maWxlPg0KKyAgICA8cm9sbGluZ1BvbGljeSBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlRpbWVCYXNlZFJvbGxpbmdQb2xpY3kiPiANCisgICAgICA8IS0tIGRhaWx5IHJvbGxvdmVyIC0tPiANCisgICAgICA8ZmlsZU5hbWVQYXR0ZXJuPiR7bG9nRGlyZWN0b3J5fS8ke2F1ZGl0TG9nTmFtZX0uJWR7eXl5eS1NTS1kZH0ubG9nLnppcDwvZmlsZU5hbWVQYXR0ZXJuPiANCisgDQorICAgICAgPCEtLSBrZWVwIDMwIGRheXMnIHdvcnRoIG9mIGhpc3RvcnkgY2FwcGVkIGF0IDNHQiB0b3RhbCBzaXplIC0tPiANCisgICAgICA8bWF4SGlzdG9yeT4zMDwvbWF4SGlzdG9yeT4gDQorICAgICAgPHRvdGFsU2l6ZUNhcD4zR0I8L3RvdGFsU2l6ZUNhcD4gDQorIA0KKyAgICA8L3JvbGxpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgICAgIDxwYXR0ZXJuPiR7YXVkaXRMb2dnZXJQYXR0ZXJufTwvcGF0dGVybj4NCisgICAgPC9lbmNvZGVyPg0KKyAgPC9hcHBlbmRlcj4NCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZBdWRpdCIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuQXN5bmNBcHBlbmRlciI+DQorICAgIDxxdWV1ZVNpemU+MjU2PC9xdWV1ZVNpemU+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJFRUxGQXVkaXQiIC8+DQorICA8L2FwcGVuZGVyPg0KKw0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZNZXRyaWNzIg0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2xvZ0RpcmVjdG9yeX0vJHttZXRyaWNzTG9nTmFtZX0ubG9nPC9maWxlPg0KKyAgICA8cm9sbGluZ1BvbGljeSBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlRpbWVCYXNlZFJvbGxpbmdQb2xpY3kiPiANCisgICAgICA8IS0tIGRhaWx5IHJvbGxvdmVyIC0tPiANCisgICAgICA8ZmlsZU5hbWVQYXR0ZXJuPiR7bG9nRGlyZWN0b3J5fS8ke21ldHJpY3NMb2dOYW1lfS4lZHt5eXl5LU1NLWRkfS5sb2cuemlwPC9maWxlTmFtZVBhdHRlcm4+IA0KKyANCisgICAgICA8IS0tIGtlZXAgMzAgZGF5cycgd29ydGggb2YgaGlzdG9yeSBjYXBwZWQgYXQgM0dCIHRvdGFsIHNpemUgLS0+IA0KKyAgICAgIDxtYXhIaXN0b3J5PjMwPC9tYXhIaXN0b3J5PiANCisgICAgICA8dG90YWxTaXplQ2FwPjNHQjwvdG90YWxTaXplQ2FwPiANCisgDQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHttZXRyaWNzTG9nZ2VyUGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICANCisgIA0KKyAgPGFwcGVuZGVyIG5hbWU9ImFzeW5jRUVMRk1ldHJpY3MiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRk1ldHJpY3MiLz4NCisgIDwvYXBwZW5kZXI+DQorICAgDQorICA8YXBwZW5kZXIgbmFtZT0iRUVMRkVycm9yIg0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2xvZ0RpcmVjdG9yeX0vJHtlcnJvckxvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5UaW1lQmFzZWRSb2xsaW5nUG9saWN5Ij4gDQorICAgICAgPCEtLSBkYWlseSByb2xsb3ZlciAtLT4gDQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtlcnJvckxvZ05hbWV9LiVke3l5eXktTU0tZGR9LmxvZy56aXA8L2ZpbGVOYW1lUGF0dGVybj4gDQorIA0KKyAgICAgIDwhLS0ga2VlcCAzMCBkYXlzJyB3b3J0aCBvZiBoaXN0b3J5IGNhcHBlZCBhdCAzR0IgdG90YWwgc2l6ZSAtLT4gDQorICAgICAgPG1heEhpc3Rvcnk+MzA8L21heEhpc3Rvcnk+IA0KKyAgICAgIDx0b3RhbFNpemVDYXA+M0dCPC90b3RhbFNpemVDYXA+IA0KKyANCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8ZW5jb2Rlcj4NCisgICAgICA8cGF0dGVybj4ke2Vycm9yTG9nZ2VyUGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICANCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZFcnJvciIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuQXN5bmNBcHBlbmRlciI+DQorICAgIDxxdWV1ZVNpemU+MjU2PC9xdWV1ZVNpemU+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJFRUxGRXJyb3IiLz4NCisgIDwvYXBwZW5kZXI+DQorICANCisgICA8YXBwZW5kZXIgbmFtZT0iRUVMRkRlYnVnIg0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2RlYnVnTG9nRGlyZWN0b3J5fS8ke2RlYnVnTG9nTmFtZX0ubG9nPC9maWxlPg0KKyAgICA8cm9sbGluZ1BvbGljeSBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlRpbWVCYXNlZFJvbGxpbmdQb2xpY3kiPiANCisgICAgICA8IS0tIGRhaWx5IHJvbGxvdmVyIC0tPiANCisgICAgICA8ZmlsZU5hbWVQYXR0ZXJuPiR7bG9nRGlyZWN0b3J5fS8ke2RlYnVnTG9nTmFtZX0uJWR7eXl5eS1NTS1kZH0ubG9nLnppcDwvZmlsZU5hbWVQYXR0ZXJuPiANCisgDQorICAgICAgPCEtLSBrZWVwIDMwIGRheXMnIHdvcnRoIG9mIGhpc3RvcnkgY2FwcGVkIGF0IDNHQiB0b3RhbCBzaXplIC0tPiANCisgICAgICA8bWF4SGlzdG9yeT4zMDwvbWF4SGlzdG9yeT4gDQorICAgICAgPHRvdGFsU2l6ZUNhcD4zR0I8L3RvdGFsU2l6ZUNhcD4gDQorIA0KKyAgICA8L3JvbGxpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgIDxwYXR0ZXJuPiR7ZGVmYXVsdExvZ2dlclBhdHRlcm59PC9wYXR0ZXJuPg0KKyAgICA8L2VuY29kZXI+DQorICA8L2FwcGVuZGVyPg0KKyAgDQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGRGVidWciIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRkRlYnVnIiAvPg0KKyAgPC9hcHBlbmRlcj4NCisgDQorICANCisgDQorDQorICA8bG9nZ2VyIG5hbWU9Im9yZy5vbmFwLmVlbGYiIGxldmVsPSJpbmZvIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEYiIC8+DQorICA8L2xvZ2dlcj4NCisNCisgIDxsb2dnZXIgbmFtZT0ib3JnLm9uYXAuZWVsZi5hdWRpdCIgbGV2ZWw9ImluZm8iIGFkZGl0aXZpdHk9ImZhbHNlIj4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9ImFzeW5jRUVMRkF1ZGl0IiAvPg0KKyAgPC9sb2dnZXI+DQorICANCisgIDxsb2dnZXIgbmFtZT0ib3JnLm9uYXAuZWVsZi5kZWJ1ZyIgbGV2ZWw9ImRlYnVnIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEZEZWJ1ZyIgLz4NCisgIDwvbG9nZ2VyPg0KKwkNCisgIDxsb2dnZXIgbmFtZT0ib3JnLm9uYXAuZWVsZi5lcnJvciIgbGV2ZWw9ImluZm8iIGFkZGl0aXZpdHk9ImZhbHNlIj4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9ImFzeW5jRUVMRkVycm9yIiAvPg0KKyAgPC9sb2dnZXI+DQorDQorICA8bG9nZ2VyIG5hbWU9Im9yZy5vbmFwLmVlbGYubWV0cmljcyIgbGV2ZWw9ImluZm8iIGFkZGl0aXZpdHk9ImZhbHNlIj4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9ImFzeW5jRUVMRk1ldHJpY3MiIC8+DQorICA8L2xvZ2dlcj4gICAgICANCisgICAgDQorICANCisgIDxyb290IGxldmVsPSJERUJVRyI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEYiIC8+DQorICA8L3Jvb3Q+DQorDQorPC9jb25maWd1cmF0aW9uPg0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvbG9nYmFja190ZW1wbGF0ZS54bWwgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2JhY2tfdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYjk3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2JhY2tfdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMzYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKyAgICAgICAgPCEtLS8qLQ0KKyAgICAgICAgICAgICAgICAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgICAgICAgICAgICAgICogT1NBTSBDb3JlDQorICAgICAgICAgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgICAgICAgICAgICAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQVQmVA0KKyAgICAgICAgICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgICAgICAgICAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgICAgICAgICAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgICAgICAgICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgICAgICAgICAgICAgICAqDQorICAgICAgICAgICAgICAgICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgICAgICAgICAgICAgKg0KKyAgICAgICAgICAgICAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICAgICAgICAgICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgICAgICAgICAgICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgICAgICAgICAgICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICAgICAgICAgICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgICAgICAgICAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAgLS0+DQorDQorPGNvbmZpZ3VyYXRpb24gc2Nhbj0idHJ1ZSIgc2NhblBlcmlvZD0iMyBzZWNvbmRzIiBkZWJ1Zz0idHJ1ZSI+DQorICA8IS0tICBzcGVjaWZ5IHRoZSBjb21wb25lbnQgbmFtZSAtLT4NCisgIDxwcm9wZXJ0eSBuYW1lPSJjb21wb25lbnROYW1lIiB2YWx1ZT0idmlkIj48L3Byb3BlcnR5Pg0KKyAgDQorICA8IS0tICBzcGVjaWZ5IHRoZSBiYXNlIHBhdGggb2YgdGhlIGxvZyBkaXJlY3RvcnkgLS0+DQorICA8cHJvcGVydHkgbmFtZT0ibG9nRGlyUHJlZml4IiB2YWx1ZT0iJHtWSURfTE9HX0RJUn0iPjwvcHJvcGVydHk+DQorICANCisgIDwhLS0gVGhlIGRpcmVjdG9yaWVzIHdoZXJlIGxvZ3MgYXJlIHdyaXR0ZW4gLS0+DQorICA8cHJvcGVydHkgbmFtZT0ibG9nRGlyZWN0b3J5IiB2YWx1ZT0iJHtsb2dEaXJQcmVmaXh9LyR7Y29tcG9uZW50TmFtZX0iIC8+DQorICA8IS0tIENhbiBlYXNpbHkgcmVsb2NhdGUgZGVidWcgbG9ncyBieSBtb2RpZnlpbmcgdGhpcyBwYXRoLiAtLT4NCisgIDxwcm9wZXJ0eSBuYW1lPSJkZWJ1Z0xvZ0RpcmVjdG9yeSIgdmFsdWU9IiR7bG9nRGlyUHJlZml4fS8ke2NvbXBvbmVudE5hbWV9IiAvPg0KKyAgDQorICA8IS0tICBsb2cgZmlsZSBuYW1lcyAtLT4NCisgIDxwcm9wZXJ0eSBuYW1lPSJnZW5lcmFsTG9nTmFtZSIgdmFsdWU9ImFwcGxpY2F0aW9uIiAvPg0KKyAgPHByb3BlcnR5IG5hbWU9ImVycm9yTG9nTmFtZSIgdmFsdWU9ImVycm9yIiAvPg0KKyAgPHByb3BlcnR5IG5hbWU9Im1ldHJpY3NMb2dOYW1lIiB2YWx1ZT0ibWV0cmljcyIgLz4NCisgIDxwcm9wZXJ0eSBuYW1lPSJhdWRpdExvZ05hbWUiIHZhbHVlPSJhdWRpdCIgLz4NCisgIDxwcm9wZXJ0eSBuYW1lPSJkZWJ1Z0xvZ05hbWUiIHZhbHVlPSJkZWJ1ZyIgLz4NCisgIDwhLS0NCisgIFRoZXNlIGxvZ2dlcnMgYXJlIG5vdCB1c2VkIGluIGNvZGUgKHlldCkuIA0KKyAgPHByb3BlcnR5IG5hbWU9InNlY3VyaXR5TG9nTmFtZSIgdmFsdWU9InNlY3VyaXR5IiAvPg0KKyAgPHByb3BlcnR5IG5hbWU9InBvbGljeUxvZ05hbWUiIHZhbHVlPSJwb2xpY3kiIC8+DQorICA8cHJvcGVydHkgbmFtZT0icGVyZm9ybWFuY2VMb2dOYW1lIiB2YWx1ZT0icGVyZm9ybWFuY2UiIC8+DQorICA8cHJvcGVydHkgbmFtZT0ic2VydmVyTG9nTmFtZSIgdmFsdWU9InNlcnZlciIgLz4NCisgICAtLT4NCisgICANCisgIDxwcm9wZXJ0eSBuYW1lPSJkZWZhdWx0UGF0dGVybiIgdmFsdWU9IiVkYXRle0lTTzg2MDF9fCVYe1JlcXVlc3RJZH18JVh7U2VydmljZUluc3RhbmNlSWR9fCV0aHJlYWR8JVh7VmlydHVhbFNlcnZlck5hbWV9fCVYe1NlcnZpY2VOYW1lfXwlWHtJbnN0YW5jZVVVSUR9fCUuLTVsZXZlbHwlWHtBbGVydFNldmVyaXR5fXwlWHtTZXJ2ZXJJUEFkZHJlc3N9fCVYe1NlcnZlckZRRE59fCVYe1JlbW90ZUhvc3R9fCVYe0NsYXNzTmFtZX18JVh7VGltZXJ9fCAlbXNnJW4iIC8+DQorICA8cHJvcGVydHkgbmFtZT0iZGVidWdMb2dnZXJQYXR0ZXJuIiB2YWx1ZT0iJWRhdGV7SVNPODYwMX18JVh7UmVxdWVzdElkfXwlWHtTZXJ2aWNlSW5zdGFuY2VJZH18JXRocmVhZHwlWHtWaXJ0dWFsU2VydmVyTmFtZX18JVh7U2VydmljZU5hbWV9fCVYe0luc3RhbmNlVVVJRH18JS4tNWxldmVsfCVYe0FsZXJ0U2V2ZXJpdHl9fCVYe1NlcnZlcklQQWRkcmVzc318JVh7U2VydmVyRlFETn18JVh7UmVtb3RlSG9zdH18JVh7Q2xhc3NOYW1lfXwlWHtUaW1lcn18ICVtc2clbiIgLz4NCisgIDwhLS0gPHByb3BlcnR5IG5hbWU9ImRlYnVnTG9nZ2VyUGF0dGVybiIgdmFsdWU9IiVkYXRle0lTTzg2MDF9fCVYe1JlcXVlc3RJZH18JVh7U2VydmljZUluc3RhbmNlSWR9fCV0aHJlYWR8JVh7U2VydmljZU5hbWV9fCVYe0luc3RhbmNlVVVJRH18JS4tNWxldmVsfCVYe0FsZXJ0U2V2ZXJpdHl9fCVYe1NlcnZlcklQQWRkcmVzc318JVh7U2VydmVyRlFETn18JVh7UmVtb3RlSG9zdH18JVh7VGltZXJ9fFslY2FsbGVyezN9XXwlbXNnJW4iIC8+LS0+DQorICANCisgIDwhLS0gRXhhbXBsZSBldmFsdWF0b3IgZmlsdGVyIGFwcGxpZWQgYWdhaW5zdCBjb25zb2xlIGFwcGVuZGVyIC0tPg0KKyAgPGFwcGVuZGVyIG5hbWU9IlNURE9VVCIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUuQ29uc29sZUFwcGVuZGVyIj4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorDQorICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICA8IS0tIEVFTEYgQXBwZW5kZXJzIC0tPg0KKyAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKw0KKyAgPCEtLSBUaGUgRUVMRkFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIGV2ZW50cyB0byB0aGUgZ2VuZXJhbCBhcHBsaWNhdGlvbiANCisgICAgbG9nIC0tPg0KKyAgICANCisgICAgDQorICA8YXBwZW5kZXIgbmFtZT0iRUVMRiINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7Z2VuZXJhbExvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtnZW5lcmFsTG9nTmFtZX0uJWkubG9nLnppcA0KKyAgICAgIDwvZmlsZU5hbWVQYXR0ZXJuPg0KKyAgICAgIDxtaW5JbmRleD4xPC9taW5JbmRleD4NCisgICAgICA8bWF4SW5kZXg+OTwvbWF4SW5kZXg+DQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPHRyaWdnZXJpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlNpemVCYXNlZFRyaWdnZXJpbmdQb2xpY3kiPg0KKyAgICAgIDxtYXhGaWxlU2l6ZT41TUI8L21heEZpbGVTaXplPg0KKyAgICA8L3RyaWdnZXJpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgIDxwYXR0ZXJuPiR7ZGVmYXVsdFBhdHRlcm59PC9wYXR0ZXJuPg0KKyAgICA8L2VuY29kZXI+DQorICAgIDxmaWx0ZXIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbGFwcC51dGlsLkN1c3RvbUxvZ2dpbmdGaWx0ZXIiIC8+DQorICA8L2FwcGVuZGVyPg0KKyAgDQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEYiIC8+DQorICA8L2FwcGVuZGVyPg0KKw0KKyAgPCEtLSBFRUxGIFNlY3VyaXR5IEFwcGVuZGVyLiBUaGlzIGFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIHNlY3VyaXR5IGV2ZW50cyANCisgICAgdG8gdGhlIHNlY3VyaXR5IGxvZyBmaWxlLiBTZWN1cml0eSBldmVudHMgYXJlIHNlcGFyYXRlIGZyb20gb3RoZXIgbG9nZ2VycyANCisgICAgaW4gRUVMRiBzbyB0aGF0IHNlY3VyaXR5IGxvZyByZWNvcmRzIGNhbiBiZSBjYXB0dXJlZCBhbmQgbWFuYWdlZCBpbiBhIHNlY3VyZSANCisgICAgd2F5IHNlcGFyYXRlIGZyb20gdGhlIG90aGVyIGxvZ3MuIFRoaXMgYXBwZW5kZXIgaXMgc2V0IHRvIG5ldmVyIGRpc2NhcmQgYW55IA0KKyAgICBldmVudHMuIC0tPg0KKyAgPCEtLSAgICAgDQorICA8YXBwZW5kZXIgbmFtZT0iRUVMRlNlY3VyaXR5Ig0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2xvZ0RpcmVjdG9yeX0vJHtzZWN1cml0eUxvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtzZWN1cml0eUxvZ05hbWV9LiVpLmxvZy56aXANCisgICAgICA8L2ZpbGVOYW1lUGF0dGVybj4NCisgICAgICA8bWluSW5kZXg+MTwvbWluSW5kZXg+DQorICAgICAgPG1heEluZGV4Pjk8L21heEluZGV4Pg0KKyAgICA8L3JvbGxpbmdQb2xpY3k+DQorICAgIDx0cmlnZ2VyaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5TaXplQmFzZWRUcmlnZ2VyaW5nUG9saWN5Ij4NCisgICAgICA8bWF4RmlsZVNpemU+NU1CPC9tYXhGaWxlU2l6ZT4NCisgICAgPC90cmlnZ2VyaW5nUG9saWN5Pg0KKyAgICA8ZW5jb2Rlcj4NCisgICAgICA8cGF0dGVybj4ke2RlZmF1bHRQYXR0ZXJufTwvcGF0dGVybj4NCisgICAgPC9lbmNvZGVyPg0KKyAgPC9hcHBlbmRlcj4NCisgIA0KKyAgPGFwcGVuZGVyIG5hbWU9ImFzeW5jRUVMRlNlY3VyaXR5IiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGRpc2NhcmRpbmdUaHJlc2hvbGQ+MDwvZGlzY2FyZGluZ1RocmVzaG9sZD4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEZTZWN1cml0eSIgLz4NCisgIDwvYXBwZW5kZXI+DQorICAgLS0+DQorICAgDQorICA8IS0tIEVFTEYgUGVyZm9ybWFuY2UgQXBwZW5kZXIuIFRoaXMgYXBwZW5kZXIgaXMgdXNlZCB0byByZWNvcmQgcGVyZm9ybWFuY2UgDQorICAgIHJlY29yZHMuIC0tPg0KKyAgPCEtLQ0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZQZXJmb3JtYW5jZSINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7cGVyZm9ybWFuY2VMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7cGVyZm9ybWFuY2VMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgPG91dHB1dFBhdHRlcm5Bc0hlYWRlcj50cnVlPC9vdXRwdXRQYXR0ZXJuQXNIZWFkZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGUGVyZm9ybWFuY2UiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRlBlcmZvcm1hbmNlIiAvPg0KKyAgPC9hcHBlbmRlcj4NCisgIC0tPg0KKw0KKyAgPCEtLSBFRUxGIFNlcnZlciBBcHBlbmRlci4gVGhpcyBhcHBlbmRlciBpcyB1c2VkIHRvIHJlY29yZCBTZXJ2ZXIgcmVsYXRlZCANCisgICAgbG9nZ2luZyBldmVudHMuIFRoZSBTZXJ2ZXIgbG9nZ2VyIGFuZCBhcHBlbmRlciBhcmUgc3BlY2lhbGl6YXRpb25zIG9mIHRoZSANCisgICAgRUVMRiBhcHBsaWNhdGlvbiByb290IGxvZ2dlciBhbmQgYXBwZW5kZXIuIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2VncmVnYXRlIFNlcnZlciANCisgICAgZXZlbnRzIGZyb20gb3RoZXIgY29tcG9uZW50cywgb3IgaXQgY2FuIGJlIGVsaW1pbmF0ZWQgdG8gcmVjb3JkIHRoZXNlIGV2ZW50cyANCisgICAgYXMgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gcm9vdCBsb2cuIC0tPg0KKyAgPCEtLQ0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZTZXJ2ZXIiDQorICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuUm9sbGluZ0ZpbGVBcHBlbmRlciI+DQorICAgIDxmaWxlPiR7bG9nRGlyZWN0b3J5fS8ke3NlcnZlckxvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtzZXJ2ZXJMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgICA8cGF0dGVybj4ke2RlZmF1bHRQYXR0ZXJufTwvcGF0dGVybj4NCisgICAgPC9lbmNvZGVyPg0KKyAgPC9hcHBlbmRlcj4NCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZTZXJ2ZXIiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRlNlcnZlciIgLz4NCisgIDwvYXBwZW5kZXI+DQorICAgLS0+DQorICANCisgIDwhLS0gRUVMRiBQb2xpY3kgQXBwZW5kZXIuIFRoaXMgYXBwZW5kZXIgaXMgdXNlZCB0byByZWNvcmQgUG9saWN5IGVuZ2luZSANCisgICAgcmVsYXRlZCBsb2dnaW5nIGV2ZW50cy4gVGhlIFBvbGljeSBsb2dnZXIgYW5kIGFwcGVuZGVyIGFyZSBzcGVjaWFsaXphdGlvbnMgDQorICAgIG9mIHRoZSBFRUxGIGFwcGxpY2F0aW9uIHJvb3QgbG9nZ2VyIGFuZCBhcHBlbmRlci4gVGhpcyBjYW4gYmUgdXNlZCB0byBzZWdyZWdhdGUgDQorICAgIFBvbGljeSBlbmdpbmUgZXZlbnRzIGZyb20gb3RoZXIgY29tcG9uZW50cywgb3IgaXQgY2FuIGJlIGVsaW1pbmF0ZWQgdG8gcmVjb3JkIA0KKyAgICB0aGVzZSBldmVudHMgYXMgcGFydCBvZiB0aGUgYXBwbGljYXRpb24gcm9vdCBsb2cuIC0tPg0KKyAgPCEtLQ0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZQb2xpY3kiDQorICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuUm9sbGluZ0ZpbGVBcHBlbmRlciI+DQorICAgIDxmaWxlPiR7bG9nRGlyZWN0b3J5fS8ke3BvbGljeUxvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtwb2xpY3lMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgICA8cGF0dGVybj4ke2RlZmF1bHRQYXR0ZXJufTwvcGF0dGVybj4NCisgICAgPC9lbmNvZGVyPg0KKyAgPC9hcHBlbmRlcj4NCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZQb2xpY3kiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRlBvbGljeSIgLz4NCisgIDwvYXBwZW5kZXI+DQorICAtLT4NCisgIA0KKyAgPCEtLSBFRUxGIEF1ZGl0IEFwcGVuZGVyLiBUaGlzIGFwcGVuZGVyIGlzIHVzZWQgdG8gcmVjb3JkIGF1ZGl0IGVuZ2luZSANCisgICAgcmVsYXRlZCBsb2dnaW5nIGV2ZW50cy4gVGhlIGF1ZGl0IGxvZ2dlciBhbmQgYXBwZW5kZXIgYXJlIHNwZWNpYWxpemF0aW9ucyANCisgICAgb2YgdGhlIEVFTEYgYXBwbGljYXRpb24gcm9vdCBsb2dnZXIgYW5kIGFwcGVuZGVyLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlZ3JlZ2F0ZSANCisgICAgUG9saWN5IGVuZ2luZSBldmVudHMgZnJvbSBvdGhlciBjb21wb25lbnRzLCBvciBpdCBjYW4gYmUgZWxpbWluYXRlZCB0byByZWNvcmQgDQorICAgIHRoZXNlIGV2ZW50cyBhcyBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbiByb290IGxvZy4gLS0+DQorICAgIA0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZBdWRpdCINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7YXVkaXRMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7YXVkaXRMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGQXVkaXQiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRkF1ZGl0IiAvPg0KKyAgPC9hcHBlbmRlcj4NCisNCisgIDxhcHBlbmRlciBuYW1lPSJFRUxGTWV0cmljcyINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7bWV0cmljc0xvZ05hbWV9LmxvZzwvZmlsZT4NCisgICAgPHJvbGxpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQorICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHttZXRyaWNzTG9nTmFtZX0uJWkubG9nLnppcA0KKyAgICAgIDwvZmlsZU5hbWVQYXR0ZXJuPg0KKyAgICAgIDxtaW5JbmRleD4xPC9taW5JbmRleD4NCisgICAgICA8bWF4SW5kZXg+OTwvbWF4SW5kZXg+DQorICAgIDwvcm9sbGluZ1BvbGljeT4NCisgICAgPHRyaWdnZXJpbmdQb2xpY3kNCisgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlNpemVCYXNlZFRyaWdnZXJpbmdQb2xpY3kiPg0KKyAgICAgIDxtYXhGaWxlU2l6ZT41TUI8L21heEZpbGVTaXplPg0KKyAgICA8L3RyaWdnZXJpbmdQb2xpY3k+DQorICAgIDxlbmNvZGVyPg0KKyAgICAgIDwhLS0gPHBhdHRlcm4+IiVke0hIOm1tOnNzLlNTU30gWyV0aHJlYWRdICUtNWxldmVsICVsb2dnZXJ7MTAyNH0gLSANCisgICAgICAgICVtc2clbiI8L3BhdHRlcm4+IC0tPg0KKyAgICAgIDxwYXR0ZXJuPiR7ZGVmYXVsdFBhdHRlcm59PC9wYXR0ZXJuPg0KKyAgICA8L2VuY29kZXI+DQorICA8L2FwcGVuZGVyPg0KKyAgDQorICANCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZNZXRyaWNzIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5Bc3luY0FwcGVuZGVyIj4NCisgICAgPHF1ZXVlU2l6ZT4yNTY8L3F1ZXVlU2l6ZT4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkVFTEZNZXRyaWNzIi8+DQorICA8L2FwcGVuZGVyPg0KKyAgIA0KKyAgPGFwcGVuZGVyIG5hbWU9IkVFTEZFcnJvciINCisgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4NCisgICAgPGZpbGU+JHtsb2dEaXJlY3Rvcnl9LyR7ZXJyb3JMb2dOYW1lfS5sb2c8L2ZpbGU+DQorICAgIDxyb2xsaW5nUG9saWN5DQorICAgICAgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPg0KKyAgICAgIDxmaWxlTmFtZVBhdHRlcm4+JHtsb2dEaXJlY3Rvcnl9LyR7ZXJyb3JMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWZhdWx0UGF0dGVybn08L3BhdHRlcm4+DQorICAgIDwvZW5jb2Rlcj4NCisgIDwvYXBwZW5kZXI+DQorICANCisgIDxhcHBlbmRlciBuYW1lPSJhc3luY0VFTEZFcnJvciIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuQXN5bmNBcHBlbmRlciI+DQorICAgIDxxdWV1ZVNpemU+MjU2PC9xdWV1ZVNpemU+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJFRUxGRXJyb3IiLz4NCisgIDwvYXBwZW5kZXI+DQorICANCisgICA8YXBwZW5kZXIgbmFtZT0iRUVMRkRlYnVnIg0KKyAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPg0KKyAgICA8ZmlsZT4ke2RlYnVnTG9nRGlyZWN0b3J5fS8ke2RlYnVnTG9nTmFtZX0ubG9nPC9maWxlPg0KKyAgICA8cm9sbGluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuRml4ZWRXaW5kb3dSb2xsaW5nUG9saWN5Ij4NCisgICAgICA8ZmlsZU5hbWVQYXR0ZXJuPiR7ZGVidWdMb2dEaXJlY3Rvcnl9LyR7ZGVidWdMb2dOYW1lfS4laS5sb2cuemlwDQorICAgICAgPC9maWxlTmFtZVBhdHRlcm4+DQorICAgICAgPG1pbkluZGV4PjE8L21pbkluZGV4Pg0KKyAgICAgIDxtYXhJbmRleD45PC9tYXhJbmRleD4NCisgICAgPC9yb2xsaW5nUG9saWN5Pg0KKyAgICA8dHJpZ2dlcmluZ1BvbGljeQ0KKyAgICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+DQorICAgICAgPG1heEZpbGVTaXplPjVNQjwvbWF4RmlsZVNpemU+DQorICAgIDwvdHJpZ2dlcmluZ1BvbGljeT4NCisgICAgPGVuY29kZXI+DQorICAgICAgPHBhdHRlcm4+JHtkZWJ1Z0xvZ2dlclBhdHRlcm59PC9wYXR0ZXJuPg0KKyAgICA8L2VuY29kZXI+DQorICA8L2FwcGVuZGVyPg0KKyAgDQorICA8YXBwZW5kZXIgbmFtZT0iYXN5bmNFRUxGRGVidWciIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLkFzeW5jQXBwZW5kZXIiPg0KKyAgICA8cXVldWVTaXplPjI1NjwvcXVldWVTaXplPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iRUVMRkRlYnVnIiAvPg0KKyAgICA8aW5jbHVkZUNhbGxlckRhdGE+dHJ1ZTwvaW5jbHVkZUNhbGxlckRhdGE+DQorICA8L2FwcGVuZGVyPg0KKyANCisgIA0KKyAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgPCEtLSAgRUVMRiBsb2dnZXJzIC0tPg0KKyAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgPGxvZ2dlciBuYW1lPSJjb20uYXR0LmVlbGYiIGxldmVsPSJkZWJ1ZyIgYWRkaXRpdml0eT0iZmFsc2UiPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iYXN5bmNFRUxGIiAvPg0KKyAgPC9sb2dnZXI+DQorICANCisgIDwhLS0NCisgIDxsb2dnZXIgbmFtZT0iY29tLmF0dC5lZWxmLnNlY3VyaXR5IiBsZXZlbD0iaW5mbyIgYWRkaXRpdml0eT0iZmFsc2UiPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iYXN5bmNFRUxGU2VjdXJpdHkiIC8+DQorICA8L2xvZ2dlcj4NCisgIDxsb2dnZXIgbmFtZT0iY29tLmF0dC5lZWxmLnBlcmYiIGxldmVsPSJpbmZvIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEZQZXJmb3JtYW5jZSIgLz4NCisgIDwvbG9nZ2VyPg0KKyAgPGxvZ2dlciBuYW1lPSJjb20uYXR0LmVlbGYuc2VydmVyIiBsZXZlbD0iaW5mbyIgYWRkaXRpdml0eT0iZmFsc2UiPg0KKyAgICA8YXBwZW5kZXItcmVmIHJlZj0iYXN5bmNFRUxGU2VydmVyIiAvPg0KKyAgPC9sb2dnZXI+DQorICA8bG9nZ2VyIG5hbWU9ImNvbS5hdHQuZWVsZi5wb2xpY3kiIGxldmVsPSJpbmZvIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEZQb2xpY3kiIC8+DQorICA8L2xvZ2dlcj4NCisgIC0tPg0KKyAgDQorICA8bG9nZ2VyIG5hbWU9ImNvbS5hdHQuZWVsZi5hdWRpdCIgbGV2ZWw9ImluZm8iIGFkZGl0aXZpdHk9ImZhbHNlIj4NCisgICAgPGFwcGVuZGVyLXJlZiByZWY9ImFzeW5jRUVMRkF1ZGl0IiAvPg0KKyAgPC9sb2dnZXI+DQorICANCisgIDxsb2dnZXIgbmFtZT0iY29tLmF0dC5lZWxmLm1ldHJpY3MiIGxldmVsPSJpbmZvIiBhZGRpdGl2aXR5PSJmYWxzZSI+DQorICAgICAgICA8YXBwZW5kZXItcmVmIHJlZj0iYXN5bmNFRUxGTWV0cmljcyIgLz4NCisgIDwvbG9nZ2VyPg0KKyAgICANCisgIDxsb2dnZXIgbmFtZT0iY29tLmF0dC5lZWxmLmVycm9yIiBsZXZlbD0iaW5mbyIgYWRkaXRpdml0eT0iZmFsc2UiPg0KKyAgCTxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEZFcnJvciIgLz4NCisgIDwvbG9nZ2VyPg0KKyAgDQorICAgPGxvZ2dlciBuYW1lPSJjb20uYXR0LmVlbGYuZGVidWciIGxldmVsPSJkZWJ1ZyIgYWRkaXRpdml0eT0iZmFsc2UiPg0KKyAgICAgICAgPGFwcGVuZGVyLXJlZiByZWY9ImFzeW5jRUVMRkRlYnVnIiAvPg0KKyAgPC9sb2dnZXI+DQorICANCisgICAgDQorICA8cm9vdCBsZXZlbD0iJHtWSURfTE9HX0xFVkVMfSI+DQorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJhc3luY0VFTEYiIC8+DQorICA8L3Jvb3Q+DQorDQorPC9jb25maWd1cmF0aW9uPg0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvbWNoYW5nZS1sb2cucHJvcGVydGllcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvbWNoYW5nZS1sb2cucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2U2ZjUwCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9tY2hhbmdlLWxvZy5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMjMgQEAKKyMjIw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIGVDT01QIFBvcnRhbCBTREsNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgDQorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyMjDQorIyBEaXJlY3QgdGhlIHByb3ByaWV0YXJ5IGxvZ2dlciB1c2VkIGJ5IGNvbS5tY2hhbmdlLmMzcDAgdG8gdXNlIHNsZjRqDQorDQorY29tLm1jaGFuZ2UudjIubG9nLk1Mb2c9Y29tLm1jaGFuZ2UudjIubG9nLkZhbGxiYWNrTUxvZw0KK2NvbS5tY2hhbmdlLnYyLmxvZy5GYWxsYmFja01Mb2cuREVGQVVMVF9DVVRPRkZfTEVWRUw9T0ZGDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9teS5jbmYgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL215LmNuZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDdmNjRmCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9teS5jbmYKQEAgLTAsMCArMSwxOTIgQEAKKyMgTWFyaWFEQiBkYXRhYmFzZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlLg0KKyMNCisjIFlvdSBjYW4gY29weSB0aGlzIGZpbGUgdG8gb25lIG9mOg0KKyMgLSAiL2V0Yy9teXNxbC9teS5jbmYiIHRvIHNldCBnbG9iYWwgb3B0aW9ucywNCisjIC0gIn4vLm15LmNuZiIgdG8gc2V0IHVzZXItc3BlY2lmaWMgb3B0aW9ucy4NCisjDQorIyBPbmUgY2FuIHVzZSBhbGwgbG9uZyBvcHRpb25zIHRoYXQgdGhlIHByb2dyYW0gc3VwcG9ydHMuDQorIyBSdW4gcHJvZ3JhbSB3aXRoIC0taGVscCB0byBnZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIGFuZCB3aXRoDQorIyAtLXByaW50LWRlZmF1bHRzIHRvIHNlZSB3aGljaCBpdCB3b3VsZCBhY3R1YWxseSB1bmRlcnN0YW5kIGFuZCB1c2UuDQorIw0KKyMgRm9yIGV4cGxhbmF0aW9ucyBzZWUNCisjIGh0dHA6Ly9kZXYubXlzcWwuY29tL2RvYy9teXNxbC9lbi9zZXJ2ZXItc3lzdGVtLXZhcmlhYmxlcy5odG1sDQorDQorIyBUaGlzIHdpbGwgYmUgcGFzc2VkIHRvIGFsbCBteXNxbCBjbGllbnRzDQorIyBJdCBoYXMgYmVlbiByZXBvcnRlZCB0aGF0IHBhc3N3b3JkcyBzaG91bGQgYmUgZW5jbG9zZWQgd2l0aCB0aWNrcy9xdW90ZXMNCisjIGVzY3BlY2lhbGx5IGlmIHRoZXkgY29udGFpbiAiIyIgY2hhcnMuLi4NCisjIFJlbWVtYmVyIHRvIGVkaXQgL2V0Yy9teXNxbC9kZWJpYW4uY25mIHdoZW4gY2hhbmdpbmcgdGhlIHNvY2tldCBsb2NhdGlvbi4NCitbY2xpZW50XQ0KK3BvcnQgICAgICAgICAgICA9IDMzMDYNCitzb2NrZXQgICAgICAgICAgPSAvdmFyL3J1bi9teXNxbGQvbXlzcWxkLnNvY2sNCisNCisjIEhlcmUgaXMgZW50cmllcyBmb3Igc29tZSBzcGVjaWZpYyBwcm9ncmFtcw0KKyMgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXNzdW1lIHlvdSBoYXZlIGF0IGxlYXN0IDMyTSByYW0NCisNCisjIFRoaXMgd2FzIGZvcm1hbGx5IGtub3duIGFzIFtzYWZlX215c3FsZF0uIEJvdGggdmVyc2lvbnMgYXJlIGN1cnJlbnRseSBwYXJzZWQuDQorW215c3FsZF9zYWZlXQ0KK3NvY2tldCAgICAgICAgICA9IC92YXIvcnVuL215c3FsZC9teXNxbGQuc29jaw0KK25pY2UgICAgICAgICAgICA9IDANCisNCitbbXlzcWxkXQ0KK2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxDQorc2tpcC1ob3N0LWNhY2hlDQorc2tpcC1uYW1lLXJlc29sdmUNCisjDQorIyAqIEJhc2ljIFNldHRpbmdzDQorIw0KKyN1c2VyICAgICAgICAgICA9IG15c3FsDQorcGlkLWZpbGUgICAgICAgID0gL3Zhci9ydW4vbXlzcWxkL215c3FsZC5waWQNCitzb2NrZXQgICAgICAgICAgPSAvdmFyL3J1bi9teXNxbGQvbXlzcWxkLnNvY2sNCitwb3J0ICAgICAgICAgICAgPSAzMzA2DQorYmFzZWRpciAgICAgICAgID0gL3Vzcg0KK2RhdGFkaXIgICAgICAgICA9IC92YXIvbGliL215c3FsDQordG1wZGlyICAgICAgICAgID0gL3RtcA0KK2xjX21lc3NhZ2VzX2RpciA9IC91c3Ivc2hhcmUvbXlzcWwNCitsY19tZXNzYWdlcyAgICAgPSBlbl9VUw0KK3NraXAtZXh0ZXJuYWwtbG9ja2luZw0KKyMNCisjIEluc3RlYWQgb2Ygc2tpcC1uZXR3b3JraW5nIHRoZSBkZWZhdWx0IGlzIG5vdyB0byBsaXN0ZW4gb25seSBvbg0KKyMgbG9jYWxob3N0IHdoaWNoIGlzIG1vcmUgY29tcGF0aWJsZSBhbmQgaXMgbm90IGxlc3Mgc2VjdXJlLg0KKyNiaW5kLWFkZHJlc3MgICAgICAgICAgID0gMTI3LjAuMC4xDQorIw0KKyMgKiBGaW5lIFR1bmluZw0KKyMNCittYXhfY29ubmVjdGlvbnMgICAgICAgICA9IDEwMA0KK2Nvbm5lY3RfdGltZW91dCAgICAgICAgID0gNQ0KK3dhaXRfdGltZW91dCAgICAgICAgICAgID0gNjAwDQorbWF4X2FsbG93ZWRfcGFja2V0ICAgICAgPSAxNk0NCit0aHJlYWRfY2FjaGVfc2l6ZSAgICAgICA9IDEyOA0KK3NvcnRfYnVmZmVyX3NpemUgICAgICAgID0gNE0NCitidWxrX2luc2VydF9idWZmZXJfc2l6ZSA9IDE2TQ0KK3RtcF90YWJsZV9zaXplICAgICAgICAgID0gMzJNDQorbWF4X2hlYXBfdGFibGVfc2l6ZSAgICAgPSAzMk0NCisjDQorIyAqIE15SVNBTQ0KKyMNCisjIFRoaXMgcmVwbGFjZXMgdGhlIHN0YXJ0dXAgc2NyaXB0IGFuZCBjaGVja3MgTXlJU0FNIHRhYmxlcyBpZiBuZWVkZWQNCisjIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIHRvdWNoZWQuIE9uIGVycm9yLCBtYWtlIGNvcHkgYW5kIHRyeSBhIHJlcGFpci4NCitteWlzYW1fcmVjb3Zlcl9vcHRpb25zID0gQkFDS1VQDQora2V5X2J1ZmZlcl9zaXplICAgICAgICAgPSAxMjhNDQorI29wZW4tZmlsZXMtbGltaXQgICAgICAgPSAyMDAwDQordGFibGVfb3Blbl9jYWNoZSAgICAgICAgPSA0MDANCitteWlzYW1fc29ydF9idWZmZXJfc2l6ZSA9IDUxMk0NCitjb25jdXJyZW50X2luc2VydCAgICAgICA9IDINCityZWFkX2J1ZmZlcl9zaXplICAgICAgICA9IDJNDQorcmVhZF9ybmRfYnVmZmVyX3NpemUgICAgPSAxTQ0KKyMNCisjICogUXVlcnkgQ2FjaGUgQ29uZmlndXJhdGlvbg0KKyMNCisjIENhY2hlIG9ubHkgdGlueSByZXN1bHQgc2V0cywgc28gd2UgY2FuIGZpdCBtb3JlIGluIHRoZSBxdWVyeSBjYWNoZS4NCitxdWVyeV9jYWNoZV9saW1pdCAgICAgICAgICAgICAgID0gMTI4Sw0KK3F1ZXJ5X2NhY2hlX3NpemUgICAgICAgICAgICAgICAgPSA2NE0NCisjIGZvciBtb3JlIHdyaXRlIGludGVuc2l2ZSBzZXR1cHMsIHNldCB0byBERU1BTkQgb3IgT0ZGDQorI3F1ZXJ5X2NhY2hlX3R5cGUgICAgICAgICAgICAgICA9IERFTUFORA0KKyMNCisjICogTG9nZ2luZyBhbmQgUmVwbGljYXRpb24NCisjDQorIyBCb3RoIGxvY2F0aW9uIGdldHMgcm90YXRlZCBieSB0aGUgY3JvbmpvYi4NCisjIEJlIGF3YXJlIHRoYXQgdGhpcyBsb2cgdHlwZSBpcyBhIHBlcmZvcm1hbmNlIGtpbGxlci4NCisjIEFzIG9mIDUuMSB5b3UgY2FuIGVuYWJsZSB0aGUgbG9nIGF0IHJ1bnRpbWUhDQorI2dlbmVyYWxfbG9nX2ZpbGUgICAgICAgID0gL3Zhci9sb2cvbXlzcWwvbXlzcWwubG9nDQorI2dlbmVyYWxfbG9nICAgICAgICAgICAgID0gMQ0KKyMNCisjIEVycm9yIGxvZ2dpbmcgZ29lcyB0byBzeXNsb2cgZHVlIHRvIC9ldGMvbXlzcWwvY29uZi5kL215c3FsZF9zYWZlX3N5c2xvZy5jbmYuDQorIw0KKyMgd2UgZG8gd2FudCB0byBrbm93IGFib3V0IG5ldHdvcmsgZXJyb3JzIGFuZCBzdWNoDQorI2xvZ193YXJuaW5ncyAgICAgICAgICAgPSAyDQorIw0KKyMgRW5hYmxlIHRoZSBzbG93IHF1ZXJ5IGxvZyB0byBzZWUgcXVlcmllcyB3aXRoIGVzcGVjaWFsbHkgbG9uZyBkdXJhdGlvbg0KKyNzbG93X3F1ZXJ5X2xvZ1s9ezB8MX1dDQorc2xvd19xdWVyeV9sb2dfZmlsZSAgICAgPSAvdmFyL2xvZy9teXNxbC9tYXJpYWRiLXNsb3cubG9nDQorbG9uZ19xdWVyeV90aW1lID0gMTANCisjbG9nX3Nsb3dfcmF0ZV9saW1pdCAgICA9IDEwMDANCisjbG9nX3Nsb3dfdmVyYm9zaXR5ICAgICA9IHF1ZXJ5X3BsYW4NCisNCisjbG9nLXF1ZXJpZXMtbm90LXVzaW5nLWluZGV4ZXMNCisjbG9nX3Nsb3dfYWRtaW5fc3RhdGVtZW50cw0KKyMNCisjIFRoZSBmb2xsb3dpbmcgY2FuIGJlIHVzZWQgYXMgZWFzeSB0byByZXBsYXkgYmFja3VwIGxvZ3Mgb3IgZm9yIHJlcGxpY2F0aW9uLg0KKyMgbm90ZTogaWYgeW91IGFyZSBzZXR0aW5nIHVwIGEgcmVwbGljYXRpb24gc2xhdmUsIHNlZSBSRUFETUUuRGViaWFuIGFib3V0DQorIyAgICAgICBvdGhlciBzZXR0aW5ncyB5b3UgbWF5IG5lZWQgdG8gY2hhbmdlLg0KKyNzZXJ2ZXItaWQgICAgICAgICAgICAgID0gMQ0KKyNyZXBvcnRfaG9zdCAgICAgICAgICAgID0gbWFzdGVyMQ0KKyNhdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgPSAyDQorI2F1dG9faW5jcmVtZW50X29mZnNldCAgPSAxDQorI2xvZ19iaW4gICAgICAgICAgICAgICAgICAgICAgICA9IC92YXIvbG9nL215c3FsL21hcmlhZGItYmluDQorI2xvZ19iaW5faW5kZXggICAgICAgICAgPSAvdmFyL2xvZy9teXNxbC9tYXJpYWRiLWJpbi5pbmRleA0KKyMgbm90IGZhYiBmb3IgcGVyZm9ybWFuY2UsIGJ1dCBzYWZlcg0KKyNzeW5jX2JpbmxvZyAgICAgICAgICAgID0gMQ0KK2V4cGlyZV9sb2dzX2RheXMgICAgICAgID0gMTANCittYXhfYmlubG9nX3NpemUgICAgICAgICA9IDEwME0NCisjIHNsYXZlcw0KKyNyZWxheV9sb2cgICAgICAgICAgICAgID0gL3Zhci9sb2cvbXlzcWwvcmVsYXktYmluDQorI3JlbGF5X2xvZ19pbmRleCAgICAgICAgPSAvdmFyL2xvZy9teXNxbC9yZWxheS1iaW4uaW5kZXgNCisjcmVsYXlfbG9nX2luZm9fZmlsZSAgICA9IC92YXIvbG9nL215c3FsL3JlbGF5LWJpbi5pbmZvDQorI2xvZ19zbGF2ZV91cGRhdGVzDQorI3JlYWRfb25seQ0KKyMNCisjIElmIGFwcGxpY2F0aW9ucyBzdXBwb3J0IGl0LCB0aGlzIHN0cmljdGVyIHNxbF9tb2RlIHByZXZlbnRzIHNvbWUNCisjIG1pc3Rha2VzIGxpa2UgaW5zZXJ0aW5nIGludmFsaWQgZGF0ZXMgZXRjLg0KKyNzcWxfbW9kZSAgICAgICAgICAgICAgID0gTk9fRU5HSU5FX1NVQlNUSVRVVElPTixUUkFESVRJT05BTA0KKyMNCisjICogSW5ub0RCDQorIw0KKyMgSW5ub0RCIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoIGEgMTBNQiBkYXRhZmlsZSBpbiAvdmFyL2xpYi9teXNxbC8uDQorIyBSZWFkIHRoZSBtYW51YWwgZm9yIG1vcmUgSW5ub0RCIHJlbGF0ZWQgb3B0aW9ucy4gVGhlcmUgYXJlIG1hbnkhDQorZGVmYXVsdF9zdG9yYWdlX2VuZ2luZSAgPSBJbm5vREINCisjIHlvdSBjYW4ndCBqdXN0IGNoYW5nZSBsb2cgZmlsZSBzaXplLCByZXF1aXJlcyBzcGVjaWFsIHByb2NlZHVyZQ0KKyNpbm5vZGJfbG9nX2ZpbGVfc2l6ZSAgID0gNTBNDQoraW5ub2RiX2J1ZmZlcl9wb29sX3NpemUgPSAyNTZNDQoraW5ub2RiX2xvZ19idWZmZXJfc2l6ZSAgPSA4TQ0KK2lubm9kYl9maWxlX3Blcl90YWJsZSAgID0gMQ0KK2lubm9kYl9vcGVuX2ZpbGVzICAgICAgID0gNDAwDQoraW5ub2RiX2lvX2NhcGFjaXR5ICAgICAgPSA0MDANCitpbm5vZGJfZmx1c2hfbWV0aG9kICAgICA9IE9fRElSRUNUDQorIw0KKyMgKiBTZWN1cml0eSBGZWF0dXJlcw0KKyMNCisjIFJlYWQgdGhlIG1hbnVhbCwgdG9vLCBpZiB5b3Ugd2FudCBjaHJvb3QhDQorIyBjaHJvb3QgPSAvdmFyL2xpYi9teXNxbC8NCisjDQorIyBGb3IgZ2VuZXJhdGluZyBTU0wgY2VydGlmaWNhdGVzIEkgcmVjb21tZW5kIHRoZSBPcGVuU1NMIEdVSSAidGlueWNhIi4NCisjDQorIyBzc2wtY2E9L2V0Yy9teXNxbC9jYWNlcnQucGVtDQorIyBzc2wtY2VydD0vZXRjL215c3FsL3NlcnZlci1jZXJ0LnBlbQ0KKyMgc3NsLWtleT0vZXRjL215c3FsL3NlcnZlci1rZXkucGVtDQorDQorIw0KKyMgKiBHYWxlcmEtcmVsYXRlZCBzZXR0aW5ncw0KKyMNCitbZ2FsZXJhXQ0KKyMgTWFuZGF0b3J5IHNldHRpbmdzDQorI3dzcmVwX29uPU9ODQorI3dzcmVwX3Byb3ZpZGVyPQ0KKyN3c3JlcF9jbHVzdGVyX2FkZHJlc3M9DQorI2JpbmxvZ19mb3JtYXQ9cm93DQorI2RlZmF1bHRfc3RvcmFnZV9lbmdpbmU9SW5ub0RCDQorI2lubm9kYl9hdXRvaW5jX2xvY2tfbW9kZT0yDQorIw0KKyMgQWxsb3cgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucyBvbiBhbGwgaW50ZXJmYWNlcy4NCisjDQorI2JpbmQtYWRkcmVzcz0wLjAuMC4wDQorIw0KKyMgT3B0aW9uYWwgc2V0dGluZw0KKyN3c3JlcF9zbGF2ZV90aHJlYWRzPTENCisjaW5ub2RiX2ZsdXNoX2xvZ19hdF90cnhfY29tbWl0PTANCisNCitbbXlzcWxkdW1wXQ0KK3F1aWNrDQorcXVvdGUtbmFtZXMNCittYXhfYWxsb3dlZF9wYWNrZXQgICAgICA9IDE2TQ0KKw0KK1tteXNxbF0NCisjbm8tYXV0by1yZWhhc2ggIyBmYXN0ZXIgc3RhcnQgb2YgbXlzcWwgYnV0IG5vIHRhYiBjb21wbGV0aW9uDQorDQorW2lzYW1jaGtdDQora2V5X2J1ZmZlciAgICAgICAgICAgICAgPSAxNk0NCisNCisjDQorIyAqIElNUE9SVEFOVDogQWRkaXRpb25hbCBzZXR0aW5ncyB0aGF0IGNhbiBvdmVycmlkZSB0aG9zZSBmcm9tIHRoaXMgZmlsZSENCisjICAgVGhlIGZpbGVzIG11c3QgZW5kIHdpdGggJy5jbmYnLCBvdGhlcndpc2UgdGhleSdsbCBiZSBpZ25vcmVkLg0KKyMNCishaW5jbHVkZWRpciAvZXRjL215c3FsL2NvbmYuZC8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL29zYW0tY29yZS1kYXRhLnNxbCBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvb3NhbS1jb3JlLWRhdGEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MzdlODIKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL29zYW0tY29yZS1kYXRhLnNxbApAQCAtMCwwICsxLDcwOSBAQAorLyotDQorICogPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBWSUQNCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKiANCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqIA0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKiA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAqLw0KK1VTRSBvc2FtX2NvcmU7DQorDQorREVMRVRFIEZST00gYGZuX2RhdGFzb3VyY2VgOw0KK1RSVU5DQVRFIGBmbl9tZW51YDsNCitERUxFVEUgRlJPTSBgZm5fcm9sZV9mdW5jdGlvbmA7DQorREVMRVRFIEZST00gYGZuX3Jlc3RyaWN0ZWRfdXJsYDsNCitERUxFVEUgRlJPTSBgZm5fdGFiX3NlbGVjdGVkYDsNCitERUxFVEUgRlJPTSBgZm5fdGFiYDsNCitERUxFVEUgRlJPTSBgZm5fZnVuY3Rpb25gOw0KK0RFTEVURSBGUk9NIGBmbl9sdV9hbGVydF9tZXRob2RgOw0KK0RFTEVURSBGUk9NIGBmbl9sdV9hY3Rpdml0eWA7DQorREVMRVRFIEZST00gYGZuX2x1X2NhbGxfdGltZXNgOw0KK0RFTEVURSBGUk9NIGBmbl9sdV9jb3VudHJ5YDsNCitERUxFVEUgRlJPTSBgZm5fbHVfbWVudV9zZXRgOw0KK0RFTEVURSBGUk9NIGBmbl9sdV9wcmlvcml0eWA7DQorREVMRVRFIEZST00gYGZuX2x1X3N0YXRlYDsNCitERUxFVEUgRlJPTSBgZm5fbHVfdGFiX3NldGA7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBjcl9yYXB0b3JfYWN0aW9uX2ltZ2ANCistLQ0KK1JFUExBQ0UgSU5UTyBgY3JfcmFwdG9yX2FjdGlvbl9pbWdgIFZBTFVFUyAoJ0NBTEVOREFSJywnL3N0YXRpYy9mdXNpb24vcmFwdG9yL2ltZy9DYWxlbmRhci0xNngxNi5wbmcnKTsNCitSRVBMQUNFIElOVE8gYGNyX3JhcHRvcl9hY3Rpb25faW1nYCBWQUxVRVMgKCdERUxFVEUnLCcvc3RhdGljL2Z1c2lvbi9yYXB0b3IvaW1nL2RlbGV0ZWljb24uZ2lmJyk7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl9hcHBgDQorLS0NCitJTlNFUlQgSUdOT1JFIElOVE8gYGZuX2FwcGAgVkFMVUVTICgxLCdEZWZhdWx0JyxudWxsLCdTb21lIERlZmF1bHQgRGVzY3JpcHRpb24nLCdTb21lIERlZmF1bHQgTm90ZScsbnVsbCxudWxsLG51bGwsJ0VDUFAnLCc/JywxLCdva1lUYURyaHppYmNiR1ZxNW1qa1ZRPT0nLCdOJywnTicsbnVsbCwnRGVmYXVsdCcsbnVsbCxudWxsLCdFQ09NUC1QT1JUQUwtSU5CT1gnKTsNCisNCisNCistLQ0KKy0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGZuX2Z1bmN0aW9uYA0KKy0tDQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCcxJywndGVzdCByb2xlIGZ1bmN0aW9uJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSd0ZXN0IHJvbGUgZnVuY3Rpb24nOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnZG9jbGliJywnRG9jdW1lbnQgTGlicmFyeScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nRG9jdW1lbnQgTGlicmFyeSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdkb2NsaWJfYWRtaW4nLCdEb2N1bWVudCBMaWJyYXJ5IEFkbWluJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdEb2N1bWVudCBMaWJyYXJ5IEFkbWluJzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ2xvZ2luJywnTG9naW4nLCd1cmwnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nTG9naW4nOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9hZG1pbicsJ0FkbWluIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0FkbWluIE1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9hamF4JywnQWpheCBNZW51JywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdBamF4IE1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9zZXJ2aWNlbW9kZWxzJywnQnJvd3NlIFNEQyBTZXJ2aWNlIEluc3RhbmNlcycsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nQnJvd3NlIFNEQyBTZXJ2aWNlIEluc3RhbmNlcyc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2NvbmNlcHQnLCdDb05DRVBUJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdDb05DRVBUJzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfY3VzdG9tZXInLCdDdXN0b21lciBNZW51JywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdDdXN0b21lciBNZW51JzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfY3VzdG9tZXJfY3JlYXRlJywnQ3VzdG9tZXIgQ3JlYXRlJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdDdXN0b21lciBDcmVhdGUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9kb2NsaWInLCdEb2N1bWVudCBMaWJyYXJ5IE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0RvY3VtZW50IExpYnJhcnkgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2ZlZWRiYWNrJywnRmVlZGJhY2sgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nRmVlZGJhY2sgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2hlbHAnLCdIZWxwIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0hlbHAgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2hvbWUnLCdIb21lIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0hvbWUgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2l0cmFja2VyJywnaVRyYWNrZXIgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0naVRyYWNrZXIgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2l0cmFja2VyX2FkbWluJywnSXRyYWNrZXIgQWRtaW4vU3VwcG9ydCBtZW51JywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdJdHJhY2tlciBBZG1pbi9TdXBwb3J0IG1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9qb2InLCdKb2IgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nSm9iIE1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9qb2JfY3JlYXRlJywnSm9iIENyZWF0ZScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nSm9iIENyZWF0ZSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2pvYl9kZXNpZ25lcicsJ1Byb2Nlc3MgaW4gRGVzaWduZXIgdmlldycsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nUHJvY2VzcyBpbiBEZXNpZ25lciB2aWV3JzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfbG9nb3V0JywnTG9nb3V0IE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0xvZ291dCBNZW51JzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfbWFwJywnTWFwIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J01hcCBNZW51JzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfbmV3c2VyaW5zdGFuY2UnLCdDcmVhdGUgTmV3IFNlcnZpY2UgSW5zdGFuY2UnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J0NyZWF0ZSBOZXcgU2VydmljZSBJbnN0YW5jZSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X25vdGVzJywnTm90ZXMgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nTm90ZXMgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Byb2Nlc3MnLCdQcm9jZXNzIExpc3QnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1Byb2Nlc3MgTGlzdCc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Byb2ZpbGUnLCdQcm9maWxlIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1Byb2ZpbGUgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Byb2ZpbGVfY3JlYXRlJywnUHJvZmlsZSBDcmVhdGUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1Byb2ZpbGUgQ3JlYXRlJzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfcHJvZmlsZV9pbXBvcnQnLCdQcm9maWxlIEltcG9ydCcsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nUHJvZmlsZSBJbXBvcnQnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9yZXBvcnRzJywnUmVwb3J0cyBNZW51JywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdSZXBvcnRzIE1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV9zYW1wbGUnLCdTYW1wbGUgUGFnZXMgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nU2FtcGxlIFBhZ2VzIE1lbnUnOw0KK0lOU0VSVCBJTlRPIGBmbl9mdW5jdGlvbmAgVkFMVUVTICgnbWVudV90YWInLCdTYW1wbGUgVGFiIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1NhbXBsZSBUYWIgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Rhc2snLCdUYXNrIE1lbnUnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1Rhc2sgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Rhc2tfc2VhcmNoJywnVGFzayBTZWFyY2gnLCdtZW51JywnKicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIEZVTkNUSU9OX05BTUU9J1Rhc2sgU2VhcmNoJzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfdGVzdCcsJ1Rlc3QgTWVudScsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nVGVzdCBNZW51JzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfdmlld2xvZycsJ0xvZyBNZW51JywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdMb2cgTWVudSc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCd2aWV3X3JlcG9ydHMnLCdWaWV3IFJhcHRvciByZXBvcnRzJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdWaWV3IFJhcHRvciByZXBvcnRzJzsNCitJTlNFUlQgSU5UTyBgZm5fZnVuY3Rpb25gIFZBTFVFUyAoJ21lbnVfc2VhcmNoZXhpc3RpbmcnLCAnU2VhcmNoIGZvciBFeGlzdGluZyBTZXJ2aWNlIEluc3RhbmNlcycsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nU2VhcmNoIGZvciBFeGlzdGluZyBTZXJ2aWNlIEluc3RhbmNlcyc7DQorSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X2NoYW5nZW1hbmFnZW1lbnQnLCdWTkYgQ2hhbmdlcycsJ21lbnUnLCcqJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgRlVOQ1RJT05fTkFNRT0nVk5GIENoYW5nZXMnOw0KKy0tSU5TRVJUIElOVE8gYGZuX2Z1bmN0aW9uYCBWQUxVRVMgKCdtZW51X3Rlc3RlbnZpcm9ubWVudCcsJ1Rlc3QgRW52aXJvbm1lbnRzJywnbWVudScsJyonKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBGVU5DVElPTl9OQU1FPSdUZXN0IEVudmlyb25tZW50cyc7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl9sdV9hY3Rpdml0eWANCistLQ0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ2FkZF9jaGlsZF9yb2xlJywnYWRkX2NoaWxkX3JvbGUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2FjdGl2aXR5YCBWQUxVRVMgKCdhZGRfcm9sZScsJ2FkZF9yb2xlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hY3Rpdml0eWAgVkFMVUVTICgnYWRkX3JvbGVfZnVuY3Rpb24nLCdhZGRfcm9sZV9mdW5jdGlvbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ2FkZF91c2VyX3JvbGUnLCdhZGRfdXNlcl9yb2xlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hY3Rpdml0eWAgVkFMVUVTICgnbG9naW4nLCdMb2dpbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ2xvZ291dCcsJ0xvZ291dCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ21vYmlsZV9sb2dpbicsJ01vYmlsZSBMb2dpbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ21vYmlsZV9sb2dvdXQnLCdNb2JpbGUgTG9nb3V0Jyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hY3Rpdml0eWAgVkFMVUVTICgncmVtb3ZlX2NoaWxkX3JvbGUnLCdyZW1vdmVfY2hpbGRfcm9sZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWN0aXZpdHlgIFZBTFVFUyAoJ3JlbW92ZV9yb2xlJywncmVtb3ZlX3JvbGUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2FjdGl2aXR5YCBWQUxVRVMgKCdyZW1vdmVfcm9sZV9mdW5jdGlvbicsJ3JlbW92ZV9yb2xlX2Z1bmN0aW9uJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hY3Rpdml0eWAgVkFMVUVTICgncmVtb3ZlX3VzZXJfcm9sZScsJ3JlbW92ZV91c2VyX3JvbGUnKTsNCisNCistLQ0KKy0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGZuX2x1X2FsZXJ0X21ldGhvZGANCistLQ0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWxlcnRfbWV0aG9kYCBWQUxVRVMgKCdFTUFJTCcsJ0VtYWlsJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hbGVydF9tZXRob2RgIFZBTFVFUyAoJ0ZBWCcsJ0ZheCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfYWxlcnRfbWV0aG9kYCBWQUxVRVMgKCdQQUdFUicsJ1BhZ2VyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9hbGVydF9tZXRob2RgIFZBTFVFUyAoJ1BIT05FJywnUGhvbmUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2FsZXJ0X21ldGhvZGAgVkFMVUVTICgnU01TJywnU01TJyk7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl9sdV9jYWxsX3RpbWVzYA0KKy0tDQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDEsMjAsJzIwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgyLDQwLCc0MCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMyw2MCwnMSBocicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0LDgwLCcxIGhyIDIwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg1LDEwMCwnMSBociA0MCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoNiwxMjAsJzIgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDcsMTQwLCcyIGhyIDIwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg4LDE2MCwnMiBociA0MCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoOSwxODAsJzMgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDEwLDIwMCwnMyBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMTEsMjIwLCczIGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgxMiwyNDAsJzQgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDEzLDI2MCwnNCBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMTQsMjgwLCc0IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgxNSwzMDAsJzUgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDE2LDMyMCwnNSBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMTcsMzQwLCc1IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgxOCwzNjAsJzYgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDE5LDM4MCwnNiBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMjAsNDAwLCc2IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgyMSw0MjAsJzcgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDIyLDQ0MCwnNyBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMjMsNDYwLCc3IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgyNCw0ODAsJzggaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDI1LDUwMCwnOCBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMjYsNTIwLCc4IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgyNyw1NDAsJzkgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDI4LDU2MCwnOSBociAyMCBtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMjksNTgwLCc5IGhyIDQwIG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgzMCw2MDAsJzEwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgzMSwxMCwnMTAgbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDMyLDUsJzUgbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDMzLDEyMDAsJzIwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgzNCwxODAwLCczMCBocnMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMzUsMjQwMCwnNDAgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDM2LDMwMDAsJzUwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICgzNyw0MjAwLCc3MCBocnMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoMzgsNDgwMCwnODAgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDM5LDU0MDAsJzkwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0MCw2MDAwLCcxMDAgaHJzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jYWxsX3RpbWVzYCBWQUxVRVMgKDQxLDcyMDAsJzEyMCBocnMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NhbGxfdGltZXNgIFZBTFVFUyAoNDIsOTYwMCwnMTYwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0MywxMDgwMCwnMTgwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0NCwxMjAwMCwnMjAwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0NSwxODAwMCwnMzAwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0NiwyNDAwMCwnNDAwIGhycycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY2FsbF90aW1lc2AgVkFMVUVTICg0NywzMDAwMCwnNTAwIGhycycpOw0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fbHVfY291bnRyeWANCistLQ0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQUQnLCdBbmRvcnJhJywnQW5kb3JyYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBRScsJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywnVW5pdGVkIEFyYWIgRW1pcmF0ZXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQUYnLCdBZmdoYW5pc3RhbicsJ0FmZ2hhbmlzdGFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0FHJywnQW50aWd1YSBhbmQgQmFyYnVkYScsJ0FudGlndWEgYW5kIEJhcmJ1ZGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQUknLCdBbmd1aWxsYScsJ0FuZ3VpbGxhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0FMJywnQWxiYW5pYScsJ0FsYmFuaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQU0nLCdBcm1lbmlhJywnQXJtZW5pYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBTicsJ05ldGhlcmxhbmRzIEFudGlsbGVzJywnTmV0aGVybGFuZHMgQW50aWxsZXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQU8nLCdBbmdvbGEnLCdBbmdvbGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQVEnLCdBbnRhcmN0aWNhJywnQW50YXJjdGljYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBUicsJ0FyZ2VudGluYScsJ0FyZ2VudGluYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBUycsJ0FtZXJpY2FuIFNhbW9hJywnQW1lcmljYW4gU2Ftb2EnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQVQnLCdBdXN0cmlhJywnQXVzdHJpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBVScsJ0F1c3RyYWxpYScsJ0F1c3RyYWxpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdBVycsJ0FydWJhJywnQXJ1YmEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQVonLCdBemVyYmFpZGphbicsJ0F6ZXJiYWlkamFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JBJywnQm9zbmlhLUhlcnplZ292aW5hJywnQm9zbmlhLUhlcnplZ292aW5hJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JCJywnQmFyYmFkb3MnLCdCYXJiYWRvcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdCRCcsJ0JhbmdsYWRlc2gnLCdCYW5nbGFkZXNoJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JFJywnQmVsZ2l1bScsJ0JlbGdpdW0nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQkYnLCdCdXJraW5hIEZhc28nLCdCdXJraW5hIEZhc28nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQkcnLCdCdWxnYXJpYScsJ0J1bGdhcmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JIJywnQmFocmFpbicsJ0JhaHJhaW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQkknLCdCdXJ1bmRpJywnQnVydW5kaScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdCSicsJ0JlbmluJywnQmVuaW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQk0nLCdCZXJtdWRhJywnQmVybXVkYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdCTicsJ0JydW5laSBEYXJ1c3NhbGFtJywnQnJ1bmVpIERhcnVzc2FsYW0nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQk8nLCdCb2xpdmlhJywnQm9saXZpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdCUicsJ0JyYXppbCcsJ0JyYXppbCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdCUycsJ0JhaGFtYXMnLCdCYWhhbWFzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JUJywnQmh1dGFuJywnQmh1dGFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JWJywnQm91dmV0IElzbGFuZCcsJ0JvdXZldCBJc2xhbmQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQlcnLCdCb3Rzd2FuYScsJ0JvdHN3YW5hJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0JZJywnQmVsYXJ1cycsJ0JlbGFydXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQlonLCdCZWxpemUnLCdCZWxpemUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ0EnLCdDYW5hZGEnLCdDYW5hZGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ0MnLCdDb2NvcyAoS2VlbGluZykgSXNsYW5kcycsJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0NGJywnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0NHJywnQ29uZ28nLCdDb25nbycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDSCcsJ1N3aXR6ZXJsYW5kJywnU3dpdHplcmxhbmQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ0knLCdJdm9yeSBDb2FzdCAoQ290ZSBEXCdJdm9pcmUpJywnSXZvcnkgQ29hc3QgKENvdGUgRFwnSXZvaXJlKScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDSycsJ0Nvb2sgSXNsYW5kcycsJ0Nvb2sgSXNsYW5kcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDTCcsJ0NoaWxlJywnQ2hpbGUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ00nLCdDYW1lcm9vbicsJ0NhbWVyb29uJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0NOJywnQ2hpbmEnLCdDaGluYScsJ0NoaW5hJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDTycsJ0NvbG9tYmlhJywnQ29sb21iaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ1InLCdDb3N0YSBSaWNhJywnQ29zdGEgUmljYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDUycsJ0Zvcm1lciBDemVjaG9zbG92YWtpYScsJ0Zvcm1lciBDemVjaG9zbG92YWtpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDVScsJ0N1YmEnLCdDdWJhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0NWJywnQ2FwZSBWZXJkZScsJ0NhcGUgVmVyZGUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnQ1gnLCdDaHJpc3RtYXMgSXNsYW5kJywnQ2hyaXN0bWFzIElzbGFuZCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDWScsJ0N5cHJ1cycsJ0N5cHJ1cycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdDWicsJ0N6ZWNoIFJlcHVibGljJywnQ3plY2ggUmVwdWJsaWMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnREUnLCdHZXJtYW55JywnR2VybWFueScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdESicsJ0RqaWJvdXRpJywnRGppYm91dGknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnREsnLCdEZW5tYXJrJywnRGVubWFyaycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdETScsJ0RvbWluaWNhJywnRG9taW5pY2EnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnRE8nLCdEb21pbmljYW4gUmVwdWJsaWMnLCdEb21pbmljYW4gUmVwdWJsaWMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnRFonLCdBbGdlcmlhJywnQWxnZXJpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdFQycsJ0VjdWFkb3InLCdFY3VhZG9yJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0VFJywnRXN0b25pYScsJ0VzdG9uaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnRUcnLCdFZ3lwdCcsJ0VneXB0JyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0VIJywnV2VzdGVybiBTYWhhcmEnLCdXZXN0ZXJuIFNhaGFyYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdFUicsJ0VyaXRyZWEnLCdFcml0cmVhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0VTJywnU3BhaW4nLCdTcGFpbicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdFVCcsJ0V0aGlvcGlhJywnRXRoaW9waWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnRkknLCdGaW5sYW5kJywnRmlubGFuZCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdGSicsJ0ZpamknLCdGaWppJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0ZLJywnRmFsa2xhbmQgSXNsYW5kcycsJ0ZhbGtsYW5kIElzbGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnRk0nLCdNaWNyb25lc2lhJywnTWljcm9uZXNpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdGTycsJ0Zhcm9lIElzbGFuZHMnLCdGYXJvZSBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0ZSJywnRnJhbmNlJywnRnJhbmNlJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0ZYJywnRnJhbmNlIChFdXJvcGVhbiBUZXJyaXRvcnkpJywnRnJhbmNlIChFdXJvcGVhbiBUZXJyaXRvcnkpJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0dBJywnR2Fib24nLCdHYWJvbicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHQicsJ0dyZWF0IEJyaXRhaW4nLCdHcmVhdCBCcml0YWluJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0dEJywnR3JlbmFkYScsJ0dyZW5hZGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnR0UnLCdHZW9yZ2lhJywnR2VvcmdpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHRicsJ0ZyZW5jaCBHdXlhbmEnLCdGcmVuY2ggR3V5YW5hJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0dIJywnR2hhbmEnLCdHaGFuYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHSScsJ0dpYnJhbHRhcicsJ0dpYnJhbHRhcicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHTCcsJ0dyZWVubGFuZCcsJ0dyZWVubGFuZCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHTScsJ0dhbWJpYScsJ0dhbWJpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHTicsJ0d1aW5lYScsJ0d1aW5lYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHUCcsJ0d1YWRlbG91cGUgKEZyZW5jaCknLCdHdWFkZWxvdXBlIChGcmVuY2gpJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0dRJywnRXF1YXRvcmlhbCBHdWluZWEnLCdFcXVhdG9yaWFsIEd1aW5lYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHUicsJ0dyZWVjZScsJ0dyZWVjZScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHUycsJ1MuIEdlb3JnaWEgYW5kIFMuIFNhbmR3aWNoIElzbHMuJywnUy4gR2VvcmdpYSBhbmQgUy4gU2FuZHdpY2ggSXNscy4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnR1QnLCdHdWF0ZW1hbGEnLCdHdWF0ZW1hbGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnR1UnLCdHdWFtIChVU0EpJywnR3VhbSAoVVNBKScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdHVycsJ0d1aW5lYSBCaXNzYXUnLCdHdWluZWEgQmlzc2F1JyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0dZJywnR3V5YW5hJywnR3V5YW5hJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0hLJywnSG9uZyBLb25nJywnSG9uZyBLb25nJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0hNJywnSGVhcmQgYW5kIE1jRG9uYWxkIElzbGFuZHMnLCdIZWFyZCBhbmQgTWNEb25hbGQgSXNsYW5kcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdITicsJ0hvbmR1cmFzJywnSG9uZHVyYXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnSFInLCdDcm9hdGlhJywnQ3JvYXRpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdIVCcsJ0hhaXRpJywnSGFpdGknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnSFUnLCdIdW5nYXJ5JywnSHVuZ2FyeScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdJRCcsJ0luZG9uZXNpYScsJ0luZG9uZXNpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdJRScsJ0lyZWxhbmQnLCdJcmVsYW5kJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0lMJywnSXNyYWVsJywnSXNyYWVsJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0lOJywnSW5kaWEnLCdJbmRpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdJTycsJ0JyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeScsJ0JyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdJUScsJ0lyYXEnLCdJcmFxJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0lSJywnSXJhbicsJ0lyYW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnSVMnLCdJY2VsYW5kJywnSWNlbGFuZCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdJVCcsJ0l0YWx5JywnSXRhbHknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnSk0nLCdKYW1haWNhJywnSmFtYWljYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdKTycsJ0pvcmRhbicsJ0pvcmRhbicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdKUCcsJ0phcGFuJywnSmFwYW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnS0UnLCdLZW55YScsJ0tlbnlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0tHJywnS3lyZ3l6c3RhbicsJ0t5cmd5enN0YW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnS0gnLCdDYW1ib2RpYScsJ0NhbWJvZGlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0tJJywnS2lyaWJhdGknLCdLaXJpYmF0aScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdLTScsJ0NvbW9yb3MnLCdDb21vcm9zJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0tOJywnU2FpbnQgS2l0dHMgYW5kIE5ldmlzIEFuZ3VpbGxhJywnU2FpbnQgS2l0dHMgYW5kIE5ldmlzIEFuZ3VpbGxhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0tQJywnTm9ydGggS29yZWEnLCdOb3J0aCBLb3JlYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdLUicsJ1NvdXRoIEtvcmVhJywnU291dGggS29yZWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnS1cnLCdLdXdhaXQnLCdLdXdhaXQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnS1knLCdDYXltYW4gSXNsYW5kcycsJ0NheW1hbiBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0taJywnS2F6YWtoc3RhbicsJ0themFraHN0YW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTEEnLCdMYW9zJywnTGFvcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdMQicsJ0xlYmFub24nLCdMZWJhbm9uJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0xDJywnU2FpbnQgTHVjaWEnLCdTYWludCBMdWNpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdMSScsJ0xpZWNodGVuc3RlaW4nLCdMaWVjaHRlbnN0ZWluJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0xLJywnU3JpIExhbmthJywnU3JpIExhbmthJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0xSJywnTGliZXJpYScsJ0xpYmVyaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTFMnLCdMZXNvdGhvJywnTGVzb3RobycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdMVCcsJ0xpdGh1YW5pYScsJ0xpdGh1YW5pYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdMVScsJ0x1eGVtYm91cmcnLCdMdXhlbWJvdXJnJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0xWJywnTGF0dmlhJywnTGF0dmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ0xZJywnTGlieWEnLCdMaWJ5YScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNQScsJ01vcm9jY28nLCdNb3JvY2NvJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01DJywnTW9uYWNvJywnTW9uYWNvJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01EJywnTW9sZGF2aWEnLCdNb2xkYXZpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNRycsJ01hZGFnYXNjYXInLCdNYWRhZ2FzY2FyJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01IJywnTWFyc2hhbGwgSXNsYW5kcycsJ01hcnNoYWxsIElzbGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTUsnLCdNYWNlZG9uaWEnLCdNYWNlZG9uaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTUwnLCdNYWxpJywnTWFsaScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNTScsJ015YW5tYXInLCdNeWFubWFyJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01OJywnTW9uZ29saWEnLCdNb25nb2xpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNTycsJ01hY2F1JywnTWFjYXUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTVAnLCdOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMnLCdOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTVEnLCdNYXJ0aW5pcXVlIChGcmVuY2gpJywnTWFydGluaXF1ZSAoRnJlbmNoKScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNUicsJ01hdXJpdGFuaWEnLCdNYXVyaXRhbmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01TJywnTW9udHNlcnJhdCcsJ01vbnRzZXJyYXQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTVQnLCdNYWx0YScsJ01hbHRhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01VJywnTWF1cml0aXVzJywnTWF1cml0aXVzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01WJywnTWFsZGl2ZXMnLCdNYWxkaXZlcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNVycsJ01hbGF3aScsJ01hbGF3aScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdNWCcsJ01leGljbycsJ01leGljbycsJ01leGljbycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTVknLCdNYWxheXNpYScsJ01hbGF5c2lhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ01aJywnTW96YW1iaXF1ZScsJ01vemFtYmlxdWUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTkEnLCdOYW1pYmlhJywnTmFtaWJpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdOQycsJ05ldyBDYWxlZG9uaWEgKEZyZW5jaCknLCdOZXcgQ2FsZWRvbmlhIChGcmVuY2gpJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ05FJywnTmlnZXInLCdOaWdlcicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdORicsJ05vcmZvbGsgSXNsYW5kJywnTm9yZm9sayBJc2xhbmQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTkcnLCdOaWdlcmlhJywnTmlnZXJpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdOSScsJ05pY2FyYWd1YScsJ05pY2FyYWd1YScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdOTCcsJ05ldGhlcmxhbmRzJywnTmV0aGVybGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTk8nLCdOb3J3YXknLCdOb3J3YXknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnTlAnLCdOZXBhbCcsJ05lcGFsJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ05SJywnTmF1cnUnLCdOYXVydScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdOVScsJ05pdWUnLCdOaXVlJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ05aJywnTmV3IFplYWxhbmQnLCdOZXcgWmVhbGFuZCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdPTScsJ09tYW4nLCdPbWFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1BBJywnUGFuYW1hJywnUGFuYW1hJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1BFJywnUGVydScsJ1BlcnUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUEYnLCdQb2x5bmVzaWEgKEZyZW5jaCknLCdQb2x5bmVzaWEgKEZyZW5jaCknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUEcnLCdQYXB1YSBOZXcgR3VpbmVhJywnUGFwdWEgTmV3IEd1aW5lYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdQSCcsJ1BoaWxpcHBpbmVzJywnUGhpbGlwcGluZXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUEsnLCdQYWtpc3RhbicsJ1Bha2lzdGFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1BMJywnUG9sYW5kJywnUG9sYW5kJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1BNJywnU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbicsJ1NhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUE4nLCdQaXRjYWlybiBJc2xhbmQnLCdQaXRjYWlybiBJc2xhbmQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUFInLCdQdWVydG8gUmljbycsJ1B1ZXJ0byBSaWNvJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1BUJywnUG9ydHVnYWwnLCdQb3J0dWdhbCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdQVycsJ1BhbGF1JywnUGFsYXUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUFknLCdQYXJhZ3VheScsJ1BhcmFndWF5JyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1FBJywnUWF0YXInLCdRYXRhcicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdSRScsJ1JldW5pb24gKEZyZW5jaCknLCdSZXVuaW9uIChGcmVuY2gpJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1JPJywnUm9tYW5pYScsJ1JvbWFuaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUlUnLCdSdXNzaWFuIEZlZGVyYXRpb24nLCdSdXNzaWFuIEZlZGVyYXRpb24nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnUlcnLCdSd2FuZGEnLCdSd2FuZGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0EnLCdTYXVkaSBBcmFiaWEnLCdTYXVkaSBBcmFiaWEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0InLCdTb2xvbW9uIElzbGFuZHMnLCdTb2xvbW9uIElzbGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0MnLCdTZXljaGVsbGVzJywnU2V5Y2hlbGxlcycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdTRCcsJ1N1ZGFuJywnU3VkYW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0UnLCdTd2VkZW4nLCdTd2VkZW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0cnLCdTaW5nYXBvcmUnLCdTaW5nYXBvcmUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0gnLCdTYWludCBIZWxlbmEnLCdTYWludCBIZWxlbmEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU0knLCdTbG92ZW5pYScsJ1Nsb3ZlbmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NKJywnU3ZhbGJhcmQgYW5kIEphbiBNYXllbiBJc2xhbmRzJywnU3ZhbGJhcmQgYW5kIEphbiBNYXllbiBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NLJywnU2xvdmFrIFJlcHVibGljJywnU2xvdmFrIFJlcHVibGljJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NMJywnU2llcnJhIExlb25lJywnU2llcnJhIExlb25lJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NNJywnU2FuIE1hcmlubycsJ1NhbiBNYXJpbm8nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU04nLCdTZW5lZ2FsJywnU2VuZWdhbCcsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdTTycsJ1NvbWFsaWEnLCdTb21hbGlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NSJywnU3VyaW5hbWUnLCdTdXJpbmFtZScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdTVCcsJ1NhaW50IFRvbWUgKFNhbyBUb21lKSBhbmQgUHJpbmNpcGUnLCdTYWludCBUb21lIChTYW8gVG9tZSkgYW5kIFByaW5jaXBlJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NVJywnRm9ybWVyIFVTU1InLCdGb3JtZXIgVVNTUicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdTVicsJ0VsIFNhbHZhZG9yJywnRWwgU2FsdmFkb3InLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnU1knLCdTeXJpYScsJ1N5cmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1NaJywnU3dhemlsYW5kJywnU3dhemlsYW5kJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1RDJywnVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzJywnVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1REJywnQ2hhZCcsJ0NoYWQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVEYnLCdGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLCdGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVEcnLCdUb2dvJywnVG9nbycsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdUSCcsJ1RoYWlsYW5kJywnVGhhaWxhbmQnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVEonLCdUYWRqaWtpc3RhbicsJ1RhZGppa2lzdGFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1RLJywnVG9rZWxhdScsJ1Rva2VsYXUnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVE0nLCdUdXJrbWVuaXN0YW4nLCdUdXJrbWVuaXN0YW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVE4nLCdUdW5pc2lhJywnVHVuaXNpYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdUTycsJ1RvbmdhJywnVG9uZ2EnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVFAnLCdFYXN0IFRpbW9yJywnRWFzdCBUaW1vcicsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdUUicsJ1R1cmtleScsJ1R1cmtleScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdUVCcsJ1RyaW5pZGFkIGFuZCBUb2JhZ28nLCdUcmluaWRhZCBhbmQgVG9iYWdvJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1RWJywnVHV2YWx1JywnVHV2YWx1JyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1RXJywnVGFpd2FuJywnVGFpd2FuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1RaJywnVGFuemFuaWEnLCdUYW56YW5pYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdVQScsJ1VrcmFpbmUnLCdVa3JhaW5lJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1VHJywnVWdhbmRhJywnVWdhbmRhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1VLJywnVW5pdGVkIEtpbmdkb20nLCdVbml0ZWQgS2luZ2RvbScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdVTScsJ1VTQSBNaW5vciBPdXRseWluZyBJc2xhbmRzJywnVVNBIE1pbm9yIE91dGx5aW5nIElzbGFuZHMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVVMnLCdVbml0ZWQgU3RhdGVzJywnVW5pdGVkIFN0YXRlcycsJ1VTQScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVVknLCdVcnVndWF5JywnVXJ1Z3VheScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdVWicsJ1V6YmVraXN0YW4nLCdVemJla2lzdGFuJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1ZBJywnVmF0aWNhbiBDaXR5IFN0YXRlJywnVmF0aWNhbiBDaXR5IFN0YXRlJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1ZDJywnU2FpbnQgVmluY2VudCBhbmQgR3JlbmFkaW5lcycsJ1NhaW50IFZpbmNlbnQgYW5kIEdyZW5hZGluZXMnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVkUnLCdWZW5lenVlbGEnLCdWZW5lenVlbGEnLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVkcnLCdWaXJnaW4gSXNsYW5kcyAoQnJpdGlzaCknLCdWaXJnaW4gSXNsYW5kcyAoQnJpdGlzaCknLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVkknLCdWaXJnaW4gSXNsYW5kcyAoVVNBKScsJ1ZpcmdpbiBJc2xhbmRzIChVU0EpJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1ZOJywnVmlldG5hbScsJ1ZpZXRuYW0nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnVlUnLCdWYW51YXR1JywnVmFudWF0dScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdXRicsJ1dhbGxpcyBhbmQgRnV0dW5hIElzbGFuZHMnLCdXYWxsaXMgYW5kIEZ1dHVuYSBJc2xhbmRzJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1dTJywnU2Ftb2EnLCdTYW1vYScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdZRScsJ1llbWVuJywnWWVtZW4nLE5VTEwpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfY291bnRyeWAgVkFMVUVTICgnWVQnLCdNYXlvdHRlJywnTWF5b3R0ZScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdZVScsJ1l1Z29zbGF2aWEnLCdZdWdvc2xhdmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1pBJywnU291dGggQWZyaWNhJywnU291dGggQWZyaWNhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1pNJywnWmFtYmlhJywnWmFtYmlhJyxOVUxMKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X2NvdW50cnlgIFZBTFVFUyAoJ1pSJywnWmFpcmUnLCdaYWlyZScsTlVMTCk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9jb3VudHJ5YCBWQUxVRVMgKCdaVycsJ1ppbWJhYndlJywnWmltYmFid2UnLE5VTEwpOw0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fbHVfbWVudV9zZXRgDQorLS0NCitJTlNFUlQgSU5UTyBgZm5fbHVfbWVudV9zZXRgIFZBTFVFUyAoJ0FQUCcsJ0FwcGxpY2F0aW9uIE1lbnUnKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBNRU5VX1NFVF9OQU1FPSdBcHBsaWNhdGlvbiBNZW51JzsNCisNCistLQ0KKy0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGZuX2x1X3ByaW9yaXR5YA0KKy0tDQorUkVQTEFDRSBJTlRPIGBmbl9sdV9wcmlvcml0eWAgVkFMVUVTICgxMCwnTG93JywnWScsMTApOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfcHJpb3JpdHlgIFZBTFVFUyAoMjAsJ05vcm1hbCcsJ1knLDIwKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3ByaW9yaXR5YCBWQUxVRVMgKDMwLCdIaWdoJywnWScsMzApOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfcHJpb3JpdHlgIFZBTFVFUyAoNDAsJ1VyZ2VudCcsJ1knLDQwKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3ByaW9yaXR5YCBWQUxVRVMgKDUwLCdGYXRhbCcsJ1knLDUwKTsNCisNCistLQ0KKy0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGZuX2x1X3N0YXRlYA0KKy0tDQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnQUsnLCdBSyAtIEFsYXNrYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0FMJywnQUwgLSBBbGFiYW1hJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnQVInLCdBUiAtIEFya2Fuc2FzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnQVonLCdBWiAtIEFyaXpvbmEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdDQScsJ0NBIC0gQ2FsaWZvcm5pYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0NPJywnQ08gLSBDb2xvcmFkbycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0NUJywnQ1QgLSBDb25uZWN0aWN1dCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0RDJywnREMgLSBEaXN0cmljdCBPZiBDb2x1bWJpYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0RFJywnREUgLSBEZWxhd2FyZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0ZMJywnRkwgLSBGbG9yaWRhJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnR0EnLCdHQSAtIEdlb3JnaWEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdISScsJ0hJIC0gSGF3YWlpJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnSUEnLCdJQSAtIElvd2EnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdJRCcsJ0lEIC0gSWRhaG8nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdJTCcsJ0lMIC0gSWxsaW5vaXMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdJTicsJ0lOIC0gSW5kaWFuYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ0tTJywnS1MgLSBLYW5zYXMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdLWScsJ0tZIC0gS2VudHVja3knKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdMQScsJ0xBIC0gTG91aXNpYW5hJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTUEnLCdNQSAtIE1hc3NhY2h1c2V0dHMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdNRCcsJ01EIC0gTWFyeWxhbmQnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdNRScsJ01FIC0gTWFpbmUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdNSScsJ01JIC0gTWljaGlnYW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdNTicsJ01OIC0gTWlubmVzb3RhJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTU8nLCdNTyAtIE1pc3NvdXJpJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTVMnLCdNUyAtIE1pc3Npc3NpcHBpJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTVQnLCdNVCAtIE1vbnRhbmEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdOQycsJ05DIC0gTm9ydGggQ2Fyb2xpbmEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdORCcsJ05EIC0gTm9ydGggRGFrb3RhJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTkUnLCdORSAtIE5lYnJhc2thJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTkgnLCdOSCAtIE5ldyBIYW1wc2hpcmUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdOSicsJ05KIC0gTmV3IEplcnNleScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ05NJywnTk0gLSBOZXcgTWV4aWNvJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnTlYnLCdOViAtIE5ldmFkYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ05ZJywnTlkgLSBOZXcgWW9yaycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ09IJywnT0ggLSBPaGlvJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnT0snLCdPSyAtIE9rbGFob21hJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnT1InLCdPUiAtIE9yZWdvbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ1BBJywnUEEgLSBQZW5uc3lsdmFuaWEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdQUicsJ1BSIC0gUHVlcnRvIFJpY28nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdSSScsJ1JJIC0gUmhvZGUgSXNsYW5kJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnU0MnLCdTQyAtIFNvdXRoIENhcm9saW5hJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnU0QnLCdTRCAtIFNvdXRoIERha290YScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ1ROJywnVE4gLSBUZW5uZXNzZWUnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdUWCcsJ1RYIC0gVGV4YXMnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdVVCcsJ1VUIC0gVXRhaCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ1ZBJywnVkEgLSBWaXJnaW5pYScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ1ZJJywnVkktVmlyZ2luIElzbGFuZCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fbHVfc3RhdGVgIFZBTFVFUyAoJ1ZUJywnVlQgLSBWZXJtb250Jyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnV0EnLCdXQSAtIFdhc2hpbmd0b24nKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdXSScsJ1dJIC0gV2lzY29uc2luJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9sdV9zdGF0ZWAgVkFMVUVTICgnV1YnLCdXViAtIFdlc3QgVmlyZ2luaWEnKTsNCitSRVBMQUNFIElOVE8gYGZuX2x1X3N0YXRlYCBWQUxVRVMgKCdXWScsJ1dZIC0gV3lvbWluZycpOw0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fbHVfdGFiX3NldGANCistLQ0KK0lOU0VSVCBJTlRPIGBmbl9sdV90YWJfc2V0YCBWQUxVRVMgKCdBUFAnLCdBcHBsaWNhdGlvbiBUYWJzJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX1NFVF9OQU1FPSdBcHBsaWNhdGlvbiBUYWJzJzsNCisNCistLQ0KKy0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGZuX2x1X3RpbWV6b25lYA0KKy0tDQorSU5TRVJUIElOVE8gYGZuX2x1X3RpbWV6b25lYCBWQUxVRVMgKDEwLCdVUy9FYXN0ZXJuJywnVVMvRWFzdGVybicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIFRJTUVaT05FX05BTUU9J1VTL0Vhc3Rlcm4nLCBUSU1FWk9ORV9WQUxVRT0nVVMvRWFzdGVybic7DQorSU5TRVJUIElOVE8gYGZuX2x1X3RpbWV6b25lYCBWQUxVRVMgKDIwLCdVUy9DZW50cmFsJywnVVMvQ2VudHJhbCcpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIFRJTUVaT05FX05BTUU9J1VTL0NlbnRyYWwnLCBUSU1FWk9ORV9WQUxVRT0nVVMvQ2VudHJhbCc7DQorSU5TRVJUIElOVE8gYGZuX2x1X3RpbWV6b25lYCBWQUxVRVMgKDMwLCdVUy9Nb3VudGFpbicsJ1VTL01vdW50YWluJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVElNRVpPTkVfTkFNRT0nVVMvTW91bnRhaW4nLCBUSU1FWk9ORV9WQUxVRT0nVVMvTW91bnRhaW4nOw0KK0lOU0VSVCBJTlRPIGBmbl9sdV90aW1lem9uZWAgVkFMVUVTICg0MCwnVVMvQXJpem9uYScsJ0FtZXJpY2EvUGhvZW5peCcpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIFRJTUVaT05FX05BTUU9J1VTL0FyaXpvbmEnLCBUSU1FWk9ORV9WQUxVRT0nQW1lcmljYS9QaG9lbml4JzsNCitJTlNFUlQgSU5UTyBgZm5fbHVfdGltZXpvbmVgIFZBTFVFUyAoNTAsJ1VTL1BhY2lmaWMnLCdVUy9QYWNpZmljJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVElNRVpPTkVfTkFNRT0nVVMvUGFjaWZpYycsIFRJTUVaT05FX1ZBTFVFPSdVUy9QYWNpZmljJzsNCitJTlNFUlQgSU5UTyBgZm5fbHVfdGltZXpvbmVgIFZBTFVFUyAoNjAsJ1VTL0FsYXNrYScsJ1VTL0FsYXNrYScpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIFRJTUVaT05FX05BTUU9J1VTL0FsYXNrYScsIFRJTUVaT05FX1ZBTFVFPSdVUy9BbGFza2EnOw0KK0lOU0VSVCBJTlRPIGBmbl9sdV90aW1lem9uZWAgVkFMVUVTICg3MCwnVVMvSGF3YWlpJywnVVMvSGF3YWlpJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVElNRVpPTkVfTkFNRT0nVVMvSGF3YWlpJywgVElNRVpPTkVfVkFMVUU9J1VTL0hhd2FpaSc7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl9tZW51YA0KKy0tDQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoMSwnUm9vdCcsTlVMTCwxMCxOVUxMLCdtZW51X2hvbWUnLCdOJyxOVUxMLE5VTEwsTlVMTCxOVUxMLCdBUFAnLCdOJyxOVUxMKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBMQUJFTD0nUm9vdCcsIFBBUkVOVF9JRD1OVUxMLCBTT1JUX09SREVSPTEwLCBBQ1RJT049TlVMTCwgRlVOQ1RJT05fQ0Q9J21lbnVfaG9tZScsIEFDVElWRV9ZTj0nTicsIFNFUlZMRVQ9TlVMTCwgUVVFUllfU1RSSU5HPU5VTEwsIEVYVEVSTkFMX1VSTD1OVUxMLCBUQVJHRVQ9TlVMTCwgTUVOVV9TRVRfQ0Q9J0FQUCcsIFNFUEFSQVRPUl9ZTj0nTicsIElNQUdFX1NSQz1OVUxMOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDIsJ1ZJRCBIb21lJywxLDEwLCd3ZWxjb21lLmh0bScsJ21lbnVfaG9tZScsJ1knLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCdpY29uLWxvY2F0aW9uLXBpbicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdWSUQgSG9tZScsIFBBUkVOVF9JRD0xLCBTT1JUX09SREVSPTEwLCBBQ1RJT049J3dlbGNvbWUuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfaG9tZScsIEFDVElWRV9ZTj0nWScsIFNFUlZMRVQ9TlVMTCwgUVVFUllfU1RSSU5HPU5VTEwsIEVYVEVSTkFMX1VSTD1OVUxMLCBUQVJHRVQ9TlVMTCwgTUVOVV9TRVRfQ0Q9J0FQUCcsIFNFUEFSQVRPUl9ZTj0nTicsIElNQUdFX1NSQz0naWNvbi1sb2NhdGlvbi1waW4nOw0KKw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDMsJ1NlYXJjaCBmb3IgRXhpc3RpbmcgU2VydmljZSBJbnN0YW5jZXMnLDEsMTAsJ3NlcnZpY2VNb2RlbHMuaHRtIy9pbnN0YW5jZXMvc2VydmljZXMnLCdtZW51X3NlYXJjaGV4aXN0aW5nJywnWScsTlVMTCxOVUxMLE5VTEwsTlVMTCwnQVBQJywnTicsJ2ljb24tbG9jYXRpb24tcGluJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J1NlYXJjaCBmb3IgRXhpc3RpbmcgU2VydmljZSBJbnN0YW5jZXMnLCBQQVJFTlRfSUQ9MSwgU09SVF9PUkRFUj0xMCwgQUNUSU9OPSdzZXJ2aWNlTW9kZWxzLmh0bSMvaW5zdGFuY2VzL3NlcnZpY2VzJywgRlVOQ1RJT05fQ0Q9J21lbnVfc2VhcmNoZXhpc3RpbmcnLCBBQ1RJVkVfWU49J1knLCBTRVJWTEVUPU5VTEwsIFFVRVJZX1NUUklORz1OVUxMLCBFWFRFUk5BTF9VUkw9TlVMTCwgVEFSR0VUPU5VTEwsIE1FTlVfU0VUX0NEPSdBUFAnLCBTRVBBUkFUT1JfWU49J04nLCBJTUFHRV9TUkM9J2ljb24tbG9jYXRpb24tcGluJzsNCitJTlNFUlQgSU5UTyBgZm5fbWVudWAgVkFMVUVTICgxMCwnQWRtaW4nLDEsMTEwLCdyb2xlX2xpc3QuaHRtJywnbWVudV9hZG1pbicsJ1knLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCdpY29uLXNldHRpbmdzJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J0FkbWluJywgUEFSRU5UX0lEPTEsIFNPUlRfT1JERVI9MTEwLCBBQ1RJT049J2FkbWluJywgRlVOQ1RJT05fQ0Q9J21lbnVfYWRtaW4nLCBBQ1RJVkVfWU49J1knLCBTRVJWTEVUPU5VTEwsIFFVRVJZX1NUUklORz1OVUxMLCBFWFRFUk5BTF9VUkw9TlVMTCwgVEFSR0VUPU5VTEwsIE1FTlVfU0VUX0NEPSdBUFAnLCBTRVBBUkFUT1JfWU49J04nLCBJTUFHRV9TUkM9J2ljb24tc2V0dGluZ3MnOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDEzLCdWSUQgTG9nb3V0JywxLDEzMCwnYXBwX2xvZ291dC5odG0nLCdtZW51X2xvZ291dCcsJ04nLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCdpY29uLXNpZ24tb3V0JykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J1ZJRCBMb2dvdXQnLCBQQVJFTlRfSUQ9MSwgU09SVF9PUkRFUj0xMzAsIEFDVElPTj0nYXBwX2xvZ291dC5odG0nLCBGVU5DVElPTl9DRD0nbWVudV9sb2dvdXQnLCBBQ1RJVkVfWU49J04nLCBTRVJWTEVUPU5VTEwsIFFVRVJZX1NUUklORz1OVUxMLCBFWFRFUk5BTF9VUkw9TlVMTCwgVEFSR0VUPU5VTEwsIE1FTlVfU0VUX0NEPSdBUFAnLCBTRVBBUkFUT1JfWU49J04nLCBJTUFHRV9TUkM9J2ljb24tc2lnbi1vdXQnOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDQyLCdCcm93c2UgU0RDIFNlcnZpY2UgTW9kZWxzJywxLDEwLCdzZXJ2aWNlTW9kZWxzLmh0bScsJ21lbnVfc2VydmljZW1vZGVscycsJ1knLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCdpY29uLWxvY2F0aW9uLXBpbicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdCcm93c2UgU0RDIFNlcnZpY2UgSW5zdGFuY2VzJywgUEFSRU5UX0lEPTEsIFNPUlRfT1JERVI9MTAsIEFDVElPTj0nc2VydmljZU1vZGVscy5odG0nLCBGVU5DVElPTl9DRD0nbWVudV9zZXJ2aWNlbW9kZWxzJywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPSdpY29uLWxvY2F0aW9uLXBpbic7DQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoNDEsJ0NyZWF0ZSBOZXcgU2VydmljZSBJbnN0YW5jZScsMSwxMCwnc2VydmljZU1vZGVscy5odG0jL2luc3RhbmNlcy9zdWJzY3JpYmVycycsJ21lbnVfbmV3c2VyaW5zdGFuY2UnLCdZJyxOVUxMLE5VTEwsTlVMTCxOVUxMLCdBUFAnLCdOJywnaWNvbi1sb2NhdGlvbi1waW4nKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBMQUJFTD0nQ3JlYXRlIE5ldyBTZXJ2aWNlIEluc3RhbmNlJywgUEFSRU5UX0lEPTEsIFNPUlRfT1JERVI9MTAsIEFDVElPTj0nc2VydmljZU1vZGVscy5odG0jL2luc3RhbmNlcy9zdWJzY3JpYmVycycsIEZVTkNUSU9OX0NEPSdtZW51X25ld3Nlcmluc3RhbmNlJywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPSdpY29uLWxvY2F0aW9uLXBpbic7DQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoNDMsJ1ZpZXcgTG9nJywxLDEwLCd2aWV3bG9nLmh0bScsJ21lbnVfdmlld2xvZycsJ04nLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCdpY29uLWxvY2F0aW9uLXBpbicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdWaWV3IExvZycsIFBBUkVOVF9JRD0xLCBTT1JUX09SREVSPTEwLCBBQ1RJT049J3ZpZXdsb2cuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfdmlld2xvZycsIEFDVElWRV9ZTj0nWScsIFNFUlZMRVQ9TlVMTCwgUVVFUllfU1RSSU5HPU5VTEwsIEVYVEVSTkFMX1VSTD1OVUxMLCBUQVJHRVQ9TlVMTCwgTUVOVV9TRVRfQ0Q9J0FQUCcsIFNFUEFSQVRPUl9ZTj0nTicsIElNQUdFX1NSQz0naWNvbi1sb2NhdGlvbi1waW4nOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDEwMSwnUm9sZXMnLDEwLDIwLCdhZG1pbicsJ21lbnVfYWRtaW4nLCdZJyxOVUxMLE5VTEwsTlVMTCxOVUxMLCdBUFAnLCdOJywnL3N0YXRpYy9mdXNpb24vaW1hZ2VzL3VzZXJzLnBuZycpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdSb2xlcycsIFBBUkVOVF9JRD0xMCwgU09SVF9PUkRFUj0yMCwgQUNUSU9OPSdhZG1pbicsIEZVTkNUSU9OX0NEPSdtZW51X2FkbWluJywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPScvc3RhdGljL2Z1c2lvbi9pbWFnZXMvdXNlcnMucG5nJzsNCitJTlNFUlQgSU5UTyBgZm5fbWVudWAgVkFMVUVTICgxMDIsJ1JvbGUgRnVuY3Rpb25zJywxMCwzMCwnYWRtaW4jL3JvbGVfZnVuY3Rpb25fbGlzdCcsJ21lbnVfYWRtaW4nLCdZJyxOVUxMLE5VTEwsTlVMTCxOVUxMLCdBUFAnLCdOJyxOVUxMKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBMQUJFTD0nUm9sZSBGdW5jdGlvbnMnLCBQQVJFTlRfSUQ9MTAsIFNPUlRfT1JERVI9MzAsIEFDVElPTj0nYWRtaW4jL3JvbGVfZnVuY3Rpb25fbGlzdCcsIEZVTkNUSU9OX0NEPSdtZW51X2FkbWluJywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPU5VTEw7DQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoMTAzLCdCcm9hZGNhc3QgTWVzc2FnZXMnLDEwLDUwLCdhZG1pbiMvYnJvYWRjYXN0X2xpc3QnLCdtZW51X2FkbWluJywnTicsTlVMTCxOVUxMLE5VTEwsTlVMTCwnQVBQJywnTicsJy9zdGF0aWMvZnVzaW9uL2ltYWdlcy9idWJibGUucG5nJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J0Jyb2FkY2FzdCBNZXNzYWdlcycsIFBBUkVOVF9JRD0xMCwgU09SVF9PUkRFUj01MCwgQUNUSU9OPSdhZG1pbiMvYnJvYWRjYXN0X2xpc3QnLCBGVU5DVElPTl9DRD0nbWVudV9hZG1pbicsIEFDVElWRV9ZTj0nTicsIFNFUlZMRVQ9TlVMTCwgUVVFUllfU1RSSU5HPU5VTEwsIEVYVEVSTkFMX1VSTD1OVUxMLCBUQVJHRVQ9TlVMTCwgTUVOVV9TRVRfQ0Q9J0FQUCcsIFNFUEFSQVRPUl9ZTj0nTicsIElNQUdFX1NSQz0nL3N0YXRpYy9mdXNpb24vaW1hZ2VzL2J1YmJsZS5wbmcnOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDEwNSwnQ2FjaGUgQWRtaW4nLDEwLDQwLCdhZG1pbiMvamNzX2FkbWluJywnbWVudV9hZG1pbicsJ04nLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCcvc3RhdGljL2Z1c2lvbi9pbWFnZXMvY2FjaGUucG5nJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J0NhY2hlIEFkbWluJywgUEFSRU5UX0lEPTEwLCBTT1JUX09SREVSPTQwLCBBQ1RJT049J2FkbWluIy9qY3NfYWRtaW4nLCBGVU5DVElPTl9DRD0nbWVudV9hZG1pbicsIEFDVElWRV9ZTj0nTicsIFNFUlZMRVQ9TlVMTCwgUVVFUllfU1RSSU5HPU5VTEwsIEVYVEVSTkFMX1VSTD1OVUxMLCBUQVJHRVQ9TlVMTCwgTUVOVV9TRVRfQ0Q9J0FQUCcsIFNFUEFSQVRPUl9ZTj0nTicsIElNQUdFX1NSQz0nL3N0YXRpYy9mdXNpb24vaW1hZ2VzL2NhY2hlLnBuZyc7DQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoMTA2LCdMb2NrL1VubG9jayBBcHBsaWNhdGlvbicsMTAsNjAsJ2FwcGxpY2F0aW9uX2xvY2tvdXQuaHRtJywnbWVudV9hZG1pbicsJ04nLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCcvc3RhdGljL2Z1c2lvbi9pbWFnZXMvZGVjcnlwdGVkLnBuZycpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdMb2NrL1VubG9jayBBcHBsaWNhdGlvbicsIFBBUkVOVF9JRD0xMCwgU09SVF9PUkRFUj02MCwgQUNUSU9OPSdhcHBsaWNhdGlvbl9sb2Nrb3V0Lmh0bScsIEZVTkNUSU9OX0NEPSdtZW51X2FkbWluJywgQUNUSVZFX1lOPSdOJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPScvc3RhdGljL2Z1c2lvbi9pbWFnZXMvZGVjcnlwdGVkLnBuZyc7DQorSU5TRVJUIElOVE8gYGZuX21lbnVgIFZBTFVFUyAoMTA4LCdVc2FnZScsMTAsODAsJ2FkbWluIy91c2FnZV9saXN0JywnbWVudV9hZG1pbicsJ04nLE5VTEwsTlVMTCxOVUxMLE5VTEwsJ0FQUCcsJ04nLCcvc3RhdGljL2Z1c2lvbi9pbWFnZXMvdXNlcnMucG5nJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgTEFCRUw9J1VzYWdlJywgUEFSRU5UX0lEPTEwLCBTT1JUX09SREVSPTgwLCBBQ1RJT049J2FkbWluIy91c2FnZV9saXN0JywgRlVOQ1RJT05fQ0Q9J21lbnVfYWRtaW4nLCBBQ1RJVkVfWU49J1knLCBTRVJWTEVUPU5VTEwsIFFVRVJZX1NUUklORz1OVUxMLCBFWFRFUk5BTF9VUkw9TlVMTCwgVEFSR0VUPU5VTEwsIE1FTlVfU0VUX0NEPSdBUFAnLCBTRVBBUkFUT1JfWU49J04nLCBJTUFHRV9TUkM9Jy9zdGF0aWMvZnVzaW9uL2ltYWdlcy91c2Vycy5wbmcnOw0KK0lOU0VSVCBJTlRPIGBmbl9tZW51YCBWQUxVRVMgKDEwOSwgJ1ZORiBDaGFuZ2VzJywgMSwgMTEsICdzZXJ2aWNlTW9kZWxzLmh0bSMvY2hhbmdlLW1hbmFnZW1lbnQnLCAnbWVudV9jaGFuZ2VtYW5hZ2VtZW50JywgJ1knLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCAnQVBQJywgJ04nLCAnaWNvbi1sb2NhdGlvbi1waW4nKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBMQUJFTD0nVk5GIENoYW5nZXMnLCBQQVJFTlRfSUQ9MSwgU09SVF9PUkRFUj0xMSwgQUNUSU9OPSdzZXJ2aWNlTW9kZWxzLmh0bSMvY2hhbmdlLW1hbmFnZW1lbnQnLCBGVU5DVElPTl9DRD0nbWVudV9jaGFuZ2VtYW5hZ2VtZW50JywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPSdpY29uLWxvY2F0aW9uLXBpbic7DQorLS1JTlNFUlQgSU5UTyBgZm5fbWVudWAgVkFMVUVTICgxMTAsICdUZXN0IEVudmlyb25tZW50cycsIDEsIDEyLCAnc2VydmljZU1vZGVscy5odG0jL3Rlc3RFbnZpcm9ubWVudHMnLCAnbWVudV90ZXN0ZW52aXJvbm1lbnQnLCAnWScsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICdBUFAnLCAnTicsICdpY29uLWxvY2F0aW9uLXBpbicpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIExBQkVMPSdUZXN0IEVudmlyb25tZW50cycsIFBBUkVOVF9JRD0xLCBTT1JUX09SREVSPTEyLCBBQ1RJT049J3NlcnZpY2VNb2RlbHMuaHRtIy90ZXN0RW52aXJvbm1lbnRzJywgRlVOQ1RJT05fQ0Q9J21lbnVfdGVzdGVudmlyb25tZW50JywgQUNUSVZFX1lOPSdZJywgU0VSVkxFVD1OVUxMLCBRVUVSWV9TVFJJTkc9TlVMTCwgRVhURVJOQUxfVVJMPU5VTEwsIFRBUkdFVD1OVUxMLCBNRU5VX1NFVF9DRD0nQVBQJywgU0VQQVJBVE9SX1lOPSdOJywgSU1BR0VfU1JDPSdpY29uLWxvY2F0aW9uLXBpbic7DQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl9yZXN0cmljdGVkX3VybGANCistLQ0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2F0dGFjaG1lbnQuaHRtJywnbWVudV9hZG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2Jyb2FkY2FzdC5odG0nLCdtZW51X2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnZmlsZV91cGxvYWQuaHRtJywnbWVudV9hZG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2pvYi5odG0nLCdtZW51X2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncm9sZS5odG0nLCdtZW51X2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncm9sZV9mdW5jdGlvbi5odG0nLCdtZW51X2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGVzdC5odG0nLCdtZW51X2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnc2VydmljZU1vZGVscy5odG0nLCdtZW51X3NlcnZpY2Vtb2RlbHMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdhc3luY190ZXN0Lmh0bScsJ21lbnVfaG9tZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2NoYXRXaW5kb3cuaHRtJywnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnY29udGFjdF9saXN0Lmh0bScsJ21lbnVfaG9tZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2N1c3RvbWVyX2R5bmFtaWNfbGlzdC5odG0nLCdtZW51X2hvbWUnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdldmVudC5odG0nLCdtZW51X2hvbWUnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdldmVudF9saXN0Lmh0bScsJ21lbnVfaG9tZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ21vYmlsZV93ZWxjb21lLmh0bScsJ21lbnVfaG9tZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3NhbXBsZV9tYXAuaHRtJywnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGVtcGxhdGUuanNwJywnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnd2VsY29tZS5odG0nLCdtZW51X2hvbWUnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCd6a2F1JywnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnaXRyYWNrZXJfYXNzaWduLmh0bScsJ21lbnVfaXRyYWNrZXInKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdpdHJhY2tlcl9ieWFzc2lnbmVlLmh0bScsJ21lbnVfaXRyYWNrZXInKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdpdHJhY2tlcl9jcmVhdGUuaHRtJywnbWVudV9pdHJhY2tlcicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2l0cmFja2VyX3VwZGF0ZS5odG0nLCdtZW51X2l0cmFja2VyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnbWFuYWdlX2xpY2Vuc2UuaHRtJywnbWVudV9pdHJhY2tlcicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3N1cHBvcnRfdGlja2V0Lmh0bScsJ21lbnVfaXRyYWNrZXInKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdqYnBtX2Rlc2lnbmVyLmh0bScsJ21lbnVfam9iX2NyZWF0ZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2picG1fZHJvb2xzLmh0bScsJ21lbnVfam9iX2NyZWF0ZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3Byb2Nlc3Nfam9iLmh0bScsJ21lbnVfam9iX2NyZWF0ZScpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ25vdmFtYXBfY29udHJvbGxlci5odG0nLCdtZW51X21hcCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2NyZWF0ZW5ld3NlcnZpY2VpbnN0YW5jZS5odG0nLCdtZW51X25ld3Nlcmluc3RhbmNlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncHJvZmlsZS5odG0nLCdtZW51X3Byb2ZpbGVfY3JlYXRlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncmFwdG9yLmh0bScsJ21lbnVfcmVwb3J0cycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3JhcHRvcjIuaHRtJywnbWVudV9yZXBvcnRzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncmFwdG9yX2Jsb2JfZXh0cmFjdC5odG0nLCdtZW51X3JlcG9ydHMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdyYXB0b3JfZW1haWxfYXR0YWNobWVudC5odG0nLCdtZW51X3JlcG9ydHMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdyYXB0b3Jfc2VhcmNoLmh0bScsJ21lbnVfcmVwb3J0cycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3JlcG9ydF9saXN0Lmh0bScsJ21lbnVfcmVwb3J0cycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2dhdWdlLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnZ21hcF9jb250cm9sbGVyLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnZ21hcF9mcmFtZS5odG0nLCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ21hcC5odG0nLCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ21hcF9kb3dubG9hZC5odG0nLCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ21hcF9ncmlkX3NlYXJjaC5odG0nLCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3NhbXBsZV9hbmltYXRlZF9tYXAuaHRtJywnbWVudV90YWInKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdzYW1wbGVfaGVhdF9tYXAuaHRtJywnbWVudV90YWInKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdzYW1wbGVfaGVhdF9tYXBfbm9faGVhZGVyLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnc2FtcGxlX21hcF8yLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnc2FtcGxlX21hcF8zLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGFiMl9zdWIxLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGFiMl9zdWIyX2xpbmsxLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGFiMl9zdWIyX2xpbmsyLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGFiMl9zdWIzLmh0bScsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgndGFiMy5odG0nLCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ3RhYjQuaHRtJywnbWVudV90YWInKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCd2aWV3bG9nLmh0bScsJ21lbnVfdmlld2xvZycpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2JkX29wdGltYS5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnYmRfb3B0aW1hX2ludGVyYWN0aXZlLmh0bScsJ3F1YW50dW1fYmQnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdiZF9wMnQuaHRtJywncXVhbnR1bV9iZCcpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2dyaWRfaGVhdG1hcC5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnaGl2ZS5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnaGl2ZWNvbmZpZy5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnaGl2ZWNvbmZpZ19wb3B1cC5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnaGl2ZV9zZWFyY2guaHRtJywncXVhbnR1bV9iZCcpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2hpdmVfc2VhcmNoX3BvcHVwLmh0bScsJ3F1YW50dW1fYmQnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdqYnBtVGVzdFByb2Nlc3MuaHRtJywncXVhbnR1bV9iZCcpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcmVzdHJpY3RlZF91cmxgIFZBTFVFUyAoJ2pvYl9wcm9ncmVzcy5odG0nLCdxdWFudHVtX2JkJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgnbWFwcmVkdWNlLmh0bScsJ3F1YW50dW1fYmQnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdtYXByZWR1Y2Vfc2VhcmNoLmh0bScsJ3F1YW50dW1fYmQnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdyYXB0b3IuaHRtJywndmlld19yZXBvcnRzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yZXN0cmljdGVkX3VybGAgVkFMVUVTICgncmFwdG9yX2Jsb2JfZXh0cmFjdC5odG0nLCd2aWV3X3JlcG9ydHMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3Jlc3RyaWN0ZWRfdXJsYCBWQUxVRVMgKCdzZXJ2aWNlTW9kZWxzLmh0bScsJ21lbnVfc2VydmljZW1vZGVscycpOw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fcm9sZWANCistLQ0KK0lOU0VSVCBJTlRPIGBmbl9yb2xlYCBWQUxVRVMgKDEsJ1N5c3RlbSBBZG1pbmlzdHJhdG9yJywnWScsMSkgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgUk9MRV9OQU1FPSdTeXN0ZW0gQWRtaW5pc3RyYXRvcicsIEFDVElWRV9ZTj0nWScsIFBSSU9SSVRZPTE7DQorSU5TRVJUIElOVE8gYGZuX3JvbGVgIFZBTFVFUyAoMTYsJ1N0YW5kYXJkIFVzZXInLCdZJyw1KSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBST0xFX05BTUU9J1N0YW5kYXJkIFVzZXInLCBBQ1RJVkVfWU49J1knLCBQUklPUklUWT01Ow0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fcm9sZV9jb21wb3NpdGVgDQorLS0NCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfY29tcG9zaXRlYCBWQUxVRVMgKDEsMTYpOw0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fcm9sZV9mdW5jdGlvbmANCistLQ0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdkb2NsaWInKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnZG9jbGliX2FkbWluJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ2xvZ2luJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfYWRtaW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9hamF4Jyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfc2VydmljZW1vZGVscycpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X2N1c3RvbWVyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfY3VzdG9tZXJfY3JlYXRlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfZmVlZGJhY2snKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9oZWxwJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfaGl2ZWNvbmZpZycpOw0KKy0tIFJFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X2hpdmVjb25maWdfY3JlYXRlJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfaGl2ZWNvbmZpZ19zZWFyY2gnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfaXRyYWNrZXInKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9pdHJhY2tlcl9hZG1pbicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X2pvYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X2pvYl9jcmVhdGUnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9sb2dvdXQnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9tYXByZWR1Y2UnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9tYXByZWR1Y2VfY3JlYXRlJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfbWFwcmVkdWNlX3NlYXJjaCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X25ld3Nlcmluc3RhbmNlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfbm90ZXMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9wcm9jZXNzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfcHJvZmlsZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X3Byb2ZpbGVfY3JlYXRlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfcHJvZmlsZV9pbXBvcnQnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9yZXBvcnRzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfc2FtcGxlJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfdGFiJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDEsJ21lbnVfdGVzdCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X3ZpZXdsb2cnKTsNCistLSBSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwncXVhbnR1bV9iZCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbG9naW4nKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMTYsJ21lbnVfYWpheCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbWVudV9zZXJ2aWNlbW9kZWxzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X2N1c3RvbWVyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X2N1c3RvbWVyX2NyZWF0ZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbWVudV9ob21lJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X2l0cmFja2VyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X2xvZ291dCcpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbWVudV9tYXAnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMTYsJ21lbnVfbmV3c2VyaW5zdGFuY2UnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMTYsJ21lbnVfcHJvZmlsZScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbWVudV9yZXBvcnRzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X3RhYicpOw0KK1JFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxNiwnbWVudV92aWV3bG9nJyk7DQorLS0gUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdxdWFudHVtX2JkJyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKCcxJywgJ21lbnVfc2VhcmNoZXhpc3RpbmcnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoJzE2JywgJ21lbnVfc2VhcmNoZXhpc3RpbmcnKTsNCitSRVBMQUNFIElOVE8gYGZuX3JvbGVfZnVuY3Rpb25gIFZBTFVFUyAoMSwnbWVudV9jaGFuZ2VtYW5hZ2VtZW50Jyk7DQorUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X2NoYW5nZW1hbmFnZW1lbnQnKTsNCistLVJFUExBQ0UgSU5UTyBgZm5fcm9sZV9mdW5jdGlvbmAgVkFMVUVTICgxLCdtZW51X3Rlc3RlbnZpcm9ubWVudCcpOw0KKy0tUkVQTEFDRSBJTlRPIGBmbl9yb2xlX2Z1bmN0aW9uYCBWQUxVRVMgKDE2LCdtZW51X3Rlc3RlbnZpcm9ubWVudCcpOw0KKw0KK3VwZGF0ZSBmbl9tZW51IHNldCBhY3RpdmVfeW4gPSAnWScgd2hlcmUgbGFiZWwgPSAnQWRtaW4nOw0KK3VwZGF0ZSBmbl9tZW51IHNldCBhY3RpdmVfeW4gPSAnWScgd2hlcmUgbGFiZWwgPSAnUm9vdCc7DQordXBkYXRlIGZuX21lbnUgc2V0IGFjdGlvbiA9ICdhZG1pbicgd2hlcmUgbGFiZWwgPSAnQWRtaW4nOw0KKw0KKy0tDQorLS0gRHVtcGluZyBkYXRhIGZvciB0YWJsZSBgZm5fdGFiYA0KKy0tDQorSU5TRVJUIElOVE8gYGZuX3RhYmAgVkFMVUVTICgnVEFCMScsJ1RhYiAxJywnVGFiIDEgSW5mb3JtYXRpb24nLCd0YWIxLmh0bScsJ21lbnVfdGFiJywnWScsMTAsTlVMTCwnQVBQJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX05BTUU9J1RhYiAxJywgVEFCX0RFU0NSPSdUYWIgMSBJbmZvcm1hdGlvbicsIEFDVElPTj0ndGFiMS5odG0nLCBGVU5DVElPTl9DRD0nbWVudV90YWInLCBBQ1RJVkVfWU49J1knLCBTT1JUX09SREVSPTEwLCBQQVJFTlRfVEFCX0NEPU5VTEwsIFRBQl9TRVRfQ0Q9J0FQUCc7DQorSU5TRVJUIElOVE8gYGZuX3RhYmAgVkFMVUVTICgnVEFCMicsJ1RhYiAyJywnVGFiIDIgSW5mb3JtYXRpb24nLCd0YWIyX3N1YjEuaHRtJywnbWVudV90YWInLCdZJywyMCxOVUxMLCdBUFAnKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBUQUJfTkFNRT0nVGFiIDInLCBUQUJfREVTQ1I9J1RhYiAyIEluZm9ybWF0aW9uJywgQUNUSU9OPSd0YWIyX3N1YjEuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfdGFiJywgQUNUSVZFX1lOPSdZJywgU09SVF9PUkRFUj0yMCwgUEFSRU5UX1RBQl9DRD1OVUxMLCBUQUJfU0VUX0NEPSdBUFAnOw0KK0lOU0VSVCBJTlRPIGBmbl90YWJgIFZBTFVFUyAoJ1RBQjJfU1VCMScsJ1N1YiBUYWIgMScsJ1N1YiBUYWIgMSBJbmZvcm1hdGlvbicsJ3RhYjJfc3ViMS5odG0nLCdtZW51X3RhYicsJ1knLDEwLCdUQUIyJywnQVBQJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX05BTUU9J1N1YiBUYWIgMScsIFRBQl9ERVNDUj0nU3ViIFRhYiAxIEluZm9ybWF0aW9uJywgQUNUSU9OPSd0YWIyX3N1YjEuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfdGFiJywgQUNUSVZFX1lOPSdZJywgU09SVF9PUkRFUj0xMCwgUEFSRU5UX1RBQl9DRD0nVEFCMicsIFRBQl9TRVRfQ0Q9J0FQUCc7DQorSU5TRVJUIElOVE8gYGZuX3RhYmAgVkFMVUVTICgnVEFCMl9TVUIxX1MxJywnTGVmdCBUYWIgMScsJ1N1YiAtIFN1YiBUYWIgMSBJbmZvcm1hdGlvbicsJ3RhYjJfc3ViMS5odG0nLCdtZW51X3RhYicsJ1knLDEwLCdUQUIyX1NVQjEnLCdBUFAnKSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBUQUJfTkFNRT0nTGVmdCBUYWIgMScsIFRBQl9ERVNDUj0nU3ViIC0gU3ViIFRhYiAxIEluZm9ybWF0aW9uJywgQUNUSU9OPSd0YWIyX3N1YjEuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfdGFiJywgQUNUSVZFX1lOPSdZJywgU09SVF9PUkRFUj0xMCwgUEFSRU5UX1RBQl9DRD0nVEFCMl9TVUIxJywgVEFCX1NFVF9DRD0nQVBQJzsNCitJTlNFUlQgSU5UTyBgZm5fdGFiYCBWQUxVRVMgKCdUQUIyX1NVQjInLCdTdWIgVGFiIDInLCdTdWIgVGFiIDIgSW5mb3JtYXRpb24nLCd0YWIyX3N1YjIuaHRtJywnbWVudV90YWInLCdZJywyMCwnVEFCMicsJ0FQUCcpIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIFRBQl9OQU1FPSdTdWIgVGFiIDInLCBUQUJfREVTQ1I9J1N1YiBUYWIgMiBJbmZvcm1hdGlvbicsIEFDVElPTj0ndGFiMl9zdWIyLmh0bScsIEZVTkNUSU9OX0NEPSdtZW51X3RhYicsIEFDVElWRV9ZTj0nWScsIFNPUlRfT1JERVI9MjAsIFBBUkVOVF9UQUJfQ0Q9J1RBQjInLCBUQUJfU0VUX0NEPSdBUFAnOw0KK0lOU0VSVCBJTlRPIGBmbl90YWJgIFZBTFVFUyAoJ1RBQjJfU1VCMycsJ1N1YiBUYWIgMycsJ1N1YiBUYWIgMyBJbmZvcm1hdGlvbicsJ3RhYjJfc3ViMy5odG0nLCdtZW51X3RhYicsJ1knLDMwLCdUQUIyJywnQVBQJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX05BTUU9J1N1YiBUYWIgMycsIFRBQl9ERVNDUj0nU3ViIFRhYiAzIEluZm9ybWF0aW9uJywgQUNUSU9OPSd0YWIyX3N1YjMuaHRtJywgRlVOQ1RJT05fQ0Q9J21lbnVfdGFiJywgQUNUSVZFX1lOPSdZJywgU09SVF9PUkRFUj0zMCwgUEFSRU5UX1RBQl9DRD0nVEFCMicsIFRBQl9TRVRfQ0Q9J0FQUCc7DQorSU5TRVJUIElOVE8gYGZuX3RhYmAgVkFMVUVTICgnVEFCMycsJ1RhYiAzJywnVGFiIDMgSW5mb3JtYXRpb24nLCd0YWIzLmh0bScsJ21lbnVfdGFiJywnWScsMzAsTlVMTCwnQVBQJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX05BTUU9J1RhYiAzJywgVEFCX0RFU0NSPSdUYWIgMyBJbmZvcm1hdGlvbicsIEFDVElPTj0ndGFiMy5odG0nLCBGVU5DVElPTl9DRD0nbWVudV90YWInLCBBQ1RJVkVfWU49J1knLCBTT1JUX09SREVSPTMwLCBQQVJFTlRfVEFCX0NEPU5VTEwsIFRBQl9TRVRfQ0Q9J0FQUCc7DQorSU5TRVJUIElOVE8gYGZuX3RhYmAgVkFMVUVTICgnVEFCNCcsJ1RhYiA0JywnVGFiIDQgSW5mb3JtYXRpb24nLCd0YWI0Lmh0bScsJ21lbnVfdGFiJywnWScsNDAsTlVMTCwnQVBQJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgVEFCX05BTUU9J1RhYiA0JywgVEFCX0RFU0NSPSdUYWIgNCBJbmZvcm1hdGlvbicsIEFDVElPTj0ndGFiNC5odG0nLCBGVU5DVElPTl9DRD0nbWVudV90YWInLCBBQ1RJVkVfWU49J1knLCBTT1JUX09SREVSPTQwLCBQQVJFTlRfVEFCX0NEPU5VTEwsIFRBQl9TRVRfQ0Q9J0FQUCc7DQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl90YWJfc2VsZWN0ZWRgDQorLS0NCitSRVBMQUNFIElOVE8gYGZuX3RhYl9zZWxlY3RlZGAgVkFMVUVTICgnVEFCMScsJ3RhYjEnKTsNCitSRVBMQUNFIElOVE8gYGZuX3RhYl9zZWxlY3RlZGAgVkFMVUVTICgnVEFCMicsJ3RhYjJfc3ViMScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fdGFiX3NlbGVjdGVkYCBWQUxVRVMgKCdUQUIyJywndGFiMl9zdWIyJyk7DQorUkVQTEFDRSBJTlRPIGBmbl90YWJfc2VsZWN0ZWRgIFZBTFVFUyAoJ1RBQjInLCd0YWIyX3N1YjMnKTsNCitSRVBMQUNFIElOVE8gYGZuX3RhYl9zZWxlY3RlZGAgVkFMVUVTICgnVEFCMl9TVUIxJywndGFiMl9zdWIxJyk7DQorUkVQTEFDRSBJTlRPIGBmbl90YWJfc2VsZWN0ZWRgIFZBTFVFUyAoJ1RBQjJfU1VCMV9TMScsJ3RhYjJfc3ViMScpOw0KK1JFUExBQ0UgSU5UTyBgZm5fdGFiX3NlbGVjdGVkYCBWQUxVRVMgKCdUQUIyX1NVQjInLCd0YWIyX3N1YjInKTsNCitSRVBMQUNFIElOVE8gYGZuX3RhYl9zZWxlY3RlZGAgVkFMVUVTICgnVEFCMl9TVUIzJywndGFiMl9zdWIzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl90YWJfc2VsZWN0ZWRgIFZBTFVFUyAoJ1RBQjMnLCd0YWIzJyk7DQorUkVQTEFDRSBJTlRPIGBmbl90YWJfc2VsZWN0ZWRgIFZBTFVFUyAoJ1RBQjQnLCd0YWI0Jyk7DQorDQorDQorLS0NCistLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBmbl91c2VyYA0KKy0tDQorSU5TRVJUIElHTk9SRSBgZm5fdXNlcmAgVkFMVUVTICgxLG51bGwsbnVsbCwnRGVtbycsbnVsbCwnVXNlcicsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwnZGVtbycsbnVsbCwnZGVtbycsJ0twOGJKNFNYc3pNMFdYJywnMjAxNi0xMS0xNCAxMzoyNDowNycsJ1knLG51bGwsJzIwMTYtMTAtMTcgMDA6MDA6MDAnLDEsJzIwMTYtMTEtMTQgMTM6MjQ6MDcnLCdOJyxudWxsLG51bGwsbnVsbCwnTkonLG51bGwsJ1VTJyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpOw0KK0lOU0VSVCBJR05PUkUgYGZuX3VzZXJgIFZBTFVFUyAoMixudWxsLG51bGwsJ3ZpZDEnLG51bGwsJ1VzZXInLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsJ3ZpZDEnLG51bGwsJ3ZpZDEnLCdLcDhiSjRTWHN6TTBXWCcsJzIwMTYtMTEtMTQgMTM6MjQ6MDcnLCdZJyxudWxsLCcyMDE2LTEwLTE3IDAwOjAwOjAwJywxLCcyMDE2LTExLTE0IDEzOjI0OjA3JywnTicsbnVsbCxudWxsLG51bGwsJ05KJyxudWxsLCdVUycsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKTsNCitJTlNFUlQgSUdOT1JFIGBmbl91c2VyYCBWQUxVRVMgKDMsbnVsbCxudWxsLCd2aWQyJyxudWxsLCdVc2VyJyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCd2aWQyJyxudWxsLCd2aWQyJywnS3A4Yko0U1hzek0wV1gnLCcyMDE2LTExLTE0IDEzOjI0OjA3JywnWScsbnVsbCwnMjAxNi0xMC0xNyAwMDowMDowMCcsMSwnMjAxNi0xMS0xNCAxMzoyNDowNycsJ04nLG51bGwsbnVsbCxudWxsLCdOSicsbnVsbCwnVVMnLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCk7DQorSU5TRVJUIElHTk9SRSBgZm5fdXNlcmAgVkFMVUVTICg0LG51bGwsbnVsbCwndmlkMycsbnVsbCwnVXNlcicsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwndmlkMycsbnVsbCwndmlkMycsJ0twOGJKNFNYc3pNMFdYJywnMjAxNi0xMS0xNCAxMzoyNDowNycsJ1knLG51bGwsJzIwMTYtMTAtMTcgMDA6MDA6MDAnLDEsJzIwMTYtMTEtMTQgMTM6MjQ6MDcnLCdOJyxudWxsLG51bGwsbnVsbCwnTkonLG51bGwsJ1VTJyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpOw0KK0lOU0VSVCBJR05PUkUgYGZuX3VzZXJgIFZBTFVFUyAoNSxudWxsLG51bGwsJ3ZpZDQnLG51bGwsJ1VzZXInLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsJ3ZpZDQnLG51bGwsJ3ZpZDQnLCdLcDhiSjRTWHN6TTBXWCcsJzIwMTYtMTEtMTQgMTM6MjQ6MDcnLCdZJyxudWxsLCcyMDE2LTEwLTE3IDAwOjAwOjAwJywxLCcyMDE2LTExLTE0IDEzOjI0OjA3JywnTicsbnVsbCxudWxsLG51bGwsJ05KJyxudWxsLCdVUycsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKTsNCisNCitJTlNFUlQgSUdOT1JFIGBmbl91c2VyX3JvbGVgIFZBTFVFUyAoMSwxLE5VTEwsMSk7DQorSU5TRVJUIElHTk9SRSBgZm5fdXNlcl9yb2xlYCBWQUxVRVMgKDIsMSxOVUxMLDEpOw0KK0lOU0VSVCBJR05PUkUgYGZuX3VzZXJfcm9sZWAgVkFMVUVTICgzLDEsTlVMTCwxKTsNCitJTlNFUlQgSUdOT1JFIGBmbl91c2VyX3JvbGVgIFZBTFVFUyAoNCwxLE5VTEwsMSk7DQorSU5TRVJUIElHTk9SRSBgZm5fdXNlcl9yb2xlYCBWQUxVRVMgKDUsMSxOVUxMLDEpOw0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvb3NhbS1jb3JlLXByZS1pbml0LnNxbCBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvb3NhbS1jb3JlLXByZS1pbml0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzc0MGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9vc2FtLWNvcmUtcHJlLWluaXQuc3FsCkBAIC0wLDAgKzEsMzIgQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogVklEDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICogDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKiANCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICogPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKi8NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gc2NoZW1hX2luZm9gICgNCisgIGBTQ0hFTUFfSURgIFZBUkNIQVIoMjUpIE5PVCBOVUxMLA0KKyAgYFNDSEVNQV9ERVNDYCBWQVJDSEFSKDc1KSBOT1QgTlVMTCwNCisgIGBEQVRBU09VUkNFX1RZUEVgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBDT05ORUNUSU9OX1VSTGAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFVTRVJfTkFNRWAgVkFSQ0hBUig0NSkgTk9UIE5VTEwsDQorICBgUEFTU1dPUkRgIFZBUkNIQVIoNDUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYERSSVZFUl9DTEFTU2AgVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgYE1JTl9QT09MX1NJWkVgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgTUFYX1BPT0xfU0laRWAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBJRExFX0NPTk5FQ1RJT05fVEVTVF9QRVJJT0RgIElOVCgxMSkgTk9UIE5VTEwpDQorRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL29zYW0tY29yZS1zY2hlbWEuc3FsIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9vc2FtLWNvcmUtc2NoZW1hLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTJlMTdlCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9vc2FtLWNvcmUtc2NoZW1hLnNxbApAQCAtMCwwICsxLDEzMjQgQEAKKy8qLQ0KKyAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICogVklEDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICogDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKiANCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICogPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgKi8NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gTXlTUUwgV29ya2JlbmNoIE1pZ3JhdGlvbg0KKy0tIE1pZ3JhdGVkIFNjaGVtYXRhOiBvc2FtX2NvcmUNCistLSBTb3VyY2UgU2NoZW1hdGE6IGVjb21wX3NkDQorLS0gQ3JlYXRlZDogU3VuIE5vdiAxMyAwODo1ODo1MyAyMDE2DQorLS0gV29ya2JlbmNoIFZlcnNpb246IDYuMy42DQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1NFVCBGT1JFSUdOX0tFWV9DSEVDS1MgPSAwOw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBTY2hlbWEgb3NhbV9jb3JlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBTQ0hFTUEgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYCA7DQorDQorVVNFIG9zYW1fY29yZTsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmNyX2Zhdm9yaXRlX3JlcG9ydHMNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX2Zhdm9yaXRlX3JlcG9ydHNgICgNCisgIGBVU0VSX0lEYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYFJFUF9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYFVTRVJfSURgLCBgUkVQX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfZmlsZWhpc3RfbG9nDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9maWxlaGlzdF9sb2dgICgNCisgIGBTQ0hFRFVMRV9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBVUkxgIFZBUkNIQVIoNDAwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTk9URVNgIFZBUkNIQVIoMzUwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUlVOX1RJTUVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QIE9OIFVQREFURSBDVVJSRU5UX1RJTUVTVEFNUCkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9mb2xkZXINCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX2ZvbGRlcmAgKA0KKyAgYEZPTERFUl9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBGT0xERVJfTkFNRWAgVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBgREVTQ1JgIFZBUkNIQVIoNTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBDUkVBVEVfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgQ1JFQVRFX0RBVEVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QIE9OIFVQREFURSBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBQQVJFTlRfRk9MREVSX0lEYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFBVQkxJQ19ZTmAgVkFSQ0hBUigxKSBOT1QgTlVMTCBERUZBVUxUICdOJywNCitQUklNQVJZIEtFWSAoYEZPTERFUl9JRGApLA0KK0lOREVYIGBGS19QQVJFTlRfS0VZX0NSX0ZPTERFUmAgKGBQQVJFTlRfRk9MREVSX0lEYCBBU0MpLA0KK0NPTlNUUkFJTlQgYEZLX1BBUkVOVF9LRVlfQ1JfRk9MREVSYA0KK0ZPUkVJR04gS0VZIChgUEFSRU5UX0ZPTERFUl9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gY3JfZm9sZGVyYCAoYEZPTERFUl9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmNyX2ZvbGRlcl9hY2Nlc3MNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX2ZvbGRlcl9hY2Nlc3NgICgNCisgIGBGT0xERVJfQUNDRVNTX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYEZPTERFUl9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBPUkRFUl9OT2AgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBST0xFX0lEYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFVTRVJfSURgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUkVBRF9PTkxZX1lOYCBWQVJDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ04nLA0KK1BSSU1BUlkgS0VZIChgRk9MREVSX0FDQ0VTU19JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmNyX2hpc3RfdXNlcl9tYXANCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX2hpc3RfdXNlcl9tYXBgICgNCisgIGBISVNUX0lEYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYFVTRVJfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBISVNUX0lEYCwgYFVTRVJfSURgKSwNCitJTkRFWCBgU1lTX0MwMDE0NjE3YCAoYFVTRVJfSURgIEFTQyksDQorQ09OU1RSQUlOVCBgU1lTX0MwMDE0NjE2YA0KK0ZPUkVJR04gS0VZIChgSElTVF9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gY3JfcmVwb3J0X2ZpbGVfaGlzdG9yeWAgKGBISVNUX0lEYCksDQorQ09OU1RSQUlOVCBgU1lTX0MwMDE0NjE3YA0KK0ZPUkVJR04gS0VZIChgVVNFUl9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fdXNlcmAgKGBVU0VSX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfbHVfZmlsZV90eXBlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9sdV9maWxlX3R5cGVgICgNCisgIGBMT09LVVBfSURgIERFQ0lNQUwoMiwwKSBOT1QgTlVMTCwNCisgIGBMT09LVVBfREVTQ1JgIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwNCisgIGBBQ1RJVkVfWU5gIENIQVIoMSkgTlVMTCBERUZBVUxUICdZJywNCisgIGBFUlJPUl9DT0RFYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgTE9PS1VQX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmFwdG9yX2FjdGlvbl9pbWcNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3JhcHRvcl9hY3Rpb25faW1nYCAoDQorICBgSU1BR0VfSURgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBJTUFHRV9MT0NgIFZBUkNIQVIoNDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYElNQUdFX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmFwdG9yX3BkZl9pbWcNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3JhcHRvcl9wZGZfaW1nYCAoDQorICBgSU1BR0VfSURgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBJTUFHRV9MT0NgIFZBUkNIQVIoNDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYElNQUdFX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVtb3RlX3NjaGVtYV9pbmZvDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9yZW1vdGVfc2NoZW1hX2luZm9gICgNCisgIGBTQ0hFTUFfUFJFRklYYCBWQVJDSEFSKDUpIE5PVCBOVUxMLA0KKyAgYFNDSEVNQV9ERVNDYCBWQVJDSEFSKDc1KSBOT1QgTlVMTCwNCisgIGBEQVRBU09VUkNFX1RZUEVgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYFNDSEVNQV9QUkVGSVhgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9yZXBvcnQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3JlcG9ydGAgKA0KKyAgYFJFUF9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBUSVRMRWAgVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgYERFU0NSYCBWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUFVCTElDX1lOYCBWQVJDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ04nLA0KKyAgYFJFUE9SVF9YTUxgIFRFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ1JFQVRFX0lEYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYENSRUFURV9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBNQUlOVF9JRGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBNQUlOVF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBNRU5VX0lEYCBWQVJDSEFSKDUwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTUVOVV9BUFBST1ZFRF9ZTmAgVkFSQ0hBUigxKSBOT1QgTlVMTCBERUZBVUxUICdOJywNCisgIGBPV05FUl9JRGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBGT0xERVJfSURgIElOVCgxMSkgTlVMTCBERUZBVUxUICcwJywNCisgIGBEQVNIQk9BUkRfVFlQRV9ZTmAgVkFSQ0hBUigxKSBOVUxMIERFRkFVTFQgJ04nLA0KKyAgYERBU0hCT0FSRF9ZTmAgVkFSQ0hBUigxKSBOVUxMIERFRkFVTFQgJ04nLA0KK1BSSU1BUlkgS0VZIChgUkVQX0lEYCksDQorSU5ERVggYENSX1JFUE9SVF9DUkVBVEVfSURQVUJMSUNfWU5USVRMRWAgKGBDUkVBVEVfSURgIEFTQywgYFBVQkxJQ19ZTmAgQVNDLCBgVElUTEVgIEFTQykpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVwb3J0X2FjY2Vzcw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gY3JfcmVwb3J0X2FjY2Vzc2AgKA0KKyAgYFJFUF9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBPUkRFUl9OT2AgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBST0xFX0lEYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFVTRVJfSURgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUkVBRF9PTkxZX1lOYCBWQVJDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ04nLA0KK1BSSU1BUlkgS0VZIChgUkVQX0lEYCwgYE9SREVSX05PYCksDQorQ09OU1RSQUlOVCBgRktfQ1JfUkVQT1JfUkVGXzg1NTBfQ1JfUkVQT1JgDQorRk9SRUlHTiBLRVkgKGBSRVBfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX3JlcG9ydGAgKGBSRVBfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9yZXBvcnRfZHdubGRfbG9nDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRfZHdubGRfbG9nYCAoDQorICBgVVNFUl9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBSRVBfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgRklMRV9OQU1FYCBWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBgRFdOTERfU1RBUlRfVElNRWAgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgUkVDT1JEX1JFQURZX1RJTUVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYEZJTFRFUl9QQVJBTVNgIFZBUkNIQVIoMjAwMCkgTlVMTCBERUZBVUxUIE5VTEwpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVwb3J0X2VtYWlsX3NlbnRfbG9nDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRfZW1haWxfc2VudF9sb2dgICgNCisgIGBMT0dfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgU0NIRURVTEVfSURgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgR0VOX0tFWWAgVkFSQ0hBUigyNSkgTk9UIE5VTEwsDQorICBgUkVQX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYFVTRVJfSURgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgU0VOVF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBBQ0NFU1NfRkxBR2AgVkFSQ0hBUigxKSBOT1QgTlVMTCBERUZBVUxUICdZJywNCisgIGBUT1VDSF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCitQUklNQVJZIEtFWSAoYExPR19JRGApLA0KK0lOREVYIGBGS19DUl9SRVBPUlRfUkVQX0lEYCAoYFJFUF9JRGAgQVNDKSwNCitDT05TVFJBSU5UIGBGS19DUl9SRVBPUlRfUkVQX0lEYA0KK0ZPUkVJR04gS0VZIChgUkVQX0lEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRgIChgUkVQX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVwb3J0X2ZpbGVfaGlzdG9yeQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gY3JfcmVwb3J0X2ZpbGVfaGlzdG9yeWAgKA0KKyAgYEhJU1RfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgU0NIRURfVVNFUl9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBTQ0hFRFVMRV9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBVU0VSX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYFJFUF9JRGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBSVU5fREFURWAgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAgT04gVVBEQVRFIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYFJFQ1VSUkVOQ0VgIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEZJTEVfVFlQRV9JRGAgREVDSU1BTCgyLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEZJTEVfTkFNRWAgVkFSQ0hBUig4MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRklMRV9CTE9CYCBCTE9CIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEZJTEVfU0laRWAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBSQVBUT1JfVVJMYCBWQVJDSEFSKDQwMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEVSUk9SX1lOYCBDSEFSKDEpIE5VTEwgREVGQVVMVCAnTicsDQorICBgRVJST1JfQ09ERWAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBERUxFVEVEX1lOYCBDSEFSKDEpIE5VTEwgREVGQVVMVCAnTicsDQorICBgREVMRVRFRF9CWWAgREVDSU1BTCgzOCwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYEhJU1RfSURgKSwNCitJTkRFWCBgU1lTX0MwMDE0NjE0YCAoYEZJTEVfVFlQRV9JRGAgQVNDKSwNCitJTkRFWCBgU1lTX0MwMDE0NjE1YCAoYFJFUF9JRGAgQVNDKSwNCitDT05TVFJBSU5UIGBTWVNfQzAwMTQ2MTRgDQorRk9SRUlHTiBLRVkgKGBGSUxFX1RZUEVfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX2x1X2ZpbGVfdHlwZWAgKGBMT09LVVBfSURgKSwNCitDT05TVFJBSU5UIGBTWVNfQzAwMTQ2MTVgDQorRk9SRUlHTiBLRVkgKGBSRVBfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX3JlcG9ydGAgKGBSRVBfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9yZXBvcnRfbG9nDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRfbG9nYCAoDQorICBgUkVQX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYExPR19USU1FYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCBPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgVVNFUl9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBBQ1RJT05gIFZBUkNIQVIoMjAwMCkgTk9UIE5VTEwsDQorICBgQUNUSU9OX1ZBTFVFYCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBGT1JNX0ZJRUxEU2AgVkFSQ0hBUig0MDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitJTkRFWCBgRktfQ1JfUkVQT1JfUkVGXzE3NjQ1X0NSX1JFUE9SYCAoYFJFUF9JRGAgQVNDKSwNCitDT05TVFJBSU5UIGBGS19DUl9SRVBPUl9SRUZfMTc2NDVfQ1JfUkVQT1JgDQorRk9SRUlHTiBLRVkgKGBSRVBfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX3JlcG9ydGAgKGBSRVBfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9yZXBvcnRfc2NoZWR1bGUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3JlcG9ydF9zY2hlZHVsZWAgKA0KKyAgYFNDSEVEVUxFX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYFNDSEVEX1VTRVJfSURgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgUkVQX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYEVOQUJMRURfWU5gIFZBUkNIQVIoMSkgTk9UIE5VTEwsDQorICBgU1RBUlRfREFURWAgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgRU5EX0RBVEVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYFJVTl9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBSRUNVUlJFTkNFYCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBDT05ESVRJT05BTF9ZTmAgVkFSQ0hBUigxKSBOT1QgTlVMTCwNCisgIGBDT05ESVRJT05fU1FMYCBWQVJDSEFSKDQwMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE5PVElGWV9UWVBFYCBJTlQoMTEpIE5VTEwgREVGQVVMVCAnMCcsDQorICBgTUFYX1JPV2AgSU5UKDExKSBOVUxMIERFRkFVTFQgJzEwMDAnLA0KKyAgYElOSVRJQUxfRk9STUZJRUxEU2AgVkFSQ0hBUigzNTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBQUk9DRVNTRURfRk9STUZJRUxEU2AgVkFSQ0hBUigzNTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBGT1JNRklFTERTYCBWQVJDSEFSKDM1MDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYENPTkRJVElPTl9MQVJHRV9TUUxgIFRFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRU5DUllQVF9ZTmAgQ0hBUigxKSBOVUxMIERFRkFVTFQgJ04nLA0KKyAgYEFUVEFDSE1FTlRfWU5gIENIQVIoMSkgTlVMTCBERUZBVUxUICdZJywNCitQUklNQVJZIEtFWSAoYFNDSEVEVUxFX0lEYCksDQorSU5ERVggYEZLX0NSX1JFUE9SX1JFRl8xNDcwN19DUl9SRVBPUmAgKGBSRVBfSURgIEFTQyksDQorQ09OU1RSQUlOVCBgRktfQ1JfUkVQT1JfUkVGXzE0NzA3X0NSX1JFUE9SYA0KK0ZPUkVJR04gS0VZIChgUkVQX0lEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRgIChgUkVQX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVwb3J0X3NjaGVkdWxlX3VzZXJzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBjcl9yZXBvcnRfc2NoZWR1bGVfdXNlcnNgICgNCisgIGBTQ0hFRFVMRV9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBSRVBfSURgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgVVNFUl9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBST0xFX0lEYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE9SREVSX05PYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURVTEVfSURgLCBgUkVQX0lEYCwgYFVTRVJfSURgLCBgT1JERVJfTk9gKSwNCitDT05TVFJBSU5UIGBGS19DUl9SRVBPUl9SRUZfMTQ3MTZfQ1JfUkVQT1JgDQorRk9SRUlHTiBLRVkgKGBTQ0hFRFVMRV9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gY3JfcmVwb3J0X3NjaGVkdWxlYCAoYFNDSEVEVUxFX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfcmVwb3J0X3RlbXBsYXRlX21hcA0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gY3JfcmVwb3J0X3RlbXBsYXRlX21hcGAgKA0KKyAgYFJFUE9SVF9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBURU1QTEFURV9GSUxFYCBWQVJDSEFSKDIwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBSRVBPUlRfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5jcl9zY2hlZHVsZV9hY3Rpdml0eV9sb2cNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3NjaGVkdWxlX2FjdGl2aXR5X2xvZ2AgKA0KKyAgYFNDSEVEVUxFX0lEYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYFVSTGAgVkFSQ0hBUig0MDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBOT1RFU2AgVkFSQ0hBUigyMDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBSVU5fVElNRWAgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAgT04gVVBEQVRFIENVUlJFTlRfVElNRVNUQU1QKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmNyX3RhYmxlX2pvaW4NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGNyX3RhYmxlX2pvaW5gICgNCisgIGBTUkNfVEFCTEVfTkFNRWAgVkFSQ0hBUigzMCkgTk9UIE5VTEwsDQorICBgREVTVF9UQUJMRV9OQU1FYCBWQVJDSEFSKDMwKSBOT1QgTlVMTCwNCisgIGBKT0lOX0VYUFJgIFZBUkNIQVIoNTAwKSBOT1QgTlVMTCwNCitJTkRFWCBgQ1JfVEFCTEVfSk9JTl9ERVNUX1RBQkxFX05BTUVgIChgREVTVF9UQUJMRV9OQU1FYCBBU0MpLA0KK0lOREVYIGBDUl9UQUJMRV9KT0lOX1NSQ19UQUJMRV9OQU1FYCAoYFNSQ19UQUJMRV9OQU1FYCBBU0MpLA0KK0NPTlNUUkFJTlQgYEZLX0NSX1RBQkxFX1JFRl8zMTFfQ1JfVEFCYA0KK0ZPUkVJR04gS0VZIChgU1JDX1RBQkxFX05BTUVgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX3RhYmxlX3NvdXJjZWAgKGBUQUJMRV9OQU1FYCksDQorQ09OU1RSQUlOVCBgRktfQ1JfVEFCTEVfUkVGXzMxNV9DUl9UQUJgDQorRk9SRUlHTiBLRVkgKGBERVNUX1RBQkxFX05BTUVgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGNyX3RhYmxlX3NvdXJjZWAgKGBUQUJMRV9OQU1FYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuY3JfdGFibGVfcm9sZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gY3JfdGFibGVfcm9sZWAgKA0KKyAgYFRBQkxFX05BTUVgIFZBUkNIQVIoMzApIE5PVCBOVUxMLA0KKyAgYFJPTEVfSURgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBUQUJMRV9OQU1FYCwgYFJPTEVfSURgKSwNCitDT05TVFJBSU5UIGBGS19DUl9UQUJMRV9SRUZfMzIzODRfQ1JfVEFCTEVgDQorRk9SRUlHTiBLRVkgKGBUQUJMRV9OQU1FYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBjcl90YWJsZV9zb3VyY2VgIChgVEFCTEVfTkFNRWApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmNyX3RhYmxlX3NvdXJjZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gY3JfdGFibGVfc291cmNlYCAoDQorICBgVEFCTEVfTkFNRWAgVkFSQ0hBUigzMCkgTk9UIE5VTEwsDQorICBgRElTUExBWV9OQU1FYCBWQVJDSEFSKDMwKSBOT1QgTlVMTCwNCisgIGBQS19GSUVMRFNgIFZBUkNIQVIoMjAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBXRUJfVklFV19BQ1RJT05gIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYExBUkdFX0RBVEFfU09VUkNFX1lOYCBWQVJDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ04nLA0KKyAgYEZJTFRFUl9TUUxgIFZBUkNIQVIoNDAwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgU09VUkNFX0RCYCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYFRBQkxFX05BTUVgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIHZpZF9wb3J0YWwuZm5fYXBwDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9hcHBgICgNCisgIGBBUFBfSURgIElOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQorICBgQVBQX05BTUVgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCBERUZBVUxUICc/JywNCisgIGBBUFBfSU1BR0VfVVJMYCBWQVJDSEFSKDI1NikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQVBQX0RFU0NSSVBUSU9OYCBWQVJDSEFSKDUxMikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQVBQX05PVEVTYCBWQVJDSEFSKDQwOTYpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFQUF9VUkxgIFZBUkNIQVIoMjU2KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBUFBfQUxURVJOQVRFX1VSTGAgVkFSQ0hBUigyNTYpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFQUF9SRVNUX0VORFBPSU5UYCBWQVJDSEFSKDIwMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE1MX0FQUF9OQU1FYCBWQVJDSEFSKDUwKSBOT1QgTlVMTCBERUZBVUxUICc/JywNCisgIGBNTF9BUFBfQURNSU5fSURgIFZBUkNIQVIoNykgTk9UIE5VTEwgREVGQVVMVCAnPycsDQorICBgTU9UU19JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBUFBfUEFTU1dPUkRgIFZBUkNIQVIoMjU2KSBOT1QgTlVMTCBERUZBVUxUICc/JywNCisgIGBPUEVOYCBDSEFSKDEpIE5VTEwgREVGQVVMVCAnTicsDQorICBgRU5BQkxFRGAgQ0hBUigxKSBOVUxMIERFRkFVTFQgJ1knLA0KKyAgYFRIVU1CTkFJTGAgTUVESVVNQkxPQiBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBUFBfVVNFUk5BTUVgIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFVFQl9LRVlgIFZBUkNIQVIoMjU2KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBVRUJfU0VDUkVUYCBWQVJDSEFSKDI1NikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgVUVCX1RPUElDX05BTUVgIFZBUkNIQVIoMjU2KSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYEFQUF9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorICBBVVRPX0lOQ1JFTUVOVCA9IDINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fYXBwX21tZV9jcHUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2FwcF9tbWVfY3B1YCAoDQorICBgTU1FYCBWQVJDSEFSKDIwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgWUVBUk1PTlRIYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFNDVFBfQ1BVYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFQX0NQVWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBEUF9DUFVgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUk9VVEVSX0NQVWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBQRUJfQ1BVYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFNBVWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9hdWRpdF9hY3Rpb24NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2F1ZGl0X2FjdGlvbmAgKA0KKyAgYEFVRElUX0FDVElPTl9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBDTEFTU19OQU1FYCBWQVJDSEFSKDUwMCkgTk9UIE5VTEwsDQorICBgTUVUSE9EX05BTUVgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgYEFVRElUX0FDVElPTl9DRGAgVkFSQ0hBUigyMCkgTk9UIE5VTEwsDQorICBgQVVESVRfQUNUSU9OX0RFU0NgIFZBUkNIQVIoMjAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBQ1RJVkVfWU5gIFZBUkNIQVIoMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBBVURJVF9BQ1RJT05fSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9hdWRpdF9hY3Rpb25fbG9nDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9hdWRpdF9hY3Rpb25fbG9nYCAoDQorICBgQVVESVRfTE9HX0lEYCBJTlQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KKyAgYEFVRElUX0FDVElPTl9DRGAgVkFSQ0hBUigyMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFDVElPTl9USU1FYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCBPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgVVNFUl9JRGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBDTEFTU19OQU1FYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTUVUSE9EX05BTUVgIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFNVQ0NFU1NfTVNHYCBWQVJDSEFSKDIwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBFUlJPUl9NU0dgIFZBUkNIQVIoNTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYEFVRElUX0xPR19JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2F1ZGl0X2xvZw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fYXVkaXRfbG9nYCAoDQorICBgTE9HX0lEYCBJTlQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KKyAgYFVTRVJfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgQUNUSVZJVFlfQ0RgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgYEFVRElUX0RBVEVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYENPTU1FTlRTYCBWQVJDSEFSKDEwMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFGRkVDVEVEX1JFQ09SRF9JRF9CS2AgVkFSQ0hBUig1MDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFGRkVDVEVEX1JFQ09SRF9JRGAgVkFSQ0hBUig0MDAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYExPR19JRGApLA0KK0lOREVYIGBGTl9BVURJVF9MT0dfQUNUSVZJVFlfQ0RgIChgQUNUSVZJVFlfQ0RgIEFTQyksDQorSU5ERVggYEZOX0FVRElUX0xPR19VU0VSX0lEYCAoYFVTRVJfSURgIEFTQyksDQorQ09OU1RSQUlOVCBgRktfRk5fQVVESVRfUkVGXzIwNV9GTl9MVV9BQ2ANCitGT1JFSUdOIEtFWSAoYEFDVElWSVRZX0NEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9sdV9hY3Rpdml0eWAgKGBBQ1RJVklUWV9DRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX0FVRElUX1JFRl8yMDlfRk5fVVNFUmANCitGT1JFSUdOIEtFWSAoYFVTRVJfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3VzZXJgIChgVVNFUl9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2Jyb2FkY2FzdF9tZXNzYWdlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9icm9hZGNhc3RfbWVzc2FnZWAgKA0KKyAgYE1FU1NBR0VfSURgIElOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQorICBgTUVTU0FHRV9URVhUYCBWQVJDSEFSKDEwMDApIE5PVCBOVUxMLA0KKyAgYE1FU1NBR0VfTE9DQVRJT05fSURgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgQlJPQURDQVNUX1NUQVJUX0RBVEVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYEJST0FEQ0FTVF9FTkRfREFURWAgVElNRVNUQU1QIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgQUNUSVZFX1lOYCBDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ1knLA0KKyAgYFNPUlRfT1JERVJgIERFQ0lNQUwoNCwwKSBOT1QgTlVMTCwNCisgIGBCUk9BRENBU1RfU0lURV9DRGAgVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBNRVNTQUdFX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fY2hhdF9sb2dzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9jaGF0X2xvZ3NgICgNCisgIGBDSEFUX0xPR19JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBDSEFUX1JPT01fSURgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgVVNFUl9JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBNRVNTQUdFYCBWQVJDSEFSKDEwMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE1FU1NBR0VfREFURV9USU1FYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCBPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAsDQorUFJJTUFSWSBLRVkgKGBDSEFUX0xPR19JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2NoYXRfcm9vbQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fY2hhdF9yb29tYCAoDQorICBgQ0hBVF9ST09NX0lEYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYE5BTUVgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgYERFU0NSSVBUSU9OYCBWQVJDSEFSKDUwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgT1dORVJfSURgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ1JFQVRFRF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBVUERBVEVEX0RBVEVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KK1BSSU1BUlkgS0VZIChgQ0hBVF9ST09NX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fY2hhdF91c2Vycw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fY2hhdF91c2Vyc2AgKA0KKyAgYENIQVRfUk9PTV9JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBVU0VSX0lEYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYExBU1RfQUNUSVZJVFlfREFURV9USU1FYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCBPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgQ0hBVF9TVEFUVVNgIFZBUkNIQVIoMjApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYElEYCBJTlQoMTEpIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9kYXRhc291cmNlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9kYXRhc291cmNlYCAoDQorICBgSURgIElOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQorICBgTkFNRWAgVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRFJJVkVSX05BTUVgIFZBUkNIQVIoMjU2KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBTRVJWRVJgIFZBUkNIQVIoMjU2KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBQT1JUYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFVTRVJfTkFNRWAgVkFSQ0hBUigyNTYpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFBBU1NXT1JEYCBWQVJDSEFSKDI1NikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgVVJMYCBWQVJDSEFSKDI1NikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTUlOX1BPT0xfU0laRWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBNQVhfUE9PTF9TSVpFYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFEQVBURVJfSURgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRFNfVFlQRWAgVkFSQ0hBUigyMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBJRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorICBBVVRPX0lOQ1JFTUVOVCA9IDQNCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fZnVuY3Rpb24NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2Z1bmN0aW9uYCAoDQorICBgRlVOQ1RJT05fQ0RgIFZBUkNIQVIoMzApIE5PVCBOVUxMLA0KKyAgYEZVTkNUSU9OX05BTUVgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgYHR5cGVgIFZBUkNIQVIoMjApIE5PVCBOVUxMLA0KKyAgYGFjdGlvbmAgVkFSQ0hBUigyMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBGVU5DVElPTl9DRGApLA0KK0NPTlNUUkFJTlQgYGZ1bmN0aW9uYCBVTklRVUUgKEZVTkNUSU9OX0NELFRZUEUsQUNUSU9OKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9saWNlbnNlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9saWNlbnNlYCAoDQorICBgaWRgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgYXBwX2lkYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYGlwX2FkZHJlc3NgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBxdWFudHVtX3ZlcnNpb25faWRgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgY3JlYXRlZF9kYXRlYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBtb2RpZmllZF9kYXRlYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBjcmVhdGVkX2lkYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYG1vZGlmaWVkX2lkYCBERUNJTUFMKDExLDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYGVuZF9kYXRlYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCAnMjAzNi0wMS0xOSAwMzoxNDowNycsDQorUFJJTUFSWSBLRVkgKGBpZGApLA0KK0lOREVYIGBmbl9saWNlbnNlX3IwMmAgKGBxdWFudHVtX3ZlcnNpb25faWRgIEFTQyksDQorQ09OU1RSQUlOVCBgZm5fbGljZW5zZV9yMDJgDQorRk9SRUlHTiBLRVkgKGBxdWFudHVtX3ZlcnNpb25faWRgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX2xpY2Vuc2VfdmVyc2lvbmAgKGBpZGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2xpY2Vuc2VfYXBwDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9saWNlbnNlX2FwcGAgKA0KKyAgYGlkYCBERUNJTUFMKDExLDApIE5PVCBOVUxMLA0KKyAgYGFwcF9uYW1lYCBWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBgY3R4dF9uYW1lYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorSU5ERVggYGZuX2xpY2Vuc2VfYXBwX0lEYCAoYGlkYCBBU0MpKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2xpY2Vuc2VfY29udGFjdA0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbGljZW5zZV9jb250YWN0YCAoDQorICBgaWRgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgbGljZW5zZV9pZGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBzYmNpZGAgVkFSQ0hBUigyMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBpZGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2xpY2Vuc2VfaGlzdG9yeQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbGljZW5zZV9oaXN0b3J5YCAoDQorICBgbGljZW5zZV9pZGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBhcHBfaWRgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgaXBfYWRkcmVzc2AgVkFSQ0hBUigxMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYHF1YW50dW1fdmVyc2lvbl9pZGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBjcmVhdGVkX2RhdGVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYG1vZGlmaWVkX2RhdGVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYGNyZWF0ZWRfaWRgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgbW9kaWZpZWRfaWRgIERFQ0lNQUwoMTEsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgaWRgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBpZGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2xpY2Vuc2VfdmVyc2lvbg0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbGljZW5zZV92ZXJzaW9uYCAoDQorICBgaWRgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgcXVhbnR1bV92ZXJzaW9uYCBWQVJDSEFSKDI1KSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYGlkYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fbHVfYWN0aXZpdHkNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2x1X2FjdGl2aXR5YCAoDQorICBgQUNUSVZJVFlfQ0RgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgYEFDVElWSVRZYCBWQVJDSEFSKDUwKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYEFDVElWSVRZX0NEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fbHVfYWxlcnRfbWV0aG9kDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9sdV9hbGVydF9tZXRob2RgICgNCisgIGBBTEVSVF9NRVRIT0RfQ0RgIFZBUkNIQVIoMTApIE5PVCBOVUxMLA0KKyAgYEFMRVJUX01FVEhPRGAgVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBBTEVSVF9NRVRIT0RfQ0RgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9sdV9icm9hZGNhc3Rfc2l0ZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbHVfYnJvYWRjYXN0X3NpdGVgICgNCisgIGBCUk9BRENBU1RfU0lURV9DRGAgVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBgQlJPQURDQVNUX1NJVEVfREVTQ1JgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYEJST0FEQ0FTVF9TSVRFX0NEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fbHVfY2FsbF90aW1lcw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbHVfY2FsbF90aW1lc2AgKA0KKyAgYENBTExfVElNRV9JRGAgREVDSU1BTCgxMCwwKSBOT1QgTlVMTCwNCisgIGBDQUxMX1RJTUVfQU1PVU5UYCBERUNJTUFMKDEwLDApIE5PVCBOVUxMLA0KKyAgYENBTExfVElNRV9ESVNQTEFZYCBWQVJDSEFSKDUwKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYENBTExfVElNRV9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2x1X2NpdHkNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2x1X2NpdHlgICgNCisgIGBDSVRZX0NEYCBWQVJDSEFSKDIpIE5PVCBOVUxMLA0KKyAgYENJVFlgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBTVEFURV9DRGAgVkFSQ0hBUigyKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYENJVFlfQ0RgLCBgU1RBVEVfQ0RgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9sdV9jb3VudHJ5DQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9sdV9jb3VudHJ5YCAoDQorICBgQ09VTlRSWV9DRGAgVkFSQ0hBUigzKSBOT1QgTlVMTCwNCisgIGBDT1VOVFJZYCBWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBgRlVMTF9OQU1FYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgV0VCUEhPTkVfQ09VTlRSWV9MQUJFTGAgVkFSQ0hBUigzMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBDT1VOVFJZX0NEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fbHVfbWVudV9zZXQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2x1X21lbnVfc2V0YCAoDQorICBgTUVOVV9TRVRfQ0RgIFZBUkNIQVIoMTApIE5PVCBOVUxMLA0KKyAgYE1FTlVfU0VUX05BTUVgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgTUVOVV9TRVRfQ0RgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9sdV9wcmlvcml0eQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fbHVfcHJpb3JpdHlgICgNCisgIGBQUklPUklUWV9JRGAgREVDSU1BTCgxMSwwKSBOT1QgTlVMTCwNCisgIGBQUklPUklUWWAgVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBgQUNUSVZFX1lOYCBDSEFSKDEpIE5PVCBOVUxMLA0KKyAgYFNPUlRfT1JERVJgIERFQ0lNQUwoNSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYFBSSU9SSVRZX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fbHVfcm9sZV90eXBlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9sdV9yb2xlX3R5cGVgICgNCisgIGBST0xFX1RZUEVfSURgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgUk9MRV9UWVBFYCBWQVJDSEFSKDUwKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYFJPTEVfVFlQRV9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2x1X3N0YXRlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9sdV9zdGF0ZWAgKA0KKyAgYFNUQVRFX0NEYCBWQVJDSEFSKDIpIE5PVCBOVUxMLA0KKyAgYFNUQVRFYCBWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBTVEFURV9DRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2x1X3RhYl9zZXQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX2x1X3RhYl9zZXRgICgNCisgIGBUQUJfU0VUX0NEYCBWQVJDSEFSKDMwKSBOT1QgTlVMTCwNCisgIGBUQUJfU0VUX05BTUVgIFZBUkNIQVIoNTApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgVEFCX1NFVF9DRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX2x1X3RpbWV6b25lDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9sdV90aW1lem9uZWAgKA0KKyAgYFRJTUVaT05FX0lEYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYFRJTUVaT05FX05BTUVgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBUSU1FWk9ORV9WQUxVRWAgVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgVElNRVpPTkVfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9tZW51DQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9tZW51YCAoDQorICBgTUVOVV9JRGAgSU5UKDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCisgIGBMQUJFTGAgVkFSQ0hBUigxMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFBBUkVOVF9JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBTT1JUX09SREVSYCBERUNJTUFMKDQsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQUNUSU9OYCBWQVJDSEFSKDIwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRlVOQ1RJT05fQ0RgIFZBUkNIQVIoMzApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFDVElWRV9ZTmAgVkFSQ0hBUigxKSBOT1QgTlVMTCBERUZBVUxUICdZJywNCisgIGBTRVJWTEVUYCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBRVUVSWV9TVFJJTkdgIFZBUkNIQVIoMjAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBFWFRFUk5BTF9VUkxgIFZBUkNIQVIoMjAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBUQVJHRVRgIFZBUkNIQVIoMjUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE1FTlVfU0VUX0NEYCBWQVJDSEFSKDEwKSBOVUxMIERFRkFVTFQgJ0FQUCcsDQorICBgU0VQQVJBVE9SX1lOYCBDSEFSKDEpIE5VTEwgREVGQVVMVCAnTicsDQorICBgSU1BR0VfU1JDYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBNRU5VX0lEYCksDQorSU5ERVggYEZLX0ZOX01FTlVfUkVGXzE5Nl9GTl9NRU5VYCAoYFBBUkVOVF9JRGAgQVNDKSwNCitJTkRFWCBgRktfRk5fTUVOVV9NRU5VX1NFVF9DRGAgKGBNRU5VX1NFVF9DRGAgQVNDKSwNCitJTkRFWCBgRk5fTUVOVV9GVU5DVElPTl9DRGAgKGBGVU5DVElPTl9DRGAgQVNDKSwNCitDT05TVFJBSU5UIGBGS19GTl9NRU5VX01FTlVfU0VUX0NEYA0KK0ZPUkVJR04gS0VZIChgTUVOVV9TRVRfQ0RgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX2x1X21lbnVfc2V0YCAoYE1FTlVfU0VUX0NEYCksDQorQ09OU1RSQUlOVCBgRktfRk5fTUVOVV9SRUZfMTk2X0ZOX01FTlVgDQorRk9SRUlHTiBLRVkgKGBQQVJFTlRfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX21lbnVgIChgTUVOVV9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX01FTlVfUkVGXzIyM19GTl9GVU5DVGANCitGT1JFSUdOIEtFWSAoYEZVTkNUSU9OX0NEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9mdW5jdGlvbmAgKGBGVU5DVElPTl9DRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorICBBVVRPX0lOQ1JFTUVOVCA9IDE1MDAyOQ0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9vcmcNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX29yZ2AgKA0KKyAgYE9SR19JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBPUkdfTkFNRWAgVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBgQUNDRVNTX0NEYCBWQVJDSEFSKDEwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYE9SR19JRGApLA0KK0lOREVYIGBGTl9PUkdfQUNDRVNTX0NEYCAoYEFDQ0VTU19DRGAgQVNDKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9ibG9iX3RyaWdnZXJzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9xel9ibG9iX3RyaWdnZXJzYCAoDQorICBgU0NIRURfTkFNRWAgVkFSQ0hBUigxMjApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfTkFNRWAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBCTE9CX0RBVEFgIEJMT0IgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBTQ0hFRF9OQU1FYCwgYFRSSUdHRVJfTkFNRWAsIGBUUklHR0VSX0dST1VQYCksDQorSU5ERVggYFNDSEVEX05BTUVgIChgU0NIRURfTkFNRWAgQVNDLCBgVFJJR0dFUl9OQU1FYCBBU0MsIGBUUklHR0VSX0dST1VQYCBBU0MpLA0KK0NPTlNUUkFJTlQgYGZuX3F6X2Jsb2JfdHJpZ2dlcnNfaWJma18xYA0KK0ZPUkVJR04gS0VZIChgU0NIRURfTkFNRWAgLCBgVFJJR0dFUl9OQU1FYCAsIGBUUklHR0VSX0dST1VQYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9xel90cmlnZ2Vyc2AgKGBTQ0hFRF9OQU1FYCAsIGBUUklHR0VSX05BTUVgICwgYFRSSUdHRVJfR1JPVVBgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9jYWxlbmRhcnMNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3F6X2NhbGVuZGFyc2AgKA0KKyAgYFNDSEVEX05BTUVgIFZBUkNIQVIoMTIwKSBOT1QgTlVMTCwNCisgIGBDQUxFTkRBUl9OQU1FYCBWQVJDSEFSKDIwMCkgTk9UIE5VTEwsDQorICBgQ0FMRU5EQVJgIEJMT0IgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBTQ0hFRF9OQU1FYCwgYENBTEVOREFSX05BTUVgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9jcm9uX3RyaWdnZXJzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9xel9jcm9uX3RyaWdnZXJzYCAoDQorICBgU0NIRURfTkFNRWAgVkFSQ0hBUigxMjApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfTkFNRWAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBDUk9OX0VYUFJFU1NJT05gIFZBUkNIQVIoMTIwKSBOT1QgTlVMTCwNCisgIGBUSU1FX1pPTkVfSURgIFZBUkNIQVIoODApIE5VTEwgREVGQVVMVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURfTkFNRWAsIGBUUklHR0VSX05BTUVgLCBgVFJJR0dFUl9HUk9VUGApLA0KK0NPTlNUUkFJTlQgYGZuX3F6X2Nyb25fdHJpZ2dlcnNfaWJma18xYA0KK0ZPUkVJR04gS0VZIChgU0NIRURfTkFNRWAgLCBgVFJJR0dFUl9OQU1FYCAsIGBUUklHR0VSX0dST1VQYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9xel90cmlnZ2Vyc2AgKGBTQ0hFRF9OQU1FYCAsIGBUUklHR0VSX05BTUVgICwgYFRSSUdHRVJfR1JPVVBgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9maXJlZF90cmlnZ2Vycw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fcXpfZmlyZWRfdHJpZ2dlcnNgICgNCisgIGBTQ0hFRF9OQU1FYCBWQVJDSEFSKDEyMCkgTk9UIE5VTEwsDQorICBgRU5UUllfSURgIFZBUkNIQVIoOTUpIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfTkFNRWAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBJTlNUQU5DRV9OQU1FYCBWQVJDSEFSKDIwMCkgTk9UIE5VTEwsDQorICBgRklSRURfVElNRWAgQklHSU5UKDEzKSBOT1QgTlVMTCwNCisgIGBTQ0hFRF9USU1FYCBCSUdJTlQoMTMpIE5PVCBOVUxMLA0KKyAgYFBSSU9SSVRZYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYFNUQVRFYCBWQVJDSEFSKDE2KSBOT1QgTlVMTCwNCisgIGBKT0JfTkFNRWAgVkFSQ0hBUigyMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEpPQl9HUk9VUGAgVkFSQ0hBUigyMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYElTX05PTkNPTkNVUlJFTlRgIFZBUkNIQVIoMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUkVRVUVTVFNfUkVDT1ZFUllgIFZBUkNIQVIoMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBTQ0hFRF9OQU1FYCwgYEVOVFJZX0lEYCksDQorSU5ERVggYElEWF9GTl9RWl9GVF9UUklHX0lOU1RfTkFNRWAgKGBTQ0hFRF9OQU1FYCBBU0MsIGBJTlNUQU5DRV9OQU1FYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfRlRfSU5TVF9KT0JfUkVRX1JDVlJZYCAoYFNDSEVEX05BTUVgIEFTQywgYElOU1RBTkNFX05BTUVgIEFTQywgYFJFUVVFU1RTX1JFQ09WRVJZYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfRlRfSl9HYCAoYFNDSEVEX05BTUVgIEFTQywgYEpPQl9OQU1FYCBBU0MsIGBKT0JfR1JPVVBgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9GVF9KR2AgKGBTQ0hFRF9OQU1FYCBBU0MsIGBKT0JfR1JPVVBgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9GVF9UX0dgIChgU0NIRURfTkFNRWAgQVNDLCBgVFJJR0dFUl9OQU1FYCBBU0MsIGBUUklHR0VSX0dST1VQYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfRlRfVEdgIChgU0NIRURfTkFNRWAgQVNDLCBgVFJJR0dFUl9HUk9VUGAgQVNDKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9qb2JfZGV0YWlscw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fcXpfam9iX2RldGFpbHNgICgNCisgIGBTQ0hFRF9OQU1FYCBWQVJDSEFSKDEyMCkgTk9UIE5VTEwsDQorICBgSk9CX05BTUVgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBKT0JfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBERVNDUklQVElPTmAgVkFSQ0hBUigyNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEpPQl9DTEFTU19OQU1FYCBWQVJDSEFSKDI1MCkgTk9UIE5VTEwsDQorICBgSVNfRFVSQUJMRWAgVkFSQ0hBUigxKSBOT1QgTlVMTCwNCisgIGBJU19OT05DT05DVVJSRU5UYCBWQVJDSEFSKDEpIE5PVCBOVUxMLA0KKyAgYElTX1VQREFURV9EQVRBYCBWQVJDSEFSKDEpIE5PVCBOVUxMLA0KKyAgYFJFUVVFU1RTX1JFQ09WRVJZYCBWQVJDSEFSKDEpIE5PVCBOVUxMLA0KKyAgYEpPQl9EQVRBYCBCTE9CIE5VTEwgREVGQVVMVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURfTkFNRWAsIGBKT0JfTkFNRWAsIGBKT0JfR1JPVVBgKSwNCitJTkRFWCBgSURYX0ZOX1FaX0pfUkVRX1JFQ09WRVJZYCAoYFNDSEVEX05BTUVgIEFTQywgYFJFUVVFU1RTX1JFQ09WRVJZYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfSl9HUlBgIChgU0NIRURfTkFNRWAgQVNDLCBgSk9CX0dST1VQYCBBU0MpKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3F6X2xvY2tzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9xel9sb2Nrc2AgKA0KKyAgYFNDSEVEX05BTUVgIFZBUkNIQVIoMTIwKSBOT1QgTlVMTCwNCisgIGBMT0NLX05BTUVgIFZBUkNIQVIoNDApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURfTkFNRWAsIGBMT0NLX05BTUVgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9xel9wYXVzZWRfdHJpZ2dlcl9ncnBzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9xel9wYXVzZWRfdHJpZ2dlcl9ncnBzYCAoDQorICBgU0NIRURfTkFNRWAgVkFSQ0hBUigxMjApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYFNDSEVEX05BTUVgLCBgVFJJR0dFUl9HUk9VUGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3F6X3NjaGVkdWxlcl9zdGF0ZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fcXpfc2NoZWR1bGVyX3N0YXRlYCAoDQorICBgU0NIRURfTkFNRWAgVkFSQ0hBUigxMjApIE5PVCBOVUxMLA0KKyAgYElOU1RBTkNFX05BTUVgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBMQVNUX0NIRUNLSU5fVElNRWAgQklHSU5UKDEzKSBOT1QgTlVMTCwNCisgIGBDSEVDS0lOX0lOVEVSVkFMYCBCSUdJTlQoMTMpIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURfTkFNRWAsIGBJTlNUQU5DRV9OQU1FYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fcXpfc2ltcGxlX3RyaWdnZXJzDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9xel9zaW1wbGVfdHJpZ2dlcnNgICgNCisgIGBTQ0hFRF9OQU1FYCBWQVJDSEFSKDEyMCkgTk9UIE5VTEwsDQorICBgVFJJR0dFUl9OQU1FYCBWQVJDSEFSKDIwMCkgTk9UIE5VTEwsDQorICBgVFJJR0dFUl9HUk9VUGAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFJFUEVBVF9DT1VOVGAgQklHSU5UKDcpIE5PVCBOVUxMLA0KKyAgYFJFUEVBVF9JTlRFUlZBTGAgQklHSU5UKDEyKSBOT1QgTlVMTCwNCisgIGBUSU1FU19UUklHR0VSRURgIEJJR0lOVCgxMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBTQ0hFRF9OQU1FYCwgYFRSSUdHRVJfTkFNRWAsIGBUUklHR0VSX0dST1VQYCksDQorQ09OU1RSQUlOVCBgZm5fcXpfc2ltcGxlX3RyaWdnZXJzX2liZmtfMWANCitGT1JFSUdOIEtFWSAoYFNDSEVEX05BTUVgICwgYFRSSUdHRVJfTkFNRWAgLCBgVFJJR0dFUl9HUk9VUGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fcXpfdHJpZ2dlcnNgIChgU0NIRURfTkFNRWAgLCBgVFJJR0dFUl9OQU1FYCAsIGBUUklHR0VSX0dST1VQYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fcXpfc2ltcHJvcF90cmlnZ2Vycw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fcXpfc2ltcHJvcF90cmlnZ2Vyc2AgKA0KKyAgYFNDSEVEX05BTUVgIFZBUkNIQVIoMTIwKSBOT1QgTlVMTCwNCisgIGBUUklHR0VSX05BTUVgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBUUklHR0VSX0dST1VQYCBWQVJDSEFSKDIwMCkgTk9UIE5VTEwsDQorICBgU1RSX1BST1BfMWAgVkFSQ0hBUig1MTIpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFNUUl9QUk9QXzJgIFZBUkNIQVIoNTEyKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBTVFJfUFJPUF8zYCBWQVJDSEFSKDUxMikgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgSU5UX1BST1BfMWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBJTlRfUFJPUF8yYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYExPTkdfUFJPUF8xYCBCSUdJTlQoMjApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYExPTkdfUFJPUF8yYCBCSUdJTlQoMjApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYERFQ19QUk9QXzFgIERFQ0lNQUwoMTMsNCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgREVDX1BST1BfMmAgREVDSU1BTCgxMyw0KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBCT09MX1BST1BfMWAgVkFSQ0hBUigxKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBCT09MX1BST1BfMmAgVkFSQ0hBUigxKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYFNDSEVEX05BTUVgLCBgVFJJR0dFUl9OQU1FYCwgYFRSSUdHRVJfR1JPVVBgKSwNCitDT05TVFJBSU5UIGBmbl9xel9zaW1wcm9wX3RyaWdnZXJzX2liZmtfMWANCitGT1JFSUdOIEtFWSAoYFNDSEVEX05BTUVgICwgYFRSSUdHRVJfTkFNRWAgLCBgVFJJR0dFUl9HUk9VUGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fcXpfdHJpZ2dlcnNgIChgU0NIRURfTkFNRWAgLCBgVFJJR0dFUl9OQU1FYCAsIGBUUklHR0VSX0dST1VQYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fcXpfdHJpZ2dlcnMNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3F6X3RyaWdnZXJzYCAoDQorICBgU0NIRURfTkFNRWAgVkFSQ0hBUigxMjApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfTkFNRWAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYFRSSUdHRVJfR1JPVVBgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBKT0JfTkFNRWAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYEpPQl9HUk9VUGAgVkFSQ0hBUigyMDApIE5PVCBOVUxMLA0KKyAgYERFU0NSSVBUSU9OYCBWQVJDSEFSKDI1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTkVYVF9GSVJFX1RJTUVgIEJJR0lOVCgxMykgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUFJFVl9GSVJFX1RJTUVgIEJJR0lOVCgxMykgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgUFJJT1JJVFlgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgVFJJR0dFUl9TVEFURWAgVkFSQ0hBUigxNikgTk9UIE5VTEwsDQorICBgVFJJR0dFUl9UWVBFYCBWQVJDSEFSKDgpIE5PVCBOVUxMLA0KKyAgYFNUQVJUX1RJTUVgIEJJR0lOVCgxMykgTk9UIE5VTEwsDQorICBgRU5EX1RJTUVgIEJJR0lOVCgxMykgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ0FMRU5EQVJfTkFNRWAgVkFSQ0hBUigyMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE1JU0ZJUkVfSU5TVFJgIFNNQUxMSU5UKDIpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEpPQl9EQVRBYCBCTE9CIE5VTEwgREVGQVVMVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgU0NIRURfTkFNRWAsIGBUUklHR0VSX05BTUVgLCBgVFJJR0dFUl9HUk9VUGApLA0KK0lOREVYIGBJRFhfRk5fUVpfVF9KYCAoYFNDSEVEX05BTUVgIEFTQywgYEpPQl9OQU1FYCBBU0MsIGBKT0JfR1JPVVBgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9UX0pHYCAoYFNDSEVEX05BTUVgIEFTQywgYEpPQl9HUk9VUGAgQVNDKSwNCitJTkRFWCBgSURYX0ZOX1FaX1RfQ2AgKGBTQ0hFRF9OQU1FYCBBU0MsIGBDQUxFTkRBUl9OQU1FYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfVF9HYCAoYFNDSEVEX05BTUVgIEFTQywgYFRSSUdHRVJfR1JPVVBgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9UX1NUQVRFYCAoYFNDSEVEX05BTUVgIEFTQywgYFRSSUdHRVJfU1RBVEVgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9UX05fU1RBVEVgIChgU0NIRURfTkFNRWAgQVNDLCBgVFJJR0dFUl9OQU1FYCBBU0MsIGBUUklHR0VSX0dST1VQYCBBU0MsIGBUUklHR0VSX1NUQVRFYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfVF9OX0dfU1RBVEVgIChgU0NIRURfTkFNRWAgQVNDLCBgVFJJR0dFUl9HUk9VUGAgQVNDLCBgVFJJR0dFUl9TVEFURWAgQVNDKSwNCitJTkRFWCBgSURYX0ZOX1FaX1RfTkVYVF9GSVJFX1RJTUVgIChgU0NIRURfTkFNRWAgQVNDLCBgTkVYVF9GSVJFX1RJTUVgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9UX05GVF9TVGAgKGBTQ0hFRF9OQU1FYCBBU0MsIGBUUklHR0VSX1NUQVRFYCBBU0MsIGBORVhUX0ZJUkVfVElNRWAgQVNDKSwNCitJTkRFWCBgSURYX0ZOX1FaX1RfTkZUX01JU0ZJUkVgIChgU0NIRURfTkFNRWAgQVNDLCBgTUlTRklSRV9JTlNUUmAgQVNDLCBgTkVYVF9GSVJFX1RJTUVgIEFTQyksDQorSU5ERVggYElEWF9GTl9RWl9UX05GVF9TVF9NSVNGSVJFYCAoYFNDSEVEX05BTUVgIEFTQywgYE1JU0ZJUkVfSU5TVFJgIEFTQywgYE5FWFRfRklSRV9USU1FYCBBU0MsIGBUUklHR0VSX1NUQVRFYCBBU0MpLA0KK0lOREVYIGBJRFhfRk5fUVpfVF9ORlRfU1RfTUlTRklSRV9HUlBgIChgU0NIRURfTkFNRWAgQVNDLCBgTUlTRklSRV9JTlNUUmAgQVNDLCBgTkVYVF9GSVJFX1RJTUVgIEFTQywgYFRSSUdHRVJfR1JPVVBgIEFTQywgYFRSSUdHRVJfU1RBVEVgIEFTQyksDQorQ09OU1RSQUlOVCBgZm5fcXpfdHJpZ2dlcnNfaWJma18xYA0KK0ZPUkVJR04gS0VZIChgU0NIRURfTkFNRWAgLCBgSk9CX05BTUVgICwgYEpPQl9HUk9VUGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fcXpfam9iX2RldGFpbHNgIChgU0NIRURfTkFNRWAgLCBgSk9CX05BTUVgICwgYEpPQl9HUk9VUGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3Jlc3RyaWN0ZWRfdXJsDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9yZXN0cmljdGVkX3VybGAgKA0KKyAgYFJFU1RSSUNURURfVVJMYCBWQVJDSEFSKDI1MCkgTk9UIE5VTEwsDQorICBgRlVOQ1RJT05fQ0RgIFZBUkNIQVIoMzApIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgUkVTVFJJQ1RFRF9VUkxgLCBgRlVOQ1RJT05fQ0RgKSwNCitJTkRFWCBgRktfUkVTVFJJQ1RFRF9VUkxfRlVOQ1RJT05fQ0RgIChgRlVOQ1RJT05fQ0RgIEFTQyksDQorQ09OU1RSQUlOVCBgRktfUkVTVFJJQ1RFRF9VUkxfRlVOQ1RJT05fQ0RgDQorRk9SRUlHTiBLRVkgKGBGVU5DVElPTl9DRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fZnVuY3Rpb25gIChgRlVOQ1RJT05fQ0RgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9yb2xlDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9yb2xlYCAoDQorICBgUk9MRV9JRGAgSU5UKDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCisgIGBST0xFX05BTUVgIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwNCisgIGBBQ1RJVkVfWU5gIFZBUkNIQVIoMSkgTk9UIE5VTEwgREVGQVVMVCAnWScsDQorICBgUFJJT1JJVFlgIERFQ0lNQUwoNCwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYFJPTEVfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KKyAgQVVUT19JTkNSRU1FTlQgPSAxNw0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorQUxURVIgVEFCTEUgYG9zYW1fY29yZWAuYGZuX3JvbGVgIE1PRElGWSBgUk9MRV9OQU1FYCBWQVJDSEFSICgyNTUpOw0KKw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fcm9sZV9jb21wb3NpdGUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3JvbGVfY29tcG9zaXRlYCAoDQorICBgUEFSRU5UX1JPTEVfSURgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgQ0hJTERfUk9MRV9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYFBBUkVOVF9ST0xFX0lEYCwgYENISUxEX1JPTEVfSURgKSwNCitJTkRFWCBgRktfRk5fUk9MRV9DT01QT1NJVEVfQ0hJTERgIChgQ0hJTERfUk9MRV9JRGAgQVNDKSwNCitDT05TVFJBSU5UIGBGS19GTl9ST0xFX0NPTVBPU0lURV9DSElMRGANCitGT1JFSUdOIEtFWSAoYENISUxEX1JPTEVfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3JvbGVgIChgUk9MRV9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1JPTEVfQ09NUE9TSVRFX1BBUkVOVGANCitGT1JFSUdOIEtFWSAoYFBBUkVOVF9ST0xFX0lEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9yb2xlYCAoYFJPTEVfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9yb2xlX2Z1bmN0aW9uDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl9yb2xlX2Z1bmN0aW9uYCAoDQorICBgUk9MRV9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBGVU5DVElPTl9DRGAgVkFSQ0hBUigzMCkgTk9UIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBST0xFX0lEYCwgYEZVTkNUSU9OX0NEYCksDQorSU5ERVggYEZOX1JPTEVfRlVOQ1RJT05fRlVOQ1RJT05fQ0RgIChgRlVOQ1RJT05fQ0RgIEFTQyksDQorSU5ERVggYEZOX1JPTEVfRlVOQ1RJT05fUk9MRV9JRGAgKGBST0xFX0lEYCBBU0MpLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1JPTEVfX1JFRl8xOThfRk5fUk9MRWANCitGT1JFSUdOIEtFWSAoYFJPTEVfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3JvbGVgIChgUk9MRV9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1JPTEVfX1JFRl8yMDFfRk5fRlVOQ1RgDQorRk9SRUlHTiBLRVkgKGBGVU5DVElPTl9DRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fZnVuY3Rpb25gIChgRlVOQ1RJT05fQ0RgKSkNCisgIEVOR0lORSA9IElubm9EQg0KK0RFRkFVTFQgQ0hBUkFDVEVSIFNFVCA9IHV0Zjg7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFRhYmxlIG9zYW1fY29yZS5mbl9zY2hlZHVsZV93b3JrZmxvd3MNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3NjaGVkdWxlX3dvcmtmbG93c2AgKA0KKyAgYGlkX3NjaGVkdWxlX3dvcmtmbG93c2AgQklHSU5UKDI1KSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCisgIGB3b3JrZmxvd19zZXJ2ZXJfdXJsYCBWQVJDSEFSKDQ1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGB3b3JrZmxvd19rZXlgIFZBUkNIQVIoNDUpIE5PVCBOVUxMLA0KKyAgYHdvcmtmbG93X2FyZ3VtZW50c2AgVkFSQ0hBUig0NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgc3RhcnREYXRlVGltZUNyb25gIFZBUkNIQVIoNDUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYGVuZERhdGVUaW1lYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBzdGFydF9kYXRlX3RpbWVgIFRJTUVTVEFNUCBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgYHJlY3VycmVuY2VgIFZBUkNIQVIoNDUpIE5VTEwgREVGQVVMVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgaWRfc2NoZWR1bGVfd29ya2Zsb3dzYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fdGFiDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBvc2FtX2NvcmVgLmBmbl90YWJgICgNCisgIGBUQUJfQ0RgIFZBUkNIQVIoMzApIE5PVCBOVUxMLA0KKyAgYFRBQl9OQU1FYCBWQVJDSEFSKDUwKSBOT1QgTlVMTCwNCisgIGBUQUJfREVTQ1JgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBQ1RJT05gIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBGVU5DVElPTl9DRGAgVkFSQ0hBUigzMCkgTk9UIE5VTEwsDQorICBgQUNUSVZFX1lOYCBDSEFSKDEpIE5PVCBOVUxMLA0KKyAgYFNPUlRfT1JERVJgIERFQ0lNQUwoMTEsMCkgTk9UIE5VTEwsDQorICBgUEFSRU5UX1RBQl9DRGAgVkFSQ0hBUigzMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgVEFCX1NFVF9DRGAgVkFSQ0hBUigzMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBUQUJfQ0RgKSwNCitJTkRFWCBgRktfRk5fVEFCX0ZVTkNUSU9OX0NEYCAoYEZVTkNUSU9OX0NEYCBBU0MpLA0KK0lOREVYIGBGS19GTl9UQUJfU0VUX0NEYCAoYFRBQl9TRVRfQ0RgIEFTQyksDQorQ09OU1RSQUlOVCBgRktfRk5fVEFCX0ZVTkNUSU9OX0NEYA0KK0ZPUkVJR04gS0VZIChgRlVOQ1RJT05fQ0RgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX2Z1bmN0aW9uYCAoYEZVTkNUSU9OX0NEYCksDQorQ09OU1RSQUlOVCBgRktfRk5fVEFCX1NFVF9DRGANCitGT1JFSUdOIEtFWSAoYFRBQl9TRVRfQ0RgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX2x1X3RhYl9zZXRgIChgVEFCX1NFVF9DRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3RhYl9zZWxlY3RlZA0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fdGFiX3NlbGVjdGVkYCAoDQorICBgU0VMRUNURURfVEFCX0NEYCBWQVJDSEFSKDMwKSBOT1QgTlVMTCwNCisgIGBUQUJfVVJJYCBWQVJDSEFSKDQwKSBOT1QgTlVMTCwNCitQUklNQVJZIEtFWSAoYFNFTEVDVEVEX1RBQl9DRGAsIGBUQUJfVVJJYCksDQorQ09OU1RSQUlOVCBgRktfRk5fVEFCX1NFTEVDVEVEX1RBQl9DRGANCitGT1JFSUdOIEtFWSAoYFNFTEVDVEVEX1RBQl9DRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fdGFiYCAoYFRBQl9DRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3VzZXINCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3VzZXJgICgNCisgIGBVU0VSX0lEYCBJTlQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KKyAgYE9SR19JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBNQU5BR0VSX0lEYCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEZJUlNUX05BTUVgIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE1JRERMRV9OQU1FYCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBMQVNUX05BTUVgIFZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYFBIT05FYCBWQVJDSEFSKDI1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBGQVhgIFZBUkNIQVIoMjUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYENFTExVTEFSYCBWQVJDSEFSKDI1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBFTUFJTGAgVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQUREUkVTU19JRGAgREVDSU1BTCgxMSwwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBBTEVSVF9NRVRIT0RfQ0RgIFZBUkNIQVIoMTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEhSSURgIFZBUkNIQVIoMjApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYE9SR19VU0VSX0lEYCBWQVJDSEFSKDIwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBPUkdfQ09ERWAgVkFSQ0hBUigzMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTE9HSU5fSURgIFZBUkNIQVIoMjUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYExPR0lOX1BXRGAgVkFSQ0hBUigyNSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTEFTVF9MT0dJTl9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCBPTiBVUERBVEUgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgQUNUSVZFX1lOYCBWQVJDSEFSKDEpIE5PVCBOVUxMIERFRkFVTFQgJ1knLA0KKyAgYENSRUFURURfSURgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ1JFQVRFRF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBNT0RJRklFRF9JRGAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBNT0RJRklFRF9EQVRFYCBUSU1FU1RBTVAgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGBJU19JTlRFUk5BTF9ZTmAgQ0hBUigxKSBOT1QgTlVMTCBERUZBVUxUICdOJywNCisgIGBBRERSRVNTX0xJTkVfMWAgVkFSQ0hBUigxMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYEFERFJFU1NfTElORV8yYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ0lUWWAgVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgU1RBVEVfQ0RgIFZBUkNIQVIoMykgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgWklQX0NPREVgIFZBUkNIQVIoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYENPVU5UUllfQ0RgIFZBUkNIQVIoMykgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgTE9DQVRJT05fQ0xMSWAgVkFSQ0hBUig4KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBPUkdfTUFOQUdFUl9VU0VSSURgIFZBUkNIQVIoMjApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYENPTVBBTllgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBERVBBUlRNRU5UX05BTUVgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBKT0JfVElUTEVgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBUSU1FWk9ORWAgSU5UKDExKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBERVBBUlRNRU5UYCBWQVJDSEFSKDI1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBCVVNJTkVTU19VTklUYCBWQVJDSEFSKDI1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBCVVNJTkVTU19VTklUX05BTUVgIFZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBDT1NUX0NFTlRFUmAgVkFSQ0hBUigyNSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgRklOX0xPQ19DT0RFYCBWQVJDSEFSKDEwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBTSUxPX1NUQVRVU2AgVkFSQ0hBUigxMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorUFJJTUFSWSBLRVkgKGBVU0VSX0lEYCksDQorVU5JUVVFIElOREVYIGBGTl9VU0VSX0hSSURgIChgSFJJRGAgQVNDKSwNCitVTklRVUUgSU5ERVggYEZOX1VTRVJfTE9HSU5fSURgIChgTE9HSU5fSURgIEFTQyksDQorSU5ERVggYEZOX1VTRVJfQUREUkVTU19JRGAgKGBBRERSRVNTX0lEYCBBU0MpLA0KK0lOREVYIGBGTl9VU0VSX0FMRVJUX01FVEhPRF9DRGAgKGBBTEVSVF9NRVRIT0RfQ0RgIEFTQyksDQorSU5ERVggYEZOX1VTRVJfT1JHX0lEYCAoYE9SR19JRGAgQVNDKSwNCitJTkRFWCBgRktfRk5fVVNFUl9SRUZfMTk3X0ZOX1VTRVJgIChgTUFOQUdFUl9JRGAgQVNDKSwNCitJTkRFWCBgRktfRk5fVVNFUl9SRUZfMTk4X0ZOX1VTRVJgIChgQ1JFQVRFRF9JRGAgQVNDKSwNCitJTkRFWCBgRktfRk5fVVNFUl9SRUZfMTk5X0ZOX1VTRVJgIChgTU9ESUZJRURfSURgIEFTQyksDQorSU5ERVggYEZLX1RJTUVaT05FYCAoYFRJTUVaT05FYCBBU0MpLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1VTRVJfUkVGXzExMF9GTl9PUkdgDQorRk9SRUlHTiBLRVkgKGBPUkdfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX29yZ2AgKGBPUkdfSURgKSwNCitDT05TVFJBSU5UIGBGS19GTl9VU0VSX1JFRl8xMjNfRk5fTFVfQUxgDQorRk9SRUlHTiBLRVkgKGBBTEVSVF9NRVRIT0RfQ0RgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX2x1X2FsZXJ0X21ldGhvZGAgKGBBTEVSVF9NRVRIT0RfQ0RgKSwNCitDT05TVFJBSU5UIGBGS19GTl9VU0VSX1JFRl8xOTdfRk5fVVNFUmANCitGT1JFSUdOIEtFWSAoYE1BTkFHRVJfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3VzZXJgIChgVVNFUl9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1VTRVJfUkVGXzE5OF9GTl9VU0VSYA0KK0ZPUkVJR04gS0VZIChgQ1JFQVRFRF9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fdXNlcmAgKGBVU0VSX0lEYCksDQorQ09OU1RSQUlOVCBgRktfRk5fVVNFUl9SRUZfMTk5X0ZOX1VTRVJgDQorRk9SRUlHTiBLRVkgKGBNT0RJRklFRF9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fdXNlcmAgKGBVU0VSX0lEYCksDQorQ09OU1RSQUlOVCBgRktfVElNRVpPTkVgDQorRk9SRUlHTiBLRVkgKGBUSU1FWk9ORWApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fbHVfdGltZXpvbmVgIChgVElNRVpPTkVfSURgKSkNCisgIEVOR0lORSA9IElubm9EQg0KKyAgQVVUT19JTkNSRU1FTlQgPSAzDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3VzZXJfcHNldWRvX3JvbGUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3VzZXJfcHNldWRvX3JvbGVgICgNCisgIGBQU0VVRE9fUk9MRV9JRGAgSU5UKDExKSBOT1QgTlVMTCwNCisgIGBVU0VSX0lEYCBJTlQoMTEpIE5PVCBOVUxMLA0KK1BSSU1BUlkgS0VZIChgUFNFVURPX1JPTEVfSURgLCBgVVNFUl9JRGApLA0KK0lOREVYIGBGS19QU0VVRE9fUk9MRV9VU0VSX0lEYCAoYFVTRVJfSURgIEFTQyksDQorQ09OU1RSQUlOVCBgRktfUFNFVURPX1JPTEVfUFNFVURPX1JPTEVfSURgDQorRk9SRUlHTiBLRVkgKGBQU0VVRE9fUk9MRV9JRGApDQorUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gZm5fcm9sZWAgKGBST0xFX0lEYCksDQorQ09OU1RSQUlOVCBgRktfUFNFVURPX1JPTEVfVVNFUl9JRGANCitGT1JFSUdOIEtFWSAoYFVTRVJfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3VzZXJgIChgVVNFUl9JRGApKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLmZuX3VzZXJfcm9sZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5fdXNlcl9yb2xlYCAoDQorICBgVVNFUl9JRGAgSU5UKDEwKSBOT1QgTlVMTCwNCisgIGBST0xFX0lEYCBJTlQoMTApIE5PVCBOVUxMLA0KKyAgYFBSSU9SSVRZYCBERUNJTUFMKDQsMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQVBQX0lEYCBJTlQoMTEpIE5PVCBOVUxMIERFRkFVTFQgJzEnLA0KK1BSSU1BUlkgS0VZIChgVVNFUl9JRGAsIGBST0xFX0lEYCwgYEFQUF9JRGApLA0KK0lOREVYIGBGTl9VU0VSX1JPTEVfUk9MRV9JRGAgKGBST0xFX0lEYCBBU0MpLA0KK0lOREVYIGBGTl9VU0VSX1JPTEVfVVNFUl9JRGAgKGBVU0VSX0lEYCBBU0MpLA0KK0lOREVYIGBGS19GTl9VU0VSX19SRUZfMTc4X0ZOX0FQUF9pZHhgIChgQVBQX0lEYCBBU0MpLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1VTRVJfX1JFRl8xNzJfRk5fVVNFUmANCitGT1JFSUdOIEtFWSAoYFVTRVJfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3VzZXJgIChgVVNFUl9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1VTRVJfX1JFRl8xNzVfRk5fUk9MRWANCitGT1JFSUdOIEtFWSAoYFJPTEVfSURgKQ0KK1JFRkVSRU5DRVMgYG9zYW1fY29yZWAuYGZuX3JvbGVgIChgUk9MRV9JRGApLA0KK0NPTlNUUkFJTlQgYEZLX0ZOX1VTRVJfX1JFRl8xNzhfRk5fQVBQYA0KK0ZPUkVJR04gS0VZIChgQVBQX0lEYCkNCitSRUZFUkVOQ0VTIGBvc2FtX2NvcmVgLmBmbl9hcHBgIChgQVBQX0lEYCkpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5fd29ya2Zsb3cNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYGZuX3dvcmtmbG93YCAoDQorICBgaWRgIE1FRElVTUlOVCg5KSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCisgIGBuYW1lYCBWQVJDSEFSKDIwKSBOT1QgTlVMTCwNCisgIGBkZXNjcmlwdGlvbmAgVkFSQ0hBUig1MDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYHJ1bl9saW5rYCBWQVJDSEFSKDMwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgc3VzcGVuZF9saW5rYCBWQVJDSEFSKDMwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgbW9kaWZpZWRfbGlua2AgVkFSQ0hBUigzMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYGFjdGl2ZV95bmAgVkFSQ0hBUigzMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYGNyZWF0ZWRgIFZBUkNIQVIoMzAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBjcmVhdGVkX2J5YCBJTlQoMTEpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgYG1vZGlmaWVkYCBWQVJDSEFSKDMwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgbW9kaWZpZWRfYnlgIElOVCgxMSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgd29ya2Zsb3dfa2V5YCBWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCitQUklNQVJZIEtFWSAoYGlkYCksDQorVU5JUVVFIElOREVYIGBuYW1lYCAoYG5hbWVgIEFTQykpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuZm5feG1sdHlwZQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgb3NhbV9jb3JlYC5gZm5feG1sdHlwZWAgKA0KKyAgYElEYCBERUNJTUFMKDEwLDApIE5PVCBOVUxMLA0KKyAgYFhNTF9ET0NVTUVOVGAgVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCitVTklRVUUgSU5ERVggYEZOX1hNTFRZUEVfSURgIChgSURgIEFTQykpDQorICBFTkdJTkUgPSBJbm5vREINCitERUZBVUxUIENIQVJBQ1RFUiBTRVQgPSB1dGY4Ow0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSBUYWJsZSBvc2FtX2NvcmUuc2NoZW1hX2luZm8NCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYHNjaGVtYV9pbmZvYCAoDQorICBgU0NIRU1BX0lEYCBWQVJDSEFSKDI1KSBOT1QgTlVMTCwNCisgIGBTQ0hFTUFfREVTQ2AgVkFSQ0hBUig3NSkgTk9UIE5VTEwsDQorICBgREFUQVNPVVJDRV9UWVBFYCBWQVJDSEFSKDEwMCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBgQ09OTkVDVElPTl9VUkxgIFZBUkNIQVIoMjAwKSBOT1QgTlVMTCwNCisgIGBVU0VSX05BTUVgIFZBUkNIQVIoNDUpIE5PVCBOVUxMLA0KKyAgYFBBU1NXT1JEYCBWQVJDSEFSKDQ1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGBEUklWRVJfQ0xBU1NgIFZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGBNSU5fUE9PTF9TSVpFYCBJTlQoMTEpIE5PVCBOVUxMLA0KKyAgYE1BWF9QT09MX1NJWkVgIElOVCgxMSkgTk9UIE5VTEwsDQorICBgSURMRV9DT05ORUNUSU9OX1RFU1RfUEVSSU9EYCBJTlQoMTEpIE5PVCBOVUxMKQ0KKyAgRU5HSU5FID0gSW5ub0RCDQorREVGQVVMVCBDSEFSQUNURVIgU0VUID0gdXRmODsNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gVGFibGUgb3NhbV9jb3JlLm9zYW1fY29yZV9qb2INCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9zYW1fY29yZWAuYG9zYW1fY29yZV9qb2JgICgNCisgIGBKT0JfSURgICAgICAgICBCSU5BUlkoMTYpICAgTk9UIE5VTEwgUFJJTUFSWSBLRVksDQorICBgQ1JFQVRFRF9EQVRFYCAgVElNRVNUQU1QICAgIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgTU9ESUZJRURfREFURWAgVElNRVNUQU1QICAgIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsDQorICBgSk9CX1NUQVRVU2AgICAgVkFSQ0hBUig1MCkgIE5VTEwgQ09MTEFURSAndXRmOF9iaW4nLA0KKyAgYEpPQl9UWVBFYCAgICAgIFZBUkNIQVIoNTApICBOVUxMIENPTExBVEUgJ3V0ZjhfYmluJywNCisgIGBKT0JfREFUQWAgICAgICBNRURJVU1URVhUICAgTlVMTCBDT0xMQVRFICd1dGY4X2JpbicsDQorICBgUEFSRU5UX0pPQl9JRGAgQklOQVJZKDE2KSAgIE5VTEwsDQorICBgVEFLRU5fQllgICAgICAgVkFSQ0hBUigxMDApIE5VTEwgQ09MTEFURSAndXRmOF9iaW4nLA0KK0NPTlNUUkFJTlQgYEZLX09XTklOR19WSURfSk9CX1BBUkVOVGAgRk9SRUlHTiBLRVkgKGBQQVJFTlRfSk9CX0lEYCkgUkVGRVJFTkNFUyBgb3NhbV9jb3JlYC5gdmlkX2pvYmAgKGBKT0JfSURgKQ0KKykgRU5HSU5FPUlubm9EQiBBVVRPX0lOQ1JFTUVOVD02IERFRkFVTFQgQ0hBUlNFVD11dGY4IENPTExBVEU9dXRmOF9iaW47DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIFZpZXcgb3NhbV9jb3JlLnZfdXJsX2FjY2Vzcw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgT1IgUkVQTEFDRSBBTEdPUklUSE09VU5ERUZJTkVEIFNRTCBTRUNVUklUWSBERUZJTkVSIFZJRVcgYHZfdXJsX2FjY2Vzc2AgQVMgc2VsZWN0IGRpc3RpbmN0IGBtYC5gQUNUSU9OYCBBUyBgVVJMYCxgbWAuYEZVTkNUSU9OX0NEYCBBUyBgRlVOQ1RJT05fQ0RgIGZyb20gYGZuX21lbnVgIGBtYCB3aGVyZSAoYG1gLmBBQ1RJT05gIGlzIG5vdCBudWxsKSB1bmlvbiBzZWxlY3QgZGlzdGluY3QgYHRgLmBBQ1RJT05gIEFTIGBVUkxgLGB0YC5gRlVOQ1RJT05fQ0RgIEFTIGBGVU5DVElPTl9DRGAgZnJvbSBgZm5fdGFiYCBgdGAgd2hlcmUgKGB0YC5gQUNUSU9OYCBpcyBub3QgbnVsbCkgdW5pb24gc2VsZWN0IGByYC5gUkVTVFJJQ1RFRF9VUkxgIEFTIGBVUkxgLGByYC5gRlVOQ1RJT05fQ0RgIEFTIGBGVU5DVElPTl9DRGAgZnJvbSBgZm5fcmVzdHJpY3RlZF91cmxgIGByYDsNCitTRVQgRk9SRUlHTl9LRVlfQ0hFQ0tTID0gMTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3BvcnRhbC5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9wb3J0YWwucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDRlODVkCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9wb3J0YWwucHJvcGVydGllcwpAQCAtMCwwICsxLDg1IEBACisjIyMNCisjID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIE9OQVAgUG9ydGFsIFNESw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgQ29weXJpZ2h0IKkgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjDQorIyBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHNvZnR3YXJlIGNvbnRhaW5lZCBoZXJlaW4gaXMgbGljZW5zZWQNCisjIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSCTTGljZW5zZZQpOw0KKyMgeW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgDQorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjDQorIyBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIGRvY3VtZW50YXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyMgdW5kZXIgdGhlIENyZWF0aXZlIENvbW1vbnMgTGljZW5zZSwgQXR0cmlidXRpb24gNC4wIEludGwuICh0aGUgk0xpY2Vuc2WUKTsNCisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGRvY3VtZW50YXRpb24gZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMNCisjICAgICAgICAgICAgIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvDQorIw0KKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBkb2N1bWVudGF0aW9uDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjDQorIyA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIw0KKyMgRUNPTVAgaXMgYSB0cmFkZW1hcmsgYW5kIHNlcnZpY2UgbWFyayBvZiBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisjIyMNCisjIFByb3BlcnRpZXMgcmVhZCBieSBFQ09NUCBGcmFtZXdvcmsgbGlicmFyeSwgZWNvbXBGVy5qYXINCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHNob3VsZCBOT1QgYmUgY2hhbmdlZCBieSBwYXJ0bmVyIGFwcGxpY2F0aW9ucy4NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK3BvcnRhbC5hcGkucHJlZml4ID0gL2FwaQ0KK21heC5pZGxlLnRpbWUgPSA1DQordXNlci5hdHRyaWJ1dGUubmFtZSA9IHVzZXJfYXR0cmlidXRlDQorDQorI1VzZSBSRVNUIEFQSSBpbnN0ZWFkIG9mIFVFQiB0byBmZXRjaCB0aGUgZnVuY3Rpb25hbCBtZW51IGRhdGENCit1c2VfcmVzdF9mb3JfZnVuY3Rpb25hbF9tZW51PXRydWUNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIE1VU1QgYmUgY2hhbmdlZCBieSBwYXJ0bmVyIGFwcGxpY2F0aW9ucy4NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KKyMgTmFtZSBvZiBqYXZhIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgT25Cb2FyZGluZ0FwaVNlcnZpY2UgaW50ZXJmYWNlLg0KK3BvcnRhbC5hcGkuaW1wbC5jbGFzcyA9IG9yZy5vbmFwLnBvcnRhbGFwcC5zZXJ2aWNlLk9uQm9hcmRpbmdBcGlTZXJ2aWNlSW1wbA0KKw0KKyMgTG9nIE9uIGZvciBzaW5nbGUgc2lnbiBvbg0KK2Vjb21wX3JlZGlyZWN0X3VybCA9IGh0dHA6Ly9wb3J0YWwuYXBpLnNpbXBsZWRlbW8ub25hcC5vcmc6ODk4OS9PTkFQUE9SVEFML2xvZ2luLmh0bQ0KKw0KKyMgVVJMIG9mIHRoZSBFQ09NUCBQb3J0YWwgUkVTVCBBUEkNCitlY29tcF9yZXN0X3VybCA9IGh0dHA6Ly9wb3J0YWwuYXBpLnNpbXBsZWRlbW8ub25hcC5vcmc6ODk4OS9PTkFQUE9SVEFML2F1eGFwaQ0KKw0KKyMgQXBwbGljYXRpb25zIGRvIG5vdCBuZWVkIHRvIHJ1biBhIFVFQiBsaXN0ZW5lciBhZnRlciAxNjA3Lg0KK3VlYl9saXN0ZW5lcnNfZW5hYmxlID0gZmFsc2UNCisNCisjIFVFQiBDb25maWd1cmF0aW9uDQorIyBJbiByZWxlYXNlIDE2MDcsIGFsbCA2IGVudHJpZXMgYmVsb3cgd2VyZSByZXF1aXJlZC4NCisjIEluIHJlbGVhc2UgMTYxMCwgaWYga2V5IHVlYl9saXN0ZW5lcnNfZW5hYmxlIGlzIHNldCB0byBmYWxzZSwNCisjIHRoZW4gb25seSB0aGUgdWViX2FwcF9rZXkgaXMgcmVxdWlyZWQuDQorIyBVRUIgc2VydmVycw0KKyN1ZWJfdXJsX2xpc3QgPSB0b2RvX3VlYl91cmxfbGlzdA0KKyMgRUNPTVAgUG9ydGFsIGxpc3RlbnMgb24gdGhpcyBVRUIgdG9waWMNCisjZWNvbXBfcG9ydGFsX2luYm94X25hbWUgPSBFQ09NUC1QT1JUQUwtSU5CT1gtREVWLUxPQ0FMDQorDQorIyBSZXBsYWNlIHRoZXNlIDMgZGVmYXVsdCB2YWx1ZXMgd2l0aCB0aGUgb25lcyBmb3IgeW91ciBzcGVjaWZpYyBBcHAsDQorIyBhcyBzaG93biBvbiB0aGUgb24tYm9hcmRpbmcgcGFnZSBvbiB0aGUgRUNPTVAgUG9ydGFsIHdlYiBhcHBsaWNhdGlvbi4NCit1ZWJfYXBwX2tleSA9IG9WR2lrSUlGanpqVU50cGgNCit1ZWJfYXBwX3NlY3JldCA9IDh4Sk5QY2dLSkpnSGhmYnRoNkMxeU4zZQ0KK3VlYl9hcHBfbWFpbGJveF9uYW1lID0gRUNPTVAtUE9SVEFMLU9VVEJPWC1URVNULTc3NjIxDQorIyBDb25zdW1lciBncm91cCBuYW1lIGZvciBVRUIgdG9waWMuDQorIyBVc2UgdGhlIHNwZWNpYWwgdGFnIHRvIGdlbmVyYXRlIGEgdW5pcXVlIG9uZSBmb3IgZWFjaCBzZGstYXBwIHNlcnZlci4NCisjdWViX2FwcF9jb25zdW1lcl9ncm91cF9uYW1lID0ge1VVSUR9DQorDQorI2RlY3J5cHRpb25fa2V5CQkJCSAgPSBBR0xEZEc0RDA0QkttMkl4SVdFcjhvPT0NCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3BvcnRhbF90ZW1wbGF0ZS5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9wb3J0YWxfdGVtcGxhdGUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE0MTNhCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9wb3J0YWxfdGVtcGxhdGUucHJvcGVydGllcwpAQCAtMCwwICsxLDMyIEBACisjIFByb3BlcnRpZXMgcmVhZCBieSBFQ09NUCBGcmFtZXdvcmsgbGlicmFyeSwgZWNvbXBGVy5qYXINCisNCitwb3J0YWwuYXBpLmltcGwuY2xhc3MgPSBvcmcub25hcC5wb3J0YWxhcHAuc2VydmljZS5PbkJvYXJkaW5nQXBpU2VydmljZUltcGwNCitwb3J0YWwuYXBpLnByZWZpeCA9IC9hcGkNCittYXguaWRsZS50aW1lID0gNQ0KK3VzZXIuYXR0cmlidXRlLm5hbWUgPSB1c2VyX2F0dHJpYnV0ZQ0KK2RlY3J5cHRpb25fa2V5ID0gJHtWSURfREVDUllQVElPTl9LRVl9DQorDQorIyBMb2cgT24gZm9yIHNpbmdsZSBzaWduIG9uDQorZWNvbXBfcmVkaXJlY3RfdXJsCT0gJHtWSURfRUNPTVBfUkVESVJFQ1RfVVJMfQ0KKw0KKw0KKyMgVVJMIG9mIHRoZSBFQ09NUCBQb3J0YWwgUkVTVCBBUEkNCitlY29tcF9yZXN0X3VybCA9ICR7VklEX0VDT01QX1JFU1RfVVJMfQ0KKw0KKyMgVUVCIHNlcnZlcnMNCit1ZWJfdXJsX2xpc3QgPSAke1ZJRF9VRUJfVVJMX0xJU1R9DQorDQorIyBFQ09NUCBQb3J0YWwgbGlzdGVucyBoZXJlIA0KK2Vjb21wX3BvcnRhbF9pbmJveF9uYW1lID0gJHtWSURfRUNPTVBfUE9SVEFMX0lOQk9YX05BTUV9DQorDQorIyBSZXBsYWNlIHRoZXNlIDMgZGVmYXVsdCB2YWx1ZXMgd2l0aCB0aGUgb25lcyBmb3IgeW91ciBzcGVjaWZpYyBBcHAsDQorIyBhcyBzaG93biBvbiB0aGUgb24tYm9hcmRpbmcgcGFnZSBvbiB0aGUgRUNPTVAgUG9ydGFsIHdlYnNpdGUuDQordWViX2FwcF9rZXkgPSAke1ZJRF9VRUJfQVBQX0tFWX0NCit1ZWJfYXBwX3NlY3JldCA9ICR7VklEX1VFQl9BUFBfU0VDUkVUfQ0KK3VlYl9hcHBfbWFpbGJveF9uYW1lID0gJHtWSURfVUVCX0FQUF9NQUlMQk9YX05BTUV9DQorIyBDb25zdW1lciBncm91cCBuYW1lIGZvciBVRUIgdG9waWMuDQorIyBVc2UgdGhlIHNwZWNpYWwgdGFnIHRvIGdlbmVyYXRlIGEgdW5pcXVlIG9uZSBmb3IgZWFjaCBzZGstYXBwIHNlcnZlci4NCit1ZWJfYXBwX2NvbnN1bWVyX2dyb3VwX25hbWUgPSAke1ZJRF9VRUJfQ09OU1VNRVJfR1JPVVB9DQorDQordWViX2xpc3RlbmVyc19lbmFibGUgPSAke1ZJRF9VRUJfTElTVEVORVJTX0VOQUJMRX0NCit1ZWJfcmVzdF9mb3JfZnVuY3Rpb25fbWVudSA9IHRydWUNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3NhbXBsZVRvc2NhLmNzYXIgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3NhbXBsZVRvc2NhLmNzYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUzMmY1OAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvc2FtcGxlVG9zY2EuY3NhcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3NlcnZlci54bWwgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3NlcnZlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlkYzI3YQotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi9yZXNvdXJjZXMvc2VydmVyLnhtbApAQCAtMCwwICsxLDE4NiBAQAorPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUNCisgIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aA0KKyAgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLg0KKyAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjANCisgICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoDQorICB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorLS0+DQorPCEtLSBOb3RlOiAgQSAiU2VydmVyIiBpcyBub3QgaXRzZWxmIGEgIkNvbnRhaW5lciIsIHNvIHlvdSBtYXkgbm90DQorICAgICBkZWZpbmUgc3ViY29tcG9uZW50cyBzdWNoIGFzICJWYWx2ZXMiIGF0IHRoaXMgbGV2ZWwuDQorICAgICBEb2N1bWVudGF0aW9uIGF0IC9kb2NzL2NvbmZpZy9zZXJ2ZXIuaHRtbA0KKyAtLT4NCis8U2VydmVyIHBvcnQ9IjgwMDUiIHNodXRkb3duPSJTSFVURE9XTiI+DQorICA8TGlzdGVuZXIgY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLnN0YXJ0dXAuVmVyc2lvbkxvZ2dlckxpc3RlbmVyIiAvPg0KKyAgPCEtLSBTZWN1cml0eSBsaXN0ZW5lci4gRG9jdW1lbnRhdGlvbiBhdCAvZG9jcy9jb25maWcvbGlzdGVuZXJzLmh0bWwNCisgIDxMaXN0ZW5lciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuc2VjdXJpdHkuU2VjdXJpdHlMaXN0ZW5lciIgLz4NCisgIC0tPg0KKyAgPCEtLUFQUiBsaWJyYXJ5IGxvYWRlci4gRG9jdW1lbnRhdGlvbiBhdCAvZG9jcy9hcHIuaHRtbCAtLT4NCisgIDxMaXN0ZW5lciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5BcHJMaWZlY3ljbGVMaXN0ZW5lciIgU1NMRW5naW5lPSJvbiIgLz4NCisgIDwhLS0gUHJldmVudCBtZW1vcnkgbGVha3MgZHVlIHRvIHVzZSBvZiBwYXJ0aWN1bGFyIGphdmEvamF2YXggQVBJcy0tPg0KKyAgPExpc3RlbmVyIGNsYXNzTmFtZT0ib3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLkpyZU1lbW9yeUxlYWtQcmV2ZW50aW9uTGlzdGVuZXIiIC8+DQorICA8TGlzdGVuZXIgY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLm1iZWFucy5HbG9iYWxSZXNvdXJjZXNMaWZlY3ljbGVMaXN0ZW5lciIgLz4NCisgIDxMaXN0ZW5lciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5UaHJlYWRMb2NhbExlYWtQcmV2ZW50aW9uTGlzdGVuZXIiIC8+DQorDQorICA8IS0tIEdsb2JhbCBKTkRJIHJlc291cmNlcw0KKyAgICAgICBEb2N1bWVudGF0aW9uIGF0IC9kb2NzL2puZGktcmVzb3VyY2VzLWhvd3RvLmh0bWwNCisgIC0tPg0KKyAgPEdsb2JhbE5hbWluZ1Jlc291cmNlcz4NCisgICAgPCEtLSBFZGl0YWJsZSB1c2VyIGRhdGFiYXNlIHRoYXQgY2FuIGFsc28gYmUgdXNlZCBieQ0KKyAgICAgICAgIFVzZXJEYXRhYmFzZVJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB1c2Vycw0KKyAgICAtLT4NCisgICAgPFJlc291cmNlIG5hbWU9IlVzZXJEYXRhYmFzZSIgYXV0aD0iQ29udGFpbmVyIg0KKyAgICAgIHR5cGU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuVXNlckRhdGFiYXNlIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJVc2VyIGRhdGFiYXNlIHRoYXQgY2FuIGJlIHVwZGF0ZWQgYW5kIHNhdmVkIg0KKyAgICAgIGZhY3Rvcnk9Im9yZy5hcGFjaGUuY2F0YWxpbmEudXNlcnMuTWVtb3J5VXNlckRhdGFiYXNlRmFjdG9yeSINCisgICAgICBwYXRobmFtZT0iY29uZi90b21jYXQtdXNlcnMueG1sIiAvPg0KKyAgPC9HbG9iYWxOYW1pbmdSZXNvdXJjZXM+DQorDQorICA8IS0tIEEgIlNlcnZpY2UiIGlzIGEgY29sbGVjdGlvbiBvZiBvbmUgb3IgbW9yZSAiQ29ubmVjdG9ycyIgdGhhdCBzaGFyZQ0KKyAgICAgICBhIHNpbmdsZSAiQ29udGFpbmVyIiBOb3RlOiAgQSAiU2VydmljZSIgaXMgbm90IGl0c2VsZiBhICJDb250YWluZXIiLA0KKyAgICAgICBzbyB5b3UgbWF5IG5vdCBkZWZpbmUgc3ViY29tcG9uZW50cyBzdWNoIGFzICJWYWx2ZXMiIGF0IHRoaXMgbGV2ZWwuDQorICAgICAgIERvY3VtZW50YXRpb24gYXQgL2RvY3MvY29uZmlnL3NlcnZpY2UuaHRtbA0KKyAgIC0tPg0KKyAgPFNlcnZpY2UgbmFtZT0iQ2F0YWxpbmEiPg0KKw0KKyAgICA8IS0tVGhlIGNvbm5lY3RvcnMgY2FuIHVzZSBhIHNoYXJlZCBleGVjdXRvciwgeW91IGNhbiBkZWZpbmUgb25lIG9yIG1vcmUgbmFtZWQgdGhyZWFkIHBvb2xzLS0+DQorICAgIDwhLS0NCisgICAgPEV4ZWN1dG9yIG5hbWU9InRvbWNhdFRocmVhZFBvb2wiIG5hbWVQcmVmaXg9ImNhdGFsaW5hLWV4ZWMtIg0KKyAgICAgICAgbWF4VGhyZWFkcz0iMTUwIiBtaW5TcGFyZVRocmVhZHM9IjQiLz4NCisgICAgLS0+DQorDQorDQorICAgIDwhLS0gQSAiQ29ubmVjdG9yIiByZXByZXNlbnRzIGFuIGVuZHBvaW50IGJ5IHdoaWNoIHJlcXVlc3RzIGFyZSByZWNlaXZlZA0KKyAgICAgICAgIGFuZCByZXNwb25zZXMgYXJlIHJldHVybmVkLiBEb2N1bWVudGF0aW9uIGF0IDoNCisgICAgICAgICBKYXZhIEhUVFAgQ29ubmVjdG9yOiAvZG9jcy9jb25maWcvaHR0cC5odG1sIChibG9ja2luZyAmIG5vbi1ibG9ja2luZykNCisgICAgICAgICBKYXZhIEFKUCAgQ29ubmVjdG9yOiAvZG9jcy9jb25maWcvYWpwLmh0bWwNCisgICAgICAgICBBUFIgKEhUVFAvQUpQKSBDb25uZWN0b3I6IC9kb2NzL2Fwci5odG1sDQorICAgICAgICAgRGVmaW5lIGEgbm9uLVNTTC9UTFMgSFRUUC8xLjEgQ29ubmVjdG9yIG9uIHBvcnQgODA4MA0KKyAgICAtLT4NCisgICAgPENvbm5lY3RvciBwb3J0PSI4MDgwIiBwcm90b2NvbD0iSFRUUC8xLjEiDQorICAgICAgY29ubmVjdGlvblRpbWVvdXQ9IjIwMDAwIg0KKyAgICAgIHJlZGlyZWN0UG9ydD0iODQ0MyIgLz4NCisgICAgPCEtLSBBICJDb25uZWN0b3IiIHVzaW5nIHRoZSBzaGFyZWQgdGhyZWFkIHBvb2wtLT4NCisgICAgPCEtLQ0KKyAgICA8Q29ubmVjdG9yIGV4ZWN1dG9yPSJ0b21jYXRUaHJlYWRQb29sIg0KKyAgICAgICAgICAgICAgIHBvcnQ9IjgwODAiIHByb3RvY29sPSJIVFRQLzEuMSINCisgICAgICAgICAgICAgICBjb25uZWN0aW9uVGltZW91dD0iMjAwMDAiDQorICAgICAgICAgICAgICAgcmVkaXJlY3RQb3J0PSI4NDQzIiAvPg0KKyAgICAtLT4NCisgICAgPCEtLSBEZWZpbmUgYSBTU0wvVExTIEhUVFAvMS4xIENvbm5lY3RvciBvbiBwb3J0IDg0NDMNCisgICAgICAgICBUaGlzIGNvbm5lY3RvciB1c2VzIHRoZSBOSU8gaW1wbGVtZW50YXRpb24gdGhhdCByZXF1aXJlcyB0aGUgSlNTRQ0KKyAgICAgICAgIHN0eWxlIGNvbmZpZ3VyYXRpb24uIFdoZW4gdXNpbmcgdGhlIEFQUi9uYXRpdmUgaW1wbGVtZW50YXRpb24sIHRoZQ0KKyAgICAgICAgIE9wZW5TU0wgc3R5bGUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhcyBkZXNjcmliZWQgaW4gdGhlIEFQUi9uYXRpdmUNCisgICAgICAgICBkb2N1bWVudGF0aW9uIC0tPg0KKw0KKyAgICA8Q29ubmVjdG9yIHBvcnQ9Ijg0NDMiIHByb3RvY29sPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExTmlvUHJvdG9jb2wiDQorICAgICAgICAgICAgICAgbWF4VGhyZWFkcz0iMTUwIiBTU0xFbmFibGVkPSJ0cnVlIiBzY2hlbWU9Imh0dHBzIiBzZWN1cmU9InRydWUiDQorICAgICAgICAgICAgICAgY2xpZW50QXV0aD0iZmFsc2UiIHNzbFByb3RvY29sPSJUTFMiIGtleUFsaWFzPSIke29zYW0ua2V5YWxpYXN9Ig0KKyAgICAgICAgICAgICAgIGtleXN0b3JlRmlsZT0iJHtvc2FtLmtleXN0b3JlLmZpbGVuYW1lfSIga2V5c3RvcmVQYXNzPSIke29zYW0ua2V5c3RvcmUucGFzc3dvcmR9Ig0KKyAgICAgICAgICAgICAgIHVzZVNlcnZlckNpcGhlclN1aXRlc09yZGVyPSJ0cnVlIg0KKyAgICAgICAgICAgICAgIGNpcGhlcnM9IlRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfRUNEU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEzODQsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTM4NCwNCisgICAgICAgICAgICAgICAgVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfRUNEU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfRUNEU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiwNCisgICAgICAgICAgICAgICAgVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIRV9FQ0RTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfRUNEU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIRV9FQ0RTQV9XSVRIX1JDNF8xMjhfU0hBLA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESF9FQ0RTQV9XSVRIX1JDNF8xMjhfU0hBLA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESF9SU0FfV0lUSF9SQzRfMTI4X1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX0VDRFNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0LA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIRV9SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQsDQorICAgICAgICAgICAgICAgIFRMU19SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX0VDRFNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0LA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESF9SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQsDQorICAgICAgICAgICAgICAgIFRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0LA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2LA0KKyAgICAgICAgICAgICAgICBUTFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2LA0KKyAgICAgICAgICAgICAgICBUTFNfRUNESF9FQ0RTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2LA0KKyAgICAgICAgICAgICAgICBUTFNfREhFX0RTU19XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX0VDRFNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhFX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEsDQorICAgICAgICAgICAgICAgIFRMU19FQ0RIX0VDRFNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VDREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSwNCisgICAgICAgICAgICAgICAgVExTX0VNUFRZX1JFTkVHT1RJQVRJT05fSU5GT19TQ1NWRiINCisgICAgLz4NCisNCisNCisgICAgPCEtLSBEZWZpbmUgYW4gQUpQIDEuMyBDb25uZWN0b3Igb24gcG9ydCA4MDA5IC0tPg0KKyAgICA8Q29ubmVjdG9yIHBvcnQ9IjgwMDkiIHByb3RvY29sPSJBSlAvMS4zIiByZWRpcmVjdFBvcnQ9Ijg0NDMiIC8+DQorDQorDQorICAgIDwhLS0gQW4gRW5naW5lIHJlcHJlc2VudHMgdGhlIGVudHJ5IHBvaW50ICh3aXRoaW4gQ2F0YWxpbmEpIHRoYXQgcHJvY2Vzc2VzDQorICAgICAgICAgZXZlcnkgcmVxdWVzdC4gIFRoZSBFbmdpbmUgaW1wbGVtZW50YXRpb24gZm9yIFRvbWNhdCBzdGFuZCBhbG9uZQ0KKyAgICAgICAgIGFuYWx5emVzIHRoZSBIVFRQIGhlYWRlcnMgaW5jbHVkZWQgd2l0aCB0aGUgcmVxdWVzdCwgYW5kIHBhc3NlcyB0aGVtDQorICAgICAgICAgb24gdG8gdGhlIGFwcHJvcHJpYXRlIEhvc3QgKHZpcnR1YWwgaG9zdCkuDQorICAgICAgICAgRG9jdW1lbnRhdGlvbiBhdCAvZG9jcy9jb25maWcvZW5naW5lLmh0bWwgLS0+DQorDQorICAgIDwhLS0gWW91IHNob3VsZCBzZXQganZtUm91dGUgdG8gc3VwcG9ydCBsb2FkLWJhbGFuY2luZyB2aWEgQUpQIGllIDoNCisgICAgPEVuZ2luZSBuYW1lPSJDYXRhbGluYSIgZGVmYXVsdEhvc3Q9ImxvY2FsaG9zdCIganZtUm91dGU9Imp2bTEiPg0KKyAgICAtLT4NCisgICAgPEVuZ2luZSBuYW1lPSJDYXRhbGluYSIgZGVmYXVsdEhvc3Q9ImxvY2FsaG9zdCI+DQorDQorICAgICAgPCEtLUZvciBjbHVzdGVyaW5nLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgZG9jdW1lbnRhdGlvbiBhdDoNCisgICAgICAgICAgL2RvY3MvY2x1c3Rlci1ob3d0by5odG1sICAoc2ltcGxlIGhvdyB0bykNCisgICAgICAgICAgL2RvY3MvY29uZmlnL2NsdXN0ZXIuaHRtbCAocmVmZXJlbmNlIGRvY3VtZW50YXRpb24pIC0tPg0KKyAgICAgIDwhLS0NCisgICAgICA8Q2x1c3RlciBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEuaGEudGNwLlNpbXBsZVRjcENsdXN0ZXIiLz4NCisgICAgICAtLT4NCisNCisgICAgICA8IS0tIFVzZSB0aGUgTG9ja091dFJlYWxtIHRvIHByZXZlbnQgYXR0ZW1wdHMgdG8gZ3Vlc3MgdXNlciBwYXNzd29yZHMNCisgICAgICAgICAgIHZpYSBhIGJydXRlLWZvcmNlIGF0dGFjayAtLT4NCisgICAgICA8UmVhbG0gY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLnJlYWxtLkxvY2tPdXRSZWFsbSI+DQorICAgICAgICA8IS0tIFRoaXMgUmVhbG0gdXNlcyB0aGUgVXNlckRhdGFiYXNlIGNvbmZpZ3VyZWQgaW4gdGhlIGdsb2JhbCBKTkRJDQorICAgICAgICAgICAgIHJlc291cmNlcyB1bmRlciB0aGUga2V5ICJVc2VyRGF0YWJhc2UiLiAgQW55IGVkaXRzDQorICAgICAgICAgICAgIHRoYXQgYXJlIHBlcmZvcm1lZCBhZ2FpbnN0IHRoaXMgVXNlckRhdGFiYXNlIGFyZSBpbW1lZGlhdGVseQ0KKyAgICAgICAgICAgICBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUgUmVhbG0uICAtLT4NCisgICAgICAgIDxSZWFsbSBjbGFzc05hbWU9Im9yZy5hcGFjaGUuY2F0YWxpbmEucmVhbG0uVXNlckRhdGFiYXNlUmVhbG0iDQorICAgICAgICAgIHJlc291cmNlTmFtZT0iVXNlckRhdGFiYXNlIi8+DQorICAgICAgPC9SZWFsbT4NCisNCisgICAgICA8SG9zdCBuYW1lPSJsb2NhbGhvc3QiICBhcHBCYXNlPSJ3ZWJhcHBzIg0KKyAgICAgICAgdW5wYWNrV0FScz0idHJ1ZSIgYXV0b0RlcGxveT0idHJ1ZSI+DQorDQorICAgICAgICA8IS0tIFNpbmdsZVNpZ25PbiB2YWx2ZSwgc2hhcmUgYXV0aGVudGljYXRpb24gYmV0d2VlbiB3ZWIgYXBwbGljYXRpb25zDQorICAgICAgICAgICAgIERvY3VtZW50YXRpb24gYXQ6IC9kb2NzL2NvbmZpZy92YWx2ZS5odG1sIC0tPg0KKyAgICAgICAgPCEtLQ0KKyAgICAgICAgPFZhbHZlIGNsYXNzTmFtZT0ib3JnLmFwYWNoZS5jYXRhbGluYS5hdXRoZW50aWNhdG9yLlNpbmdsZVNpZ25PbiIgLz4NCisgICAgICAgIC0tPg0KKw0KKyAgICAgICAgPCEtLSBBY2Nlc3MgbG9nIHByb2Nlc3NlcyBhbGwgZXhhbXBsZS4NCisgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBhdDogL2RvY3MvY29uZmlnL3ZhbHZlLmh0bWwNCisgICAgICAgICAgICAgTm90ZTogVGhlIHBhdHRlcm4gdXNlZCBpcyBlcXVpdmFsZW50IHRvIHVzaW5nIHBhdHRlcm49ImNvbW1vbiIgLS0+DQorICAgICAgICA8VmFsdmUgY2xhc3NOYW1lPSJvcmcuYXBhY2hlLmNhdGFsaW5hLnZhbHZlcy5BY2Nlc3NMb2dWYWx2ZSIgZGlyZWN0b3J5PSJsb2dzIg0KKyAgICAgICAgICBwcmVmaXg9ImxvY2FsaG9zdF9hY2Nlc3NfbG9nIiBzdWZmaXg9Ii50eHQiDQorICAgICAgICAgIHBhdHRlcm49IiVoICVsICV1ICV0ICZxdW90OyVyJnF1b3Q7ICVzICViIiAvPg0KKw0KKyAgICAgIDwvSG9zdD4NCisgICAgPC9FbmdpbmU+DQorICA8L1NlcnZpY2U+DQorPC9TZXJ2ZXI+DQorDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9zdGF0ZS1ydWxlcy5kcmwgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vcmVzb3VyY2VzL3N0YXRlLXJ1bGVzLmRybApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjkyZjExCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3Jlc291cmNlcy9zdGF0ZS1ydWxlcy5kcmwKQEAgLTAsMCArMSw1OCBAQAorLyotDQorICAgICAgICAqID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgICAgICAqIE9TQU0gQ29yZQ0KKyAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgICAgICAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQVQmVA0KKyAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgICAgICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgICAgICAgICoNCisgICAgICAgICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgICAgICoNCisgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgICAgICAgICogPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgICAgICovDQorDQorcGFja2FnZSBvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kcm9vbHM7DQorZ2xvYmFsIFN0cmluZyBhZ2UNCisNCitydWxlICJEZWZhdWx0Ig0KK3doZW4NCiskZHJvb2xzUnVsZVNlcnZpY2UgOiBEcm9vbHNSdWxlU2VydmljZUltcGwoIHN0YXRlICE9IG51bGwgKQ0KK3RoZW4NCitTeXN0ZW0ub3V0LnByaW50bG4oJGRyb29sc1J1bGVTZXJ2aWNlLmFjY2Vzc0xhYmVsKCkgKyIgIisgJGRyb29sc1J1bGVTZXJ2aWNlLmdldFN0YXRlKCkgKyIgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKGFnZSkpOw0KKyRkcm9vbHNSdWxlU2VydmljZS5zZXRSZXN1bHRzU3RyaW5nKCRkcm9vbHNSdWxlU2VydmljZS5nZXRTdGF0ZSgpKyIgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKGFnZSkpOw0KK2VuZA0KKw0KK3J1bGUgIkRyb29scyBOSiINCit3aGVuDQorJGRyb29sc1J1bGVTZXJ2aWNlIDogRHJvb2xzUnVsZVNlcnZpY2VJbXBsKCBzdGF0ZSA9PSAiTkoiICkNCit0aGVuDQorU3lzdGVtLm91dC5wcmludGxuKCRkcm9vbHNSdWxlU2VydmljZS5hY2Nlc3NMYWJlbCgpICsiICIrICJOSiBzdGF0ZSBsZWdhbCBhZ2UgaXMgIiArIGdldERlZmF1bHRJZk51bGwoYWdlKSk7DQorJGRyb29sc1J1bGVTZXJ2aWNlLnNldFJlc3VsdHNTdHJpbmcoIk5KIHN0YXRlIGxlZ2FsIGFnZSBpcyAiICsgZ2V0RGVmYXVsdElmTnVsbChhZ2UpKTsNCitlbmQNCisNCitydWxlICJEcm9vbHMgS1kiDQord2hlbg0KKyRkcm9vbHNSdWxlU2VydmljZSA6IERyb29sc1J1bGVTZXJ2aWNlSW1wbCggc3RhdGUgPT0gIktZIiApDQordGhlbg0KK1N5c3RlbS5vdXQucHJpbnRsbigkZHJvb2xzUnVsZVNlcnZpY2UuYWNjZXNzTGFiZWwoKSArIiAiKyAiS1kgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKCIyMCIpKTsNCiskZHJvb2xzUnVsZVNlcnZpY2Uuc2V0UmVzdWx0c1N0cmluZygiS1kgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKCIyMCIpKTsNCitlbmQNCisNCitydWxlICJEcm9vbHMgTlkiDQord2hlbg0KKyRkcm9vbHNSdWxlU2VydmljZSA6IERyb29sc1J1bGVTZXJ2aWNlSW1wbCggc3RhdGUgPT0gIk5ZIiApDQordGhlbg0KK1N5c3RlbS5vdXQucHJpbnRsbigkZHJvb2xzUnVsZVNlcnZpY2UuYWNjZXNzTGFiZWwoKSArIiAiKyAiTlkgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKCIyMSIpKTsNCiskZHJvb2xzUnVsZVNlcnZpY2Uuc2V0UmVzdWx0c1N0cmluZygiTlkgc3RhdGUgbGVnYWwgYWdlIGlzICIgKyBnZXREZWZhdWx0SWZOdWxsKCIyMSIpKTsNCitlbmQNCisNCitmdW5jdGlvbiBTdHJpbmcgZ2V0RGVmYXVsdElmTnVsbChTdHJpbmcgYWdlKSB7DQorcmV0dXJuIGFnZSA9PSBudWxsID8gIjE4IiA6IGFnZTsNCit9DQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvb25hcC5jZXJ0IGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvb25hcC5jZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZjYyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY2VydC9vbmFwLmNlcnQKQEAgLTAsMCArMSwzMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQorTUlJRlBqQ0NBeWFnQXdJQkFnSUpBSjZ1N2NDbnpyV2RNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1Dd3hEakFNQmdOVg0KK0JBc01CVTlUUVVGR01RMHdDd1lEVlFRS0RBUlBUa0ZRTVFzd0NRWURWUVFHRXdKVlV6QWVGdzB4T0RBME1EVXgNCitOREUxTWpoYUZ3MHpPREF6TXpFeE5ERTFNamhhTUN3eERqQU1CZ05WQkFzTUJVOVRRVUZHTVEwd0N3WURWUVFLDQorREFSUFRrRlFNUXN3Q1FZRFZRUUdFd0pWVXpDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQw0KK2dnSUJBTUE1cGtnUnM3TmhHRzRldzVKb3VoeVlha2dZVXlGYUcxMjErL2g4cWJTZHQwaFZRdjU2K0VBNDFZcTcNCitYR2llN1JZRFFLOU5tQUZGM2dydUUrNlg3d3ZKaUNocCtDeWQ3c0ZNbmI2NXVXaHhFZHhXVE0yQkpGcmdmelVuDQorSDhaQ3hnYUNvM1hINFB6bEtSeTJMUVFKRUpFQ3dsL1JabVJDWGlqTXQ1ZTloOFhvWlkvZktrS2NaWlVzV05DTQ0KK3BUbzI2NndqdkE5TVhMbWRnUmVSajArdnJDanJOcXkraHR3SkR6dG9pSFdpWVBxVDZvOEV2R2Nnak5xamxaeDcNCitOVU5mOE1mTERCeXFLRjYrd1JiSHYxR0tqbjMvVmlqZDQ1RnY4cml5UllST2lGYW52YlY2aklmQmt2OFBaYlhnDQorMlZEV3NZc2dwOE5Bdk14SytpVjhjTytDazNsQkkyR09QWmJDRXFwUFZUWWJMVXo2c2N6QWxDWHdRb1B6RElaWQ0KK3dZYTNlUi9nWUxZMWdQMmlFVkhPUmFnM2JMUGFwOVpYNUU4RFprelROVGpvdnZMazhLYUNtZmNhVU1Kc0J0RGQNCitBcGNVaXR6MTBjblJ5WmMxc1gzZ0UxZjNEcHpRTTZ0OUM1c09WeVJoRGNTcktxcXdiOW0wU3MwNFhBUzlGc3FNDQorUDNVV1lReXFEWFN4bFVBWWFYODkydThtVjFoeG50MmdqYjIyUmxvWE1NNlRvdk0zc1NySlMwd0grbDFuem5kNg0KK2FGWGZ0Uy9HNFpWSVZaL0xmVDFpczRTdG95UFdaQ3d3d2x5MXo4cUpRL3poaXA1TmdaVHhRdzRtaTd3dzM1RFkNCitQZEFRT0NvYWpmU3ZGanFzbFEvY1BSaS9NUkN1MDc5aGVWYjVmUW5uelZ0bnBGUVJBZ01CQUFHall6QmhNQjBHDQorQTFVZERnUVdCQlJUVlRQeVMrdlFVYkhCZUpyQktERjc3K3J0U1RBZkJnTlZIU01FR0RBV2dCUlRWVFB5Uyt2UQ0KK1ViSEJlSnJCS0RGNzcrcnRTVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQmhqQU4NCitCZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFQeC9JYUs5NG4wMndQeHBuWVR5K0xWTEl4d2RxL2thd05kNkliaU16DQorTDg3em1OTURtSGNHYmZvUkNqOE9raHVnZ1g5THgxL0NraHBYaW11WXNaT0ZRaTVibHIvdSt2NG1JYnNnYm1pOQ0KKzdqK2NVSERQMHpMeWN2U3Z4S0h0eTUxTHdtYVg5YTR3a0psNXpCVTRPMXNkL0g5dFdjRW13SjM5bHRLb0JLQngNCitjOTRaYzNpTW01eXRSV0dqKzByS3pMREFYRVdwb1o1YkU1UExKYXVBNlVEQ3hETGZzM0Z3aGJTN3VEZ2d4WXZmDQoranlTRjVGQ05FVDk0b0orbThzN1ZlSHZvYThpUEdLdlhySXFkZDdYREhucUpKbFZLcjdtOVMwZk1ieUVCOGNpMg0KK1J0T1hEdDkzaWZZMXVob0V0RXlrbjRkcUJTcDhlenZOTW53b1hkWVBEdlRkOXVDQUZlV0ZMVnJlQkFXeGQyNWgNCitQc0JUa1pBNWhwYS9yQSttS3Y2QWY0VkJWaVlyOGN6NGRaQ3NGQ2h1aW9WZWJlOWlnaHJmakIvL3FLZXBGalBGDQorQ3lqektOMXUwSkttLzJ4L09ScXhrVE9ORzhwM3VEd29JT3lpbVVjVHRUTXY0MmJmWUQ4OFJLYWtxU0ZYRTlHKw0KK1owTGxhS0FCcWZqSzQ5by90c0FwK2M1TG9ObFlsbEtobmV0TzNRQWRyYUh3ZG1DMzZCaG9naHpSMWpwWDc1MUENCitjWm4yVkgzUTRYS3lwMDFjSk5DSklydWErQStieDZ6aDNSeVc2eklJa2JSQ2JFVCtVRCs0bXI4V0ljU0UzbXRSDQorWlZsbmhVRE80ejkvL1dLTVZ6d1M5Umg4L2t1c3pyR0ZJMUtRb3pYQ0hMcmNlM1lQNlJZWmZPZWQ3OUxYYVJ3WA0KK2RZWT0NCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvb3JnLm9uYXAudmlkLmprcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L29yZy5vbmFwLnZpZC5qa3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFiMzRhZQotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L29yZy5vbmFwLnZpZC5qa3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvb3JnLm9uYXAudmlkLnRydXN0LmprcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L29yZy5vbmFwLnZpZC50cnVzdC5qa3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNhZjdiZQotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L29yZy5vbmFwLnZpZC50cnVzdC5qa3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvdG9tY2F0X2tleXN0b3JlIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvdG9tY2F0X2tleXN0b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YmE0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY2VydC90b21jYXRfa2V5c3RvcmUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvdG9tY2F0X291dCBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L3RvbWNhdF9vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdmZDVlZAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jZXJ0L3RvbWNhdF9vdXQKQEAgLTAsMCArMSwxNjIgQEAKK0tleXN0b3JlIHR5cGU6IEpLUw0KK0tleXN0b3JlIHByb3ZpZGVyOiBTVU4NCisNCitZb3VyIGtleXN0b3JlIGNvbnRhaW5zIDMgZW50cmllcw0KKw0KK0FsaWFzIG5hbWU6IHJvb3QNCitDcmVhdGlvbiBkYXRlOiBOb3YgMzAsIDIwMTYNCitFbnRyeSB0eXBlOiB0cnVzdGVkQ2VydEVudHJ5DQorDQorT3duZXI6IEVNQUlMQUREUkVTUz1zaW1wbGVkZW1vQG9wZW5lY29tcC5vcmcsIENOPU9wZW5FQ09NUCBzaW1wbGVkZW1vIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHksIE9VPXNpbXBsZWRlbW8sIE89T3BlbkVDT01QLCBMPUJlZG1pbnN0ZXIsIFNUPU5KLCBDPVVTDQorSXNzdWVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5LCBPVT1zaW1wbGVkZW1vLCBPPU9wZW5FQ09NUCwgTD1CZWRtaW5zdGVyLCBTVD1OSiwgQz1VUw0KK1NlcmlhbCBudW1iZXI6IGQ0YTJmZGJiMTcxMGUyMzkNCitWYWxpZCBmcm9tOiBNb24gTm92IDI4IDIxOjE0OjI1IFVUQyAyMDE2IHVudGlsOiBUaHUgTm92IDI2IDIxOjE0OjI1IFVUQyAyMDI2DQorQ2VydGlmaWNhdGUgZmluZ2VycHJpbnRzOg0KKwkgTUQ1OiAgRkM6NjQ6QUY6OEE6Mzk6MEI6NzM6NDg6Mjk6Qjc6RTc6RkY6MEI6MEQ6Rjk6MkMNCisJIFNIQTE6IEU1OkU4OjMxOkIyOkM4OkVCOjQwOkM5OkZGOjA4OjY5OkQyOkVEOkRGOjM5OjMxOjY0OjhFOjBGOjNDDQorCSBTSEEyNTY6IEMzOjM1OjE1OjVGOkVDOkEwOjQyOjJGOkMyOkEwOjQyOjgwOkE0OjVDOkNCOjAwOjE1OjYwOjEyOkFGOjEzOkVFOjc2OjVGOjExOjNDOkExOjk4OjRBOjZFOkE4Ojc3DQorU2lnbmF0dXJlIGFsZ29yaXRobSBuYW1lOiBTSEEyNTZ3aXRoUlNBDQorU3ViamVjdCBQdWJsaWMgS2V5IEFsZ29yaXRobTogNDA5Ni1iaXQgUlNBIGtleQ0KK1ZlcnNpb246IDMNCisNCitFeHRlbnNpb25zOiANCisNCisjMTogT2JqZWN0SWQ6IDIuNS4yOS4xOSBDcml0aWNhbGl0eT10cnVlDQorQmFzaWNDb25zdHJhaW50czpbDQorICBDQTp0cnVlDQorICBQYXRoTGVuOjIxNDc0ODM2NDcNCitdDQorDQorIzI6IE9iamVjdElkOiAyLjUuMjkuMTUgQ3JpdGljYWxpdHk9dHJ1ZQ0KK0tleVVzYWdlIFsNCisgIEtleV9DZXJ0U2lnbg0KKyAgQ3JsX1NpZ24NCitdDQorDQorIzM6IE9iamVjdElkOiAyLjUuMjkuMTQgQ3JpdGljYWxpdHk9ZmFsc2UNCitTdWJqZWN0S2V5SWRlbnRpZmllciBbDQorS2V5SWRlbnRpZmllciBbDQorMDAwMDogOUEgNjQgMDUgNDAgM0QgRTggNTkgOTUgICAwRSA1NCA0RiAzNSA0MSBDRiA1NiA0OSAgLmQuQD0uWS4uVE81QS5WSQ0KKzAwMTA6IEY3IDMyIEFCIDBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4yLi4NCitdDQorXQ0KKw0KKw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorDQorDQorQWxpYXMgbmFtZTogc2VydmVyDQorQ3JlYXRpb24gZGF0ZTogTm92IDMwLCAyMDE2DQorRW50cnkgdHlwZTogdHJ1c3RlZENlcnRFbnRyeQ0KKw0KK093bmVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBTZXJ2ZXIgQ0EgWDEsIE9VPXNpbXBsZWRlbW8sIE89T3BlbkVDT01QLCBMPUJlZG1pbnN0ZXIsIFNUPU5KLCBDPVVTDQorSXNzdWVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5LCBPVT1zaW1wbGVkZW1vLCBPPU9wZW5FQ09NUCwgTD1CZWRtaW5zdGVyLCBTVD1OSiwgQz1VUw0KK1NlcmlhbCBudW1iZXI6IDlhYjFmMWQyYTcwOTk2NjgNCitWYWxpZCBmcm9tOiBNb24gTm92IDI4IDIxOjE0OjI2IFVUQyAyMDE2IHVudGlsOiBTYXQgTm92IDI3IDIxOjE0OjI2IFVUQyAyMDIxDQorQ2VydGlmaWNhdGUgZmluZ2VycHJpbnRzOg0KKwkgTUQ1OiAgODM6NDE6RTY6QUM6REE6Mjg6NzM6NDc6OUU6MEI6NTg6OTA6RUY6NDg6OTk6MzgNCisJIFNIQTE6IDJEOjYzOkQyOjZDOkI3OjExOjA0OjZDOkE4OjdCOjk3OkRGOkE5OkQyOjE5Ojc3OjQxOkQyOjQ1OkJGDQorCSBTSEEyNTY6IDk1OjMyOjEyOkU0OkZDOjA5OkRBOkI3OkRFOjVCOkZBOjFEOjNBOkY4OkY3OkQ4OkQxOjk2OjAxOkQwOkExOjlCOjI2OkY5OjFEOjgyOjhCOjI3OkNBOjQ3OkU3OjlDDQorU2lnbmF0dXJlIGFsZ29yaXRobSBuYW1lOiBTSEEyNTZ3aXRoUlNBDQorU3ViamVjdCBQdWJsaWMgS2V5IEFsZ29yaXRobTogMjA0OC1iaXQgUlNBIGtleQ0KK1ZlcnNpb246IDMNCisNCitFeHRlbnNpb25zOiANCisNCisjMTogT2JqZWN0SWQ6IDIuNS4yOS4xOSBDcml0aWNhbGl0eT10cnVlDQorQmFzaWNDb25zdHJhaW50czpbDQorICBDQTp0cnVlDQorICBQYXRoTGVuOjIxNDc0ODM2NDcNCitdDQorDQorIzI6IE9iamVjdElkOiAyLjUuMjkuMzIgQ3JpdGljYWxpdHk9ZmFsc2UNCitDZXJ0aWZpY2F0ZVBvbGljaWVzIFsNCisgIFtDZXJ0aWZpY2F0ZVBvbGljeUlkOiBbMi41LjI5LjMyLjBdDQorW1BvbGljeVF1YWxpZmllckluZm86IFsNCisgIHF1YWxpZmllcklEOiAxLjMuNi4xLjUuNS43LjIuMg0KKyAgcXVhbGlmaWVyOiAwMDAwOiAzMCA0RiAxQSA0RCA0OSA2NiAyMCA3OSAgIDZGIDc1IDIwIDc0IDcyIDc1IDczIDc0ICAwTy5NSWYgeW91IHRydXN0DQorMDAxMDogMjAgNzQgNjggNjkgNzMgMjAgNjMgNjUgICA3MiA3NCAyMCA3NCA2OCA2NSA2RSAyMCAgIHRoaXMgY2VydCB0aGVuIA0KKzAwMjA6IDc3IDY1IDIwIDY4IDYxIDc2IDY1IDIwICAgNjEgMjAgNjIgNzIgNjkgNjQgNjcgNjUgIHdlIGhhdmUgYSBicmlkZ2UNCiswMDMwOiAyMCA3NCA2OCA2MSA3NCAyMCA3OSA2RiAgIDc1IDIwIDZEIDY5IDY3IDY4IDc0IDIwICAgdGhhdCB5b3UgbWlnaHQgDQorMDA0MDogNjIgNjUgMjAgNjkgNkUgNzQgNjUgNzIgICA2NSA3MyA3NCA2NSA2NCAyMCA2OSA2RSAgYmUgaW50ZXJlc3RlZCBpbg0KKzAwNTA6IDJFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4NCisNCitdXSAgXQ0KK10NCisNCisjMzogT2JqZWN0SWQ6IDIuNS4yOS4xNSBDcml0aWNhbGl0eT10cnVlDQorS2V5VXNhZ2UgWw0KKyAgRGlnaXRhbFNpZ25hdHVyZQ0KKyAgS2V5X0NlcnRTaWduDQorICBDcmxfU2lnbg0KK10NCisNCisjNDogT2JqZWN0SWQ6IDIuNS4yOS4xNCBDcml0aWNhbGl0eT1mYWxzZQ0KK1N1YmplY3RLZXlJZGVudGlmaWVyIFsNCitLZXlJZGVudGlmaWVyIFsNCiswMDAwOiA0RSBBNyA2QyA2MiAwMSA4RCAxQSBFNiAgIEREIDI0IDdBIEJEIEI2IEM2IDg5IDg0ICBOLmxiLi4uLi4kei4uLi4uDQorMDAxMDogQ0YgNDcgMTMgOUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkcuLg0KK10NCitdDQorDQorDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisNCitBbGlhcyBuYW1lOiBvbmFwYWFmcm9vdA0KK0NyZWF0aW9uIGRhdGU6IEFwciAyMywgMjAxOA0KK0VudHJ5IHR5cGU6IHRydXN0ZWRDZXJ0RW50cnkNCisNCitPd25lcjogQz1VUywgTz1PTkFQLCBPVT1PU0FBRg0KK0lzc3VlcjogQz1VUywgTz1PTkFQLCBPVT1PU0FBRg0KK1NlcmlhbCBudW1iZXI6IDllYWVlZGMwYTdjZWI1OWQNCitWYWxpZCBmcm9tOiBUaHUgQXByIDA1IDE0OjE1OjI4IFVUQyAyMDE4IHVudGlsOiBXZWQgTWFyIDMxIDE0OjE1OjI4IFVUQyAyMDM4DQorQ2VydGlmaWNhdGUgZmluZ2VycHJpbnRzOg0KKwkgTUQ1OiAgNzc6RUI6NUU6OTQ6MkU6Qjc6QTM6NDU6OTc6NkM6ODc6RkU6QTc6Rjc6NjQ6MEYNCisJIFNIQTE6IDkwOjI1OkQxOkQzOjhCOjNDOkJFOjJDOjczOkU5OjZDOjFBOjQ4OjVCOjA2OkE4OjM5OjBEOjU0OjNCDQorCSBTSEEyNTY6IDFGOkMyOkJCOkY2OjdFOjExOjZGOkYwOjRDOkMzOkQ5OjZDOjczOkU1Ojk5OkI3OkNBOjdEOjREOkVGOkFBOjZDOjY5OjQ2OjBEOjJDOjdCOkE5OkU0OjIzOjVGOkVBDQorU2lnbmF0dXJlIGFsZ29yaXRobSBuYW1lOiBTSEEyNTZ3aXRoUlNBDQorU3ViamVjdCBQdWJsaWMgS2V5IEFsZ29yaXRobTogNDA5Ni1iaXQgUlNBIGtleQ0KK1ZlcnNpb246IDMNCisNCitFeHRlbnNpb25zOiANCisNCisjMTogT2JqZWN0SWQ6IDIuNS4yOS4zNSBDcml0aWNhbGl0eT1mYWxzZQ0KK0F1dGhvcml0eUtleUlkZW50aWZpZXIgWw0KK0tleUlkZW50aWZpZXIgWw0KKzAwMDA6IDUzIDU1IDMzIEYyIDRCIEVCIEQwIDUxICAgQjEgQzEgNzggOUEgQzEgMjggMzEgN0IgIFNVMy5LLi5RLi54Li4oMS4NCiswMDEwOiBFRiBFQSBFRCA0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5JDQorXQ0KK10NCisNCisjMjogT2JqZWN0SWQ6IDIuNS4yOS4xOSBDcml0aWNhbGl0eT10cnVlDQorQmFzaWNDb25zdHJhaW50czpbDQorICBDQTp0cnVlDQorICBQYXRoTGVuOjIxNDc0ODM2NDcNCitdDQorDQorIzM6IE9iamVjdElkOiAyLjUuMjkuMTUgQ3JpdGljYWxpdHk9dHJ1ZQ0KK0tleVVzYWdlIFsNCisgIERpZ2l0YWxTaWduYXR1cmUNCisgIEtleV9DZXJ0U2lnbg0KKyAgQ3JsX1NpZ24NCitdDQorDQorIzQ6IE9iamVjdElkOiAyLjUuMjkuMTQgQ3JpdGljYWxpdHk9ZmFsc2UNCitTdWJqZWN0S2V5SWRlbnRpZmllciBbDQorS2V5SWRlbnRpZmllciBbDQorMDAwMDogNTMgNTUgMzMgRjIgNEIgRUIgRDAgNTEgICBCMSBDMSA3OCA5QSBDMSAyOCAzMSA3QiAgU1UzLksuLlEuLnguLigxLg0KKzAwMTA6IEVGIEVBIEVEIDQ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkkNCitdDQorXQ0KKw0KKw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorDQorDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvdG9tY2F0X291dDIgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY2VydC90b21jYXRfb3V0MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWJmMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NlcnQvdG9tY2F0X291dDIKQEAgLTAsMCArMSwxMDkgQEAKK0tleXN0b3JlIHR5cGU6IEpLUw0KK0tleXN0b3JlIHByb3ZpZGVyOiBTVU4NCisNCitZb3VyIGtleXN0b3JlIGNvbnRhaW5zIDIgZW50cmllcw0KKw0KK0FsaWFzIG5hbWU6IHJvb3QNCitDcmVhdGlvbiBkYXRlOiBOb3YgMzAsIDIwMTYNCitFbnRyeSB0eXBlOiB0cnVzdGVkQ2VydEVudHJ5DQorDQorT3duZXI6IEVNQUlMQUREUkVTUz1zaW1wbGVkZW1vQG9wZW5lY29tcC5vcmcsIENOPU9wZW5FQ09NUCBzaW1wbGVkZW1vIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHksIE9VPXNpbXBsZWRlbW8sIE89T3BlbkVDT01QLCBMPUJlZG1pbnN0ZXIsIFNUPU5KLCBDPVVTDQorSXNzdWVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5LCBPVT1zaW1wbGVkZW1vLCBPPU9wZW5FQ09NUCwgTD1CZWRtaW5zdGVyLCBTVD1OSiwgQz1VUw0KK1NlcmlhbCBudW1iZXI6IGQ0YTJmZGJiMTcxMGUyMzkNCitWYWxpZCBmcm9tOiBNb24gTm92IDI4IDIxOjE0OjI1IFVUQyAyMDE2IHVudGlsOiBUaHUgTm92IDI2IDIxOjE0OjI1IFVUQyAyMDI2DQorQ2VydGlmaWNhdGUgZmluZ2VycHJpbnRzOg0KKwkgTUQ1OiAgRkM6NjQ6QUY6OEE6Mzk6MEI6NzM6NDg6Mjk6Qjc6RTc6RkY6MEI6MEQ6Rjk6MkMNCisJIFNIQTE6IEU1OkU4OjMxOkIyOkM4OkVCOjQwOkM5OkZGOjA4OjY5OkQyOkVEOkRGOjM5OjMxOjY0OjhFOjBGOjNDDQorCSBTSEEyNTY6IEMzOjM1OjE1OjVGOkVDOkEwOjQyOjJGOkMyOkEwOjQyOjgwOkE0OjVDOkNCOjAwOjE1OjYwOjEyOkFGOjEzOkVFOjc2OjVGOjExOjNDOkExOjk4OjRBOjZFOkE4Ojc3DQorU2lnbmF0dXJlIGFsZ29yaXRobSBuYW1lOiBTSEEyNTZ3aXRoUlNBDQorU3ViamVjdCBQdWJsaWMgS2V5IEFsZ29yaXRobTogNDA5Ni1iaXQgUlNBIGtleQ0KK1ZlcnNpb246IDMNCisNCitFeHRlbnNpb25zOiANCisNCisjMTogT2JqZWN0SWQ6IDIuNS4yOS4xOSBDcml0aWNhbGl0eT10cnVlDQorQmFzaWNDb25zdHJhaW50czpbDQorICBDQTp0cnVlDQorICBQYXRoTGVuOjIxNDc0ODM2NDcNCitdDQorDQorIzI6IE9iamVjdElkOiAyLjUuMjkuMTUgQ3JpdGljYWxpdHk9dHJ1ZQ0KK0tleVVzYWdlIFsNCisgIEtleV9DZXJ0U2lnbg0KKyAgQ3JsX1NpZ24NCitdDQorDQorIzM6IE9iamVjdElkOiAyLjUuMjkuMTQgQ3JpdGljYWxpdHk9ZmFsc2UNCitTdWJqZWN0S2V5SWRlbnRpZmllciBbDQorS2V5SWRlbnRpZmllciBbDQorMDAwMDogOUEgNjQgMDUgNDAgM0QgRTggNTkgOTUgICAwRSA1NCA0RiAzNSA0MSBDRiA1NiA0OSAgLmQuQD0uWS4uVE81QS5WSQ0KKzAwMTA6IEY3IDMyIEFCIDBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4yLi4NCitdDQorXQ0KKw0KKw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorDQorDQorQWxpYXMgbmFtZTogc2VydmVyDQorQ3JlYXRpb24gZGF0ZTogTm92IDMwLCAyMDE2DQorRW50cnkgdHlwZTogdHJ1c3RlZENlcnRFbnRyeQ0KKw0KK093bmVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBTZXJ2ZXIgQ0EgWDEsIE9VPXNpbXBsZWRlbW8sIE89T3BlbkVDT01QLCBMPUJlZG1pbnN0ZXIsIFNUPU5KLCBDPVVTDQorSXNzdWVyOiBFTUFJTEFERFJFU1M9c2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnLCBDTj1PcGVuRUNPTVAgc2ltcGxlZGVtbyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5LCBPVT1zaW1wbGVkZW1vLCBPPU9wZW5FQ09NUCwgTD1CZWRtaW5zdGVyLCBTVD1OSiwgQz1VUw0KK1NlcmlhbCBudW1iZXI6IDlhYjFmMWQyYTcwOTk2NjgNCitWYWxpZCBmcm9tOiBNb24gTm92IDI4IDIxOjE0OjI2IFVUQyAyMDE2IHVudGlsOiBTYXQgTm92IDI3IDIxOjE0OjI2IFVUQyAyMDIxDQorQ2VydGlmaWNhdGUgZmluZ2VycHJpbnRzOg0KKwkgTUQ1OiAgODM6NDE6RTY6QUM6REE6Mjg6NzM6NDc6OUU6MEI6NTg6OTA6RUY6NDg6OTk6MzgNCisJIFNIQTE6IDJEOjYzOkQyOjZDOkI3OjExOjA0OjZDOkE4OjdCOjk3OkRGOkE5OkQyOjE5Ojc3OjQxOkQyOjQ1OkJGDQorCSBTSEEyNTY6IDk1OjMyOjEyOkU0OkZDOjA5OkRBOkI3OkRFOjVCOkZBOjFEOjNBOkY4OkY3OkQ4OkQxOjk2OjAxOkQwOkExOjlCOjI2OkY5OjFEOjgyOjhCOjI3OkNBOjQ3OkU3OjlDDQorU2lnbmF0dXJlIGFsZ29yaXRobSBuYW1lOiBTSEEyNTZ3aXRoUlNBDQorU3ViamVjdCBQdWJsaWMgS2V5IEFsZ29yaXRobTogMjA0OC1iaXQgUlNBIGtleQ0KK1ZlcnNpb246IDMNCisNCitFeHRlbnNpb25zOiANCisNCisjMTogT2JqZWN0SWQ6IDIuNS4yOS4xOSBDcml0aWNhbGl0eT10cnVlDQorQmFzaWNDb25zdHJhaW50czpbDQorICBDQTp0cnVlDQorICBQYXRoTGVuOjIxNDc0ODM2NDcNCitdDQorDQorIzI6IE9iamVjdElkOiAyLjUuMjkuMzIgQ3JpdGljYWxpdHk9ZmFsc2UNCitDZXJ0aWZpY2F0ZVBvbGljaWVzIFsNCisgIFtDZXJ0aWZpY2F0ZVBvbGljeUlkOiBbMi41LjI5LjMyLjBdDQorW1BvbGljeVF1YWxpZmllckluZm86IFsNCisgIHF1YWxpZmllcklEOiAxLjMuNi4xLjUuNS43LjIuMg0KKyAgcXVhbGlmaWVyOiAwMDAwOiAzMCA0RiAxQSA0RCA0OSA2NiAyMCA3OSAgIDZGIDc1IDIwIDc0IDcyIDc1IDczIDc0ICAwTy5NSWYgeW91IHRydXN0DQorMDAxMDogMjAgNzQgNjggNjkgNzMgMjAgNjMgNjUgICA3MiA3NCAyMCA3NCA2OCA2NSA2RSAyMCAgIHRoaXMgY2VydCB0aGVuIA0KKzAwMjA6IDc3IDY1IDIwIDY4IDYxIDc2IDY1IDIwICAgNjEgMjAgNjIgNzIgNjkgNjQgNjcgNjUgIHdlIGhhdmUgYSBicmlkZ2UNCiswMDMwOiAyMCA3NCA2OCA2MSA3NCAyMCA3OSA2RiAgIDc1IDIwIDZEIDY5IDY3IDY4IDc0IDIwICAgdGhhdCB5b3UgbWlnaHQgDQorMDA0MDogNjIgNjUgMjAgNjkgNkUgNzQgNjUgNzIgICA2NSA3MyA3NCA2NSA2NCAyMCA2OSA2RSAgYmUgaW50ZXJlc3RlZCBpbg0KKzAwNTA6IDJFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4NCisNCitdXSAgXQ0KK10NCisNCisjMzogT2JqZWN0SWQ6IDIuNS4yOS4xNSBDcml0aWNhbGl0eT10cnVlDQorS2V5VXNhZ2UgWw0KKyAgRGlnaXRhbFNpZ25hdHVyZQ0KKyAgS2V5X0NlcnRTaWduDQorICBDcmxfU2lnbg0KK10NCisNCisjNDogT2JqZWN0SWQ6IDIuNS4yOS4xNCBDcml0aWNhbGl0eT1mYWxzZQ0KK1N1YmplY3RLZXlJZGVudGlmaWVyIFsNCitLZXlJZGVudGlmaWVyIFsNCiswMDAwOiA0RSBBNyA2QyA2MiAwMSA4RCAxQSBFNiAgIEREIDI0IDdBIEJEIEI2IEM2IDg5IDg0ICBOLmxiLi4uLi4kei4uLi4uDQorMDAxMDogQ0YgNDcgMTMgOUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkcuLg0KK10NCitdDQorDQorDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisNCisNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9hc2RjLnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9hc2RjLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRhM2IwOQotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL2FzZGMucHJvcGVydGllcwpAQCAtMCwwICsxLDYgQEAKK2FzZGMuY2xpZW50LnR5cGU9UkVTVA0KKw0KK2FzZGMuY2xpZW50LnJlc3QucHJvdG9jb2w9aHR0cA0KK2FzZGMuY2xpZW50LnJlc3QuaG9zdD0NCithc2RjLmNsaWVudC5yZXN0LnBvcnQ9ODA4MA0KK2FzZGMuY2xpZW50LnJlc3QuYXV0aD0NCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9hc2RjX3RlbXBsYXRlLnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9hc2RjX3RlbXBsYXRlLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxNWRhNAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL2FzZGNfdGVtcGxhdGUucHJvcGVydGllcwpAQCAtMCwwICsxLDYgQEAKK2FzZGMuY2xpZW50LnR5cGU9JHtBU0RDX0NMSUVOVF9UWVBFfQ0KKw0KK2FzZGMuY2xpZW50LnJlc3QucHJvdG9jb2w9JHtBU0RDX0NMSUVOVF9SRVNUX1BST1RPQ09MfQ0KK2FzZGMuY2xpZW50LnJlc3QuaG9zdD0ke0FTRENfQ0xJRU5UX1JFU1RfSE9TVH0NCithc2RjLmNsaWVudC5yZXN0LnBvcnQ9JHtBU0RDX0NMSUVOVF9SRVNUX1BPUlR9DQorYXNkYy5jbGllbnQucmVzdC5hdXRoPSR7QVNEQ19DTElFTlRfUkVTVF9BVVRIfQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3F1YXJ0ei5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvcXVhcnR6LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ5M2I2MwotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3F1YXJ0ei5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMzAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgUXVhcnR6IGNvbmZpZ3VyYXRpb25zIGZvciBRdWFudHVtIFdvcmsgRmxvdwkJCQkJCQkJCSMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitvcmcucXVhcnR6LnNjaGVkdWxlci5pbnN0YW5jZUlkID0gQVVUTw0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgTWFpbiBjb25maWd1cmF0aW9ucw0KK29yZy5xdWFydHoudGhyZWFkUG9vbC5jbGFzcyA9IG9yZy5xdWFydHouc2ltcGwuU2ltcGxlVGhyZWFkUG9vbA0KK29yZy5xdWFydHoudGhyZWFkUG9vbC50aHJlYWRDb3VudCA9IDMwDQorDQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgQ29uZmlndXJlIEpvYlN0b3JlICANCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK29yZy5xdWFydHouam9iU3RvcmUubWlzZmlyZVRocmVzaG9sZCA9IDYwMDAwDQorDQorb3JnLnF1YXJ0ei5qb2JTdG9yZS5jbGFzcyA9IG9yZy5xdWFydHouaW1wbC5qZGJjam9ic3RvcmUuSm9iU3RvcmVUWA0KK29yZy5xdWFydHouam9iU3RvcmUuZHJpdmVyRGVsZWdhdGVDbGFzcyA9IG9yZy5xdWFydHouaW1wbC5qZGJjam9ic3RvcmUuU3RkSkRCQ0RlbGVnYXRlDQorb3JnLnF1YXJ0ei5qb2JTdG9yZS51c2VQcm9wZXJ0aWVzID0gZmFsc2UNCisjb3JnLnF1YXJ0ei5qb2JTdG9yZS5kYXRhU291cmNlID0gbXlEUw0KK29yZy5xdWFydHouam9iU3RvcmUudGFibGVQcmVmaXggPSBGTl9RWl8NCisNCitvcmcucXVhcnR6LmpvYlN0b3JlLmlzQ2x1c3RlcmVkID0gdHJ1ZQ0KK29yZy5xdWFydHouam9iU3RvcmUuY2x1c3RlckNoZWNraW5JbnRlcnZhbCA9IDIwMDAwDQorDQorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIENvbmZpZ3VyZSBEYXRhc291cmNlcyAgDQorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9xdWFydHpfdGVtcGxhdGUucHJvcGVydGllcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3F1YXJ0el90ZW1wbGF0ZS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzJhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9xdWFydHpfdGVtcGxhdGUucHJvcGVydGllcwpAQCAtMCwwICsxLDM2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIFF1YXJ0eiBjb25maWd1cmF0aW9ucyBmb3IgUXVhbnR1bSBXb3JrIEZsb3cJCQkJCQkJCQkjDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorb3JnLnF1YXJ0ei5zY2hlZHVsZXIuaW5zdGFuY2VJZCA9IEFVVE8NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIE1haW4gY29uZmlndXJhdGlvbnMNCitvcmcucXVhcnR6LnRocmVhZFBvb2wuY2xhc3MgPSBvcmcucXVhcnR6LnNpbXBsLlNpbXBsZVRocmVhZFBvb2wNCitvcmcucXVhcnR6LnRocmVhZFBvb2wudGhyZWFkQ291bnQgPSAzMA0KKw0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIENvbmZpZ3VyZSBKb2JTdG9yZSAgDQorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCitvcmcucXVhcnR6LmpvYlN0b3JlLm1pc2ZpcmVUaHJlc2hvbGQgPSA2MDAwMA0KKw0KK29yZy5xdWFydHouam9iU3RvcmUuY2xhc3MgPSBvcmcucXVhcnR6LmltcGwuamRiY2pvYnN0b3JlLkpvYlN0b3JlVFgNCitvcmcucXVhcnR6LmpvYlN0b3JlLmRyaXZlckRlbGVnYXRlQ2xhc3MgPSBvcmcucXVhcnR6LmltcGwuamRiY2pvYnN0b3JlLlN0ZEpEQkNEZWxlZ2F0ZQ0KK29yZy5xdWFydHouam9iU3RvcmUudXNlUHJvcGVydGllcyA9IGZhbHNlDQorI29yZy5xdWFydHouam9iU3RvcmUuZGF0YVNvdXJjZSA9IG15RFMNCitvcmcucXVhcnR6LmpvYlN0b3JlLnRhYmxlUHJlZml4ID0gRk5fUVpfDQorDQorb3JnLnF1YXJ0ei5qb2JTdG9yZS5pc0NsdXN0ZXJlZCA9IHRydWUNCitvcmcucXVhcnR6LmpvYlN0b3JlLmNsdXN0ZXJDaGVja2luSW50ZXJ2YWwgPSAyMDAwMA0KKw0KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBDb25maWd1cmUgRGF0YXNvdXJjZXMgIA0KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorDQorb3JnLnF1YXJ0ei5kYXRhU291cmNlLm15RFMuZHJpdmVyID0gb3JnLm1hcmlhZGIuamRiYy5Ecml2ZXINCitvcmcucXVhcnR6LmRhdGFTb3VyY2UubXlEUy5VUkwgPSBqZGJjOm1hcmlhZGI6Ly8ke1ZJRF9NWVNRTF9IT1NUfToke1ZJRF9NWVNRTF9QT1JUfS8ke1ZJRF9NWVNRTF9EQk5BTUV9DQorb3JnLnF1YXJ0ei5kYXRhU291cmNlLm15RFMudXNlciA9ICR7VklEX01ZU1FMX1VTRVJ9DQorb3JnLnF1YXJ0ei5kYXRhU291cmNlLm15RFMucGFzc3dvcmQgPSAke1ZJRF9NWVNRTF9QQVNTfQ0KK29yZy5xdWFydHouZGF0YVNvdXJjZS5teURTLm1heENvbm5lY3Rpb25zID0gJHtWSURfTVlTUUxfTUFYQ09OTkVDVElPTlN9DQorb3JnLnF1YXJ0ei5kYXRhU291cmNlLm15RFMudmFsaWRhdGlvblF1ZXJ5PXNlbGVjdCAwIGZyb20gZHVhbA0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3JhcHRvci5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvcmFwdG9yLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQzMzBhMAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3JhcHRvci5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTg3IEBACisjIyMNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBlQ09NUCBQb3J0YWwgU0RLDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5DQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjIA0KKyMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjIA0KKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMjIw0KKyMjQyMjIE1lbnRpb24gdGhlIG5hbWUgb2YgdGhlIGZyYW1ld29yay4gQXQgcHJlc2VudCBSQVBUT1Igc3VwcG9ydHMgRlVTSU9ODQorc3lzdGVtPWZ1c2lvbg0KKyMjQyMjIERldGVybWluZXMgdGhlIHByaW9yaXR5IGZvciB0aGUgZGVidWcgbWVzc2FnZS4NCitkZWJ1Z19sZXZlbD01DQorIyNDIyMgRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgY2FuIGJlIGRvd25sb2FkZWQgaW4gZXhjZWwgd2hlbiB5b3Ugc2VsZWN0ICJkb3dubG9hZCBhbGwiIG9wdGlvbi4NCitkb3dubG9hZF9saW1pdD02NTAwMA0KK2Nzdl9kb3dubG9hZF9saW1pdD0xMA0KKyMjQyMjIERldGVybWluZXMgdGhlIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIGRpc3BsYXllZCBpbiBhIHNpbmdsZSBwYWdlLg0KK2RlZmF1bHRfcGFnZV9zaXplPTUwDQorIyNDIyMgRGV0ZXJtaW5lcyB0aGUgbGlzdCBzaXplIGluIHRoZSBmb3JtIGZpZWxkLg0KK2Zvcm1fZmllbGRzX2xpc3Rfc2l6ZT05OTAwMA0KKyMjQyMjIERldGVybWluZXMgdGhlIHNjaGVkdWxlciBpbnRlcnZhbA0KKyNzY2hlZHVsZXJfaW50ZXJ2YWw9MCA9PiBkaXNhYmxlZA0KK3NjaGVkdWxlcl9pbnRlcnZhbD0wDQorIyNDIyMgU3lzdGVtIE5hbWUNCitzeXN0ZW1fbmFtZT1SQVBUT1INCisjI0MjIyBUaGlzIGlzIHVzZWQgZm9yIEJyZWFkIGNydW1icy4NCitiYXNlX3RpdGxlPUFOQUxZU0lTDQorIyNDIyMgd2hldGhlciB0byBhbGxvdyBTUUwtYmFzZWQgcmVwb3J0IGRlZmluaXRpb24gKHNlY3VyaXR5IHJpc2spOyBzdXBlciB1c2VycyBhcmUgYWx3YXlzIGFsbG93ZWQgdG8gY3JlYXRlIFNRTC1iYXNlZCByZXBvcnRzDQorYWxsb3dfc3FsX2Jhc2VkX3JlcG9ydHM9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgZGlzY2xhaW1lciBwYWdlIGF0IHRoZSBib3R0b20gb2YgZWFjaCBzY3JlZW4NCitzaG93X2Rpc2NsYWltZXI9eWVzDQorZGlzY2xhaW1lcl9wb3NpdGlvbmVkX3RvcF9pbl9jc3ZleGNlbD15ZXMNCisjI0MjIyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBwYWdlIGFzIGEgc2VwYXJhdGUgcGFnZSBiZWZvcmUgcnVubmluZyB0aGUgcmVwb3J0DQorZGlzcGxheV9mb3JtX2JlZm9yZV9ydW49eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlIGZvcm0gcGFnZSBvbiB0aGUgcmVwb3J0IGRhdGEgcGFnZQ0KK2luY2x1ZGVfZm9ybV93aXRoX2RhdGE9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNhY2hlIGNoYXJ0IGRhdGEgaW4gdGhlIHNlc3Npb24gPT4gZmFzdGVyIHJlLWRpc3BsYXkgaWYgdGhlIGRhdGEgdm9sdW1lIGRvZXMgbm90IGdldCB0b28gbGFyZ2UNCitjYWNoZV9jaGFydF9kYXRhPXllcw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBjYWNoZSByZXBvcnQgZGF0YSBmb3IgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgcGFnZSBpbiB0aGUgc2Vzc2lvbiA9PiBmYXN0ZXIgcmUtZGlzcGxheQ0KKwkjI0MjIyBpZiB0aGUgZGF0YSB2b2x1bWUgZG9lcyBub3QgZ2V0IHRvbyBsYXJnZQ0KK2NhY2hlX2N1cl9wYWdlX2RhdGE9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyBDaGFydCB3aWR0aA0KK2RlZmF1bHRfY2hhcnRfd2lkdGg9NzAwDQorIyNDIyMgRGV0ZXJtaW5lcyBDaGFydCBoZWlnaHQNCitkZWZhdWx0X2NoYXJ0X2hlaWdodD00MjANCisjI0MjIyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gcGVybWl0IHJlcG9ydCBkZWxldGlvbiBvbmx5IGJ5IHJlcG9ydCBvd25lciBvciBieSBldmVyeW9uZSB3aXRoICJ3cml0ZSIgYWNjZXNzDQorZGVsZXRlX29ubHlfYnlfb3duZXI9bm8NCisjI0MjIyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gbG9nIGVhY2ggcmVwb3J0IGV4ZWN1dGlvbiBhbmQgdXBkYXRlIHRpbWUgYW5kIHVzZXIgSUQNCitlbmFibGVfcmVwb3J0X2xvZz15ZXMNCisjI0MjIyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gY2FjaGUgdXNlciByb2xlcyBpbmZvIGluIG1lbW9yeSAoc2F2ZXMgbWFueSBEQiByZWFkcywgYnV0IGRvZXMgbm90IGFjY291bnQgZm9yIHJvbGVzDQorCSMjQyMjIGFzc2lnbmVkIGFmdGVyIHRoZSBjYWNoZSB3YXMgbG9hZGVkKQ0KK2NhY2hlX3VzZXJfcm9sZXM9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNvbnZlcnQgbW9udGggZm9ybWF0cyAoZS5nLiBNTS9ZWVlZKSB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoICh0cnVlKSBvcg0KKyAgICAgICAgIyNDIyMgZmlyc3QgZGF5IChmYWxzZSkgLSBsaWtlIDEyLzIwMDMgaXMgY29udmVydGVkIHRvIGVpdGhlciAxMi8zMS8yMDAzIG9yIDEyLzAxLzIwMDMNCittb250aF9mb3JtYXRfdXNlX2xhc3RfZGF5PW5vDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHByaW50IHRoZSByZXBvcnQgdGl0bGUgaW4gdGhlIGRvd25sb2FkIGZpbGVzDQorcHJpbnRfdGl0bGVfaW5fZG93bmxvYWQ9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgcmVwb3J0IGRlc2NyaXB0aW9uIHdoZW4gdGhlIHJlcG9ydCBpcyBydW4gYW5kIGluIHRoZSBxdWljayBsaW5rcw0KK3Nob3dfZGVzY3JfYXRfcnVudGltZT1ubw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBza2lwIGxhYmVscyBvbiB0aGUgTGluZSBjaGFydCBheGlzIHdoZW4gdGhleSBvdmVybGFwDQorI0RFUFJFQ0FURUQgc2tpcF9jaGFydF9sYWJlbHNfdG9fZml0PW5vDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgY2hhcnQgdHlwZXMgdGhhdCBhcmUgcHVycG9zZSBhbmQvb3IgZGF0YSBzcGVjaWZpYw0KK3Nob3dfbm9uc3RhbmRhcmRfY2hhcnRzPXllcw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBhbGxvdyB0aGUgdXNlciB0byBjaGFuZ2UgdGhlIGNoYXJ0IHR5cGUgYXQgcnVudGltZQ0KK2FsbG93X3J1bnRpbWVfY2hhcnRfc2VsPXllcw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSByZXBvcnQgdGl0bGUgYXMgY2hhcnQgdGl0bGUgYXMgd2VsbA0KK2Rpc3BsYXlfY2hhcnRfdGl0bGU9eWVzDQorIyNDIyMgRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIG1lcmdlL2JsYW5rIG11bHRpLWxldmVsIHJvdyBoZWFkaW5ncyBpbiBjcm9zcy10YWIgcmVwb3J0DQorbWVyZ2VfY3Jvc3N0YWJfcm93X2hlYWRpbmdzPXllcw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IGNoYXJ0IHdoZW4gZGlzcGxheWluZyB0aGUgcmVwb3J0IGF0IGZpcnN0IG9yIGp1c3QgYSAiU2hvdyBDaGFydCIgYnV0dG9uDQorZGlzcGxheV9jaGFydF9ieV9kZWZhdWx0PXllcw0KKyMjQyMjIERldGVybWluZXMgd2hldGhlciB0byBwcmludCB0aGUgZm9ybSBmaWVsZCB2YWx1ZXMgaW4gdGhlIGRvd25sb2FkIGZpbGVzDQorcHJpbnRfcGFyYW1zX2luX2Rvd25sb2FkPXllcw0KKyMjQyMjIERldGVybWluZXMgdGhlIGxpbWl0YXRpb24gdG8gdGhlIGNoYXJhY3RlcnMgaW4gY2hhcnQgbGFiZWwuDQorc2tpcF9jaGFydF9sYWJlbHNfbGltaXQ9MzANCisjI0MjIyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlcnMgd2l0aCByZWFkLW9ubHkgcmlnaHRzIGZvciBhIHJlcG9ydCBjYW4gY29weSBpdA0KK2Nhbl9jb3B5X29uX3JlYWRfb25seT15ZXMNCisjI0MjIyBEZXRlcm1pbmVzIHRoZSBubyBvZiBkZWNpbWFscyB0byBiZSBkaXNwbGF5ZWQgaW4gVG90YWxzIGNvbHVtbg0KKyNtYXhfZGVjaW1hbHNfb25fdG90YWxzPS0xID0+IGRvbid0IHRydW5jYXRlLCBkaXNwbGF5IGFsbCBkZWNpbWFsIGRpZ2l0cw0KK21heF9kZWNpbWFsc19vbl90b3RhbHM9Mg0KKyMjQyMjIERldGVybWluZXMgd2hpY2ggSkZyZWVDaGFydCB0byB1c2UuDQoramZyZWVfdmVyc2lvbj1sYXRlc3QNCisjamZyZWVfdmVyc2lvbj0wLjkuMTENCisjIEFkZGVkIHRoaXMgcmVzdHJpY3Rpb24gc28gdGhhdCBoZWF2aWx5IHVzZWQgc3lzdGVtIHdoaWNoIGNvbnRhaW4NCisjIG1vcmUgdGhhbiAxMDAwIHVzZXJzIGNhbiBlbmFibGUgdGhpcyBmZWF0dXJlIG5vdCB0byBkaXNwbGF5IHdob2xlDQorIyB1c2VycyBpbiB0aGUgZHJvcCBkb3duIG1lbnUNCitkaXNwbGF5X2FsbF91c2Vycz15ZXMNCisjI1NoZWV0IG5hbWUNCitzaGVldF9uYW1lPXJhcHRvcg0KKyNzaGVsbF9zY3JpcHRfbmFtZT0vaG9tZS9zdW5kYXIvdGVzdC5zaA0KKyNkb3dubG9hZF9xdWVyeV9mb2xkZXI9L3RpdGFuL1BST0pFQ1QzL1JBUFRPUi9yYXB0b3IvZHdubGQvcXVlcnkvDQorIyMgdGhpcyBkaXJlY3RvcnkgaXMgbWVudGlvbmVkIGlmIHRoZSBmbGF0IGZpbGUgaXMgZG93bmxvYWRlZCB1c2luZyBzaGVsbCBzY3JpcHQNCitzaGVsbF9zY3JpcHRfZGlyPS90aXRhbi9QUk9KRUNUMy9SQVBUT1IvcmFwdG9yL2R3bmxkLw0KK2ZsYXRfZmlsZV9sb3dlcl9saW1pdD0xDQorZmxhdF9maWxlX3VwcGVyX2xpbWl0PTIwMDAwMA0KKyMjIHdoYXRldmVyIHJlcXVlc3QgbWVudGlvbmVkIGhlcmUgd291bGQgYmUgcGFyc2VkIGluIHNxbCBhbmQgcmVxdWVzdCBwYXJhbWV0ZXIgd291bGQgYmUgZmlsbGVkDQorcmVxdWVzdF9nZXRfcGFyYW1zPWlzRW1iZWRkZWQNCitwcmludF9mb290ZXJfaW5fZG93bmxvYWQ9eWVzDQorIyMgZm9vdGVyIG1lbnRpb25lZCBoZXJlIGFwcGVhcnMgaW4gZG93bmxvYWRlZCBleGNlbA0KK2Zvb3Rlcl9maXJzdF9saW5lPVRPRE8gZm9vdGVyIGZpcnN0IGxpbmUNCitmb290ZXJfc2Vjb25kX2xpbmU9VXNlIFB1cnN1YW50IHRvIENvbXBhbnkgSW5zdHJ1Y3Rpb25zDQorIyMgdG8gcnVuIHJlcG9ydCBpbiBwb3B1cCB3aW5kb3cNCityZXBvcnRfaW5fcG9wdXBfd2luZG93PXllcw0KKyMjIHRvIHJ1biBlYWNoIHJlcG9ydCBpbiBuZXcgcG9wdXAgd2luZG93IGlmIHRoZSBhYm92ZSBpcyBzZWxlY3RlZA0KK3BvcHVwX2luX25ld193aW5kb3c9eWVzDQorIyMgIlllcyIgYWxsb3dzIHRoZSByZXF1ZXN0IHBhcmFtIHRvIGJlIHBhc3NlZCB0byB0aGUgZHJpbGwgZG93biByZXBvcnQNCitwYXNzX3JlcXVlc3RfcGFyYW1faW5fZHJpbGxkb3duPXllcw0KKyMjIFNob3cgUERGIGRvd25sb2FkIGljb24NCitzaG93X3BkZl9kb3dubG9hZD15ZXMNCisjIFNob3cgRm9sZGVyIFRyZWUNCitzaG93X2ZvbGRlcl90cmVlPW5vDQorI1Nob3cgZm9sZGVyIHRyZWUgb25seSBmb3IgQWRtaW4gVXNlcnMNCitzaG93X2ZvbGRlcl90cmVlX29ubHlfdG9fYWRtaW5fdXNlcnM9bm8NCisjZm9sZGVyIHRyZWUgc2hvdWxkIGJlIG1pbmltaXplZA0KK2ZvbGRlcl90cmVlX21pbmltaXplZD15ZXMNCisjIyB3aGF0ZXZlciBzZXNzaW9uIG1lbnRpb25lZCBoZXJlIHdvdWxkIGJlIHBhcnNlZCBpbiBzcWwgYW5kIHNlc3Npb24gcGFyYW1ldGVyIHdvdWxkIGJlIGZpbGxlZA0KK3Nlc3Npb25fcGFyYW1zPWxvZ2luX2lkDQorZGlzcGxheV9mb3JtZmllbGRfaW5mbz15ZXMNCitjdXN0b21pemVfZm9ybWZpZWxkX2luZm89eWVzDQorI3NjaGVkdWxlIGxpbWl0IGZvciBlbmQgdXNlcnMNCitzY2hlZHVsZV9saW1pdD0xMA0KKyMgY3VzdG9taXplZCBxdWVyeSBpZiB5b3UgbmVlZCBhbnkgcmVzdHJpY3Rpb25zIGZvciBzY2hlZHVsZSBhbmQgc2VjdXJpdHkgdGFiIGZvciBmdXNpb24NCisjc2NoZWR1bGVfY3VzdG9tX3F1ZXJ5X2Zvcl91c2Vycz1nZXRBbGxVc2Vyc0J5Q3VzdG9tZXINCisjc2NoZWR1bGVfY3VzdG9tX3F1ZXJ5X2Zvcl9yb2xlcz1nZXRBbGxSb2xlc0J5Q3VzdG9tZXINCisjIGN1c3RvbWl6ZWQgcXVlcnkgaWYgeW91IG5lZWQgYW55IHJlc3RyaWN0aW9ucyBmb3Igc2NoZWR1bGUgYW5kIHNlY3VyaXR5IHRhYiBmb3IgcHJpc21zIGV4YW1wbGUNCisjc2NoZWR1bGVfY3VzdG9tX3F1ZXJ5X2Zvcl91c2Vycz1TRUxFQ1QgYXUudXNlcl9pZCwgYXUuZmlyc3RfbmFtZXx8JyAnfHxhdS5sYXN0X25hbWUgdXNlcl9uYW1lIEZST00gYXBwX3VzZXIgYXUgb3JkZXIgYnkgMg0KK3NjaGVkdWxlX2N1c3RvbV9xdWVyeV9mb3JfdXNlcnM9U0VMRUNUIGF1LnVzZXJfaWQgaWQsIGF1LmZpcnN0X25hbWV8fCcgJ3x8YXUubGFzdF9uYW1lIG5hbWUgRlJPTSBhcHBfdXNlciBhdSB3aGVyZSB1c2VyX2lkID0gMSBvcmRlciBieSAyDQorI3NjaGVkdWxlX2N1c3RvbV9xdWVyeV9mb3Jfcm9sZXM9U0VMRUNUIGFyLnJvbGVfaWQsIGFyLmRlc2NyIHJvbGVfbmFtZSBGUk9NIGFwcF9yb2xlIGFyIG9yZGVyIGJ5IDINCitzY2hlZHVsZV9kYXRlX3BhdHRlcm49TU0vZGQveXl5eSBoaDptbTpzcyBhDQorIyMgVGhpcyBpcyB1c2VkIHRvIGRpc3BsYXkgaW4gcmlnaHQgZm9ybWF0IGluIGNoYXJ0IHRpbWVzdGFtcCBheGlzIGFzIHdlIGdpdmUgaW4gdGhlIHNxbA0KKyNjaGFydF95ZWFybHlfZm9ybWF0PXl5eXkNCisjY2hhcnRfbW9udGhseV9mb3JtYXQ9TU1NLXl5eXkNCisjY2hhcnRfZGFpbHlfZm9ybWF0PU1NLWRkLXl5eXkNCitjaGFydF9ob3VybHlfZm9ybWF0PU1NL2RkIEhIDQorI2NoYXJ0X21pbnV0ZV9mb3JtYXQ9SEg6bW0NCitjaGFydF9taW51dGVfZm9ybWF0PU1NLWRkLXl5eXktSEg6bW0NCisjY2hhcnRfc2Vjb25kX2Zvcm1hdD1ISDptbTpzcw0KK2NoYXJ0X3NlY29uZF9mb3JtYXQ9TU0tZGQteXl5eQ0KKyNjaGFydF9taWxsaXNlY29uZF9mb3JtYXQ9SEg6bW06c3MuUw0KK3NjaGVkdWxlX2hlbHBfdGV4dD1UaGlzIGZvcm0gaXMgdXNlZCB0byBzY2hlZHVsZSBhIHNwZWNpZmljIFJlcG9ydGluZyBQbGF0Zm9ybSByZXBvcnQgdG8gYmUgZGVsaXZlcmVkIHRvIG9uZSBvciBtb3JlIGVtYWlsIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggeW91ciBDb21wYW55J3MgQnVzaW5lc3MgRGlyZWN0IHVzZXIgbG9naW5zLiAgTm90ZSB0aGF0IHJlcG9ydCBvdXRwdXQgZGVsaXZlcmVkIHZpYSBlbWFpbCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBjYXBhYmlsaXR5IHRvIGRyaWxsIGRvd24vYmFjayB1cCB0byBhZGRpdGlvbmFsIGRhdGEgbGV2ZWxzLiAgU28sIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBsZXZlbCByZXBvcnQgZm9yIHRoZSBzY2hlZHVsZWQgcmVwb3J0LiAgVmlldyB0aGUgc3RhdHVzIG9mIHNjaGVkdWxlZCByZXBvcnQgcmVxdWVzdHMgaW4gdGhlIE15IFNjaGVkdWxlcyBtZW51IGl0ZW0uDQordXNlX2xvZ2luaWRfaW5fc2NoZWRZTj1ZDQorc2Vzc2lvbl9wYXJhbXNfZm9yX3NjaGVkdWxpbmc9bG9naW5faWQNCitzZXNzaW9uX2RhdGVfZm9ybWZpZWxkX2F1dG9faW5jcj15ZXMNCitkaXNwbGF5X3Nlc3Npb25fcGFyYW1fcGRmZXhjZWw9bG9naW5faWQ7TG9naW4gSWQNCitzZXNzaW9uX3BhcmFtc19mb3JfZGlzcGxheWluZ19pbl9zY2hlZHVsaW5nPWxvZ2luX2lkO0xvZ2luIElkDQorYXBwbGljYXRpb25fc2VydmVyPXRvbWNhdA0KKyNnbWFwIHByb3BlcnRpZXMNCitnbWFwX2tleT1BQlFJQUFBQVRvSlNTZXRLQk1qQkp4OE1pUnc0Z2hRaVUwU2JiS25tOEM1ZXUyNWNweUx3Z2tMenlSU2hyUVRiZ1p0cW5LQXFaVTlKd2NTcTFiS3dpQQ0KK1BST0pFQ1QtRk9MREVSPS9Vc2Vycy9zdW5kYXIvZ2l0L3N0X3F1YW50dW0vcXVhbnR1bS90YXJnZXQvcXVhbnR1bS0xLjANCisjIA0KK01BUktFVC1TSEFQRUZJTEUtRk9MREVSPXJlc291cmNlcy9maWxlcw0KKyMgb3V0cHV0IGZvbGRlciBmb3IgZmlsZXMgZ2VuZXJhdGVkIG9uIHNlcnZlciBzaWRlDQorT1VUUFVULUZPTERFUj1yZXNvdXJjZXMvdGVtcA0KKyMgdGlsZSBzaXplIGluIHBpeGVsDQorVElMRS1TSVpFPTI1Ng0KKyNjaGVjayBpZiBtYXAgaXMgZGlzYWJsZWQgb3Igbm90DQorbWFwX2FsbG93ZWQ9WQ0KK21heF9kcmlsbGRvd25fbGV2ZWw9Mg0KK2FkbWluX3JvbGVfZXF1aXZfdG9fc3VwZXJfcm9sZT1ODQorc2hvd19sb2FkaW5nX2R1cmluZ19mb3JtZmllbGRfY2hhaW49WQ0KK3Nob3dfcHJpbnRfaWNvbj1ODQorZ2xvYmFsbHlfbm93cmFwPU4NCitjYWxlbmRhcl9vdXRwdXRfZGF0ZV9mb3JtYXQ9TU0vZGQveXl5eQ0KK21lbW9yeV90aHJlc2hvbGRfcGVyY2VudGFnZT05OQ0KK3ByaW50X3BhcmFtc19pbl9jc3ZfZG93bmxvYWQ9eWVzDQorbm90aXRsZV9pbl9kYXNoYm9hcmQ9eWVzDQorZ2VuZXJhdGVfc3RvcmVfc2NoZWRfcmVwb3J0cz15ZXMNCitzaG93X2V4Y2VsXzIwMDdfZG93bmxvYWQ9eWVzDQorcHJpbnRfZXhjZWxfaW5fbGFuZHNjYXBlPXllcw0KK3Nob3dfYW5pbWF0ZWRfY2hhcnRfb3B0aW9uPXllcw0KK3Nob3dfYW5pbWF0ZWRfY2hhcnRfb25seT1ubw0KK2FkanVzdF9jb250ZW50X2Jhc2VkX29uX2hlaWdodD15ZXMNCitjdXN0b21fc3VibWl0X2J1dHRvbl90ZXh0PVJ1biBCdXR0b24NCitjdXN0b21pemVfZm9ybWZpZWxkX2xheW91dD15ZXMNCisjZGJfdHlwZT1wb3N0Z3Jlc3FsDQorI2RiX3R5cGU9b3JhY2xlDQorZGJfdHlwZT1teXNxbA0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3JhcHRvcl9hcHBfZnVzaW9uLnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9yYXB0b3JfYXBwX2Z1c2lvbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YTgxODAKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9yYXB0b3JfYXBwX2Z1c2lvbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMzkgQEAKKyMjIw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIGVDT01QIFBvcnRhbCBTREsNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgDQorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyMjDQordGVtcF9mb2xkZXJfcGF0aD0vZGVtZXRlci9XZWJBcHBzL2Rldi9FQ09NUF9QT1JUQUwvdGVtcC8NCit1cGxvYWRfZm9sZGVyX3BhdGg9L2RlbWV0ZXIvV2ViQXBwcy9kZXYvRUNPTVBfUE9SVEFML2ZpbGVzLw0KK2V4Y2VsX3RlbXBsYXRlX3BhdGg9L2RlbWV0ZXIvV2ViQXBwcy9kZXYvRUNPTVBfUE9SVEFML2ZpbGVzL3JhcHRvcl90ZW1wbGF0ZS8NCit0ZW1wX2ZvbGRlcl91cmw9dGVtcC8NCit1cGxvYWRfZm9sZGVyX3VybD11cGxvYWQvDQorc210cF9zZXJ2ZXI9dG9kby5zbXRwLmNvbQ0KK2RlZmF1bHRfZW1haWxfc2VuZGVyPWVtYWlsLW5hbWVAZW1haWwuY29tDQorZXJyb3JfcGFnZT1lcnJvcl9wYWdlLmpzcA0KK2pzcF9jb250ZXh0X3BhdGg9cmFwdG9yLw0KK2ltZ19mb2xkZXJfdXJsPXN0YXRpYy9mdXNpb24vcmFwdG9yL2ltYWdlcy8NCitiYXNlX2ZvbGRlcl91cmw9c3RhdGljL2Z1c2lvbi9yYXB0b3IvDQorZGlyZWN0X2FjY2Vzc191cmw9aHR0cDovL2xvY2FsaG9zdDo4MDgwL3F1YW50dW0vcmFwdG9yX2VtYWlsX2F0dGFjaG1lbnQuaHRtP2FjdGlvbj1yYXB0b3Imc291cmNlX3BhZ2U9cmVwb3J0X3J1biZkaXNwbGF5X2NvbnRlbnQ9eQ0KKyNiYXNlX2FjdGlvbl91cmw9cmVwb3J0Lmh0bSMvcmVwb3J0X3J1bi8NCitkcmlsbF9hY3Rpb25fdXJsPXJlcG9ydC5odG0jL3JlcG9ydF9ydW4vY19tYXN0ZXI9DQorYmFzZV9hY3Rpb25fdXJsPXJlcG9ydF93aXphcmQuaHRtP2FjdGlvbj0NCitiYXNlX2FjdGlvbl91cmxfbmc9cmVwb3J0Iy8NCitiYXNlX2FjdGlvbl9wYXJhbT1jX21hc3Rlcj0NCitzdXBlcl9yb2xlX2lkPTENCithZG1pbl9yb2xlX2lkcz0xDQorcXVpY2tfbGlua3NfbWVudV9pZHM9SE9NRSxDVVNUT01FUixSRVBPUlRTDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvcmFwdG9yX2RiX2Z1c2lvbi5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvcmFwdG9yX2RiX2Z1c2lvbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4M2Y1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9yYXB0b3JfZGJfZnVzaW9uLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxOSBAQAorIyMjDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgZUNPTVAgUG9ydGFsIFNESw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIENvcHlyaWdodCAoQykgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eQ0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyANCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyANCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIyMNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9yYXB0b3JfcGRmLnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9yYXB0b3JfcGRmLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ZjA4MgotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3JhcHRvcl9wZGYucHJvcGVydGllcwpAQCAtMCwwICsxLDQ5IEBACisjIyMNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBlQ09NUCBQb3J0YWwgU0RLDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5DQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjIA0KKyMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjIA0KKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMjIw0KKyMjIHBkZiBmaWxlIHNwZWNpZmljIHByb3BlcnRpZXMNCitwZGZfZGF0YV9mb250X3NpemU9OQ0KK3BkZl9kYXRhX2ZvbnRfZmFtaWx5PUFyaWFsDQorI3JlZHVjZSB0aGUgZm9udCBzaXplIGZyb20gaHRtbCBjb25maWcNCitwZGZfZGF0YV9mb250X3NpemVfb2Zmc2V0PTINCitwZGZfZGF0YV9hbHRlcm5hdGVfY29sb3I9dHJ1ZQ0KKyNkYXRhIHJvdyBiYWNrZ3JvdW5kKHdoaXRlKSwgYWx0ZXJuYXRlKGxpZ2h0IGxpZ2h0IGJsdWUvZ3JheSkNCitwZGZfZGF0YV9iYWNrZ3JvdW5kX2FsdGVybmF0ZV9oZXhfY29kZT0jRURFREVEDQorcGRmX2RhdGFfZGVmYXVsdF9iYWNrZ3JvdW5kX2hleF9jb2RlPSNGRkZGRkYNCisjaGVhZGVyIGZvbnQgKHdoaXRlKSAgYmFja2dyb3VuZCAoZ3JheSkNCitwZGZfZGF0YV90YWJsZV9oZWFkZXJfZm9udF9oZXhfY29kZT0jRkZGRkZGDQorcGRmX2RhdGFfdGFibGVfaGVhZGVyX2JhY2tncm91bmRfaGV4X2NvZGU9IzhBOUJCMw0KKyNmb290ZXIgaGVhZGVyDQorcGRmX2Zvb3Rlcl9mb250X3NpemU9OQ0KK3BkZl9mb290ZXJfZm9udF9mYW1pbHk9QXJpYWwNCitwZGZfYXR0X3Byb3ByaWV0YXJ5PVByb3ByaWV0YXJ5XG5Vc2UgUHVyc3VhbnQgdG8gQ29tcGFueSBJbnN0cnVjdGlvbnMNCitwZGZfYXR0X3Byb3ByaWVyYXJ5X2ZvbnRfc2l6ZT03DQorcGRmX2RhdGVfdGltZXpvbmU9R01UDQorcGRmX2RhdGVfcGF0dGVybj1NTS9kZC95eXl5IGhoOm1tOnNzIGENCisjI3BhZ2UgbnVtYmVyIHBvc2l0aW9uIGF0IDEgLSBmb290ZXIgbWlkZGxlLCAwIC0tIGhlYWRlciByaWdodCwgMiAtIGJvdGgNCitwZGZfcGFnZV9udW1iZXJfcG9zaXRpb249MQ0KK3BkZl93b3JkX2JlZm9yZV9wYWdlX251bWJlcj1QYWdlDQorcGRmX3dvcmRfYWZ0ZXJfcGFnZV9udW1iZXI9DQorcGRmX2NvdmVycGFnZV9maXJzdGNvbHVtbl9zaXplPTAuMw0KK3BkZl9pbWFnZV9hdXRvX3JvdGF0ZT1mYWxzZQ0KK2Rpc3BsYXlfY3JlYXRlX293bmVyX2luZm89dHJ1ZQ0KKyNzZXNzaW9uX2luZm89Y3VzdG9tZXIsY3VzdG9tZXJJZA0KK2Rpc3BsYXlfbG9naW5pZF9mb3JfZG93bmxvYWRlZF9ieT1mYWxzZQ0KKyMgcGxlYXNlIHVzZSBmYWxzZSBpZiB5b3Ugd2FudCBsYW5kc2NhcGUgdG8gYmUgZGVmYXVsdC4NCitpc19kZWZhdWx0X29yaWVudGF0aW9uX3BvcnRyYWl0PXRydWUNCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9zcWwucHJvcGVydGllcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3NxbC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTE2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9zcWwucHJvcGVydGllcwpAQCAtMCwwICsxLDMyMiBAQAorIyMjDQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgZUNPTVAgUG9ydGFsIFNESw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIENvcHlyaWdodCAoQykgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eQ0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyANCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyANCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIyMNCisjU1FMIFN0YXRlbWVudHMgZm9yIFBvc3RncmVTUUwNCisNCisjUmVwb3J0TG9hZGVyLmphdmENCisNCitsb2FkLmN1c3RvbS5yZXBvcnQueG1sID0gU0VMRUNUIGNyLnJlcG9ydF94bWwgRlJPTSBjcl9yZXBvcnQgY3IgV0hFUkUgcmVwX2lkPT8NCisNCisjIG5lZWQgdG8gY29weSB0byBvcmFjbGUNCitsb2FkLnJlbW90ZURCLnNjaGVtYSA9IFNFTEVDVCAnbG9jYWwnIFNDSEVNQV9JRCwgJ2xvY2FsJyBTQ0hFTUFfREVTQywgbnVsbCBEQVRBU09VUkNFX1RZUEUgIEZST00gZHVhbCB1bmlvbiBTRUxFQ1QgYS5TQ0hFTUFfSUQsIGEuU0NIRU1BX0RFU0MsIERBVEFTT1VSQ0VfVFlQRSAgRlJPTSBTQ0hFTUFfSU5GTyBhICB3aGVyZSBzY2hlbWFfaWQgPD4gJ2xvY2FsJyBvcmRlciBieSBzY2hlbWFfaWQNCitsb2FkLnJlbW90ZURCLnNjaGVtYS53aGVyZSA9IFNFTEVDVCBhLlNDSEVNQV9JRCwgYS5TQ0hFTUFfREVTQywgREFUQVNPVVJDRV9UWVBFICBGUk9NIFNDSEVNQV9JTkZPIGEgd2hlcmUgc2NoZW1hX2lkID0gJ1tzY2hlbWFfaWRdJw0KKyNmb3JtZmllbGQgcmVuZGVyaW5nDQorDQorZm9ybWZpZWxkLmlkLm5hbWUuc3FsLnByZWZpeD1TRUxFQ1QgaWQsIG5hbWUgRlJPTSAoDQorZm9ybWZpZWxkLmlkLm5hbWUuc3FsPVNFTEVDVCBpZCwgbmFtZQ0KKw0KK2Zvcm1maWVsZC5pZC5uYW1lLnNxbC5zdWZmaXg9DQorDQorcmVwb3J0LnNlY3VyaXR5LmNyZWF0ZT0gU0VMRUNUIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpIEFTIG93bmVyX2lkLCBjci5jcmVhdGVfaWQsICBEQVRFX0ZPUk1BVChjci5jcmVhdGVfZGF0ZSwgJyVtLyVkLyVZJykgY3JlYXRlX2RhdGUsIG1haW50X2lkLCAgREFURV9GT1JNQVQoY3IubWFpbnRfZGF0ZSwgJyVtLyVkLyVZJykgIHVwZGF0ZV9kYXRlLCBjci5wdWJsaWNfeW4gRlJPTSBjcl9yZXBvcnQgY3IgV0hFUkUgY3IucmVwX2lkID0gW3J3LmdldFJlcG9ydElEKCldDQorDQorZGIudXBkYXRlLnJlcG9ydC54bWwgPSBTRUxFQ1QgY3IucmVwX2lkLCBjci5yZXBvcnRfeG1sIEZST00gY3JfcmVwb3J0IGNyIFdIRVJFIHJlcF9pZD0/IEZPUiBVUERBVEUNCisNCit1cGRhdGUuY3VzdG9tLnJlcG9ydC5yZWMgPSBVUERBVEUgY3JfcmVwb3J0IFNFVCB0aXRsZT0nW1V0aWxzLm9yYWNsZVNhZmUocncuZ2V0UmVwb3J0TmFtZSgpKV0nLCBkZXNjcj0nW1V0aWxzLm9yYWNsZVNhZmUocncuZ2V0UmVwb3J0RGVzY3IoKSldJywgcHVibGljX3luPSdbKHJ3LmlzUHVibGljKCldJywgbWVudV9pZD0nW3J3LmdldE1lbnVJRCgpXScsIG1lbnVfYXBwcm92ZWRfeW49J1socncuaXNNZW51QXBwcm92ZWQoKV0nLCBvd25lcl9pZD1bcncuZ2V0T3duZXJJRCgpXSwgbWFpbnRfaWQ9W3J3LmdldFVwZGF0ZUlEKCldLCBtYWludF9kYXRlPVNUUl9UT19EQVRFKCdbcncuZ2V0VXBkYXRlRGF0ZSgpXScsICdbR2xvYmFscy5nZXRPcmFjbGVUaW1lRm9ybWF0KCldJyksIGRhc2hib2FyZF90eXBlX3luPSdbKHJ3LmlzRGFzaGJvYXJkVHlwZSgpXScsIGRhc2hib2FyZF95bj0gJ1socncuZ2V0UmVwb3J0VHlwZSgpLmVxdWFscyhBcHBDb25zdGFudHMuUlRfREFTSEJPQVJEKV0nIFdIRVJFIHJlcF9pZCA9IFtydy5nZXRSZXBvcnRJRCgpXQ0KKw0KK2lzLnJlcG9ydC5hbHJlYWR5LnNjaGVkdWxlZCA9IHNlbGVjdCByZXBfaWQgZnJvbSBjcl9yZXBvcnRfc2NoZWR1bGUgd2hlcmUgcmVwX2lkID0gPw0KKw0KK2NyZWF0ZS5jdXN0b20ucmVwb3J0LnJlYyA9IElOU0VSVCBJTlRPIGNyX3JlcG9ydChyZXBfaWQsIHRpdGxlLCBkZXNjciwgcHVibGljX3luLCBtZW51X2lkLCBtZW51X2FwcHJvdmVkX3luLCByZXBvcnRfeG1sLCBvd25lcl9pZCwgY3JlYXRlX2lkLCBjcmVhdGVfZGF0ZSwgbWFpbnRfaWQsIG1haW50X2RhdGUsIGRhc2hib2FyZF90eXBlX3luLCBkYXNoYm9hcmRfeW4sIGZvbGRlcl9pZCkgVkFMVUVTKFtydy5nZXRSZXBvcnRJRCgpXSwgJ1tVdGlscy5vcmFjbGVTYWZlKHJ3LmdldFJlcG9ydE5hbWUoKSldJywgJ1tVdGlscy5vcmFjbGVTYWZlKHJ3LmdldFJlcG9ydERlc2NyKCkpXScsICdbcncuaXNQdWJsaWMoKV0nLCAnW3J3LmdldE1lbnVJRCgpXScsICdbcncuaXNNZW51QXBwcm92ZWQoKV0nLCAnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIiBzdGFuZGFsb25lPVwieWVzXCI/PicsIFtydy5nZXRPd25lcklEKCldLCBbcncuZ2V0Q3JlYXRlSUQoKV0sIFNUUl9UT19EQVRFKCdbcncuZ2V0Q3JlYXRlRGF0ZSgpXScsICdbR2xvYmFscy5nZXRPcmFjbGVUaW1lRm9ybWF0KCldJyksIFtydy5nZXRVcGRhdGVJRCgpXSwgU1RSX1RPX0RBVEUoJ1tydy5nZXRVcGRhdGVEYXRlKCldJywgJ1tHbG9iYWxzLmdldE9yYWNsZVRpbWVGb3JtYXQoKV0nKSwgJ1tydy5pc0Rhc2hib2FyZFR5cGUoKV0nLCAnW3J3LmdldFJlcG9ydFR5cGUoKS5lcXVhbHMoQXBwQ29uc3RhbnRzLlJUX0RBU0hCT0FSRCldJyxbcncuZ2V0Rm9sZGVySWQoKV0pIA0KKw0KK2dldC51c2VyLnJlcG9ydC5uYW1lcyA9IFNFTEVDVCBjci5yZXBfaWQsIGNyLnRpdGxlIEZST00gY3JfcmVwb3J0IGNyIFdIRVJFIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0JCQkJCQkJDQorCQkJCQkJCQkNCitnZXQucmVwb3J0Lm93bmVyLmlkID0gU0VMRUNUIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpIEFTIG93bmVyIEZST00gY3JfcmVwb3J0IGNyIFdIRVJFIHJlcF9pZCA9ID8JCQkJCQkNCisNCitkZWxldGUucmVwb3J0LnJlY29yZC5sb2cgPSBERUxFVEUgRlJPTSBjcl9yZXBvcnRfbG9nIFdIRVJFIHJlcF9pZCA9IFtyZXBvcnRJRF0NCisNCitkZWxldGUucmVwb3J0LnJlY29yZC51c2VycyA9IERFTEVURSBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZV91c2VycyBXSEVSRSByZXBfaWQgPSBbcmVwb3J0SURdDQorDQorZGVsZXRlLnJlcG9ydC5yZWNvcmQuc2NoZWR1bGUgPSBERUxFVEUgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGUgV0hFUkUgcmVwX2lkID0gW3JlcG9ydElEXQ0KKw0KK2RlbGV0ZS5yZXBvcnQucmVjb3JkLmFjY2VzcyA9IERFTEVURSBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgV0hFUkUgcmVwX2lkID0gW3JlcG9ydElEXQ0KKw0KK2RlbGV0ZS5yZXBvcnQucmVjb3JkLmVtYWlsID0gREVMRVRFIEZST00gY3JfcmVwb3J0X2VtYWlsX3NlbnRfbG9nIFdIRVJFIHJlcF9pZCA9IFtyZXBvcnRJRF0NCisNCitkZWxldGUucmVwb3J0LnJlY29yZC5mYXZvcml0ZSA9IERFTEVURSBGUk9NIGNyX2Zhdm9yaXRlX3JlcG9ydHMgV0hFUkUgcmVwX2lkID0gW3JlcG9ydElEXQ0KKw0KK2RlbGV0ZS5yZXBvcnQucmVjb3JkLnJlcG9ydCA9IERFTEVURSBGUk9NIGNyX3JlcG9ydCBXSEVSRSByZXBfaWQgPSBbcmVwb3J0SURdDQorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0KK2xvYWQucXVpY2subGlua3MgPSAgc2VsZWN0IGZpbmFsY3IucmVwX2lkLCBmaW5hbGNyLnRpdGxlLCBmaW5hbGNyLmRlc2NyIGZyb20gKFNFTEVDVCBjci5yZXBfaWQsIGNyLnRpdGxlLCBjci5kZXNjciBGUk9NIChTRUxFQ1QgcmVwX2lkLCBNSU4ocmVhZF9vbmx5X3luKSByZWFkX29ubHlfeW4gRlJPTSAoKFNFTEVDVCB1YS5yZXBfaWQsIHVhLnJlYWRfb25seV95biBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgdWEgV0hFUkUgdWEudXNlcl9pZCA9IFt1c2VySURdKSBVTklPTiBBTEwgKFNFTEVDVCByYS5yZXBfaWQsIHJhLnJlYWRfb25seV95biBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgcmEgV0hFUkUgcmEucm9sZV9pZCBJTiAoW3JvbGVMaXN0LnRvU3RyaW5nKCldKSkpIHJlcG9ydF9hY2Nlc3MgR1JPVVAgQlkgcmVwX2lkKSByYSBMRUZUIEpPSU4gY3JfcmVwb3J0IGNyIE9OIGNyLnJlcF9pZCA9IHJhLnJlcF9pZCBXSEVSRSBjci5tZW51X2lkIExJS0UgJyVbbnZscyhtZW51SWQpXSUnIEFORCBjci5tZW51X2FwcHJvdmVkX3luID0gJ1knIEFORCAoY29hbGVzY2UoY3Iub3duZXJfaWQsIGNyLmNyZWF0ZV9pZCkgPSBbdXNlcklEXSBPUiBjci5wdWJsaWNfeW4gPSAnWScgT1IgcmEucmVhZF9vbmx5X3luIElTIE5PVCBOVUxMKSBVTklPTiBTRUxFQ1QgY3IucmVwX2lkLCBjci50aXRsZSwgY3IuZGVzY3IgRlJPTSBjcl9yZXBvcnQgY3IgV0hFUkUgY3IubWVudV9pZCBMSUtFICclW252bHMobWVudUlkKV0lJyBBTkQgKGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0gT1IgY3IucHVibGljX3luID0gJ1knIG9yIEVYSVNUUyAoc2VsZWN0ICogZnJvbSBmbl91c2VyX3JvbGUgd2hlcmUgdXNlcl9pZD1bdXNlcklEXSBhbmQgcm9sZV9pZCBpbiAoMSkpKSkgZmluYWxjciBPUkRFUiBCWSBmaW5hbGNyLnRpdGxlDQorDQorbG9hZC5mb2xkZXIucmVwb3J0cyA9IFNFTEVDVCBjci5yZXBfaWQsIGNyLnJlcF9pZCByZXBvcnRfaWQsIGNvbmNhdChbcmVwX3RpdGxlX3NxbF0gLCAoQ0FTRSBXSEVOIGNyLnB1YmxpY195biA9ICdZJyBUSEVOICcnIEVMU0UgJ1tQUklWQVRFX0lDT05dJyBFTkQpLGNyLnRpdGxlLCc8L2E+JykgdGl0bGUsIGNyLmRlc2NyLCBjb25jYXQoYXUuZmlyc3RfbmFtZSwnICcsYXUubGFzdF9uYW1lKSBvd25lcl9uYW1lLCBEQVRFX0ZPUk1BVChjci5jcmVhdGVfZGF0ZSwgJyVtLyVkLyVZJykgY3JlYXRlX2RhdGUsIENBU0UgV0hFTiBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSA9IFt1c2VySURdIFRIRU4gJ04nIEVMU0UgY29hbGVzY2UocmEucmVhZF9vbmx5X3luLCAnWScpIEVORCByZWFkX29ubHlfeW4sIENBU0UgV0hFTiBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSA9IFt1c2VySURdIFRIRU4gJ1knIEVMU0UgJ04nIEVORCB1c2VyX2lzX293bmVyX3luIEZST00gY3JfcmVwb3J0IGNyIEpPSU4gYXBwX3VzZXIgYXUgT04gY29hbGVzY2UoY3Iub3duZXJfaWQsIGNyLmNyZWF0ZV9pZCkgPSBhdS51c2VyX2lkIEFORCBjci5mb2xkZXJfaWQ9ICdbZm9sZGVySWRdJyBMRUZUIEpPSU4gKFNFTEVDVCByZXBfaWQsIE1JTihyZWFkX29ubHlfeW4pIHJlYWRfb25seV95biBGUk9NICgoU0VMRUNUIHVhLnJlcF9pZCwgdWEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyB1YSBXSEVSRSB1YS51c2VyX2lkID0gW3VzZXJJRF0pIFVOSU9OIEFMTChTRUxFQ1QgcmEucmVwX2lkLCByYS5yZWFkX29ubHlfeW4gRlJPTSBjcl9yZXBvcnRfYWNjZXNzIHJhIFdIRVJFIHJhLnJvbGVfaWQgSU4gKFtyb2xlTGlzdC50b1N0cmluZygpXSkpKSByZXBvcnRfYWNjZXNzIEdST1VQIEJZIHJlcF9pZCkgcmEgT04gY3IucmVwX2lkID0gcmEucmVwX2lkDQorI0lmIHJvbGVMaXN0LnRvU3RyaW5nKCkgaXMgJycgUG9zdGdyZVNRTCByZXR1cm5zIGFuIGVycm9yIC0gbmVlZHMgdG8gYmUgbnVsbCBpbnN0ZWFkIG9mIGVtcHR5DQorDQorbG9hZC5mb2xkZXIucmVwb3J0cy51c2VyID0gQU5EIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0JDQorDQorbG9hZC5mb2xkZXIucmVwb3J0cy5wdWJsaWNzcWwgPSBBTkQgKGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0gT1IgY3IucHVibGljX3luID0gJ1knIE9SIHJhLnJlYWRfb25seV95biBJUyBOT1QgTlVMTCkNCisNCitsb2FkLnF1aWNrLmRvd25sb2FkLmxpbmtzID0gU0VMRUNUIGEuZmlsZV9uYW1lLCBiLnRpdGxlLERBVEVfRk9STUFUKGEuZHdubGRfc3RhcnRfdGltZSwgJyVXICVkLSVtLSVZICVIOiVpOiVzJykgYXMgdGltZSwgYS5kd25sZF9zdGFydF90aW1lIEZST00gY3JfcmVwb3J0X2R3bmxkX2xvZyBhLCBjcl9yZXBvcnQgYiB3aGVyZSBhLnVzZXJfaWQgPSBbdXNlcklEXSBhbmQgYS5yZXBfaWQgPSBiLnJlcF9pZCBhbmQgKGEuZHdubGRfc3RhcnRfdGltZSkgPj0gU1RSX1RPX0RBVEUoREFURV9GT1JNQVQobm93KCkgLSAgSU5URVJWQUwgMSBEQVksICclbS8lZC8lWScpLCAnJW0vJWQvJVknKSBhbmQgYS5yZWNvcmRfcmVhZHlfdGltZSBpcyBub3QgbnVsbCBvcmRlciBieSBhLmR3bmxkX3N0YXJ0X3RpbWUNCisNCitsb2FkLnJlcG9ydHMudG8uc2NoZWR1bGUgPSBTRUxFQ1QgY3IucmVwX2lkLCBJbml0Y2FwKGNyLnRpdGxlKSwgY3IuZGVzY3IgRlJPTSBjcl9yZXBvcnQgY3IgTEVGVCBPVVRFUiBKT0lOIChTRUxFQ1QgcmVwX2lkLCBNSU4ocmVhZF9vbmx5X3luKSByZWFkX29ubHlfeW4gRlJPTSAoKFNFTEVDVCB1YS5yZXBfaWQsIHVhLnJlYWRfb25seV95biBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgdWEgV0hFUkUgdWEudXNlcl9pZCA9IFt1c2VySURdKSBVTklPTiBBTEwgKFNFTEVDVCByYS5yZXBfaWQsIHJhLnJlYWRfb25seV95biBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgcmEgV0hFUkUgcmEucm9sZV9pZCBJTiAoW3JvbGVMaXN0LnRvU3RyaW5nKCldKSkpIHJlcG9ydF9hY2Nlc3MgR1JPVVAgQlkgcmVwX2lkKSByYSBPTiBjci5yZXBfaWQgPSByYS5yZXBfaWQgQU5EIChjci5wdWJsaWNfeW4gPSAnWScgT1IgcmEucmVhZF9vbmx5X3luIElTIE5PVCBOVUxMIG9yIGNyLm93bmVyX2lkID0gW3VzZXJJRF0gKU9SREVSIEJZIEluaXRjYXAoY3IudGl0bGUpDQorCQkNCitsb2FkLnJlcG9ydHMudG8uYWRkLmluLmRhc2hib2FyZCA9IFNFTEVDVCBjci5yZXBfaWQsIGNyLnRpdGxlLCBjci5kZXNjciBGUk9NIGNyX3JlcG9ydCBjciBMRUZUIE9VVEVSIEpPSU4gKFNFTEVDVCByZXBfaWQsIE1JTihyZWFkX29ubHlfeW4pIHJlYWRfb25seV95biBGUk9NICgoU0VMRUNUIHVhLnJlcF9pZCwgdWEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyB1YSBXSEVSRSB1YS51c2VyX2lkID0gW3VzZXJJRF0pIFVOSU9OIEFMTCAoU0VMRUNUIHJhLnJlcF9pZCwgcmEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyByYSBXSEVSRSByYS5yb2xlX2lkIElOIChbcm9sZUxpc3QudG9TdHJpbmcoKV0pKSkgcmVwb3J0X2FjY2VzcyBHUk9VUCBCWSByZXBfaWQpIHJhIE9OIGNyLnJlcF9pZCA9IHJhLnJlcF9pZCBBTkQgKGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0gT1IgY3IucHVibGljX3luID0gJ1knIE9SIHJhLnJlYWRfb25seV95biBJUyBOT1QgTlVMTCkgQU5EIChjci5kYXNoYm9hcmRfeW4gPSAnTicgb3IgY3IuZGFzaGJvYXJkX3luIGlzIG51bGwpIE9SREVSIEJZIGNyLnRpdGxlDQorDQorbG9hZC5teS5yZWNlbnQubGlua3MgPSBzZWxlY3QgcmVwX2lkLCB0aXRsZSwgZGVzY3IsIGZvcm1fZmllbGRzIGZyb20gKCBzZWxlY3QgcmVwX2lkLCB0aXRsZSwgZGVzY3IsIGZvcm1fZmllbGRzIGZyb20gIChzZWxlY3QgY3IucmVwX2lkLCBjci50aXRsZSwgYS5mb3JtX2ZpZWxkcywgIGNyLmRlc2NyLCBhLmxvZ190aW1lLCBhLnVzZXJfaWQsIGEuYWN0aW9uLCBhLmFjdGlvbl92YWx1ZSBmcm9tIGNyX3JlcG9ydF9sb2cgYSwgY3JfcmVwb3J0IGNyIHdoZXJlIHVzZXJfaWQgPSBbdXNlcklEXSBBTkQgYWN0aW9uID0gJ1JlcG9ydCBFeGVjdXRpb24gVGltZScgYW5kIGEucmVwX2lkID0gY3IucmVwX2lkIG9yZGVyIGJ5IGxvZ190aW1lIGRlc2MpIEFTIHgpIEFTIHkgd2hlcmUgTElNSVQgMSwgNg0KKw0KK2NyZWF0ZS5yZXBvcnQubG9nLmVudHJ5ID0gSU5TRVJUIElOVE8gY3JfcmVwb3J0X2xvZyAocmVwX2lkLCBsb2dfdGltZSwgdXNlcl9pZCwgYWN0aW9uLCBhY3Rpb25fdmFsdWUsIGZvcm1fZmllbGRzKSBWQUxVRVMoW3JlcG9ydElEXSwgbm93KCksIFt1c2VySURdLCAnW2FjdGlvbl0nICwgJ1tleGVjdXRpb25UaW1lXScsICdbZm9ybV9maWVsZHNdJykNCisNCitjcmVhdGUucmVwb3J0LmxvZy5lbnRyeS5leGVjLnRpbWUgPSBJTlNFUlQgSU5UTyBjcl9yZXBvcnRfbG9nIChyZXBfaWQsIGxvZ190aW1lLCB1c2VyX2lkLCBhY3Rpb24sIGFjdGlvbl92YWx1ZSwgZm9ybV9maWVsZHMpIFZBTFVFUyhbcmVwb3J0SURdLCBOT1coKSArIElOVEVSVkFMIDEgU0VDT05ELCBbdXNlcklEXSwgJ1thY3Rpb25dJyAsICdbZXhlY3V0aW9uVGltZV0nLCAnW2Zvcm1GaWVsZHNdJykNCisNCitjbGVhci5yZXBvcnQubG9nLmVudHJpZXMgPSBERUxFVEUgRlJPTSBjcl9yZXBvcnRfbG9nIFdIRVJFIHJlcF9pZCA9ID8gYW5kIHVzZXJfaWQgPSA/DQorDQorbG9hZC5yZXBvcnQubG9nLmVudHJpZXMgPSBTRUxFQ1QgeC5sb2dfdGltZSwgeC51c2VyX2lkLCAoQ0FTRSBXSEVOIHguYWN0aW9uID0gJ1JlcG9ydCBFeGVjdXRpb24gVGltZScgVEhFTiAgY29uY2F0KCc8YSBocmVmPVwiW0FwcFV0aWxzLmdldFJhcHRvckFjdGlvblVSTCgpXXJlcG9ydC5ydW4uY29udGFpbmVyJmNfbWFzdGVyPScseC5yZXBfaWQsJyYnLHguZm9ybV9maWVsZHMsJyZmcm9tUmVwb3J0TG9nPVkmZGlzcGxheV9jb250ZW50PVkmbm9Gb3JtRmllbGRzPVkmcmVmcmVzaD1ZXCI+Jyx4LmFjdGlvbiwnPC9hPicpIEVMU0UgeC5hY3Rpb24gRU5EKSBhY3Rpb24sIChDQVNFIFdIRU4geC5hY3Rpb24gPSAnUmVwb3J0IEV4ZWN1dGlvbiBUaW1lJyBUSEVOICBhY3Rpb25fdmFsdWUgIEVMU0UgJ04vQScgRU5EKSB0aW1lX3Rha2VuLCAoQ0FTRSBXSEVOIHguYWN0aW9uID0gJ1JlcG9ydCBFeGVjdXRpb24gVGltZScgVEhFTiBjb25jYXQoJzxhIGhyZWY9XCJbQXBwVXRpbHMuZ2V0UmFwdG9yQWN0aW9uVVJMKCldcmVwb3J0LnJ1bi5jb250YWluZXImY19tYXN0ZXI9Jyx4LnJlcF9pZCwnJicseC5mb3JtX2ZpZWxkcywnJmZyb21SZXBvcnRMb2c9WSZkaXNwbGF5X2NvbnRlbnQ9WSZub0Zvcm1GaWVsZHM9WSZyZWZyZXNoPVlcIj48aW1nIHNyYz1cIltBcHBVdGlscy5nZXRJbWdGb2xkZXJVUkwoKV10ZXN0X3J1bi5naWYiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGJvcmRlcj0wIGFsdD1cIlJ1biByZXBvcnRcIi8+PC9hPicpIEVMU0UgJ04vQScgRU5EKSBydW5faW1hZ2UsIHgubmFtZSBGUk9NICAoU0VMRUNUIHJsLnJlcF9pZCwgREFURV9GT1JNQVQocmwubG9nX3RpbWUsICclbS8lZC8lWSAlaDolaTolcyAlcCcpIGxvZ190aW1lLCBybC5hY3Rpb25fdmFsdWUsIGNvbmNhdChmdXNlci5sYXN0X25hbWUgLCcsICcsZnVzZXIuZmlyc3RfbmFtZSkgbmFtZSwgcmwudXNlcl9pZCwgcmwuYWN0aW9uLCBybC5mb3JtX2ZpZWxkcyBGUk9NIGNyX3JlcG9ydF9sb2cgcmwsIGZuX3VzZXIgZnVzZXIgV0hFUkUgcmwucmVwX2lkID0gW252bHMocmVwb3J0SWQpXSBhbmQgcmwuYWN0aW9uICE9ICdSZXBvcnQgUnVuJyBhbmQgZnVzZXIudXNlcl9pZCA9IHJsLnVzZXJfaWQgT1JERVIgQlkgcmwubG9nX3RpbWUgREVTQykgeCAgTElNSVQgMTAwDQorDQorZG9lcy51c2VyLmNhbi5zY2hlZHVsZS5yZXBvcnQgPSBzZWxlY3QgY3JzLnNjaGVkX3VzZXJfaWQsIGNvdW50KCopIGZyb20gY3JfcmVwb3J0X3NjaGVkdWxlIGNycyB3aGVyZSBzY2hlZF91c2VyX2lkID0gW3VzZXJJZF0gZ3JvdXAgYnkgY3JzLnNjaGVkX3VzZXJfaWQgaGF2aW5nIGNvdW50KCopID49IFtHbG9iYWxzLmdldFNjaGVkdWxlTGltaXQoKV0NCisNCitkb2VzLnVzZXIuY2FuLnNjaGVkdWxlID0gc2VsZWN0IGNycy5zY2hlZHVsZV9pZCBmcm9tIGNyX3JlcG9ydF9zY2hlZHVsZSBjcnMgd2hlcmUgc2NoZWR1bGVfaWQgPSBbc2NoZWR1bGVJZF0NCisNCitnZXQuc3lzdGVtLmRhdGUudGltZSA9IHNlbGVjdCBEQVRFX0ZPUk1BVChub3coKSwnJW0vJWQvJVkgJUg6JWk6JXMnKQ0KKw0KK2dldC5uZXh0LmRheS5kYXRlLnRpbWUgPSBzZWxlY3QgREFURV9GT1JNQVQoTk9XKCkgKyBJTlRFUlZBTCAxIERBWSwnJW0vJWQvJVkgJUg6JWk6JXMnKQ0KKw0KK2dldC5uZXh0LmZpZnRlZW4ubWludXRlcy5kYXRlLnRpbWUgPSBzZWxlY3QgREFURV9GT1JNQVQoTk9XKCkgKyBJTlRFUlZBTCAxNSBNSU5VVEVTLCclbS8lZC8lWSAlSDolaTolcycpDQorDQorZ2V0Lm5leHQudGhpcnR5Lm1pbnV0ZXMuZGF0ZS50aW1lID0gc2VsZWN0IERBVEVfRk9STUFUKE5PVygpICsgSU5URVJWQUwgMzAgTUlOVVRFUywnJW0vJWQvJVkgJUg6JWk6JXMnKQ0KKw0KK2dldC50ZW1wbGF0ZS5maWxlID0gc2VsZWN0IHRlbXBsYXRlX2ZpbGUgZnJvbSBjcl9yZXBvcnRfdGVtcGxhdGVfbWFwIHdoZXJlIHJlcG9ydF9pZCA9IFtyZXBvcnRJZF0NCisNCitsb2FkLnBkZi5pbWcubG9va3VwID0gc2VsZWN0IGltYWdlX2lkLCBpbWFnZV9sb2MgZnJvbSBjcl9yYXB0b3JfcGRmX2ltZw0KKw0KK2xvYWQuYWN0aW9uLmltZy5sb29rdXAgPSBzZWxlY3QgaW1hZ2VfaWQsIGltYWdlX2xvYyBmcm9tIGNyX3JhcHRvcl9hY3Rpb25faW1nDQorDQorDQorI0FjdGlvbkhhbmRsZXIuamF2YQ0KKw0KK3JlcG9ydC52YWx1ZXMubWFwLmRlZi5hID0gU0VMRUNUIHggRlJPTSAoU0VMRUNUIERJU1RJTkNUIA0KKw0KK3JlcG9ydC52YWx1ZXMubWFwLmRlZi5iID0gVE9fQ0hBUihbY29sTmFtZV0sICdbbnZsKGRpc3BsYXlGb3JtYXQsIEFwcENvbnN0YW50cy5ERUZBVUxUX0RBVEVfRk9STUFUKV0nKQ0KKw0KK3JlcG9ydC52YWx1ZXMubWFwLmRlZi5jID0gW2NvbE5hbWVdIA0KKw0KK3JlcG9ydC52YWx1ZXMubWFwLmRlZi5kID0gIHggRlJPTSBbcmRlZi5nZXRUYWJsZUJ5SWQodGFibGVJZCkuZ2V0VGFibGVOYW1lKCldIFdIRVJFIFtjb2xOYW1lXSBJUyBOT1QgTlVMTCBPUkRFUiBCWSAxKSB4eCBMSU1JVCA8PSBbR2xvYmFscy5nZXREZWZhdWx0UGFnZVNpemUoKV0NCisNCit0ZXN0LnNjaGVkLmNvbmQucG9wdXAgPSBTRUxFQ1QgMSBXSEVSRSBFWElTVFMgKFtzcWxdKQ0KKw0KK2Rvd25sb2FkLmFsbC5lbWFpbC5zZW50ID0gU2VsZWN0IHVzZXJfaWQsIHJlcF9pZCBmcm9tIENSX1JFUE9SVF9FTUFJTF9TRU5UX0xPRyB3aGVyZSBnZW5fa2V5PSdbcGRmQXR0YWNobWVudEtleS50cmltKCldJyBhbmQgbG9nX2lkID1bcmVwb3J0X2VtYWlsX3NlbnRfbG9nX2lkLnRyaW0oKV0gYW5kIChub3coKSAtIHNlbnRfZGF0ZSkgPCAnMSBkYXknIGxpbWl0IDENCisNCitkb3dubG9hZC5hbGwuZ2VuLmtleSA9IHNlbGVjdCBzY2hlZHVsZV9pZCBmcm9tIGNyX3JlcG9ydF9lbWFpbF9zZW50X2xvZyB1IHdoZXJlIFUuR0VOX0tFWSA9ICdbcGRmQXR0YWNobWVudEtleV0nDQorDQorZG93bmxvYWQuYWxsLnJldHJpZXZlID0gU0VMRUNUIGF1LnVzZXJfaWQgRlJPTSAoU0VMRUNUIHJzLnNjaGVkdWxlX2lkLCBycy5yZXBfaWQgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGUgcnMgV0hFUkUgcnMuZW5hYmxlZF95bj0nWScgQU5EIHJzLnJ1bl9kYXRlIElTIE5PVCBOVUxMICBBTkQgcnMuc2NoZWR1bGVfaWQgPSBbc2NoZWR1bGVJZF0pIHgsIGNyX3JlcG9ydCByLCBhcHBfdXNlciBhdSBXSEVSRSB4LnJlcF9pZCA9IHIucmVwX2lkICBBTkQgYXUudXNlcl9pZCBJTiAoU0VMRUNUIHJzdS51c2VyX2lkIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlX3VzZXJzIHJzdSBXSEVSRSByc3Uuc2NoZWR1bGVfaWQgPSB4LnNjaGVkdWxlX2lkIGFuZCByc3Uuc2NoZWR1bGVfaWQgPSBbc2NoZWR1bGVJZF0gIFVOSU9OIFNFTEVDVCB1ci51c2VyX2lkIEZST00gZm5fdXNlcl9yb2xlIHVyIFdIRVJFIHVyLnJvbGVfaWQgSU4gKFNFTEVDVCByc3UyLnJvbGVfaWQgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGVfdXNlcnMgcnN1MiBXSEVSRSByc3UyLnNjaGVkdWxlX2lkID0geC5zY2hlZHVsZV9pZCBhbmQgIHJzdTIuc2NoZWR1bGVfaWQgPSBbc2NoZWR1bGVJZF0pKQ0KKw0KK2Rvd25sb2FkLmFsbC5pbnNlcnQgPSBpbnNlcnQgaW50byBjcl9yZXBvcnRfZHdubGRfbG9nICh1c2VyX2lkLHJlcF9pZCxmaWxlX25hbWUsZHdubGRfc3RhcnRfdGltZSxmaWx0ZXJfcGFyYW1zKSB2YWx1ZXMgKD8sPyw/LD8sPykNCisNCisjUmVwb3J0V3JhcHBlci5qYXZhDQorDQorcmVwb3J0LndyYXBwZXIuZm9ybWF0ID0gU0VMRUNUIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpIG93bmVyX2lkLCBjci5jcmVhdGVfaWQsIERBVEVfRk9STUFUKGNyLmNyZWF0ZV9kYXRlLCAnW0dsb2JhbHMuZ2V0T3JhY2xlVGltZUZvcm1hdCgpXScpIGNyZWF0ZV9kYXRlLCBtYWludF9pZCwgREFURV9GT1JNQVQoY3IubWFpbnRfZGF0ZSwgJ1tHbG9iYWxzLmdldE9yYWNsZVRpbWVGb3JtYXQoKV0nKSB1cGRhdGVfZGF0ZSwgY3IubWVudV9pZCwgY3IubWVudV9hcHByb3ZlZF95biBGUk9NIGNyX3JlcG9ydCBjciBXSEVSRSBjci5yZXBfaWQ9IFtyZXBvcnRJRF0NCisNCitnZW5lcmF0ZS5zdWJzZXQuc3FsID0gU0VMRUNUIFtjb2xOYW1lcy50b1N0cmluZygpXSBGUk9NIChTRUxFQ1QgIFtjb2xOYW1lcy50b1N0cmluZygpXSBGUk9NIChbcmVwb3J0U1FMXSkgQVMgeCApIEFTIHkgDQorDQorcmVwb3J0LnNxbC5vbmx5LmZpcnN0LnBhcnQgPSBTRUxFQ1QgW2NvbE5hbWVzLnRvU3RyaW5nKCldIEZST00gKFNFTEVDVCBbY29sTmFtZXMudG9TdHJpbmcoKV0gRlJPTSAoDQorDQorcmVwb3J0LnNxbC5vbmx5LnNlY29uZC5wYXJ0LmEgPSBbc3RhcnRSb3ddIA0KKw0KK3JlcG9ydC5zcWwub25seS5zZWNvbmQucGFydC5iID0gW3BhZ2VTaXplXQ0KKyNNWVNRTDogTElNSVQgW3N0YXJ0Um93XSwgW3BhZ2VTaXplXQ0KKyNPUmFjbGU6IHJvd251bSA+PSBbc3RhcnRSb3ddIGFuZCByb3dudW0gPD0gKFtzdGFydFJvd10rW3BhZ2VTaXplXSkNCisjUG9zdGdyZTogbGltaXQgW3BhZ2VTaXplXSBvZmZzZXQgW3N0YXJ0Um93XSANCisNCityZXBvcnQuc3FsLm9ubHkuc2Vjb25kLnBhcnQuYi5ub29yZGVyYnkgPSAgTElNSVQgW3N0YXJ0Um93XQ0KKw0KK2dlbmVyYXRlLnNxbC52aXN1YWwuc2VsZWN0ID0gU0VMRUNUDQorDQorZ2VuZXJhdGUuc3FsLnZpc3VhbC5jb3VudCA9IENPVU5UKCopIGNudA0KKw0KK2dlbmVyYXRlLnNxbC52aXN1YWwuZHVhbCA9IA0KKyNObyBEVUFMIHRhYmxlIGluIFBvc3RncmVTUUwgc28gdGhpcyBpcyBibGFuaw0KKw0KKyNSZXBvcnRSdW50aW1lLmphdmENCisNCitsb2FkLmNyb3NzdGFiLnJlcG9ydC5kYXRhID0gU0VMRUNUICBbY29sTmFtZXMudG9TdHJpbmcoKV0gRlJPTSAoIFtyZXBvcnRTUUxdIA0KKw0KKyNSYXB0b3JSdW5IYW5kbGVyLmphdmENCisNCitnZW5lcmF0ZS5zcWwuaGFuZGxlciA9IFNFTEVDVCAgeC4qIGZyb20gKFtzcWxdKSBBUyB4IExJTUlUIDINCisNCitnZW5lcmF0ZS5zcWwuc2VsZWN0ID0gU0VMRUNUIFtjb2xOYW1lcy50b1N0cmluZygpXSBGUk9NIChTRUxFQ1QgIFtjb2xOYW1lcy50b1N0cmluZygpXSBGUk9NIChbc3FsXSkgQVMgeSkgQVMgeCANCisJCQkNCisjUmVwb3J0U2NoZWR1bGUuamF2YQ0KKw0KK2xvYWQuc2NoZWR1bGUuZGF0YSA9IFNFTEVDVCBycy5lbmFibGVkX3luLCBEQVRFX0ZPUk1BVChycy5zdGFydF9kYXRlLCAnJW0vJWQvJVknKSBzdGFydF9kYXRlLCBEQVRFX0ZPUk1BVChycy5lbmRfZGF0ZSwgJyVtLyVkLyVZJykgZW5kX2RhdGUsIERBVEVfRk9STUFUKHJzLnJ1bl9kYXRlLCAnJW0vJWQvJVknKSBydW5fZGF0ZSwgY29hbGVzY2UoREFURV9GT1JNQVQocnMucnVuX2RhdGUsICclaCcpLCAnMTInKSBydW5faG91ciwgY29hbGVzY2UoREFURV9GT1JNQVQocnMucnVuX2RhdGUsICclaScpLCAnMDAnKSBydW5fbWluLCBjb2FsZXNjZShEQVRFX0ZPUk1BVChycy5ydW5fZGF0ZSwgJyVwJyksICdBTScpIHJ1bl9hbXBtLCBycy5yZWN1cnJlbmNlLCBycy5jb25kaXRpb25hbF95biwgcnMubm90aWZ5X3R5cGUsIHJzLm1heF9yb3csIHJzLmluaXRpYWxfZm9ybWZpZWxkcywgcnMuc2NoZWR1bGVfaWQsIGNvYWxlc2NlKERBVEVfRk9STUFUKHJzLmVuZF9kYXRlLCAnJWgnKSwgJzExJykgZW5kX2hvdXIsIGNvYWxlc2NlKERBVEVfRk9STUFUKHJzLmVuZF9kYXRlLCAnJWknKSwgJzQ1JykgZW5kX21pbiwgY29hbGVzY2UoREFURV9GT1JNQVQocnMuZW5kX2RhdGUsICclcCcpLCAnUE0nKSBlbmRfYW1wbSwgZW5jcnlwdF95biwgYXR0YWNobWVudF95biBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZSBycyBXSEVSRSBycy5yZXBfaWQgPSBbcmVwb3J0SURdDQorDQorbG9hZC5zY2hlZHVsZS5nZXRpZCA9IFNFTEVDVCByc3UudXNlcl9pZCwgY29uY2F0KGZ1c2VyLmxhc3RfbmFtZSwnLCAnLGZ1c2VyLmZpcnN0X25hbWUpLCBmdXNlci5sb2dpbl9pZCBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZV91c2VycyByc3UsIGZuX3VzZXIgZnVzZXIgV0hFUkUgcnN1LnJlcF9pZCA9IFtyZXBvcnRJRF0gIEFORCByc3Uuc2NoZWR1bGVfaWQgPSBbZ2V0U2NoZWR1bGVJRCgpXSBhbmQgcnN1LnVzZXJfaWQgSVMgTk9UIE5VTEwgYW5kIHJzdS51c2VyX2lkID0gZnVzZXIudXNlcl9pZA0KKw0KK2xvYWQuc2NoZWR1bGUudXNlcnMgPSBTRUxFQ1QgcnN1LnJvbGVfaWQgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGVfdXNlcnMgcnN1IFdIRVJFIHJzdS5yZXBfaWQgPSBbcmVwb3J0SURdIEFORCByc3Uuc2NoZWR1bGVfaWQgPSBbZ2V0U2NoZWR1bGVJRCgpXSBBTkQgcnN1LnJvbGVfaWQgSVMgTk9UIE5VTEwNCisNCituZXcuc2NoZWR1bGUuZGF0YSA9IHNlbGVjdCBjb2FsZXNjZShtYXgoc2NoZWR1bGVfaWQpLDApKzEgIEFTIHNlcXVlbmNlIGZyb20gY3JfcmVwb3J0X3NjaGVkdWxlDQorDQorbmV3LnJlcG9ydC5kYXRhID0gc2VsZWN0IGNvYWxlc2NlKG1heChyZXBfaWQpLDApKzEgIEFTIHJlcF9pZCBmcm9tIGNyX3JlcG9ydA0KKw0KK2V4ZWN1dGUudXBkYXRlID0gREVMRVRFIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlX3VzZXJzIFdIRVJFIHJlcF9pZCA9IFtyZXBvcnRJRF0gYW5kIHNjaGVkdWxlX2lkID0gW2dldFNjaGVkdWxlSUQoKV0NCisNCitleGVjdXRlLnVwZGF0ZS51c2VycyA9IElOU0VSVCBJTlRPIGNyX3JlcG9ydF9zY2hlZHVsZV91c2VycyAoc2NoZWR1bGVfaWQsIHJlcF9pZCwgdXNlcl9pZCwgcm9sZV9pZCwgb3JkZXJfbm8pIFZBTFVFUyhbZ2V0U2NoZWR1bGVJRCgpXSwgW3JlcG9ydElEXSwgW2VtYWlsVG9Vc2Vycy5nZXQoaSkpLmdldElkKCldLCBOVUxMLCBbKGkgKyAxKV0pDQorDQorZXhlY3V0ZS51cGRhdGUucm9sZXMgPSBJTlNFUlQgSU5UTyBjcl9yZXBvcnRfc2NoZWR1bGVfdXNlcnMgKHNjaGVkdWxlX2lkLCByZXBfaWQsIHVzZXJfaWQsIHJvbGVfaWQsIG9yZGVyX25vKSBWQUxVRVMoW2dldFNjaGVkdWxlSUQoKV0sIFtyZXBvcnRJRF0sIE5VTEwsIFtlbWFpbFRvUm9sZXMuZ2V0KGkpKS5nZXRJZCgpXSwgWygoZW1haWxUb1VzZXJzLnNpemUoKSArIGkgKyAxKV0pDQorDQorZXhlY3V0ZS51cGRhdGUuYWN0aXZpdHkgPSBJTlNFUlQgaW50byBjcl9zY2hlZHVsZV9hY3Rpdml0eV9sb2cgKHNjaGVkdWxlX2lkLCBub3RlcywgcnVuX3RpbWUpIHZhbHVlcyAoW2dldFNjaGVkdWxlSUQoKV0sJ1N1Ym1pdHRlZDpTY2hlZHVsZScsVE9fREFURSgnW2dldFJ1bkRhdGUoKV0gW2dldFJ1bkhvdXIoKV06W2dldFJ1bk1pbigpXSBbZ2V0UnVuQU1QTSgpXScsICdNTS9ERC9ZWVlZIEhIOk1JIEFNJykpDQorIA0KK2RlbGV0ZS5zY2hlZHVsZS5kYXRhID0gU0VMRUNUIDEgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGUgV0hFUkUgcmVwX2lkID0gW3JlcG9ydElEXSBhbmQgc2NoZWRfdXNlcl9pZCA9IFtnZXRTY2hlZHVsZVVzZXJJRCgpXSBhbmQgc2NoZWR1bGVfaWQgPSBbZ2V0U2NoZWR1bGVJRCgpXQ0KKyANCitkZWxldGUuc2NoZWR1bGUuZGF0YS51c2VycyA9IERFTEVURSBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZV91c2VycyBXSEVSRSByZXBfaWQgPSBbcmVwb3J0SURdICBhbmQgc2NoZWR1bGVfaWQgPSBbZ2V0U2NoZWR1bGVJRCgpXQ0KKyANCitkZWxldGUuc2NoZWR1bGUuZGF0YS5pZCA9IERFTEVURSBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZSB3aGVyZSByZXBfaWQgPSBbcmVwb3J0SURdIGFuZCBzY2hlZF91c2VyX2lkID0gW2dldFNjaGVkdWxlVXNlcklEKCldIGFuZCBzY2hlZHVsZV9pZCA9IFtnZXRTY2hlZHVsZUlEKCldDQorDQorbG9hZC5jb25kLnNxbCA9IFNFTEVDVCBjb25kaXRpb25fbGFyZ2Vfc3FsIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlIFdIRVJFIHNjaGVkdWxlX2lkPT8NCisNCitsb2FkLmNvbmQuc3FsLnNlbGVjdCA9IFNFTEVDVCBjb25kaXRpb25fc3FsIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlIFdIRVJFIHNjaGVkdWxlX2lkID0gW3NjaGVkdWxlSWRdDQorDQorcGVyc2lzdC5jb25kLnNxbC51cGRhdGUgPSB1cGRhdGUgY3JfcmVwb3J0X3NjaGVkdWxlIHNldCBjb25kaXRpb25fbGFyZ2Vfc3FsID0gJycgd2hlcmUgIHNjaGVkdWxlX2lkID0gW3NjaGVkdWxlSWRdDQorI0VNUFRZIENMT0IoKSBjaGFuZ2VkIHRvICcnDQorDQorcGVyc2lzdC5jb25kLnNxbC5sYXJnZSA9IFNFTEVDVCBjb25kaXRpb25fbGFyZ2Vfc3FsIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlIGNyIFdIRVJFIHNjaGVkdWxlX2lkPT8gRk9SIFVQREFURQ0KKw0KK3BlcnNpc3QuY29uZC5zcWwuc2V0ID0gdXBkYXRlIGNyX3JlcG9ydF9zY2hlZHVsZSBzZXQgY29uZGl0aW9uX3NxbCA9ID8gd2hlcmUgc2NoZWR1bGVfaWQgPSBbc2NoZWR1bGVJZF0NCisNCisjRGF0YUNhY2hlLmphdmENCisNCitnZXQuZGF0YS52aWV3LmFjdGlvbnMgPSBTRUxFQ1QgdHMud2ViX3ZpZXdfYWN0aW9uIEZST00gY3JfdGFibGVfc291cmNlIHRzIFdIRVJFIHRzLndlYl92aWV3X2FjdGlvbiBJUyBOT1QgTlVMTA0KKw0KK2dldC5wdWJsaWMucmVwb3J0LmlkLm5hbWVzID0gU0VMRUNUIHJlcF9pZCwgdGl0bGUgRlJPTSBjcl9yZXBvcnQgV0hFUkUgcHVibGljX3luID0gJ1knIE9SREVSIEJZIHRpdGxlDQorDQorZ2V0LnByaXZhdGUuYWNjZXNzaWJsZS5uYW1lcy5hID0gU0VMRUNUIGNyLnJlcF9pZCwgY3IudGl0bGUgRlJPTSBjcl9yZXBvcnQgY3IgV0hFUkUgY3IucmVwX2lkIG5vdCBpbiAoc2VsZWN0IHJlcF9pZCBmcm9tIGNyX3JlcG9ydF9hY2Nlc3MgY3JhIHdoZXJlIHVzZXJfaWQgPSAgJ1t1c2VyX2lkXScgDQorDQorZ2V0LnByaXZhdGUuYWNjZXNzaWJsZS5uYW1lcy5pZiA9ICBPUiByb2xlX2lkIGluICgNCisNCitnZXQucHJpdmF0ZS5hY2Nlc3NpYmxlLm5hbWVzLmIgPSAgKSBBTkQgcHVibGljX3luID0gJ04nIGFuZCBjci5vd25lcl9pZCA9ICdbdXNlcl9pZF0nIG9yZGVyIGJ5IDIgDQorDQorZ2V0Lmdyb3VwLmFjY2Vzc2libGUubmFtZXMuYSA9IFNFTEVDVCBjci5yZXBfaWQsIGNyLnRpdGxlIEZST00gY3JfcmVwb3J0IGNyICBXSEVSRSBjci5yZXBfaWQgIGluIChzZWxlY3QgcmVwX2lkIGZyb20gY3JfcmVwb3J0X2FjY2VzcyBjcmEgd2hlcmUgdXNlcl9pZCA9ICAnW3VzZXJfaWRdJw0KKw0KK2dldC5ncm91cC5hY2Nlc3NpYmxlLm5hbWVzLmIgPSAgKSAgQU5EIHB1YmxpY195biA9ICdOJyBvcmRlciBieSAyIA0KKw0KK2dldC5yZXBvcnQudGFibGUuc291cmNlcy5hID0gU0VMRUNUIHRhYmxlX25hbWUsIGRpc3BsYXlfbmFtZSwgcGtfZmllbGRzLCB3ZWJfdmlld19hY3Rpb24sIGxhcmdlX2RhdGFfc291cmNlX3luLCBmaWx0ZXJfc3FsIEZST00gY3JfdGFibGVfc291cmNlIA0KKw0KK2dldC5yZXBvcnQudGFibGUuc291cmNlcy53aGVyZSA9ICB3aGVyZSBTT1VSQ0VfREI9ICdbZEJJbmZvXScNCisNCitnZXQucmVwb3J0LnRhYmxlLnNvdXJjZXMuaWYgPSAgd2hlcmUgU09VUkNFX0RCIGlzIG51bGwgb3IgU09VUkNFX0RCID0gJ1tBcHBDb25zdGFudHMuREJfTE9DQUxdJw0KKw0KK2dldC5yZXBvcnQudGFibGUuc291cmNlcy5lbHNlID0gIE9SREVSIEJZIHRhYmxlX25hbWUNCisNCitncmFiLnJlcG9ydC50YWJsZS5hID0gU0VMRUNUIHRzLnRhYmxlX25hbWUsIHRzLmRpc3BsYXlfbmFtZSwgdHMucGtfZmllbGRzLCB0cy53ZWJfdmlld19hY3Rpb24sIHRzLmxhcmdlX2RhdGFfc291cmNlX3luLCB0cy5maWx0ZXJfc3FsIEZST00gY3JfdGFibGVfc291cmNlIHRzICBXSEVSRSANCisNCitncmFiLnJlcG9ydC50YWJsZS5pZiA9IHRzLlNPVVJDRV9EQj0gJ1tkQkluZm9dJw0KKw0KK2dyYWIucmVwb3J0LnRhYmxlLmVsc2UgPSAodHMuU09VUkNFX0RCIGlzIG51bGwgb3IgdHMuU09VUkNFX0RCID0gJ1tBcHBDb25zdGFudHMuREJfTE9DQUxdJykNCisNCitncmFiLnJlcG9ydC50YWJsZS5iID0gIGV4Y2VwdCBTRUxFQ1QgdHMudGFibGVfbmFtZSwgdHMuZGlzcGxheV9uYW1lLCB0cy5wa19maWVsZHMsICB0cy53ZWJfdmlld19hY3Rpb24sICB0cy5sYXJnZV9kYXRhX3NvdXJjZV95biwgdHMuZmlsdGVyX3NxbCBmcm9tIGNyX3RhYmxlX3NvdXJjZSB0cyB3aGVyZSB0YWJsZV9uYW1lIGluIChzZWxlY3QgdGFibGVfbmFtZSBmcm9tICBjcl90YWJsZV9yb2xlIHdoZXJlIHJvbGVfaWQgbm90IElOIFtzYi50b1N0cmluZygpXSkgYW5kIA0KKw0KK2dyYWIucmVwb3J0LnRhYmxlLmMgPSAgT1JERVIgQlkgMSANCisNCitnZXQucmVwb3J0LnRhYmxlLmNyam9pbiA9IFNFTEVDVCBzcmNfdGFibGVfbmFtZSwgZGVzdF90YWJsZV9uYW1lLCBqb2luX2V4cHIgRlJPTSBjcl90YWJsZV9qb2luDQorDQorZ2V0LnJlcG9ydC50YWJsZS5qb2lucyA9IFNFTEVDVCB0ai5zcmNfdGFibGVfbmFtZSwgdGouZGVzdF90YWJsZV9uYW1lLCB0ai5qb2luX2V4cHIgRlJPTSBjcl90YWJsZV9qb2luIHRqIFdIRVJFICgoRVhJU1RTIChTRUxFQ1QgMSBGUk9NIGNyX3RhYmxlX3JvbGUgdHJzIFdIRVJFIHRycy50YWJsZV9uYW1lPXRqLnNyY190YWJsZV9uYW1lIEFORCB0cnMucm9sZV9pZCBJTiBbc2IudG9TdHJpbmcoKV0pKSBPUiAoTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBjcl90YWJsZV9yb2xlIHRycyBXSEVSRSB0cnMudGFibGVfbmFtZT10ai5zcmNfdGFibGVfbmFtZSkpKSBBTkQgKChFWElTVFMgKFNFTEVDVCAxIEZST00gY3JfdGFibGVfcm9sZSB0cmQgV0hFUkUgdHJkLnRhYmxlX25hbWU9dGouZGVzdF90YWJsZV9uYW1lIEFORCB0cmQucm9sZV9pZCBJTiBbc2IudG9TdHJpbmcoKV0pKSBPUiAoTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBjcl90YWJsZV9yb2xlIHRyZCBXSEVSRSB0cmQudGFibGVfbmFtZT10ai5kZXN0X3RhYmxlX25hbWUpKSkNCisNCitnZW5lcmF0ZS5yZXBvcnQudGFibGUuY29sID0gU0VMRUNUIGEudGFibGVfbmFtZSwgYS5jb2x1bW5fbmFtZSwgYS5kYXRhX3R5cGUsIGEubGFiZWwgRlJPTSB1c2VyX2NvbHVtbl9kZWYgYSBXSEVSRSBhLnRhYmxlX25hbWUgPSAnW3RhYmxlTmFtZS50b1VwcGVyQ2FzZSgpXScgT1JERVIgQlkgYS5jb2x1bW5faWQNCisNCitnZW5lcmF0ZS5kYi51c2VyLnNxbC5hID0gU0VMRUNUIHV0Yy50YWJsZV9uYW1lLCB1dGMuY29sdW1uX25hbWUsIHV0Yy5kYXRhX3R5cGUsIA0KKw0KK2dlbmVyYXRlLmRiLnVzZXIuc3FsLmlmID0gdXRjLmNvbHVtbl9uYW1lIEZST00gdXNlcl90YWJfY29sdW1ucyB1dGMgDQorDQorZ2VuZXJhdGUuZGIudXNlci5zcWwuZWxzZSA9IGNvYWxlc2NlKHgubGFiZWwsIHV0Yy5jb2x1bW5fbmFtZSkgRlJPTSB1c2VyX3RhYl9jb2x1bW5zIHV0YyANCisNCitnZW5lcmF0ZS5kYi51c2VyLnNxbC5iID0gV0hFUkUgdXRjLnRhYmxlX25hbWUgPSAnW3RhYmxlTmFtZS50b1VwcGVyQ2FzZSgpXScgDQorDQorZ2VuZXJhdGUuZGIudXNlci5zcWwuYyA9IEFORCB1dGMudGFibGVfbmFtZSA9IHgudGFibGVfbmFtZSBBTkQgdXRjLmNvbHVtbl9uYW1lID0geC5jb2x1bW5fbmFtZSANCisNCitnZW5lcmF0ZS5kYi51c2VyLnNxbC5kID0gT1JERVIgQlkgdXRjLmNvbHVtbl9pZCANCisNCisjU2VhcmNoSGFuZGxlci5qYXZhDQorDQorbG9hZC5yZXBvcnQuc2VhcmNoLnJlc3VsdCA9IFNFTEVDVCBjci5yZXBfaWQsIGNyLnJlcF9pZCByZXBvcnRfaWQsIFtyZXBfdGl0bGVfc3FsXSB0aXRsZSwgY3IuZGVzY3IsIGNvbmNhdChhdS5maXJzdF9uYW1lLCcgJyxhdS5sYXN0X25hbWUpIG93bmVyX25hbWUsIERBVEVfRk9STUFUKGNyLmNyZWF0ZV9kYXRlLCAnJW0vJWQvJVknKSBjcmVhdGVfZGF0ZSwgQ0FTRSBXSEVOIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0gVEhFTiAnTicgRUxTRSBjb2FsZXNjZShyYS5yZWFkX29ubHlfeW4sICdZJykgRU5EIHJlYWRfb25seV95biwgQ0FTRSBXSEVOIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpID0gW3VzZXJJRF0gVEhFTiAnWScgRUxTRSAnTicgRU5EIHVzZXJfaXNfb3duZXJfeW4sIGNhc2Ugd2hlbiByZXBvcnRfeG1sIGxpa2UgJyU8YWxsb3dTY2hlZHVsZT5OPC9hbGxvd1NjaGVkdWxlPiUnIHRoZW4gJ04nIHdoZW4gcmVwb3J0X3htbCBsaWtlICclPGFsbG93U2NoZWR1bGU+WTwvYWxsb3dTY2hlZHVsZT4lJyBvciAxID0gKHNlbGVjdCBkaXN0aW5jdCAxIGZyb20gY3JfcmVwb3J0X3NjaGVkdWxlIHdoZXJlIHJlcF9pZCA9IGNyLnJlcF9pZCkgdGhlbiAnWScgZWxzZSAnTicgZW5kIEZST00gY3JfcmVwb3J0IGNyIEpPSU4gZm5fdXNlciBhdSBPTiBjb2FsZXNjZSAoY3Iub3duZXJfaWQsIGNyLmNyZWF0ZV9pZCkgPSBhdS51c2VyX2lkIFtmUmVwb3J0SURdIFtmUmVwb3J0TmFtZV0gTEVGVCBKT0lOKFNFTEVDVCByZXBfaWQsIE1JTihyZWFkX29ubHlfeW4pIHJlYWRfb25seV95biBGUk9NICgoU0VMRUNUIHVhLnJlcF9pZCwgdWEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyB1YSBXSEVSRSB1YS51c2VyX2lkID0gW3VzZXJJRF0pIFVOSU9OIEFMTCAoU0VMRUNUIHJhLnJlcF9pZCwgcmEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyByYSBXSEVSRSByYS5yb2xlX2lkIElOIChbcm9sZUxpc3QudG9TdHJpbmcoKV0pKSkgcmVwb3J0X2FjY2VzcyBHUk9VUCBCWSByZXBfaWQpIHJhIE9OIHJhLnJlcF9pZCA9IGNyLnJlcF9pZA0KKw0KK2xvYWQucmVwb3J0LnNlYXJjaC5pbnN0ciA9IFdIRVJFIGNyLm1lbnVfaWQgTElLRSAnJVttZW51SWRdJScNCisNCitsb2FkLnJlcG9ydC5zZWFyY2gucmVzdWx0LnVzZXIgPSBXSEVSRSBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSA9IFt1c2VySURdDQorDQorbG9hZC5yZXBvcnQuc2VhcmNoLnJlc3VsdC5wdWJsaWMgPSBXSEVSRSAoY29hbGVzY2UoY3Iub3duZXJfaWQsIGNyLmNyZWF0ZV9pZCkgPSBbdXNlcklEXSBPUiBjci5wdWJsaWNfeW4gPSAnWScgT1IgcmEucmVhZF9vbmx5X3luIElTIE5PVCBOVUxMKQ0KKw0KK2xvYWQucmVwb3J0LnNlYXJjaC5yZXN1bHQuZmF2ID0gIFdIRVJFIGNyLnJlcF9pZCBpbiAoc2VsZWN0IHJlcF9pZCBmcm9tIGNyX2Zhdm9yaXRlX3JlcG9ydHMgd2hlcmUgdXNlcl9pZCA9IFt1c2VySURdDQorDQorbG9hZC5yZXBvcnQuc2VhcmNoLnJlc3VsdC5zb3J0ID0gT1JERVIgQlkgQ0FTRSBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSBXSEVOIFt1c2VySURdIFRIRU4gJyAnIFdIRU4gJ3VwcGVyKGNvbmNhdChhdS5maXJzdF9uYW1lLCcgJyxhdS5sYXN0X25hbWUpKScgRUxTRSAndXBwZXIoY3IudGl0bGUpJyBFTkQNCisNCitsb2FkLmZvbGRlci5yZXBvcnQucmVzdWx0ID0gU0VMRUNUIGNyLnJlcF9pZCwgY3IucmVwX2lkIHJlcG9ydF9pZCwgY29uY2F0KFtyZXBfdGl0bGVfc3FsXSAsIChDQVNFIFdIRU4gY3IucHVibGljX3luID0gJ1knIFRIRU4gJycgRUxTRSAnW1BSSVZBVEVfSUNPTl0nIEVORCksY3IudGl0bGUsJzwvYT4nKSB0aXRsZSwgY3IuZGVzY3IsIGNvbmNhdChhdS5maXJzdF9uYW1lLCcgJyxhdS5sYXN0X25hbWUpIG93bmVyX25hbWUsIFRPX0NIQVIoY3IuY3JlYXRlX2RhdGUsICdNTS9ERC9ZWVlZJykgY3JlYXRlX2RhdGUsIENBU0UgV0hFTiBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSA9IFt1c2VySURdIFRIRU4gJ04nIEVMU0UgY29hbGVzY2UocmEucmVhZF9vbmx5X3luLCAnWScpIEVORCByZWFkX29ubHlfeW4sIENBU0UgV0hFTiBjb2FsZXNjZShjci5vd25lcl9pZCwgY3IuY3JlYXRlX2lkKSA9IFt1c2VySURdIFRIRU4gJ1knIEVMU0UgJ04nIEVORCB1c2VyX2lzX293bmVyX3luIEZST00gY3JfcmVwb3J0IGNyIEpPSU4gZm5fdXNlciBhdSBPTiBjb2FsZXNjZSAoY3Iub3duZXJfaWQsIGNyLmNyZWF0ZV9pZCkgPSBhdS51c2VyX2lkIEFORCBUT19DSEFSKGNyLnJlcF9pZCwgJ0ZNOTk5OTk5OTknKSBsaWtlIGNvYWxlc2NlKCclW2ZSZXBvcnRJRF0lJywgVE9fQ0hBUihjci5yZXBfaWQsICdGTTk5OTk5OTk5JykpIEFORCBVUFBFUihjci50aXRsZSkgTElLRSBVUFBFUignJVtmUmVwb3J0TmFtZV0lJykgTEVGVCBKT0lOKFNFTEVDVCByZXBfaWQsIE1JTihyZWFkX29ubHlfeW4pIHJlYWRfb25seV95biBGUk9NICgoU0VMRUNUIHVhLnJlcF9pZCwgdWEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyB1YSBXSEVSRSB1YS51c2VyX2lkID0gW3VzZXJJRF0pIFVOSU9OIEFMTCAoU0VMRUNUIHJhLnJlcF9pZCwgcmEucmVhZF9vbmx5X3luIEZST00gY3JfcmVwb3J0X2FjY2VzcyByYSBXSEVSRSByYS5yb2xlX2lkIElOIChbcm9sZUxpc3QudG9TdHJpbmcoKV0pKSkgcmVwb3J0X2FjY2VzcyBHUk9VUCBCWSByZXBfaWQpIHJhIE9OIHJhLnJlcF9pZCA9IGNyLnJlcF9pZA0KKw0KK2xvYWQuZm9sZGVyLnJlcG9ydC5yZXN1bHQuc29ydCA9ICBPUkRFUiBCWSBDQVNFIGNvYWxlc2NlKGNyLm93bmVyX2lkLCBjci5jcmVhdGVfaWQpIFdIRU4gW3VzZXJJRF0gVEhFTiAnICcgV0hFTiAnKGNvbmNhdChhdS5maXJzdF9uYW1lLCcgJyxhdS5sYXN0X25hbWUpKScgRUxTRSAnY3IudGl0bGUnIEVORA0KKw0KKyNXaXphcmRQcm9jZXNzb3IuamF2YQ0KKw0KK3Byb2Nlc3MuZmlsdGVyLmFkZC5lZGl0ID0gJ1thcmdWYWx1ZV0nDQorDQorI1JlcG9ydERlZmluaXRpb24uamF2YQ0KKw0KK3BlcnNpc3QucmVwb3J0LmFkaG9jID0gU0VMRUNUIG5leHR2YWwoJ1tHbG9iYWxzLmdldEFkaG9jUmVwb3J0U2VxdWVuY2UoKV0nKSBBUyBzZXF1ZW5jZQ0KKw0KKyNHbG9iYWxzLmphdmENCisNCitpbml0aWFsaXplLnJvbGVzID0gU0VMRUNUIDEgV0hFUkUgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIGNyX3RhYmxlX3JvbGUpDQorDQoraW5pdGlhbGl6ZS52ZXJzaW9uID0gU0VMRUNUIGNyX3JhcHRvci5nZXRfdmVyc2lvbg0KKw0KKyMgc2NoZWR1bGVyDQorDQorDQorc2NoZWR1bGVyLmF2YWlsYWJsZS5zY2hlZHVsZXMgPSBTRUxFQ1QgeC5yZXBfaWQsIHguc2NoZWR1bGVfaWQsIHguY29uZGl0aW9uYWxfeW4sIHguY29uZGl0aW9uX2xhcmdlX3NxbCwgeC5ub3RpZnlfdHlwZSwgeC5tYXhfcm93LCB4LmluaXRpYWxfZm9ybWZpZWxkcywgeC5wcm9jZXNzZWRfZm9ybWZpZWxkcywgci50aXRsZSwgeC51c2VyX2lkIEZST00gKCBTRUxFQ1QgcnMucmVwX2lkLCBycy5zY2hlZHVsZV9pZCwgcnMuc2NoZWRfdXNlcl9pZCB1c2VyX2lkLCBycy5jb25kaXRpb25hbF95biwgcnMuY29uZGl0aW9uX2xhcmdlX3NxbCwgcnMubm90aWZ5X3R5cGUsIHJzLm1heF9yb3csIHJzLmluaXRpYWxfZm9ybWZpZWxkcywgcnMucHJvY2Vzc2VkX2Zvcm1maWVsZHMgIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlIHJzICBXSEVSRSBycy5lbmFibGVkX3luPSdZJyAgQU5EIHJzLnN0YXJ0X2RhdGUgPD0gW2N1cnJlbnREYXRlXSAgQU5EICAocnMuZW5kX2RhdGUgPj0gW2N1cnJlbnREYXRlXSBvciBycy5lbmRfZGF0ZSBpcyBudWxsICkgIEFORCBycy5ydW5fZGF0ZSBJUyBOT1QgTlVMTCAgKSB4LCBjcl9yZXBvcnQgciAgV0hFUkUgeC5yZXBfaWQgPSByLnJlcF9pZA0KKw0KK3JhbmRvbS5zdHJpbmcgPSBzZWxlY3QgKCBjb25jYXQoJ1onICwgcm91bmQocmFuZG9tKCkgKiAxMDAwMDAwMDAwMDAwKSApICkNCisNCisNCitzY2hlZHVsZXIudXNlci5lbWFpbHMgPSBTRUxFQ1QgYXUudXNlcl9pZCBGUk9NIChTRUxFQ1QgcnMuc2NoZWR1bGVfaWQsIHJzLnJlcF9pZCBGUk9NIGNyX3JlcG9ydF9zY2hlZHVsZSBycyBXSEVSRSBycy5lbmFibGVkX3luPSdZJyBBTkQgcnMuc3RhcnRfZGF0ZSA8PSBub3coKSBBTkQgcnMuZW5kX2RhdGUgID49IG5vdygpIEFORCBycy5ydW5fZGF0ZSBJUyBOT1QgTlVMTCBBTkQgcnMuc2NoZWR1bGVfaWQgPSBbcF9zY2hlZHVsZV9pZF0gKSB4LCBjcl9yZXBvcnQgciwgZm5fdXNlciBhdSBXSEVSRSB4LnJlcF9pZCA9IHIucmVwX2lkIEFORCBhdS51c2VyX2lkIElOIChTRUxFQ1QgcnN1LnVzZXJfaWQgRlJPTSBjcl9yZXBvcnRfc2NoZWR1bGVfdXNlcnMgcnN1IFdIRVJFIHJzdS5zY2hlZHVsZV9pZCA9IHguc2NoZWR1bGVfaWQgYW5kIHJzdS5zY2hlZHVsZV9pZCA9IFtwX3NjaGVkdWxlX2lkXSBVTklPTiBTRUxFQ1QgdXIudXNlcl9pZCBGUk9NIGZuX3VzZXJfcm9sZSB1ciBXSEVSRSB1ci5yb2xlX2lkIElOIChTRUxFQ1QgcnN1Mi5yb2xlX2lkIEZST00gY3JfcmVwb3J0X3NjaGVkdWxlX3VzZXJzIHJzdTIgV0hFUkUgcnN1Mi5zY2hlZHVsZV9pZCA9IHguc2NoZWR1bGVfaWQgYW5kIHJzdTIuc2NoZWR1bGVfaWQgPSBbcF9zY2hlZHVsZV9pZF0pKSAgDQorDQorDQorIyBteSBsb2dpbnMNCisNCithcHAucXVlcnkgPSBTRUxFQ1QgQVBQX0lELCBNTF9BUFBfTkFNRSwgTU9UU19JRCBmcm9tIGZuX2FwcA0KKw0KK3VzZXIubG9nLnF1ZXJ5ID0gU0VMRUNUIERJU1RJTkNUICBJRk5VTEwoU0JDSUQsICcnKSBDVUlELCAnJyBBV0lELCBDT05DQVQoJyInLElGTlVMTChTQkNJRCwgJycpLCciJykgQVBQTElDQVRJT05VU0VSSUQsICBDT05DQVQoJyInLElGTlVMTChGSVJTVF9OQU1FLCAnJyksJyInKSBGSVJTVF9OQU1FLCBDT05DQVQoJyInLHN1YnN0cihJRk5VTEwoTUlERExFX05BTUUsICcnKSwgMCwgMSksJyInKSBNSURETEVfSU5JVElBTCwgQ09OQ0FUKCciJyxJRk5VTEwoTEFTVF9OQU1FLCAnJyksJyInKSBMQVNUX05BTUUsIElGTlVMTChEQVRFX0ZPUk1BVChMQVNUX0xPR0lOX0RBVEUsICclWS8lbS8lZCcpLCAnJykgTEFTVF9MT0dPTl9EQVRFLCBEQVRFX0ZPUk1BVChDUkVBVEVEX0RBVEUsICclWS8lbS8lZCcpIEFDQ09VTlRfQUNUSVZBVElPTl9EQVRFLCBJRk5VTEwoREFURV9GT1JNQVQoTU9ESUZJRURfREFURSwgJyVZLyVtLyVkJyksICcnKSBMQVNUX0RBVEVfQUNDT1VOVF9NT0RJRklFRCwgICcnIExBU1RfUEFTU1dPUkRfQ0hBTkdFX0RBVEUsIENPTkNBVCgnIicsSUZOVUxMKEZJUlNUX05BTUUsICcnKSwnICcsSUZOVUxMKE1JRERMRV9OQU1FLCAnJyksJyAnLElGTlVMTChMQVNUX05BTUUsICcnKSwnIicpICBGVUxMX1VTRVJfTkFNRSwgJycgTlRfSUQsIElGTlVMTChFTUFJTCwgJycpIEVNQUlMICAgRlJPTSBGTl9VU0VSIEZVLCBGTl9VU0VSX1JPTEUgRlVSIFdIRVJFIEZVLlVTRVJfSUQgXD0gRlVSLlVTRVJfSUQgYW5kIEZVUi5hcHBfaWQgXD0gPyBhbmQgQUNUSVZFX1lOIFw9ICdZJyBhbmQgc2JjaWQgaXMgbm90IG51bGwgb3JkZXIgYnkgMQ0KKw0KK3Byb2ZpbGUubG9nLnF1ZXJ5ID0gU0VMRUNUIERJU1RJTkNUIENPTkNBVCgnIicgLCBST0xFX05BTUUgLCAnIicpIFBST0ZJTEVfTkFNRSwgJyIiJyBTRUNVUklUWV9TRVRUSU5HUyBGUk9NIEZOX1JPTEUgRlIsIEZOX1VTRVJfUk9MRSBGVVIgV0hFUkUgRlVSLlJPTEVfSUQgXD0gRlIuUk9MRV9JRCBhbmQgRlIuQUNUSVZFX1lOIFw9ICdZJyBhbmQgKChGVVIuQVBQX0lEIFw9IDEgYW5kIEZSLlJPTEVfTkFNRSA8PiAnU3RhbmRhcmQgVXNlcicpIG9yIChGVVIuQVBQX0lEIFw9ID8gYW5kIEZVUi5BUFBfSUQgPD4gMSkpICBPUkRFUiBCWSAxDQorDQordXNlci5wcm9maWxlLmxvZy5xdWVyeSA9IFNFTEVDVCBESVNUSU5DVCBJRk5VTEwoU0JDSUQsICcnKSBDVUlELCAnJyBBV0lELCBDT05DQVQoJyInICwgSUZOVUxMKFNCQ0lELCAnJykgLCAnIicpIEFQUExJQ0FUSU9OVVNFUklEICwgQ09OQ0FUKCciJyAsIFJPTEVfTkFNRSAsICciJykgIFBST0ZJTEVfTkFNRSAgRlJPTSBGTl9VU0VSIEEsIEZOX1VTRVJfUk9MRSBCLCBGTl9ST0xFIEMgV0hFUkUgQS5VU0VSX0lEIFw9IEIuVVNFUl9JRCBBTkQgQi5ST0xFX0lEIFw9IEMuUk9MRV9JRCBBTkQgQS5BQ1RJVkVfWU4gXD0gJ1knIEFORCBDLkFDVElWRV9ZTiBcPSAnWScgQU5EIGEuc2JjaWQgaXMgbm90IG51bGwgIEFORCAoKEIuQVBQX0lEIFw9IDEgYW5kIEMuUk9MRV9OQU1FIDw+ICdTdGFuZGFyZCBVc2VyJykgb3IgKEIuQVBQX0lEIFw9ID8gYW5kIEIuQVBQX0lEIDw+IDEpKSBPUkRFUiBCWSAxDQorDQorYWxsLmFjY291bnRzLmxvZy5xdWVyeSA9IFNFTEVDVCBESVNUSU5DVCBJRk5VTEwoU0JDSUQsICcnKSBDVUlELCAoY2FzZSB3aGVuIEEuQUNUSVZFX1lOXD0nWScgdGhlbiAnQUNUSVZFJyBlbHNlICdJTkFDVElWRScgZW5kKSBBQ1RJVkVfWU4sIENPTkNBVCgnIicgLCBJRk5VTEwoU0JDSUQsICcnKSAsICciJykgQVBQTElDQVRJT05VU0VSSUQgLCBJRk5VTEwoREFURV9GT1JNQVQoTEFTVF9MT0dJTl9EQVRFLCAnJVkvJW0vJWQnKSwgJycpIExBU1RfTE9HT05fREFURSwgJycgTEFTVF9QQVNTV09SRF9DSEFOR0VfREFURSwgQ09OQ0FUKCciJyAsIFJPTEVfTkFNRSAsICciJykgIFBST0ZJTEVfTkFNRSAgRlJPTSBGTl9VU0VSIEEsIEZOX1VTRVJfUk9MRSBCLCBGTl9ST0xFIEMgV0hFUkUgQS5VU0VSX0lEIFw9IEIuVVNFUl9JRCBBTkQgQi5ST0xFX0lEIFw9IEMuUk9MRV9JRCBBTkQgYS5zYmNpZCBpcyBub3QgbnVsbCAgQU5EICgoQi5BUFBfSUQgXD0gMSBhbmQgQy5ST0xFX05BTUUgPD4gJ1N0YW5kYXJkIFVzZXInKSBvciAoQi5BUFBfSUQgXD0gPyBhbmQgQi5BUFBfSUQgPD4gMSkpIE9SREVSIEJZIDENCisNCisjIGJhc2ljIHNxbA0KKw0KK3NlcS5uZXh0LnZhbCA9IFNFTEVDVCBuZXh0dmFsKCdbc2VxdWVuY2VOYW1lXScpIEFTIGlkDQorDQorY3VycmVudC5kYXRlID0gbm93KCkNCisNCitudmwgPSBJRk5VTEwNCisNCisjIHJlcG9ydCBzZWN1cml0eQ0KK3JlcG9ydC51c2VyLmFjY2VzcyA9IFNFTEVDVCByYS5yb2xlX2lkLCByYS51c2VyX2lkLCByYS5yZWFkX29ubHlfeW4gRlJPTSBjcl9yZXBvcnRfYWNjZXNzIHJhIFdIRVJFIHJhLnJlcF9pZCA9IFtyZXBvcnRJRF0NCithZGQudXNlci5hY2Nlc3MgPSBJTlNFUlQgSU5UTyBjcl9yZXBvcnRfYWNjZXNzIChyZXBfaWQsIG9yZGVyX25vLCByb2xlX2lkLCB1c2VyX2lkLCByZWFkX29ubHlfeW4pIFZBTFVFUyhbcmVwb3J0SURdLCBJRk5VTEwoKHNlbGVjdCBvcmRlcl9ubyBmcm9tIChTRUxFQ1QgTUFYKG9yZGVyX25vKSBBUyBvcmRlcl9ubyBGUk9NIGNyX3JlcG9ydF9hY2Nlc3MgV0hFUkUgcmVwX2lkPVtyZXBvcnRJRF0pIEFTIHRlbXApLCAwKSsxLCBOVUxMLCBbdXNlcklEXSwgJ1tyZWFkT25seUFjY2Vzc10nKQ0KK3VwZGF0ZS51c2VyLmFjY2VzcyA9IFVQREFURSBjcl9yZXBvcnRfYWNjZXNzIFNFVCByZWFkX29ubHlfeW49J1tyZWFkT25seUFjY2Vzc10nIFdIRVJFIHJlcF9pZD1bcmVwb3J0SURdIEFORCB1c2VyX2lkPVt1c2VySURdDQorcmVtb3ZlLnVzZXIuYWNjZXNzID0gREVMRVRFIEZST00gY3JfcmVwb3J0X2FjY2VzcyBXSEVSRSByZXBfaWQ9W3JlcG9ydElEXSBBTkQgdXNlcl9pZD1bdXNlcklEXQ0KK2FkZC5yb2xlLmFjY2VzcyA9IElOU0VSVCBJTlRPIGNyX3JlcG9ydF9hY2Nlc3MgKHJlcF9pZCwgb3JkZXJfbm8sIHJvbGVfaWQsIHVzZXJfaWQsIHJlYWRfb25seV95bikgVkFMVUVTKFtyZXBvcnRJRF0sIElGTlVMTCgoc2VsZWN0IG9yZGVyX25vIGZyb20gKFNFTEVDVCBNQVgob3JkZXJfbm8pIEFTIG9yZGVyX25vIEZST00gY3JfcmVwb3J0X2FjY2VzcyBXSEVSRSByZXBfaWQ9W3JlcG9ydElEXSkgQVMgdGVtcCksIDApKzEsIFtyb2xlSURdLCBOVUxMLCAnW3JlYWRPbmx5QWNjZXNzXScpDQordXBkYXRlLnJvbGUuYWNjZXNzID0gVVBEQVRFIGNyX3JlcG9ydF9hY2Nlc3MgU0VUIHJlYWRfb25seV95bj0nW3JlYWRPbmx5QWNjZXNzXScgV0hFUkUgcmVwX2lkPVtyZXBvcnRJRF0gQU5EIHJvbGVfaWQ9W3JvbGVJRF0NCityZW1vdmUucm9sZS5hY2Nlc3MgPSBERUxFVEUgRlJPTSBjcl9yZXBvcnRfYWNjZXNzIFdIRVJFIHJlcF9pZD1bcmVwb3J0SURdIEFORCByb2xlX2lkPVtyb2xlSURdDQorDQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvc3lzdGVtLnByb3BlcnRpZXMgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvY29uZi9zeXN0ZW0ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzAzZmZhCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvc3lzdGVtLnByb3BlcnRpZXMKQEAgLTAsMCArMSwyMTAgQEAKKyMjIw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIGVDT01QIFBvcnRhbCBTREsNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgDQorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyMjDQorIyBQcm9wZXJ0aWVzIHJlYWQgYnkgRUNPTVAgQ29yZSBsaWJyYXJ5LCBlY29tcFNESy1jb3JlLmphcg0KKyMgdGVzdGluZyAtIHByb3BzIDEuMA0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgc2hvdWxkIE5PVCBiZSBjaGFuZ2VkIGJ5IHBhcnRuZXIgYXBwbGljYXRpb25zLg0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorYXBwbGljYXRpb25fdXNlcl9pZCAgICAgICAgICAgPSAzMDAwMA0KK3Bvc3RfZGVmYXVsdF9yb2xlX2lkICAgICAgICAgID0gMTYNCitjbHVzdGVyZWQgICAgICAgICAgICAgICAgICAgICA9IHRydWUNCisNCisjRW5hYmxlIEZ1c2lvbiBNb2JpbGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgYXBwbGljYXRpb24NCittb2JpbGVfZW5hYmxlCQkJICAJICA9IGZhbHNlDQorDQorIyBDYWNoZSBjb25maWcgZmlsZSBpcyBuZWVkZWQgb24gdGhlIGNsYXNzcGF0aA0KK2NhY2hlX2NvbmZpZ19maWxlX3BhdGggICAgICAgID0gL1dFQi1JTkYvY2xhc3Nlcy9jYWNoZS5jY2YNCitjYWNoZV9zd2l0Y2ggICAgICAgICAgICAgICAgICA9IDE5OQ0KK2NhY2hlX2xvYWRfb25fc3RhcnR1cCAgICAgICAgID0gZmFsc2UNCisNCit1c2VyX25hbWUJCQkJCSAgPSBmdWxsTmFtZQ0KK2RlY3J5cHRpb25fa2V5CQkJCSAgPSBBR0xEZEc0RDA0QkttMkl4SVdFcjhvPT0NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIE1BWSByZXF1aXJlIGNoYW5nZXMgYnkgcGFydG5lciBhcHBsaWNhdGlvbnMuDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCisjT3JhY2xlDQorI2RiLnVzZXJOYW1lPXF1YW50dW1iZA0KKyNkYi5wYXNzd29yZD1jMXN5bjJ5aG1yDQorI2RiLmNvbm5lY3Rpb25VUkw9amRiYzpvcmFjbGU6dGhpbjp0b2RvLmxpbmsNCisjZGIuaGliLmRpYWxlY3Q9b3JnLmhpYmVybmF0ZS5kaWFsZWN0Lk9yYWNsZTEwZ0RpYWxlY3QNCisjZGIuZHJpdmVyPW9yYWNsZS5qZGJjLmRyaXZlci5PcmFjbGVEcml2ZXINCisjSGliZXJuYXRlIA0KKyNoYi5kaWFsZWN0PW9yZy5oaWJlcm5hdGUuZGlhbGVjdC5PcmFjbGUxMGdEaWFsZWN0DQorI2hiLnNob3dfc3FsPXRydWUNCisNCisjUG9zdGdyZQ0KKyNkYi51c2VyTmFtZT1YWFhYDQorI2RiLnBhc3N3b3JkPVhYWFgNCisjZGIuY29ubmVjdGlvblVSTD1qZGJjOnBvc3RncmVzcWw6Ly9YWFhYL1hYDQorI2RiLmhpYi5kaWFsZWN0PW9yZy5oaWJlcm5hdGUuZGlhbGVjdC5Qb3N0Z3JlU1FMRGlhbGVjdA0KKyNkYi5kcml2ZXI9b3JnLnBvc3RncmVzcWwuRHJpdmVyDQorI2hiLmRpYWxlY3Q9b3JnLmhpYmVybmF0ZS5kaWFsZWN0LlBvc3RncmVTUUxEaWFsZWN0DQorI2hiLnNob3dfc3FsPXRydWUNCisNCitjb29raWVfZG9tYWluID0gb25hcC5vcmcNCisjTXlzcWwNCitkYi5kcml2ZXIgPSBvcmcubWFyaWFkYi5qZGJjLkRyaXZlcg0KK2RiLmNvbm5lY3Rpb25VUkwgPSBqZGJjOm1hcmlhZGI6Ly9sb2NhbGhvc3Q6MzMwNi9vc2FtX2NvcmUNCitkYi51c2VyTmFtZSA9IGV1c2VyDQorZGIucGFzc3dvcmQgPSBldXNlcg0KKyNkYi5oaWIuZGlhbGVjdCA9IG9yZy5oaWJlcm5hdGUuZGlhbGVjdC5NeVNRTERpYWxlY3QNCitkYi5taW5fcG9vbF9zaXplID0gNQ0KK2RiLm1heF9wb29sX3NpemUgPSAxMA0KK2hiLmRpYWxlY3QgPSBvcmcuaGliZXJuYXRlLmRpYWxlY3QuTXlTUUxEaWFsZWN0DQoraGIuc2hvd19zcWwgPSB0cnVlDQoraGIuaWRsZV9jb25uZWN0aW9uX3Rlc3RfcGVyaW9kID0gMzYwMA0KK2FwcF9kaXNwbGF5X25hbWUJCQkJCSAgPSBWSUQNCitmaWxlc19wYXRoID0gL3RtcA0KKw0KKyMgbWVudSBzZXR0aW5ncw0KKyNtZW51X3F1ZXJ5X25hbWUgICAgICAgICAgICAgICAgICAgICAgPSBtZW51RGF0YQ0KKyNtZW51X3Byb3BlcnRpZXNfZmlsZV9sb2NhdGlvbiAgICAgICAgPSAvV0VCLUlORi9mdXNpb24vbWVudS8NCisjYXBwbGljYXRpb25fbWVudV9zZXRfbmFtZSAgICAgICAgICAgID0gQVBQDQorI2FwcGxpY2F0aW9uX21lbnVfYXR0cmlidXRlX25hbWUgICAgICA9IGFwcGxpY2F0aW9uTWVudURhdGENCisjYXBwbGljYXRpb25fbWVudV9wcm9wZXJ0aWVzX25hbWUgICAgID0gbWVudS5wcm9wZXJ0aWVzDQorI2J1c2luZXNzX2RpcmVjdF9tZW51X3NldF9uYW1lICAgICAgICA9IEJEDQorI2J1c2luZXNzX2RpcmVjdF9tZW51X3Byb3BlcnRpZXNfbmFtZSA9IGJkLm1lbnUucHJvcGVydGllcw0KKyNidXNpbmVzc19kaXJlY3RfbWVudV9hdHRyaWJ1dGVfbmFtZSAgPSBidXNpbmVzc0RpcmVjdE1lbnVEYXRhDQorDQorYXBwbGljYXRpb25fbmFtZSAgICAgICAgICAgICAgPSBWaXJ0dWFsIEluZnJhc3RydWN0dXJlIERlcGxveW1lbnQNCithcHBsaWNhdGlvbl91c2VyX2lkICAgICAgICAgICA9IDMwMDAwDQorcG9zdF9kZWZhdWx0X3JvbGVfaWQgICAgICAgICAgPSAxNg0KK2NsdXN0ZXJlZCAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQ0KKw0KKyNFbmFibGUgRnVzaW9uIE1vYmlsZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBhcHBsaWNhdGlvbg0KK21vYmlsZV9lbmFibGUJCQkgIAkgID0gZmFsc2UNCisNCisjIENhY2hlIGNvbmZpZyBmaWxlIGlzIG5lZWRlZCBvbiB0aGUgY2xhc3NwYXRoDQorY2FjaGVfY29uZmlnX2ZpbGVfcGF0aCAgICAgICAgPSAvV0VCLUlORi9jbGFzc2VzL2NhY2hlLmNjZg0KK2NhY2hlX3N3aXRjaCAgICAgICAgICAgICAgICAgID0gMTk5DQorY2FjaGVfbG9hZF9vbl9zdGFydHVwICAgICAgICAgPSBmYWxzZQ0KKw0KK3VzZXJfbmFtZQkJCQkJICA9IGZ1bGxOYW1lDQorZGVjcnlwdGlvbl9rZXkJCQkJICA9IEFHTERkRzREMDRCS20ySXhJV0VyOG89PQ0KKw0KKyNlbGVtZW50IG1hcCBmaWxlcw0KK2VsZW1lbnRfbWFwX2ZpbGVfcGF0aCA9IGFwcC9mdXNpb25hcHAvZmlsZXMvDQorZWxlbWVudF9tYXBfaWNvbl9wYXRoID0gYXBwL2Z1c2lvbmFwcC9pY29ucy8NCisNCisjYWFpIHJlbGF0ZWQgcHJvcGVydGllcw0KKyNhYWkuc2VydmVyLnVybC5iYXNlPWh0dHBzOi8vYWFpLmFwaS5vcGVuZWNvbXAub3JnOjg0NDMvYWFpLw0KKyNhYWkuc2VydmVyLnVybD1odHRwczovL2FhaS5hcGkub3BlbmVjb21wLm9yZzo4NDQzL2FhaS92OC8NCisjYWFpLm9sZHNlcnZlci51cmwuYmFzZT1odHRwczovL2FhaS5hcGkub3BlbmVjb21wLm9yZzo4NDQzL2FhaS9zZXJ2ZXJzLw0KKyNhYWkub2xkc2VydmVyLnVybD1odHRwczovL2FhaS5hcGkub3BlbmVjb21wLm9yZzo4NDQzL2FhaS9zZXJ2ZXJzL3YzLw0KKyNhYWkuc2VydmVyLnVybC5iYXNlPWh0dHBzOi8vMTA0LjIzOS4yNDkuMTgzOjg0NDMvYWFpLw0KKyNhYWkuc2VydmVyLnVybD1odHRwczovLzEwNC4yMzkuMjQ5LjE4Mzo4NDQzL2FhaS92MTMvDQorYWFpLnNlcnZlci51cmwuYmFzZT1odHRwOi8vbG9jYWxob3N0OjEwODAvYWFpLw0KK2FhaS5zZXJ2ZXIudXJsPWh0dHA6Ly9sb2NhbGhvc3Q6MTA4MC9hYWkvdjEyLw0KKw0KK2FhaS5vbGRzZXJ2ZXIudXJsLmJhc2U9aHR0cHM6Ly8xMDQuMjM5LjI0OS4xODM6ODQ0My9hYWkvc2VydmVycy8NCithYWkub2xkc2VydmVyLnVybD1odHRwczovLzEwNC4yMzkuMjQ5LjE4Mzo4NDQzL2FhaS9zZXJ2ZXJzL3YzLw0KK2FhaS50cnVzdHN0b3JlLmZpbGVuYW1lPXRvbWNhdF9rZXlzdG9yZQ0KK2FhaS50cnVzdHN0b3JlLnBhc3N3ZC54PU9CRjoxa3M1MWw4ZDFvM2kxcGNjMXIycjFlMjExcjM5MWtsczFweWoxejd1MW5qZjFseDUxZ28yMWhuajF5MGsxbWxpMXNvcDFrOG8xajY1MXZ1OTFteHcxdnVuMW16ZTF2djExajh4MWs1aTFzcDExbWpjMXkxNjFobHIxZ200MW0xMTFua2oxejc4MXB3MzFra3UxcjRwMWUzOTFyNTcxcGJtMW83NDFsNHgxa3NwDQorYWFpLmtleXN0b3JlLmZpbGVuYW1lPXRvbWNhdF9rZXlzdG9yZQ0KK2FhaS5rZXlzdG9yZS5wYXNzd2QueD1PQkY6MWtzNTFsOGQxbzNpMXBjYzFyMnIxZTIxMXIzOTFrbHMxcHlqMXo3dTFuamYxbHg1MWdvMjFobmoxeTBrMW1saTFzb3AxazhvMWo2NTF2dTkxbXh3MXZ1bjFtemUxdnYxMWo4eDFrNWkxc3AxMW1qYzF5MTYxaGxyMWdtNDFtMTExbmtqMXo3ODFwdzMxa2t1MXI0cDFlMzkxcjU3MXBibTFvNzQxbDR4MWtzcA0KKw0KK2FhaS52aWQudXNlcm5hbWU9VklEDQorYWFpLnZpZC5wYXNzd2QueD1PQkY6MWptOTFpMHYxamw5DQorDQorYWFpLnVzZS5jbGllbnQuY2VydD1mYWxzZQ0KK2FhaS52bmYucHJvdnN0YXR1cz1QUkVQUk9WLE5WVFBST1YsUFJPVixDQVBQRUQNCisjQ3JvbiBTY2hlZHVsZXMNCitsb2dfY3JvbiAgICAgICAgICAgICAgICAgICAgICA9IDAgMC8xICogKiAqID87DQorbXlsb2dpbnNfZmVlZF9jcm9uICAgICAgICAgICAgPSAwIDAvNjAgKiAqICogPzsNCisjc2Vzc2lvbnRpbWVvdXRfZmVlZF9jcm9uCSAgPSAwICogKiAqICogPyAqDQorbXlfbG9naW5fZmVlZF9vdXRwdXRfZGlyICAgICAgPSAvdG1wL015TG9naW5zDQorDQorIyBFQ09NUCBQb3J0YWwgU2hhcmVkIENvbnRleHQgUkVTVCBBUEkgVVJMDQorZWNvbXBfc2hhcmVkX2NvbnRleHRfcmVzdF91cmw9IGh0dHBzOi8vd3d3Lm9wZW5lY29tcC5vcmc6ODA4MC9lY29tcHBvcnRhbC9jb250ZXh0DQorDQorIyBMaW5rIHNob3duIGluIEhlbHAgbWVudQ0KK2NvbnRhY3RfdXNfbGluayA9IGh0dHBzOi8vd3d3Lm9wZW5lY29tcC5vcmcvRWNvbXBQb3J0YWwvRUNPTVArUG9ydGFsK0hvbWUNCisNCisjIEFuIFVuaXF1ZSAxMjgtYml0IHZhbHVlIGRlZmluZWQgdG8gaWRlbnRpZnkgYSBzcGVjaWZpYyB2ZXJzaW9uDQorIyBvZiBhbiBhcHBsaWNhdGlvbiBkZXBsb3llZCBvbiBhIHNwZWNpZmljIHZpcnR1YWwgbWFjaGluZS4NCisjIFRoaXMgdmFsdWUgbXVzdCBiZSBnZW5lcmF0ZWQgYW5kIHVwZGF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIA0KKyMgd2hpY2ggaXMgdXNpbmcgdGhlIEVDT01QIFNESyBhdCB0aGUgdGltZSBvZiBpdHMgZGVwbG95bWVudC4NCisjIE9ubGluZSBVbmlxdWUgVVVJRCBnZW5lcmF0b3IgLSBodHRwczovL3d3dy51dWlkZ2VuZXJhdG9yLm5ldC8NCitpbnN0YW5jZV91dWlkPTI5MmI0NjFhLTI5NTQtNGI2My1hM2Y5LWY5MTZjN2FkM2JjMA0KKw0KKw0KKw0KKyNhdXRoZW50aWNhdGUgdXNlciBzZXJ2ZXINCithdXRoZW50aWNhdGVfdXNlcl9zZXJ2ZXI9aHR0cDovL3RvZG9fZW50ZXJfYXV0aF9zZXJ2ZXJfaG9zdG5hbWU6ODM4My9vcGVuaWQtY29ubmVjdC1zZXJ2ZXItd2ViYXBwL2FsbFVzZXJzDQorDQorI01TTyByZWxhdGVkIHByb3BlcnRpZXMNCisjc2ltdWxhdG9yDQorI21zby5zZXJ2ZXIudXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODA4OQ0KKyNkZXYyZGV2DQorI2dvb2QNCittc28uc2VydmVyLnVybD1odHRwczovL21zby5hcGkuc2ltcGxlZGVtby5vbmFwLm9yZzo4NDQzL29uYXAvc28vaW5mcmENCittc28ucG9sbGluZy5pbnRlcnZhbC5tc2Vjcz0yMDAwDQorbXNvLm1heC5wb2xscz0zDQorbXNvLnVzZXIubmFtZT1pbmZyYXBvcnRhbA0KK21zby5wYXNzd29yZC54PU9CRjoxZ2h6MWtmeDFqMXcxbTd3MWkyNzFlOHExZWFzMWh6ajFtNGkxaXl5MWtjaDFnZHoNCisjRTJFIGlzIHYzDQorbXNvLnJlc3RhcGkuc3ZjLmUyZWluc3RhbmNlPS9lMmVTZXJ2aWNlSW5zdGFuY2VzL3YzDQorbXNvLnJlc3RhcGkuc3ZjLmluc3RhbmNlPS9zZXJ2aWNlSW5zdGFudGlhdGlvbi92Ny9zZXJ2aWNlSW5zdGFuY2VzDQorbXNvLnJlc3RhcGkuc3ZjLmluc3RhbmNlLmRlbGV0ZUFuZFVuYXNzaWduPS9zZXJ2aWNlSW5zdGFudGlhdGlvbi92Ny9zZXJ2aWNlSW5zdGFuY2VzDQorbXNvLnJlc3RhcGkudm5mLmluc3RhbmNlPS9zZXJ2aWNlSW5zdGFuY2VzL3Y2LzxzZXJ2aWNlX2luc3RhbmNlX2lkPi92bmZzDQorbXNvLnJlc3RhcGkudm5mLmNoYW5nZW1hbmFnZW1lbnQuaW5zdGFuY2U9L3NlcnZpY2VJbnN0YW5jZXMvdjYvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L3ZuZnMvPHZuZl9pbnN0YW5jZV9pZD4vPHJlcXVlc3RfdHlwZT4NCittc28ucmVzdGFwaS5uZXR3b3JrLmluc3RhbmNlPS9zZXJ2aWNlSW5zdGFuY2VzL3Y2LzxzZXJ2aWNlX2luc3RhbmNlX2lkPi9uZXR3b3Jrcw0KK21zby5yZXN0YXBpLnZmLm1vZHVsZS5pbnN0YW5jZT0vc2VydmljZUluc3RhbmNlcy92Ni88c2VydmljZV9pbnN0YW5jZV9pZD4vdm5mcy88dm5mX2luc3RhbmNlX2lkPi92Zk1vZHVsZXMNCittc28ucmVzdGFwaS52Zi5tb2R1bGUuc2NhbGVvdXQ9L3NlcnZpY2VJbnN0YW50aWF0aW9uL3Y3L3NlcnZpY2VJbnN0YW5jZXMvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L3ZuZnMvPHZuZl9pbnN0YW5jZV9pZD4vdmZNb2R1bGVzL3NjYWxlT3V0DQorbXNvLnJlc3RhcGkudm9sdW1lLmdyb3VwLmluc3RhbmNlPS9zZXJ2aWNlSW5zdGFuY2VzL3Y2LzxzZXJ2aWNlX2luc3RhbmNlX2lkPi92bmZzLzx2bmZfaW5zdGFuY2VfaWQ+L3ZvbHVtZUdyb3Vwcw0KK21zby5yZXN0YXBpLmdldC5vcmMucmVxPS9vcmNoZXN0cmF0aW9uUmVxdWVzdHMvdjYNCittc28ucmVzdGFwaS5nZXQub3JjLnJlcXM9L29yY2hlc3RyYXRpb25SZXF1ZXN0cy92Nj8NCittc28ucmVzdGFwaS5nZXQubWFuLnRhc2tzPS90YXNrcy92MQ0KK21zby5yZXN0YXBpLmNvbmZpZ3VyYXRpb25zPS9zZXJ2aWNlSW5zdGFuY2VzL3Y2LzxzZXJ2aWNlX2luc3RhbmNlX2lkPi9jb25maWd1cmF0aW9ucw0KK21zby5yZXN0YXBpLmNvbmZpZ3VyYXRpb24uaW5zdGFuY2U9JHttc28ucmVzdGFwaS5jb25maWd1cmF0aW9uc30vPGNvbmZpZ3VyYXRpb25faWQ+DQorDQorbXNvLnJlc3RhcGkuc2VydmljZUluc3RhbnRpYXRpb25BcGlSb290PS9zZXJ2aWNlSW5zdGFudGlhdGlvbi92Nw0KK21zby5yZXN0YXBpLnNlcnZpY2VJbnN0YW5jZUNyZWF0ZT0ke21zby5yZXN0YXBpLnNlcnZpY2VJbnN0YW50aWF0aW9uQXBpUm9vdH0vc2VydmljZUluc3RhbmNlcw0KK21zby5yZXN0YXBpLnNlcnZpY2VJbnN0YW5jZUFzc2lnbj0ke21zby5yZXN0YXBpLnNlcnZpY2VJbnN0YW50aWF0aW9uQXBpUm9vdH0vc2VydmljZUluc3RhbmNlcy9hc3NpZ24NCisNCittc28ucmVzdGFwaS5jbG91ZFJlc291cmNlc0FwaVJvb3Q9L2Nsb3VkUmVzb3VyY2VzL3YxDQorbXNvLnJlc3RhcGkub3BlcmF0aW9uYWxFbnZpcm9ubWVudD0ke21zby5yZXN0YXBpLmNsb3VkUmVzb3VyY2VzQXBpUm9vdH0vb3BlcmF0aW9uYWxFbnZpcm9ubWVudHMvPG9wZXJhdGlvbmFsX2Vudmlyb25tZW50X2lkPg0KKw0KK21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnQuYWN0aXZhdGU9JHttc28ucmVzdGFwaS5vcGVyYXRpb25hbEVudmlyb25tZW50fS9hY3RpdmF0ZQ0KK21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnQuZGVhY3RpdmF0ZT0ke21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnR9L2RlYWN0aXZhdGUNCittc28ucmVzdGFwaS5vcGVyYXRpb25hbEVudmlyb25tZW50LmNyZWF0ZT0ke21zby5yZXN0YXBpLmNsb3VkUmVzb3VyY2VzQXBpUm9vdH0vb3BlcmF0aW9uYWxFbnZpcm9ubWVudHMNCisNCittc28ucmVzdGFwaS5jbG91ZFJlc291cmNlc1JlcXVlc3RzQXBpUm9vdD0vY2xvdWRSZXNvdXJjZXNSZXF1ZXN0cy92MQ0KK21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnQuY2xvdWRSZXNvdXJjZXNSZXF1ZXN0cy5zdGF0dXM9JHttc28ucmVzdGFwaS5jbG91ZFJlc291cmNlc1JlcXVlc3RzQXBpUm9vdH0/cmVxdWVzdElkPTxyZXF1ZXN0X2lkPg0KKw0KK21zby5kaXNwbGF5VGVzdEFQSU9uU2NyZWVuPXRydWUNCittc28uZGVmYXVsdFRlc3RBUEk9R1JfQVBJDQorbXNvLm1heE9wZW5lZEluc3RhbnRpYXRpb25SZXF1ZXN0cz0yMA0KK21zby5hc3luY1BvbGxpbmdJbnRlcnZhbFNlY29uZHM9MQ0KK3JlZnJlc2hUaW1lSW5zdGFudGlhdGlvbkRhc2hib2FyZD0xMA0KKw0KK3ZpZC50cnVzdHN0b3JlLmZpbGVuYW1lPS9vcHQvYXBwL3ZpZC9ldGMvb3JnLm9uYXAudmlkLnRydXN0Lmprcw0KK3ZpZC50cnVzdHN0b3JlLnBhc3N3ZC54PU9CRjoxZHgwMWowZTFoczAxdDk4MW1pczFkd3MxNTZzMW9qYzFxamMxenN4MXB3MzFxb2IxcXI3MXB5ajF6c3QxcWh5MW9qcTE1NmkxZHVhMW1tMjF0YjYxaHZpMWowZzFkdTINCittc28uZG1lMi5jbGllbnQudGltZW91dD0zMDAwMA0KK21zby5kbWUyLmNsaWVudC5yZWFkLnRpbWVvdXQ9MTIwMDAwDQorc2NoZWR1bGVyLmNyZWF0ZS5uZXcudm5mLmNoYW5nZS5pbnN0YW5jZT0vdjEvQ2hhbmdlTWFuYWdlbWVudC9zY2hlZHVsZXMvDQorc2NoZWR1bGVyLmdldC50aW1lLnNsb3RzPS92MS9DaGFuZ2VNYW5hZ2VtZW50L3NjaGVkdWxlcy8NCitzY2hlZHVsZXIuc2VydmVyLnVybD1odHRwOi8vQllPLnNjaGVkdWxlcjo4OTg5L3NjaGVkdWxlcg0KKw0KK3NjaGVkdWxlci5zdWJtaXQubmV3LnZuZi5jaGFuZ2U9L3YxL0NoYW5nZU1hbmFnZW1lbnQvc2NoZWR1bGVzL3tzY2hlZHVsZUlkfS9hcHByb3ZhbHMNCitzY2hlZHVsZXIuZ2V0LnNjaGVkdWxlcz0vdjEvQ2hhbmdlTWFuYWdlbWVudC9zY2hlZHVsZXMvc2NoZWR1bGVEZXRhaWxzLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3N5c3RlbV90ZW1wbGF0ZS5wcm9wZXJ0aWVzIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2NvbmYvc3lzdGVtX3RlbXBsYXRlLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZhMmU2YgotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9jb25mL3N5c3RlbV90ZW1wbGF0ZS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTQ3IEBACisjREIgSW5mbw0KKyNkYi51c2VyTmFtZT1YWFhYDQorI2RiLnBhc3N3b3JkPVhYWFgNCisjZGIuY29ubmVjdGlvblVSTD1qZGJjOm9yYWNsZTp0aGluOkBYWFhYL1hYDQorI2RiLmhpYi5kaWFsZWN0PW9yZy5oaWJlcm5hdGUuZGlhbGVjdC5PcmFjbGUxMGdEaWFsZWN0DQorI2RiLmRyaXZlcj1vcmFjbGUuamRiYy5kcml2ZXIuT3JhY2xlRHJpdmVyDQorI0hpYmVybmF0ZSANCisjaGIuZGlhbGVjdD1vcmcuaGliZXJuYXRlLmRpYWxlY3QuT3JhY2xlMTBnRGlhbGVjdA0KKyNoYi5zaG93X3NxbD10cnVlDQorDQorI1Bvc3RncmUNCisjZGIudXNlck5hbWU9WFhYWA0KKyNkYi5wYXNzd29yZD1YWFhYDQorI2RiLmNvbm5lY3Rpb25VUkw9amRiYzpwb3N0Z3Jlc3FsOi8vWFhYWC9YWA0KKyNkYi5oaWIuZGlhbGVjdD1vcmcuaGliZXJuYXRlLmRpYWxlY3QuUG9zdGdyZVNRTERpYWxlY3QNCisjZGIuZHJpdmVyPW9yZy5wb3N0Z3Jlc3FsLkRyaXZlcg0KKyNoYi5kaWFsZWN0PW9yZy5oaWJlcm5hdGUuZGlhbGVjdC5Qb3N0Z3JlU1FMRGlhbGVjdA0KKyNoYi5zaG93X3NxbD10cnVlDQorDQorY29va2llX2RvbWFpbiA9IG9uYXAub3JnDQorI215c3FsDQorZGIuZHJpdmVyID0gb3JnLm1hcmlhZGIuamRiYy5Ecml2ZXINCitkYi5jb25uZWN0aW9uVVJMID0gamRiYzptYXJpYWRiOi8vJHtWSURfTVlTUUxfSE9TVH06JHtWSURfTVlTUUxfUE9SVH0vJHtWSURfTVlTUUxfREJOQU1FfQ0KK2RiLnVzZXJOYW1lID0gJHtWSURfTVlTUUxfVVNFUn0NCitkYi5wYXNzd29yZCA9ICR7VklEX01ZU1FMX1BBU1N9DQorZGIuaGliLmRpYWxlY3QgPSBvcmcuaGliZXJuYXRlLmRpYWxlY3QuTXlTUUxEaWFsZWN0DQorZGIubWluX3Bvb2xfc2l6ZSA9IDUNCitkYi5tYXhfcG9vbF9zaXplID0gMTANCitoYi5kaWFsZWN0ID0gb3JnLmhpYmVybmF0ZS5kaWFsZWN0Lk15U1FMRGlhbGVjdA0KK2hiLnNob3dfc3FsID0gdHJ1ZQ0KK2hiLmlkbGVfY29ubmVjdGlvbl90ZXN0X3BlcmlvZCA9IDM2MDANCithcHBfZGlzcGxheV9uYW1lID0gJHtWSURfQVBQX0RJU1BMQVlfTkFNRX0NCitmaWxlc19wYXRoID0gL3RtcA0KKw0KKyMgbWVudSBzZXR0aW5ncw0KKyNtZW51X3F1ZXJ5X25hbWUgICAgICAgICAgICAgICAgICAgICAgPSBtZW51RGF0YQ0KKyNtZW51X3Byb3BlcnRpZXNfZmlsZV9sb2NhdGlvbiAgICAgICAgPSAvV0VCLUlORi9mdXNpb24vbWVudS8NCisjYXBwbGljYXRpb25fbWVudV9zZXRfbmFtZSAgICAgICAgICAgID0gQVBQDQorI2FwcGxpY2F0aW9uX21lbnVfYXR0cmlidXRlX25hbWUgICAgICA9IGFwcGxpY2F0aW9uTWVudURhdGENCisjYXBwbGljYXRpb25fbWVudV9wcm9wZXJ0aWVzX25hbWUgICAgID0gbWVudS5wcm9wZXJ0aWVzDQorI2J1c2luZXNzX2RpcmVjdF9tZW51X3NldF9uYW1lICAgICAgICA9IEJEDQorI2J1c2luZXNzX2RpcmVjdF9tZW51X3Byb3BlcnRpZXNfbmFtZSA9IGJkLm1lbnUucHJvcGVydGllcw0KKyNidXNpbmVzc19kaXJlY3RfbWVudV9hdHRyaWJ1dGVfbmFtZSAgPSBidXNpbmVzc0RpcmVjdE1lbnVEYXRhDQorDQorYXBwbGljYXRpb25fbmFtZSAgICAgICAgICAgICAgPSBWaXJ0dWFsIEluZnJhc3RydWN0dXJlIERlcGxveW1lbnQNCithcHBsaWNhdGlvbl91c2VyX2lkICAgICAgICAgICA9IDMwMDAwDQorcG9zdF9kZWZhdWx0X3JvbGVfaWQgICAgICAgICAgPSAxNg0KK2NsdXN0ZXJlZCAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQ0KKw0KKyNFbmFibGUgRnVzaW9uIE1vYmlsZSBjYXBhYmlsaXRpZXMgZm9yIHRoZSBhcHBsaWNhdGlvbg0KK21vYmlsZV9lbmFibGUgPSBmYWxzZQ0KKw0KKyMgQ2FjaGUgY29uZmlnIGZpbGUgaXMgbmVlZGVkIG9uIHRoZSBjbGFzc3BhdGgNCitjYWNoZV9jb25maWdfZmlsZV9wYXRoICAgICAgICA9IC9XRUItSU5GL2NsYXNzZXMvY2FjaGUuY2NmDQorY2FjaGVfc3dpdGNoICAgICAgICAgICAgICAgICAgPSAxOTkNCitjYWNoZV9sb2FkX29uX3N0YXJ0dXAgICAgICAgICA9IGZhbHNlDQorDQordXNlcl9uYW1lID0gZnVsbE5hbWUNCisNCitkZWNyeXB0aW9uX2tleSA9ICR7VklEX0RFQ1JZUFRJT05fS0VZfQ0KKw0KKyNlbGVtZW50IG1hcCBmaWxlcw0KK2VsZW1lbnRfbWFwX2ZpbGVfcGF0aCA9IC90bXANCitlbGVtZW50X21hcF9pY29uX3BhdGggPSBhcHAvdmlkL2ljb25zLw0KKw0KKyNhYWkgcmVsYXRlZCBwcm9wZXJ0aWVzDQorYWFpLnNlcnZlci51cmwuYmFzZT1odHRwczovLyR7VklEX0FBSV9IT1NUfToke1ZJRF9BQUlfUE9SVH0vYWFpLw0KK2FhaS5zZXJ2ZXIudXJsPWh0dHBzOi8vJHtWSURfQUFJX0hPU1R9OiR7VklEX0FBSV9QT1JUfS9hYWkvdjEzLw0KK2FhaS5vbGRzZXJ2ZXIudXJsLmJhc2U9aHR0cHM6Ly8ke1ZJRF9BQUlfSE9TVH06JHtWSURfQUFJX1BPUlR9L2FhaS9zZXJ2ZXJzLw0KK2FhaS5vbGRzZXJ2ZXIudXJsPWh0dHBzOi8vJHtWSURfQUFJX0hPU1R9OiR7VklEX0FBSV9QT1JUfS9hYWkvc2VydmVycy92My8NCithYWkudHJ1c3RzdG9yZS5maWxlbmFtZT0ke0FBSV9UUlVTVFNUT1JFX0ZJTEVOQU1FfQ0KK2FhaS50cnVzdHN0b3JlLnBhc3N3ZC54PSR7QUFJX1RSVVNUU1RPUkVfUEFTU1dEX1h9DQorYWFpLmtleXN0b3JlLmZpbGVuYW1lPSR7QUFJX0tFWVNUT1JFX0ZJTEVOQU1FfQ0KK2FhaS5rZXlzdG9yZS5wYXNzd2QueD0ke0FBSV9LRVlTVE9SRV9QQVNTV0RfWH0NCithYWkudmlkLnVzZXJuYW1lPSR7QUFJX1ZJRF9VSUR9DQorYWFpLnZpZC5wYXNzd2QueD0ke0FBSV9WSURfUEFTU1dEX1h9DQorYWFpLnVzZS5jbGllbnQuY2VydD0ke0FBSV9VU0VfQ0xJRU5UX0NFUlR9DQorYWFpLnZuZi5wcm92c3RhdHVzPSR7QUFJX1ZORl9QUk9WU1RBVFVTfQ0KKw0KKyMgRUNPTVAgUG9ydGFsIFNoYXJlZCBDb250ZXh0IFJFU1QgQVBJIFVSTA0KK2Vjb21wX3NoYXJlZF9jb250ZXh0X3Jlc3RfdXJsPSR7VklEX0VDT01QX1NIQVJFRF9DT05URVhUX1JFU1RfVVJMfQ0KKyMgTGluayBzaG93biBpbiBIZWxwIG1lbnUNCitjb250YWN0X3VzX2xpbms9JHtWSURfQ09OVEFDVF9VU19MSU5LfQ0KKyNDcm9uIFNjaGVkdWxlcw0KK2xvZ19jcm9uICAgICAgICAgICAgICAgICAgICAgID0gMCAwLzEgKiAqICogPzsNCitteWxvZ2luc19mZWVkX2Nyb24gICAgICAgICAgICA9IDAgMC82MCAqICogKiA/Ow0KKyNzZXNzaW9udGltZW91dF9mZWVkX2Nyb24JICA9IDAgKiAqICogKiA/ICoNCitteV9sb2dpbl9mZWVkX291dHB1dF9kaXIgICAgICA9ICR7VklEX01ZTE9HSU5fRkVFRF9ESVJFQ1RPUll9DQorDQorIyBBbiBVbmlxdWUgMTI4LWJpdCB2YWx1ZSBkZWZpbmVkIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgdmVyc2lvbg0KKyMgb2YgYW4gYXBwbGljYXRpb24gZGVwbG95ZWQgb24gYSBzcGVjaWZpYyB2aXJ0dWFsIG1hY2hpbmUuDQorIyBUaGlzIHZhbHVlIG11c3QgYmUgZ2VuZXJhdGVkIGFuZCB1cGRhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiANCisjIHdoaWNoIGlzIHVzaW5nIHRoZSBFQ09NUCBTREsgYXQgdGhlIHRpbWUgb2YgaXRzIGRlcGxveW1lbnQuDQorIyBPbmxpbmUgVW5pcXVlIFVVSUQgZ2VuZXJhdG9yIC0gaHR0cHM6Ly93d3cudXVpZGdlbmVyYXRvci5uZXQvDQoraW5zdGFuY2VfdXVpZD0yOTJiNDYxYS0yOTU0LTRiNjMtYTNmOS1mOTE2YzdhZDNiYzANCisNCisNCisjTVNPIHJlbGF0ZWQgcHJvcGVydGllcw0KKyNzaW11bGF0b3INCittc28uc2VydmVyLnVybD0ke1ZJRF9NU09fU0VSVkVSX1VSTH0NCittc28ucG9sbGluZy5pbnRlcnZhbC5tc2Vjcz0ke01TT19QT0xMSU5HX0lOVEVSVkFMX01TRUNTfQ0KK21zby5tYXgucG9sbHM9MTANCittc28udXNlci5uYW1lPSR7VklEX01TT19VU0VSfQ0KK21zby5wYXNzd29yZC54PSR7VklEX01TT19QQVNTfQ0KKyNFMkUgaXMgdjMNCittc28ucmVzdGFwaS5zdmMuZTJlaW5zdGFuY2U9L2UyZVNlcnZpY2VJbnN0YW5jZXMvdjMNCittc28ucmVzdGFwaS5zdmMuaW5zdGFuY2U9L3NlcnZpY2VJbnN0YW50aWF0aW9uL3Y3L3NlcnZpY2VJbnN0YW5jZXMNCittc28ucmVzdGFwaS5zdmMuaW5zdGFuY2UuZGVsZXRlQW5kVW5hc3NpZ249L3NlcnZpY2VJbnN0YW50aWF0aW9uL3Y3L3NlcnZpY2VJbnN0YW5jZXMNCittc28ucmVzdGFwaS52bmYuaW5zdGFuY2U9L3NlcnZpY2VJbnN0YW5jZXMvdjYvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L3ZuZnMNCittc28ucmVzdGFwaS52bmYuY2hhbmdlbWFuYWdlbWVudC5pbnN0YW5jZT0vc2VydmljZUluc3RhbmNlcy92Ni88c2VydmljZV9pbnN0YW5jZV9pZD4vdm5mcy88dm5mX2luc3RhbmNlX2lkPi88cmVxdWVzdF90eXBlPg0KK21zby5yZXN0YXBpLm5ldHdvcmsuaW5zdGFuY2U9L3NlcnZpY2VJbnN0YW5jZXMvdjYvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L25ldHdvcmtzDQorbXNvLnJlc3RhcGkudmYubW9kdWxlLnNjYWxlb3V0PS9zZXJ2aWNlSW5zdGFudGlhdGlvbi92Ny9zZXJ2aWNlSW5zdGFuY2VzLzxzZXJ2aWNlX2luc3RhbmNlX2lkPi92bmZzLzx2bmZfaW5zdGFuY2VfaWQ+L3ZmTW9kdWxlcy9zY2FsZU91dA0KK21zby5yZXN0YXBpLnZmLm1vZHVsZS5pbnN0YW5jZT0vc2VydmljZUluc3RhbmNlcy92Ni88c2VydmljZV9pbnN0YW5jZV9pZD4vdm5mcy88dm5mX2luc3RhbmNlX2lkPi92Zk1vZHVsZXMNCittc28ucmVzdGFwaS52b2x1bWUuZ3JvdXAuaW5zdGFuY2U9L3NlcnZpY2VJbnN0YW5jZXMvdjYvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L3ZuZnMvPHZuZl9pbnN0YW5jZV9pZD4vdm9sdW1lR3JvdXBzDQorbXNvLnJlc3RhcGkuZ2V0Lm9yYy5yZXE9L29yY2hlc3RyYXRpb25SZXF1ZXN0cy92Ng0KK21zby5yZXN0YXBpLmdldC5vcmMucmVxcz0vb3JjaGVzdHJhdGlvblJlcXVlc3RzL3Y2Pw0KK21zby5yZXN0YXBpLmdldC5tYW4udGFza3M9L3Rhc2tzL3YxDQorbXNvLnJlc3RhcGkuY29uZmlndXJhdGlvbnM9L3NlcnZpY2VJbnN0YW5jZXMvdjYvPHNlcnZpY2VfaW5zdGFuY2VfaWQ+L2NvbmZpZ3VyYXRpb25zDQorbXNvLnJlc3RhcGkuY29uZmlndXJhdGlvbi5pbnN0YW5jZT0ke21zby5yZXN0YXBpLmNvbmZpZ3VyYXRpb25zfS88Y29uZmlndXJhdGlvbl9pZD4NCisNCittc28ucmVzdGFwaS5zZXJ2aWNlSW5zdGFudGlhdGlvbkFwaVJvb3Q9L3NlcnZpY2VJbnN0YW50aWF0aW9uL3Y3DQorbXNvLnJlc3RhcGkuc2VydmljZUluc3RhbmNlQ3JlYXRlPSR7bXNvLnJlc3RhcGkuc2VydmljZUluc3RhbnRpYXRpb25BcGlSb290fS9zZXJ2aWNlSW5zdGFuY2VzDQorbXNvLnJlc3RhcGkuc2VydmljZUluc3RhbmNlQXNzaWduPSR7bXNvLnJlc3RhcGkuc2VydmljZUluc3RhbnRpYXRpb25BcGlSb290fS9zZXJ2aWNlSW5zdGFuY2VzL2Fzc2lnbg0KKw0KK21zby5yZXN0YXBpLmNsb3VkUmVzb3VyY2VzQXBpUm9vdD0vY2xvdWRSZXNvdXJjZXMvdjENCittc28ucmVzdGFwaS5vcGVyYXRpb25hbEVudmlyb25tZW50PSR7bXNvLnJlc3RhcGkuY2xvdWRSZXNvdXJjZXNBcGlSb290fS9vcGVyYXRpb25hbEVudmlyb25tZW50cy88b3BlcmF0aW9uYWxfZW52aXJvbm1lbnRfaWQ+DQorDQorbXNvLnJlc3RhcGkub3BlcmF0aW9uYWxFbnZpcm9ubWVudC5hY3RpdmF0ZT0ke21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnR9L2FjdGl2YXRlDQorbXNvLnJlc3RhcGkub3BlcmF0aW9uYWxFbnZpcm9ubWVudC5kZWFjdGl2YXRlPSR7bXNvLnJlc3RhcGkub3BlcmF0aW9uYWxFbnZpcm9ubWVudH0vZGVhY3RpdmF0ZQ0KK21zby5yZXN0YXBpLm9wZXJhdGlvbmFsRW52aXJvbm1lbnQuY3JlYXRlPSR7bXNvLnJlc3RhcGkuY2xvdWRSZXNvdXJjZXNBcGlSb290fS9vcGVyYXRpb25hbEVudmlyb25tZW50cw0KKw0KK21zby5yZXN0YXBpLmNsb3VkUmVzb3VyY2VzUmVxdWVzdHNBcGlSb290PS9jbG91ZFJlc291cmNlc1JlcXVlc3RzL3YxDQorbXNvLnJlc3RhcGkub3BlcmF0aW9uYWxFbnZpcm9ubWVudC5jbG91ZFJlc291cmNlc1JlcXVlc3RzLnN0YXR1cz0ke21zby5yZXN0YXBpLmNsb3VkUmVzb3VyY2VzUmVxdWVzdHNBcGlSb290fT9yZXF1ZXN0SWQ9PHJlcXVlc3RfaWQ+DQorDQorbXNvLmRpc3BsYXlUZXN0QVBJT25TY3JlZW49dHJ1ZQ0KK21zby5kZWZhdWx0VGVzdEFQST1HUl9BUEkNCittc28ubWF4T3BlbmVkSW5zdGFudGlhdGlvblJlcXVlc3RzPTIwDQorbXNvLmFzeW5jUG9sbGluZ0ludGVydmFsU2Vjb25kcz0xDQorcmVmcmVzaFRpbWVJbnN0YW50aWF0aW9uRGFzaGJvYXJkPTEwDQorDQordmlkLnRydXN0c3RvcmUuZmlsZW5hbWU9JHtWSURfVFJVU1RTVE9SRV9GSUxFfQ0KK3ZpZC50cnVzdHN0b3JlLnBhc3N3ZC54PSR7VklEX1RSVVNUU1RPUkVfUEFTU30NCittc28uZG1lMi5jbGllbnQudGltZW91dD0ke01TT19ETUUyX0NMSUVOVF9USU1FT1VUfQ0KK21zby5kbWUyLmNsaWVudC5yZWFkLnRpbWVvdXQ9JHtNU09fRE1FMl9DTElFTlRfUkVBRF9USU1FT1VUfQ0KK21zby5kbWUyLnNlcnZlci51cmw9JHtNU09fRE1FMl9TRVJWRVJfVVJMfQ0KK21zby5kbWUyLmVuYWJsZWQ9JHtNU09fRE1FMl9FTkFCTEVEfQ0KK3NjaGVkdWxlci5iYXNpYy5hdXRoPQ0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vY29uZi9mdXNpb24ucHJvcGVydGllcyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vY29uZi9mdXNpb24ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDQxN2FhCi0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2Z1c2lvbi9jb25mL2Z1c2lvbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsNDYgQEAKKyMgbG9naW4gc2V0dGluZ3MNCitsb2dpbl9tZXRob2RfYmFja2Rvb3IgICAgICAgPSBiYWNrZG9vcg0KK2xvZ2luX21ldGhvZF93ZWJfanVuY3Rpb24gICAgICAgPSBsb2dpbl9tZXRob2Rfd2ViX2p1bmN0aW9uDQorbG9naW5fbWV0aG9kX2NzcCAgICAgICA9IGxvZ2luX21ldGhvZF9jc3ANCitsb2dpbl9tZXRob2RfYXR0cmlidXRlX25hbWUgPSBsb2dpbl9tZXRob2QNCithdXRoZW50aWNhdGlvbl9tZWNoYW5pc20gPSBCT1RIDQorcm9sZV9mdW5jdGlvbl9saXN0ID0gcm9sZV9mdW5jaW9uX2xpc3QNCisNCisjbG9naW4gbWVzc2FnZQ0KK2xvZ2luLmVycm9yLmhyaWQuZW1wdHkgPSBMb2dpbiBmYWlsZWQsIHBsZWFzZSBjb250YWN0IHN5c3RlbSBhZG1pbmlzdHJhdG9yLiANCitsb2dpbi5lcnJvci5ocmlkLm5vdC1mb3VuZCA9IFVzZXIgbm90IGZvdW5kLCBwbGVhc2UgY29udGFjdCBzeXN0ZW0gYWRtaW5pc3RyYXRvci4NCitsb2dpbi5lcnJvci51c2VyLmluYWN0aXZlID0gQWNjb3VudCBpcyBkaXNhYmxlZCwgcGxlYXNlIGNvbnRhY3Qgc3lzdGVtIGFkbWluaXN0cmF0b3IuDQorDQorIyBVc2VyIFNlc3Npb24gc2V0dGluZ3MNCit1c2VyX2F0dHJpYnV0ZV9uYW1lICAgICAgICAgICA9IHVzZXINCityb2xlc19hdHRyaWJ1dGVfbmFtZSAgICAgICAgICA9IHJvbGVzDQorcm9sZV9mdW5jdGlvbnNfYXR0cmlidXRlX25hbWUgPSByb2xlX2Z1bmN0aW9ucw0KKyNjbGllbnRfZGV2aWNlX2F0dHJpYnV0ZV9uYW1lICA9IGNsaWVudF9kZXZpY2UNCisjY2xpZW50X2RldmljZV9lbXVsYXRpb24gICAgICAgPSBmYWxzZQ0KKw0KKyMgSW1wb3J0LXVzZXIgTERBUCBzZXR0aW5ncw0KK3Bvc3RfaW5pdGlhbF9jb250ZXh0X2ZhY3RvcnkgPSBjb20uc3VuLmpuZGkubGRhcC5MZGFwQ3R4RmFjdG9yeQ0KK3Bvc3RfcHJvdmlkZXJfdXJsICAgICAgICAgICAgPSBsZGFwOi8vbGRhcC5teWNvbXBhbnkuY29tOjM4OQ0KK3Bvc3Rfc2VjdXJpdHlfcHJpbmNpcGFsICAgICAgPSBvdT1wZW9wbGUsbz1teWNvbXBhbnksYz11cw0KK3Bvc3RfbWF4X3Jlc3VsdF9zaXplICAgICAgICAgPSA0OTkNCisNCisjIG1lbnUgc2V0dGluZ3MNCittZW51X3F1ZXJ5X25hbWUgICAgICAgICAgICAgICAgICAgICAgPSBtZW51RGF0YQ0KKyNtZW51X3Byb3BlcnRpZXNfZmlsZV9sb2NhdGlvbiAgICAgICAgPSAvV0VCLUlORi9mdXNpb24vbWVudS8NCithcHBsaWNhdGlvbl9tZW51X3NldF9uYW1lICAgICAgICAgICAgPSBBUFANCithcHBsaWNhdGlvbl9tZW51X2F0dHJpYnV0ZV9uYW1lICAgICAgPSBhcHBsaWNhdGlvbk1lbnVEYXRhDQorI2FwcGxpY2F0aW9uX21lbnVfcHJvcGVydGllc19uYW1lICAgICA9IG1lbnUucHJvcGVydGllcw0KK2J1c2luZXNzX2RpcmVjdF9tZW51X3NldF9uYW1lICAgICAgICA9IEJEDQorI2J1c2luZXNzX2RpcmVjdF9tZW51X3Byb3BlcnRpZXNfbmFtZSA9IGJkLm1lbnUucHJvcGVydGllcw0KK2J1c2luZXNzX2RpcmVjdF9tZW51X2F0dHJpYnV0ZV9uYW1lICA9IGJ1c2luZXNzRGlyZWN0TWVudURhdGENCisNCisjIFJBUFRPUiBjb25maWcgc2V0dGluZ3MNCisjcmFwdG9yX2NvbmZpZ19maWxlX3BhdGggPSAvV0VCLUlORi9jb25mLw0KKw0KKyMgUm9sZSBzZXR0aW5ncw0KK3N5c19hZG1pbl9yb2xlX2lkID0gMQ0KKyNzeXNfYWRtaW5fcm9sZV9mdW5jdGlvbl9kZWxldGVfZnJvbV91aSA9IHRydWUNCisNCisjIFByb2ZpbGUgU2VhcmNoIHNldHRpbmdzDQorI3Byb2ZpbGVfc2VhcmNoX3JlcG9ydF9pZD0xODENCisjY2FsbGFibGVfcHJvZmlsZV9zZWFyY2hfcmVwb3J0X2lkPTM4Ng0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vb3JtL0Z1c2lvbi5oYm0ueG1sIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2Z1c2lvbi9vcm0vRnVzaW9uLmhibS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5NTY2OAotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vb3JtL0Z1c2lvbi5oYm0ueG1sCkBAIC0wLDAgKzEsMzk0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCis8IS0tDQorICA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICBPTkFQIFBvcnRhbCBTREsNCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgIENvcHlyaWdodCDCqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgc29mdHdhcmUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyAgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIOKAnExpY2Vuc2XigJ0pOw0KKyAgeW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgZG9jdW1lbnRhdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGxpY2Vuc2VkDQorICB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlLCBBdHRyaWJ1dGlvbiA0LjAgSW50bC4gKHRoZSDigJxMaWNlbnNl4oCdKTsNCisgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGRvY3VtZW50YXRpb24gZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvDQorIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBkb2N1bWVudGF0aW9uDQorICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgDQorICA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIA0KKyAgDQorICAtLT4NCisNCis8IURPQ1RZUEUgaGliZXJuYXRlLW1hcHBpbmcgUFVCTElDDQorICAgICAgICAiLS8vSGliZXJuYXRlL0hpYmVybmF0ZSBNYXBwaW5nIERURCAzLjAvL0VOIg0KKyAgICAgICAgImh0dHA6Ly9oaWJlcm5hdGUuc291cmNlZm9yZ2UubmV0L2hpYmVybmF0ZS1tYXBwaW5nLTMuMC5kdGQiPg0KKw0KKzxoaWJlcm5hdGUtbWFwcGluZyBwYWNrYWdlPSJvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kb21haW4iPg0KKw0KKyAgICAgPCEtLSBVc2VyIGNsYXNzIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9IlVzZXIiIHRhYmxlPSJGTl9VU0VSIj4NCisgICAgICAgIDxpZCBuYW1lPSJpZCIgY29sdW1uPSJ1c2VyX2lkIiA+IA0KKyAgICAgICAgICA8Z2VuZXJhdG9yIGNsYXNzPSJuYXRpdmUiPg0KKyAgICAgICAgICAgICA8cGFyYW0gbmFtZT0ic2VxdWVuY2UiPnNlcV9mbl91c2VyPC9wYXJhbT4gDQorICAgICAgICAgIDwvZ2VuZXJhdG9yPg0KKyAgICAgICAgPC9pZD4NCisNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmdJZCIgICAgICAgICBjb2x1bW49Im9yZ19pZCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hbmFnZXJJZCIgICAgIGNvbHVtbj0ibWFuYWdlcl9pZCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpcnN0TmFtZSIgICAgIGNvbHVtbj0iZmlyc3RfbmFtZSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1pZGRsZUluaXRpYWwiIGNvbHVtbj0ibWlkZGxlX25hbWUiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYXN0TmFtZSIgICAgICBjb2x1bW49Imxhc3RfbmFtZSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InBob25lIiAgICAgICAgIGNvbHVtbj0icGhvbmUiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmYXgiICAgICAgICAgICBjb2x1bW49ImZheCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNlbGx1bGFyIiAgICAgIGNvbHVtbj0iY2VsbHVsYXIiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbWFpbCIgICAgICAgICBjb2x1bW49ImVtYWlsIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWRkcmVzc0lkIiAgICAgY29sdW1uPSJhZGRyZXNzX2lkIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWxlcnRNZXRob2RDZCIgY29sdW1uPSJhbGVydF9tZXRob2RfY2QiLz4NCisNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhZGRyZXNzMSIgICAgICBjb2x1bW49ImFkZHJlc3NfbGluZV8xIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWRkcmVzczIiICAgICAgY29sdW1uPSJhZGRyZXNzX2xpbmVfMiIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNpdHkiICAgICAgICAgIGNvbHVtbj0iY2l0eSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InN0YXRlIiAgICAgICAgIGNvbHVtbj0ic3RhdGVfY2QiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ6aXBDb2RlIiAgICAgICBjb2x1bW49InppcF9jb2RlIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY291bnRyeSIgICAgICAgY29sdW1uPSJjb3VudHJ5X2NkIi8+DQorDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iaHJpZCIgICAgICAgICAgY29sdW1uPSJocmlkIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JnVXNlcklkIiAgICAgY29sdW1uPSJvcmdfdXNlcl9pZCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yZ0NvZGUiICAgICAgIGNvbHVtbj0ib3JnX2NvZGUiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsb2dpbklkIiAgICAgICBjb2x1bW49ImxvZ2luX2lkIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibG9naW5Qd2QiICAgICAgY29sdW1uPSJsb2dpbl9wd2QiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYXN0TG9naW5EYXRlIiBjb2x1bW49Imxhc3RfbG9naW5fZGF0ZSIgIHR5cGU9InRpbWVzdGFtcCIvPg0KKw0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxvY2F0aW9uQ2xsaSIgIGNvbHVtbj0ibG9jYXRpb25fY2xsaSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmdNYW5hZ2VyVXNlcklkIiBjb2x1bW49Im9yZ19tYW5hZ2VyX3VzZXJpZCIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjb21wYW55IiAgICAgICBjb2x1bW49ImNvbXBhbnkiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iZGVwYXJ0bWVudCIgICAgY29sdW1uPSJkZXBhcnRtZW50IiAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRlcGFydG1lbnROYW1lIiAgICAJY29sdW1uPSJkZXBhcnRtZW50X25hbWUiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYnVzaW5lc3NVbml0IiAgCQljb2x1bW49ImJ1c2luZXNzX3VuaXQiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYnVzaW5lc3NVbml0TmFtZSIgICBjb2x1bW49ImJ1c2luZXNzX3VuaXRfbmFtZSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJqb2JUaXRsZSIgICAgICAJCWNvbHVtbj0iam9iX3RpdGxlIiAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpbG9TdGF0dXMiICAgIAkJY29sdW1uPSJzaWxvX3N0YXR1cyIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaW5hbmNpYWxMb2NDb2RlIiAgIGNvbHVtbj0iZmluX2xvY19jb2RlIiAvPg0KKw0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImFjdGl2ZSIgICAgICAgIGNvbHVtbj0iYWN0aXZlX3luIiAgICAgICB0eXBlPSJ5ZXNfbm8iLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbnRlcm5hbCIgICAgICBjb2x1bW49ImlzX2ludGVybmFsX3luIiAgdHlwZT0ieWVzX25vIi8+DQorDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY3JlYXRlZCIgIHR5cGU9InRpbWVzdGFtcCIgY29sdW1uPSJjcmVhdGVkX2RhdGUiICAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGlmaWVkIiB0eXBlPSJ0aW1lc3RhbXAiIGNvbHVtbj0ibW9kaWZpZWRfZGF0ZSIgLz4NCisNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjcmVhdGVkSWQiICBjb2x1bW49ImNyZWF0ZWRfaWQiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kaWZpZWRJZCIgY29sdW1uPSJtb2RpZmllZF9pZCIgLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJ0aW1lWm9uZUlkIiBjb2x1bW49InRpbWV6b25lIiAvPg0KKwkJDQorICAgICAgICA8c2V0IG5hbWU9InVzZXJBcHBzIiB0YWJsZT0iRk5fVVNFUl9ST0xFIiBsYXp5PSJmYWxzZSIgc29ydD0ibmF0dXJhbCIgaW52ZXJzZT0idHJ1ZSIgY2FzY2FkZT0iYWxsLWRlbGV0ZS1vcnBoYW4iPg0KKyAgICAgICAgICAgIDxrZXkgY29sdW1uPSJ1c2VyX2lkIi8+DQorICAgICAgICAgICAgPG9uZS10by1tYW55IGNsYXNzPSJvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kb21haW4uVXNlckFwcCIgLz4NCisgICAgICAgIDwvc2V0Pg0KKw0KKyAgICAgICAgPHNldCBuYW1lPSJwc2V1ZG9Sb2xlcyIgdGFibGU9IkZOX1VTRVJfUFNFVURPX1JPTEUiIGxhenk9ImZhbHNlIiBzb3J0PSJuYXR1cmFsIj4NCisgICAgICAgICAgICA8a2V5IGNvbHVtbj0idXNlcl9pZCIvPg0KKyAgICAgICAgICAgIDxtYW55LXRvLW1hbnkgY29sdW1uPSJwc2V1ZG9fcm9sZV9pZCIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5Sb2xlIiAvPg0KKyAgICAgICAgPC9zZXQ+DQorICAgIDwvY2xhc3M+DQorDQorICAgICA8IS0tIFByb2ZpbGUgY2xhc3MgbWFwcGluZyBkZXRhaWxzOw0KKyAgICAgCSAgZHVwZSBvZiBVc2VyIGNsYXNzLCBidXQgZmV3ZXIgZmllbGRzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iUHJvZmlsZSIgdGFibGU9IkZOX1VTRVIiPg0KKyAgICAgICAgPGlkIG5hbWU9ImlkIiBjb2x1bW49InVzZXJfaWQiID4gDQorCQkJPGdlbmVyYXRvciBjbGFzcz0iaW5jcmVtZW50Ii8+DQorICAgICAgICA8L2lkPgkNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaXJzdF9uYW1lIiAgICAgY29sdW1uPSJmaXJzdF9uYW1lIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFzdF9uYW1lIiAgICAgIGNvbHVtbj0ibGFzdF9uYW1lIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW1haWwiICAgICAgICAgY29sdW1uPSJlbWFpbCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yZ01hbmFnZXJVc2VySWQiIGNvbHVtbj0ib3JnX21hbmFnZXJfdXNlcmlkIiAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImFjdGl2ZV95biIgICAgICAgIGNvbHVtbj0iYWN0aXZlX3luIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JnVXNlcklkIiAgICAgICAgIGNvbHVtbj0ib3JnX3VzZXJfaWQiLz4NCisgICAJPC9jbGFzcz4NCisJDQorIAk8Y2xhc3MgbmFtZT0iVXNlckFwcCIgdGFibGU9ImZuX3VzZXJfcm9sZSI+DQorICAgICAgICA8Y29tcG9zaXRlLWlkPg0KKyAgICAgICAgICAgIDxrZXktcHJvcGVydHkgbmFtZT0idXNlcklkIiB0eXBlPSJsb25nIj4NCisgICAgICAgICAgICAgICAgPGNvbHVtbiBuYW1lPSJ1c2VyX2lkIiBwcmVjaXNpb249IjExIiBzY2FsZT0iMCIgLz4NCisgICAgICAgICAgICA8L2tleS1wcm9wZXJ0eT4NCisgICAgICAgIAk8a2V5LW1hbnktdG8tb25lIG5hbWU9ImFwcCIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5BcHAiIGNvbHVtbj0iYXBwX2lkIiAvPg0KKyAgICAgICAgCTxrZXktbWFueS10by1vbmUgbmFtZT0icm9sZSIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5Sb2xlIiBjb2x1bW49InJvbGVfaWQiIC8+DQorICAgICAgICA8L2NvbXBvc2l0ZS1pZD4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwcmlvcml0eSIgdHlwZT0iamF2YS5sYW5nLlNob3J0Ij4NCisgICAgICAgICAgICA8Y29sdW1uIG5hbWU9InByaW9yaXR5IiBwcmVjaXNpb249IjQiIHNjYWxlPSIwIiAvPg0KKyAgICAgICAgPC9wcm9wZXJ0eT4NCisgICAgPC9jbGFzcz4NCisNCisgICAgPCEtLSBBcHAgY2xhc3MgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iQXBwIiB0YWJsZT0iZm5fYXBwIj4NCisgICAgICAgIDxpZCBuYW1lPSJpZCIgY29sdW1uPSJhcHBfaWQiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuYW1lIiBjb2x1bW49ImFwcF9uYW1lIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYXBwUGFzc3dvcmQiIGNvbHVtbj0iYXBwX3Bhc3N3b3JkIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlcm5hbWUiIGNvbHVtbj0iYXBwX3VzZXJuYW1lIi8+DQorCQk8cHJvcGVydHkgbmFtZT0iaW1hZ2VVcmwiIGNvbHVtbj0iYXBwX2ltYWdlX3VybCIvPg0KKwkJPHByb3BlcnR5IG5hbWU9ImRlc2NyaXB0aW9uIiBjb2x1bW49ImFwcF9kZXNjcmlwdGlvbiIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im5vdGVzIiBjb2x1bW49ImFwcF9ub3RlcyIvPg0KKwkJPHByb3BlcnR5IG5hbWU9InVybCIgY29sdW1uPSJhcHBfdXJsIi8+DQorCQk8cHJvcGVydHkgbmFtZT0iYWx0ZXJuYXRlVXJsIiBjb2x1bW49ImFwcF9hbHRlcm5hdGVfdXJsIi8+DQorCQk8cHJvcGVydHkgbmFtZT0icmVzdEVuZHBvaW50IiBjb2x1bW49ImFwcF9yZXN0X2VuZHBvaW50Ii8+DQorCQk8cHJvcGVydHkgbmFtZT0ibWxBcHBOYW1lIiBjb2x1bW49Im1sX2FwcF9uYW1lIi8+DQorCQk8cHJvcGVydHkgbmFtZT0ibWxBcHBBZG1pbklkIiBjb2x1bW49Im1sX2FwcF9hZG1pbl9pZCIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im1vdHNJZCIgY29sdW1uPSJtb3RzX2lkIi8+DQorCQk8cHJvcGVydHkgbmFtZT0ib3BlbiIgY29sdW1uPSJvcGVuIi8+DQorCQk8cHJvcGVydHkgbmFtZT0iZW5hYmxlZCIgY29sdW1uPSJlbmFibGVkIi8+DQorCQk8cHJvcGVydHkgbmFtZT0idGh1bWJuYWlsIiBjb2x1bW49InRodW1ibmFpbCIgdHlwZT0iYmxvYiIvPg0KKwkJPHByb3BlcnR5IG5hbWU9InVlYktleSIgY29sdW1uPSJ1ZWJfa2V5Ii8+DQorCQk8cHJvcGVydHkgbmFtZT0idWViU2VjcmV0IiBjb2x1bW49InVlYl9zZWNyZXQiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJ1ZWJUb3BpY05hbWUiIGNvbHVtbj0idWViX3RvcGljX25hbWUiLz4NCisgICAgPC9jbGFzcz4NCisNCisNCisJPCEtLSBBdWRpdCBMb2cgY2xhc3MgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iQXVkaXRMb2ciIHRhYmxlPSJmbl9hdWRpdF9sb2ciPg0KKyAgICAgICAgPGlkIG5hbWU9ImlkIiBjb2x1bW49ImxvZ19pZCI+DQorICAgICAgICAgIDwhLS0gPGdlbmVyYXRvciBjbGFzcz0ic2VxdWVuY2UiPg0KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJzZXF1ZW5jZSI+c2VxX2ZuX2F1ZGl0X2xvZzwvcGFyYW0+DQorICAgICAgICAgIDwvZ2VuZXJhdG9yPiAtLT4NCisgICAgICAgICAgPGdlbmVyYXRvciBjbGFzcz0ibmF0aXZlIj4NCisJCQk8cGFyYW0gbmFtZT0ic2VxdWVuY2UiPnNlcV9mbl9hdWRpdF9sb2c8L3BhcmFtPg0KKwkJICA8L2dlbmVyYXRvcj4NCisgICAgICAgIDwvaWQ+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWN0aXZpdHlDb2RlIiAgICAgIGNvbHVtbj0iYWN0aXZpdHlfY2QiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhZmZlY3RlZFJlY29yZElkIiAgY29sdW1uPSJhZmZlY3RlZF9yZWNvcmRfaWQiICAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNvbW1lbnRzIiAgICAgICAgICBjb2x1bW49ImNvbW1lbnRzIiAgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjcmVhdGVkSWQiICAgICAgICAgY29sdW1uPSJ1c2VyX2lkIiAvPg0KKyAgICA8L2NsYXNzPg0KKyAgICANCisgICAgPCEtLSBVc2VyIFJvbGUgY2xhc3MgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iUm9sZSIgdGFibGU9IkZOX1JPTEUiPg0KKyAgICAgICAgPGlkIG5hbWU9ImlkIiBjb2x1bW49InJvbGVfaWQiPg0KKyAgICAgICAgICAgPGdlbmVyYXRvciBjbGFzcz0ibmF0aXZlIj4NCisgICAgICAgICAgICAgPHBhcmFtIG5hbWU9InNlcXVlbmNlIj5zZXFfZm5fcm9sZTwvcGFyYW0+IA0KKyAgICAgICAgICA8L2dlbmVyYXRvcj4NCisgICAgICAgIDwvaWQ+DQorDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibmFtZSIgICAgICBjb2x1bW49InJvbGVfbmFtZSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InByaW9yaXR5IiAgY29sdW1uPSJwcmlvcml0eSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhY3RpdmUiICAgIGNvbHVtbj0iYWN0aXZlX3luIiAgdHlwZT0ieWVzX25vIi8+DQorDQorICAgICAgICA8c2V0IG5hbWU9InJvbGVGdW5jdGlvbnMiIHRhYmxlPSJGTl9ST0xFX0ZVTkNUSU9OIiBsYXp5PSJmYWxzZSIgc29ydD0ibmF0dXJhbCI+DQorICAgICAgICAgICAgPGtleSBjb2x1bW49InJvbGVfaWQiLz4NCisgICAgICAgICAgICA8bWFueS10by1tYW55IGNvbHVtbj0iZnVuY3Rpb25fY2QiIGNsYXNzPSJvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kb21haW4uUm9sZUZ1bmN0aW9uIi8+DQorICAgICAgICA8L3NldD4NCisNCisgICAgICAgIDxzZXQgbmFtZT0iY2hpbGRSb2xlcyIgdGFibGU9IkZOX1JPTEVfQ09NUE9TSVRFIiBsYXp5PSJmYWxzZSIgc29ydD0ibmF0dXJhbCI+DQorICAgICAgICAgICAgPGtleSBjb2x1bW49InBhcmVudF9yb2xlX2lkIi8+DQorICAgICAgICAgICAgPG1hbnktdG8tbWFueSBjb2x1bW49ImNoaWxkX3JvbGVfaWQiIGNsYXNzPSJvcmcub25hcC5wb3J0YWxzZGsuY29yZS5kb21haW4uUm9sZSIvPg0KKyAgICAgICAgPC9zZXQ+DQorICAgICAgICANCisgICAgICAgIDxzZXQgbmFtZT0icGFyZW50Um9sZXMiIHRhYmxlPSJGTl9ST0xFX0NPTVBPU0lURSIgbGF6eT0iZmFsc2UiIHNvcnQ9Im5hdHVyYWwiPg0KKyAgICAgICAgICAgIDxrZXkgY29sdW1uPSJjaGlsZF9yb2xlX2lkIi8+DQorICAgICAgICAgICAgPG1hbnktdG8tbWFueSBjb2x1bW49InBhcmVudF9yb2xlX2lkIiBjbGFzcz0ib3JnLm9uYXAucG9ydGFsc2RrLmNvcmUuZG9tYWluLlJvbGUiLz4NCisgICAgICAgIDwvc2V0Pg0KKw0KKyAgICA8L2NsYXNzPg0KKyAgICANCisgDQorDQorICAgIDwhLS0gVXNlciBSb2xlIEZ1bmN0aW9uIGNsYXNzIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9IlJvbGVGdW5jdGlvbiIgdGFibGU9IkZOX0ZVTkNUSU9OIj4NCisgICAgICAgIDxpZCAgICAgICAgbmFtZT0iY29kZSIgIGNvbHVtbj0iZnVuY3Rpb25fY2QiICAgLz4NCisgICAgICAgIDxwcm9wZXJ0eSAgbmFtZT0ibmFtZSIgIGNvbHVtbj0iZnVuY3Rpb25fbmFtZSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSAgbmFtZT0idHlwZSIgIGNvbHVtbj0idHlwZSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSAgbmFtZT0iYWN0aW9uIiAgY29sdW1uPSJhY3Rpb24iIC8+DQorICAgIDwvY2xhc3M+DQorICAgIA0KKyAgICA8IS0tIE1lbnUgY2xhc3MgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iTWVudSIgdGFibGU9IkZOX01FTlUiPg0KKyAgICAgICAgPGlkIG5hbWU9ImlkIiBjb2x1bW49Im1lbnVfaWQiPg0KKyAgICAgICAgICA8Z2VuZXJhdG9yIGNsYXNzPSJuYXRpdmUiPg0KKyAgICAgICAgICAgICA8cGFyYW0gbmFtZT0ic2VxdWVuY2UiPnNlcV9mbl9tZW51PC9wYXJhbT4gDQorICAgICAgICAgIDwvZ2VuZXJhdG9yPg0KKyAgICAgICAgPC9pZD4NCisNCisgICAgICAgICA8IS0tIDxwcm9wZXJ0eSBuYW1lPSJtZW51TGV2ZWwiICAgY29sdW1uPSJsZXZlbC0xIi8+IC0tPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgICAgICAgY29sdW1uPSJsYWJlbCIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYXJlbnRJZCIgICAgY29sdW1uPSJwYXJlbnRfaWQiLz4NCisgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWN0aW9uIiAgICAgIGNvbHVtbj0iYWN0aW9uIi8+DQorICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZ1bmN0aW9uQ2QiICBjb2x1bW49ImZ1bmN0aW9uX2NkIi8+DQorICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRPcmRlciIgICBjb2x1bW49InNvcnRfb3JkZXIiLz4NCisgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VydmxldCIgICAgIGNvbHVtbj0ic2VydmxldCIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJxdWVyeVN0cmluZyIgY29sdW1uPSJxdWVyeV9zdHJpbmciLz4NCisgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXh0ZXJuYWxVcmwiIGNvbHVtbj0iZXh0ZXJuYWxfdXJsIi8+DQorICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRhcmdldCIgICAgICBjb2x1bW49InRhcmdldCIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtZW51U2V0Q29kZSIgY29sdW1uPSJtZW51X3NldF9jZCIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhY3RpdmUiICAgICAgY29sdW1uPSJhY3RpdmVfeW4iICAgIHR5cGU9Inllc19ubyIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZXBhcmF0b3IiICAgY29sdW1uPSJzZXBhcmF0b3JfeW4iIHR5cGU9Inllc19ubyIvPg0KKyAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbWFnZVNyYyIgICAgY29sdW1uPSJpbWFnZV9zcmMiIC8+DQorICAgIDwvY2xhc3M+DQorDQorICAgIDxjbGFzcyBuYW1lPSJNZW51RGF0YSIgdGFibGU9IkZOX01FTlUiPg0KKyAgICAgICAgPCEtLSAgPGlkICAgICAgIG5hbWU9ImlkIiAgICAgICAgICBjb2x1bW49Im1lbnVfaWQiLz4gLS0+DQorICAgICAgICA8aWQgbmFtZT0iaWQiIGNvbHVtbj0ibWVudV9pZCI+DQorICAgICAgICAgIDxnZW5lcmF0b3IgY2xhc3M9Im5hdGl2ZSI+DQorICAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJzZXF1ZW5jZSI+c2VxX2ZuX21lbnU8L3BhcmFtPiANCisgICAgICAgICAgPC9nZW5lcmF0b3I+DQorICAgICAgICA8L2lkPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiAgICAgICBjb2x1bW49ImxhYmVsIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWN0aW9uIiAgICAgIGNvbHVtbj0iYWN0aW9uIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iZnVuY3Rpb25DZCIgIGNvbHVtbj0iZnVuY3Rpb25fY2QiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0T3JkZXIiICAgY29sdW1uPSJzb3J0X29yZGVyIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VydmxldCIgICAgIGNvbHVtbj0ic2VydmxldCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InF1ZXJ5U3RyaW5nIiBjb2x1bW49InF1ZXJ5X3N0cmluZyIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4dGVybmFsVXJsIiBjb2x1bW49ImV4dGVybmFsX3VybCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRhcmdldCIgICAgICBjb2x1bW49InRhcmdldCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImFjdGl2ZSIgICAgICBjb2x1bW49ImFjdGl2ZV95biIgICAgdHlwZT0ieWVzX25vIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VwYXJhdG9yIiAgIGNvbHVtbj0ic2VwYXJhdG9yX3luIiB0eXBlPSJ5ZXNfbm8iLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpbWFnZVNyYyIgICAgY29sdW1uPSJpbWFnZV9zcmMiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWVudVNldENvZGUiIGNvbHVtbj0ibWVudV9zZXRfY2QiICAvPg0KKw0KKyAgICAgICAgPG1hbnktdG8tb25lIG5hbWU9InBhcmVudE1lbnUiIGNvbHVtbj0icGFyZW50X2lkIiBjbGFzcz0iTWVudURhdGEiLz4NCisNCisgICAgICAgIDxzZXQgbmFtZT0iY2hpbGRNZW51cyIgbGF6eT0iZmFsc2UiIHNvcnQ9Im5hdHVyYWwiIGludmVyc2U9InRydWUiIHdoZXJlPSJhY3RpdmVfeW4gPSAnWSciPg0KKyAgICAgICAgICAgIDxrZXkgY29sdW1uPSJwYXJlbnRfaWQiLz4NCisgICAgICAgICAgICA8b25lLXRvLW1hbnkgY2xhc3M9Ik1lbnVEYXRhIi8+DQorICAgICAgICA8L3NldD4NCisgICAgPC9jbGFzcz4NCisgICAgDQorICAgIDwhLS0gQnJvYWRjYXN0IE1lc3NhZ2UgY2xhc3MgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iQnJvYWRjYXN0TWVzc2FnZSIgdGFibGU9ImZuX2Jyb2FkY2FzdF9tZXNzYWdlIj4NCisgICAgICAgIDxpZCBuYW1lPSJpZCIgY29sdW1uPSJtZXNzYWdlX2lkIj4NCisgICAgICAgICAgICA8Z2VuZXJhdG9yIGNsYXNzPSJuYXRpdmUiPg0KKyAgICAgICAgICAgICAgPHBhcmFtIG5hbWU9InNlcXVlbmNlIj5zZXFfZm5fYnJvYWRjYXN0X21lc3NhZ2U8L3BhcmFtPg0KKyAgICAgICAgICAgIDwvZ2VuZXJhdG9yPg0KKyAgICAgICAgPC9pZD4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtZXNzYWdlVGV4dCIgY29sdW1uPSJtZXNzYWdlX3RleHQiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsb2NhdGlvbklkIiAgY29sdW1uPSJtZXNzYWdlX2xvY2F0aW9uX2lkIi8+DQorDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3RhcnREYXRlIiAgIGNvbHVtbj0iYnJvYWRjYXN0X3N0YXJ0X2RhdGUiICB0eXBlPSJ0aW1lc3RhbXAiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbmREYXRlIiAgICAgY29sdW1uPSJicm9hZGNhc3RfZW5kX2RhdGUiICAgIHR5cGU9InRpbWVzdGFtcCIvPg0KKw0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRPcmRlciIgICBjb2x1bW49InNvcnRfb3JkZXIiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhY3RpdmUiICAgICAgY29sdW1uPSJhY3RpdmVfeW4iICAgICAgICAgICAgIHR5cGU9Inllc19ubyIvPg0KKw0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpdGVDZCIgICAgICBjb2x1bW49ImJyb2FkY2FzdF9zaXRlX2NkIiAgICAvPg0KKyAgICA8L2NsYXNzPg0KKyAgICANCisgICAgDQorICAgIDwhLS0gU3RhdGUgTG9va3VwIGNsYXNzIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9Ikx1U3RhdGUiIHRhYmxlPSJGTl9MVV9TVEFURSI+DQorICAgICAgICA8aWQgICAgICAgbmFtZT0iYWJiciIgIGNvbHVtbj0ic3RhdGVfY2QiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3RhdGUiICAgICAgICAgICAgICAgICAgIC8+DQorICAgIDwvY2xhc3M+DQorICAgIA0KKyAgICA8IS0tIENvdW50cnkgTG9va3VwIGNsYXNzIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9Ikx1Q291bnRyeSIgdGFibGU9IkZOX0xVX0NPVU5UUlkiPg0KKyAgICAgICAgPGlkICAgICAgIG5hbWU9ImFiYnIiICBjb2x1bW49ImNvdW50cnlfY2QiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY291bnRyeSIgICAgICAgICAgICAgICAgICAgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmdWxsTmFtZSIgY29sdW1uPSJmdWxsX25hbWUiIC8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0id2VicGhvbmVDb3VudHJ5TGFiZWwiIGNvbHVtbj0iZnVsbHdlYnBob25lX2NvdW50cnlfbGFiZWxfbmFtZSIgLz4NCisgICAgPC9jbGFzcz4NCisgICAgDQorICAgIDxjbGFzcyBuYW1lPSJMdVRpbWVab25lIiB0YWJsZT0iRk5fTFVfVElNRVpPTkUiPg0KKyAgICAgICAgPGlkICAgICAgIG5hbWU9InRpbWV6b25lSWQiICBjb2x1bW49InRpbWV6b25lX2lkIiAvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5hbWUiIGNvbHVtbj0idGltZXpvbmVfbmFtZSIgLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2YWx1ZSIgY29sdW1uPSJ0aW1lem9uZV92YWx1ZSIgLz4NCisgICAgPC9jbGFzcz4NCisNCisNCisgICAgPCEtLSBMb29rdXAgKGlkL3ZhbHVlIGJlYW4pIGNsYXNzIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9Ikxvb2t1cCI+DQorICAgICAgICA8Y29tcG9zaXRlLWlkICBuYW1lPSJuYW1lVmFsdWVJZCIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5zdXBwb3J0Lk5hbWVWYWx1ZUlkIj4NCisgICAgICAgICAgPGtleS1wcm9wZXJ0eSBuYW1lPSJ2YWwiLz4NCisgICAgICAgICAgPGtleS1wcm9wZXJ0eSBuYW1lPSJsYWIiIC8+DQorICAgICAgICA8L2NvbXBvc2l0ZS1pZD4NCisgICAgPC9jbGFzcz4NCisNCisJPGNsYXNzIG5hbWU9IlVybHNBY2Nlc3NpYmxlIiB0YWJsZT0iVl9VUkxfQUNDRVNTIj4NCisgICAgICA8Y29tcG9zaXRlLWlkICBuYW1lPSJ1cmxzQWNjZXNzaWJsZUtleSIgY2xhc3M9Im9yZy5vbmFwLnBvcnRhbHNkay5jb3JlLmRvbWFpbi5VcmxzQWNjZXNzaWJsZUtleSI+DQorICAgIAk8a2V5LXByb3BlcnR5CW5hbWU9InVybCIJY29sdW1uPSJ1cmwiLz4NCisgICAgCTxrZXktcHJvcGVydHkgICBuYW1lPSJmdW5jdGlvbkNkIgljb2x1bW49ImZ1bmN0aW9uX2NkIi8+DQorICAgICAgPC9jb21wb3NpdGUtaWQ+DQorICAgIDwvY2xhc3M+DQorDQorDQorCTxxdWVyeSBuYW1lPSJQYXJlbnRJZEZvckxhYmVsTGlzdCI+DQorICAgICAgc2VsZWN0IGRpc3RpbmN0IG1kLnBhcmVudE1lbnUuaWQgZnJvbSBNZW51RGF0YSBhcyBtZCB3aGVyZSBtZC5sYWJlbCA9IDpwYXJhbUxhYmVsIGFuZCBtZC5sYWJlbCBpcyBub3QgbnVsbA0KKyAgICA8L3F1ZXJ5Pg0KKyAgICANCisJPHF1ZXJ5IG5hbWU9IklkRm9yTGFiZWxMaXN0Ij4NCisgICAgICBzZWxlY3QgZGlzdGluY3QgbWQuaWQgZnJvbSBNZW51RGF0YSBhcyBtZCB3aGVyZSBtZC5sYWJlbCA9IDpwYXJhbUxhYmVsDQorICAgIDwvcXVlcnk+ICAgIA0KKyAgICANCisJPHF1ZXJ5IG5hbWU9InBhcmVudExpc3QiPg0KKyAgICAgIHNlbGVjdCBkaXN0aW5jdCBtZC5pZCwgbWQubGFiZWwsIG1kLnBhcmVudE1lbnUuaWQgZnJvbSBNZW51RGF0YSBhcyBtZCB3aGVyZSBtZC5sYWJlbCBpcyBub3QgbnVsbA0KKyAgICA8L3F1ZXJ5Pg0KKyAgICAJDQorCTxxdWVyeSBuYW1lPSJmdW5jdGlvbkNEbGlzdE9sZCI+DQorICAgICAgc2VsZWN0IGRpc3RpbmN0IGZ1bmN0aW9uQ2QgZnJvbSBNZW51RGF0YSANCisgICAgPC9xdWVyeT4NCisNCisJPHF1ZXJ5IG5hbWU9ImZ1bmN0aW9uQ0RsaXN0Ij4NCisgICAgICBzZWxlY3QgZGlzdGluY3QgY29kZSBmcm9tIFJvbGVGdW5jdGlvbiANCisgICAgPC9xdWVyeT4gICANCisgICAgIA0KKwk8cXVlcnkgbmFtZT0ibWVudURhdGEiPg0KKyAgICAgIGZyb20gTWVudURhdGEgd2hlcmUgbWVudVNldENvZGUgPSA6bWVudV9zZXRfY2QgYW5kIHBhcmVudE1lbnUgaXMgbnVsbA0KKyAgICA8L3F1ZXJ5Pg0KKwk8cXVlcnkgbmFtZT0icmVzdHJpY3RlZFVybHMiPg0KKyAgICAgIEZST00gVXJsc0FjY2Vzc2libGUgQSB3aGVyZSB1cHBlcihBLnVybHNBY2Nlc3NpYmxlS2V5LnVybCkgPSB1cHBlcig6Y3VycmVudF91cmwpDQorICAgIDwvcXVlcnk+DQorDQorICAgIDxxdWVyeSBuYW1lPSJnZXRVc2VyTmFtZUJ5SWQiPg0KKyAgICAgIHNlbGVjdCBmaXJzdE5hbWUsIGxhc3ROYW1lIGZyb20gVXNlciB3aGVyZSBpZCA9IDp1c2VyX2lkDQorICAgIDwvcXVlcnk+DQorDQorICAgIDxxdWVyeSBuYW1lPSJnZXRVc2VyRW1haWwiPg0KKyAgICAgIHNlbGVjdCBlbWFpbCBmcm9tIFVzZXIgd2hlcmUgaWQgPSA6dXNlcl9pZA0KKyAgICA8L3F1ZXJ5Pg0KKw0KKyAgICA8cXVlcnkgbmFtZT0iZ2V0QWxsVXNlcnMiPg0KKyAgICAgIHNlbGVjdCBpZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSBmcm9tIFVzZXIgd2hlcmUgYWN0aXZlID0gdHJ1ZSBvcmRlciBieSBsYXN0TmFtZSwgZmlyc3ROYW1lDQorICAgIDwvcXVlcnk+DQorCQ0KKyAgICA8cXVlcnkgbmFtZT0iZ2V0Um9sZU5hbWVCeUlkIj4NCisgICAgICBzZWxlY3QgbmFtZSBmcm9tIFJvbGUgd2hlcmUgaWQgPSA6cm9sZV9pZA0KKyAgICA8L3F1ZXJ5Pg0KKw0KKyAgICA8cXVlcnkgbmFtZT0iZ2V0QWxsUm9sZXMiPg0KKyAgICAgIHNlbGVjdCBpZCwgbmFtZSBmcm9tIFJvbGUgb3JkZXIgYnkgbmFtZQ0KKyAgICA8L3F1ZXJ5PgkNCisgICAgICANCisgICAgIDxxdWVyeSBuYW1lPSJnZXRVc2VyQnlQcm9maWxlSWQiPg0KKyAgICAgIHNlbGVjdCBvcmdVc2VySWQgZnJvbSBVc2VyIHdoZXJlIGlkID0gOnVzZXJfaWQNCisgICAgIDwvcXVlcnk+DQorICAgIA0KKyAgICAgPHF1ZXJ5IG5hbWU9ImdldFVzZXJJZEJ5b3JnVXNlcklkIj4NCisgICAgICBzZWxlY3QgaWQgZnJvbSBVc2VyIHdoZXJlIG9yZ1VzZXJJZCA9IDpvcmdVc2VySWQNCisgICAgIDwvcXVlcnk+DQorDQorICAgICA8cXVlcnkgbmFtZT0iZ2V0VXNlckJ5T3JnVXNlcklkIj4NCisJCUZST00gVXNlciBXSEVSRSBvcmdVc2VySWQgPSA6b3JnX3VzZXJfaWQNCisgICAgIDwvcXVlcnk+DQorDQorICAgICA8cXVlcnkgbmFtZT0iZ2V0VXNlckJ5TG9naW5JZCI+DQorCQlGUk9NIFVzZXIgV0hFUkUgbG9naW5JZCA9IDpsb2dpbl9pZA0KKyAgICAgPC9xdWVyeT4NCisNCisgICAgIDxxdWVyeSBuYW1lPSJnZXRVc2VyQnlMb2dpbklkTG9naW5Qd2QiPg0KKwkJRlJPTSBVc2VyIFdIRVJFIGxvZ2luSWQgPSA6bG9naW5faWQgYW5kIGxvZ2luUHdkID0gOmxvZ2luX3B3ZAkJDQorICAgICA8L3F1ZXJ5Pg0KKw0KKzwvaGliZXJuYXRlLW1hcHBpbmc+DQpkaWZmIC0tZ2l0IGEvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2Z1c2lvbi9vcm0vUk5vdGVCb29rSW50ZWdyYXRpb24uaGJtLnhtbCBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vb3JtL1JOb3RlQm9va0ludGVncmF0aW9uLmhibS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3MWExMwotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9mdXNpb24vb3JtL1JOb3RlQm9va0ludGVncmF0aW9uLmhibS54bWwKQEAgLTAsMCArMSw2MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQorPCEtLQ0KKyAgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgT05BUCBQb3J0YWwgU0RLDQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICBDb3B5cmlnaHQgwqkgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgDQorICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHNvZnR3YXJlIGNvbnRhaW5lZCBoZXJlaW4gaXMgbGljZW5zZWQNCisgIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSDigJxMaWNlbnNl4oCdKTsNCisgIHlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgDQorICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgDQorICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIGRvY3VtZW50YXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyAgdW5kZXIgdGhlIENyZWF0aXZlIENvbW1vbnMgTGljZW5zZSwgQXR0cmlidXRpb24gNC4wIEludGwuICh0aGUg4oCcTGljZW5zZeKAnSk7DQorICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBkb2N1bWVudGF0aW9uIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgDQorICAgICAgICAgICAgICBodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wLw0KKyANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgZG9jdW1lbnRhdGlvbg0KKyAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIA0KKyAgPT09PT09PT09PT09TElDRU5TRV9FTkQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyANCisgIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICAtLT4NCisNCis8IURPQ1RZUEUgaGliZXJuYXRlLW1hcHBpbmcgUFVCTElDDQorICAgICAgICAiLS8vSGliZXJuYXRlL0hpYmVybmF0ZSBNYXBwaW5nIERURCAzLjAvL0VOIg0KKyAgICAgICAgImh0dHA6Ly9oaWJlcm5hdGUuc291cmNlZm9yZ2UubmV0L2hpYmVybmF0ZS1tYXBwaW5nLTMuMC5kdGQiPg0KKw0KKzxoaWJlcm5hdGUtbWFwcGluZyBwYWNrYWdlPSJvcmcub25hcC5wb3J0YWxzZGsucm5vdGVib29raW50ZWdyYXRpb24uZG9tYWluIj4NCisNCisgICAgDQorCSA8IS0tIFJOb3RlYm9va0ludGVncmF0aW9uIG1hcHBpbmcgZGV0YWlscyAtLT4NCisgICAgPGNsYXNzIG5hbWU9IlJOb3RlQm9va0NyZWRlbnRpYWxzIiB0YWJsZT0icmNsb3VkaW52b2NhdGlvbiI+DQorICAgICAgICA8aWQgbmFtZT0idG9rZW4iIGNvbHVtbj0iSUQiPiANCisgICAgICAgICAgDQorICAgICAgICA8L2lkPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNyZWF0ZWREYXRlIiAgICAgICAgIGNvbHVtbj0iY3JlYXRlZCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InVzZXJTdHJpbmciICAgICBjb2x1bW49InVzZXJJbmZvIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibm90ZWJvb2tJRCIgICAgIGNvbHVtbj0ibm90ZWJvb2tJRCIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InBhcmFtZXRlcnNTdHJpbmciIGNvbHVtbj0icGFyYW1ldGVycyIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRva2VuUmVhZERhdGUiIGNvbHVtbj0idG9rZW5yZWFkZGF0ZSIvPg0KKyAgICAgICAgDQorCTwvY2xhc3M+DQorCQ0KKwkNCisJDQorPC9oaWJlcm5hdGUtbWFwcGluZz4NCmRpZmYgLS1naXQgYS9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvZnVzaW9uL29ybS9Xb3JrZmxvdy5oYm0ueG1sIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2Z1c2lvbi9vcm0vV29ya2Zsb3cuaGJtLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGEyZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2Z1c2lvbi9vcm0vV29ya2Zsb3cuaGJtLnhtbApAQCAtMCwwICsxLDY2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCis8IS0tDQorICA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICBPTkFQIFBvcnRhbCBTREsNCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgIENvcHlyaWdodCDCqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgc29mdHdhcmUgY29udGFpbmVkIGhlcmVpbiBpcyBsaWNlbnNlZA0KKyAgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIOKAnExpY2Vuc2XigJ0pOw0KKyAgeW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgZG9jdW1lbnRhdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGxpY2Vuc2VkDQorICB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlLCBBdHRyaWJ1dGlvbiA0LjAgSW50bC4gKHRoZSDigJxMaWNlbnNl4oCdKTsNCisgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGRvY3VtZW50YXRpb24gZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvDQorIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBkb2N1bWVudGF0aW9uDQorICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgDQorICA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIA0KKyAgDQorICAtLT4NCisNCis8IURPQ1RZUEUgaGliZXJuYXRlLW1hcHBpbmcgUFVCTElDDQorICAgICAgICAiLS8vSGliZXJuYXRlL0hpYmVybmF0ZSBNYXBwaW5nIERURCAzLjAvL0VOIg0KKyAgICAgICAgImh0dHA6Ly9oaWJlcm5hdGUuc291cmNlZm9yZ2UubmV0L2hpYmVybmF0ZS1tYXBwaW5nLTMuMC5kdGQiPg0KKw0KKzxoaWJlcm5hdGUtbWFwcGluZyBwYWNrYWdlPSJvcmcub25hcC5wb3J0YWxzZGsud29ya2Zsb3cuZG9tYWluIj4NCisNCisgICAgDQorCSA8IS0tIFdvcmtmbG93U2NoZWR1bGUgbWFwcGluZyBkZXRhaWxzIC0tPg0KKyAgICA8Y2xhc3MgbmFtZT0iV29ya2Zsb3dTY2hlZHVsZSIgdGFibGU9ImZuX3NjaGVkdWxlX3dvcmtmbG93cyI+DQorICAgICAgICA8aWQgbmFtZT0iaWQiIGNvbHVtbj0iaWRfc2NoZWR1bGVfd29ya2Zsb3dzIj4gDQorICAgICAgICAgIDxnZW5lcmF0b3IgY2xhc3M9Im5hdGl2ZSI+DQorICAgICAgICAgIDwvZ2VuZXJhdG9yPg0KKyAgICAgICAgPC9pZD4NCisNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZXJ2ZXJVcmwiICAgICAgICAgY29sdW1uPSJ3b3JrZmxvd19zZXJ2ZXJfdXJsIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0id29ya2Zsb3dLZXkiICAgICBjb2x1bW49IndvcmtmbG93X2tleSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImFyZ3VtZW50cyIgICAgIGNvbHVtbj0id29ya2Zsb3dfYXJndW1lbnRzIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY3JvbkRldGFpbHMiIGNvbHVtbj0ic3RhcnREYXRlVGltZUNyb24iLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzdGFydERhdGVUaW1lIiBjb2x1bW49InN0YXJ0X2RhdGVfdGltZSIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImVuZERhdGVUaW1lIiBjb2x1bW49ImVuZERhdGVUaW1lIi8+DQorICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjdXJyZW5jZSIgY29sdW1uPSJyZWN1cnJlbmNlIi8+DQorICAgICAgICANCisJPC9jbGFzcz4NCisJDQorCQ0KKwkNCis8L2hpYmVybmF0ZS1tYXBwaW5nPg0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9pbmRleC5qc3AgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvaW5kZXguanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMjc0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9vbmFwLWVuYWJsZXItaW5mcmEvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvaW5kZXguanNwCkBAIC0wLDAgKzEsNDIgQEAKKzwlLS0NCisgID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgIE9OQVAgUG9ydGFsIFNESw0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgQ29weXJpZ2h0IKkgMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgDQorICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHNvZnR3YXJlIGNvbnRhaW5lZCBoZXJlaW4gaXMgbGljZW5zZWQNCisgIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSCTTGljZW5zZZQpOw0KKyAgeW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyANCisgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyANCisgIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgZG9jdW1lbnRhdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGxpY2Vuc2VkDQorICB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlLCBBdHRyaWJ1dGlvbiA0LjAgSW50bC4gKHRoZSCTTGljZW5zZZQpOw0KKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZG9jdW1lbnRhdGlvbiBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIA0KKyAgICAgICAgICAgICAgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8NCisgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIGRvY3VtZW50YXRpb24NCisgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyANCisgID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgDQorICBFQ09NUCBpcyBhIHRyYWRlbWFyayBhbmQgc2VydmljZSBtYXJrIG9mIEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAgLS0lPg0KKzwlQCB0YWdsaWIgcHJlZml4PSJjIiB1cmk9Imh0dHA6Ly9qYXZhLnN1bi5jb20vanNwL2pzdGwvY29yZSIgJT4NCisNCis8JS0tIFJlZGlyZWN0ZWQgYmVjYXVzZSB3ZSBjYW4ndCBzZXQgdGhlIHdlbGNvbWUgcGFnZSB0byBhIHZpcnR1YWwgVVJMLiAtLSU+DQorPCUtLSBGb3J3YXJkIHRvIHRoZSBpbnRlbmRlZCBzdGFydCBwYWdlIHRvIHJlZHVjZSBmcnVzdHJhdGlvbiBmb3IgbmV3IHVzZXJzLiAtLSU+IA0KKzxjOnJlZGlyZWN0IHVybD0iL2xvZ2luLmh0bSI+PC9jOnJlZGlyZWN0Pg0KZGlmZiAtLWdpdCBhL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sIGIvb25hcC1lbmFibGVyLWluZnJhL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkZTFmMwotLS0gL2Rldi9udWxsCisrKyBiL29uYXAtZW5hYmxlci1pbmZyYS9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sCkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLS8qLQ0KKyAgICAgICAgKiA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgICAgICAgKiBPU0FNIENvcmUNCisgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgICAgICogQ29weXJpZ2h0IChDKSAyMDE4IEFUJlQNCisgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICAgICAgICAqDQorICAgICAgICAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgICAgICAqDQorICAgICAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICAgICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICAgICAgICAqID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgICAgICAqLy0tPg0KKzx3ZWItYXBwIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8veG1sbnMuamNwLm9yZy94bWwvbnMvamF2YWVlIiANCisgICAgICAgICB4bWxuczp3ZWI9Imh0dHA6Ly94bWxucy5qY3Aub3JnL3htbC9ucy9qYXZhZWUvd2ViLWFwcF8zXzEueHNkIg0KKyAgICAgICAgIHZlcnNpb249IjMuMSIgeG1sbnM9Imh0dHA6Ly94bWxucy5qY3Aub3JnL3htbC9ucy9qYXZhZWUiPg0KKw0KKwk8ZGlzcGxheS1uYW1lPmVjb21wLXNkay1hcHAtb3M8L2Rpc3BsYXktbmFtZT4NCisNCisJPCEtLSBUaGUgYXBwIGNhbiBmdW5jdGlvbiBvbiBhIEhBIGNsdXN0ZXIgLS0+DQorCTxkaXN0cmlidXRhYmxlIC8+DQorDQorCTxzZXNzaW9uLWNvbmZpZz4NCisJCTxzZXNzaW9uLXRpbWVvdXQ+MzA8L3Nlc3Npb24tdGltZW91dD4NCisJCTx0cmFja2luZy1tb2RlPkNPT0tJRTwvdHJhY2tpbmctbW9kZT4NCisJPC9zZXNzaW9uLWNvbmZpZz4NCisJPGZpbHRlcj4NCisgICAgPGZpbHRlci1uYW1lPlNlY3VyaXR5WHNzRmlsdGVyPC9maWx0ZXItbmFtZT4NCisgICAgPGZpbHRlci1jbGFzcz5vcmcub25hcC5wb3J0YWxhcHAuZmlsdGVyLlNlY3VyaXR5WHNzRmlsdGVyPC9maWx0ZXItY2xhc3M+DQorICAgPC9maWx0ZXI+IA0KKyAgICA8ZmlsdGVyLW1hcHBpbmc+DQorICAgIDxmaWx0ZXItbmFtZT5TZWN1cml0eVhzc0ZpbHRlcjwvZmlsdGVyLW5hbWU+DQorICAgIDx1cmwtcGF0dGVybj4vKjwvdXJsLXBhdHRlcm4+DQorICA8L2ZpbHRlci1tYXBwaW5nPg0KKw0KKzwvd2ViLWFwcD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==