Solved

Unable to validate data- ASP.Net

Posted on 2007-03-28
8
1,605 Views
Last Modified: 2008-01-09
Hi Everyone,

I did session handling on my pages. it work fine. after 15 or 20 minutes, it will redirect to my index page.

But if my pages stay open longer e.g. for half an hour or more, then I am getting the following error.
any Idea how to fix this.
Please I need your expert help, I am woking on this problem for long time, but no luck.
[code]
Unable to validate data.
Exception Details: System.Web.HttpException: Unable to validate data.
Stack Trace:

[HttpException (0x80004005): Unable to validate data.]
   System.Web.Configuration.MachineKey.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +196
   System.Web.UI.LosFormatter.Deserialize(String input) +60

[HttpException (0x80004005): Authentication of viewstate failed.  1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm.  AutoGenerate cannot be used in a cluster.  2) Viewstate can only be posted back to the same page.  3) The viewstate for this page might be corrupted.]
   System.Web.UI.LosFormatter.Deserialize(String input) +118
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +102

[HttpException (0x80004005): Invalid_Viewstate
      Client IP: 216.232.130.192
      Port: 1554
      User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)
      ViewState: dDwyMzI5NzMzMDE7dDxwPGw8ZGV0YWlsSG90ZWxJRDtteUhvdTUFnQUFBRkZUZVhOMFpXMHVSR0YwWVN3Z1ZtVnljMmx2YmoweExqQXVOVEF3TUM0d0xDQkRkV3gwZFhKbFBXNWxkWFJ5WVd3GxiR1Z0Wlc1MElHNWhiV1U5SW5Od1pXTnBZV3hIY21sa01pSWdk5Ed3ZiV0Y0VDJOamRYQmhibU41UGcwS0lDQWdJRHd2VkdGaWJHVXhQZzBLSUNBZ0lEeFVZV0pzWlRFZ1pHbG1abWR5T21sa1BTSlVZV0pzWlRFeklpQnRjMlJoZEdFNmNtOTNUM0prWlhJOUlqSWlQZzBLSUNBZ0lDQWdQR2h2ZEdWc1VtOXZiVWxFUGpZd1BDOW9iM1JsYkZKdmIyMUpSRDROQ2lBZ0lDQWdJRHhvYjNSbGJFbEVQalUxUEM5b2IzUmxiRWxFUGcwS0lDQWdJQ0FnUEhKdmIyMU9ZVzFsUGtSbGJIVjRaU0IzYVhSb0lFdHBkR05vWlc1bGRIUmxJRHd2Y205dmJVNWhiV1UrRFFvZ0lDQWdJQ0E4YldGNFFXUjFiSFJ6UGpROEwyMWhlRUZrZFd4MGN6NE5DaUFnSUNBZ0lEeHRZWGhQWTJOMWNHRnVZM2srTkR3dmJXRjRUMk5qZFhCaGJtTjVQZzBLSUNBZ0lEd3ZWR0ZpYkdVeFBnMEtJQ0E4TDJScFptWm5janBpWldadmNtVStEUW84TDJScFptWm5janBrYVdabVozSmhiVDRMPjtiPEFBRUFBQUQvLy8vL0FRQUFBQUFBQUFBTUFnQUFBRkZUZVhOMFpXMHVSR0YwWVN3Z1ZtVnljMmx2YmoweExqQXVOVEF3TUM0d0xDQkRkV3gwZFhKbFBXNWxkWFJ5WVd3c0lGQjFZbXhwWTB0bGVWUnZhMlZ1UFdJM04yRTFZelUyTVRrek5HVXdPRGtGQVFBQUFCVlRlWE4wWlcwdVJHRjBZUzVFWVhSaFZHRmliR1VDQUFBQUNWaHRiRk5qYUdWdFlRdFliV3hFYVdabVIzSmhiUUVCQWdBQUFBWURBQUFBeWdROFAzaHRiQ0IyWlhKemFXOXVQU0l4TGpBaUlHVnVZMjlrYVc1blBTSjFkR1l0TVRZaVB6NE5Dang0Y3pwelkyaGxiV0VnYVdROUluUnRjRVJoZEdGVFpYUWlJSGh0Ykc1elBTSWlJSGh0Ykc1ek9uaHpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBeEwxaE5URk5qYUdWdFlTSWdlRzFzYm5NNmJYTmtZWFJoUFNKMWNtNDZjMk5vWlcxaGN5MXRhV055YjNOdlpuUXRZMjl0T25odGJDMXRjMlJoZEdFaVBnMEtJQ0E4ZUhNNlpXeGxiV1Z1ZENCdVlXMWxQU0pVWVdKc1pURWlQZzBLSUNBZ0lEeDRjenBqYjIxd2JHVjRWSGx3WlQ0TkNpQWdJQ0FnSUR4NGN6cHpaWEYxWlc1alpUNE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlhRzkwWld4QmJXVnVhWFI1SWlCMGVYQmxQU0o0Y3pwemRISnBibWNpSUcxelpHRjBZVHAwWVhKblpYUk9ZVzFsYzNCaFkyVTlJaUlnYldsdVQyTmpkWEp6UFNJd0lpQXZQZzBLSUNBZ0lDQWdQQzk0Y3pwelpYRjFaVzVqWlQ0TkNpQWdJQ0E4TDNoek9tTnZiWEJzWlhoVWVYQmxQZzBLSUNBOEwzaHpPbVZzWlcxbGJuUStEUW9nSUR4NGN6cGxiR1Z0Wlc1MElHNWhiV1U5SW5SdGNFUmhkR0ZUWlhRaUlHMXpaR0YwWVRwSmMwUmhkR0ZUWlhROUluUnlkV1VpUGcwS0lDQWdJRHg0Y3pwamIyMXdiR1Y0Vkhsd1pUNE5DaUFnSUNBZ0lEeDRjenBqYUc5cFkyVWdiV0Y0VDJOamRYSnpQU0oxYm1KdmRXNWtaV1FpSUM4K0RRb2dJQ0FnUEM5NGN6cGpiMjF3YkdWNFZIbHdaVDROQ2lBZ1BDOTRjenBsYkdWdFpXNTBQZzBLUEM5NGN6cHpZMmhsYldFK0JnUUFBQUNBQVR4a2FXWm1aM0k2WkdsbVptZHlZVzBnZUcxc2JuTTZiWE5rWVhSaFBTSjFjbTQ2YzJOb1pXMWhjeTF0YVdOeWIzTnZablF0WTI5dE9uaHRiQzF0YzJSaGRHRWlJSGh0Ykc1ek9tUnBabVpuY2owaWRYSnVPbk5qYUdWdFlYTXRiV2xqY205emIyWjBMV052YlRwNGJXd3RaR2xtWm1keVlXMHRkakVpSUM4K0N3PT0+O2I8QUFFQUFBRC8vLy8vQVFBQUFBQUFBQUFNQWdBQUFGRlRlWE4wWlcwdVJHRjBZU3dnVm1WeWMybHZiajB4TGpBdU5UQXdNQzR3TENCRGRXeDBkWEpsUFc1bGRYUnlZV3dzSUZCMVlteHBZMHRsZVZSdmEyVnVQV0kzTjJFMVl6VTJNVGt6TkdVd09Ea0ZBUUFBQUJWVGVYTjBaVzB1UkdGMFlTNUVZWFJoVkdGaWJHVUNBQUFBQ1ZodGJGTmphR1Z0WVF0WWJXeEVhV1ptUjNKaGJRRUJBZ0FBQUFZREFBQUFsQmc4UDNodGJDQjJaWEp6YVc5dVBTSXhMakFpSUdWdVkyOWthVzVuUFNKMWRHWXRNVFlpUHo0TkNqeDRjenB6WTJobGJXRWdhV1E5SW5SdGNFUmhkR0ZUWlhRaUlIaHRiRzV6UFNJaUlIaHRiRzV6T25oelBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF4TDFoTlRGTmphR1Z0WVNJZ2VHMXNibk02YlhOa1lYUmhQU0oxY200NmMyTm9aVzFoY3kxdGFXTnliM052Wm5RdFkyOXRPbmh0YkMxdGMyUmhkR0VpUGcwS0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSlVZV0pzWlRFaVBnMEtJQ0FnSUR4NGN6cGpiMjF3YkdWNFZIbHdaVDROQ2lBZ0lDQWdJRHg0Y3pwelpYRjFaVzVqWlQ0TkNpQWdJQ0FnSUNBZ1BIaHpPbVZzWlcxbGJuUWdibUZ0WlQwaWFHOTBaV3hPWVcxbElpQjBlWEJsUFNKNGN6cHpkSEpwYm1jaUlHMXpaR0YwWVRwMFlYSm5aWFJPWVcxbGMzQmhZMlU5SWlJZ2JXbHVUMk5qZFhKelBTSXdJaUF2UGcwS0lDQWdJQ0FnSUNBOGVITTZaV3hsYldWdWRDQnVZVzFsUFNKemRHRnljeUlnZEhsd1pUMGllSE02Wm14dllYUWlJRzF6WkdGMFlUcDBZWEpuWlhST1lXMWxjM0JoWTJVOUlpSWdiV2x1VDJOamRYSnpQU0l3SWlBdlBnMEtJQ0FnSUNBZ0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSm9iM1JsYkVGa1pISmxjM01pSUhSNWNHVTlJbmh6T25OMGNtbHVaeUlnYlhOa1lYUmhPblJoY21kbGRFNWhiV1Z6Y0dGalpUMGlJaUJ0YVc1UFkyTjFjbk05SWpBaUlDOCtEUW9nSUNBZ0lDQWdJRHg0Y3pwbGJHVnRaVzUwSUc1aGJXVTlJbWh2ZEdWc1dtbHdRMjlrWlNJZ2RIbHdaVDBpZUhNNmMzUnlhVzVuSWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJQ0FnUEhoek9tVnNaVzFsYm5RZ2JtRnRaVDBpUTJsMGVVNWhiV1VpSUhSNWNHVTlJbmh6T25OMGNtbHVaeUlnYlhOa1lYUmhPblJoY21kbGRFNWhiV1Z6Y0dGalpUMGlJaUJ0YVc1UFkyTjFjbk05SWpBaUlDOCtEUW9nSUNBZ0lDQWdJRHg0Y3pwbGJHVnRaVzUwSUc1aGJXVTlJa05wZEhsSlJDSWdkSGx3WlQwaWVITTZhVzUwSWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJQ0FnUEhoek9tVnNaVzFsYm5RZ2JtRnRaVDBpY0hKdmRtbHVZMlZPWVcxbElpQjBlWEJsUFNKNGN6cHpkSEpwYm1jaUlHMXpaR0YwWVRwMFlYSm5aWFJPWVcxbGMzQmhZMlU5SWlJZ2JXbHVUMk5qZFhKelBTSXdJaUF2UGcwS0lDQWdJQ0FnSUNBOGVITTZaV3hsYldWdWRDQnVZVzFsUFNKd2NtOTJhVzVqWlVsRUlpQjBlWEJsUFNKNGN6cHBiblFpSUcxelpHRjBZVHAwWVhKblpYUk9ZVzFsYzNCaFkyVTlJaUlnYldsdVQyTmpkWEp6UFNJd0lpQXZQZzBLSUNBZ0lDQWdJQ0E4ZUhNNlpXeGxiV1Z1ZENCdVlXMWxQU0pqYjNWdWRISjVUbUZ0WlNJZ2RIbHdaVDBpZUhNNmMzUnlhVzVuSWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJQ0FnUEhoek9tVnNaVzFsYm5RZ2JtRnRaVDBpWTI5MWJuUnllVWxFSWlCMGVYQmxQU0o0Y3pwcGJuUWlJRzF6WkdGMFlUcDBZWEpuWlhST1lXMWxjM0JoWTJVOUlpSWdiV2x1VDJOamRYSnpQU0l3SWlBdlBnMEtJQ0FnSUNBZ0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSnNiMk5oZEdsdmJrNWhiV1VpSUhSNWNHVTlJbmh6T25OMGNtbHVaeUlnYlhOa1lYUmhPblJoY21kbGRFNWhiV1Z6Y0dGalpUMGlJaUJ0YVc1UFkyTjFjbk05SWpBaUlDOCtEUW9nSUNBZ0lDQWdJRHg0Y3pwbGJHVnRaVzUwSUc1aGJXVTlJbWh2ZEdWc1EyRjBaV2R2Y25sT1lXMWxJaUIwZVhCbFBTSjRjenB6ZEhKcGJtY2lJRzF6WkdGMFlUcDBZWEpuWlhST1lXMWxjM0JoWTJVOUlpSWdiV2x1VDJOamRYSnpQU0l3SWlBdlBnMEtJQ0FnSUNBZ0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSm9iM1JsYkZSNWNHVWlJSFI1Y0dVOUluaHpPbk4wY21sdVp5SWdiWE5rWVhSaE9uUmhjbWRsZEU1aGJXVnpjR0ZqWlQwaUlpQnRhVzVQWTJOMWNuTTlJakFpSUM4K0RRb2dJQ0FnSUNBZ0lEeDRjenBsYkdWdFpXNTBJRzVoYldVOUltaHZkR1ZzVUc5c2FXTnBaWE1pSUhSNWNHVTlJbmh6T25OMGNtbHVaeUlnYlhOa1lYUmhPblJoY21kbGRFNWhiV1Z6Y0dGalpUMGlJaUJ0YVc1UFkyTjFjbk05SWpBaUlDOCtEUW9nSUNBZ0lDQWdJRHg0Y3pwbGJHVnRaVzUwSUc1aGJXVTlJbmxsWVhKQ2RXbHNaQ0lnZEhsd1pUMGllSE02YzJodmNuUWlJRzF6WkdGMFlUcDBZWEpuWlhST1lXMWxjM0JoWTJVOUlpSWdiV2x1VDJOamRYSnpQU0l3SWlBdlBnMEtJQ0FnSUNBZ0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSnViMDltUm14dmIzSWlJSFI1Y0dVOUluaHpPblZ1YzJsbmJtVmtRbmwwWlNJZ2JYTmtZWFJoT25SaGNtZGxkRTVoYldWemNHRmpaVDBpSWlCdGFXNVBZMk4xY25NOUlqQWlJQzgrRFFvZ0lDQWdJQ0FnSUR4NGN6cGxiR1Z0Wlc1MElHNWhiV1U5SW5admJIUmhaMlVpSUhSNWNHVTlJbmh6T25Ob2IzSjBJaUJ0YzJSaGRHRTZkR0Z5WjJWMFRtRnRaWE53WVdObFBTSWlJRzFwYms5alkzVnljejBpTUNJZ0x6NE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlhRzkwWld4RVpYTmpjbWx3ZEdsdmJpSWdkSGx3WlQwaWVITTZjM1J5YVc1bklpQnRjMlJoZEdFNmRHRnlaMlYwVG1GdFpYTndZV05sUFNJaUlHMXBiazlqWTNWeWN6MGlNQ0lnTHo0TkNpQWdJQ0FnSUNBZ1BIaHpPbVZzWlcxbGJuUWdibUZ0WlQwaVpISnBkbWx1WjBScGNtVmpkR2x2Ym5NaUlIUjVjR1U5SW5oek9uTjBjbWx1WnlJZ2JYTmtZWFJoT25SaGNtZGxkRTVoYldWemNHRmpaVDBpSWlCdGFXNVBZMk4xY25NOUlqQWlJQzgrRFFvZ0lDQWdJQ0FnSUR4NGN6cGxiR1Z0Wlc1MElHNWhiV1U5SW1odmRHVnNUV0Z3SWlCMGVYQmxQU0o0Y3pwemRISnBibWNpSUcxelpHRjBZVHAwWVhKblpYUk9ZVzFsYzNCaFkyVTlJaUlnYldsdVQyTmpkWEp6UFNJd0lpQXZQZzBLSUNBZ0lDQWdJQ0E4ZUhNNlpXeGxiV1Z1ZENCdVlXMWxQU0pqYUdWamEwbHVWR2x0WlNJZ2RIbHdaVDBpZUhNNmMzUnlhVzVuSWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJQ0FnUEhoek9tVnNaVzFsYm5RZ2JtRnRaVDBpWTJobFkydFBkWFJVYVcxbElpQjBlWEJsUFNKNGN6cHpkSEpwYm1jaUlHMXpaR0YwWVRwMFlYSm5aWFJPWVcxbGMzQmhZMlU5SWlJZ2JXbHVUMk5qZFhKelBTSXdJaUF2UGcwS0lDQWdJQ0FnSUNBOGVITTZaV3hsYldWdWRDQnVZVzFsUFNKcmFXUnpRV2RsSWlCMGVYQmxQU0o0Y3pwMWJuTnBaMjVsWkVKNWRHVWlJRzF6WkdGMFlUcDBZWEpuWlhST1lXMWxjM0JoWTJVOUlpSWdiV2x1VDJOamRYSnpQU0l3SWlBdlBnMEtJQ0FnSUNBZ0lDQThlSE02Wld4bGJXVnVkQ0J1WVcxbFBTSmhaSFZzZEVGblpTSWdkSGx3WlQwaWVITTZkVzV6YVdkdVpXUkNlWFJsSWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJQ0FnUEhoek9tVnNaVzFsYm5RZ2JtRnRaVDBpU1c1a2FYWnBaSFZoYkVodmRHVkRVRzlzYVdONUlpQjBlWEJsUFNKNGN6cGliMjlzWldGdUlpQnRjMlJoZEdFNmRHRnlaMlYwVG1GdFpYTndZV05sUFNJaUlHMXBiazlqWTNWeWN6MGlNQ0lnTHo0TkNpQWdJQ0FnSUNBZ1BIaHpPbVZzWlcxbGJuUWdibUZ0WlQwaVEybDBlWGRwYzJWRFVHOXNhV041SWlCMGVYQmxQU0o0Y3pwaWIyOXNaV0Z1SWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJRHd2ZUhNNmMyVnhkV1Z1WTJVK0RRb2dJQ0FnUEM5NGN6cGpiMjF3YkdWNFZIbHdaVDROQ2lBZ1BDOTRjenBsYkdWdFpXNTBQZzBLSUNBOGVITTZaV3hsYldWdWRDQnVZVzFsUFNKMGJYQkVZWFJoVTJWMElpQnRjMlJoZEdFNlNYTkVZWFJoVTJWMFBTSjBjblZsSWo0TkNpQWdJQ0E4ZUhNNlkyOXRjR3hsZUZSNWNHVStEUW9nSUNBZ0lDQThlSE02WTJodmFXTmxJRzFoZUU5alkzVnljejBpZFc1aWIzVnVaR1ZrSWlBdlBnMEtJQ0FnSUR3dmVITTZZMjl0Y0d4bGVGUjVjR1UrRFFvZ0lEd3ZlSE02Wld4bGJXVnVkRDROQ2p3dmVITTZjMk5vWlcxaFBnWUVBQUFBNkJzOFpHbG1abWR5T21ScFptWm5jbUZ0SUhodGJHNXpPbTF6WkdGMFlUMGlkWEp1T25OamFHVnRZWE10YldsamNtOXpiMlowTFdOdmJUcDRiV3d0YlhOa1lYUmhJaUI0Yld4dWN6cGthV1ptWjNJOUluVnlianB6WTJobGJXRnpMVzFwWTNKdmMyOW1kQzFqYjIwNmVHMXNMV1JwWm1abmNtRnRMWFl4SWo0TkNpQWdQSFJ0Y0VSaGRHRlRaWFErRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1URWlJRzF6WkdGMFlUcHliM2RQY21SbGNqMGlNQ0krRFFvZ0lDQWdJQ0E4YUc5MFpXeE9ZVzFsUGtKbGMzUWdWMlZ6ZEdWeWJpQkViM2R1ZEc5M2JpQldZVzVqYjNWMlpYSThMMmh2ZEdWc1RtRnRaVDROQ2lBZ0lDQWdJRHh6ZEdGeWN6NHpQQzl6ZEdGeWN6NE5DaUFnSUNBZ0lEeG9iM1JsYkVGa1pISmxjM00rTnpFNElFUnlZV3RsSUZOMGNtVmxkRHd2YUc5MFpXeEJaR1J5WlhOelBnMEtJQ0FnSUNBZ1BHaHZkR1ZzV21sd1EyOWtaVDVXTmxvZ01sYzJQQzlvYjNSbGJGcHBjRU52WkdVK0RRb2dJQ0FnSUNBOFEybDBlVTVoYldVK1ZtRnVZMjkxZG1WeVBDOURhWFI1VG1GdFpUNE5DaUFnSUNBZ0lEeERhWFI1U1VRK01USXhQQzlEYVhSNVNVUStEUW9nSUNBZ0lDQThjSEp2ZG1sdVkyVk9ZVzFsUGtKeWFYUnBjMmdnUTI5c2RXMWlhV0U4TDNCeWIzWnBibU5sVG1GdFpUNE5DaUFnSUNBZ0lEeHdjbTkyYVc1alpVbEVQakV5TUR3dmNISnZkbWx1WTJWSlJENE5DaUFnSUNBZ0lEeGpiM1Z1ZEhKNVRtRnRaVDVEWVc1aFpHRThMMk52ZFc1MGNubE9ZVzFsUGcwS0lDQWdJQ0FnUEdOdmRXNTBjbmxKUkQ0eE1UazhMMk52ZFc1MGNubEpSRDROQ2lBZ0lDQWdJRHhzYjJOaGRHbHZiazVoYldVK1JHOTNiblJ2ZDI0OEwyeHZZMkYwYVc5dVRtRnRaVDROQ2lBZ0lDQWdJRHhvYjNSbGJFTmhkR1ZuYjNKNVRtRnRaVDVOYjJSbGNtRjBaVHd2YUc5MFpXeERZWFJsWjI5eWVVNWhiV1UrRFFvZ0lDQWdJQ0E4YUc5MFpXeFVlWEJsUGtodmRHVnNQQzlvYjNSbGJGUjVjR1UrRFFvZ0lDQWdJQ0E4YUc5MFpXeFFiMnhwWTJsbGN6NUNiMjlyYVc1bklHMWhlU0JpWlNCamFHRnVaMlZrSUc5eUlHTmhibU5sYkd4bFpDQjNhWFJvYjNWMElIQmxibUZzZEhrZ2RYQWdkRzhnTnpJZ2FHOTFjbk1nY0hKcGIzSWdkRzhnWVhKeWFYWmhiQzRnUVc1NUlISmxaSFZqZEdsdmJpQnZjaUJqWVc1alpXeHNZWFJwYjI0Z2QybDBhR2x1SURjeUlHaHZkWEp6SUc5bUlHRnljbWwyWVd3Z2FYTWdjM1ZpYW1WamRDQjBieUJ3Wlc1aGJIUjVJRzltSURFZ2NtOXZiU0J1YVdkb2RDQndiSFZ6SUhSaGVDQm1iM0lnWlhabGNua2djbTl2YlNCaWIyOXJaV1F1UEM5b2IzUmxiRkJ2YkdsamFXVnpQZzBLSUNBZ0lDQWdQSGxsWVhKQ2RXbHNaRDR4T1RrM1BDOTVaV0Z5UW5WcGJHUStEUW9nSUNBZ0lDQThibTlQWmtac2IyOXlQakV5UEM5dWIwOW1SbXh2YjNJK0RRb2dJQ0FnSUNBOGRtOXNkR0ZuWlQ0eE1UQThMM1p2YkhSaFoyVStEUW9nSUNBZ0lDQThhRzkwWld4RVpYTmpjbWx3ZEdsdmJqNG1iSFE3WWlabmREdFVhR1VnUW1WemRDQlhaWE4wWlhKdUlFUnZkMjUwYjNkdUpteDBPeTlpSm1kME95QnBjeUJzYjJOaGRHVmtJR2x1SUhSb1pTQm9aV0Z5ZENCdlppQW1iSFE3YVNabmREdGtiM2R1ZEc5M2JpQldZVzVqYjNWMlpYSW1iSFE3TDJrbVozUTdMQ0JqYkc5elpTQjBieUJaWVd4bElGUnZkMjRnS0RFd0lHMXBiblYwWlNCM1lXeHJLU3dnUjNKaGJuWnBiR3hsSUVsemJHRnVaQ0FvTlNCdGFXNTFkR1Z6SUdSeWFYWmxLU3dnWVc1a0lGTjBZVzVzWlhrZ1VHRnlheUFvTlNCdGFXNTFkR1VnWkhKcGRtVXBMaUFtYkhRN1lpWm5kRHRDWlhOMElGZGxjM1JsY200Z1JHOTNiblJ2ZDI0bWJIUTdMMkltWjNRN0lHbHpJRzl1WlNCdlppQldZVzVqYjNWMlpYTGlnSmx6SUc1bGQyVnpkQ0FtYkhRN2FTWm5kRHRvYjNSbGJITW1iSFE3TDJrbVozUTdMQ0J2ZG1WeWJHOXZhMmx1WnlCMGFHVWdSbUZzYzJVZ1EzSmxaV3NnWVhKbFlTQmhibVFnYjI1c2VTQXlOU0J0YVc1MWRHVnpJR1J5YVhabElHWnliMjBnVm1GdVkyOTFkbVZ5SUVsdWRHVnlibUYwYVc5dVlXd2dRV2x5Y0c5eWRDNGdXVzkxSUhkcGJHd2daVzVxYjNrZ1lTQndaV0ZqWldaMWJDQnVhV2RvZENCemJHVmxjQ0JwYmlCdmJtVWdiMllnSm14ME8ya21aM1E3UW1WemRDQlhaWE4wWlhKdUlFUnZkMjUwYjNkdTRvQ1pjeVpzZERzdmFTWm5kRHNnWTI5NmVTQm5kV1Z6ZEhKdmIyMXpJR0Z1WkNCMGFHVnBjaUIzWVhKdElHRnVaQ0JqYUdWbGNtWjFiQ0J6WlhKMmFXTmxJSGRwYkd3Z2JXRnJaU0I1YjNWeUlHaHZkR1ZzSUhOMFlYa2diVzl6ZENCd2JHVmhjMkZ1ZENCaGJtUWdiV1Z0YjNKaFlteGxMaUFnVkdocGN5Qm1ZV0oxYkc5MWN5QkNaWE4wSUZkbGMzUmxjbTRnYUc5MFpXd2dhR0Z6SURFME15QmpiMjFtYjNKMFlXSnNaU0JuZFdWemRISnZiMjF6TGlCRllXTm9JRzltSUhSb1pYTmxJR0ZqWTI5dGJXOWtZWFJwYjI1eklHWmxZWFIxY21WeklHbHVZMngxWkdWeklHbHVaR2wyYVdSMVlXeHNlU0JqYjI1MGNtOXNiR1ZrSUdGcGNpQmpiMjVrYVhScGIyNXBibWNzSUdsdVpHbDJhV1IxWVd4c2VTQmpiMjUwY205c2JHVmtJR05sYm5SeVlXd2dhR1ZoZEdsdVp5d2dZVzVrSUdocFoyZ2djM0JsWldRZ2FXNTBaWEp1WlhRdURRb21iSFE3WW5JbVozUTdKbXgwTzJKeUptZDBPdzBLVkdobElHTm9ZWEp0YVc1bklDWnNkRHRpSm1kME8wSmxjM1FnVjJWemRHVnliaUJFYjNkdWRHOTNiaUJXWVc1amIzVjJaWElnU0c5MFpXd21iSFE3TDJJbVozUTdJR2x6SUcxMWJIUnBjR3hsSUhKbFkybHdhV1Z1ZENCdlppQW1iSFE3YVNabmREdFVhR1VnUW1WemRDQlhaWE4wWlhKdTRvQ1pjeUJEYUdGcGNtMWhidUtBbVhNZ1FYZGhjbVFnWm05eUlHOTFkSE4wWVc1a2FXNW5JR05zWldGdWJHbHVaWE56SUdGdVpDQnhkV0ZzYVhSNUxpQW1iSFE3TDJrbVozUTdEUW9tYkhRN1luSW1aM1E3Sm14ME8ySnlKbWQwT3cwS0pteDBPMkltWjNRN1ZHaGxJRUpsYzNRZ1YyVnpkR1Z5YmlCRWIzZHVkRzkzYmlCSWIzUmxiQ1pzZERzdllpWm5kRHNnYVhNZ2QyRnNhMmx1WnlCa2FYTjBZVzVqWlNCMGJ5QnphRzl3Y0dsdVp5d2dibWxuYUhSc2FXWmxMQ0IwYUdWaGRISmxMQ0J5WlhOMFlYVnlZVzUwY3lCaGJtUWdiMllnVm1GdVkyOTFkbVZ5NG9DWmN5QnRZV3B2Y2lCaGRIUnlZV04wYVc5dWN5NGdWMmwwYUNCMWJtUmxjbWR5YjNWdVpDQndZWEpyYVc1bkxDQmhJR1pwZEc1bGMzTWdZMlZ1ZEhKbElIZHBkR2dnYzJGMWJtRWdZVzVrSUhkb2FYSnNjRzl2YkN3Z2MyaDFkSFJzWlNCelpYSjJhV05sSUdGdVpDQnZiaURpZ0pOemFYUmxJRmRvYVhSbElGTndiM1FnVW1WemRHRjFjbUZ1ZENBbVlXMXdPeUJNYjNWdVoyVXNJQ1pzZER0aUptZDBPMVJvWlNCQ1pYTjBJRmRsYzNSbGNtNGdSRzkzYm5SdmQyNGdhRzkwWld3bWJIUTdMMkltWjNRN0lHaGhjeUJsZG1WeWVYUm9hVzVuSUhsdmRTQnVaV1ZrSUhSdklHMWhhMlVnZVc5MWNpQldZVzVqYjNWMlpYSWdaWE5qWVhCbElIQmxjbVpsWTNRdURRbzhMMmh2ZEdWc1JHVnpZM0pwY0hScGIyNCtEUW9nSUNBZ0lDQThaSEpwZG1sdVowUnBjbVZqZEdsdmJuTStSM0poYm5acGJHeGxJRWx6YkdGdVpDQXRJRFVnYldsdWRYUmxjeUJrY21sMlpTQU5DaVpzZER0aWNpWm5kRHRXWVc1amIzVjJaWElnVTNSaGJteGxlU0JRWVhKcklDMGdOU0J0YVc1MWRHVnpJR1J5YVhabElBMEtKbXgwTzJKeUptZDBPME5oYm1Ga1lTZHpJR3hoY21kbGMzUWdZWEYxWVhKcGRXMHNJRlpoYm1OdmRYWmxjaUJCY1hWaGNtbDFiU0JzYjJOaGRHVmtJR2x1SUhSb1pTQldZVzVqYjNWMlpYSWdVM1JoYm14bGVTQndZWEpySUEwS0pteDBPMkp5Sm1kME8xbGhiR1VnVkc5M2JpQXRJREV3SUcxcGJuVjBaWE1nWkhKcGRtVWdEUW9tYkhRN1luSW1aM1E3UjJGeklIUnZkMjRnTFNBeExqWWdhMjBnRFFvbWJIUTdZbkltWjNRN1IwMGdVR3hoWTJVZ0xTQXhMallnYTIwZ0RRb21iSFE3WW5JbVozUTdTR0Z5WW05MWNpQkRaVzUwY21VZ1ZHOTNaWElnTFNCV1lXNWpiM1YyWlhJbmN5QXpOakF0WkdWbmNtVmxJSFpwWlhjZ0xTQXhMallnYTIwZ0RRb21iSFE3WW5JbVozUTdRMkZ1WVdSaElGQnNZV05sSUMwZ1EzSjFhWE5sSUZOb2FYQWdWR1Z5YldsdVlXd2dKbUZ0Y0RzZ1ZtRnVZMjkxZG1WeUlGUnlZV1JsSUdGdVpDQkRiMjUyWlc1MGFXOXVJRU5sYm5SeVpTQXRJREl1TlNCcmJTQU5DaVpzZER0aWNpWm5kRHRFY2k0Z1UzVnVJRmxsZEMxVFlXNGdSMkZ5WkdWdWN5QXRJREl1TlNCcmJTQU5DaVpzZER0aWNpWm5kRHRUWTJsbGJtTmxJRmR2Y214a0lDMGdNaTQxSUEwS0pteDBPMkp5Sm1kME8wTmhjR2xzWVc1dklGTjFjM0JsYm5OcFBDOWtjbWwyYVc1blJHbHlaV04wYVc5dWN6NE5DaUFnSUNBZ0lEeG9iM1JsYkUxaGNDQXZQZzBLSUNBZ0lDQWdQR05vWldOclNXNVVhVzFsUGpNNk1EQWdVRTA4TDJOb1pXTnJTVzVVYVcxbFBnMEtJQ0FnSUNBZ1BHTm9aV05yVDNWMFZHbHRaVDR4TVRvd01DQkJUVHd2WTJobFkydFBkWFJVYVcxbFBnMEtJQ0FnSUNBZ1BHdHBaSE5CWjJVK01UZzhMMnRwWkhOQloyVStEUW9nSUNBZ0lDQThZV1IxYkhSQloyVStNVEk4TDJGa2RXeDBRV2RsUGcwS0lDQWdJQ0FnUEVsdVpHbDJhV1IxWVd4SWIzUmxRMUJ2YkdsamVUNTBjblZsUEM5SmJtUnBkbWxrZFdGc1NHOTBaVU5RYjJ4cFkzaytEUW9nSUNBZ0lDQThRMmwwZVhkcGMyVkRVRzlzYVdONVBtWmhiSE5sUEM5RGFYUjVkMmx6WlVOUWIyeHBZM2srRFFvZ0lDQWdQQzlVWVdKc1pURStEUW9nSUR3dmRHMXdSR0YwWVZObGRENE5Dand2WkdsbVptZHlPbVJwWm1abmNtRnRQZ3M9PjtiPEFBRUFBQUQvLy8vL0FRQUFBQUFBQUFBTUFnQUFBRkZUZVhOMFpXMHVSR0YwWVN3Z1ZtVnljMmx2YmoweExqQXVOVEF3TUM0d0xDQkRkV3gwZFhKbFBXNWxkWFJ5WVd3c0lGQjFZbXhwWTB0bGVWUnZhMlZ1UFdJM04yRTFZelUyTVRrek5HVXdPRGtGQVFBQUFCVlRlWE4wWlcwdVJHRjBZUzVFWVhSaFZHRmliR1VDQUFBQUNWaHRiRk5qYUdWdFlRdFliV3hFYVdabVIzSmhiUUVCQWdBQUFBWURBQUFBd3dnOFAzaHRiQ0IyWlhKemFXOXVQU0l4TGpBaUlHVnVZMjlrYVc1blBTSjFkR1l0TVRZaVB6NE5Dang0Y3pwelkyaGxiV0VnYVdROUluUnRjRVJoZEdGVFpYUWlJSGh0Ykc1elBTSWlJSGh0Ykc1ek9uaHpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBeEwxaE5URk5qYUdWdFlTSWdlRzFzYm5NNmJYTmtZWFJoUFNKMWNtNDZjMk5vWlcxaGN5MXRhV055YjNOdlpuUXRZMjl0T25odGJDMXRjMlJoZEdFaVBnMEtJQ0E4ZUhNNlpXeGxiV1Z1ZENCdVlXMWxQU0pVWVdKc1pURWlQZzBLSUNBZ0lEeDRjenBqYjIxd2JHVjRWSGx3WlQ0TkNpQWdJQ0FnSUR4NGN6cHpaWEYxWlc1alpUNE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlhRzkwWld4U2IyOXRTVVFpSUhSNWNHVTlJbmh6T21sdWRDSWdiWE5rWVhSaE9uUmhjbWRsZEU1aGJXVnpjR0ZqWlQwaUlpQnRhVzVQWTJOMWNuTTlJakFpSUM4K0RRb2dJQ0FnSUNBZ0lEeDRjenBsYkdWdFpXNTBJRzVoYldVOUltaHZkR1ZzU1VRaUlIUjVjR1U5SW5oek9tbHVkQ0lnYlhOa1lYUmhPblJoY21kbGRFNWhiV1Z6Y0dGalpUMGlJaUJ0YVc1UFkyTjFjbk05SWpBaUlDOCtEUW9nSUNBZ0lDQWdJRHg0Y3pwbGJHVnRaVzUwSUc1aGJXVTlJbkp2YjIxRVpYTmpjbWx3ZEdsdmJpSWdkSGx3WlQwaWVITTZjM1J5YVc1bklpQnRjMlJoZEdFNmRHRnlaMlYwVG1GdFpYTndZV05sUFNJaUlHMXBiazlqWTNWeWN6MGlNQ0lnTHo0TkNpQWdJQ0FnSUNBZ1BIaHpPbVZzWlcxbGJuUWdibUZ0WlQwaVltRnpaVkpoZEdWR2IzSkhkV1Z6ZENJZ2RIbHdaVDBpZUhNNmRXNXphV2R1WldSQ2VYUmxJaUJ0YzJSaGRHRTZkR0Z5WjJWMFRtRnRaWE53WVdObFBTSWlJRzFwYms5alkzVnljejBpTUNJZ0x6NE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlhWE5UYlc5cmFXNW5JaUIwZVhCbFBTSjRjenBpYjI5c1pXRnVJaUJ0YzJSaGRHRTZkR0Z5WjJWMFRtRnRaWE53WVdObFBTSWlJRzFwYms5alkzVnljejBpTUNJZ0x6NE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlhWE5PYjI1VGJXOXJhVzVuSWlCMGVYQmxQU0o0Y3pwaWIyOXNaV0Z1SWlCdGMyUmhkR0U2ZEdGeVoyVjBUbUZ0WlhOd1lXTmxQU0lpSUcxcGJrOWpZM1Z5Y3owaU1DSWdMejROQ2lBZ0lDQWdJRHd2ZUhNNmMyVnhkV1Z1WTJVK0RRb2dJQ0FnUEM5NGN6cGpiMjF3YkdWNFZIbHdaVDROQ2lBZ1BDOTRjenBsYkdWdFpXNTBQZzBLSUNBOGVITTZaV3hsYldWdWRDQnVZVzFsUFNKMGJYQkVZWFJoVTJWMElpQnRjMlJoZEdFNlNYTkVZWFJoVTJWMFBTSjBjblZsSWo0TkNpQWdJQ0E4ZUhNNlkyOXRjR3hsZUZSNWNHVStEUW9nSUNBZ0lDQThlSE02WTJodmFXTmxJRzFoZUU5alkzVnljejBpZFc1aWIzVnVaR1ZrSWlBdlBnMEtJQ0FnSUR3dmVITTZZMjl0Y0d4bGVGUjVjR1UrRFFvZ0lEd3ZlSE02Wld4bGJXVnVkRDROQ2p3dmVITTZjMk5vWlcxaFBnWUVBQUFBdXdrOFpHbG1abWR5T21ScFptWm5jbUZ0SUhodGJHNXpPbTF6WkdGMFlUMGlkWEp1T25OamFHVnRZWE10YldsamNtOXpiMlowTFdOdmJUcDRiV3d0YlhOa1lYUmhJaUI0Yld4dWN6cGthV1ptWjNJOUluVnlianB6WTJobGJXRnpMVzFwWTNKdmMyOW1kQzFqYjIwNmVHMXNMV1JwWm1abmNtRnRMWFl4SWo0TkNpQWdQSFJ0Y0VSaGRHRlRaWFErRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1URWlJRzF6WkdGMFlUcHliM2RQY21SbGNqMGlNQ0krRFFvZ0lDQWdJQ0E4YUc5MFpXeFNiMjl0U1VRK05UZzhMMmh2ZEdWc1VtOXZiVWxFUGcwS0lDQWdJQ0FnUEdodmRHVnNTVVErTlRVOEwyaHZkR1ZzU1VRK0RRb2dJQ0FnSUNBOGNtOXZiVVJsYzJOeWFYQjBhVzl1UGtWaFkyZ2dkVzVwZENCb1lYTWdiMjVsSUdKaGRHaHliMjl0SUdGdVpDQmlaV1JrYVc1bklHbHVJSFJvWlNCMWJtbDBQQzl5YjI5dFJHVnpZM0pwY0hScGIyNCtEUW9nSUNBZ0lDQThZbUZ6WlZKaGRHVkdiM0pIZFdWemRENHlQQzlpWVhObFVtRjBaVVp2Y2tkMVpYTjBQZzBLSUNBZ0lDQWdQR2x6VTIxdmEybHVaejUwY25WbFBDOXBjMU50YjJ0cGJtYytEUW9nSUNBZ0lDQThhWE5PYjI1VGJXOXJhVzVuUG5SeWRXVThMMmx6VG05dVUyMXZhMmx1Wno0TkNpQWdJQ0E4TDFSaFlteGxNVDROQ2lBZ0lDQThWR0ZpYkdVeElHUnBabVpuY2pwcFpEMGlWR0ZpYkdVeE1pSWdiWE5rWVhSaE9uSnZkMDl5WkdWeVBTSXhJajROQ2lBZ0lDQWdJRHhvYjNSbGJGSnZiMjFKUkQ0MU9Ud3ZhRzkwWld4U2IyOXRTVVErRFFvZ0lDQWdJQ0E4YUc5MFpXeEpSRDQxTlR3dmFHOTBaV3hKUkQ0TkNpQWdJQ0FnSUR4eWIyOXRSR1Z6WTNKcGNIUnBiMjQrUldGamFDQjFibWwwSUdoaGN5QnZibVVnWW1GMGFISnZiMjBnWVc1a0lHSmxaR1JwYm1jdVBDOXliMjl0UkdWelkzSnBjSFJwYjI0K0RRb2dJQ0FnSUNBOFltRnpaVkpoZEdWR2IzSkhkV1Z6ZEQ0eVBDOWlZWE5sVW1GMFpVWnZja2QxWlhOMFBnMEtJQ0FnSUNBZ1BHbHpVMjF2YTJsdVp6NTBjblZsUEM5cGMxTnRiMnRwYm1jK0RRb2dJQ0FnSUNBOGFYTk9iMjVUYlc5cmFXNW5QblJ5ZFdVOEwybHpUbTl1VTIxdmEybHVaejROQ2lBZ0lDQThMMVJoWW14bE1UNE5DaUFnSUNBOFZHRmliR1V4SUdScFptWm5janBwWkQwaVZHRmliR1V4TXlJZ2JYTmtZWFJoT25KdmQwOXlaR1Z5UFNJeUlqNE5DaUFnSUNBZ0lEeG9iM1JsYkZKdmIyMUpSRDQyTUR3dmFHOTBaV3hTYjI5dFNVUStEUW9nSUNBZ0lDQThhRzkwWld4SlJENDFOVHd2YUc5MFpXeEpSRDROQ2lBZ0lDQWdJRHh5YjI5dFJHVnpZM0pwY0hScGIyNCtSV0ZqYUNCRVpXeDFlR1VnZDJsMGFDQkxhWFJqYUdWdVpYUjBaU0JTYjI5dElHMWxZWE4xY21WeklEd3ZjbTl2YlVSbGMyTnlhWEIwYVc5dVBnMEtJQ0FnSUNBZ1BHSmhjMlZTWVhSbFJtOXlSM1ZsYzNRK01qd3ZZbUZ6WlZKaGRHVkdiM0pIZFdWemRENE5DaUFnSUNBZ0lEeHBjMU50YjJ0cGJtYytkSEoxWlR3dmFYTlRiVzlyYVc1blBnMEtJQ0FnSUNBZ1BHbHpUbTl1VTIxdmEybHVaejUwY25WbFBDOXBjMDV2YmxOdGIydHBibWMrRFFvZ0lDQWdQQzlVWVdKc1pURStEUW9nSUR3dmRHMXdSR0YwWVZObGRENE5Dand2WkdsbVptZHlPbVJwWm1abmNtRnRQZ3M9PjtiPEFBRUFBQUQvLy8vL0FRQUFBQUFBQUFBTUFnQUFBRkZUZVhOMFpXMHVSR0YwWVN3Z1ZtVnljMmx2YmoweExqQXVOVEF3TUM0d0xDQkRkV3gwZFhKbFBXNWxkWFJ5WVd3c0lGQjFZbXhwWTB0bGVWUnZhMlZ1UFdJM04yRTFZelUyTVRrek5HVXdPRGtGQVFBQUFCVlRlWE4wWlcwdVJHRjBZUzVFWVhSaFZHRmliR1VDQUFBQUNWaHRiRk5qYUdWdFlRdFliV3hFYVdabVIzSmhiUUVCQWdBQUFBWURBQUFBa3dZOFAzaHRiQ0IyWlhKemFXOXVQU0l4TGpBaUlHVnVZMjlrYVc1blBTSjFkR1l0TVRZaVB6NE5Dang0Y3pwelkyaGxiV0VnYVdROUluUnRjRVJoZEdGVFpYUWlJSGh0Ykc1elBTSWlJSGh0Ykc1ek9uaHpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBeEwxaE5URk5qYUdWdFlTSWdlRzFzYm5NNmJYTmtZWFJoUFNKMWNtNDZjMk5vWlcxaGN5MXRhV055YjNOdlpuUXRZMjl0T25odGJDMXRjMlJoZEdFaVBnMEtJQ0E4ZUhNNlpXeGxiV1Z1ZENCdVlXMWxQU0pVWVdKc1pURWlQZzBLSUNBZ0lEeDRjenBqYjIxd2JHVjRWSGx3WlQ0TkNpQWdJQ0FnSUR4NGN6cHpaWEYxWlc1alpUNE5DaUFnSUNBZ0lDQWdQSGh6T21Wc1pXMWxiblFnYm1GdFpUMGlZMjl6ZENJZ2RIbHdaVDBpZUhNNlltOXZiR1ZoYmlJZ2JYTmtZWFJoT25SaGNtZGxkRTVoYldWemNHRmpaVDBpSWlCdGFXNVBZMk4xY25NOUlqQWlJQzgrRFFvZ0lDQWdJQ0FnSUR4NGN6cGxiR1Z0Wlc1MElHNWhiV1U5SW1odmRHVnNRVzFsYm1sMGVTSWdkSGx3WlQwaWVITTZjM1J5YVc1bklpQnRjMlJoZEdFNmRHRnlaMlYwVG1GdFpYTndZV05sUFNJaUlHMXBiazlqWTNWeWN6MGlNQ0lnTHo0TkNpQWdJQ0FnSUNBZ1BIaHpPbVZzWlcxbGJuUWdibUZ0WlQwaVlXMWxibWwwZVVSbGMyTnlhWEIwYVc5dUlpQjBlWEJsUFNKNGN6cHpkSEpwYm1jaUlHMXpaR0YwWVRwMFlYSm5aWFJPWVcxbGMzQmhZMlU5SWlJZ2JXbHVUMk5qZFhKelBTSXdJaUF2UGcwS0lDQWdJQ0FnUEM5NGN6cHpaWEYxWlc1alpUNE5DaUFnSUNBOEwzaHpPbU52YlhCc1pYaFVlWEJsUGcwS0lDQThMM2h6T21Wc1pXMWxiblErRFFvZ0lEeDRjenBsYkdWdFpXNTBJRzVoYldVOUluUnRjRVJoZEdGVFpYUWlJRzF6WkdGMFlUcEpjMFJoZEdGVFpYUTlJblJ5ZFdVaVBnMEtJQ0FnSUR4NGN6cGpiMjF3YkdWNFZIbHdaVDROQ2lBZ0lDQWdJRHg0Y3pwamFHOXBZMlVnYldGNFQyTmpkWEp6UFNKMWJtSnZkVzVrWldRaUlDOCtEUW9nSUNBZ1BDOTRjenBqYjIxd2JHVjRWSGx3WlQ0TkNpQWdQQzk0Y3pwbGJHVnRaVzUwUGcwS1BDOTRjenB6WTJobGJXRStCZ1FBQUFEVkx6eGthV1ptWjNJNlpHbG1abWR5WVcwZ2VHMXNibk02YlhOa1lYUmhQU0oxY200NmMyTm9aVzFoY3kxdGFXTnliM052Wm5RdFkyOXRPbmh0YkMxdGMyUmhkR0VpSUhodGJHNXpPbVJwWm1abmNqMGlkWEp1T25OamFHVnRZWE10YldsamNtOXpiMlowTFdOdmJUcDRiV3d0WkdsbVptZHlZVzB0ZGpFaVBnMEtJQ0E4ZEcxd1JHRjBZVk5sZEQ0TkNpQWdJQ0E4VkdGaWJHVXhJR1JwWm1abmNqcHBaRDBpVkdGaWJHVXhNU0lnYlhOa1lYUmhPbkp2ZDA5eVpHVnlQU0l3SWo0TkNpQWdJQ0FnSUR4amIzTjBQbVpoYkhObFBDOWpiM04wUGcwS0lDQWdJQ0FnUEdodmRHVnNRVzFsYm1sMGVUNURkWEp5Wlc1amVTQmxlR05vWVc1blpUd3ZhRzkwWld4QmJXVnVhWFI1UGcwS0lDQWdJQ0FnUEdGdFpXNXBkSGxFWlhOamNtbHdkR2x2YmlBdlBnMEtJQ0FnSUR3dlZHRmliR1V4UGcwS0lDQWdJRHhVWVdKc1pURWdaR2xtWm1keU9tbGtQU0pVWVdKc1pURXlJaUJ0YzJSaGRHRTZjbTkzVDNKa1pYSTlJakVpUGcwS0lDQWdJQ0FnUEdOdmMzUStabUZzYzJVOEwyTnZjM1ErRFFvZ0lDQWdJQ0E4YUc5MFpXeEJiV1Z1YVhSNVBrVjRjSEpsYzNNZ1kyaGxZMnN0YVc0OEwyaHZkR1ZzUVcxbGJtbDBlVDROQ2lBZ0lDQWdJRHhoYldWdWFYUjVSR1Z6WTNKcGNIUnBiMjRnTHo0TkNpQWdJQ0E4TDFSaFlteGxNVDROQ2lBZ0lDQThWR0ZpYkdVeElHUnBabVpuY2pwcFpEMGlWR0ZpYkdVeE15SWdiWE5rWVhSaE9uSnZkMDl5WkdWeVBTSXlJajROQ2lBZ0lDQWdJRHhqYjNOMFBtWmhiSE5sUEM5amIzTjBQZzBLSUNBZ0lDQWdQR2h2ZEdWc1FXMWxibWwwZVQ1RmVIQnlaWE56SUdOb1pXTnJMVzkxZER3dmFHOTBaV3hCYldWdWFYUjVQZzBLSUNBZ0lDQWdQR0Z0Wlc1cGRIbEVaWE5qY21sd2RHbHZiaUF2UGcwS0lDQWdJRHd2VkdGaWJHVXhQZzBLSUNBZ0lEeFVZV0pzWlRFZ1pHbG1abWR5T21sa1BTSlVZV0pzWlRFMElpQnRjMlJoZEdFNmNtOTNUM0prWlhJOUlqTWlQZzBLSUNBZ0lDQWdQR052YzNRK1ptRnNjMlU4TDJOdmMzUStEUW9nSUNBZ0lDQThhRzkwWld4QmJXVnVhWFI1UGxOaFptVWdaR1Z3YjNOcGRDQmliM2c4TDJodmRHVnNRVzFsYm1sMGVUNE5DaUFnSUNBZ0lEeGhiV1Z1YVhSNVJHVnpZM0pwY0hScGIyNGdMejROQ2lBZ0lDQThMMVJoWW14bE1UNE5DaUFnSUNBOFZHRmliR1V4SUdScFptWm5janBwWkQwaVZHRmliR1V4TlNJZ2JYTmtZWFJoT25KdmQwOXlaR1Z5UFNJMElqNE5DaUFnSUNBZ0lEeGpiM04wUG5SeWRXVThMMk52YzNRK0RRb2dJQ0FnSUNBOGFHOTBaV3hCYldWdWFYUjVQbE4zYVcxdGFXNW5JSEJ2YjJ3OEwyaHZkR1ZzUVcxbGJtbDBlVDROQ2lBZ0lDQWdJRHhoYldWdWFYUjVSR1Z6WTNKcGNIUnBiMjRnTHo0TkNpQWdJQ0E4TDFSaFlteGxNVDROQ2lBZ0lDQThWR0ZpYkdVeElHUnBabVpuY2pwcFpEMGlWR0ZpYkdVeE5pSWdiWE5rWVhSaE9uSnZkMDl5WkdWeVBTSTFJajROQ2lBZ0lDQWdJRHhqYjNOMFBtWmhiSE5sUEM5amIzTjBQZzBLSUNBZ0lDQWdQR2h2ZEdWc1FXMWxibWwwZVQ1WGFHVmxiR05vWVdseUlHRmpZMlZ6YzJsaWJHVThMMmh2ZEdWc1FXMWxibWwwZVQ0TkNpQWdJQ0FnSUR4aGJXVnVhWFI1UkdWelkzSnBjSFJwYjI0Z0x6NE5DaUFnSUNBOEwxUmhZbXhsTVQ0TkNpQWdJQ0E4VkdGaWJHVXhJR1JwWm1abmNqcHBaRDBpVkdGaWJHVXhOeUlnYlhOa1lYUmhPbkp2ZDA5eVpHVnlQU0kySWo0TkNpQWdJQ0FnSUR4amIzTjBQbVpoYkhObFBDOWpiM04wUGcwS0lDQWdJQ0FnUEdodmRHVnNRVzFsYm1sMGVUNU1ZWFZ1WkhKNUlHWmhZMmxzYVhSNVBDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1SUM4K0RRb2dJQ0FnUEM5VVlXSnNaVEUrRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1UZ2lJRzF6WkdGMFlUcHliM2RQY21SbGNqMGlOeUkrRFFvZ0lDQWdJQ0E4WTI5emRENW1ZV3h6WlR3dlkyOXpkRDROQ2lBZ0lDQWdJRHhvYjNSbGJFRnRaVzVwZEhrK1JISjVJR05zWldGdWFXNW5JSE5sY25acFkyVThMMmh2ZEdWc1FXMWxibWwwZVQ0TkNpQWdJQ0FnSUR4aGJXVnVhWFI1UkdWelkzSnBjSFJwYjI0Z0x6NE5DaUFnSUNBOEwxUmhZbXhsTVQ0TkNpQWdJQ0E4VkdGaWJHVXhJR1JwWm1abmNqcHBaRDBpVkdGaWJHVXhPU0lnYlhOa1lYUmhPbkp2ZDA5eVpHVnlQU0k0SWo0TkNpQWdJQ0FnSUR4amIzTjBQbVpoYkhObFBDOWpiM04wUGcwS0lDQWdJQ0FnUEdodmRHVnNRVzFsYm1sMGVUNUJhWElnWTI5dVpHbDBhVzl1YVc1blBDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1SUM4K0RRb2dJQ0FnUEM5VVlXSnNaVEUrRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1URXdJaUJ0YzJSaGRHRTZjbTkzVDNKa1pYSTlJamtpUGcwS0lDQWdJQ0FnUEdOdmMzUStkSEoxWlR3dlkyOXpkRDROQ2lBZ0lDQWdJRHhvYjNSbGJFRnRaVzVwZEhrK1VHVjBjeUJoYkd4dmQyVmtQQzlvYjNSbGJFRnRaVzVwZEhrK0RRb2dJQ0FnSUNBOFlXMWxibWwwZVVSbGMyTnlhWEIwYVc5dUlDOCtEUW9nSUNBZ1BDOVVZV0pzWlRFK0RRb2dJQ0FnUEZSaFlteGxNU0JrYVdabVozSTZhV1E5SWxSaFlteGxNVEV4SWlCdGMyUmhkR0U2Y205M1QzSmtaWEk5SWpFd0lqNE5DaUFnSUNBZ0lEeGpiM04wUG1aaGJITmxQQzlqYjNOMFBnMEtJQ0FnSUNBZ1BHaHZkR1ZzUVcxbGJtbDBlVDVOWldWMGFXNW5JSEp2YjIxelBDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1SUM4K0RRb2dJQ0FnUEM5VVlXSnNaVEUrRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1URXlJaUJ0YzJSaGRHRTZjbTkzVDNKa1pYSTlJakV4SWo0TkNpQWdJQ0FnSUR4amIzTjBQbVpoYkhObFBDOWpiM04wUGcwS0lDQWdJQ0FnUEdodmRHVnNRVzFsYm1sMGVUNUNZVzV4ZFdWMElHWmhZMmxzYVhScFpYTThMMmh2ZEdWc1FXMWxibWwwZVQ0TkNpQWdJQ0FnSUR4aGJXVnVhWFI1UkdWelkzSnBjSFJwYjI0K1EyRjBaWEpwYm1jZ1ptOXlJRzFsWlhScGJtZHpQQzloYldWdWFYUjVSR1Z6WTNKcGNIUnBiMjQrRFFvZ0lDQWdQQzlVWVdKc1pURStEUW9nSUNBZ1BGUmhZbXhsTVNCa2FXWm1aM0k2YVdROUlsUmhZbXhsTVRFeklpQnRjMlJoZEdFNmNtOTNUM0prWlhJOUlqRXlJajROQ2lBZ0lDQWdJRHhqYjNOMFBtWmhiSE5sUEM5amIzTjBQZzBLSUNBZ0lDQWdQR2h2ZEdWc1FXMWxibWwwZVQ1Q1lXSjVJSE5wZEhSbGNpQnpaWEoyYVdObFBDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1UG05dUlISmxjWFZsYzNRZ2IyNXNlVHd2WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1UGcwS0lDQWdJRHd2VkdGaWJHVXhQZzBLSUNBZ0lEeFVZV0pzWlRFZ1pHbG1abWR5T21sa1BTSlVZV0pzWlRFeE5DSWdiWE5rWVhSaE9uSnZkMDl5WkdWeVBTSXhNeUkrRFFvZ0lDQWdJQ0E4WTI5emRENW1ZV3h6WlR3dlkyOXpkRDROQ2lBZ0lDQWdJRHhvYjNSbGJFRnRaVzVwZEhrK1EzSnBZbk1zSUhKdmJHeDNZWGtnWW1Wa1BDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1UG05dUlISmxjWFZsYzNRZ2IyNXNlVHd2WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1UGcwS0lDQWdJRHd2VkdGaWJHVXhQZzBLSUNBZ0lEeFVZV0pzWlRFZ1pHbG1abWR5T21sa1BTSlVZV0pzWlRFeE5TSWdiWE5rWVhSaE9uSnZkMDl5WkdWeVBTSXhOQ0krRFFvZ0lDQWdJQ0E4WTI5emRENTBjblZsUEM5amIzTjBQZzBLSUNBZ0lDQWdQR2h2ZEdWc1FXMWxibWwwZVQ1VGFHOWxJSE5vYVc1bFBDOW9iM1JsYkVGdFpXNXBkSGsrRFFvZ0lDQWdJQ0E4WVcxbGJtbDBlVVJsYzJOeWFYQjBhVzl1SUM4K0RRb2dJQ0FnUEM5VVlXSnNaVEUrRFFvZ0lDQWdQRlJoWW14bE1TQmthV1ptWjNJNmFXUTlJbFJoWW14bE1URTJJaUJ0YzJSaGRHRTZjbTkzVDNKa1pYSTlJakUxSWo0TkNpQWdJQ0FnSUR4amIzTjBQbVpoYkhObFBDOWpiM04wUGcwS0lDQWdJQ0FnUEdodmRHVnNRVzFsYm1sMGVUNUpZMlV2ZG1WdVpHbHVaeUJ0WVdOb2FXNWxjend2YUc5MFpXeEJiV1Z1YVhSNVBnMEtJQ0FnSUNBZ1BHRnRaVzVwZEhsRVpYTmpjbWx3ZEdsdmJpQXZQZzBLSUNBZ0lEd3ZWR0ZpYkdVeFBnMEtJQ0FnSUR4VVlXSnNaVEVnWkdsbVptZHlPbWxrUFNKVVlXSnNaVEV4TnlJZ2JYTmtZWFJoT25KdmQwOXlaR1Z5UFNJeE5pSStEUW9nSUNBZ0lDQThZMjl6ZEQ1bVlXeHpaVHd2WTI5emRENE5DaUFnSUNBZ0lEeG9iM1JsYkVGdFpXNXBkSGsrUTI5dGNHeHBiV1Z1ZEdGeWVTQnVaWGR6Y0dGd1pYSThMMmh2ZEdWc1FXMWxibWwwZVQ0TkNpQWdJQ0FnSUR4aGJXVnVhWFI1UkdWelkzSnBjSFJwYjI0Z0x6NE5DaUFnSUNBOEwxUmhZbXhsTVQ0TkNpQWdJQ0E4VkdGaWJHVXhJR1JwWm1abmNqcHBaRDBpVkdGaWJHVXhNVGdpSUcxelpHRjBZVHB5YjNkUGNtUmxjajBpTVRjaVBnMEtJQ0FnSUNBZ1BHTnZjM1ErWm1Gc2MyVThMMk52YzNRK0RRb2dJQ0FnSUNBOGFHOTBaV3hCYldWdWFYUjVQbE5vZFhSMGJHVWdjMlZ5ZG1salpUd3ZhRzkwWld4QmJXVnVhWFI1UGcwS0lDQWdJQ0FnUEdGdFpXNXBkSGxFWlhOamNtbHdkR2x2Ymo1amIyMXdiR2x0Wlc1MFlYSjVJR1J2ZDI1MGIzZHVJR1J5YjNBZ2IyWm1JRzl1YkhrOEwyRnRaVzVwZEhsRVpYTmpjbWx3ZEdsdmJqNE5DaUFnSUNBOEwxUmhZbXhsTVQ0TkNpQWdJQ0E4VkdGaWJHVXhJR1JwWm1abmNqcHBaGcwS1BDOWthV1ptWjNJNlpHbG1abWR5WVcwK0N3PT0+Oz4+O2w8aTwxPjs+O2w8dDw7bDxpPDc+O2k8OT47aTwxMT47aTwxMz47aTwxNT47aTwxNz47aTwxOT47aTwyMT47aTwyMz47aTwyNz47aTwyOT47aTwzMT47aTwzMz47aTwzNT47aTwzNz47aTwzOT47aTw0MT47aTw0Mz47aTw0NT47aTw0OT47PjtsPHQ8cDxwPGw8VGV4dDs++Pjs+Pjs+Pjt0PDtsPGk8MT47aTwzPjs+O2w8dDxAMDw7Ozs7Ozs7Oz47Oz47dDxAMDw7Ozs7Ozs7Oz47Oz47Pj47dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8QDA8Ozs7Ozs7Ozs+Ozs+Oz4+Oz4+O3Q8O2w8aTwxPjtpPDM+Oz47bDx0PEAwPDs7Ozs7Ozs7Ozs+Ozs+O3Q8QDA8Ozs7Ozs7Ozs7Oz47Oz47Pj47dDw7bDxpPDExPjs+O2w8dDxAMDw7Ozs7Ozs7Oz47Oz47Pj47Pj47Pj47Pt9nQMho+ChKwOtInNkQ6e386JcF

   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +448
   System.Web.UI.Page.LoadPageViewState() +18
   System.Web.UI.Page.ProcessRequestMain() +447

[/code]
thanks in advance
0
Comment
Question by:skystar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
8 Comments
 
LVL 12

Expert Comment

by:ShazbotOK
ID: 18810148
That is not  a problem with the page being open to long... that is a problem with you load balancer services (IE: like a router) that is pushing you to a differnent server from the one you origionated from.

To stop this from happening you will need to set the MachineKey attribute in the config file (If .NET 2.0 you can do this in the web.config instead of the machine.config)

This is a security feature to keep the viewstate secure.  Below is an EXAMPLE ONLY of what you could use to sync your machines:

<machineKey validationKey='96EAB9DAE6672A7D320B0D2B9FD82EF47F184B8A9745D2DF424671607C11F115FDAF27D25F7B2B68DB8348A9A8F2B0BF858E64A076ACAAEEB176938AFF8511A4'   decryptionKey='D99306C85C612BFE4FE5177D47EE07FCEA3B8ED11BEECDD4'   validation='SHA1'/>

EggHeadCafe has an example of how to create an app that can autogen this for you...
http://www.eggheadcafe.com/articles/20030514.asp

0
 
LVL 14

Expert Comment

by:steveberzins
ID: 18810164
wow, that's a lotta viewstate...

anyway,

is this occuring on the same server? like your development machine? I'd guess not...
or in a load balanced/server farm type environment? probably...

my first guess would be your in a server farm, and sessions are 'sticky', for some amount of time in the 15-20 minute range, after that, chances are good the user, if not actively using the application is ending up on a different server when they do again become active, within the same 'browser session'.

If this is the case, you will have to do what the error information says, and have you're servers all use the same key and algorithm.

see:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfmachinekeysection.asp

that, or, I suppose, you could have them change the load balancing to ensure users don't change servers 'EVER', but I don't think anyone would actually do that for you, or recommend it as a real solution to the problem. (except me I guess...) :)
0
 

Author Comment

by:skystar
ID: 18812778
Thanks  both of you for your reply.

ShazbotOK, I am try to understand, but still it is hard for me.
On server where I am hosting my site and on my local computer, I have ASP.NET 1.1
When I put <machineKey validationKey ---> in my web.config, I got error.
Then I created machine.config and added the code into machine.config, but same error.

I do not know that I did right or wrong, I went to
http://www.eggheadcafe.com/articles/20030514.asp
then I use Pete's Nifty Machine Key Generator
http://www.eggheadcafe.com/articles/GenerateMachineKey/GenerateMachineKey.aspx

I added following code in machine.config, but same error

<machineKey validationKey='7AA532B866B1E3E2B23E46C0C1E9D631A5ABC51659DECD2BF46A6D09009C29910F4305BDBF8BA72B1AC13AF47697383C4A053C77B6FF685676DE362D458BA252'   decryptionKey='86270F5674D8E9C7DF4E717039F2563DD6532759C0C2C3BA'   validation='SHA1'/>

thanks again for your time
0
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 
LVL 12

Expert Comment

by:ShazbotOK
ID: 18813053
Ok... don't create a Machine.Config that already exists in the servers Microsoft.NET directory... also if you modify that one it will not take affect until the server's are rebooted.

Using the Web.Config is your best option as it does not require a reboot - however this section has to be properly placed or the Web.Config interpreter will not understand:
note that in the Web.Config there is
                 <System.Web>  
                                           [Stuff here]
                 </System.Web>
to make this work, you will need to insert the machineKey node inside the <System.Web> section
0
 

Author Comment

by:skystar
ID: 18865070
Hi ShazbotOK,
Thanks for your reply.

I was away for few days. I just copy and paste in web.config and it works fine.
But I have few questions for you, Please if you can clear these.

What is the difference if I use as follow:
OR What should I use autogenerate or ..?

<machineKey validationKey="AutoGenerate,IsolateApps"
            decryptionKey="AutoGenerate,IsolateApps"
            validation="SHA1"/>

Another thing It also work if I use enableViewStateMac="false" on each page. ?????

thanks agian for your help!
0
 
LVL 12

Accepted Solution

by:
ShazbotOK earned 500 total points
ID: 18865108
The AutoGenerate flag will work just fine as long as the Client Browser is returned to that specific server page - HOWEVER in the context of using a server Web Farm - you would have to:

(A)  set the static encryption key - as in my above example OR;
(B) turn of ViewState - which is !!Not!! recommended as it presents a high level opening for hijacking

Although some instances may be stated that "this is not a app in need of security" we all need to remember that 90% of all security breaches come from internal... if a low-risk app is comprimised it may provide the avenue for the entire server to be comprimised.

With that said my reccomendation is choice (A) all the time every-time...
0
 

Author Comment

by:skystar
ID: 18866980
thanks again,
How about the following error:
System.FormatException: Invalid length for a Base-64 char array.

Is this one also relates to the view state or it is totally different?
Thanks
skystar
0
 
LVL 12

Expert Comment

by:ShazbotOK
ID: 18867340
I would have to say it is related to the machineKey unless you are doing some custom encryption... possibly the encryption key did not get entirely copied?

I attempted using the one I generated (above) and it worked with no problems....  It would also be important to be sure your using the same validation value as the one that generated the key...
0

Featured Post

Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If I have to fix slow responding website my first thoughts are server side optimizations: the database may not be optimized or caching is not enabled, or things like that. We often overlook another major part of our web application: the client. We o…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Wufoo.com provides powerful tools for surveying targeted groups, and utilizing data from completed surveys to find trends, discover areas of demand or customer expectation, and make business decisions on products or services.
Learn how to set-up PayPal payment integration in your Wufoo form. Allow your users to remit payment through PayPal upon completion of your online form. This is helpful for collecting membership payments, customer payments, donations, and more.

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question