Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C

El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1...

Full description

Autores:
Gracia Ovalle , Yahir Eduardo
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2024
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/93307
Acceso en línea:
http://hdl.handle.net/11349/93307
Palabra clave:
Sipeed
M0sense
Lenguaje C
Transcompilador
Compilador
Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas
Microcontroladores en IoT
Proyecto Aixt
Lenguaje de Programación Aixt
Sipeed
M0sense
C language
Transcompiler
Compiler
Rights
License
Abierto (Texto Completo)
id UDISTRITA2_2910f28d001792d70d5a8895cea47e28
oai_identifier_str oai:repository.udistrital.edu.co:11349/93307
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
dc.title.titleenglish.none.fl_str_mv Inclusion in the Aixt project of a Sipeed board of the M0sense series for the transcompilation of its source code from a V-based language to C language.
title Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
spellingShingle Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
Sipeed
M0sense
Lenguaje C
Transcompilador
Compilador
Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas
Microcontroladores en IoT
Proyecto Aixt
Lenguaje de Programación Aixt
Sipeed
M0sense
C language
Transcompiler
Compiler
title_short Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
title_full Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
title_fullStr Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
title_full_unstemmed Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
title_sort Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
dc.creator.fl_str_mv Gracia Ovalle , Yahir Eduardo
dc.contributor.advisor.none.fl_str_mv Martínez Santa, Fernando
dc.contributor.author.none.fl_str_mv Gracia Ovalle , Yahir Eduardo
dc.contributor.orcid.none.fl_str_mv Martínez Santa, Fernando [0000-0001-6309-2908]
dc.subject.none.fl_str_mv Sipeed
M0sense
Lenguaje C
Transcompilador
Compilador
topic Sipeed
M0sense
Lenguaje C
Transcompilador
Compilador
Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas
Microcontroladores en IoT
Proyecto Aixt
Lenguaje de Programación Aixt
Sipeed
M0sense
C language
Transcompiler
Compiler
dc.subject.lemb.none.fl_str_mv Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas
Microcontroladores en IoT
Proyecto Aixt
Lenguaje de Programación Aixt
dc.subject.keyword.none.fl_str_mv Sipeed
M0sense
C language
Transcompiler
Compiler
description El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1], El transcompilador de Aixt a C, que traduce el código fuente de lenguaje Aixt a lenguaje C para el compilador de C nativo específico de cada microcontrolador y la API (Application Programming Interface) de Aixt, que facilita la programación al estandarizar para todos una placa soportados la configuración y las funciones de entrada y salida de datos [2]. El lenguaje Aixt se puede considerar como un subconjunto del lenguaje V, implementando gran parte de su sintaxis, pero dejando fuera las características de programación que serían costosas de implementar en microcontroladores en términos de espacio de memoria. La idea del proyecto Aixt nació, en el 2022 con las pretensiones del proyecto Sokae [3] de establecer un punto medio entre las estructura de programación y lenguaje de los proyectos Arduino (Basado en C) [4] y Microphyton (basado en Python) [5], “la estructura de programación está compuesta de tres componentes principales: un lenguaje basado en la sintaxis de Rust, un transcopilador que convierte el código fuente escrito en Rust a lenguaje C, y una API.” [6]. A diferencia del proyecto Sokae que usa como base el lenguaje de programación Rust, el proyecto Aixt usa el lenguaje V el cual tiene una sintaxis más sencilla y por está más acorde con el enfoque minimalista del proyecto. Este proyecto abordará una importante necesidad en el mercado tecnológico, debido a que actualmente existe una gran demanda de soluciones que permitan la migración de aplicaciones de un lenguaje a otro de manera eficiente y efectiva. El proyecto consistirá en darle soporte a la serie de una placa M0sense para integrarse al proyecto Aixt, esto se realizará implementando una API en C incluyendo las funciones básicas de funcionamiento de una placa soportadas por el proyecto Aixt y un archivo de configuración que permita al transcompilador hacer una traducción efectiva entre los dos lenguajes. El proyecto permitirá realizar código fuente en lenguaje Aixt que sea correctamente compilado a la serie PIC16F de manera automática, sin tener que realizar cambios manuales que puedan resultar tediosos y costosos en términos de tiempo y recursos. Aixt está optimizado para funcionar eficientemente en dispositivos con recursos limitados como los es una placa de la serie M0sense, lo que lo hace adecuado para aplicaciones que requieren una solución eficiente en términos de recursos. Este proyecto representa una oportunidad de aplicar conocimientos y habilidades adquiridos durante la formación en Ingeniería Eléctrica y contribuirá con soluciones innovadoras al mercado tecnológico. Se ha planificado que el presente proyecto sea desarrollado en un máximo de 4 meses y para ello se han asignado un total de 384 horas de trabajo para esta pasantía. Este tiempo se distribuirá de manera eficiente para lograr los objetivos propuestos dentro del plazo establecido.
publishDate 2024
dc.date.created.none.fl_str_mv 2024-11-06
dc.date.accessioned.none.fl_str_mv 2025-03-05T21:09:04Z
dc.date.available.none.fl_str_mv 2025-03-05T21:09:04Z
dc.type.none.fl_str_mv bachelorThesis
dc.type.degree.none.fl_str_mv Pasantía
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
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 http://hdl.handle.net/11349/93307
url http://hdl.handle.net/11349/93307
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv [1] S. O. R. F. H. S. Fernando Martínez Santa, «Microcontrollers Programming Framework based on a V-like programming Language,» (IJACSA) International Journal of Advanced Computer Science and Aplications, vol. 13, nº 12, p. 8, 2022.
[2] F. Martínez Santa, «Aixt,» 2022. [En línea]. Available: https://gitlab.com/fermarsan/aixt-project. [Último acceso: 27 Febrero 2023].
[3] F. Martínez Santa, «Sokae Project,» Noviembre 2022. [En línea]. Available: https://gitlab.com/fermarsan/sokae-project. [Último acceso: 4 Marzo 2023].
[4] Arduino, «Arduino,» 2023. [En línea]. Available: https://www.arduino.cc/. [Último acceso: 10 Agosto 2023].
[5] MicroPython, «MicroPython,» [En línea]. Available: https://micropython.org/. [Último acceso: 12 Agosto 2023].
[6] F. Martinez Santa y S. Orjuela Rivera, «Rust-like Programming Language for Low-resource,» Research India Publications, vol. 17, nº ISSN 0973- 5321, pp. 599-614, 2022.
[7] M0sense, «M0sense,» 2023. [En línea]. Available:https://wiki.sipeed.com/[Último acceso: 12 Agosto 2024].
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.acceso.none.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.none.fl_str_mv pdf
dc.publisher.none.fl_str_mv Universidad Distrital Francisco José de Caldas
publisher.none.fl_str_mv Universidad Distrital Francisco José de Caldas
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/a3f84505-f488-4ba0-b68c-812147e3c846/download
https://repository.udistrital.edu.co/bitstreams/8a47c189-f937-4c61-a37d-684aa15a8cc1/download
https://repository.udistrital.edu.co/bitstreams/12dabb0b-a167-41ec-8cfc-0e25160e5526/download
bitstream.checksum.fl_str_mv 4d2d8755ca4ff147a705e12164be692c
555db31c3c63fcfbb7922cfc61267918
997daf6c648c962d566d7b082dac908d
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1837007268160208896
spelling Martínez Santa, FernandoGracia Ovalle , Yahir EduardoMartínez Santa, Fernando [0000-0001-6309-2908]2025-03-05T21:09:04Z2025-03-05T21:09:04Z2024-11-06http://hdl.handle.net/11349/93307El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1], El transcompilador de Aixt a C, que traduce el código fuente de lenguaje Aixt a lenguaje C para el compilador de C nativo específico de cada microcontrolador y la API (Application Programming Interface) de Aixt, que facilita la programación al estandarizar para todos una placa soportados la configuración y las funciones de entrada y salida de datos [2]. El lenguaje Aixt se puede considerar como un subconjunto del lenguaje V, implementando gran parte de su sintaxis, pero dejando fuera las características de programación que serían costosas de implementar en microcontroladores en términos de espacio de memoria. La idea del proyecto Aixt nació, en el 2022 con las pretensiones del proyecto Sokae [3] de establecer un punto medio entre las estructura de programación y lenguaje de los proyectos Arduino (Basado en C) [4] y Microphyton (basado en Python) [5], “la estructura de programación está compuesta de tres componentes principales: un lenguaje basado en la sintaxis de Rust, un transcopilador que convierte el código fuente escrito en Rust a lenguaje C, y una API.” [6]. A diferencia del proyecto Sokae que usa como base el lenguaje de programación Rust, el proyecto Aixt usa el lenguaje V el cual tiene una sintaxis más sencilla y por está más acorde con el enfoque minimalista del proyecto. Este proyecto abordará una importante necesidad en el mercado tecnológico, debido a que actualmente existe una gran demanda de soluciones que permitan la migración de aplicaciones de un lenguaje a otro de manera eficiente y efectiva. El proyecto consistirá en darle soporte a la serie de una placa M0sense para integrarse al proyecto Aixt, esto se realizará implementando una API en C incluyendo las funciones básicas de funcionamiento de una placa soportadas por el proyecto Aixt y un archivo de configuración que permita al transcompilador hacer una traducción efectiva entre los dos lenguajes. El proyecto permitirá realizar código fuente en lenguaje Aixt que sea correctamente compilado a la serie PIC16F de manera automática, sin tener que realizar cambios manuales que puedan resultar tediosos y costosos en términos de tiempo y recursos. Aixt está optimizado para funcionar eficientemente en dispositivos con recursos limitados como los es una placa de la serie M0sense, lo que lo hace adecuado para aplicaciones que requieren una solución eficiente en términos de recursos. Este proyecto representa una oportunidad de aplicar conocimientos y habilidades adquiridos durante la formación en Ingeniería Eléctrica y contribuirá con soluciones innovadoras al mercado tecnológico. Se ha planificado que el presente proyecto sea desarrollado en un máximo de 4 meses y para ello se han asignado un total de 384 horas de trabajo para esta pasantía. Este tiempo se distribuirá de manera eficiente para lograr los objetivos propuestos dentro del plazo establecido.The Aixt project is a programming framework for microcontrollers that uses a modern language syntax and focuses on low-resource devices. It consists of 3 main components: the Aixt programming language based on the V language syntax [1], the Aixt to C transcompiler, which translates the Aixt language source code into C language for the native C compiler specific to each microcontroller, and the Aixt API (Application Programming Interface), which facilitates programming by standardizing the configuration and data input and output functions for all supported boards [2]. The Aixt language can be considered as a subset of the V language, implementing much of its syntax, but leaving out programming features that would be expensive to implement on microcontrollers in terms of memory space. The idea of the Aixt project was born, in 2022 with the claims of the Sokae project [3] to establish a middle ground between the programming structure and language of the Arduino (C-based) [4] and Microphyton (Python-based) [5] projects, “the programming structure is composed of three main components: a language based on Rust syntax, a transcopiler that converts source code written in Rust to C language, and an API.” [6]. Unlike the Sokae project which uses the Rust programming language as a base, the Aixt project uses the V language which has a simpler syntax and is more in line with the minimalist approach of the project. This project will address an important need in the technology market, because there is currently a great demand for solutions that allow the migration of applications from one language to another efficiently and effectively. The project will consist in giving support to the series of a M0sense board to be integrated to the Aixt project, this will be done by implementing an API in C including the basic functions of a board supported by the Aixt project and a configuration file that allows the transcompiler to make an effective translation between the two languages. The project will allow source code in Aixt language to be correctly compiled to the PIC16F series automatically, without having to make manual changes that can be tedious and costly in terms of time and resources. Aixt is optimized to run efficiently on resource-constrained devices such as an M0sense series board, making it suitable for applications that require a resource-efficient solution. This project represents an opportunity to apply knowledge and skills acquired during the training in Electrical Engineering and will contribute with innovative solutions to the technological market. This project is planned to be developed in a maximum of 4 months and for this purpose a total of 384 working hours have been allocated for this internship. This time will be distributed efficiently to achieve the proposed objectives within the established time frame.pdfspaUniversidad Distrital Francisco José de CaldasSipeedM0senseLenguaje CTranscompiladorCompiladorIngeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicasMicrocontroladores en IoTProyecto AixtLenguaje de Programación AixtSipeedM0senseC languageTranscompilerCompilerInclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje CInclusion in the Aixt project of a Sipeed board of the M0sense series for the transcompilation of its source code from a V-based language to C language.bachelorThesisPasantíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2[1] S. O. R. F. H. S. Fernando Martínez Santa, «Microcontrollers Programming Framework based on a V-like programming Language,» (IJACSA) International Journal of Advanced Computer Science and Aplications, vol. 13, nº 12, p. 8, 2022.[2] F. Martínez Santa, «Aixt,» 2022. [En línea]. Available: https://gitlab.com/fermarsan/aixt-project. [Último acceso: 27 Febrero 2023].[3] F. Martínez Santa, «Sokae Project,» Noviembre 2022. [En línea]. Available: https://gitlab.com/fermarsan/sokae-project. [Último acceso: 4 Marzo 2023].[4] Arduino, «Arduino,» 2023. [En línea]. Available: https://www.arduino.cc/. [Último acceso: 10 Agosto 2023].[5] MicroPython, «MicroPython,» [En línea]. Available: https://micropython.org/. [Último acceso: 12 Agosto 2023].[6] F. Martinez Santa y S. Orjuela Rivera, «Rust-like Programming Language for Low-resource,» Research India Publications, vol. 17, nº ISSN 0973- 5321, pp. 599-614, 2022.[7] M0sense, «M0sense,» 2023. [En línea]. Available:https://wiki.sipeed.com/[Último acceso: 12 Agosto 2024].ORIGINALGraciaOvalleYahirEduardo2024.PDFGraciaOvalleYahirEduardo2024.PDFTrabajo de Gradoapplication/pdf2257259https://repository.udistrital.edu.co/bitstreams/a3f84505-f488-4ba0-b68c-812147e3c846/download4d2d8755ca4ff147a705e12164be692cMD51Licencia de Uso y Publicación.pdfLicencia de Uso y Publicación.pdfapplication/pdf810267https://repository.udistrital.edu.co/bitstreams/8a47c189-f937-4c61-a37d-684aa15a8cc1/download555db31c3c63fcfbb7922cfc61267918MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/12dabb0b-a167-41ec-8cfc-0e25160e5526/download997daf6c648c962d566d7b082dac908dMD5211349/93307oai:repository.udistrital.edu.co:11349/933072025-03-06 14:39:49.743open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK