Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3

: tablas, figuras

Autores:
Medina Aguirre, Francisco Alejandro
Cortés Osorio, Jimy Alexander
Quintero Vallejo, Hernán Alberto
Tipo de recurso:
Book
Fecha de publicación:
2025
Institución:
Universidad Tecnológica de Pereira
Repositorio:
Repositorio Institucional UTP
Idioma:
spa
OAI Identifier:
oai:repositorio.utp.edu.co:11059/16478
Acceso en línea:
https://hdl.handle.net/11059/16478
https://repositorio.utp.edu.co/home
Palabra clave:
620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingeniería
2. Ingeniería y Tecnología::2K. Otras Ingenierías y Tecnologías
Robots programación
Python – Lenguaje de programación
Robótica
ODS 9: Industria, innovación e infraestructura. Construir infraestructuras resilientes, promover la industrialización inclusiva y sostenible y fomentar la innovación
Rights
openAccess
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
id UTP2_2005fb101d81023fea48dcc8427d52c9
oai_identifier_str oai:repositorio.utp.edu.co:11059/16478
network_acronym_str UTP2
network_name_str Repositorio Institucional UTP
repository_id_str
dc.title.spa.fl_str_mv Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
title Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
spellingShingle Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingeniería
2. Ingeniería y Tecnología::2K. Otras Ingenierías y Tecnologías
Robots programación
Python – Lenguaje de programación
Robótica
ODS 9: Industria, innovación e infraestructura. Construir infraestructuras resilientes, promover la industrialización inclusiva y sostenible y fomentar la innovación
title_short Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
title_full Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
title_fullStr Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
title_full_unstemmed Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
title_sort Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3
dc.creator.fl_str_mv Medina Aguirre, Francisco Alejandro
Cortés Osorio, Jimy Alexander
Quintero Vallejo, Hernán Alberto
dc.contributor.author.none.fl_str_mv Medina Aguirre, Francisco Alejandro
Cortés Osorio, Jimy Alexander
Quintero Vallejo, Hernán Alberto
dc.subject.ddc.none.fl_str_mv 620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingeniería
topic 620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingeniería
2. Ingeniería y Tecnología::2K. Otras Ingenierías y Tecnologías
Robots programación
Python – Lenguaje de programación
Robótica
ODS 9: Industria, innovación e infraestructura. Construir infraestructuras resilientes, promover la industrialización inclusiva y sostenible y fomentar la innovación
dc.subject.ocde.none.fl_str_mv 2. Ingeniería y Tecnología::2K. Otras Ingenierías y Tecnologías
dc.subject.proposal.spa.fl_str_mv Robots programación
Python – Lenguaje de programación
Robótica
dc.subject.ods.none.fl_str_mv ODS 9: Industria, innovación e infraestructura. Construir infraestructuras resilientes, promover la industrialización inclusiva y sostenible y fomentar la innovación
description : tablas, figuras
publishDate 2025
dc.date.accessioned.none.fl_str_mv 2025-11-25T19:21:02Z
dc.date.available.none.fl_str_mv 2025-11-25T19:21:02Z
dc.date.issued.none.fl_str_mv 2025
dc.type.none.fl_str_mv Libro
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_2f33
dc.type.content.none.fl_str_mv Text
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/book
format http://purl.org/coar/resource_type/c_2f33
status_str acceptedVersion
dc.identifier.citation.spa.fl_str_mv Medina Aguirre, F, Cortés Osorio, J y Quintero Vallejo, H. (2025). Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3. Universidad Tecnológica de Pereira. Disponible en: https://hdl.handle.net/11059/16478
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/11059/16478
dc.identifier.eisbn.none.fl_str_mv 978-628-501-054-5
dc.identifier.instname.none.fl_str_mv Universidad Tecnológica de Pereira
dc.identifier.reponame.none.fl_str_mv Repositorio Universidad Tecnológica de Pereira
dc.identifier.repourl.none.fl_str_mv https://repositorio.utp.edu.co/home
identifier_str_mv Medina Aguirre, F, Cortés Osorio, J y Quintero Vallejo, H. (2025). Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3. Universidad Tecnológica de Pereira. Disponible en: https://hdl.handle.net/11059/16478
978-628-501-054-5
Universidad Tecnológica de Pereira
Repositorio Universidad Tecnológica de Pereira
url https://hdl.handle.net/11059/16478
https://repositorio.utp.edu.co/home
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.ispartofseries.spa.fl_str_mv Colección Textos Académicos
dc.relation.references.none.fl_str_mv Aliane, N., & Bemposta, S. (2008). Una experiencia de aprendizaje basado en proyectos en una asignatura de robótica. IEEE-RITA, 3(2), 71–76.
Botelho, S. S. C., Braz, L. G., & Rodrigues, R. N. (2012). Exploring creativity and sociability with an accessible educational robotic kit. RiE, 55–60. http://www.silviacb.c3.furg.br
Bradski, G., & Kaehler, A. (2008). Learning OpenCV: Computer vision with the OpenCV library. O’Reilly Media. https://books.google. com.co/books?hl=es&lr=&id=seAgiOfu2EIC
Bueno, P. M., Victoria, Y., & Fitzgerald, L. (2004). Aprendizaje basado en problemas. Theoria, 13, 145–157.
Chavarría, M., & Saldaño, A. (2010). La robótica educativa como una innovativa interfaz educativa entre el alumno y una situación- problema. Didasc@lia: Didáctica y Educación, 2, 1–12.
Coria Arreola, J. M. (2010). Aprendizaje por proyectos: Una metodología diferente. Revista e-FORMADORES.
Cruz, J. A. G., Isusqui, J. C. P., Alvarez, V. M., Inga, C. V., Silva, M. O. C., & Villavicencio, I. E. S. (2023). Desafíos del aula invertida para la educación universitaria en América Latina. Editorial Mar Caribe de Josefrank. https://doi.org/10.31219/osf.io/teqkh
da Silva Filgueira, M. G., & González González, C. S. (2017). PequeBot: Propuesta de un sistema ludificado de robótica educativa para la educación infantil. http://riull.ull.es/xmlui/handle/915/6677
Downey, A. B. (2012). Think Python (Vol. 1). O’Reilly Media. https://books.google.com.co/books?hl=es&lr=&id=1mZtP9H6OMQC
Echeverría, V. L. (2022). Motivados por la robótica. Campo de Prácticas, 1(2), 69–81.
Espejo Leupin, R. M. (2016). ¿Pedagogía activa o métodos activos? El caso del aprendizaje activo en la universidad. Revista Digital de Investigación en Docencia Universitaria, 16–27. https://doi. org/10.19083/ridu.10.456
Estruch, V., & Silva, J. (2006). Aprendizaje basado en proyectos en la carrera de Ingeniería Informática. Closas-Orcoyen.
Fernández Martínez, M., García Sánchez, J.-N., Fuertes, A. de C., Redondo Fidalgo, R., & Arias Gundín, O. (2006). El aprendizaje basado en problemas: Revisión de estudios empíricos internacionales. Revista de Educación, 341, 397–418.
García, J. M. (2015). Robótica educativa: La programación como parte de un proceso educativo. RED. Revista de Educación a Distancia, 46. http://www.um.es/ead/red/46
García, R., Traver, J. A., & Candela, I. (2019). Aprendizaje cooperativo: Fundamentos, características y técnicas (Vol. 2). Publicaciones ICCE.
Gouaillier, D., Hugel, V., Blazevic, P., Kilner, C., Monceaux, J., Lafourcade, P., Marnier, B., Serre, J., & Maisonnier, B. (2009). Mechatronic design of NAO humanoid. In 2009 IEEE International Conference on Robotics and Automation (pp. 769–774). https:// doi.org/10.1109/ROBOT.2009.5152516
Gouws, L. A., Bradshaw, K., & Wentworth, P. (2013). Computational thinking in educational activities. In Proceedings of the 18th ACM Conference on Innovation and Technology in Computer Science Education (pp. 10–15). https://doi.org/10.1145/2462476.2466518
Karim, M. E., Lemaignan, S., & Mondada, F. (2015). A review: Can robots reshape K-12 STEM education? In 2015 IEEE International Workshop on Advanced Robotics and Its Social Impacts (ARSO) (pp. 1–8). https://doi.org/10.1109/ARSO.2015.7428217
Keyser, M. W. (2000). Active learning and cooperative learning: Understanding the difference and using both styles effectively. Research Strategies, 17(1), 35–44. https://doi.org/10.1016/S0734- 3310(00)00022-7
Kolmos, A., Rodríguez, F. J., & Guerra, A. (2017). Aprendizaje basado en problemas en ingeniería: Teoría y práctica (F. Rodríguez-Mesa, Trad.). Aalborg University Press.
Ledo, M. V., Rivera Michelena, N., Cao, N. N., Morales Suárez, R., Niurka, M., & Vidal, V. (2016). Aula invertida, nueva estrategia didáctica. Educación Médica Superior, 30(3).
LEGO Education. (2016). Guía de uso: Lego Mindstorms Education EV3 (Versión 1.2.2, Vol. 3). The LEGO Group.
LEGO Education. (2021a). LEGO® MINDSTORMS® EV3 31313. https:// www.lego.com/es-es/product/lego-mindstorms-ev3-31313
LEGO Education. (2021b, 5 de febrero). MINDSTORMS Education EV3 Retirement FAQs. https://community.legoeducation.com/ blogs/36/95
Liu, M., & Pedersen, S. (1998). The effect of being hypermedia designers on elementary school students’ motivation and learning of design.
López, G., & Acuña, S. (2011). Aprendizaje cooperativo en el aula. Inventio, 7(14), 29–38. https://inventio.uaem.mx/index.php/ inventio/article/view/422
Lott, S., & Banffy, R. (2022). Functional Python programming. https:// books.google.com.co/books?hl=es&lr=&id=iWWkEAAAQBAJ
Raspberry Pi Ltd. (2012). Raspberry Pi. https://www.raspberrypi.com/
Lutz, M. (2013). Learning Python. O’Reilly Media.
Martí, J. A., Heydrich, M., Rojas, M., & Hernández, A. (2010). Aprendizaje basado en proyectos: Una experiencia de innovación docente. Revista Universidad EAFIT, 46, 11–21.
Microsoft. (2020). Visual Studio Code. https://code.visualstudio.com/
Moscaiza Torres, V. A. (2022). Robótica educativa en el aprendizaje cooperativo del área de Matemática en niños y niñas del sexto grado de educación primaria (Tesis de Maestría). Universidad Nacional de Huancavelica.
Oliver, J., Toledo, R., Pujol, J., Sorribes, J., & Valderrama, E. (2009). Un ABP basado en la robótica para las ingenierías informáticas. JENUI 2009, 331–338.
OpenCV Team. (2008). OpenCV. https://opencv.org/
Python, P. (2025, enero 2). PEP 8 – Style Guide for Python Code. https://peps.python.org/pep-0008/
Python Software Foundation. (2021, enero 30). Python Brochure Vol. 1. https://brochure.getpython.info/
Quigley, M., Gerkey, B., Conley, K., Faust, J., Foote, T., Leibs, J., Berger,
E., Wheeler, R., & Ng, A. (2009). ROS: An open-source robot operating system. ICRA Workshop on Open Source Software, 3(3.2), 5–11.
Quintero Vallejo, H. A., & Prado Martínez, W. A. (2020). Evaluación de la pertinencia del aprendizaje basado en proyectos (ABP)... (Tesis de Maestría). Universidad Tecnológica de Pereira.
Richardson, M., Donat, W., & Wallace, S. (2021). Getting started with Raspberry Pi (4.a ed.). Make Community.
Robot Framework Foundation. (2025). Robot Framework. https:// robotframework.org/
Robotics, O. (2021). ROS - Robot Operating System. https://www.ros. org/
Rollins, M. (2014). Beginning LEGO MINDSTORMS EV3. Apress.
Ruiz Vicente, F. (2017). Diseño de proyectos STEAM a partir del currículum actual de Educación Primaria.... Universidad CEU Cardenal Herrera.
Seshan, S., & EV3Lessons. (2020). Robot designs. https://ev3lessons. com/en/robotdesigns.html
SoftBank Robotics America. (2025). NAO: Personal Robot Teaching Assistant. https://us.softbankrobotics.com/nao
Stellman, A., & Greene, J. (2024). Head First C# (5.a ed.). O’Reilly Media.
Sweigart, A. (2020). Automate the boring stuff with Python. No Starch Press.
Trujillo, F. (2016). Aprendizaje basado en proyectos: Infantil, primaria y secundaria (1.a ed.). Ministerio de Educación.
Valk, L. (2021). Pybricks. https://pybricks.com/
Valk, L., & Pybricks. (2022). Pybricks. https://pybricks.com/
Vergara Ramírez, J. J. (2015). El aprendizaje basado en proyectos (ABP), paso a paso (Vol. 10). E. M. Ediciones.
dc.rights.license.none.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
dc.rights.uri.none.fl_str_mv https://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
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
https://creativecommons.org/licenses/by-nc-nd/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 193 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.coverage.region.none.fl_str_mv Pereira, Risaralda, Colombia
dc.publisher.none.fl_str_mv Universidad Tecnológica de Pereira
dc.publisher.place.none.fl_str_mv Pereira
publisher.none.fl_str_mv Universidad Tecnológica de Pereira
institution Universidad Tecnológica de Pereira
bitstream.url.fl_str_mv https://repositorio.utp.edu.co/bitstreams/452239ed-0595-47d8-b821-80d4535b5e0c/download
https://repositorio.utp.edu.co/bitstreams/a742586b-7820-49f6-8779-505521e72414/download
https://repositorio.utp.edu.co/bitstreams/52e43e16-faea-4970-9f1f-af8a771de5d6/download
https://repositorio.utp.edu.co/bitstreams/a7342b52-96c8-431e-b3a0-ee7c053df4a8/download
https://repositorio.utp.edu.co/bitstreams/e160ce36-5559-454e-9b7f-f2e4130d9c65/download
bitstream.checksum.fl_str_mv 7bee140bc04a11cf52696d1b54b5fe02
73a5432e0b76442b22b026844140d683
a316f2305cc4a9b29a286020434af8e7
87047859c3255739c478e01f193e557a
19f670910115acd55da3327173a66247
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio de la Universidad Tecnológica de Pereira
repository.mail.fl_str_mv bdigital@metabiblioteca.com
_version_ 1851051521648623616
spelling Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)Manifiesto (Manifestamos) en este documento la voluntad de autorizar a la Biblioteca Jorge Roa Martínez de la Universidad Tecnológica de Pereira la publicación en el Repositorio institucional (http://biblioteca.utp.edu.co), la versión electrónica de la OBRA titulada: La Universidad Tecnológica de Pereira, entidad académica sin ánimo de lucro, queda por lo tanto facultada para ejercer plenamente la autorización anteriormente descrita en su actividad ordinaria de investigación, docencia y publicación. La autorización otorgada se ajusta a lo que establece la Ley 23 de 1982. Con todo, en mi (nuestra) condición de autor (es) me (nos) reservo (reservamos) los derechos morales de la OBRA antes citada con arreglo al artículo 30 de la Ley 23 de 1982. En concordancia suscribo (suscribimos) este documento en el momento mismo que hago (hacemos) entrega de mi (nuestra) OBRA a la Biblioteca “Jorge Roa Martínez” de la Universidad Tecnológica de Pereira. Manifiesto (manifestamos) que la OBRA objeto de la presente autorizaciónhttps://creativecommons.org/licenses/by-nc-nd/4.0/http://purl.org/coar/access_right/c_abf2info:eu-repo/semantics/openAccessMedina Aguirre, Francisco AlejandroCortés Osorio, Jimy AlexanderQuintero Vallejo, Hernán Alberto2025-11-25T19:21:02Z2025-11-25T19:21:02Z2025Medina Aguirre, F, Cortés Osorio, J y Quintero Vallejo, H. (2025). Programación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3. Universidad Tecnológica de Pereira. Disponible en: https://hdl.handle.net/11059/16478https://hdl.handle.net/11059/16478978-628-501-054-5Universidad Tecnológica de PereiraRepositorio Universidad Tecnológica de Pereirahttps://repositorio.utp.edu.co/home: tablas, figurasProgramación en Python para Robótica: de la teoría a la práctica con LEGO MINDSTORMS® EV3 invita a descubrir el mundo de la robótica educativa. Con un estilo accesible y ejemplos paso a paso, guía al lector desde los fundamentos de Python hasta la programación de robots capaces de percibir y responder a su entorno mediante sensores y actuadores. Cada capítulo propone retos progresivos que estimulan la experimentación y el diseño de soluciones prácticas, consolidando conceptos de programación, control y automatización. Al mismo tiempo, fomenta la creatividad, la innovación y el pensamiento crítico, elementos esenciales en la formación de estudiantes y profesionales en la era digital. Más que un manual técnico, este libro es una herramienta didáctica y motivadora, ideal para estudiantes, docentes y entusiastas que buscan fortalecer sus habilidades en programación y pensamiento computacional. Su enfoque práctico convierte el aprendizaje en una experiencia dinámica, donde teoría y práctica se encuentran para dar vida a proyectos robóticos.Introducción 13 Capítulo1: Programación del Robot LEGO ® MIDSTORN ® EV3 17 ¿Qué es la Programación? -- 19 ¿Qué es Python? -- 20 ¿Qué es LEGO® MINDSTORMS EV3? -- 22 Aplicaciones de Python en robótica 26 Capítulo 2: Configuración del Ambiente del Desarrollo 33 Software requerido -- 35 Configuración e instalación del LEGO® MINDSTORMS EV3 con PyBricks -- 37 ¿Qué es PyBricks? 37 Preparación del entorno de desarrollo -- 38 Configurando comunicación EV3 y PC -- 39 Conexión USB -- 39 Conexión Bluetooth -- 40 Conexión Wifi 40 El firmware del EV3 -- 41 Firmware oficial LEGO® MINDSTORMS® EV3 (versión 1.10E o superior) -- 41 EV3 MicroPython (versión 1.2 o superior) 41 Pasos para configurar y ejecutar un programa usando Pybricks -- 42 Recursos de aprendizaje PyBricks -- 44 Capítulo 3: Fundamentos del Python -- 47 Sintaxis Básica 50 Variables y Tipos de Datos -- 51 Operadores y Expresiones de Asignación -- 52 Estructuras de Control -- 56 Condicional if. 56 Ciclo for. 57 Ciclo while -- 58 Instrucciones break, continue, pass -- 58 Funciones 59 ¿Qué es una función? -- 59 Sintaxis de funciones 60 Parametrizando funciones -- 60 Valores por defecto -- 61 Devolviendo valores -- 61 Tipos de funciones Python -- 62 Clases y Objetos -- 65 ¿Qué es una clase? -- 65 Creando objetos -- 66 Atributos 66 Métodos 66 Bibliotecas en Python 68 Tipos de bibliotecas en Python 69 Bibliotecas estándar de Python -- 69 Bibliotecas de terceros en Python 70 Cómo instalar bibliotecas de terceros en Python 70 Ventajas de las bibliotecas en Python 70 Capítulo 4: Programación del LEGO® MINDSTORMS® EV3 Usando la Biblioteca 73 El ladrillo del LEGO® MINDSTORMS® EV3 -- 75 Componentes del EV3 -- 76 Motores del LEGO® MINDSTORMS® EV3 -- 78 Tipos de motores EV3 79 Control de motores usando la biblioteca Pybricks 80 Consideraciones de diseño 81 La clase Motor de la biblioteca PyBricks -- 83 Sensores EV3 85 Sensor de color 86 Especificaciones -- 87 Programación con PyBricks 88 Sensor de ultrasonido 90 Especificaciones -- 91 Programación con PyBricks 91 Sensor Giroscópico del LEGO® MINDSTORMS® EV3 94 Especificaciones -- 96 Programación en PyBricks 97 Sensor Táctil del LEGO® MINDSTORMS® EV3 97 Especificaciones -- 98 Programación en PyBricks 99 Sensor infrarrojo -- 100 Especificaciones Técnicas 101 Programación en PyBricks 102 Pantalla LCD del LEGO® MINDSTORMS® EV3 104 Especificaciones -- 104 Programación con PyBricks 104 Bocina e Indicadores Sonoros del LEGO® MINDSTORMS® EV3 107 Especificaciones -- 107 Programación con PyBricks 108 Leds del Lego Mindstorms EV3 -- 110 Especificaciones -- 110 Programación en PyBricks 110 Capítulo 5: Proyectos Prácticos -- 115 Programa para Recorrido de 10 Cuadros 118 Programa para Recorrido en Espiral 120 Programa de Recorrido Aleatorio 122 Programa con Sensor de Tacto 124 Programa con Sensor Ultrasónico -- 126 Programa con El Sensor Infrarrojo -- 128 Programa Seguidor de Línea 129 Capítulo 6: Testing y Depuración de Programas con Pybricks 135 Probando Programas -- 137 Errores comunes y soluciones -- 139 Conclusiones 142 Glosario -- 143 Capítulo 7: Una Referencia Pedagógica para la Enseñanza de la Robótica -- 147 Algunas técnicas de aprendizaje activo -- 151 Aprendizaje Basado en Problemas (ABP) -- 152 Aprendizaje cooperativo 153 Flipped Classroom o Aula Invertida 156 Aprendizaje basado en proyectos (ABP) 157 Una propuesta de ABP usando el robot LEGO® MINDSTORMS® EV3 -- 164 Propuesta ABP en su fase de planificación 166 Propuesta de evaluación 170 Anexos 173 Bibliografía -- 202 Autores -- 209193 páginasapplication/pdfspaUniversidad Tecnológica de PereiraPereiraColección Textos AcadémicosAliane, N., & Bemposta, S. (2008). Una experiencia de aprendizaje basado en proyectos en una asignatura de robótica. IEEE-RITA, 3(2), 71–76.Botelho, S. S. C., Braz, L. G., & Rodrigues, R. N. (2012). Exploring creativity and sociability with an accessible educational robotic kit. RiE, 55–60. http://www.silviacb.c3.furg.brBradski, G., & Kaehler, A. (2008). Learning OpenCV: Computer vision with the OpenCV library. O’Reilly Media. https://books.google. com.co/books?hl=es&lr=&id=seAgiOfu2EICBueno, P. M., Victoria, Y., & Fitzgerald, L. (2004). Aprendizaje basado en problemas. Theoria, 13, 145–157.Chavarría, M., & Saldaño, A. (2010). La robótica educativa como una innovativa interfaz educativa entre el alumno y una situación- problema. Didasc@lia: Didáctica y Educación, 2, 1–12.Coria Arreola, J. M. (2010). Aprendizaje por proyectos: Una metodología diferente. Revista e-FORMADORES.Cruz, J. A. G., Isusqui, J. C. P., Alvarez, V. M., Inga, C. V., Silva, M. O. C., & Villavicencio, I. E. S. (2023). Desafíos del aula invertida para la educación universitaria en América Latina. Editorial Mar Caribe de Josefrank. https://doi.org/10.31219/osf.io/teqkhda Silva Filgueira, M. G., & González González, C. S. (2017). PequeBot: Propuesta de un sistema ludificado de robótica educativa para la educación infantil. http://riull.ull.es/xmlui/handle/915/6677Downey, A. B. (2012). Think Python (Vol. 1). O’Reilly Media. https://books.google.com.co/books?hl=es&lr=&id=1mZtP9H6OMQCEcheverría, V. L. (2022). Motivados por la robótica. Campo de Prácticas, 1(2), 69–81.Espejo Leupin, R. M. (2016). ¿Pedagogía activa o métodos activos? El caso del aprendizaje activo en la universidad. Revista Digital de Investigación en Docencia Universitaria, 16–27. https://doi. org/10.19083/ridu.10.456Estruch, V., & Silva, J. (2006). Aprendizaje basado en proyectos en la carrera de Ingeniería Informática. Closas-Orcoyen.Fernández Martínez, M., García Sánchez, J.-N., Fuertes, A. de C., Redondo Fidalgo, R., & Arias Gundín, O. (2006). El aprendizaje basado en problemas: Revisión de estudios empíricos internacionales. Revista de Educación, 341, 397–418.García, J. M. (2015). Robótica educativa: La programación como parte de un proceso educativo. RED. Revista de Educación a Distancia, 46. http://www.um.es/ead/red/46García, R., Traver, J. A., & Candela, I. (2019). Aprendizaje cooperativo: Fundamentos, características y técnicas (Vol. 2). Publicaciones ICCE.Gouaillier, D., Hugel, V., Blazevic, P., Kilner, C., Monceaux, J., Lafourcade, P., Marnier, B., Serre, J., & Maisonnier, B. (2009). Mechatronic design of NAO humanoid. In 2009 IEEE International Conference on Robotics and Automation (pp. 769–774). https:// doi.org/10.1109/ROBOT.2009.5152516Gouws, L. A., Bradshaw, K., & Wentworth, P. (2013). Computational thinking in educational activities. In Proceedings of the 18th ACM Conference on Innovation and Technology in Computer Science Education (pp. 10–15). https://doi.org/10.1145/2462476.2466518Karim, M. E., Lemaignan, S., & Mondada, F. (2015). A review: Can robots reshape K-12 STEM education? In 2015 IEEE International Workshop on Advanced Robotics and Its Social Impacts (ARSO) (pp. 1–8). https://doi.org/10.1109/ARSO.2015.7428217Keyser, M. W. (2000). Active learning and cooperative learning: Understanding the difference and using both styles effectively. Research Strategies, 17(1), 35–44. https://doi.org/10.1016/S0734- 3310(00)00022-7Kolmos, A., Rodríguez, F. J., & Guerra, A. (2017). Aprendizaje basado en problemas en ingeniería: Teoría y práctica (F. Rodríguez-Mesa, Trad.). Aalborg University Press.Ledo, M. V., Rivera Michelena, N., Cao, N. N., Morales Suárez, R., Niurka, M., & Vidal, V. (2016). Aula invertida, nueva estrategia didáctica. Educación Médica Superior, 30(3).LEGO Education. (2016). Guía de uso: Lego Mindstorms Education EV3 (Versión 1.2.2, Vol. 3). The LEGO Group.LEGO Education. (2021a). LEGO® MINDSTORMS® EV3 31313. https:// www.lego.com/es-es/product/lego-mindstorms-ev3-31313LEGO Education. (2021b, 5 de febrero). MINDSTORMS Education EV3 Retirement FAQs. https://community.legoeducation.com/ blogs/36/95Liu, M., & Pedersen, S. (1998). The effect of being hypermedia designers on elementary school students’ motivation and learning of design.López, G., & Acuña, S. (2011). Aprendizaje cooperativo en el aula. Inventio, 7(14), 29–38. https://inventio.uaem.mx/index.php/ inventio/article/view/422Lott, S., & Banffy, R. (2022). Functional Python programming. https:// books.google.com.co/books?hl=es&lr=&id=iWWkEAAAQBAJRaspberry Pi Ltd. (2012). Raspberry Pi. https://www.raspberrypi.com/Lutz, M. (2013). Learning Python. O’Reilly Media.Martí, J. A., Heydrich, M., Rojas, M., & Hernández, A. (2010). Aprendizaje basado en proyectos: Una experiencia de innovación docente. Revista Universidad EAFIT, 46, 11–21.Microsoft. (2020). Visual Studio Code. https://code.visualstudio.com/Moscaiza Torres, V. A. (2022). Robótica educativa en el aprendizaje cooperativo del área de Matemática en niños y niñas del sexto grado de educación primaria (Tesis de Maestría). Universidad Nacional de Huancavelica.Oliver, J., Toledo, R., Pujol, J., Sorribes, J., & Valderrama, E. (2009). Un ABP basado en la robótica para las ingenierías informáticas. JENUI 2009, 331–338.OpenCV Team. (2008). OpenCV. https://opencv.org/Python, P. (2025, enero 2). PEP 8 – Style Guide for Python Code. https://peps.python.org/pep-0008/Python Software Foundation. (2021, enero 30). Python Brochure Vol. 1. https://brochure.getpython.info/Quigley, M., Gerkey, B., Conley, K., Faust, J., Foote, T., Leibs, J., Berger,E., Wheeler, R., & Ng, A. (2009). ROS: An open-source robot operating system. ICRA Workshop on Open Source Software, 3(3.2), 5–11.Quintero Vallejo, H. A., & Prado Martínez, W. A. (2020). Evaluación de la pertinencia del aprendizaje basado en proyectos (ABP)... (Tesis de Maestría). Universidad Tecnológica de Pereira.Richardson, M., Donat, W., & Wallace, S. (2021). Getting started with Raspberry Pi (4.a ed.). Make Community.Robot Framework Foundation. (2025). Robot Framework. https:// robotframework.org/Robotics, O. (2021). ROS - Robot Operating System. https://www.ros. org/Rollins, M. (2014). Beginning LEGO MINDSTORMS EV3. Apress.Ruiz Vicente, F. (2017). Diseño de proyectos STEAM a partir del currículum actual de Educación Primaria.... Universidad CEU Cardenal Herrera.Seshan, S., & EV3Lessons. (2020). Robot designs. https://ev3lessons. com/en/robotdesigns.htmlSoftBank Robotics America. (2025). NAO: Personal Robot Teaching Assistant. https://us.softbankrobotics.com/naoStellman, A., & Greene, J. (2024). Head First C# (5.a ed.). O’Reilly Media.Sweigart, A. (2020). Automate the boring stuff with Python. No Starch Press.Trujillo, F. (2016). Aprendizaje basado en proyectos: Infantil, primaria y secundaria (1.a ed.). Ministerio de Educación.Valk, L. (2021). Pybricks. https://pybricks.com/Valk, L., & Pybricks. (2022). Pybricks. https://pybricks.com/Vergara Ramírez, J. J. (2015). El aprendizaje basado en proyectos (ABP), paso a paso (Vol. 10). E. M. Ediciones.620 - Ingeniería y operaciones afines::629 - Otras ramas de la ingeniería2. Ingeniería y Tecnología::2K. Otras Ingenierías y TecnologíasRobots programaciónPython – Lenguaje de programaciónRobóticaODS 9: Industria, innovación e infraestructura. Construir infraestructuras resilientes, promover la industrialización inclusiva y sostenible y fomentar la innovaciónProgramación en Python para robótica: de la Teoría a la Práctica con LEGO MINDSTORMS EV3Libroinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_2f33Textinfo:eu-repo/semantics/bookPereira, Risaralda, ColombiaComunidad académica y científica, Estudiantes, Docentes, InvestigadoresPublicationORIGINALProgramacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdfProgramacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdfapplication/pdf20712450https://repositorio.utp.edu.co/bitstreams/452239ed-0595-47d8-b821-80d4535b5e0c/download7bee140bc04a11cf52696d1b54b5fe02MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-815543https://repositorio.utp.edu.co/bitstreams/a742586b-7820-49f6-8779-505521e72414/download73a5432e0b76442b22b026844140d683MD52THUMBNAILImagen1.pngimage/png672497https://repositorio.utp.edu.co/bitstreams/52e43e16-faea-4970-9f1f-af8a771de5d6/downloada316f2305cc4a9b29a286020434af8e7MD53Programacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdf.jpgProgramacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdf.jpgGenerated Thumbnailimage/jpeg6757https://repositorio.utp.edu.co/bitstreams/a7342b52-96c8-431e-b3a0-ee7c053df4a8/download87047859c3255739c478e01f193e557aMD55TEXTProgramacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdf.txtProgramacion_en_Python_para_Robotica_De_la_Teoria_a_la_Practica_con_LEGO_EV3.pdf.txtExtracted texttext/plain102211https://repositorio.utp.edu.co/bitstreams/e160ce36-5559-454e-9b7f-f2e4130d9c65/download19f670910115acd55da3327173a66247MD5411059/16478oai:repositorio.utp.edu.co:11059/164782025-11-26 05:01:23.302https://creativecommons.org/licenses/by-nc-nd/4.0/Manifiesto (Manifestamos) en este documento la voluntad de autorizar a la Biblioteca Jorge Roa Martínez de la Universidad Tecnológica de Pereira la publicación en el Repositorio institucional (http://biblioteca.utp.edu.co), la versión electrónica de la OBRA titulada: La Universidad Tecnológica de Pereira, entidad académica sin ánimo de lucro, queda por lo tanto facultada para ejercer plenamente la autorización anteriormente descrita en su actividad ordinaria de investigación, docencia y publicación. La autorización otorgada se ajusta a lo que establece la Ley 23 de 1982. Con todo, en mi (nuestra) condición de autor (es) me (nos) reservo (reservamos) los derechos morales de la OBRA antes citada con arreglo al artículo 30 de la Ley 23 de 1982. En concordancia suscribo (suscribimos) este documento en el momento mismo que hago (hacemos) entrega de mi (nuestra) OBRA a la Biblioteca “Jorge Roa Martínez” de la Universidad Tecnológica de Pereira. Manifiesto (manifestamos) que la OBRA objeto de la presente autorizaciónopen.accesshttps://repositorio.utp.edu.coRepositorio de la Universidad Tecnológica de Pereirabdigital@metabiblioteca.comPHA+TEEgT0JSQSAoVEFMIFkgQ09NTyBTRSBERUZJTkUgTcOBUyBBREVMQU5URSkgU0UgT1RPUkdBIEJBSk8gTE9TIFRFUk1JTk9TIERFIEVTVEEgTElDRU5DSUEgUMOaQkxJQ0EgREUgQ1JFQVRJVkUgQ09NTU9OUyAo4oCcTFBDQ+KAnSBPIOKAnExJQ0VOQ0lB4oCdKS4gTEEgT0JSQSBFU1TDgSBQUk9URUdJREEgUE9SIERFUkVDSE9TIERFIEFVVE9SIFkvVSBPVFJBUyBMRVlFUyBBUExJQ0FCTEVTLiBRVUVEQSBQUk9ISUJJRE8gQ1VBTFFVSUVSIFVTTyBRVUUgU0UgSEFHQSBERSBMQSBPQlJBIFFVRSBOTyBDVUVOVEUgQ09OIExBIEFVVE9SSVpBQ0nDk04gUEVSVElORU5URSBERSBDT05GT1JNSURBRCBDT04gTE9TIFTDiVJNSU5PUyBERSBFU1RBIExJQ0VOQ0lBIFkgREUgTEEgTEVZIERFIERFUkVDSE8gREUgQVVUT1IuPC9wPgo8cD5NRURJQU5URSBFTCBFSkVSQ0lDSU8gREUgQ1VBTFFVSUVSQSBERSBMT1MgREVSRUNIT1MgUVVFIFNFIE9UT1JHQU4gRU4gRVNUQSBMSUNFTkNJQSwgVVNURUQgQUNFUFRBIFkgQUNVRVJEQSBRVUVEQVIgT0JMSUdBRE8gRU4gTE9TIFRFUk1JTk9TIFFVRSBTRSBTRcORQUxBTiBFTiBFTExBLiBFTCBMSUNFTkNJQU5URSBDT05DRURFIEEgVVNURUQgTE9TIERFUkVDSE9TIENPTlRFTklET1MgRU4gRVNUQSBMSUNFTkNJQSBDT05ESUNJT05BRE9TIEEgTEEgQUNFUFRBQ0nDk04gREUgU1VTIFRFUk1JTk9TIFkgQ09ORElDSU9ORVMuPC9wPgo8b2wgdHlwZT0iMSI+CiAgPGxpPgogICAgRGVmaW5pY2lvbmVzCiAgICA8b2wgdHlwZT1hPgogICAgICA8bGk+T2JyYSBDb2xlY3RpdmEgZXMgdW5hIG9icmEsIHRhbCBjb21vIHVuYSBwdWJsaWNhY2nDs24gcGVyacOzZGljYSwgdW5hIGFudG9sb2fDrWEsIG8gdW5hIGVuY2ljbG9wZWRpYSwgZW4gbGEgcXVlIGxhIG9icmEgZW4gc3UgdG90YWxpZGFkLCBzaW4gbW9kaWZpY2FjacOzbiBhbGd1bmEsIGp1bnRvIGNvbiB1biBncnVwbyBkZSBvdHJhcyBjb250cmlidWNpb25lcyBxdWUgY29uc3RpdHV5ZW4gb2JyYXMgc2VwYXJhZGFzIGUgaW5kZXBlbmRpZW50ZXMgZW4gc8OtIG1pc21hcywgc2UgaW50ZWdyYW4gZW4gdW4gdG9kbyBjb2xlY3Rpdm8uIFVuYSBPYnJhIHF1ZSBjb25zdGl0dXllIHVuYSBvYnJhIGNvbGVjdGl2YSBubyBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgKGNvbW8gc2UgZGVmaW5lIGFiYWpvKSBwYXJhIGxvcyBwcm9ww7NzaXRvcyBkZSBlc3RhIGxpY2VuY2lhLiBhcXVlbGxhIHByb2R1Y2lkYSBwb3IgdW4gZ3J1cG8gZGUgYXV0b3JlcywgZW4gcXVlIGxhIE9icmEgc2UgZW5jdWVudHJhIHNpbiBtb2RpZmljYWNpb25lcywganVudG8gY29uIHVuYSBjaWVydGEgY2FudGlkYWQgZGUgb3RyYXMgY29udHJpYnVjaW9uZXMsIHF1ZSBjb25zdGl0dXllbiBlbiBzw60gbWlzbW9zIHRyYWJham9zIHNlcGFyYWRvcyBlIGluZGVwZW5kaWVudGVzLCBxdWUgc29uIGludGVncmFkb3MgYWwgdG9kbyBjb2xlY3Rpdm8sIHRhbGVzIGNvbW8gcHVibGljYWNpb25lcyBwZXJpw7NkaWNhcywgYW50b2xvZ8OtYXMgbyBlbmNpY2xvcGVkaWFzLjwvbGk+CiAgICAgIDxsaT5PYnJhIERlcml2YWRhIHNpZ25pZmljYSB1bmEgb2JyYSBiYXNhZGEgZW4gbGEgb2JyYSBvYmpldG8gZGUgZXN0YSBsaWNlbmNpYSBvIGVuIMOpc3RhIHkgb3RyYXMgb2JyYXMgcHJlZXhpc3RlbnRlcywgdGFsZXMgY29tbyB0cmFkdWNjaW9uZXMsIGFycmVnbG9zIG11c2ljYWxlcywgZHJhbWF0aXphY2lvbmVzLCDigJxmaWNjaW9uYWxpemFjaW9uZXPigJ0sIHZlcnNpb25lcyBwYXJhIGNpbmUsIOKAnGdyYWJhY2lvbmVzIGRlIHNvbmlkb+KAnSwgcmVwcm9kdWNjaW9uZXMgZGUgYXJ0ZSwgcmVzw7ptZW5lcywgY29uZGVuc2FjaW9uZXMsIG8gY3VhbHF1aWVyIG90cmEgZW4gbGEgcXVlIGxhIG9icmEgcHVlZGEgc2VyIHRyYW5zZm9ybWFkYSwgY2FtYmlhZGEgbyBhZGFwdGFkYSwgZXhjZXB0byBhcXVlbGxhcyBxdWUgY29uc3RpdHV5YW4gdW5hIG9icmEgY29sZWN0aXZhLCBsYXMgcXVlIG5vIHNlcsOhbiBjb25zaWRlcmFkYXMgdW5hIG9icmEgZGVyaXZhZGEgcGFyYSBlZmVjdG9zIGRlIGVzdGEgbGljZW5jaWEuIChQYXJhIGV2aXRhciBkdWRhcywgZW4gZWwgY2FzbyBkZSBxdWUgbGEgT2JyYSBzZWEgdW5hIGNvbXBvc2ljacOzbiBtdXNpY2FsIG8gdW5hIGdyYWJhY2nDs24gc29ub3JhLCBwYXJhIGxvcyBlZmVjdG9zIGRlIGVzdGEgTGljZW5jaWEgbGEgc2luY3Jvbml6YWNpw7NuIHRlbXBvcmFsIGRlIGxhIE9icmEgY29uIHVuYSBpbWFnZW4gZW4gbW92aW1pZW50byBzZSBjb25zaWRlcmFyw6EgdW5hIE9icmEgRGVyaXZhZGEgcGFyYSBsb3MgZmluZXMgZGUgZXN0YSBsaWNlbmNpYSkuPC9saT4KICAgICAgPGxpPkxpY2VuY2lhbnRlLCBlcyBlbCBpbmRpdmlkdW8gbyBsYSBlbnRpZGFkIHRpdHVsYXIgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHF1ZSBvZnJlY2UgbGEgT2JyYSBlbiBjb25mb3JtaWRhZCBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPkF1dG9yIG9yaWdpbmFsLCBlcyBlbCBpbmRpdmlkdW8gcXVlIGNyZcOzIGxhIE9icmEuPC9saT4KICAgICAgPGxpPk9icmEsIGVzIGFxdWVsbGEgb2JyYSBzdXNjZXB0aWJsZSBkZSBwcm90ZWNjacOzbiBwb3IgZWwgcsOpZ2ltZW4gZGUgRGVyZWNobyBkZSBBdXRvciB5IHF1ZSBlcyBvZnJlY2lkYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGVzdGEgbGljZW5jaWE8L2xpPgogICAgICA8bGk+VXN0ZWQsIGVzIGVsIGluZGl2aWR1byBvIGxhIGVudGlkYWQgcXVlIGVqZXJjaXRhIGxvcyBkZXJlY2hvcyBvdG9yZ2Fkb3MgYWwgYW1wYXJvIGRlIGVzdGEgTGljZW5jaWEgeSBxdWUgY29uIGFudGVyaW9yaWRhZCBubyBoYSB2aW9sYWRvIGxhcyBjb25kaWNpb25lcyBkZSBsYSBtaXNtYSByZXNwZWN0byBhIGxhIE9icmEsIG8gcXVlIGhheWEgb2J0ZW5pZG8gYXV0b3JpemFjacOzbiBleHByZXNhIHBvciBwYXJ0ZSBkZWwgTGljZW5jaWFudGUgcGFyYSBlamVyY2VyIGxvcyBkZXJlY2hvcyBhbCBhbXBhcm8gZGUgZXN0YSBMaWNlbmNpYSBwZXNlIGEgdW5hIHZpb2xhY2nDs24gYW50ZXJpb3IuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIERlcmVjaG9zIGRlIFVzb3MgSG9ucmFkb3MgeSBleGNlcGNpb25lcyBMZWdhbGVzLgogICAgPHA+TmFkYSBlbiBlc3RhIExpY2VuY2lhIHBvZHLDoSBzZXIgaW50ZXJwcmV0YWRvIGNvbW8gdW5hIGRpc21pbnVjacOzbiwgbGltaXRhY2nDs24gbyByZXN0cmljY2nDs24gZGUgbG9zIGRlcmVjaG9zIGRlcml2YWRvcyBkZWwgdXNvIGhvbnJhZG8geSBvdHJhcyBsaW1pdGFjaW9uZXMgbyBleGNlcGNpb25lcyBhIGxvcyBkZXJlY2hvcyBkZWwgYXV0b3IgYmFqbyBlbCByw6lnaW1lbiBsZWdhbCB2aWdlbnRlIG8gZGVyaXZhZG8gZGUgY3VhbHF1aWVyIG90cmEgbm9ybWEgcXVlIHNlIGxlIGFwbGlxdWUuPC9wPgogIDwvbGk+CiAgPGxpPgogICAgQ29uY2VzacOzbiBkZSBsYSBMaWNlbmNpYS4KICAgIDxwPkJham8gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEsIGVsIExpY2VuY2lhbnRlIG90b3JnYSBhIFVzdGVkIHVuYSBsaWNlbmNpYSBtdW5kaWFsLCBsaWJyZSBkZSByZWdhbMOtYXMsIG5vIGV4Y2x1c2l2YSB5IHBlcnBldHVhIChkdXJhbnRlIHRvZG8gZWwgcGVyw61vZG8gZGUgdmlnZW5jaWEgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGVqZXJjZXIgZXN0b3MgZGVyZWNob3Mgc29icmUgbGEgT2JyYSB0YWwgeSBjb21vIHNlIGluZGljYSBhIGNvbnRpbnVhY2nDs246PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+UmVwcm9kdWNpciBsYSBPYnJhLCBpbmNvcnBvcmFyIGxhIE9icmEgZW4gdW5hIG8gbcOhcyBPYnJhcyBDb2xlY3RpdmFzLCB5IHJlcHJvZHVjaXIgbGEgT2JyYSBpbmNvcnBvcmFkYSBlbiBsYXMgT2JyYXMgQ29sZWN0aXZhcy48L2xpPgogICAgICA8bGk+RGlzdHJpYnVpciBjb3BpYXMgbyBmb25vZ3JhbWFzIGRlIGxhcyBPYnJhcywgZXhoaWJpcmxhcyBww7pibGljYW1lbnRlLCBlamVjdXRhcmxhcyBww7pibGljYW1lbnRlIHkvbyBwb25lcmxhcyBhIGRpc3Bvc2ljacOzbiBww7pibGljYSwgaW5jbHV5w6luZG9sYXMgY29tbyBpbmNvcnBvcmFkYXMgZW4gT2JyYXMgQ29sZWN0aXZhcywgc2Vnw7puIGNvcnJlc3BvbmRhLjwvbGk+CiAgICAgIDxsaT5EaXN0cmlidWlyIGNvcGlhcyBkZSBsYXMgT2JyYXMgRGVyaXZhZGFzIHF1ZSBzZSBnZW5lcmVuLCBleGhpYmlybGFzIHDDumJsaWNhbWVudGUsIGVqZWN1dGFybGFzIHDDumJsaWNhbWVudGUgeS9vIHBvbmVybGFzIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLjwvbGk+CiAgICA8L29sPgogICAgPHA+TG9zIGRlcmVjaG9zIG1lbmNpb25hZG9zIGFudGVyaW9ybWVudGUgcHVlZGVuIHNlciBlamVyY2lkb3MgZW4gdG9kb3MgbG9zIG1lZGlvcyB5IGZvcm1hdG9zLCBhY3R1YWxtZW50ZSBjb25vY2lkb3MgbyBxdWUgc2UgaW52ZW50ZW4gZW4gZWwgZnV0dXJvLiBMb3MgZGVyZWNob3MgYW50ZXMgbWVuY2lvbmFkb3MgaW5jbHV5ZW4gZWwgZGVyZWNobyBhIHJlYWxpemFyIGRpY2hhcyBtb2RpZmljYWNpb25lcyBlbiBsYSBtZWRpZGEgcXVlIHNlYW4gdMOpY25pY2FtZW50ZSBuZWNlc2FyaWFzIHBhcmEgZWplcmNlciBsb3MgZGVyZWNob3MgZW4gb3RybyBtZWRpbyBvIGZvcm1hdG9zLCBwZXJvIGRlIG90cmEgbWFuZXJhIHVzdGVkIG5vIGVzdMOhIGF1dG9yaXphZG8gcGFyYSByZWFsaXphciBvYnJhcyBkZXJpdmFkYXMuIFRvZG9zIGxvcyBkZXJlY2hvcyBubyBvdG9yZ2Fkb3MgZXhwcmVzYW1lbnRlIHBvciBlbCBMaWNlbmNpYW50ZSBxdWVkYW4gcG9yIGVzdGUgbWVkaW8gcmVzZXJ2YWRvcywgaW5jbHV5ZW5kbyBwZXJvIHNpbiBsaW1pdGFyc2UgYSBhcXVlbGxvcyBxdWUgc2UgbWVuY2lvbmFuIGVuIGxhcyBzZWNjaW9uZXMgNChkKSB5IDQoZSkuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXN0cmljY2lvbmVzLgogICAgPHA+TGEgbGljZW5jaWEgb3RvcmdhZGEgZW4gbGEgYW50ZXJpb3IgU2VjY2nDs24gMyBlc3TDoSBleHByZXNhbWVudGUgc3VqZXRhIHkgbGltaXRhZGEgcG9yIGxhcyBzaWd1aWVudGVzIHJlc3RyaWNjaW9uZXM6PC9wPgogICAgPG9sIHR5cGU9ImEiPgogICAgICA8bGk+VXN0ZWQgcHVlZGUgZGlzdHJpYnVpciwgZXhoaWJpciBww7pibGljYW1lbnRlLCBlamVjdXRhciBww7pibGljYW1lbnRlLCBvIHBvbmVyIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhIGxhIE9icmEgc8OzbG8gYmFqbyBsYXMgY29uZGljaW9uZXMgZGUgZXN0YSBMaWNlbmNpYSwgeSBVc3RlZCBkZWJlIGluY2x1aXIgdW5hIGNvcGlhIGRlIGVzdGEgbGljZW5jaWEgbyBkZWwgSWRlbnRpZmljYWRvciBVbml2ZXJzYWwgZGUgUmVjdXJzb3MgZGUgbGEgbWlzbWEgY29uIGNhZGEgY29waWEgZGUgbGEgT2JyYSBxdWUgZGlzdHJpYnV5YSwgZXhoaWJhIHDDumJsaWNhbWVudGUsIGVqZWN1dGUgcMO6YmxpY2FtZW50ZSBvIHBvbmdhIGEgZGlzcG9zaWNpw7NuIHDDumJsaWNhLiBObyBlcyBwb3NpYmxlIG9mcmVjZXIgbyBpbXBvbmVyIG5pbmd1bmEgY29uZGljacOzbiBzb2JyZSBsYSBPYnJhIHF1ZSBhbHRlcmUgbyBsaW1pdGUgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgbyBlbCBlamVyY2ljaW8gZGUgbG9zIGRlcmVjaG9zIGRlIGxvcyBkZXN0aW5hdGFyaW9zIG90b3JnYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gTm8gZXMgcG9zaWJsZSBzdWJsaWNlbmNpYXIgbGEgT2JyYS4gVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RvcyB0b2RvcyBsb3MgYXZpc29zIHF1ZSBoYWdhbiByZWZlcmVuY2lhIGEgZXN0YSBMaWNlbmNpYSB5IGEgbGEgY2zDoXVzdWxhIGRlIGxpbWl0YWNpw7NuIGRlIGdhcmFudMOtYXMuIFVzdGVkIG5vIHB1ZWRlIGRpc3RyaWJ1aXIsIGV4aGliaXIgcMO6YmxpY2FtZW50ZSwgZWplY3V0YXIgcMO6YmxpY2FtZW50ZSwgbyBwb25lciBhIGRpc3Bvc2ljacOzbiBww7pibGljYSBsYSBPYnJhIGNvbiBhbGd1bmEgbWVkaWRhIHRlY25vbMOzZ2ljYSBxdWUgY29udHJvbGUgZWwgYWNjZXNvIG8gbGEgdXRpbGl6YWNpw7NuIGRlIGVsbGEgZGUgdW5hIGZvcm1hIHF1ZSBzZWEgaW5jb25zaXN0ZW50ZSBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIExvIGFudGVyaW9yIHNlIGFwbGljYSBhIGxhIE9icmEgaW5jb3Jwb3JhZGEgYSB1bmEgT2JyYSBDb2xlY3RpdmEsIHBlcm8gZXN0byBubyBleGlnZSBxdWUgbGEgT2JyYSBDb2xlY3RpdmEgYXBhcnRlIGRlIGxhIG9icmEgbWlzbWEgcXVlZGUgc3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEuIFNpIFVzdGVkIGNyZWEgdW5hIE9icmEgQ29sZWN0aXZhLCBwcmV2aW8gYXZpc28gZGUgY3VhbHF1aWVyIExpY2VuY2lhbnRlIGRlYmUsIGVuIGxhIG1lZGlkYSBkZSBsbyBwb3NpYmxlLCBlbGltaW5hciBkZSBsYSBPYnJhIENvbGVjdGl2YSBjdWFscXVpZXIgcmVmZXJlbmNpYSBhIGRpY2hvIExpY2VuY2lhbnRlIG8gYWwgQXV0b3IgT3JpZ2luYWwsIHNlZ8O6biBsbyBzb2xpY2l0YWRvIHBvciBlbCBMaWNlbmNpYW50ZSB5IGNvbmZvcm1lIGxvIGV4aWdlIGxhIGNsw6F1c3VsYSA0KGMpLjwvbGk+CiAgICAgIDxsaT5Vc3RlZCBubyBwdWVkZSBlamVyY2VyIG5pbmd1bm8gZGUgbG9zIGRlcmVjaG9zIHF1ZSBsZSBoYW4gc2lkbyBvdG9yZ2Fkb3MgZW4gbGEgU2VjY2nDs24gMyBwcmVjZWRlbnRlIGRlIG1vZG8gcXVlIGVzdMOpbiBwcmluY2lwYWxtZW50ZSBkZXN0aW5hZG9zIG8gZGlyZWN0YW1lbnRlIGRpcmlnaWRvcyBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS4gRWwgaW50ZXJjYW1iaW8gZGUgbGEgT2JyYSBwb3Igb3RyYXMgb2JyYXMgcHJvdGVnaWRhcyBwb3IgZGVyZWNob3MgZGUgYXV0b3IsIHlhIHNlYSBhIHRyYXbDqXMgZGUgdW4gc2lzdGVtYSBwYXJhIGNvbXBhcnRpciBhcmNoaXZvcyBkaWdpdGFsZXMgKGRpZ2l0YWwgZmlsZS1zaGFyaW5nKSBvIGRlIGN1YWxxdWllciBvdHJhIG1hbmVyYSBubyBzZXLDoSBjb25zaWRlcmFkbyBjb21vIGVzdGFyIGRlc3RpbmFkbyBwcmluY2lwYWxtZW50ZSBvIGRpcmlnaWRvIGRpcmVjdGFtZW50ZSBhIGNvbnNlZ3VpciB1biBwcm92ZWNobyBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYSwgc2llbXByZSBxdWUgbm8gc2UgcmVhbGljZSB1biBwYWdvIG1lZGlhbnRlIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBlbiByZWxhY2nDs24gY29uIGVsIGludGVyY2FtYmlvIGRlIG9icmFzIHByb3RlZ2lkYXMgcG9yIGVsIGRlcmVjaG8gZGUgYXV0b3IuPC9saT4KICAgICAgPGxpPlNpIHVzdGVkIGRpc3RyaWJ1eWUsIGV4aGliZSBww7pibGljYW1lbnRlLCBlamVjdXRhIHDDumJsaWNhbWVudGUgbyBlamVjdXRhIHDDumJsaWNhbWVudGUgZW4gZm9ybWEgZGlnaXRhbCBsYSBPYnJhIG8gY3VhbHF1aWVyIE9icmEgRGVyaXZhZGEgdSBPYnJhIENvbGVjdGl2YSwgVXN0ZWQgZGViZSBtYW50ZW5lciBpbnRhY3RhIHRvZGEgbGEgaW5mb3JtYWNpw7NuIGRlIGRlcmVjaG8gZGUgYXV0b3IgZGUgbGEgT2JyYSB5IHByb3BvcmNpb25hciwgZGUgZm9ybWEgcmF6b25hYmxlIHNlZ8O6biBlbCBtZWRpbyBvIG1hbmVyYSBxdWUgVXN0ZWQgZXN0w6kgdXRpbGl6YW5kbzogKGkpIGVsIG5vbWJyZSBkZWwgQXV0b3IgT3JpZ2luYWwgc2kgZXN0w6EgcHJvdmlzdG8gKG8gc2V1ZMOzbmltbywgc2kgZnVlcmUgYXBsaWNhYmxlKSwgeS9vIChpaSkgZWwgbm9tYnJlIGRlIGxhIHBhcnRlIG8gbGFzIHBhcnRlcyBxdWUgZWwgQXV0b3IgT3JpZ2luYWwgeS9vIGVsIExpY2VuY2lhbnRlIGh1YmllcmVuIGRlc2lnbmFkbyBwYXJhIGxhIGF0cmlidWNpw7NuICh2LmcuLCB1biBpbnN0aXR1dG8gcGF0cm9jaW5hZG9yLCBlZGl0b3JpYWwsIHB1YmxpY2FjacOzbikgZW4gbGEgaW5mb3JtYWNpw7NuIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZWwgTGljZW5jaWFudGUsIHTDqXJtaW5vcyBkZSBzZXJ2aWNpb3MgbyBkZSBvdHJhcyBmb3JtYXMgcmF6b25hYmxlczsgZWwgdMOtdHVsbyBkZSBsYSBPYnJhIHNpIGVzdMOhIHByb3Zpc3RvOyBlbiBsYSBtZWRpZGEgZGUgbG8gcmF6b25hYmxlbWVudGUgZmFjdGlibGUgeSwgc2kgZXN0w6EgcHJvdmlzdG8sIGVsIElkZW50aWZpY2Fkb3IgVW5pZm9ybWUgZGUgUmVjdXJzb3MgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcikgcXVlIGVsIExpY2VuY2lhbnRlIGVzcGVjaWZpY2EgcGFyYSBzZXIgYXNvY2lhZG8gY29uIGxhIE9icmEsIHNhbHZvIHF1ZSB0YWwgVVJJIG5vIHNlIHJlZmllcmEgYSBsYSBub3RhIHNvYnJlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBvIGEgbGEgaW5mb3JtYWNpw7NuIHNvYnJlIGVsIGxpY2VuY2lhbWllbnRvIGRlIGxhIE9icmE7IHkgZW4gZWwgY2FzbyBkZSB1bmEgT2JyYSBEZXJpdmFkYSwgYXRyaWJ1aXIgZWwgY3LDqWRpdG8gaWRlbnRpZmljYW5kbyBlbCB1c28gZGUgbGEgT2JyYSBlbiBsYSBPYnJhIERlcml2YWRhICh2LmcuLCAiVHJhZHVjY2nDs24gRnJhbmNlc2EgZGUgbGEgT2JyYSBkZWwgQXV0b3IgT3JpZ2luYWwsIiBvICJHdWnDs24gQ2luZW1hdG9ncsOhZmljbyBiYXNhZG8gZW4gbGEgT2JyYSBvcmlnaW5hbCBkZWwgQXV0b3IgT3JpZ2luYWwiKS4gVGFsIGNyw6lkaXRvIHB1ZWRlIHNlciBpbXBsZW1lbnRhZG8gZGUgY3VhbHF1aWVyIGZvcm1hIHJhem9uYWJsZTsgZW4gZWwgY2Fzbywgc2luIGVtYmFyZ28sIGRlIE9icmFzIERlcml2YWRhcyB1IE9icmFzIENvbGVjdGl2YXMsIHRhbCBjcsOpZGl0byBhcGFyZWNlcsOhLCBjb21vIG3DrW5pbW8sIGRvbmRlIGFwYXJlY2UgZWwgY3LDqWRpdG8gZGUgY3VhbHF1aWVyIG90cm8gYXV0b3IgY29tcGFyYWJsZSB5IGRlIHVuYSBtYW5lcmEsIGFsIG1lbm9zLCB0YW4gZGVzdGFjYWRhIGNvbW8gZWwgY3LDqWRpdG8gZGUgb3RybyBhdXRvciBjb21wYXJhYmxlLjwvbGk+CiAgICAgIDxsaT4KICAgICAgICBQYXJhIGV2aXRhciB0b2RhIGNvbmZ1c2nDs24sIGVsIExpY2VuY2lhbnRlIGFjbGFyYSBxdWUsIGN1YW5kbyBsYSBvYnJhIGVzIHVuYSBjb21wb3NpY2nDs24gbXVzaWNhbDoKICAgICAgICA8b2wgdHlwZT0iaSI+CiAgICAgICAgICA8bGk+UmVnYWzDrWFzIHBvciBpbnRlcnByZXRhY2nDs24geSBlamVjdWNpw7NuIGJham8gbGljZW5jaWFzIGdlbmVyYWxlcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBvIGxhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBkZSBsYSBvYnJhIHkgZGUgcmVjb2xlY3Rhciwgc2VhIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIFNBWUNPKSwgbGFzIHJlZ2Fsw61hcyBwb3IgbGEgZWplY3VjacOzbiBww7pibGljYSBvIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8gV2ViY2FzdCkgbGljZW5jaWFkYSBiYWpvIGxpY2VuY2lhcyBnZW5lcmFsZXMsIHNpIGxhIGludGVycHJldGFjacOzbiBvIGVqZWN1Y2nDs24gZGUgbGEgb2JyYSBlc3TDoSBwcmltb3JkaWFsbWVudGUgb3JpZW50YWRhIHBvciBvIGRpcmlnaWRhIGEgbGEgb2J0ZW5jacOzbiBkZSB1bmEgdmVudGFqYSBjb21lcmNpYWwgbyB1bmEgY29tcGVuc2FjacOzbiBtb25ldGFyaWEgcHJpdmFkYS48L2xpPgogICAgICAgICAgPGxpPlJlZ2Fsw61hcyBwb3IgRm9ub2dyYW1hcy4gRWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSByZWNvbGVjdGFyLCBpbmRpdmlkdWFsbWVudGUgbyBhIHRyYXbDqXMgZGUgdW5hIHNvY2llZGFkIGRlIGdlc3Rpw7NuIGNvbGVjdGl2YSBkZSBkZXJlY2hvcyBkZSBhdXRvciB5IGRlcmVjaG9zIGNvbmV4b3MgKHBvciBlamVtcGxvLCBsb3MgY29uc2FncmFkb3MgcG9yIGxhIFNBWUNPKSwgdW5hIGFnZW5jaWEgZGUgZGVyZWNob3MgbXVzaWNhbGVzIG8gYWxnw7puIGFnZW50ZSBkZXNpZ25hZG8sIGxhcyByZWdhbMOtYXMgcG9yIGN1YWxxdWllciBmb25vZ3JhbWEgcXVlIFVzdGVkIGNyZWUgYSBwYXJ0aXIgZGUgbGEgb2JyYSAo4oCcdmVyc2nDs24gY292ZXLigJ0pIHkgZGlzdHJpYnV5YSwgZW4gbG9zIHTDqXJtaW5vcyBkZWwgcsOpZ2ltZW4gZGUgZGVyZWNob3MgZGUgYXV0b3IsIHNpIGxhIGNyZWFjacOzbiBvIGRpc3RyaWJ1Y2nDs24gZGUgZXNhIHZlcnNpw7NuIGNvdmVyIGVzdMOhIHByaW1vcmRpYWxtZW50ZSBkZXN0aW5hZGEgbyBkaXJpZ2lkYSBhIG9idGVuZXIgdW5hIHZlbnRhamEgY29tZXJjaWFsIG8gdW5hIGNvbXBlbnNhY2nDs24gbW9uZXRhcmlhIHByaXZhZGEuPC9saT4KICAgICAgICA8L29sPgogICAgICA8L2xpPgogICAgICA8bGk+R2VzdGnDs24gZGUgRGVyZWNob3MgZGUgQXV0b3Igc29icmUgSW50ZXJwcmV0YWNpb25lcyB5IEVqZWN1Y2lvbmVzIERpZ2l0YWxlcyAoV2ViQ2FzdGluZykuIFBhcmEgZXZpdGFyIHRvZGEgY29uZnVzacOzbiwgZWwgTGljZW5jaWFudGUgYWNsYXJhIHF1ZSwgY3VhbmRvIGxhIG9icmEgc2VhIHVuIGZvbm9ncmFtYSwgZWwgTGljZW5jaWFudGUgc2UgcmVzZXJ2YSBlbCBkZXJlY2hvIGV4Y2x1c2l2byBkZSBhdXRvcml6YXIgbGEgZWplY3VjacOzbiBww7pibGljYSBkaWdpdGFsIGRlIGxhIG9icmEgKHBvciBlamVtcGxvLCB3ZWJjYXN0KSB5IGRlIHJlY29sZWN0YXIsIGluZGl2aWR1YWxtZW50ZSBvIGEgdHJhdsOpcyBkZSB1bmEgc29jaWVkYWQgZGUgZ2VzdGnDs24gY29sZWN0aXZhIGRlIGRlcmVjaG9zIGRlIGF1dG9yIHkgZGVyZWNob3MgY29uZXhvcyAocG9yIGVqZW1wbG8sIEFDSU5QUk8pLCBsYXMgcmVnYWzDrWFzIHBvciBsYSBlamVjdWNpw7NuIHDDumJsaWNhIGRpZ2l0YWwgZGUgbGEgb2JyYSAocG9yIGVqZW1wbG8sIHdlYmNhc3QpLCBzdWpldGEgYSBsYXMgZGlzcG9zaWNpb25lcyBhcGxpY2FibGVzIGRlbCByw6lnaW1lbiBkZSBEZXJlY2hvIGRlIEF1dG9yLCBzaSBlc3RhIGVqZWN1Y2nDs24gcMO6YmxpY2EgZGlnaXRhbCBlc3TDoSBwcmltb3JkaWFsbWVudGUgZGlyaWdpZGEgYSBvYnRlbmVyIHVuYSB2ZW50YWphIGNvbWVyY2lhbCBvIHVuYSBjb21wZW5zYWNpw7NuIG1vbmV0YXJpYSBwcml2YWRhLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBSZXByZXNlbnRhY2lvbmVzLCBHYXJhbnTDrWFzIHkgTGltaXRhY2lvbmVzIGRlIFJlc3BvbnNhYmlsaWRhZC4KICAgIDxwPkEgTUVOT1MgUVVFIExBUyBQQVJURVMgTE8gQUNPUkRBUkFOIERFIE9UUkEgRk9STUEgUE9SIEVTQ1JJVE8sIEVMIExJQ0VOQ0lBTlRFIE9GUkVDRSBMQSBPQlJBIChFTiBFTCBFU1RBRE8gRU4gRUwgUVVFIFNFIEVOQ1VFTlRSQSkg4oCcVEFMIENVQUzigJ0sIFNJTiBCUklOREFSIEdBUkFOVMONQVMgREUgQ0xBU0UgQUxHVU5BIFJFU1BFQ1RPIERFIExBIE9CUkEsIFlBIFNFQSBFWFBSRVNBLCBJTVBMw41DSVRBLCBMRUdBTCBPIENVQUxRVUlFUkEgT1RSQSwgSU5DTFVZRU5ETywgU0lOIExJTUlUQVJTRSBBIEVMTEFTLCBHQVJBTlTDjUFTIERFIFRJVFVMQVJJREFELCBDT01FUkNJQUJJTElEQUQsIEFEQVBUQUJJTElEQUQgTyBBREVDVUFDScOTTiBBIFBST1DDk1NJVE8gREVURVJNSU5BRE8sIEFVU0VOQ0lBIERFIElORlJBQ0NJw5NOLCBERSBBVVNFTkNJQSBERSBERUZFQ1RPUyBMQVRFTlRFUyBPIERFIE9UUk8gVElQTywgTyBMQSBQUkVTRU5DSUEgTyBBVVNFTkNJQSBERSBFUlJPUkVTLCBTRUFOIE8gTk8gREVTQ1VCUklCTEVTIChQVUVEQU4gTyBOTyBTRVIgRVNUT1MgREVTQ1VCSUVSVE9TKS4gQUxHVU5BUyBKVVJJU0RJQ0NJT05FUyBOTyBQRVJNSVRFTiBMQSBFWENMVVNJw5NOIERFIEdBUkFOVMONQVMgSU1QTMONQ0lUQVMsIEVOIENVWU8gQ0FTTyBFU1RBIEVYQ0xVU0nDk04gUFVFREUgTk8gQVBMSUNBUlNFIEEgVVNURUQuPC9wPgogIDwvbGk+CiAgPGJyLz4KICA8bGk+CiAgICBMaW1pdGFjacOzbiBkZSByZXNwb25zYWJpbGlkYWQuCiAgICA8cD5BIE1FTk9TIFFVRSBMTyBFWElKQSBFWFBSRVNBTUVOVEUgTEEgTEVZIEFQTElDQUJMRSwgRUwgTElDRU5DSUFOVEUgTk8gU0VSw4EgUkVTUE9OU0FCTEUgQU5URSBVU1RFRCBQT1IgREHDkU8gQUxHVU5PLCBTRUEgUE9SIFJFU1BPTlNBQklMSURBRCBFWFRSQUNPTlRSQUNUVUFMLCBQUkVDT05UUkFDVFVBTCBPIENPTlRSQUNUVUFMLCBPQkpFVElWQSBPIFNVQkpFVElWQSwgU0UgVFJBVEUgREUgREHDkU9TIE1PUkFMRVMgTyBQQVRSSU1PTklBTEVTLCBESVJFQ1RPUyBPIElORElSRUNUT1MsIFBSRVZJU1RPUyBPIElNUFJFVklTVE9TIFBST0RVQ0lET1MgUE9SIEVMIFVTTyBERSBFU1RBIExJQ0VOQ0lBIE8gREUgTEEgT0JSQSwgQVVOIENVQU5ETyBFTCBMSUNFTkNJQU5URSBIQVlBIFNJRE8gQURWRVJUSURPIERFIExBIFBPU0lCSUxJREFEIERFIERJQ0hPUyBEQcORT1MuIEFMR1VOQVMgTEVZRVMgTk8gUEVSTUlURU4gTEEgRVhDTFVTScOTTiBERSBDSUVSVEEgUkVTUE9OU0FCSUxJREFELCBFTiBDVVlPIENBU08gRVNUQSBFWENMVVNJw5NOIFBVRURFIE5PIEFQTElDQVJTRSBBIFVTVEVELjwvcD4KICA8L2xpPgogIDxici8+CiAgPGxpPgogICAgVMOpcm1pbm8uCiAgICA8b2wgdHlwZT0iYSI+CiAgICAgIDxsaT5Fc3RhIExpY2VuY2lhIHkgbG9zIGRlcmVjaG9zIG90b3JnYWRvcyBlbiB2aXJ0dWQgZGUgZWxsYSB0ZXJtaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlIHNpIFVzdGVkIGluZnJpbmdlIGFsZ3VuYSBjb25kaWNpw7NuIGVzdGFibGVjaWRhIGVuIGVsbGEuIFNpbiBlbWJhcmdvLCBsb3MgaW5kaXZpZHVvcyBvIGVudGlkYWRlcyBxdWUgaGFuIHJlY2liaWRvIE9icmFzIERlcml2YWRhcyBvIENvbGVjdGl2YXMgZGUgVXN0ZWQgZGUgY29uZm9ybWlkYWQgY29uIGVzdGEgTGljZW5jaWEsIG5vIHZlcsOhbiB0ZXJtaW5hZGFzIHN1cyBsaWNlbmNpYXMsIHNpZW1wcmUgcXVlIGVzdG9zIGluZGl2aWR1b3MgbyBlbnRpZGFkZXMgc2lnYW4gY3VtcGxpZW5kbyDDrW50ZWdyYW1lbnRlIGxhcyBjb25kaWNpb25lcyBkZSBlc3RhcyBsaWNlbmNpYXMuIExhcyBTZWNjaW9uZXMgMSwgMiwgNSwgNiwgNywgeSA4IHN1YnNpc3RpcsOhbiBhIGN1YWxxdWllciB0ZXJtaW5hY2nDs24gZGUgZXN0YSBMaWNlbmNpYS48L2xpPgogICAgICA8bGk+U3VqZXRhIGEgbGFzIGNvbmRpY2lvbmVzIHkgdMOpcm1pbm9zIGFudGVyaW9yZXMsIGxhIGxpY2VuY2lhIG90b3JnYWRhIGFxdcOtIGVzIHBlcnBldHVhIChkdXJhbnRlIGVsIHBlcsOtb2RvIGRlIHZpZ2VuY2lhIGRlIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSBsYSBvYnJhKS4gTm8gb2JzdGFudGUgbG8gYW50ZXJpb3IsIGVsIExpY2VuY2lhbnRlIHNlIHJlc2VydmEgZWwgZGVyZWNobyBhIHB1YmxpY2FyIHkvbyBlc3RyZW5hciBsYSBPYnJhIGJham8gY29uZGljaW9uZXMgZGUgbGljZW5jaWEgZGlmZXJlbnRlcyBvIGEgZGVqYXIgZGUgZGlzdHJpYnVpcmxhIGVuIGxvcyB0w6lybWlub3MgZGUgZXN0YSBMaWNlbmNpYSBlbiBjdWFscXVpZXIgbW9tZW50bzsgZW4gZWwgZW50ZW5kaWRvLCBzaW4gZW1iYXJnbywgcXVlIGVzYSBlbGVjY2nDs24gbm8gc2Vydmlyw6EgcGFyYSByZXZvY2FyIGVzdGEgbGljZW5jaWEgbyBxdWUgZGViYSBzZXIgb3RvcmdhZGEgLCBiYWpvIGxvcyB0w6lybWlub3MgZGUgZXN0YSBsaWNlbmNpYSksIHkgZXN0YSBsaWNlbmNpYSBjb250aW51YXLDoSBlbiBwbGVubyB2aWdvciB5IGVmZWN0byBhIG1lbm9zIHF1ZSBzZWEgdGVybWluYWRhIGNvbW8gc2UgZXhwcmVzYSBhdHLDoXMuIExhIExpY2VuY2lhIHJldm9jYWRhIGNvbnRpbnVhcsOhIHNpZW5kbyBwbGVuYW1lbnRlIHZpZ2VudGUgeSBlZmVjdGl2YSBzaSBubyBzZSBsZSBkYSB0w6lybWlubyBlbiBsYXMgY29uZGljaW9uZXMgaW5kaWNhZGFzIGFudGVyaW9ybWVudGUuPC9saT4KICAgIDwvb2w+CiAgPC9saT4KICA8YnIvPgogIDxsaT4KICAgIFZhcmlvcy4KICAgIDxvbCB0eXBlPSJhIj4KICAgICAgPGxpPkNhZGEgdmV6IHF1ZSBVc3RlZCBkaXN0cmlidXlhIG8gcG9uZ2EgYSBkaXNwb3NpY2nDs24gcMO6YmxpY2EgbGEgT2JyYSBvIHVuYSBPYnJhIENvbGVjdGl2YSwgZWwgTGljZW5jaWFudGUgb2ZyZWNlcsOhIGFsIGRlc3RpbmF0YXJpbyB1bmEgbGljZW5jaWEgZW4gbG9zIG1pc21vcyB0w6lybWlub3MgeSBjb25kaWNpb25lcyBxdWUgbGEgbGljZW5jaWEgb3RvcmdhZGEgYSBVc3RlZCBiYWpvIGVzdGEgTGljZW5jaWEuPC9saT4KICAgICAgPGxpPlNpIGFsZ3VuYSBkaXNwb3NpY2nDs24gZGUgZXN0YSBMaWNlbmNpYSByZXN1bHRhIGludmFsaWRhZGEgbyBubyBleGlnaWJsZSwgc2Vnw7puIGxhIGxlZ2lzbGFjacOzbiB2aWdlbnRlLCBlc3RvIG5vIGFmZWN0YXLDoSBuaSBsYSB2YWxpZGV6IG5pIGxhIGFwbGljYWJpbGlkYWQgZGVsIHJlc3RvIGRlIGNvbmRpY2lvbmVzIGRlIGVzdGEgTGljZW5jaWEgeSwgc2luIGFjY2nDs24gYWRpY2lvbmFsIHBvciBwYXJ0ZSBkZSBsb3Mgc3VqZXRvcyBkZSBlc3RlIGFjdWVyZG8sIGFxdcOpbGxhIHNlIGVudGVuZGVyw6EgcmVmb3JtYWRhIGxvIG3DrW5pbW8gbmVjZXNhcmlvIHBhcmEgaGFjZXIgcXVlIGRpY2hhIGRpc3Bvc2ljacOzbiBzZWEgdsOhbGlkYSB5IGV4aWdpYmxlLjwvbGk+CiAgICAgIDxsaT5OaW5nw7puIHTDqXJtaW5vIG8gZGlzcG9zaWNpw7NuIGRlIGVzdGEgTGljZW5jaWEgc2UgZXN0aW1hcsOhIHJlbnVuY2lhZGEgeSBuaW5ndW5hIHZpb2xhY2nDs24gZGUgZWxsYSBzZXLDoSBjb25zZW50aWRhIGEgbWVub3MgcXVlIGVzYSByZW51bmNpYSBvIGNvbnNlbnRpbWllbnRvIHNlYSBvdG9yZ2FkbyBwb3IgZXNjcml0byB5IGZpcm1hZG8gcG9yIGxhIHBhcnRlIHF1ZSByZW51bmNpZSBvIGNvbnNpZW50YS48L2xpPgogICAgICA8bGk+RXN0YSBMaWNlbmNpYSByZWZsZWphIGVsIGFjdWVyZG8gcGxlbm8gZW50cmUgbGFzIHBhcnRlcyByZXNwZWN0byBhIGxhIE9icmEgYXF1w60gbGljZW5jaWFkYS4gTm8gaGF5IGFycmVnbG9zLCBhY3VlcmRvcyBvIGRlY2xhcmFjaW9uZXMgcmVzcGVjdG8gYSBsYSBPYnJhIHF1ZSBubyBlc3TDqW4gZXNwZWNpZmljYWRvcyBlbiBlc3RlIGRvY3VtZW50by4gRWwgTGljZW5jaWFudGUgbm8gc2UgdmVyw6EgbGltaXRhZG8gcG9yIG5pbmd1bmEgZGlzcG9zaWNpw7NuIGFkaWNpb25hbCBxdWUgcHVlZGEgc3VyZ2lyIGVuIGFsZ3VuYSBjb211bmljYWNpw7NuIGVtYW5hZGEgZGUgVXN0ZWQuIEVzdGEgTGljZW5jaWEgbm8gcHVlZGUgc2VyIG1vZGlmaWNhZGEgc2luIGVsIGNvbnNlbnRpbWllbnRvIG11dHVvIHBvciBlc2NyaXRvIGRlbCBMaWNlbmNpYW50ZSB5IFVzdGVkLjwvbGk+CiAgICA8L29sPgogIDwvbGk+CiAgPGJyLz4KPC9vbD4K