["..G$ ","|introduces virtual method|private virtual method$","OINHhNOO// Compile-time type is A.NOO// Runtime type is hNNusing System;NNhclassh AN{NOpublic hvirtualh void Test()NO{NOOConsole.WriteLine(hHA.TestHh);NO}N}NNhclassh B : AN{NOpublic hoverrideh void Test()NO{NOOConsole.WriteLine(hHB.TestHh);NO}N}NNclass ProgramN{NOstatic void Main()NO{hIA as well.NOOhA ref1 = new A();NOOref1.Test();hNIB.NOOhA ref2 = new B();NOOref2.Test();NO}N}NNhNNA.TestNB.TesthNNclass AN{NOhprivateh hvirtualh int Test()NO{NOOreturn 1;NO}N}NNclass ProgramN{NOstatic void Main()NO{NO}N}NNhResultshNNError 1N'A.Test()': virtual or abstract members cannot be privateh","A-BEBeCAesCX#CE| 57455466}[)b~CEXCXC 57F+C3CECCX","Virtual."," A virtual method can be redefined. The virtual keyword designates a method that is overridden in derived classes. We can add derived types without modifying the rest of the program. The runtime type of objects thus determines behavior.","This program"," introduces 2 classes. Class A has a public virtual method called Test. Class B, meanwhile, derives from class A and it provides a public override method called Test as well. ","The virtual modifier tells the compiler that when any class derived from class A is used, an override method should be called.","Override ","override","With virtual methods,"," the runtime type is always used to determine the best method implementation. In Main, ref1 has a compile-time and runtime type of A. On the other hand, ref2 has a compile-time type of A but a runtime type of B.","Discussion."," Why would you need to use virtual methods? Your program may be designed in such a way that you do not know all the types of objects that will occur when it is executed. You can provide a standard (base) type and design around that type.","Then,"," you can re-implement important functionality depending on the more specific (derived) types. When you call a method on the base type, you invoke the more derived (and useful) method. ","Abstract: ","The term abstract refers to a conceptual type, one that specifies common characteristics but lacks an implementation.","An abstract class then is used as a template for derived classes that can actually exist.","Abstract ","abstract","Private virtual."," Private virtual methods cannot be declared in the C# language. In programming languages, polymorphism based on types is a way to virtualize the entry point to a data object. For private methods, you have already entered the data object. ","Thus: ","No virtualized entry point is ever required. And a private virtual method is not useful.","In this example,"," we see both a program that attempts to use a private virtual method member, as well as the compile-time error that the program triggers. As a reminder, the error occurs during the static compilation phase. ","This means that no program that declares a private virtual method will ever be executed in any way.","Virtual methods"," are an implementation of type-based polymorphism. When you have a derived class and a base class, the derived class can re-implement the base class virtual method. This gives you a dynamic entry point to the class type. ","This enables you to clearly separate the usage of the type from the implementation of each subtype.","Whenever a private method"," is invoked, the type has already been entered. You can always define custom private methods on a type. If you are already inside the type, you can simply call a regular instance private method. ","Further: ","Instance and static methods are faster to invoke than interface and virtual methods.","Static ","static","Notice: ","Unlike in the C# language, private virtual methods are allowed in the C++ programming language.","They are used in some design patterns that emphasize the importance of overriding only certain pieces of an algorithm.","Summary."," Virtual specifies that the method can be overridden in derived types. It tells the compiler to generate code that selects an override method. A virtual method can have an implementation. It is called like any other method."]

%iVBORw0KG;)NSUhEUg?ANI)1CAM)DBkVK)MFBMVEX::YlrPsbZex+/7+r8TQ/P6W9/v/7/Oxy9rEssfk/v+h4ev/0t3/Gmv13+aL+v54uCjD?ADTUlEQVR4Xu3X247DIAwE0Njcc2n:2+XIsWCTt1cFJR96DwmEeZIOywdDmVZMw:LbPs7X+TfqQf6bmGD5GCXdORM8rm+pOwtf1JP9KP5HLolX9Oesw5ocOk+0hjt0mYH+lHGtdsSoIlvp4UZmuZeclhZvvYIPF60HKzyLLGqhcifGZZln00pO3F8MwXDS/v4fkriWRe+HhrCntJwWbO5aTiwXD4QrKwevOUh32kQMLrQMKwQoI/MVyJ9pFekylNHUjMRDFOz5wpRuJmKST5FTg1cHFTceLtAZ8tFGX7ZQqGFlhNSMppMjoDy0xUuZFkGiGDOwvCHhKTz4DLScWDiVVPgOTq1eUkkKdTYW6SOAmgHwlN9nOX6nnilpXSstA2KRbANikx8wUk2S1/JnmBV27fVkknYfIgOysk9+JcQ/JfSAbOB6jSIVLR9ic9SeBAeiuTUqX9pKELyZuSipRU0nuZHm2VTpOaDcQck3OcNLxdKp2Q4heSb0hWSFKlAyTjxo0L8hESpumJTjK1G8/YxwYJOF1IchMnhCPJwSEi6qmgd5CmRIXZiRSsXIJ4k9QY+R0ZM1EhAbMjyWbKARKUaYYq3U2iWkQ7SO35VgweqnQnyb4gFGOUbW2TXHM+UEFLuYa7SSFNothFQiRDlW4lOanFEdLg28s4VOkmkpTiBMm054OBKt1Gcs+TJNeeD1ClziSrk/xZkignIUmVbiW5+p+5c+M4Alwb5GtlgipdQ;qibcb8aR15l6SqSfEatx8HWlWSYvdJCXtq+0WUiZ5qNIlpMXOJQEPpIXLGyDB7x4gzTqzrg9U6RKSZG5ISb294YCFbE5D4qCWtjrkCKrUkzTtI5ECz1ORBGVKUKWzJNyRkNyHV/TlDpCOk2TEFH0lHi4ieeISOQvGpyQSMxPFTNGPB8+rKFVDdVI7Aqp0miQ7auhWtBgkSRJldnOBnYrpoZBghFSpF8nsIjnQwnJYWpwOVTpPcjrJ7SIN/hxJGaH1YlSeYXBHydqH8gpGgxxDQIIDt465gAQ7cvVAPVhHjIxFklYmdwVpMEjSftt5AyQw4XdI0qs8XkCCjTvVa5y2Mdd6RllTI/WPM2Xrxjg3fn7nsweDXxlZYMyPVMAfiN08uNcDivY)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=$/9j/2wBD?UFBQUFBQUFBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwf/wQARCACnAMgDACI?RE?hEA/8QAb?B?MBAQEB)))?ECAwQFBggQ?ICAQIEBQEGAwk))BAgMRBCESEyIxBUFRYXEyFEJicoGSI1KRM6Kys8LS0/DyEQE?gMB?MBAQ))?AQIDERITBCIxMoL/2gAMAw?AQECAQA/AP2WAGBBVsMhgMjJVsjITpbIyV3GQaXyTkzyWTBpoSiiLB.))))?IZIYFGVZZkAUZVvY0wc+pkq6bJfoTCdpU4vtJMseKrkWWoa7Notwr6PZyWTPF+12LzT+QvEeHvDb2Y4selXuJmh4sPFNK3hycX7o9Kq6uxZhOMl6wfEVmLVIvW346QUyWyQlI)?G?y))AIG.BTB43i93Lqqrz9U8/s/wDZ7Z8j43bxauNf8kI/un/2BpjjqzPNPONyc4vzTjjk2jE305Iu25jMZTbPS0WgWq5vFKUVFRw0bWeCW/csjL864SO61tytxktXp87bLEZPO+DipdkZLDefVM9u/wAL1sIv+E5fk6jgWnlCWJRcfZrhN6Xryvh6p+vV0ms1ccLmyx+Pq/zD3qdZa11Ri/jpPnqIbo9ipbGGSKuqPs9SOpi/Jo0jdV/Ov8JwLsIwU5xXuY6qnT1QQiTNAQyS)?CcggASBkgCckDJXIFjlu02nuy7K4Sfq11fvN8kA108ifhel7xUofD/AOQx+wcPaWf0PbwUcUX7sp41ZaOnk1NPu2dhSPZItkpK+uUlZRUlhpP2aLEMDklpdPn6Ir46TOdUa0sZ39TuZxXPqS9EXibJhlk2ofXn0Ryylg208umUvfBM/wAkvQ4ieI4+ZuTGwzZ9u5MGVcjULg)?ABXJDIbANjJVv0KhOlsjJTiimllZZJKwC3cJAPIuiME4IVShgIicuBdshCGeNfP+NZ84PUlfXh98ng3Pd+ppjhEyu7X6l46hxjhJYPNcy8Z7F7wxvfl2vUexeu9Z7nmSkTCW5yuf0fU6Z8UW08rsbnNoljTVv9ToLu6n8gyQyMhOl0WM0yyAs?KMq/M4LvEaoNxrTnL1+mJwT1V1r3lj2X0k6aRjs9WV9cNs5fsc09U/hex53GVc2W00ilXU7mnlPc9eucbIRsXmj5tts9HQ3OKlU37orKMn8vWyWRyuwKwrtz9utEo4LNXXV3bb9EcstdZN7dEf7xaI6V7q9mUox7s57J8eNtkcMbPctzdixtNjWDytRJJs6Lr9nuePdcnLu0s7s3pCl5Zys6jSM9hbobIvpnGS/aZRhbB/T/qJvzZzZJbCMtymSqZyTS1rMNvc02uujFR4k4pYSaPWhqeJLK/ofJws3PWot7F/Pl14clnuKSK5ZzwmbpldOyJaJlkUXcsiCVkAgEPNu0DnZKyDXU84Zyy0d0fuNr26j3wTtpGSz5aUHHumjCUj6PXf2Pyz52a3NVL5kRyzeLcJLHdHPF7m6KXc05+nRK45532ds7ewaMpI5pYzNmafUbRZngldi+O/KkS6FMrK14MsmcpG3pWv6vGTlhdc99zy7bMs7dRjh4m9keNZdv0r9Z/7DswT3Vf7Xr1D2adWuQlOW8dvzFXquJ9K/VniRm85y2dtb2LTj5YzDuU5S82TuZwW6OvlGcxyp5sY5yd1E8YMeUaRiystaQ9mqeyO2Mtjx6ZHpVyMJh2Y+rOwumY8Wxbi37GbZsgQgFGo?4tZjpz8nhXbZwexqpdUv6HkWrc2o58jhWcnZWsoyUOo7K4Frsop0cGxlKDO5QLcvKMOOms43lOLIw0ek6TPk7djPjljONw8LIcDu5XsSqX6FNHDybauKLi+zPnLqnGT23R9rZXhbrc8e6hOTk4rJ2fFyWxem3V8fBk/w+djCXozrqZ0yhuUUFGWfU6/btvk+PWtendTDserVX0rJz6PTXXJOMHw+r6YnvVaRQS4nn4MMl2fnV5vKIdR6U44k+nC8tjCWDHa1MNXJGO521M533NK5bkOnX1ehFmkVuYRZ01rZsqxlqgECGbRBvZ+xBjqeZyLVBOUmsJL8YJeLZbxNv1Of6nssv2PQq8Ok97ZY/BA7Y0V1rEYpG3dasIpa368yGmk0s4R1V1L0OxRHYpN+m0Uc/BuOE2kvMrjIW0z4QorJsoLzNFhdiqOGMaDTkx4WsdzRFkQjXLyp19zzrq+57WpXDLPkzhdVlzxCLfv8AdJh0Ul87dDdm3hcFLWVp182PZ9HFwfjPoa/CKs8V0nP8H0xPUhVXVHhrhGEfRdJbtpfPXnlGCDUr;5FMFJVRl3in8muBgJ245aOmXrF+zMvsLT2mn8o9LBYbW7s8+NNsfLPwdlccRRoSFZnpAJAQgDBKAhorguyAM2VLtENBMM3uC+CMe5KyoLYGAJRZEJFkQrKJQjNJSSeN9zRLYgkI?AwRgkAQ.BBO)))AgrguAM8DBoAMsE4NABmXRIAI))))?f/2Q==%iVBORw0KG;)NSUhEUg?AGo?ACZCAM?ADw+V8S)DFBMVEX::09PTk5OTU1NQ/cPF/?ABzUlEQVR4Xu3bQarDMBRD0Xel/e/5w59m0FiNRQnWBg6vBidynVkOAJIAYLYEJF9j6VHxqly9Zxzfiig4T2jycpQPVM.4yiA4hCs0ebB8BMhWKRtlvxYFIy0w8J2x5JdsmR3LLwl1CSbmmQHy5RGNcmmJlk1yaYm2aGUj4ULUSblY9lvG2t6Fj1LU7M065b+k+/vrBcNpGxzIik0KKGGqDkRVQayiqaAGrJekVBDVCqIXjGI6ktEDTv7xHyyZrZQV0uzjxpWpZwaLtI2aliTcE4NK9LoG2pYkPiy1BFIITXclCboCGGClpUFL6QnqSaZySO3hpJLQ+HF9CRq59SqSaa0TLZ+XZLX05OIJLckEkm5dCRzpIUOVd8j+vsek6Ug1Z6E/af7qCaNay981KSR3Wo2PWl60hSkoOy2KE2NokZp3kjxQupQhzrUoUb3klAnJ/nVZYl9joILvRkUNI+8jjQwglawqWGpJtmqSbYqUm71i0i/M8qt0kiv3ssrKaxU/+9Eq0e59vvZzAvPHK0nqUMdih+m6O0W1T2wtVgqPq+6d3ryqDBUdIW3ZdVepM20LGpVhFrBolVQ1ardpnCYEEA5pgAKPiYvnDYCRMgfJbla10Up7Tk)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AOs?ACFCAM?ACNKv/N)YFBMVEX::/8:/1f:z::P:2f:5v:4v:+f/M2v/W4f:6:/zP9eXl45OTn9/f3f6P/s8f/q6ur7+/v+/v79/v+Q@DQ3f/x9f/+:+fn5/8/Pz4+v/7/P/39/e9vb3JuSWt?ADnklEQVR4AezasarFIBCEYVu3UVFJggn3/d/yLBZyiygKB06GzF/bfK075jslzTlXtNiraPomaQa5Sm3QEbdi8al2pob9u4/WB1Wpk1bF4lvjlDWCW9OyNUFby7S14FvjpDWiW92S1dGKYqWVVlpppZVWWmmllVZaaaUVNFpppZVWWgH/h9fD/fdfD/eeg9qiFZm6fn991YbgV9HKHQz3TQ2r3H7OIVDP4GWzdhMfzgG2aoelh1OPIPZfEo4utjZgPp26N2nT7qajHQQgzd7e5LPphOrULrG3yWVgG1Bfgs1iu0n+UGN2y42DMBj9BEiQWvZs05m0zUXf/zG3Y1fYqG28NL7YnpsAEcyc4U8Yuww8M+AX4Pdqwx/sIjoj+P95Od3k5X5XWkAXyfXq5Hwdx2kcr2dsebjt+vB6tyvrDLognWH8hLfLZFzeUHk87fD4+1zP47Qynven1XgAPEQyQ2njmgcRISykQWaoABR0hqjU5VykAImWqIHqwMNST0iDzgQi9PK0qBrjk+XAp11cblxYK1HM1QiEd/KmAayGWHmIShJ8L9pEklbQy2VquTRLuGcRk27JzlVjalSVnatB0vQqQIl6iOt58pybC6fj2kna@yrCop2u2oGsh7jep0817pdezesNpB3DRh+4MqAHuQ6Tp4RM8/7rs+fXSNz8K6VImbNHG67Bq4N7d6gY1wNzJz+AbSU5bj0rjmFamGE7M7hqhaooJCIsHONWd6hO87h6UDXIX65hgXZnHQl0vZ+tWImILFusZWfO+7XznntX8PVxLtagVLUFXauvmiswxzvOv70bOJvXdlahkbC2ofGtWiLk7NqSDjsHO6/c2wZZueazZBSKcLxk2sUsuLqEsm5amDmKLXKctD92pFLeFcONg/yxQxFZnauNvXOld3Ja5F0fN7UnyOytnhXBqmx59rYxW8SksPy4f7cf9hxpVaDrYdzRfSu0tTW/w975/S/6VK86ZrRuMZiPbyreNcUGtf6/3Hv19fet7o9R0IOHxcjBzWYABSO1bwAazYxbF0hSxTn+GGXJGyHyToTDvguccc3mEREBcD8s0AzMHydNqFtUALSGlm2gakO0c/fdu3YB?QBqJobeP+41rbSEBETt/f4LW5bN/W3Ezdwm0cgdtVveRNsl7W1vxQ9R+C80ltHSsrKysrKysrKysrKysrKysrKysrKysrK+u1WFklSZLUp1hZWT+1srKysrKysrIO0+xfN4TEF4o)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AMg?ABFC)?qHfZE?ADUUlEQVR4Xu3XzY3jMAyA0allC2ER6sF1CNDJN5egItgDa2AFrECH3LhDSACh8U9gJ9lZGPpODmEP/DRRnHzpO0NLf6X3QsC6NWRA2LoDBKwB+XADMiAFE0DMfHgK6otRjgAwpbQgMp+ACKYAEBeUXQhYSgFquewtFAbAw/WbbFK0hfaKesYEXeppAg+S9pXsF+EhBP3EvA0pCeAJJHe3Hg0inQPgGqRE8CDvQ/poCyIBnkKoneLQST1luApZoIuPIZkpgzVtQQI8h0i7B7/tvL7VCZ@8QyEbBRQtNQNkI8gQWyAYMm2FEKWXYhvkvUWcabTVhBhBost0ZWRfXmmHYg7tPgbaAWZ6OnjK/sy6OLHLoNQdiA+WyWrBTiAsN/Kars74xjSb5Jg9tW6op6E9P/b55DuorQBKXoM8bVbVsvoMqCrEPGlgukY4ls0bkqPIb5JJt+gtILLBUjycbfZn0PgGsQ3iR954vCTkMnG6bsINf48xP8PcfUUuQyBH6F+xbioqkSPVHPO8Ce2JsjfKUVPsjX7ANXCP1adPGxQ7MhmIUZ62DWxFd8JCaj/AgLfM4iRxPFvhKSEpOqQ2aMGmVvRIKg0exWy+KBCyBztugqxo1CHxFXfegNEvQZZlS1tsb2gvROej8WGokq2Hqrv2ey/ASk2ZFX09dj8+C1nP37lJAQNwpchTVA9orr7QMQTkGxjOgcp2ZLrkPaeEoOUjYVtC0lwAkI2TqcgDzQH6nVIJUjl9CFY7I4VZOqWfutr83MIs4gw1uNXICXXfIuIiN8PBGRaoLW1GQIxY6+p56f6QyZF2IX04eMViGJuidaWGNc/neIWBHd+WAn06dfODfWJvgSh3Co/IRL88Sz+PvNK2IYo/YSodQxB0dcg3ByoHcSSCWqpaHKIRzsQpQBePIIwEeaMJPr2HKIFU4CwkO4lmACmhKszCi2pfUcpegRR7xOQt/YfQgaEme8BiXG5DWRABgQRbwGxPg/5/QZkQAaEEG8A+dBzhIjvAVHr/pABGZAByRl/HzKeIwPSNyAicgOId3fIgAzIgCzz/AlImT1SC31QmTx7rNbig6wWzZ7Y4DF72P/Z+JkvjSV6FZJ90CDRaxAfNEj0KiR6DeKDAdnrL/qaa5m7OliY)AElFTkSuQmCC!A%iVBORw0KG;)NSUhEUg?AIw?AB4BAM?ADS7QcC)GFBMVEX::0qHKhmbLDvs74yKT4xaH4yqr2tYUVUWgb)fUlEQVR42u3XsQmAMBgF4V9x?OCfVxAdAEdQtwg1il0fsHS8IpIsLob4OvPnKy1V7WXWb+J9pQZZpG3zkRNyowmmmBgYGBgYGBgYGBgYGA+Mn0QHTl3V+o1iYieKifLYq4gilnMYqIVBgYGBgYGBgYGBgYG5gfm3ESx0GvePshxrr29cII)ASUVORK5CYII=$/9j/2wCE?gGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRARDA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycB.gI.oJCw@Cw4LDQsOEQ4ODg4REw0NDg0NExgRDw8PDxEYFhcUFBQXFhoaGBgaGiEhICEhJycnJycnJycnJ:BABEIAHcAyAMAIgABEQECEQH/xABe?E?gMBAQ)))?AQIDBAUGBx?AQMDAgIEBg4JBQE)?AECAwQREgUTISIGMVFhMkFigZHRBxQVFiNSVHGCobHC0uEzNEJyg5Kio8E@VV0s/D/2gAMAw?AQAC?A/APunujB2O9Cese6MHY70J6zh73EbwB3PdCDsd6E9Y90Iex3oT1nE3Sd0A7XuhD2O9Cesyw1DJ8sEXlt195wN06Olv/S/R/yAdMFbi4BYFbmCeow5G+F9gBmfM1njv3IYlqV7ENPcG4AbiVK9hlZKx/UvE5u4Ru8eviAdYGvT1CSt8v7e8zZAXLXJuUyJuAWBW5WWZkLM3r+YBZ8jY25ONTfXc3OHZ5uw1ZKh0rub0dhG4AdZj2yN5Sxyo6h0Tsmr+Z0opWTNyYv5AFw?eH3yd85u93k73eAdLfJ3zm7xO8AdLeOvokn6f6H3jy+93nd6OSfrP8AD++AegyGRhyK5l0aY3PRDOsiWW5yXz5uV3jubc0i7Un7q/YcXdCtISRFN3dIWY0t0jdGJOZurMRvGjukbpOJXM6UFThMzjwv9SnX3DyqSrdO07+4SjLlHS2sbe4WR5pbhZJBgRvmxPVR08aySL61XsQ4s1Y+ofm9f3W9hi1VJ2yb2WUXU3ye40WzFFSxna5FS50klL7pz2yl0kKlzd3e8vDVvgfm1fo9qGhuEbgB6uCojqI0kjX1ovYoOPo8VQ6Xfaqsh/a8ruQAHhs1LZqYUuXQAyZjcMYAL7h6Poq79c/h/fPLqqno+iS/rv8AC++SQ7qPRucYnPLvMDjOw0pnWJV5w5rxSOj+KvD5jscTVrKVZ25s/SN+vuLubwMEUqo6y9SnN3CFkMLsmKrXIt08SlciljZVTNuEbhhyJY18rkYxMndxNimRuUbVlqG+TzO8x2sjTpKdKaPy3cXL/g2LmRrbIaskuTuHUhkyJR5iuTcmxXMzXa9qsemTXJbicSvon0jtxl3QOX+VexTsMvc2WsbIxWPRHNcnM3xKhikahtU8inlWyGRJDPqemPoXbsd3U7l87V8o0Eca6nQTqNrM6Omac+tduSXbTtXzu7kMWk6W+uduy3bTNXzuXsb6z1bGMjYjGIjWtTlb2EEksY2NqMYiNa1OCeJEBIAOT72tE+S/3JPxk+9vRfkv9yT8R1QAcn3uaN8m/rk/ER73NF+Tf1yfiOsQoBxndHNG+Tf1yfiMlLptHQZ+1ItvctnzOdfG/wAZVOi4xOJQhTWeYXG04xYmRrrGvJHc18QZcRiZMzBsmrPSwzp8Iz6ScF9Jov0dl+SVfOiL6jr4lcQiooVrkTgpyW6THfnkV3da3rNuKCKFMY2o37V85sq0riXRUMD2vXrVVMZJbEnEtkhjSIrYtiXwMjWFVeZWwqUYw24mlWMNhjTE95tRRFttkjFjkajmOTmb4lOKnRpPbvh/6PwvK/c/M7zS5hU20QiNjI2NjjajWNTlaniLAEEg)AEEKWUgAxqhjVDMqFVQAwYlMTOrSuJNyLGviRibGJXEm5GJr4lcTYwK4jIhWIYMSMTPiRiWzMaxGHEnEy4jEnMJEhRrTI1pNjI0qriyMRCWtMzUKNMhVVLohdCSEJILEg))EEgAgrYsACliMTILAGLEhWmWxFgDDiVxM+JGIBgwIxM+J4ur9kCmpKmamdQSu2XujyzbZcVVt04AHrMRieJd7JlH/x0387fUei6N6/F0jpZqqKndTthk2sXqiqvKjrgHVxLWL4k4gEWMhFiwBKEgAEo)))?AL?EWBIAIIsWFgCp5+bQafTqLWqiF73vrYJtzK3Dle7s8o9FY5+sT7FDI3FXb7XQ/Nk1QDxvQihbv6hE7huwbf1qh6rQtApej9PLTUsj5GSv3PhLXvZG/sonYcXQpm0FWvIrvbGMXX1Krj2IB5PpvP0;aSGu0afZhhy9t2axyrkrcFs9ruCLfq7TzOn670qqej2sai/UmbtLtbDntia5nNz8u3bn8Ft/GfTqiCKpgkppm5RStVj2+S5D5PXaNWUVZPo8auxnkYzDqSRMvgvtAPS+x/WdJ9Uin1HWapJ6J3wdM3BjHZtXmf8ABsby+Lr6zu9LJNTp+j1fU6PMkFZTx7zJbJ4ES7knhtdxVjVROB0NMoItMoKeggthAxG9XX8Z3zuddVMOvt/2HVP+pUf+TgD5PoPSX2RdeknoNOrGyy4brppI4W7bW/Fdhjd/BOKL5uKnc6EdNdbqdW9w9fXedKr2RzYNZIyRiLyPwRqW5VTqvf6uN0O1V3RysqKmSmdPTyx4S7fW3jyceq1+H/3Ho9EtJq9T6SLre1hAyaSolfxxzfk7BnavN6AD6qeErekOt6rrLtM0WRtLDG90e45G82HhPc5yOs3hwse7Pn0+kt03VnurqdZqV73ObxVuTXKtrOaqcU7ADq6Pq2rU+qLpWryNqOKN3W24OVEc2ytRt0XvQGfS4tJkrGe1KB7MOZJXOcuLvFwuq?9KC?SC?SC?SC?SC?SC?SC?SC?auoyVUVK59I1Ny6ceHBqdfDhc5Om6bUVeoe7NfbK14m8OzHqutkRPrPQ?k0NZp6qr0yopaO29M3b8XguXn8LyTeAB4/o70e1bSNQbLyNppEVtQ27XZWRce/wrdR7EgAEkKiW6g?iJ2W+Y?H:2Q==%iVBORw0KG;)NSUhEUg?AMc?ABNCAM)l8IBK)MFBMVEX::39/f1:39/fj9/ehYXEYPFRCFiXXx8vHv+uTg9O2usp/Jzb7a38jm/vr3+NRRjjAJ?AE9klEQVR4Xu3ZC67bIBAFUIa/f8n+d9sZwFd2wAmOKqWufBU3Y3iWOJmSVjz1r+bOnTt37ty5Yy6+eFMqlJdEbHNVimmk+1kiEjYeMTmoMJqDu3qu/sF65HjMHKdDEVNIyVuGxHWISoHRFK7zDJ4wuzncwIGfJoVQRIhWAEZK1S/Bo9TtMEA1HabfgdCLY63690lE4FDUdBDEW312EFjNRRNobQcWvOJs7TAd7cDKChm9McBtIduyZGMklAimYUPfCohMSWEYmzT79DiU6XIkAMqdI9tKWS+ZqOnQWsOBjgzWDvInp+87GLucAcTpc5CKxw5TOQq7OBFdHPt+2NUxMEPS05K6430O4VHlyEYS+YujAKGDAzwwRFBiS3oYykSEOhxlMVK1HVnXcqjKgZCGIjueHC5PSaiWHDsU1KpyZGPDgUZt5FrvHLowJKyAo5aoHslnBx07YKQXR+OrXa8OiuPIhUDszmFPOUgCSqSNA8Oq5aDaAaN556CsEIcQtB4lzLIIHP0Q7ASCA5um5cCiTO3AXlNwwE+S7ISDGXBgWx85bIcjEu37URYLW8OhagceazlyIdGZsQTvJxfYEUKYJr6snaW0z8BZrOWxMNtF7gQyS5EcU3DOhUVxxcXCV3Eg4L2OwWZWXOP/V0Lbbn;8L2bkxzOe375kR3ez5Pz0zAsQdY1p1U+n/LurCw1OzxnEcjkfXDesYPHXAw+JAc1vnmrMTjMR4fpcjBjnMXxmFjDmGUYBnHMaeVPjjgSbcoO6WDaHwxnARdCis7H7MDnqBBA1jE4FN4qR/GoLkfw3od5HB/F4bIjuIlfbkqO4LgMxTH52Xkn/TCpH5M4GCEV0to/hhj/16NLxsmL5JEcw+CKYxZJcXAh/SkOXi/bo0C8Z9GsJDPX6gdZGUsI4+y8537M0g/nxuRYZOVwsMEt2bF4F9a/WD61Jjech37pkB0afHKMzjvOkPY5v+QKzODWLC5f1j6DD5E755a8z6WMv+uHhiMx3PTgzAKR7TFLL2TlQb6vJhHlnkg7vJdLGhJy7cpG9790aAbwJi8ZWZHzbMSu2R06RIX81LHPKcfvUzGu6dD/rQO5Hb1npqrzzPT4DrcHiFECxwEDkPMa2p6ZZgbO26h1nkj1uajZ3mopRsnO?fn0DG8njWeY0io1xGB6ncgvQ511hF32doIxYvYoG7PfXYMbQcgVM7qqM9RL3k7iqLnXBSutUwMpNthiyO1mM7uDmFTj4OKA2XjzBQOXTMAGQ4cxm4+qS92uZScLkdU5tihtZQNx6PHsR5ik8HmOLk/YNg5us5F6zn9xoEcOChD0OvOmIjQKYc6cEQ4tN45HscOCwYgaEc3hCoIHH3nifWZqeZr4xiRAwgYKZvFfCmhzw6qHfVccsQuR9IMOwedbwd+IVIoleNwreaNQ+vypt84bJLImwQMyRftwCP4EOAgTH86F8Vc5dBwALMuG4CiAuM7x/7MdDdMsB2fizbn4OAUxqYvWgCVI8Kh1NeOeqNXY8fnovWcM?RRZagIxoMTipihAO79bTj/W+MVdOh3jj0B4f4kiPG5MhotONrx/ooNf+hf3WoIwdwqunQO4cxQ0ocSgNoZXzjODwzxdi30R9i2lH/XM4p4DDXhgBxsY60HchlIG3G9SEKiktJ9gYgriZhINaO4lIWKdXFc+fOnTt37ty58wcQ3pU+ehgpZQ)BJRU5Er@ggg==!