IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ
Los sistemas de reconocimiento de voz permiten interactuar con sistemas utilizando nuestra voz, útil para aplicaciones como atención al cliente automatizada, asistentes de voz, etc. El desarrollo de estos sistemas se ha beneficiado de los avances en Deep Learning haciéndolos más fiables y precisos....
- Autores:
-
Amaya Hernández, José David
León Suárez, Karen Dayanna
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2022
- Institución:
- Universidad Industrial de Santander
- Repositorio:
- Repositorio UIS
- Idioma:
- eng
- OAI Identifier:
- oai:noesis.uis.edu.co:20.500.14071/11436
- Palabra clave:
- Redes neuronales recurrentes
Redes neuronales profundas
Detección de palabras clave
Recurrent Neural Networks
Deep Neural Networks
Keyword Spotting
- Rights
- openAccess
- License
- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
id |
UISANTADR2_74be15987eb56ce19640cecda3e1cc4e |
---|---|
oai_identifier_str |
oai:noesis.uis.edu.co:20.500.14071/11436 |
network_acronym_str |
UISANTADR2 |
network_name_str |
Repositorio UIS |
repository_id_str |
|
dc.title.none.fl_str_mv |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
dc.title.english.none.fl_str_mv |
IMPLEMENTATION AND VALIDATION OF A-CONNECT IN SPEECH RECOGNITION APPLICATIONS |
title |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
spellingShingle |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ Redes neuronales recurrentes Redes neuronales profundas Detección de palabras clave Recurrent Neural Networks Deep Neural Networks Keyword Spotting |
title_short |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
title_full |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
title_fullStr |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
title_full_unstemmed |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
title_sort |
IMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZ |
dc.creator.fl_str_mv |
Amaya Hernández, José David León Suárez, Karen Dayanna |
dc.contributor.advisor.none.fl_str_mv |
Roa Fuentes, Elkim Felipe |
dc.contributor.author.none.fl_str_mv |
Amaya Hernández, José David León Suárez, Karen Dayanna |
dc.contributor.evaluator.none.fl_str_mv |
Moya Baquero, Juán Sebastián Sepúlveda Sepúlveda, Franklin Alexander |
dc.subject.none.fl_str_mv |
Redes neuronales recurrentes Redes neuronales profundas Detección de palabras clave |
topic |
Redes neuronales recurrentes Redes neuronales profundas Detección de palabras clave Recurrent Neural Networks Deep Neural Networks Keyword Spotting |
dc.subject.keyword.none.fl_str_mv |
Recurrent Neural Networks Deep Neural Networks Keyword Spotting |
description |
Los sistemas de reconocimiento de voz permiten interactuar con sistemas utilizando nuestra voz, útil para aplicaciones como atención al cliente automatizada, asistentes de voz, etc. El desarrollo de estos sistemas se ha beneficiado de los avances en Deep Learning haciéndolos más fiables y precisos. Sin embargo, el despliegue de estos sistemas suele requerir una gran cantidad de recursos de hardware y potencia para conseguir un buen rendimiento. Los aceleradores de redes neuronales analógicas son una posible solución, ya que proporcionan un rendimiento rápido con bajo consumo de energía a costa de precisión, ya que son susceptibles a variabilidad estocástica. Una solución a este problema es A-Connect, una metodología de entrenamiento que aumenta la resiliencia en precisión de las redes neuronales analógicas a la variabilidad estocástica. Se ha desarrollado una librería A-Connect en un proyecto anterior con implementaciones para capas totalmente conectadas y convolucionales. En este trabajo se extiende a diferentes tipos de RNNs utilizadas en aplicaciones de reconocimiento de voz como: FastGRNN, LSTM y GRU. Presentamos resultados utilizando las capas implementadas en diferentes modelos entrenados y probados en los datasets Spoken Digits y Speech Commands. Obtenemos con A-Connect un mejor rendimiento cuando se aplica error comparado con el modelo base, por ejemplo, con un modelo LSTM-S, logrando un 68,25% de precisión en el dataset Speech Commands utilizando A-Connect al 70%, lo que supone un 22,78% más que el modelo base. Además, presentamos la implementación en FPGA del modelo GRU. Una versión grande que alcanza el 94,78% en el dataset Speech Commands, y una versión pequeña entrenada con A-Connect 70% que alcanza una precisión del 72,19% en el dataset Speech Commands, un 27,54% más que el modelo base. También proporcionamos una demostración que ofrece una interfaz web permitiendo al usuario grabar un clip de audio y realizar inferencia en FPGA. |
publishDate |
2022 |
dc.date.accessioned.none.fl_str_mv |
2022-09-15T17:35:04Z |
dc.date.available.none.fl_str_mv |
2022-09-15T17:35:04Z |
dc.date.created.none.fl_str_mv |
2022-09-09 |
dc.date.issued.none.fl_str_mv |
2022-09-09 |
dc.type.local.none.fl_str_mv |
Tesis/Trabajo de grado - Monografía - Pregrado |
dc.type.hasversion.none.fl_str_mv |
http://purl.org/coar/version/c_b1a7d7d4d402bcce |
dc.type.coar.none.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
format |
http://purl.org/coar/resource_type/c_7a1f |
dc.identifier.uri.none.fl_str_mv |
https://noesis.uis.edu.co/handle/20.500.14071/11436 |
dc.identifier.instname.none.fl_str_mv |
Universidad Industrial de Santander |
dc.identifier.reponame.none.fl_str_mv |
Universidad Industrial de Santander |
dc.identifier.repourl.none.fl_str_mv |
https://noesis.uis.edu.co |
url |
https://noesis.uis.edu.co/handle/20.500.14071/11436 https://noesis.uis.edu.co |
identifier_str_mv |
Universidad Industrial de Santander |
dc.language.iso.none.fl_str_mv |
eng |
language |
eng |
dc.rights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.license.none.fl_str_mv |
Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) |
dc.rights.uri.none.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.coar.none.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.accessrights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.creativecommons.none.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
rights_invalid_str_mv |
Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) http://creativecommons.org/licenses/by-nc-nd/4.0/ http://purl.org/coar/access_right/c_abf2 Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
eu_rights_str_mv |
openAccess |
dc.format.mimetype.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidad Industrial de Santander |
dc.publisher.faculty.none.fl_str_mv |
Facultad de Ingeníerias Fisicomecánicas |
dc.publisher.program.none.fl_str_mv |
Ingeniería Electrónica |
dc.publisher.school.none.fl_str_mv |
Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones |
publisher.none.fl_str_mv |
Universidad Industrial de Santander |
institution |
Universidad Industrial de Santander |
bitstream.url.fl_str_mv |
https://noesis.uis.edu.co/bitstreams/0a63d11e-2144-49e8-b9ca-37cc6363bcd2/download https://noesis.uis.edu.co/bitstreams/0b3d9f7d-765f-463f-90b9-d084f8fe464e/download https://noesis.uis.edu.co/bitstreams/54996931-509d-4251-aaa2-f0926b8d3f9b/download https://noesis.uis.edu.co/bitstreams/545e3274-46b5-4578-a6cc-103e6bedcacb/download https://noesis.uis.edu.co/bitstreams/7e77971d-7bb2-4e19-a202-0d2f5107e74a/download https://noesis.uis.edu.co/bitstreams/16f78079-9b20-4e37-89aa-9ae94441ea85/download https://noesis.uis.edu.co/bitstreams/5df8b93b-46ec-4459-887e-2aed121e810a/download https://noesis.uis.edu.co/bitstreams/91fec7cd-5524-40fe-b926-d12fd0f2a0b3/download https://noesis.uis.edu.co/bitstreams/d16bf410-96ab-4bbc-bfd7-07e8736156ee/download https://noesis.uis.edu.co/bitstreams/a9363509-8061-4f29-860f-086fdce5c0fd/download |
bitstream.checksum.fl_str_mv |
aa0836efb887fc10b220b1d7369f896c d9d014bf021951e0d3bb73eaf13bee53 61f904ceee3bfcb58f940437b57a6672 d6298274a8378d319ac744759540b71b 4f561a9dec122f2d45c4b76c34a4cf44 68b329da9893e34099c7d8ad5cb9c940 33b8864c5478bfaa3cac868b83ec2852 538d73a34db8f2aeba64e18fe604f1dd 317cd3877aa491d54f62127637068116 04403fb26923bebe92af4df5583fd9b2 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
DSpace at UIS |
repository.mail.fl_str_mv |
noesis@uis.edu.co |
_version_ |
1814095238913851392 |
spelling |
Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)info:eu-repo/semantics/openAccesshttp://creativecommons.org/licenses/by-nc-nd/4.0/http://purl.org/coar/access_right/c_abf2info:eu-repo/semantics/openAccessAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)Roa Fuentes, Elkim FelipeAmaya Hernández, José DavidLeón Suárez, Karen DayannaMoya Baquero, Juán SebastiánSepúlveda Sepúlveda, Franklin Alexander2022-09-15T17:35:04Z2022-09-15T17:35:04Z2022-09-092022-09-09https://noesis.uis.edu.co/handle/20.500.14071/11436Universidad Industrial de SantanderUniversidad Industrial de Santanderhttps://noesis.uis.edu.coLos sistemas de reconocimiento de voz permiten interactuar con sistemas utilizando nuestra voz, útil para aplicaciones como atención al cliente automatizada, asistentes de voz, etc. El desarrollo de estos sistemas se ha beneficiado de los avances en Deep Learning haciéndolos más fiables y precisos. Sin embargo, el despliegue de estos sistemas suele requerir una gran cantidad de recursos de hardware y potencia para conseguir un buen rendimiento. Los aceleradores de redes neuronales analógicas son una posible solución, ya que proporcionan un rendimiento rápido con bajo consumo de energía a costa de precisión, ya que son susceptibles a variabilidad estocástica. Una solución a este problema es A-Connect, una metodología de entrenamiento que aumenta la resiliencia en precisión de las redes neuronales analógicas a la variabilidad estocástica. Se ha desarrollado una librería A-Connect en un proyecto anterior con implementaciones para capas totalmente conectadas y convolucionales. En este trabajo se extiende a diferentes tipos de RNNs utilizadas en aplicaciones de reconocimiento de voz como: FastGRNN, LSTM y GRU. Presentamos resultados utilizando las capas implementadas en diferentes modelos entrenados y probados en los datasets Spoken Digits y Speech Commands. Obtenemos con A-Connect un mejor rendimiento cuando se aplica error comparado con el modelo base, por ejemplo, con un modelo LSTM-S, logrando un 68,25% de precisión en el dataset Speech Commands utilizando A-Connect al 70%, lo que supone un 22,78% más que el modelo base. Además, presentamos la implementación en FPGA del modelo GRU. Una versión grande que alcanza el 94,78% en el dataset Speech Commands, y una versión pequeña entrenada con A-Connect 70% que alcanza una precisión del 72,19% en el dataset Speech Commands, un 27,54% más que el modelo base. También proporcionamos una demostración que ofrece una interfaz web permitiendo al usuario grabar un clip de audio y realizar inferencia en FPGA.PregradoIngeniero ElectrónicoSpeech recognition systems allow us to interface with systems using our voice, useful for applications such as automated customer service, voice assistants, etc. The development of these systems has benefited from advances in Deep Learning making them more reliable and precise. However, the deployment of these systems requires a high amount of hardware resources and power to achieve good performance. Analog neural network accelerators are a possible solution as they provide fast performance with low power consumption at the cost of lower accuracy because they are susceptible to stochastic variability. A solution to this problem is A-Connect, a training methodology that increases analog neural network accuracy resilience to stochastic variability. An A-Connect library has already been developed in a previous undergraduate project containing implementations for fully connected and convolutional layers. In this work, the library is extended to different kinds of recurrent neural networks (RNNs) used in speech recognition applications such as: Fast, Accurate, Stable, and Tiny Gated Recurrent Neural Network (FastGRNN), Long Short-Term Memory (LSTM), and Gated Recurrent Unit (GRU). We present results using the implemented layers on different models trained and tested on the Spoken Digits and Speech Commands datasets. A-Connect shows better performance when error is applied compared to the base model, for example, for the LSTM-S model, achieving up to 68.25% accuracy on Speech Commands dataset using A-Connect 70%, which is 22.78% higher than the base model. In addition, we present the FPGA implementation of a GRU model. A large version which achieves 94.78% on Speech Commands dataset, and a small version trained with A-Connect 70% which achieves an accuracy of 72.19% on Speech Commands dataset, 27.54% higher than the base model. We also provide a demo that offers a web interface that allows the user to record an audio clip and perform inference on FPGA.https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001944665application/pdfengUniversidad Industrial de SantanderFacultad de Ingeníerias FisicomecánicasIngeniería ElectrónicaEscuela de Ingenierías Eléctrica, Electrónica y TelecomunicacionesRedes neuronales recurrentesRedes neuronales profundasDetección de palabras claveRecurrent Neural NetworksDeep Neural NetworksKeyword SpottingIMPLEMENTACIÓN Y VALIDACIÓN DE A-CONNECT EN APLICACIONES DE RECONOCIMIENTO DE VOZIMPLEMENTATION AND VALIDATION OF A-CONNECT IN SPEECH RECOGNITION APPLICATIONSTesis/Trabajo de grado - Monografía - Pregradohttp://purl.org/coar/version/c_b1a7d7d4d402bccehttp://purl.org/coar/resource_type/c_7a1fORIGINALDocumento.pdfDocumento.pdfapplication/pdf9685099https://noesis.uis.edu.co/bitstreams/0a63d11e-2144-49e8-b9ca-37cc6363bcd2/downloadaa0836efb887fc10b220b1d7369f896cMD51Nota de proyecto.pdfNota de proyecto.pdfapplication/pdf1535659https://noesis.uis.edu.co/bitstreams/0b3d9f7d-765f-463f-90b9-d084f8fe464e/downloadd9d014bf021951e0d3bb73eaf13bee53MD53Carta de autorización.pdfCarta de autorización.pdfapplication/pdf218825https://noesis.uis.edu.co/bitstreams/54996931-509d-4251-aaa2-f0926b8d3f9b/download61f904ceee3bfcb58f940437b57a6672MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-82237https://noesis.uis.edu.co/bitstreams/545e3274-46b5-4578-a6cc-103e6bedcacb/downloadd6298274a8378d319ac744759540b71bMD55TEXTDocumento.pdf.txtDocumento.pdf.txtExtracted texttext/plain82457https://noesis.uis.edu.co/bitstreams/7e77971d-7bb2-4e19-a202-0d2f5107e74a/download4f561a9dec122f2d45c4b76c34a4cf44MD56Nota de proyecto.pdf.txtNota de proyecto.pdf.txtExtracted texttext/plain1https://noesis.uis.edu.co/bitstreams/16f78079-9b20-4e37-89aa-9ae94441ea85/download68b329da9893e34099c7d8ad5cb9c940MD58Carta de autorización.pdf.txtCarta de autorización.pdf.txtExtracted texttext/plain6692https://noesis.uis.edu.co/bitstreams/5df8b93b-46ec-4459-887e-2aed121e810a/download33b8864c5478bfaa3cac868b83ec2852MD510THUMBNAILDocumento.pdf.jpgDocumento.pdf.jpgGenerated Thumbnailimage/jpeg2788https://noesis.uis.edu.co/bitstreams/91fec7cd-5524-40fe-b926-d12fd0f2a0b3/download538d73a34db8f2aeba64e18fe604f1ddMD57Nota de proyecto.pdf.jpgNota de proyecto.pdf.jpgGenerated Thumbnailimage/jpeg4360https://noesis.uis.edu.co/bitstreams/d16bf410-96ab-4bbc-bfd7-07e8736156ee/download317cd3877aa491d54f62127637068116MD59Carta de autorización.pdf.jpgCarta de autorización.pdf.jpgGenerated Thumbnailimage/jpeg5686https://noesis.uis.edu.co/bitstreams/a9363509-8061-4f29-860f-086fdce5c0fd/download04403fb26923bebe92af4df5583fd9b2MD51120.500.14071/11436oai:noesis.uis.edu.co:20.500.14071/114362022-10-14 08:38:56.365http://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessopen.accesshttps://noesis.uis.edu.coDSpace at UISnoesis@uis.edu.coRWwgc3VzY3JpdG8gQVVUT1Ig4oCTIEVTVFVESUFOVEUsIGlkZW50aWZpY2FkbyBjb21vIGFwYXJlY2UgYWwgcGllIGRlIG1pIGZpcm1hLCBhY3R1YW5kbyBlbiBub21icmUgcHJvcGlvLCB5IGVuIG1pIGNhbGlkYWQgZGUgYXV0b3IgZGVsIHRyYWJham8gZGUgZ3JhZG8sIGRlbCB0cmFiYWpvIGRlIGludmVzdGlnYWNpw7NuLCBvIGRlIGxhIHRlc2lzIGRlbm9taW5hZGEgY29tbyBzZSBlc3BlY2lmaWNhIGVuIGVsIGNhbXBvIOKAmFTDrXR1bG/igJksIHBvciBtZWRpbyBkZWwgcHJlc2VudGUgZG9jdW1lbnRvIGF1dG9yaXpvIGEgbGEgVU5JVkVSU0lEQUQgSU5EVVNUUklBTCBERSBTQU5UQU5ERVIsIHBhcmEgcXVlIGVuIGxvcyB0w6lybWlub3MgZXN0YWJsZWNpZG9zIGVuIGxhIExleSAyMyBkZSAxOTgyLCBsYSBMZXkgNDQgZGUgMTk5MywgZWwgRGVjcmV0byA0NjAgZGUgMTk5NSwgbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBkZXJlY2hvcyBkZSBhdXRvciwgcmVhbGljZSBsYSByZXByb2R1Y2Npw7NuLCBjb211bmljYWNpw7NuIHDDumJsaWNhLCBlZGljacOzbiwgZGlzdHJpYnVjacOzbiBiYWpvIGxhIG1vZGFsaWRhZCBkZSBhbHF1aWxlciwgcHLDqXN0YW1vIHDDumJsaWNvIG8gaW1wb3J0YWNpw7NuIGVuIGZvcm1hdG8gaW1wcmVzbyB5IGRpZ2l0YWwsIGxhIHRyYW5zZm9ybWFjacOzbiwgbGEgcHVibGljYWNpw7NuIGNvbW8gb2JyYSBsaXRlcmFyaWEsIGxpYnJvIGVsZWN0csOzbmljbyAoZS1Cb29rKSBvIHJldmlzdGEgZWxlY3Ryw7NuaWNhLCBpbmNsdXllbmRvIGxhIHBvc2liaWxpZGFkIGRlIGRpc3RyaWJ1aXJsYSBwb3IgbWVkaW9zIHRyYWRpY2lvbmFsZXMgbyBwb3IgSW50ZXJuZXQgYSBjdWFscXVpZXIgdMOtdHVsbyAgcG9yIGxhIFVuaXZlcnNpZGFkIHkgY29uIHF1aWVuIHRlbmdhIGNvbnZlbmlvIHBhcmEgZWxsbywgaW5jbHV5ZW5kbyBsYSBwb3NpYmlsaWRhZCBkZSBoYWNlciBhZGFwdGFjaW9uZXMsIGFjdHVhbGl6YWNpb25lcyB5IHRyYWR1Y2Npb25lcyBlbiB0b2RvcyBsb3MgaWRpb21hczsgbGEgaW5jb3Jwb3JhY2nDs24gYSB1bmEgY29sZWNjacOzbiBvIGNvbXBpbGFjacOzbiwgbGEgdHJhZHVjY2nDs24sIGZpamFjacOzbiBlbiBmb25vZ3JhbWEsIHB1ZXN0YSBhIGRpc3Bvc2ljacOzbiBlbiBmb3JtYXRvIGFuw6Fsb2dvLCBkaWdpdGFsLCBhdWRpb3Zpc3VhbCwgbWFnbsOpdGljbywgeSwgZW4gZ2VuZXJhbCwgbG9zIGZvcm1hdG9zIGVuICBxdWUgc2UgcHVlZGEgcmVwcm9kdWNpciB5IGNvbXVuaWNhciAgZGUgbWFuZXJhIHRvdGFsIHkgcGFyY2lhbCBtaSB0cmFiYWpvIGRlIGdyYWRvIG8gdGVzaXMuIAoKTGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBzZSBoYWNlIGV4dGVuc2l2YSBhIGxhcyBmYWN1bHRhZGVzIHkgZGVyZWNob3MgZGUgdXNvIHNvYnJlIGxhIG9icmEgZW4gZm9ybWF0byBvIHNvcG9ydGUgYW7DoWxvZ28sIGZvcm1hdG8gdmlydHVhbCwgZWxlY3Ryw7NuaWNvLCBkaWdpdGFsLCDDs3B0aWNvLCB1c28gZW4gcmVkLCBJbnRlcm5ldCwgZXh0cmFuZXQsIGludHJhbmV0LCBlbnRyZSBvdHJvcyBmb3JtYXRvcyB5IG1lZGlvcy4KCkVsIEFVVE9SIOKAkyBFU1RVRElBTlRFLCBtYW5pZmllc3RhIHF1ZSBsYSBvYnJhIG9iamV0byBkZSBsYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIGVzIG9yaWdpbmFsIHkgbGEgcmVhbGl6w7Mgc2luIHZpb2xhciBvIHVzdXJwYXIgZGVyZWNob3MgZGUgYXV0b3IgZGUgdGVyY2Vyb3MsIHBvciBsbyB0YW50bywgbGEgb2JyYSBlcyBkZSBzdSBleGNsdXNpdmEgYXV0b3LDrWEgeSBkZXRlbnRhIGxhIHRpdHVsYXJpZGFkIHNvYnJlIGxhIG1pc21hLiAgCgpQYXJhIHRvZG9zIGxvcyBlZmVjdG9zIGxhIFVOSVZFUlNJREFEIElORFVTVFJJQUwgREUgU0FOVEFOREVSIGFjdMO6YSBjb21vIHVuIHRlcmNlcm8gZGUgYnVlbmEgZmU7IGVuIGNvbnNlY3VlbmNpYSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSBlbiBjdWVzdGnDs24sIEVsIEFVVE9SIOKAkyBFU1RVRElBTlRFLCBhc3VtaXLDoSB0b2RhIGxhIHJlc3BvbnNhYmlsaWRhZCwgeSBzYWxkcsOhIGVuIGRlZmVuc2EgZGUgbG9zIGRlcmVjaG9zIGFxdcOtIGF1dG9yaXphZG9zLgo= |