Dot Net Perls
Top 37 C# Example Pages

["*rw.eyy.`(BXBBCST~~}T~~YF968968968F(B+BBCCEE3.P6F6F6*P4F4F4.S}T~~}T~~","IsNullOrEmpty."," The string.IsNullOrEmpty method tests strings. It checks for string references that are null or have no data. Strings are reference types and can be equal to null.","Strings"," can also be empty and have zero length. An empty string is just empty, not null. But we cannot check the first char of an empty string. An IndexOutOfRangeException will occur. ","Empty Strings ","empty-string","Here,"," we look at examples of IsNullOrEmpty. The three parts in the code sample show the IsNullOrEmpty method matching a null string, an empty string, and then a normal string. ","Null Strings ","null-string","String Literal ","string-literal","Next: ","In this program, the parts A and B in the example will match, but part C won't.","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto","Based on:"," .NET 4.6\n\n","C# program that uses string.IsNullOrEmpty","\n\nusing System;\n\nclass Program\n{\n static void Main()\n {","\n // A.\n // Test with IsNullOrEmpty.\n ","string s = null;\n if (","string.IsNullOrEmpty","(s) == true)\n {","\n // True.\n ","Console.WriteLine(","\"Null or empty\"",");\n }\n else\n {\n Console.WriteLine(","\"Not null and not empty\"",");\n }","\n\n // B.\n // Test with IsNullOrEmpty again.\n ","string y = \"\";\n if (","string.IsNullOrEmpty","(y) == true)\n {","\n // True.\n ","Console.WriteLine(","\"Null or empty\"",");\n }\n else\n {\n Console.WriteLine(","\"Not null and not empty\"",");\n }","\n\n // C.\n // Test with IsNullOrEmpty without writing 'true'.\n ","string z = \"sam\";\n if (","string.IsNullOrEmpty","(z))\n {","\n // False.\n ","Console.WriteLine(","\"Null or empty\"",");\n }\n else\n {\n Console.WriteLine(","\"Not null and not empty\"",");\n }\n }\n}\n\n","Output","\n\nNull or empty\nNull or empty\nNot null and not empty","IsNullOrEmpty detects"," two conditions. Strings can equal null, meaning they don't reference any data. They can be empty, meaning they reference a character buffer that is 0 characters long. ","Null ","null","Static method."," IsNullOrEmpty detects both conditions at the same time. It is static. You may want to call it on a null string. An instance method would cause a NullReferenceException. ","Static ","static","NullReferenceException ","nullreferenceexception","Return: ","IsNullOrEmpty returns bool\u2014either true or false. This indicates whether the string is empty or null.","So: ","In other words, if the string has something substantial in it, the result bool will be false.","Bool ","bool","Return Bool ","bool-return","Internals."," How is IsNullOrEmpty implemented? It simply tests for null and then a Length equal to 0. It provides no magic optimizations (as testing also shows).","Alternatives."," We compare alternative ways of doing these checks. Please note how the string is tested against null before checking its length. This avoids a null reference exception. ","Version 1: C#","\n\n","// Test version 1.\n","if (s == null || s == \"\")\n{\n Console.WriteLine(\"1\");\n}\n\n","Version 2: C#","\n\n","// Test version 2.\n","if (string.IsNullOrEmpty(s))\n{\n Console.WriteLine(\"2\");\n}\n\n","Version 3: C#","\n\n","// Test version 3.\n","if (s == null || s.Length == 0)\n{\n Console.WriteLine(\"3\");\n}","Results."," I found that string.IsNullOrEmpty is about in the middle in performance. However, the code for it is much clearer, which is a huge positive. ","Version 1","\n\n","733 ms","\nChecks string for null, and then checks against \"\".\n\n","Version 2","\n\n","546 ms","\nCalls string.IsNullOrEmpty static method in framework.\n\n","Version 3","\n\n","406 ms","\nChecks string for null, and then check Length.","A summary."," IsNullOrEmpty, a string method, provides us with a way to check whether a string is okay to save or use. For performance it may be better to use manual null checks. ","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","3679700504","data-ad-format","link","ins","class","adsbygoogle","data-ad-client","ca-pub-4712093147740724","data-ad-slot","6227126509","data-ad-format","auto"]

%iVBORw0KG;)NSUhEUg?AP)BDCAM?ACV1Xh7)GFBMVEX::r+vixvbyJk5Lc3NzF9vGv19NhYWHPSHDN?ADzklEQVR4XuXa25KjMAwEUFoX8/9/vElmoEsIORTl3SWkHxnF9ilzsWGmq8QM0/cEMj+i9jVgnX/yLWKZf6NXBcAweIKvPMUmOnhk8xpxXEwrGqZiPPhq4nn+q+Dm7tcFY/hNa/ZHcE0wBg4Nygm+IphDG7zwaH53MIPWmvv9wQx8yXRrMOP/fIJh8ooZhoJfzdrROcahYRreUOzpsHcLCkZVAkCXsIBhbSh+GW1tVzJFtxHsDo2dYB2nSqmlJQzTwk0yJ01snQ2YR6GprNuq7gGEf7NQDApqC0MwZ2Ew2Iq6s+CtBWVxDWbNeLAVfZ4EZ4wW3j7YCoW7AwfB/ggSWHMl3oDZTgZrNgiLe5Z4n1UCVB5RXcHuZ8F1p3gH9gyus6lWSlprugs2DtvXNNEIliVskZHWA4s0oWipi63qETB7DohQSdsrC/nJX9atQu9O0tKATYaUYIU/Ey6U1KjLYbCAkEck1GsaHNv9DXgW+HAwvS5hw3seLCAkX/SBFxpuHTBeGQFm1/F3OAHmhNY/sG0VAB4iOJSBPmADBo?RgjB2QtlLxGMZ/rg7PVGsDs24OakEOe/g9TQHAZsHghuvDIIJok5BlZOk/XBPBq6zVdIm0aChSd7BOMcmN53YPJyt9jc820EOJ9afIKdBiu9EewEB106VDzXxcaCiy3vWTCmAsyOqdM8XO5oGBWMA0/DwPQmcK5EvhowUZwio8AYDJ5qMC9PbQ7C8hNI5hzFeDCWDAdniKoS4wTXu2YdDM4ZD5602ieloXiTbbF8HthKb27YPZkdnwOu70Zave+Gv8zxTPgssFRcVmWyazgVPgmMta6JPiPUFgMBtptNFBi5IFiqjX1/HJCA+iCwstuON0d6KF00FwSzbhNgYkQ2JKym1gPLRcE8M4EfbBaoWPZyAVrvxrF86zkFhq1ZTe0RewYnT+n4ijE0FKtU+f6QogzGzKwfm86Bbe5Ezt60clQQwUXUCe7UXwiMujUcALd9sF0V3G/R3oG1VesT2QUDGAsGcBy8BB1xHyyd55ftVw8Gs8VTa+mcRSJZrOJrii/OlwTTK/qT4jqGiSwlwvUnvSloItt6nPmXDXgn2CvsHOMXKqb4rOVFDg30KmBJ3vqzVtVhHVwODMJChGD+GiW3Di4Gti0YP6pWrf7xzFJKbSdLPVj/35LP6OIxfp9InOH0aJbbgnX/0dzuBgYfQLLATHjQbwTOa8a87vD7gUFdZyt0pxh99bvpWwWyzxWn92bBm63QDeNt/WdCvoq/7QT3F6sEfAUZBHwBGZjuHYBoBO0fPVuHt+o3PUI)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/2en:/+VlZX29vY4hdad)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?ANY)3C)ABVkOvV?ABSUlEQVR4Xu3Y4WnEMAyGYW+sfbSBlvh20Bbawq3TFCVFuDShJDJ6f4b7HB7IEe5afyKjIOjILk7Py2dY2oIYI7s8TcUqVrGKVSyTLf6M/sDyKfv0aVaczljztFj/VbGKVSyFiKqN8rKwvwb0iyHU9kgA6ATwvWTYaHL5ARYdwdyO0fw2FHwuuPw4S8hJ7tLULIK4J3BlZQ1V7LLMrBaGUUrWNPJBbhYR/WRpapa7JXgKk7L8FWy9U7BIy/InzlyalRU+cAux5CCgNVhOXonlX6wlWfZSVrGKVaxiFatYxSqWthVZ1pZk0WIs9VluFp9/f/oqNwtngHajtgDLDgIG2FG/LnULIz4cMsLIRpMpoil8eofVL/8hLO2Xdtzlqd1hyZqsHmqEsrMQHpue1TlQpWbFdyEBwPlZ/q7yI+UNrH43E9piqKpZf0Uf/uSX7MnWyF8)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEXZ7::/+VlZX29vYl5th1)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AIw?ABpCAM?ADflzs9)VFBMVEX::2+fju9PHy9/X0+Pbx9vTo8Ozj7ejZ5uDP4tmwz8Dd6uTL3dTV49x8sJe208Wuzr/P39drpoq61chopIecw7CSvahgn4F1rJFjoYOAsppyqo9IgRfD?ACtElEQVR4Xu3XyVKEMBSF4cxh7Hn2/d9TrtE+VUhTaJrcLPIvLGXjJyegiq/0ZfPIoIBRt2sOBYzLCePzwZiA+bgwtvnBaNES5iylYUlrLbffGGnlF+YiteJKNyPMWUjNkh0wu18YprTNCCM1PwZpZfLBmJwwumAKpmAKpmCSVzAFUzAF47oQvlgCcEMrYtxfMBboVTBtTpguG4wfDCoXjCXQNMb3g6/3Iwo1Bvlq3/Wti8aIfdfVwFCghtw8BnP3Jhbj.EMLMjNYhSAdSyGFO43Zk+KvuoJs39iTLhQDT0xNSm86wM7DiPCww0MoA6fvD7A6ueOtKSPxVSkGGPa502vCTuD8T9YQ8xYDDHUGENr+Oc362cw9LNYQRHGRmJoJz/GYBwoxxgcLmepeEwYov4/pkPxmDCEeRNGxGIsTTJ/ZtJhaPbqH08T2AqAaAzt5Be+ZwxhzOjR7u3bMEG16A2MWSqBlx6qojHYff53E2YhJy68GVMBA820RVjAoXkTBqz5v2eQaseXXRU2da7831QwBbNmUjapMPK4na1pds0lFcadrgtKhTlkhPH5YIxoCXM/ve5wSIXRAbNTbjLvvFKXK3VOgJEVYRqpJ7PWmPPTsjJG2m+MsFMpZRUsqTBbIScyRmhYEmJeBEsSTAvMjCUl5jhv4cfAwo+BhR8DSzKMUMBMWh4yIeblTE2wWJEQo19gtsGihGC+M7A4wYyBZaPA4JsJG/HfGVj4McfReeF66cGygYURc8RG3BicF34Mzgs/BueFGwOLEvwYbMSPgYUbsx2dF14MLPyYY4eNuDH3xwGW5BhkFDmw0SLMppls20S0o84nWJZhEgQLP+bmxTLMx/qWUy8WYjbX+7pdb5VYlFau7uq12g8NH71YilHGGLlKhpJieUZbtWbWavGH5MqJuEqfDRAN8iKPPjs)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AMg?ABsC)?KvqK6?AJ20lEQVR4Xs3cQY6jOhQF0K+s0uvybrwPz5h4wASJARMky7Ksj5+BC7m0DZUqKVfdTcAE6vTjEYUU+S99V+IxYUs8JF3nyyCsYMsPIPPYd32atNbKJv1akpJaJiqlPKOTyROzDb1kaJKhsswldRyyh9Wnqy1FGYpRVg+jDIVl2ZulDeFCh5jSNI2DT1PvnEtp6LoFl7olU5rzxKdxmSxD/TIZTkMxDWXILZMxhTw0pylPsCUZmmUoDnkSgstDwXedtYMfzYvq8s2H1ntf+D2z9R6UL4fENUBQSPKNkGvGXNIrUCD5WggcQhBFSffKsyIBJBLkuxioxAmS4yVE+UYIOyT2tYog+UoIGAEMqogEhxdDvrgc0xaYjiX5th4hhxCggAWSL4T?cY7wr6OFtTkqyBRUnEAMqEmP4fE+PcOMBhCkp9Ash3N9df1AGCcxhKBSD6BCELytw3Cjj2dAiTnJ5D4lr9hwDGfDEPOqjlScOIiSL308geSP68HFJLekATdTpDqnvI/fwZhhzAQ+xLZEwg7+F3zXzv?GQYINkggSBVB0PiHzQ6lYMgZ4n3DyDbboL35S8wv/6CDsjO6LcIpEjQJM8gmYH8qiQCUnVInBneJd63IdgV/rveIfHXHIEdYCAieQBhx7zlNykREHYwwyqRo.bJN6CrDtBPpeAwQcWHAx5LZO3kjDktoOPr/iZQhiezrtojd7lP04g6JJHFYFD3uJwUbY8V7ADkAEOh2TIkp9D6N0mSST3Dc8cyAYRCSDhDqQUZEK453+e?c1CDFyCg6QJTcgU74EH3qtlbJTuXA+yYXz2eYZ7WVZF9Thwnm0p4vpsnoZ0vHqOvtw2JKdZEvjKEO9kSFXhpxsyTkZGsqWyuo+KKW0ScHYrvcp9QyJMSzeeeidGydnl0yTXdKVyTiPeWYO+dq7i7FbMsQ5T6Y45kmMh6ExThfX2We7ZJgH2eDUySTPGNt3Zol1Nk+6Lk+sfcmy3smz5GfqvF9KNE4pzT7kwgSBMMWvFac3A0v4inI7YQ1dTeTzlZN0e5wzL0fHlvfVHkGnw0ESUH4UTw7uj+6YDHHPIShI2QFRPoHgMnvbgfwYEoLfHSWf1QQIMNgx/MvhrGpD4lWz48AaACkUnIZhgck3Is/aFewQSEdx7jEEBcEOQKGiPMiMoBjUH+LgmALpn0BQkLL9ob+WXFvmuwHjjuP1CeSwg/6tUWYEgscIMNjxHMLNnh0CEcYWkjwPFHzRRxySX4BwQXqCiETyGQIQ7vPPDy20+oKG45FkaoerQeddu2Wd1U8hXBCmsIQNbQWKQQ6GdO4DCBxckz1A3C8FFIA4clBF6HUkVCGRjyxXk0y3DeNKYAbXA0GPMISavV4QV4FUMnK?KPhYEhxPIa4kvuS5o8PBCvAaEM8Q2pHlnsg4YMHYQU7nkO4R7ggNYhIxlobtxFgcHuwJFuvTlo3IZWS5DxUQMCMqgOQ4QEkbC1SgbBkQ1Q64UoBRwNi1alFAEkEQUHqEEg2TOVsVCEA4ZiB4K0uX6CjT6y4RSqHFvqdAkbdgABxHyKODZLaEDQlQ64lLYajdMQgxw6pH1kM.zp4QAEklY5HEKIpgPv2YuDIdc9EglCaUFOBijoiHoCWdwoyAYJNyGQMKSkznCioCKA8KAeS2zZLxzNivjbkKEKaZSAHZyj44WCoEVuQs6SzkgyxOYHdoGUB9lhDrELwxokI9b5DimrbiMrwBjMYcy5/gzhgkgIcikxL0mGaHlkhkHlqcrm1yFa1ka6Jfu82jBlbhspEnm8zuFZWiDHF5HbEPpU8gqi3GOIZJWs6EuIFgcgfYGM/HFVo0dwkREU2aoqh1aRaHmgbYEok31aC8TZsrbRK8TKoNGlCqAtArM7rKy1roJn2bx3zR+ENiChQFjSZ0hp9nV/ZsyQcYXIUmMKxDmpmej3n1t3nSowlETJg9WRh1WpGrS6p48Pm5B4rggk1xDldohSeoUodYTsAUQdIKKDTYpTFkrcDnH6vSABjlpFSALIsEPKgbSDBbKiBfL+f6u0ylZAJAYQnZlqP7bcDhns6+QgiOQdciFhiCqNvkLGNgRnLUC0LAFE5VrIQiuOI4R+oaYBicGzRCIQYQnEblUZJVcQpbW2gKx4A4iRBTvEvvYY17kdMgwCOTg8dQhDpNsvJWfIoAHJAQQd5eQDzUOPaPkXEHuCGEC0y+kFUk7uZ0e4cESC0O9UXEJGBUhOgQxnyN4AgCitd0j2AZI7boFLB4rjADGAeBSEIZAEHFsniS0/RHYYlR9Ze4JY6WS9Sta1NV5HhFCaQlpZiqOltU+ruLKSNtiKlBqOrSAMiSnr8kUgH6fedZ2fO3yq7kZ3eNUdhu1ly5TpAhpHjCs7OPlfRYyxa6+rMtHWmG1BmRqbHVhFJFYKskaJowHp0zSn2RitXdS5I/2s5Ll9aQItkw3yQlSZuHF9gN9OOEdtkOKz++qwdZqf1R+X4SP+c6tXLtChSyRXF3nGLXx5XdJv4bdSxnQUh1SumaMeKEgDEgQCCUPgYMk1ZZNwSAEGOWZxBHIQJEaUhGpSc8BCEqRi4GKAQQW5dsRrCEkqx1X9+BILaxwpmAHHDEcNEt8knksCChyctoTDiucOhqQCgQQUhBi1XkHaBkbAwfdWMcS/Q/hmjrYDYQpCiEvF2dG62w3NPoU3CB1cJJnqaV9CbSvAkLQc/IkVl0RSY4AMyQMKEMSgenwOIUfjg126Qn+/GEj1flDuERcu7yGYQaGQApyaRoIqkIEQfH8uHAyxc+1moaaD06KQgkuBNO+TAMQQh.PGFyWGoYQdQYcHEC4JCUPIWwZESLksAIMcXB7tCGJ75y95/Czz3smCjCUajE8GOJoQ57fA8zVR4TPGhY1NjkTghjUI1cSQCRVB0tqlnZ5UQpy1CF6bJSEKewIEo88oZBiCTMeQtoS3ms4xAeSSO4geHsRjjZE1SEIGOxgC2PqChSDGezgLJDhuktAuQ4Q2C0w65OBqQUED0ITwaffKsTfgkQENOp+Cp1onzMAocSGBAxSsIUxrJA8ZXCPGN+SMMWT4w7G80aoGA8ZgKBHWpK2gyls4YTPisEQloDCqZxYrjnlBz4JiECGZ5C++e1KnMqJnikxNMKM52EIS8JNBmOQP1MAYp1zffkCuTH5w7fEhXL3Wgh5pveTXTL5/nD3WpShqazuj983N5QtTfG4pbL6ECYZCkOexHja0nyxpdA55+Y05zeWKeUWJa/c9ab/9b19Y7mfMAQZCkaGgsqTdVkcD98AaJOiLel42NLr+s5EddySudiSk9WTUUt8khv5Fk84a3AfIqd2VDzrzNhI+oUAUtv/Ywbn7wwMYQnyK835+wrkfwmOlyES9Gaz)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AKo?ABRCAM?AB1/c1q)MFBMVEX::r4PTz6/n28fr59vzn2fbdyPDv5fb8+/7TuOrs4vXPrO3Xve3Ssu77+f3+/f7PhED1?ADHUlEQVR4Xu3Z226jQAyAYZ/mwPn933YbrdIKPINhiiPQ7n/Z9OITOBkj4DZlJkqIiVjAjrq9EBxjwp96yvAq4U98hhodoQnX9S+ZYCu1E/BpTqijBaidiuASY7E0Yzs1gEeEVjZVl+HyloQu1OQh9aEGh7vvRB0dvlFO1I7g0gRbqbY2OAxqMzV8cAIYf0UdVzJlZbiujIUSiwinA1RaSYPrBBDWQdKb1BUukOcE5N2BnLdW3r3/BKPjysL78ygGlTfnaHBcWXolTXo+6lTczCX5La2CKtH/UKfGzQXMfksrGRcVoN+jikIFt5UlmecR7VGTutXJ68BaUDXDOt6jBmUSr6VVjPtvUHPhYIpOE8CKSnAiKhz36DQBbIyqUSiI2OnAonaqPqrUH9+RD1XgeFT89tgry2A0xh;X0oNRY+9sgyHipivo47ls95cWoeDTSFfROUVJ36nqaFMtev4Gip2R4ut1GHCS34BYnc4aaUOE19wBEh3PGymDl2VmuBo6QQ1tlOHUF1Xc8NRZZcNqn1ZZzw4rPMCm3J3ptROHXjveUVLezr1GsBeWcLGE+lVivUJIFRxSYpIxv03UtSyB7BKZVT1S0m6sqozKeC62spiUyEoaqw+BmDaWKVXU1xbVcBaWWxqrlGBTCvjOzZXFXNlsakQa1TBQkngnST8ic1VBeyl1abWPkpYinh+OTlVnhG5dm7aE9BOFTxRPwMwfbWijPSK4ZUQ/Xyu/0kaqATv6KQ11g9Pe91CmzptqfBd7vFE7E3F0reqZQQInKmsLqq0vWEhcKLWD9bQ9t6KwYlaLwI0WHuGT1MnbHrNkjL4U/UTq06SfUk/TY2VPX/hHutRBn+qbgpQLHNvQN2pupGh2MKEqsQLXF84/XSttcKU8B0xZ9D5U/UOUAd/NYPKjxrD30ZNnTJ8tqOrNWlsvCkVsrbKTakgihruStXL9XhbKg7bbkslRaV/ifqfGp5D7R5DDcPtfwHq0umOVMFoPAt+tuFs+BjqlB9DDfAUapefQp0YHkKdCB5CHRmeQe0Q4AnULiaAu1NjjCEJ/LY/AVWt4P/143s)ASUVORK5CYII=$/9j/2wBD?cHBw@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.n/wQARCABSAJgDACI?RE?hEA/8QAUw?AQUBAQE)))?AECAwUGBAcIE?CAgECAgUKBAUF))AgEDEQQSBRMGISIxQjIzQVFSYWJxcpIUI7LSc4GCorORocHh4v/a?wD?AB?I?D8A+k?QUUjstSpZex0rWPEzYj/AHKW3pDpYdaqc2s04z5CeVj09r+wy/SHiv4m3lVN+VXuhZjxz4n/AGFJouu+v61/UXum4Us1cy7dmV3bO77i/wBNwhZq5t27Mru2d33HsQDWnrCCiKDA8BBRB)?B?UB?Dl1utq0lTW2/0rHe8+qDzvW8b1upZtrvXX7CM0R/P2jd8T4emtqhJna6ddbejr8qJIZp0XDtI6stcLsaGllWXunb/cWektorWJ5TXXs23b7MfCWuiuopWJ5TXXs+3b7MfCZfo9xS+NUlL2O9dk7drM07Z8M/cehHnvRrTLbq2tloiKu1C7utpnqXC/CeghxWE5+EjHYXft9YcXhPxGEjE7F37fWKAgFYVQkmT6S62+pEorjalsZZ473+A1cnNqNLVqOXzU38t9y+puz3SdOmtSu1Xdd0L4f0nVpbUrtWx13Qva2+/wnkt2mtqhHtSViyNyTPijdjI7Refr+tf1Gp6XRHMoxGIirq+5jLaLz9f1r+o1VF03afmTGNyt2VNbRfN+m5sxjcrdlT112xIisMvkhRzJQuVMhC5U7sjjnVyaJGTBFMDgEyGRo3AomRstAxnHRA6IJJYZLELORS46EHwh07zIcS4PqdXfbbDoq96QzNlsL6Mbi312vTTV7265mcKvtFLqekaTW0Uo+9oxltvZz8ix0lWoWd9K9/Z3N3FloqdQs8yle/sbm7ig4VY9Wtq2TMTzFiflLYaD1Xcee8B0DWXxqXjCVzlc+J/D9pvUkdxZla2IjvVNrN7x/GGVrViOuVTaze8nAQCoKUUbgeJgMhkw3S7zlH8Nv8jGW0Xn6/rX9Rqel3naP4bf5GMhVZNbq8d6ysx/I1vD4zo64j0qxseHRnRVxHpVv1HsN6nBnrKjg/FtRr9Q8WzEKtbTCKuIzuX+oubFxJn2paluW+3MLu7PvM81L0NyrNuYVW7PvJEc6Fcr4kkVyNkI2TJ37ys4nxRNFVme1Y3m0/5+k6IcoOI8KnU3pbzJlZlYeJ8ER6iTT1VzZHNnCR2vq+Ek01NU2Rzpwkdpvi+Ey2r4lq9S0u7vt9Cx1IvyUuuj2vtl2odpZZhpWJ8Mx6jt4r+G0+japa0WX2rXG1c9TZ37vKKzo9p53vdMYWI2x85Llnrs0tk8pa4jsp+4uWeqzSWTFS1xDbU/ca+XmRmZCIHwkyU3VBTdUFXr+HRq4jLyjLGI9MHFpuj1STE2PNnwwuINNsJIQkjV2qmxbGiCWNbaqbFsaI+EhrrhIhVWFVeqIjuU6kgFQm2nGzZOF3yKAoERAOKfjept0+jayp5Rt6rujvxO4uDm1ekr1VcVW52b1acdW7HoJKWVbK2eMpDKzL7iShlWytnjKQysy9/UeSO1+pfLS9jt6Z3TLFzpOjWruxLryln02dU/Z5R6DptFp9NGKakr+KFy/wB89o6S1u4w2NtNa1x7Td/2lvdxp8baK1rjws3XP2lJw7g1WhmXV3ssZNsz3RifUp2WKdswRMpWzc7tLvO6Z8RWTe7vL2NumfEVzKN64Ot0IGQlhokmhokj3SQ33rUjWPOFWM/9E8qZDj2rmbIoWezX5X1/+Tq01POshfR5TfI69NRzrISO7ym+RBEXcT1OfDH+iJBoq9XpaJr01U7myq4j1y2MyxQ6TitWlohKa99rdbu3dn1bY8KkPDtPffq67YreVixWaYVsLG7JY3U7obf+VTUv5S7sbp9pizup3Q2/8qmpfyl3Y3T7THoCITqg5UJdpnWYzTOMhB+0dgXAzJFLDRwCjRuRAFAQQ))QbMDxBRckMqRsh04E2joYfDHHKGTu6P3anU22NMV1tY/X3y0bvQsG32jdp006p6ZmUnEyu3cdVGrspmZScTK7dxQ6XgOkpxlOa3x932F4lcLEQqwqx3RC4gkhR2CO297Jy7M31ENuossnLszfUIOAUgIMiCgAgg)))))gCgAo0BwCgIAo)CC)))H/9k=%iVBORw0KG;)NSUhEUg?AL4?ABBCAM?ABYbu5j)MFBMVEX:/+1wv+jqv9siv/p6:W3f8zZv9gb:19v9NK/8zAP999:S:8z:8zzP+z6P/0gInF?ABg0lEQVR4XtXXy1ICURAD0H7c96D+/9/KQqkhlEKD0iTrWZzKYtJXbou2s+jvn1Q55f2mfAMOb6Ec5D6+c/ObcvOdm98qN9+5+a1w842b3wo33/6Dv2H22g3zCL+PKF/uSKDsGL8pN9+5+U25+c7Nb5Wb74R8h+ki41eYLja+Qf1k/AL1k/HF4XIg4ytMFxl/X7/z8aF+Ov6A6bqR:FTnswXa2B96LmyPZtfoH4yvsDlwMaHy4GLj/Xz8RXqJ+PD5UDGh+ni448O08XEh+lSrtUVnC6qm+ey/krGx+li4+N0sfHh7Cfj43Sx8bF+Mj5OFxkf67c8frF+jJUovzRIBr/4+kovMb5YPr/OdcrUGL9k8FG/Tw3xxbP55/o1R4hfk/m6IBbii+fyJ/JnjK+5/HWRGuJLfzG+xvh6lX89f8m3GH90ar7Ya/FrkF8y+XNhRpAvlsi3+H8fUxP5A+svYb54Hl8Uy4/zNZEvCvo4XzyRLzrhXg7zNZMvw/o6ptsQpvDnE+wJyVGQ5SG7)AElFTkSuQmCC!