//To decrypt
String coverPageDetail = 'eyJTUEFSVEFETVNfX1BlcmlvZGljX1Jldmlld19Ob3RpZmljYXRpb25fZGF5c19fYyI6IjAiLCJMZWdhY3lfRG9jdW1lbnRfTnVtYmVyX19jIjoiQk1SQS0wMDYiLCJTUEFSVEFETVNfX1BlcmlvZGljX1Jldmlld19DeWNsZV9tb250aHNfX2MiOiIwIiwiU1BBUlRBRE1TX19Eb2N1bWVudF9Xb3JrZmxvd19fYyI6IldGX1IxX0ExIiwiU1BBUlRBRE1TX19SZXF1aXJlc19UcmFpbmluZ19fYyI6Ik5vIiwiRG9jdW1lbnRfU3VidHlwZV9fYyI6IkJhdGNoIE1hbnVmYWN0dXJpbmcgUmVjb3JkIEFQSSAoQk1SQSkiLCJOYW1lIjoiQk1SQS0wMDZCTVIgb2YgRmlsZ3Jhc3RpbVNCUywgQmF0Y2ggc2l6ZTogMjkuMjQtMzUuMTBnIG9mQVBJIHN0YXJ0aW5nIG1hdGVyaWFsIiwiU1BBUlRBRE1TX19Eb2N1bWVudF9BdXRvX0VmZmVjdGl2ZV9EYXlzX19jIjoiMCIsIlNQQVJUQURNU19fRG9jdW1lbnRfU3RhdHVzX19jIjoiRUZGRUNUSVZFIiwiU1BBUlRBRE1TX19Eb2N1bWVudF9SZXZpZXdlcnNfX3IiOnsidG90YWxTaXplIjoyLCJyZWNvcmRzIjpbeyJTUEFSVEFETVNfX0dyb3VwX01lbWJlcnNoaXBJZF9fYyI6IjU0NjdmN2RkLTMzOWEtNGVjNy1hZmVmLTgyZjNjMzhjZjYyMl9SRVZJRVdFUl9hNGtGODAwMDAwMEFVRWZJQU9fMSIsIlNQQVJUQURNU19fUmV2aWV3X0N5Y2xlX19jIjoiV0ZfUjFfQTFfMSIsIlNQQVJUQURNU19fUmVsYXRlZF9Db3Jwb3JhdGVfRG9jdW1lbnRfX2MiOiJhNHNGODAwMDAwMExDVkZJQTQiLCJTUEFSVEFETVNfX1Jldmlld19DeWNsZV9MYWJlbF9fYyI6IlJldmlldyAxIiwiYXR0cmlidXRlcyI6eyJ0eXBlIjoiU1BBUlRBRE1TX19Eb2N1bWVudF9SZXZpZXdlcl9fYyIsInVybCI6Ii9zZXJ2aWNlcy9kYXRhL3Y1OC4wL3NvYmplY3RzL1NQQVJUQURNU19fRG9jdW1lbnRfUmV2aWV3ZXJfX2MvYTU5RjgwMDAwMDAyMjJMSUFRIn0sIklkIjoiYTU5RjgwMDAwMDAyMjJMSUFRIiwiU1BBUlRBRE1TX19SZWxhdGVkX0JveF9Vc2VyX19jIjoiYTRrRjgwMDAwMDBBVUVmSUFPIiwiU1BBUlRBRE1TX19SZXZpZXdfQ29tcGxldGVkX0RhdGVfX2MiOiIyMDI0LTEwLTAxVDA4OjAwOjAwLjAwWiIsIlNQQVJUQURNU19fUmV2aWV3ZXJOYW1lX19jIjoiVmFyaXQgUGhhZHVuZ3Bob2wiLCJTUEFSVEFETVNfX1Jldmlld19TdWJtaXNzaW9uX0RhdGVfX2MiOiIyMDI0LTA5LTMwVDA4OjAwOjAwIiwiU1BBUlRBRE1TX19SZWxhdGVkX0JveF9Vc2VyX19yIjp7ImF0dHJpYnV0ZXMiOnsidHlwZSI6IlNQQVJUQURNU19fQm94X1VzZXJzX19jIn0sIklkIjoiYTRrRjgwMDAwMDBBVUVmSUFPIiwiU1BBUlRBRE1TX19SZWxhdGVkX1NhbGVzZm9yY2VfVXNlcl9fciI6eyJmaXJzdE5hbWUiOiJWYXJpdCIsImxhc3ROYW1lIjoiUGhhZHVuZ3Bob2wiLCJhdHRyaWJ1dGVzIjp7InR5cGUiOiJVc2VyIn0sImVtYWlsIjoidmFyaXRwQHNpYW1iaW9zY2llbmNlLmNvbSJ9fX0seyJTUEFSVEFETVNfX0dyb3VwX01lbWJlcnNoaXBJZF9fYyI6IjU0NjdmN2RkLTMzOWEtNGVjNy1hZmVmLTgyZjNjMzhjZjYyMl9SRVZJRVdFUl9hNGtGODAwMDAwMEFVRGNJQU9fMSIsIlNQQVJUQURNU19fUmV2aWV3X0N5Y2xlX19jIjoiV0ZfUjFfQTFfMSIsIlNQQVJUQURNU19fUmVsYXRlZF9Db3Jwb3JhdGVfRG9jdW1lbnRfX2MiOiJhNHNGODAwMDAwMExDVkZJQTQiLCJTUEFSVEFETVNfX1Jldmlld19DeWNsZV9MYWJlbF9fYyI6IlJldmlldyAxIiwiYXR0cmlidXRlcyI6eyJ0eXBlIjoiU1BBUlRBRE1TX19Eb2N1bWVudF9SZXZpZXdlcl9fYyIsInVybCI6Ii9zZXJ2aWNlcy9kYXRhL3Y1OC4wL3NvYmplY3RzL1NQQVJUQURNU19fRG9jdW1lbnRfUmV2aWV3ZXJfX2MvYTU5RjgwMDAwMDAyMjNjSUFBIn0sIklkIjoiYTU5RjgwMDAwMDAyMjNjSUFBIiwiU1BBUlRBRE1TX19SZWxhdGVkX0JveF9Vc2VyX19jIjoiYTRrRjgwMDAwMDBBVURjSUFPIiwiU1BBUlRBRE1TX19SZXZpZXdfQ29tcGxldGVkX0RhdGVfX2MiOiIyMDI0LTEwLTAxVDA4OjAwOjAwLjAwWiIsIlNQQVJUQURNU19fUmV2aWV3ZXJOYW1lX19jIjoiQ2hhbGVybWNoYWkgU3V0YW0iLCJTUEFSVEFETVNfX1Jldmlld19TdWJtaXNzaW9uX0RhdGVfX2MiOiIyMDI0LTA5LTMwVDA4OjAwOjAwIiwiU1BBUlRBRE1TX19SZWxhdGVkX0JveF9Vc2VyX19yIjp7ImF0dHJpYnV0ZXMiOnsidHlwZSI6IlNQQVJUQURNU19fQm94X1VzZXJzX19jIn0sIklkIjoiYTRrRjgwMDAwMDBBVURjSUFPIiwiU1BBUlRBRE1TX19SZWxhdGVkX1NhbGVzZm9yY2VfVXNlcl9fciI6eyJmaXJzdE5hbWUiOiJDaGFsZXJtY2hhaSIsImxhc3ROYW1lIjoiU3V0YW0iLCJhdHRyaWJ1dGVzIjp7InR5cGUiOiJVc2VyIn0sImVtYWlsIjoiY2hhbGVybWNoYWlzQHNpYW1iaW9zY2llbmNlLmNvbSJ9fX1dLCJkb25lIjp0cnVlfSwiU1BBUlRBRE1TX19Eb2N1bWVudF9WZXJzaW9uX0Zvcm1hdF9fYyI6Ik51bWVyaWMgTWFqb3IgT25seSIsIk93bmVySWQiOiIwMDVGODAwMDAwNmJmQjFJQUkiLCJTUEFSVEFETVNfX0VmZmVjdGl2ZV9EVF9fYyI6IjIwMjQtMTAtMDFUMDg6MDA6MDAuMDBaIiwiU1BBUlRBRE1TX19Eb2N1bWVudF9Vc2Vyc19fciI6eyJ0b3RhbFNpemUiOjEsInJlY29yZHMiOlt7IlNQQVJUQURNU19fQXBwcm92YWxfQ3ljbGVfX2MiOiJXRl9SMV9BMV8xIiwiU1BBUlRBRE1TX19BcHByb3ZhbF9Db21wbGV0ZWRfRGF0ZV9fYyI6IjIwMjQtMTAtMDFUMDg6MDA6MDAuMDBaIiwiU1BBUlRBRE1TX19Hcm91cF9NZW1iZXJzaGlwSWRfX2MiOiI1NDY3ZjdkZC0zMzlhLTRlYzctYWZlZi04MmYzYzM4Y2Y2MjJfQVBQUk9WRVJfYTRrRjgwMDAwMDBBVURLSUE0XzEiLCJTUEFSVEFETVNfX1JlbGF0ZWRfQ29ycG9yYXRlX0RvY3VtZW50X19jIjoiYTRzRjgwMDAwMDBMQ1ZGSUE0IiwiU1BBUlRBRE1TX19BcHByb3Zlck5hbWVfX2MiOiJSYWt0YXBhIFBhdGhvbXBvbmdwYWlyb2oiLCJTUEFSVEFETVNfX0FwcHJvdmFsX1N1Ym1pdHRlZF9EYXRlX19jIjoiMjAyNC0wOS0zMFQwODowMDowMCIsImF0dHJpYnV0ZXMiOnsidHlwZSI6IlNQQVJUQURNU19fRG9jdW1lbnRfQXBwcm92ZXJzX19jIiwidXJsIjoiL3NlcnZpY2VzL2RhdGEvdjU4LjAvc29iamVjdHMvU1BBUlRBRE1TX19Eb2N1bWVudF9BcHByb3ZlcnNfX2MvYTU3RjgwMDAwMDA3RGF0SUFFIn0sIklkIjoiYTU3RjgwMDAwMDA3RGF0SUFFIiwiU1BBUlRBRE1TX19Jc19GaW5hbF9BcHByb3Zlcl9fYyI6dHJ1ZSwiU1BBUlRBRE1TX19BcHByb3ZhbF9DeWNsZV9MYWJlbF9fYyI6IlBlbmRpbmcgQXBwcm92YWwgMSIsIlNQQVJUQURNU19fUmVsYXRlZF9Cb3hfVXNlcl9fYyI6ImE0a0Y4MDAwMDAwQVVES0lBNCIsIlNQQVJUQURNU19fUmVsYXRlZF9Cb3hfVXNlcl9fciI6eyJhdHRyaWJ1dGVzIjp7InR5cGUiOiJTUEFSVEFETVNfX0JveF9Vc2Vyc19fYyJ9LCJJZCI6ImE0a0Y4MDAwMDAwQVVES0lBNCIsIlNQQVJUQURNU19fUmVsYXRlZF9TYWxlc2ZvcmNlX1VzZXJfX3IiOnsiZmlyc3ROYW1lIjoiUmFrdGFwYSIsImxhc3ROYW1lIjoiUGF0aG9tcG9uZ3BhaXJvaiIsImF0dHJpYnV0ZXMiOnsidHlwZSI6IlVzZXIifSwiZW1haWwiOiJyYWt0YXBhcEBzaWFtYmlvc2NpZW5jZS5jb20ifX19XSwiZG9uZSI6dHJ1ZX0sImF0dHJpYnV0ZXMiOnsidHlwZSI6IlNQQVJUQURNU19fQ29ycG9yYXRlX0RvY3VtZW50X19jIiwidXJsIjoiL3NlcnZpY2VzL2RhdGEvdjU4LjAvc29iamVjdHMvU1BBUlRBRE1TX19Db3Jwb3JhdGVfRG9jdW1lbnRfX2MvYTRzRjgwMDAwMDBMQ1ZGSUE0In0sIlNQQVJUQURNU19fRG9jdW1lbnRfVHlwZV9fYyI6Ik1hc3RlciBGb3JtdWxhIGFuZCBCYXRjaCBSZWNvcmQiLCJTUEFSVEFETVNfX1RlbXBsYXRlX1R5cGVfX2MiOiIiLCJTUEFSVEFETVNfX0RvY3VtZW50X0RlcGFydG1lbnRfX2MiOiJDbGluaWNhbCAoQ0QpIiwiU1BBUlRBRE1TX19MYXRlc3RfZmlsZV9uYW1lX19jIjoiTUItQ0QtQk1SQS0wMDAwMDQoQk1SQS0wMDYpLmRvY3guZG9jeCIsIlNQQVJUQURNU19fRG9jdW1lbnRfTnVtYmVyX01ham9yX19jIjoiMSIsIlNQQVJUQURNU19fRG9jdW1lbnRfUmV2aXNpb25fQXRfQXBwcm92YWxfX2MiOjEsIlNQQVJUQURNU19fSXNfRmlsZV9VcGxvYWRlZF9fYyI6dHJ1ZSwiU1BBUlRBRE1TX19WZXJzaW9uX1N0YXR1c19fYyI6IkVmZmVjdGl2ZSIsIlNQQVJUQURNU19fUmV0ZW50aW9uX1BlcmlvZF9ZZWFyc19fYyI6IjEwIn0=';
final Boolean isEncrypted = isBase64(coverPageDetail);
if (isEncrypted) {
coverPageDetail = decrypt(coverPageDetail);
}
system.debug('coverPageDetail@@'+coverPageDetail);
String decrypt(String encodedString) {
return EncodingUtil.base64Decode(encodedString).toString();
}
String encrypt(String plainString) {
return EncodingUtil.base64Encode(Blob.valueOf(plainString));
}
Boolean isBase64(String inputString) {
String regexString = '^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$';
return Pattern.matches(regexString, inputString);
}
Ly9UbyBkZWNyeXB0IApTdHJpbmcgY292ZXJQYWdlRGV0YWlsID0gJ2V5SlRVRUZTVkVGRVRWTmZYMUJsY21sdlpHbGpYMUpsZG1sbGQxOU9iM1JwWm1sallYUnBiMjVmWkdGNWMxOWZZeUk2SWpBaUxDSk1aV2RoWTNsZlJHOWpkVzFsYm5SZlRuVnRZbVZ5WDE5aklqb2lRazFTUVMwd01EWWlMQ0pUVUVGU1ZFRkVUVk5mWDFCbGNtbHZaR2xqWDFKbGRtbGxkMTlEZVdOc1pWOXRiMjUwYUhOZlgyTWlPaUl3SWl3aVUxQkJVbFJCUkUxVFgxOUViMk4xYldWdWRGOVhiM0pyWm14dmQxOWZZeUk2SWxkR1gxSXhYMEV4SWl3aVUxQkJVbFJCUkUxVFgxOVNaWEYxYVhKbGMxOVVjbUZwYm1sdVoxOWZZeUk2SWs1dklpd2lSRzlqZFcxbGJuUmZVM1ZpZEhsd1pWOWZZeUk2SWtKaGRHTm9JRTFoYm5WbVlXTjBkWEpwYm1jZ1VtVmpiM0prSUVGUVNTQW9RazFTUVNraUxDSk9ZVzFsSWpvaVFrMVNRUzB3TURaQ1RWSWdiMllnUm1sc1ozSmhjM1JwYlZOQ1V5d2dRbUYwWTJnZ2MybDZaVG9nTWprdU1qUXRNelV1TVRCbklHOW1RVkJKSUhOMFlYSjBhVzVuSUcxaGRHVnlhV0ZzSWl3aVUxQkJVbFJCUkUxVFgxOUViMk4xYldWdWRGOUJkWFJ2WDBWbVptVmpkR2wyWlY5RVlYbHpYMTlqSWpvaU1DSXNJbE5RUVZKVVFVUk5VMTlmUkc5amRXMWxiblJmVTNSaGRIVnpYMTlqSWpvaVJVWkdSVU5VU1ZaRklpd2lVMUJCVWxSQlJFMVRYMTlFYjJOMWJXVnVkRjlTWlhacFpYZGxjbk5mWDNJaU9uc2lkRzkwWVd4VGFYcGxJam95TENKeVpXTnZjbVJ6SWpwYmV5SlRVRUZTVkVGRVRWTmZYMGR5YjNWd1gwMWxiV0psY25Ob2FYQkpaRjlmWXlJNklqVTBOamRtTjJSa0xUTXpPV0V0TkdWak55MWhabVZtTFRneVpqTmpNemhqWmpZeU1sOVNSVlpKUlZkRlVsOWhOR3RHT0RBd01EQXdNRUZWUldaSlFVOWZNU0lzSWxOUVFWSlVRVVJOVTE5ZlVtVjJhV1YzWDBONVkyeGxYMTlqSWpvaVYwWmZVakZmUVRGZk1TSXNJbE5RUVZKVVFVUk5VMTlmVW1Wc1lYUmxaRjlEYjNKd2IzSmhkR1ZmUkc5amRXMWxiblJmWDJNaU9pSmhOSE5HT0RBd01EQXdNRXhEVmtaSlFUUWlMQ0pUVUVGU1ZFRkVUVk5mWDFKbGRtbGxkMTlEZVdOc1pWOU1ZV0psYkY5Zll5STZJbEpsZG1sbGR5QXhJaXdpWVhSMGNtbGlkWFJsY3lJNmV5SjBlWEJsSWpvaVUxQkJVbFJCUkUxVFgxOUViMk4xYldWdWRGOVNaWFpwWlhkbGNsOWZZeUlzSW5WeWJDSTZJaTl6WlhKMmFXTmxjeTlrWVhSaEwzWTFPQzR3TDNOdlltcGxZM1J6TDFOUVFWSlVRVVJOVTE5ZlJHOWpkVzFsYm5SZlVtVjJhV1YzWlhKZlgyTXZZVFU1Umpnd01EQXdNREF5TWpKTVNVRlJJbjBzSWtsa0lqb2lZVFU1Umpnd01EQXdNREF5TWpKTVNVRlJJaXdpVTFCQlVsUkJSRTFUWDE5U1pXeGhkR1ZrWDBKdmVGOVZjMlZ5WDE5aklqb2lZVFJyUmpnd01EQXdNREJCVlVWbVNVRlBJaXdpVTFCQlVsUkJSRTFUWDE5U1pYWnBaWGRmUTI5dGNHeGxkR1ZrWDBSaGRHVmZYMk1pT2lJeU1ESTBMVEV3TFRBeFZEQTRPakF3T2pBd0xqQXdXaUlzSWxOUVFWSlVRVVJOVTE5ZlVtVjJhV1YzWlhKT1lXMWxYMTlqSWpvaVZtRnlhWFFnVUdoaFpIVnVaM0JvYjJ3aUxDSlRVRUZTVkVGRVRWTmZYMUpsZG1sbGQxOVRkV0p0YVhOemFXOXVYMFJoZEdWZlgyTWlPaUl5TURJMExUQTVMVE13VkRBNE9qQXdPakF3SWl3aVUxQkJVbFJCUkUxVFgxOVNaV3hoZEdWa1gwSnZlRjlWYzJWeVgxOXlJanA3SW1GMGRISnBZblYwWlhNaU9uc2lkSGx3WlNJNklsTlFRVkpVUVVSTlUxOWZRbTk0WDFWelpYSnpYMTlqSW4wc0lrbGtJam9pWVRSclJqZ3dNREF3TURCQlZVVm1TVUZQSWl3aVUxQkJVbFJCUkUxVFgxOVNaV3hoZEdWa1gxTmhiR1Z6Wm05eVkyVmZWWE5sY2w5ZmNpSTZleUptYVhKemRFNWhiV1VpT2lKV1lYSnBkQ0lzSW14aGMzUk9ZVzFsSWpvaVVHaGhaSFZ1WjNCb2Iyd2lMQ0poZEhSeWFXSjFkR1Z6SWpwN0luUjVjR1VpT2lKVmMyVnlJbjBzSW1WdFlXbHNJam9pZG1GeWFYUndRSE5wWVcxaWFXOXpZMmxsYm1ObExtTnZiU0o5Zlgwc2V5SlRVRUZTVkVGRVRWTmZYMGR5YjNWd1gwMWxiV0psY25Ob2FYQkpaRjlmWXlJNklqVTBOamRtTjJSa0xUTXpPV0V0TkdWak55MWhabVZtTFRneVpqTmpNemhqWmpZeU1sOVNSVlpKUlZkRlVsOWhOR3RHT0RBd01EQXdNRUZWUkdOSlFVOWZNU0lzSWxOUVFWSlVRVVJOVTE5ZlVtVjJhV1YzWDBONVkyeGxYMTlqSWpvaVYwWmZVakZmUVRGZk1TSXNJbE5RUVZKVVFVUk5VMTlmVW1Wc1lYUmxaRjlEYjNKd2IzSmhkR1ZmUkc5amRXMWxiblJmWDJNaU9pSmhOSE5HT0RBd01EQXdNRXhEVmtaSlFUUWlMQ0pUVUVGU1ZFRkVUVk5mWDFKbGRtbGxkMTlEZVdOc1pWOU1ZV0psYkY5Zll5STZJbEpsZG1sbGR5QXhJaXdpWVhSMGNtbGlkWFJsY3lJNmV5SjBlWEJsSWpvaVUxQkJVbFJCUkUxVFgxOUViMk4xYldWdWRGOVNaWFpwWlhkbGNsOWZZeUlzSW5WeWJDSTZJaTl6WlhKMmFXTmxjeTlrWVhSaEwzWTFPQzR3TDNOdlltcGxZM1J6TDFOUVFWSlVRVVJOVTE5ZlJHOWpkVzFsYm5SZlVtVjJhV1YzWlhKZlgyTXZZVFU1Umpnd01EQXdNREF5TWpOalNVRkJJbjBzSWtsa0lqb2lZVFU1Umpnd01EQXdNREF5TWpOalNVRkJJaXdpVTFCQlVsUkJSRTFUWDE5U1pXeGhkR1ZrWDBKdmVGOVZjMlZ5WDE5aklqb2lZVFJyUmpnd01EQXdNREJCVlVSalNVRlBJaXdpVTFCQlVsUkJSRTFUWDE5U1pYWnBaWGRmUTI5dGNHeGxkR1ZrWDBSaGRHVmZYMk1pT2lJeU1ESTBMVEV3TFRBeFZEQTRPakF3T2pBd0xqQXdXaUlzSWxOUVFWSlVRVVJOVTE5ZlVtVjJhV1YzWlhKT1lXMWxYMTlqSWpvaVEyaGhiR1Z5YldOb1lXa2dVM1YwWVcwaUxDSlRVRUZTVkVGRVRWTmZYMUpsZG1sbGQxOVRkV0p0YVhOemFXOXVYMFJoZEdWZlgyTWlPaUl5TURJMExUQTVMVE13VkRBNE9qQXdPakF3SWl3aVUxQkJVbFJCUkUxVFgxOVNaV3hoZEdWa1gwSnZlRjlWYzJWeVgxOXlJanA3SW1GMGRISnBZblYwWlhNaU9uc2lkSGx3WlNJNklsTlFRVkpVUVVSTlUxOWZRbTk0WDFWelpYSnpYMTlqSW4wc0lrbGtJam9pWVRSclJqZ3dNREF3TURCQlZVUmpTVUZQSWl3aVUxQkJVbFJCUkUxVFgxOVNaV3hoZEdWa1gxTmhiR1Z6Wm05eVkyVmZWWE5sY2w5ZmNpSTZleUptYVhKemRFNWhiV1VpT2lKRGFHRnNaWEp0WTJoaGFTSXNJbXhoYzNST1lXMWxJam9pVTNWMFlXMGlMQ0poZEhSeWFXSjFkR1Z6SWpwN0luUjVjR1VpT2lKVmMyVnlJbjBzSW1WdFlXbHNJam9pWTJoaGJHVnliV05vWVdselFITnBZVzFpYVc5elkybGxibU5sTG1OdmJTSjlmWDFkTENKa2IyNWxJanAwY25WbGZTd2lVMUJCVWxSQlJFMVRYMTlFYjJOMWJXVnVkRjlXWlhKemFXOXVYMFp2Y20xaGRGOWZZeUk2SWs1MWJXVnlhV01nVFdGcWIzSWdUMjVzZVNJc0lrOTNibVZ5U1dRaU9pSXdNRFZHT0RBd01EQXdObUptUWpGSlFVa2lMQ0pUVUVGU1ZFRkVUVk5mWDBWbVptVmpkR2wyWlY5RVZGOWZZeUk2SWpJd01qUXRNVEF0TURGVU1EZzZNREE2TURBdU1EQmFJaXdpVTFCQlVsUkJSRTFUWDE5RWIyTjFiV1Z1ZEY5VmMyVnljMTlmY2lJNmV5SjBiM1JoYkZOcGVtVWlPakVzSW5KbFkyOXlaSE1pT2x0N0lsTlFRVkpVUVVSTlUxOWZRWEJ3Y205MllXeGZRM2xqYkdWZlgyTWlPaUpYUmw5U01WOUJNVjh4SWl3aVUxQkJVbFJCUkUxVFgxOUJjSEJ5YjNaaGJGOURiMjF3YkdWMFpXUmZSR0YwWlY5Zll5STZJakl3TWpRdE1UQXRNREZVTURnNk1EQTZNREF1TURCYUlpd2lVMUJCVWxSQlJFMVRYMTlIY205MWNGOU5aVzFpWlhKemFHbHdTV1JmWDJNaU9pSTFORFkzWmpka1pDMHpNemxoTFRSbFl6Y3RZV1psWmkwNE1tWXpZek00WTJZMk1qSmZRVkJRVWs5V1JWSmZZVFJyUmpnd01EQXdNREJCVlVSTFNVRTBYekVpTENKVFVFRlNWRUZFVFZOZlgxSmxiR0YwWldSZlEyOXljRzl5WVhSbFgwUnZZM1Z0Wlc1MFgxOWpJam9pWVRSelJqZ3dNREF3TURCTVExWkdTVUUwSWl3aVUxQkJVbFJCUkUxVFgxOUJjSEJ5YjNabGNrNWhiV1ZmWDJNaU9pSlNZV3QwWVhCaElGQmhkR2h2YlhCdmJtZHdZV2x5YjJvaUxDSlRVRUZTVkVGRVRWTmZYMEZ3Y0hKdmRtRnNYMU4xWW0xcGRIUmxaRjlFWVhSbFgxOWpJam9pTWpBeU5DMHdPUzB6TUZRd09Eb3dNRG93TUNJc0ltRjBkSEpwWW5WMFpYTWlPbnNpZEhsd1pTSTZJbE5RUVZKVVFVUk5VMTlmUkc5amRXMWxiblJmUVhCd2NtOTJaWEp6WDE5aklpd2lkWEpzSWpvaUwzTmxjblpwWTJWekwyUmhkR0V2ZGpVNExqQXZjMjlpYW1WamRITXZVMUJCVWxSQlJFMVRYMTlFYjJOMWJXVnVkRjlCY0hCeWIzWmxjbk5mWDJNdllUVTNSamd3TURBd01EQTNSR0YwU1VGRkluMHNJa2xrSWpvaVlUVTNSamd3TURBd01EQTNSR0YwU1VGRklpd2lVMUJCVWxSQlJFMVRYMTlKYzE5R2FXNWhiRjlCY0hCeWIzWmxjbDlmWXlJNmRISjFaU3dpVTFCQlVsUkJSRTFUWDE5QmNIQnliM1poYkY5RGVXTnNaVjlNWVdKbGJGOWZZeUk2SWxCbGJtUnBibWNnUVhCd2NtOTJZV3dnTVNJc0lsTlFRVkpVUVVSTlUxOWZVbVZzWVhSbFpGOUNiM2hmVlhObGNsOWZZeUk2SW1FMGEwWTRNREF3TURBd1FWVkVTMGxCTkNJc0lsTlFRVkpVUVVSTlUxOWZVbVZzWVhSbFpGOUNiM2hmVlhObGNsOWZjaUk2ZXlKaGRIUnlhV0oxZEdWeklqcDdJblI1Y0dVaU9pSlRVRUZTVkVGRVRWTmZYMEp2ZUY5VmMyVnljMTlmWXlKOUxDSkpaQ0k2SW1FMGEwWTRNREF3TURBd1FWVkVTMGxCTkNJc0lsTlFRVkpVUVVSTlUxOWZVbVZzWVhSbFpGOVRZV3hsYzJadmNtTmxYMVZ6WlhKZlgzSWlPbnNpWm1seWMzUk9ZVzFsSWpvaVVtRnJkR0Z3WVNJc0lteGhjM1JPWVcxbElqb2lVR0YwYUc5dGNHOXVaM0JoYVhKdmFpSXNJbUYwZEhKcFluVjBaWE1pT25zaWRIbHdaU0k2SWxWelpYSWlmU3dpWlcxaGFXd2lPaUp5WVd0MFlYQmhjRUJ6YVdGdFltbHZjMk5wWlc1alpTNWpiMjBpZlgxOVhTd2laRzl1WlNJNmRISjFaWDBzSW1GMGRISnBZblYwWlhNaU9uc2lkSGx3WlNJNklsTlFRVkpVUVVSTlUxOWZRMjl5Y0c5eVlYUmxYMFJ2WTNWdFpXNTBYMTlqSWl3aWRYSnNJam9pTDNObGNuWnBZMlZ6TDJSaGRHRXZkalU0TGpBdmMyOWlhbVZqZEhNdlUxQkJVbFJCUkUxVFgxOURiM0p3YjNKaGRHVmZSRzlqZFcxbGJuUmZYMk12WVRSelJqZ3dNREF3TURCTVExWkdTVUUwSW4wc0lsTlFRVkpVUVVSTlUxOWZSRzlqZFcxbGJuUmZWSGx3WlY5Zll5STZJazFoYzNSbGNpQkdiM0p0ZFd4aElHRnVaQ0JDWVhSamFDQlNaV052Y21RaUxDSlRVRUZTVkVGRVRWTmZYMVJsYlhCc1lYUmxYMVI1Y0dWZlgyTWlPaUlpTENKVFVFRlNWRUZFVFZOZlgwUnZZM1Z0Wlc1MFgwUmxjR0Z5ZEcxbGJuUmZYMk1pT2lKRGJHbHVhV05oYkNBb1EwUXBJaXdpVTFCQlVsUkJSRTFUWDE5TVlYUmxjM1JmWm1sc1pWOXVZVzFsWDE5aklqb2lUVUl0UTBRdFFrMVNRUzB3TURBd01EUW9RazFTUVMwd01EWXBMbVJ2WTNndVpHOWplQ0lzSWxOUVFWSlVRVVJOVTE5ZlJHOWpkVzFsYm5SZlRuVnRZbVZ5WDAxaGFtOXlYMTlqSWpvaU1TSXNJbE5RUVZKVVFVUk5VMTlmUkc5amRXMWxiblJmVW1WMmFYTnBiMjVmUVhSZlFYQndjbTkyWVd4ZlgyTWlPakVzSWxOUVFWSlVRVVJOVTE5ZlNYTmZSbWxzWlY5VmNHeHZZV1JsWkY5Zll5STZkSEoxWlN3aVUxQkJVbFJCUkUxVFgxOVdaWEp6YVc5dVgxTjBZWFIxYzE5Zll5STZJa1ZtWm1WamRHbDJaU0lzSWxOUVFWSlVRVVJOVTE5ZlVtVjBaVzUwYVc5dVgxQmxjbWx2WkY5WlpXRnljMTlmWXlJNklqRXdJbjA9JzsKZmluYWwgQm9vbGVhbiBpc0VuY3J5cHRlZCA9IGlzQmFzZTY0KGNvdmVyUGFnZURldGFpbCk7CmlmIChpc0VuY3J5cHRlZCkgewogICAgY292ZXJQYWdlRGV0YWlsID0gZGVjcnlwdChjb3ZlclBhZ2VEZXRhaWwpOwp9CnN5c3RlbS5kZWJ1ZygnY292ZXJQYWdlRGV0YWlsQEAnK2NvdmVyUGFnZURldGFpbCk7CiAKU3RyaW5nIGRlY3J5cHQoU3RyaW5nIGVuY29kZWRTdHJpbmcpIHsKICAgIHJldHVybiBFbmNvZGluZ1V0aWwuYmFzZTY0RGVjb2RlKGVuY29kZWRTdHJpbmcpLnRvU3RyaW5nKCk7Cn0KIApTdHJpbmcgZW5jcnlwdChTdHJpbmcgcGxhaW5TdHJpbmcpIHsKICAgIHJldHVybiBFbmNvZGluZ1V0aWwuYmFzZTY0RW5jb2RlKEJsb2IudmFsdWVPZihwbGFpblN0cmluZykpOwp9CiAKQm9vbGVhbiBpc0Jhc2U2NChTdHJpbmcgaW5wdXRTdHJpbmcpIHsKICAgIFN0cmluZyByZWdleFN0cmluZyA9ICdeKFtBLVphLXowLTkrL117NH0pKihbQS1aYS16MC05Ky9dezR9fFtBLVphLXowLTkrL117M309fFtBLVphLXowLTkrL117Mn09PSkkJzsKICAgIHJldHVybiBQYXR0ZXJuLm1hdGNoZXMocmVnZXhTdHJpbmcsIGlucHV0U3RyaW5nKTsKfQ==