["$ regex..G$ ","|Regex.Split$instance Regex$static compiled Regex$","ANHDUHHusing System;Husing System.Text.RegularExpressions;HHclass ProgramH{HAstatic UNvoid Main()HA{HAAstring s = DThis is a simple /string/ for Regex.D;HAAstring[] c = URegex.SplitU(s, U@D\\W+DU);HAAforeach (string m in c)HAA{HAAAConsole.WriteLine(m);HAA}HHA}H}HHUHHThisHisHaHsimpleHstringHforHRegexUNvoid Main()HA{HAAstring s = DThis is a simple /string/ for Regex.D;HAARegex r = new Regex(U@D\\W+DU);HAAstring[] c = r.USplitU(s);HAAforeach (string m in c)HAA{HAAAConsole.WriteLine(m);HAA}HA}H}HHUHHThisHisHaHsimpleHstringHforHRegexUNRegex _wordRegex = new Regex(U@D\\W+DU, RegexOptions.Compiled);HHAstatic void Main()HA{HAAstring s = DThis is a simple /string/ for Regex.D;HAAstring[] c = _wordRegex.USplitU(s);HAAforeach (string m in c)HAA{HAAAConsole.WriteLine(m);HAA}HA}H}HHUHHThisHisHaHsimpleHstringHforHRegexUBenchmark resultsUHHStatic Regex method:A U6895 msUHInstance Regex object: U6583 msUHInstance compiled Regex: U5679 msU [fastest]U","A)ECErea/CEEC| 74}( 47}*B 47}XP84+/(CE+B#C","Regex performance"," is important. It can be improved by using Regex as a field on classes. Another option is to use RegexOptions.Compiled. Avoiding static Regex calls also helps. There are many ways to optimize Regex calls.","Example."," First we use the static Regex.Split method in System.Text.RegularExpressions. For the next three examples, we use Split, but other methods such as Matches, Match, and Replace have similar characteristics. ","This code uses the static Regex.Split method. Static methods are slower when storing state would save CPU cycles.","Regex.Split ","regex-split","Static Method ","static","It shows a simple Regex that Splits the input string into separate words. The \\W+ means one or more non-word characters.","Example 2."," Here we see faster approach than the above example. This example creates an expression with new Regex. It works the same, but has better performance. It stores the Regex as a method-level instance. ","Example 3."," Next, we use a compiled regular expression, and store it at the class level. We see two new approaches here. The Regex is stored as a static field, meaning it can be reused throughout the application without recreating it. ","RegexOptions.Compiled ","regexoptions-compiled","Benchmark."," We check the performance characteristics of the regular expressions. The three Regex method calls above are compared here in one million iterations on the same method-level objects in the three examples. ","Discussion."," Let's review some of the other work done by experts in the C# language and MSDN's resources. Microsoft's David Gutierrez states that there are three major options for regular expression performance.","The first option."," First is interpreted regular expressions. The runtime parses the Regex into opcodes and then uses the interpreter. Creation time is low, and runtime performance is low.","Second is compiled."," Here you use RegexOptions.Compiled. Takes 10x longer to startup, but yields 30% better runtime. Don't use for dynamically-generated Regexes. Creation time is highest, and runtime performance is high. ","Finally: ","We see precompiled (Regex.CompileToAssembly). This is harder to set up. Creation time is low, and runtime performance is high.","BCL Team Blog: microsoft.com ","https://blogs.msdn.microsoft.com/bclteam/2004/11/12/regular-expression-performance-david-gutierrez/","MSDN."," We look at MSDN, which has little documentation here. It warns not to use RegexOptions.Compiled when also using CompileToAssembly. This means you can't combine compiled and precompiled code. ","RegexOptions: MSDN ","https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx","Summary."," We optimized Regex.Split regular expressions. We encountered a situation where runtime performance can be enhanced by sacrificing startup time. There are many performance options for the Regex type. ","Therefore: ","Using an instance method that is not compiled is best for most situations. It doesn't cost much during program startup."]

%iVBORw0KG;)NSUhEUg?AO8?ABsCAM?AC1ihX9)YFBMVEX::32tr31NT+/Pz/+fmdm5tsa2t.UHSzs7HwsKqqKjg4OD/8PDw8PCIh4fc29v29vbm5ua5tbX/7e3/6en/9fUJ.n5+fn/3d358fH/5eX30ND/1tb56Oj77e344eHFNZQF?AJnUlEQVR4Xuyb63Lbug6FMwPedb/ZzqU97/+Wh4BAwzKjbk+zTdfZXTP9IRFp5iOwIEJ2XjJB1PF47Fc1TU86RgEpX+Ql/lnRy1OIkY77vFE7vBnwN+eFZ+QdUBWpi6o2uNvFqsI14W2a7f48I+9wyXu84h02vPCEvNAzkfCKR3lxj/fYoJ6Mt9mmt2t6YbperJpkX+Lthbd/Rt5qj5f0z7zfsF1teJvyvOXblfDCM/L2jHRzuxLe4+N4h2Ds4WCNHu/ernrGBbSv8PZ354Wlnt5QUx0OSQbu3K5y3qYAL9HOb6fTx8fpNLeHs7SCr7Yr4d1bZN6mIC8sU8T9iDq9UXaNd84H7RTcq13JIqxqkhIv3Du7J6zmHzbijooF8C+3q3yReY/CS4I78iq27jzVCtMbAL7SnkXHWxez08bxzuYl2qleFDbm19/1TnOFBLcuCi/pvrxqmSLtPCPuiNX829YZrnT7YmpXwnvn9M5rerE5Y1q+oyS988y4WM4Gvj8v4UZeF90bvjcuqHpKuGq01rr/CO8SedvI+/rd7VvPE5k3KuK2j7Xv0YW2bcfuHxv00HmNka66CXPQrdiXq1lVkXcsjwugjLWtivImqo3Sw+eBSmEdLl3QuiUZw6G5cPBxgBrN4cCJjPal9P60VxoKPRfw3w9rbajrqrXGJOIhh12WpY6ZWSrdsgxJQkHhw5X7r4m8mMbRHqJGBXTSOH2gTt5uZRTcmbcmXppB/cFaXzuDfvLeaSTWV7iKYJHXUQF4h4OHj8i23Uw+xIuH4whp6sXbA2lYeU/MO25gjQnIe+8RNNLinIIjt/3hkbbDclXORFVXuHU9Ia3yiOte1apX7LFuWzTrIO8ipK4MstrWKwXYmoU3iraXVcH9eeNUhrjTEu1lEHdEWMXAHvLkxvUOHT5QFDG4telI0bzx/6oj6Eo7NgqzByommCfBOdqii7y4D6z725c2G3mx8tZfrlbiHitMeC9wB8RtUuOSh4rYlwd5tC/KINKFv1N7BvB2U0R3ty/jzrU7oGynFhKmDTsRnGMVO3dRoLE/YaM+hzKvbCLhTrUlWqd4LefV9DtKSDJB5RwIt0IGzqLSkQJAvDutuMpToQPI1rzGSC28ZBHErdC3QisuYl4FEVcX411qcVKLvB42aSRewZ0m4n3FB3V/yavI9wDZmwsZbfPT1dkZvgCvDN2EOy3K0tS9cvHmt8IrtxeCc9R6Ei5FVgDbp6+MtnnXIF4ula4Yr2Ri6SJuSzmbLnl5MN3cNvE2pVcpxtWX7WoRXtxEC5C56PwrIETeYzneOeFS5ZEnawETCrXIbTzwBsBQljNYG9WFfdObqWbdxMxFwtuifaGUfYlXKu8V6F568cBNiCHOvCHydozr3KipBVsPIEWTNtHHlbBv30U15ewr575JKm/zosWtjpZ5FXmxnEUHVtsp+GQTdVzqfmVfV8i+WeUNZN8t77iONtLI6Zn6v8O1rHYKcTPeXfsmXsB21bw8wL5+zSU11zl7bygzzWl2B5ExbRg7JbS5fc2Ofc8Hl7ZcOeeVR/f4lmQnnfGJN+DOTHz0iIIElNvXfWZfEPvSiXV8eQSvITbiRdyUcp14KXJKnnQ7OZFQ4g0Smts3jR3u5QH2Vcm+lB0pZw9w/UjF.Dg1k08/NK+rqR9mU0qj+1LtzbNRi0cKZVw6yaavdMG2TcUHRbyygMGS9253fDuQ+zbV3/29J0T7yPtew?TnlK72Fg3vqK93b7+px3Yl6lqgfZl+AM8crD95xH4Z2F9wb75sOCnFxkWBgeYd+O7bvUCbfB9LrthHfmtXDrJlrY5RX7llFWeTILLpgbcm8+RynDWdu1L/PSJrafz75i38Dr5YeFhnhRiyLr2QZAspYwKDbADRNX+HzWn9gxC836Dh5p3wXFuFzNEsscaGzb7dpXeNtPh4Waedm+VTlesS8OC6ZTSUOLuEHBFoNBfloElsfI4IMJMnHlw8L+B6GlZ315y0SyJqBaumgVwPY9ZhSFBx6KKNZY3hvZROYd9mb9+UGzvrwk1odMo1KQR1P43GbRXoHYlw9ouIlh1741z/qFeVFvs90CUHHDp1+Ge39/j8Tb/bHt+FNt6x6J0BROwZ59F9UVnvUJ950nePPmtTZmrdRuk1xBYeCP07s2PP+GsaKZUOzLCeZ58XP7Tsm+TclXk6wJ7atrFL9eBfj11zv5yMmxt6eI346Jfdty9s2Hhbsqf/q+WmPG8rwyphbQxr62qH3zMfXOklmfTxuRty/Gm4+phVx0fvpqW+Lpuz+mlrGv8FprvOAOOqzi+b8J2+tBa91GmfZfGhZeyvGyfe3l4dklXr9ed2F77RKv/vqwUNC+wusjLwiv1wzcMV9gdef1FmXGL9iXeIei9mVe+kgxXPCGxDus1yNdyHVIvN3XZv16GYva9/JDVbLv+tfmjdYM3APeaUJSTwFNsq/pf9u+nF9+y1SYd7DWDom37zvNwCMQX8W0fN13X2xXk/DimKqKnTaYdyH7Cq/XDOxXXrZvusb19ovtinl/0KxbzL6JN5B9Uzn3o2a5ldcHllsDxsTrv9CueBCNKsU7kdKooSClt9dJw8oX5JoCEi62q6cW88qfSCFffi0BT85L2Uw8cMULW17CfXIxTSP5PAqv4H4XXki8G76ct3lC3r/6q7/6K/my/UTH4hO+NGXxZyD8XePdQI6b+VtRHIiR9YSxGEy6OJUpjHscrmAghXDwWEAYWWAeVycOoMil5ljRPP0hvDVi5OkV3l8GShwGSn4xVoAlvX8E77zDK+UsgbvlzIGSX4oW3D+Cl3KxY98NbxaY23yPd4v7WF5x5X6Z5oF7ccyLsQzMItw/Ib2M8f/u62A1YhAMAnDUPQostEXconn/t+wPEzoRHGxP6s55Lh/4D8npnPf++4r3zrnzPAvmSha9R63Uxou9qrXcUy0558d0b5TeAi+L2ts8Z4ArweR+LeH9BONS0FFxvrKInmHu5xvorZVacNGbP1euZVzeD3qboie377V2jiZmYjQtuPO8ASskvZihTlGfL70GjjetceFddq7KX+eq2vm2XoBzRKAld4Xz1V5Z9L/ny7mi1xIZaK21hPc1nisWO+uc+14G2uleXuVwrsbni6LyPsjde65KKe1ztjLSYulde650UZyveUUCuCt+bdAripyr9nw1OJC7+VzFuxfpYOd7R+f7r7k6tDcI7f5zRa8h6RTcrX6O9FzpHGskPXtJo2K6AsZGeXYTRHF7b+h7B0V6j7fwpune+ef7zt4wLG52vj+tefmZj0hxVw)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?ALQ?ABwCAM?ACAaqqi)MFBMVEWj05zv+O7o9Ob8/vze79v::j8uH6/Pnr9urg8N70+vP3+/bf79zG4sHR6M61269duYTT?ACd0lEQVR4Xu3a646bQAyG4fg4ByC5/7vtFqlqtsV4UcvaI817Bc8P5wtBeXx38h/KhZ7oiZ7oiZ7oiZ7oiZ7oiZ7oiZ7oiZ7oiZ7oiZ7oid7wvTHQm3xqCPSrJET75uHQW5Hh0E+R4dAqw6G3IqOhty6SHe2T86OLDIh+joh+jYh+aGK0/5hUbkED0h2T13cibs870NR4hRvQP7H8ejxuQVf+SPtVtN9OvgddVt7Tchntdxca+VeVRkF3/l2DQdDK72kfAQ38R1jSo6nxX1VKjq58UIPU6MLH6ZIYjWyFJSu6s91aKSda+azWM6KBnXRJh6bGbkjJ0Mh+3CAVeuGvpT0RWvmrYcmC7nyhSinQ1PhKDTKgK19Ml3B0WflyWILRyEYK0E5OOwhtz93yEYkI1ZPTDkTrEejteJCNMA4Nhx5/xLlRCNqeu+qPOINc0uJel8/h3vMK2p47RHRGXOUSGuUkvIYubAXOM2uPQyMbNZI9MswoYejOVuCMeIlDKxup88xaJQwNbLV4cxeGpsZG1fkU;ShK1uRN3cx6H+buzg0HoOZG52POMb98aob10q1e3MXh1Z7Fs5HvEoYGuxr9uYuDG0MA5CIO3dhaHTfNFZr7uLQ0Nw3jV35oCUQLVRX73VMNeYuDH36668BGQ9LawlGiyx69qZRjbkLRovYp41gzF08WqjyhbpkQBunbaSSAG1sm9mSA/122n5VUqGFkN0aJUPv8+cEkg4t0pvzKcyIFoKV7Xo6tD9/KOnQ/mmXdGh:qpkRdvf7I3Sof3TBsmKtr/ZVdKh/dPu6dD+aaNkQ/unvZZ0aP+0q6RC+8HKjUZDC2EXox88iqN9rB8Rz)ABJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AG4?ACCAgM?ADasxWR)DFBMVEX/6Nn:/+VlZX29va5ksB5)SElEQVR4AWPACZj/f0DmjkqOSjKtQgcLyJccZiEE9SOmP8mXHEaBMBoIo4EwGggryJccvvVKKAogTnJUclRyVHLklgmjkqOS?LWyrsxEHLD)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AJg?ABZCAM?AD1qB0C)GFBMVEX:/+vr6/Nzc1kZGSNjY3k5OQxMTE?ABgpITo?ADeUlEQVR4Xu1Z23YcIQxbX/n/P273lMYJRSilM4d5qB5DwAIJe7y8NqEi+noeIttPpD6S1xvyMGLZOvKGACqyu19pHTccmfwyyR41L2JGJuwunbEz224jVlv2bWJ4/j4USHGlx454JO66la3g/3Ytr82w0ZAU0hGUWc2+x2ItpolTuZpu5pT/vndzfpSvM3BkMakbcQSGlPTDpTmBksRi9wMoedxiAZQ8bjFFSnqd4xFIKTm3mBwnFnPvxek0ZnOJ83U6jcmOxRTUUj5JKbFBMu34Tdi18JVBSJ8LG7cQz7cW8ir0SfVnhEFJbQv4JABMwlEUmkU1Fx20Ex2UlIZR4SsAcqJWCa5th8Gt4jQWpSxEjLNg42azcUEiYGJ1J62jdaQV/EuOMTMcoI2wfp1cVFWMtwkyH4/1PJEYhLdBBxsJhH2OolkDa2KAL0uvNicWU0ktZh2MLVd21AKzukG8IlDtsqmuiAk4Cf8uMVlZGIfAMfogTCKXERM8tCDmaBIpHNSLupB6qaXOhwRuBnqR98K4SkNiiebYdxsGZ8TIdw2Y6JsW4140EhsO+lTJwALggsZPFLsf6JxcAKJUsk5Htog5UB9YjKY7fqKcWAlGBCAWo5d2h1hyAbjF+IlyYuOY86zJLcZPFBNLsLL+lQC8YeEFhKcLGcNzAXhPzG83/zLxCr+RXoNITgqIL+LYoOReBc+9gmWLOLUqEGDfYryAkGzhWIB7LRYL74eZ6WUW4+mVe5/Hu99izvZ1v8UE0y4lOfwKi/GCpZA2FeAmi/FRLsC+xfjt5mF4+8AtRkLvbAtflssspmA2HlQNLEBuZxV+u2vQkRSmSADjku9X8E;Z?llBLjkvM8ZVjIJA81VEojJxYV?opQIiZZgLX47888BcXbjBrBbIeI2b0fVYJL/QbqaKjlLcIoeK+INYvUKgL8ErLoO+znJi2AezMCzJYrJA1pInfLLCUtVMcsgQZEYsNprxHVSZXFS7rLGA63lvBZGox08lOU8ltLwNAZulokcjP3AO3gFLUypMYVrwGhH8cuC/X6BHNg1Rw+Vgxnb/ViZUrR0R/a2OI+i/2kahvvI6j+oHD4N/n53H+pX+/BTxvsfbfYhst4KPQznufpddnwU97n/bgT81i9lQl83nZ9XnpItSH78x4ACnLNoPJcQ0B9HiWALhAzR98s0wlubKPew)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AMg?ABJCAM?ABPapnR)MFBMVEX::9amn+z879o6Lx:rj:T/MTH95OP/9PT8ubj/?Dj0cTR/+3b6drx9O/W9ORYTpHN?AEfklEQVR4XtWa23KzOgyF0cFHkvT933Y3wa4QQYPr/RPqdUenhnwjLUUSmYYRs6tinqaQiACAvoVhIAp3q3KOHwmyFsQhMITi5pgf5PNWfoho3ETMHARDBGNxOGZOeU+kAqgOMLyFD4jC3+TIuAZRAWT2u+iewkUcjr8vJa+Alg+PSAQ52iCPbIniBT53yyVUjHDALiCYTflwFQcpSyiZFqH8F0g0R/TCcQjinOOV16HKX0HiKocKCDTB18sC/yVOCwk+XberZ/Vnwt+AxGIHd1vfLIDUuw+IdUBQAtJxSNstVhL6oNVZZ1bqSUcqkSqhkkLuPwhSL4ttYzu9HEKpZpowf84iTmc7TD1ej9IjsMq5HKTDdq5Uu+fTEgG8qh2lWAF4Ub0MiPM832/O8XL9OuLLiSOL0K9AgiSQAYI7cwJv5gTAdbSdThFauqdJnaF4nO19XrdB3hs69HkrCG8pwuwrCDMjGF2Dne19XhcQjZjf5p0AeUc+bUCYudzb7fYPEA+yferyugnij8MhoZN7O2YuaTszP4RDRKd43W4TCkd9VFJjCxHIdeQfEHeTdhT5sR/DeIrXBUTHitSYIBwwF+ZINURUQJ4cTkCkkgPGZ7mrIU1lU+LcnVYq1EAbpQ6vC2K+qz9XDj+r707d5jxju/JF5YC707cmSdfcIGrxup1ZBVzTwdf+V04J3eKmAgA1VYx7C/KBsMXrZvFNe2MCGN3qvC4L9ebelxAKSNq.AtIaPG6NdnAbpTibu3TIOWvRf6+sbOA6LWBLd/mdVcDonvfec82YToGkTgJogkScoPgf/Xwu3XsfabxqjDUI8JB+4/ll9zta/4WFtWn4Eahxes3xZF8Vk7X1D5ajbLXHCFXgfHYg2y3ZaeEcEiZz/BlPJ61oZLEbw2I0laZg5M9sTbOxsyq2ixCTFTQhGP7hBzZ6c9bj/iwCaz0Im7RDwi8FHrHXL2bOzIZPKw0lAobkMTRSQDVZOa7utj2veTBFypJAXDrFbGHH3njAOtlYersYv/Jbo5CiZ6E76DKp7cSAMcB6e/hNQjYGPptxWE7BGGzLZTqSyfM6y17eA8pKmjVDpmLe3swizZDfw+vsz5ssl5eN7aDeCDsWHueM68frYgdiwlpLcTYuWU7a15vX8eG9i3bwYET5vWmJ6h1XfsB/8ndXBdIf96et5vrAGl37RVe7wexvY7Xet12YejYqF/odfu/U6NrJx3uxlPhBK8b8YMO117rdVmr6OkpjeR14RaSKFv0Tte2nwr/lt7pgY9WrzbYKQikYLn2Qq+L9JYqeOl25zsv5sTy3gqNbvyDXu/9vY4WfsLr/fTtIwn2e91umPvp+0nwb3pdxBoFwQL5q163UchvIYBSOMHrZ/8Q97XMInhKZkRLnV4fTLbXB5M9HI8lu/kbTHYdHU66vY5+zMyyB57BZM87Y8j+oe+YAZF+geWt10gOcYvqUpleAul6aCxfGO/XB+CwRrUBODrmG4/TmCDTBGsMiqM1V1J1vVDgNJSYy0yzCJGIEH8H8R86J7+C+8H8W)ABJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AIw?AB4BAM?ADS7QcC)GFBMVEX::0qHKhmbLDvs74yKT4xaH4yqr2tYUVUWgb)fUlEQVR42u3XsQmAMBgF4V9x?OCfVxAdAEdQtwg1il0fsHS8IpIsLob4OvPnKy1V7WXWb+J9pQZZpG3zkRNyowmmmBgYGBgYGBgYGBgYGA+Mn0QHTl3V+o1iYieKifLYq4gilnMYqIVBgYGBgYGBgYGBgYG5gfm3ESx0GvePshxrr29cII)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AL4?AB2CAM?ABBEdl2)MFBMVEX::/9/f46Ojz8vLr6ur9/f35+Pjo5eUEBARpaWnFxcXToqLry8vjs7PKcnLV@AjnvbX?AKRklEQVR4XtSaYY/zNgyDDZCS0va2/f9/u9VWCKG+tElueK/1l9ZI4dBnitYDXPvfxrV98rgst88Vf70sy6f++eN2Wf4bfWIggQ/zzXK5LJf7xBn3Qf8c9bjcIq1vDHpzRHT9DhLWPmAM6yPYmj4xTuIDrMRluat0DNdYhDVEwAwR/v7JM6yvcdfMgE7is1LfI1prOokPkF9T3xioWykP3jKTsCzFIc6gaYZgeRD+5tY3hHIfwFAs9bkVEv4+iXqTfAMjYDmJiMCqHiRSvmekwt+rcsF65ZoXHyHoa00wAPYdvMmlFXLHg7kZkPrGcF0LrTmAPgUA+03rL11hEW8y/JCKoCmEoGAqfRL6RuxX2uXLEAqb4zLCmw0PIag7uQYr3NF9hSyI37A+azV6hOmL6QLOD4KE6Y7QKTlV038cVRz5csKr59mQpmLkxxi1p9BDz6LGr6AKySHMgxiXgA+9RJ6IgWjqqhnpFdBrNWD8EPanUAWRqAL4mJKROvJgAv5wHXuw+YNXDEFovb3HQJ5HlbVyrQS9g0EJs/SW1Zr1hiArn4l5RkkbuFN/LMuPUKVcSRukxQDQTBtIXxGO2iV19SoKD9prcsNtyYsfctxRVMmo2SIti5AszaOrKz1qqXNok8/JDddef0mr+t1hVFHiT6SlfRX5iOgG0sM+RGeo8rE6yb+/NZdMP7E2zqCK5E2@T1SbAwIBgQ1nm+WaxBh96fQJqdxu1wxrI/Vaco4wg6git4/k5aRKO4w1jZCXxgsyQQgAtPlsNnzGqAyK9G1H1WQ75eoGVWMI1LppX+AnGVaKHM41chReyyQJ4t+keMQqtiDkWZUIRmEtSmvVMEZm/nuXfKvDylRzGo7UUU1X0lrG1XkNcNqdE59NjTTl630ewBUt8lwCM7HJvHiLJHWS1SBnJTqpo5PnlIsvUg/k08f5SuSJlQRJE6k9QpVGEGs6mzut7POvVsz7JkFVH4SWRdtUCGDgM+oMpPWblTRM8nXbvU7Bp9Yf8ZVH9GlQ9Hp5XLwgSr60URau1HFYM1sZkyqm4UjsJV+oYRQ+SWCuNTDdbswHewyOgGbT343qoi09ILVrAZUG2/TqqV4DXek/BGgUMEhjZvPyNAWat3ZXlSppKWS5vhhhBLgWfo5JX7Kbk8YxWwBQ0rP46gnvxdVZtIyyAgsbcY2raZLc7jV2geJXGiqPwaROeNkq6TlR1FlJi21Gc7gs74FCapSrSoaC6jwjAESmDvc7N9FWgdQZZu0NKU9QxUHFCjlZKNXLHQrajW16i6rmHBdpLUTVbZJS7CCV6iiLbAbRLGPLKo0jRPWlbLWkw+jyi1+AFXOkpZQpZCWOTBWtTXR68E89MYMGOTT0v3ker4HVc6SllBlJi1kYwuhN+RHAUgniamt7nWs9fw1qpwlLaHKTFqKrop7Dm9e88Nj3JxVf04QhPkgILMnqHKatJT6u0gLgTxSyU+p6oyKDIuQE7TeBqqcJC2l/kvS0oM5UjVJ9ZRTpE7rAdhAlZ+Q1nUHaWn/NZPm1Y3BNsn3CCY9aRRUOUlaQpV9pOVaXpk0gZBivAKgHMSyXkGVk6QlVDlEWsokvaNaILzkD7CWqX3X7stJPyCt22HSMkGBrpbJArYaGOr2t/LjLGnJ+udIq5jFp/rjiE3qGt3qec+TllDlHGlZPpGTSv2hno5Ub8fHGdISqpwmLTmpvlE69cUjXGGzOQ6Slqx/irT++vubIXX1GFYr7fmvgAO@VRJh33Fw/j6+tJnmYwquH2j/p+wWT5KP6Va2hzHSevaH/PfYs1gSY4cBKIlaWwdgMf:+3GTIdxd1kUJffObl7xgaCL50w0xn3pcUBvr1Lk2Q/9iG0IN5vMMFedtIIrjt8V82jQTjLsa5+DSL/cWfjp4Ms91UnrKaZAuymYHxM/FwT9fTD5Ge4s1i5uEBuKpFWp4+2eFPmYhp0Lzoyk9RlV4vw3nszZd0mR2+3bzynouQCRtCKqhEuKS8Y3SbF2T4Yew9E/NzeS1lNUeXnzPb5NMc5SzjwGLH6UhzNaRpWPSD+7Ssh3ktPbPUE7Fptr6MPDZ1Hl+CsNFprHWbfB02G5Kc6MpFVElTd3Etpx0twBzzEW4IG44xVR5c2d7PAGeAwbU1;0JJHlX3JkhFn2W3wCDan86ckTGgeVfblzAX53gGPfpwy+0fYmyqq1Kp3UhbtswGelz/2jRQalN+LKvtmwP8ET9sAjz8fAxdJK4sqai6vTFQ1iS0SEVOdowYPxx3wqLOUHIcuN/c4kspnVFEH7Ah1c9Zy0dkeMwXQdlK0Na8sg16YfVsUfBxHUplzCvjTzqkALqYa3amqmrkDgLfjmIBHPdSdh46QoQtrs0Ezw36klaGA/f5ou4Bbxoqp5lDZsI5fgkfQDRwYmlcEpP9eegW3ypMvZprTHxaAHHs4SCoKoE/zUpDa1FYwN/Qyq8CeD8kqTZD+NC8FvWFqKxsm6FU/imz5EM9TQ3+e16y6j2EMvOVy+jV4bNuHRCWfV3PsjissbRgk/dTgcXqCqahk81L8liuswDPxzBfFLu77ELieVwNtpaTeXMVO/eSZoM4GTo9KPq/ElyfQc2YBnryf/g54clA7ettWQcmmPKs4ZzHSbDDxMjUYuoSJ2kOqOoMaZf5zxuWRpDtnvQceZ67mJLzI3c3QCjw9BU/9nzQpeLgEz1gQroPpl0w@tYfM9XWsh8L2csqhuXZwJllaoAVVyeu4/Ukq2qPmYK31AfbXlYx9Ao84xI8XcWRxFoBiKieQK2qC3Q6+tDcO5I4M98UiMpCKgDYmqsmQQnRcc+c7J83oaXZQJGonKXi0djFr6NmDmBj/0iC3mRxnlXy1ACi7d7PrAJoZU5C++DZzyrY2PhKu8DcPJLsbe5Iskpe2VoywytzEop+Sgla3Ezzyh7iHK0YsX/edHqJgxoUvvWZGpbV9sFT46AGheL9DiRy8Nhfbe7E65tpXgk5df9QmJPihrsLHkHvgqI5WK/aLxhRg8f8JLTAwU1QNAHE9Eb7s2w/+qnN/tzLKvmxZQoA7mbar9pXrMB+eiTxeVZLwTPxonJSU4v5SE/IkxwuMf1UBp4wAYneAc/LhzSmqjjJgSlDigCA7J83KxzUoPhljOe48upBF8jSSuqL8gXfyCqpZXiWfAkko8vAKwcQ/dQbV2SVvBJS7GGM3SH99ju0wiA5l1mlrzduP6tA6su7fqnnniFvH5J+iutsnlXySuLea8cWjV1O17D33lUUyyvbr38KlRVT5L96V0m2Ztcu51iHxBwvtJ9Vdo2t4a3KNoam/eyDB1pe2Y6kzNOLzzZ45hZ4OuSVzc1V0Pp4Bu1731WishdJDewFcvKvvqvsZ5WdSKrOKzIGaAqe739XkVP7LqYZ+bs5+IkYujKk/QXHrJQ/6LLQvKqE1AHAJU75X1JVEwdcF5sGYvog+/z1D9Hrfsg3l4WKSmioCYnclqwexlkuOo7/TW2qqsQpH0RMLxpqqiIAuNj5Cv0PJGHeo8tm4Og)ASUVORK5CYII=!C%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?AK)CFCAM?ADrcAOa?ABgFBMVEU?AD:/9hY2IbHRqiqJZ7g3iPlIzu+9v6/ejz/ebv/N3+/vbn+s31/ej+/u/q7PT8/vP:vL4/M77/dtOUU64vp/7/frFx74uMSzc9dr3/fG4s879/OTI0OXN8sPy9PnI8Lzx+/Cn2Mzo+9jbxNbk6PPqycz77tP7/dTw/Mv26ej88t357uu/x+Lb+b3DzeKcweLE77zW3Oz99+vFvMf779bJ96j7/u/U1NTk+ce4w97f4N82PS89OkD4+fk+SD/C2afa4e3b5MTl6tnq8Nzq+ern1eX99OPK7ML:O/55LjV2cPw8fjw5e/M9rzr3+qq7MfT9s3x3t/L5uWw7M7k+ODE3trizNv4+8blv8PP+LDV6+rTtszH8Lqt2c/y2s7HrtWhx9zC8rG13tO37tK/8a33/Mud6Mrn/bv2+8SfzNr79PL9+O389vXy9Lzj8uL558Gi6sTlu771+73Qscn++/Hu09XOstLQ7sr44bDB88rCqdXm6rf19NbP+aX33KQ7zRWn?AGGklEQVR4Xu3bVXPrOBiAYRnDzFxmZmY8yMzMsMjw11eq9bmOJW3TZHuiOeP3JpPJzTOfLVV1UxRNRK1C7uJ+YQFuQR+v7kVuY87Cvm5RKBFKWIWY5uPx+DwXGOEWCPLytQiMJkTA+DzOzwcGOEUCPuJxFez+akAP6AE9oAf0gNs53VDX8xpCSNNW06ph6pncwk6xGIm0HxjJmauIn5Y2zJnlYrwYbB9wR8+jkzIVRSm2BxjQNYQkBp5fB0PaLC0sb49E/JGdne3zuYxuGqo9Wr1dwAwFqDM1JTvPrmLfFl47aQ1lsooSEQFXVlZWF7LZbhZIPwk2DdQtnrGsKCHMAyDT1nbAFxAuEoRbUBQOkH4SaBJIfWnMU+ab2AfPHJizxreGxwc6qYDbGtz+cb+UQBX2D5gfACNsBMjJ1yKw7C9b+aP+uqLlVCpDfGoW+5J1DYY5dYdJi0xORth2uYFBIVCUP5UcJBug1osHmBysK7zI8MB2hkC/C1hOZuAG9Nf7XoX5nS3Q7ypaHlCxL79GBuhqUNwbfpQxKPwk4OOHUuXUUWWm1BYMMOCaSfgqvyp++ZXpgEQZhQMmCvxc4IcGoJQ7n0mAMQwcc/f7DU4vblzBPWLqIlHGrS4mCrx/nR+iMOxjgGSJqNhXZIEvuBHmc6YuogQg628aaF3hGQzslhJIN8ELcIUlBBrYl4YrLCNwhZ6SA5IC/7JvQUmB5wmQHAMXZQTCGlmDNSIh0MS+VezLy;0YJuWFZjGQAMWcRPAddRsNUVpBJinJ4WgrECEK8EuIyFwhwBzLQDVdFo9jgDgPST65MLaWgPALbq6lHCbFwmA+Pv0GQK7GgQmBWUAOHaPbfL1FV7fiQ+sjU7wvjv09g6/DByn780x/X3l9XeiuphcQBjfcx7wPhO60wYg1BJQpwteXiCcFeZkBirSAT0ggOUFQg0D3wqygc/Y5h69E1biRxm3Z5;8PLeUfjFCt42CZx4ymti4unEH/woo+dHuwc0Cty7TdpjahHI1ijwAQQT/DaBNQx8KCkwIz0QDguXZAb2SgzcgANrVWbgAgZelRT4JwHmJAZ+gqdvBdmAkEafLNw8AyCpUeAPotYx0CTAl0xzXU0DqQrzemh1h4XLTGKgSp9u7Z4G+O4Y2NKThYt2YqCJgesYWGwSuNrKs5lGgDrCZbFQVqC9U3dICvxkb4TNAe2ekOBE/QDqcS2Si3skYDUCvLMCy1hWoEr/0tQpK9B+tvBMUuCGfRNKChxboc/5d2UFGhio1eAaywOExjbgOwuF1oDOw8IvUA:Z/FpJvjmZRoD81lFyZ7iNPOE6cgDE7wL9d3us4IJXiNdHKrT4bfoFZR0NbA4qSNchmyFHXVdGl8S9j3TkYcyvvwDnYMocLifNLzvDoBsGDhJlokWwyOstgs4/J/ADh3RM1enpMCONIJztaTADc0Wygm0LjIysyCUDIgzEUldxvdhVTrgQ5KBjjJjeIjVh0dxgaXS0tL4KAUyUcY5G/gb5AIO1wVAwT5ozctEVkZuTeksVMkEby2NHrdU0k01rSG9llU2R+8yObfjL7brC0SBRDY7u+9qeh8lRQ2EJ6tWmTwlaqo5s7D8uXD1eqUyvlTCMMNQV53fRO+t9DH9TKKMfts1C0OiwA/TpA/uphsBVg8MDdWlib7LH2scCAHQmhh2OjsRCG0AUZyGgdk2AKEDXWjUVEPPLcd6p6YqlfYAoQ3dUNN5y6nlrX/JKY1PbW5OVcZJFT6Q9hhsALTrx4sB1zoQunRrdJxJSqAH9IAe0AN6QA940om6gxcGcrLQbt5dAPY9PuesH6o76QPMAUxBZXfBgrDNKW6buGvChmad7Tv78JMVvDpCcVGJ4q6ozpi4Eab3ViPTZWdRZ4mQMDQvKhq5KRTGeoUNMVHn0Egd8LCuUMLqlEAcH9jbFDAlBiaaAXbunnKCMRLHB4knmBBOMGED4+5CxU5htQu8aqT37j7aRROijj1MxxM8A6BLeHgsOmwNCKu4USB0EtDZNwL0gB7QA3pAD+gBPaAH9IAeMP7:k7ykYIgx9uEsJBIGPoqEwTpYV0J5zjFE/wXzd93x5vnhJo)ASUVORK5CYII=!