Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas,...
- Autores:
-
Prieto Rodriguez, Camilo Alberto
Madrid Caballero, Diego Alejandro
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2021
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- spa
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/29569
- Acceso en línea:
- http://hdl.handle.net/11349/29569
- Palabra clave:
- Arquitectura
Estándar
Patrón
Software
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Arquitectura de computadores
Desarrollo de programas para computador
Procesamiento de datos
Architecture
Standard
Pattern
Software
- Rights
- License
- Atribución-NoComercial-SinDerivadas 2.5 Colombia
id |
UDISTRITA2_56a40f85bc197e1ff1df072d49622383 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/29569 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
dc.title.titleenglish.spa.fl_str_mv |
Prototype of a Source Code Generator for Service Applications. Case of Study: Library Rental Process. |
title |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
spellingShingle |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca Arquitectura Estándar Patrón Software Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas Arquitectura de computadores Desarrollo de programas para computador Procesamiento de datos Architecture Standard Pattern Software |
title_short |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
title_full |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
title_fullStr |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
title_full_unstemmed |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
title_sort |
Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca |
dc.creator.fl_str_mv |
Prieto Rodriguez, Camilo Alberto Madrid Caballero, Diego Alejandro |
dc.contributor.advisor.none.fl_str_mv |
Romero Villalobos, Oswaldo Alberto |
dc.contributor.author.none.fl_str_mv |
Prieto Rodriguez, Camilo Alberto Madrid Caballero, Diego Alejandro |
dc.subject.spa.fl_str_mv |
Arquitectura Estándar Patrón Software |
topic |
Arquitectura Estándar Patrón Software Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas Arquitectura de computadores Desarrollo de programas para computador Procesamiento de datos Architecture Standard Pattern Software |
dc.subject.lemb.spa.fl_str_mv |
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas Arquitectura de computadores Desarrollo de programas para computador Procesamiento de datos |
dc.subject.keyword.spa.fl_str_mv |
Architecture Standard Pattern Software |
description |
La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas, cada vez más grandes y complejos, en corto tiempo y sin sobrepasar los costos. Al contar con diferentes tecnologías y arquitecturas, las organizaciones tienen dificultades para madurar y estandarizar sus procesos de desarrollo de software, debido a esto se invierte una elevada cantidad de tiempo y esfuerzo en los detalles de implementación y en menor medida a otros aspectos relevantes como la calidad y la lógica de negocio. Actualmente, en la industria de desarrollo de software, no se encuentran herramientas capaces de generar una estructura completa de código basada en una arquitectura definida y con implementación de buenas prácticas. Existen herramientas capaces de aportar un código genérico que, si bien promueven una reducción de esfuerzo para el desarrollador, de éste depende la estructura de la arquitectura y la implementación de buenas prácticas y estándares de la organización. En el presente documento se muestra cómo, a través de arquitecturas modernas y la investigación de buenas prácticas de desarrollo, se puede proponer un prototipo de generador de código para Servicios REST a partir del lenguaje de definición de datos. Así mismo, se da especial importancia al proceso de creación del modelo de base de datos, ya que de éste depende, en gran medida, el resultado exitoso del proyecto. Lo anterior, con el fin de apoyar a las organizaciones, en sus diferentes áreas, para la creación de proyectos. Adicionalmente, se expone el proceso de investigación y metodología para ejecutar el proyecto, así como el uso de la arquitectura y las herramientas necesarias para la construcción de los artefactos que la componen. |
publishDate |
2021 |
dc.date.created.none.fl_str_mv |
2021-11-25 |
dc.date.accessioned.none.fl_str_mv |
2022-07-05T21:20:38Z |
dc.date.available.none.fl_str_mv |
2022-07-05T21:20:38Z |
dc.type.degree.spa.fl_str_mv |
Monografía |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.coar.spa.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/29569 |
url |
http://hdl.handle.net/11349/29569 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.rights.*.fl_str_mv |
Atribución-NoComercial-SinDerivadas 2.5 Colombia |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_16ec |
dc.rights.uri.*.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/2.5/co/ |
dc.rights.acceso.spa.fl_str_mv |
Restringido (Solo Referencia) |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 2.5 Colombia http://creativecommons.org/licenses/by-nc-nd/2.5/co/ Restringido (Solo Referencia) http://purl.org/coar/access_right/c_16ec |
dc.format.mimetype.spa.fl_str_mv |
pdf |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
https://repository.udistrital.edu.co/bitstreams/f2388eed-827d-402d-b4aa-f666fdb7f4cc/download https://repository.udistrital.edu.co/bitstreams/81f384a3-73b9-4213-a063-2e4bf079fc2f/download https://repository.udistrital.edu.co/bitstreams/d240ddd5-a917-4740-937f-c33d515e918f/download https://repository.udistrital.edu.co/bitstreams/433fc3df-98f3-48be-afa7-fea06ad81c35/download https://repository.udistrital.edu.co/bitstreams/0312b9d7-70d9-4967-9297-b03192c52f64/download https://repository.udistrital.edu.co/bitstreams/0c496706-5d66-49c4-b856-50a31f006307/download https://repository.udistrital.edu.co/bitstreams/129ee1d4-abb3-415a-b766-7deca980e9c7/download |
bitstream.checksum.fl_str_mv |
4d8af44ac7c1e7aaa6c37db8894188ee 624e291329de286e530313acb97c6b29 b7057916d076c6b85e31725b6c1851a3 217700a34da79ed616c2feb68d4c5e06 997daf6c648c962d566d7b082dac908d 59bbb55c35b01fd67a5fb744ab306308 50582d5cfcfbcc1e7712a860f4cb1611 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1828165469319725056 |
spelling |
Romero Villalobos, Oswaldo AlbertoPrieto Rodriguez, Camilo AlbertoMadrid Caballero, Diego Alejandro2022-07-05T21:20:38Z2022-07-05T21:20:38Z2021-11-25http://hdl.handle.net/11349/29569La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas, cada vez más grandes y complejos, en corto tiempo y sin sobrepasar los costos. Al contar con diferentes tecnologías y arquitecturas, las organizaciones tienen dificultades para madurar y estandarizar sus procesos de desarrollo de software, debido a esto se invierte una elevada cantidad de tiempo y esfuerzo en los detalles de implementación y en menor medida a otros aspectos relevantes como la calidad y la lógica de negocio. Actualmente, en la industria de desarrollo de software, no se encuentran herramientas capaces de generar una estructura completa de código basada en una arquitectura definida y con implementación de buenas prácticas. Existen herramientas capaces de aportar un código genérico que, si bien promueven una reducción de esfuerzo para el desarrollador, de éste depende la estructura de la arquitectura y la implementación de buenas prácticas y estándares de la organización. En el presente documento se muestra cómo, a través de arquitecturas modernas y la investigación de buenas prácticas de desarrollo, se puede proponer un prototipo de generador de código para Servicios REST a partir del lenguaje de definición de datos. Así mismo, se da especial importancia al proceso de creación del modelo de base de datos, ya que de éste depende, en gran medida, el resultado exitoso del proyecto. Lo anterior, con el fin de apoyar a las organizaciones, en sus diferentes áreas, para la creación de proyectos. Adicionalmente, se expone el proceso de investigación y metodología para ejecutar el proyecto, así como el uso de la arquitectura y las herramientas necesarias para la construcción de los artefactos que la componen.The fourth industrial revolution has led to a constant technological evolution, leading organizations to look for continuous improvement, adapting their business to the modern market and competitiveness through innovation. Organizations have the challenge of creating bigger and more complex systems in a short time and without exceeding costs. With different technologies and architectures, organizations have difficulty in maturing and standardizing their processes of software development. Due to this, a lot of effort is invested in the details of implementation and, to a lesser extent, in other relevant aspects such as the quality and the logic of the business. Currently, in the software development industry, there are no tools capable of generating a complete code structure based on a defined architecture and with the implementation of best practices. There are tools capable of providing a generic code that, although they save a lot of effort to the developer, it depends on him/her to ensure the correct structure of the architecture and the implementation of best practices and standards of the organization. This document shows how, through modern architectures and research of good development practices, it is possible to propose a prototype code generator for REST Services from data definition language. Likewise, special importance is given to the process of creating the database model, since the successful outcome of the project depends on this to a great extent. The above, in order to support organizations, in their different areas, for the creation of projects. Additionally, the research process and methodology are exposed along with the use of the architecture and the tools necessary for the construction of the artifacts that compose it.pdfspaAtribución-NoComercial-SinDerivadas 2.5 Colombiahttp://creativecommons.org/licenses/by-nc-nd/2.5/co/Restringido (Solo Referencia)http://purl.org/coar/access_right/c_16ecArquitecturaEstándarPatrónSoftwareEspecialización en Ingeniería de Software - Tesis y Disertaciones AcadémicasArquitectura de computadoresDesarrollo de programas para computadorProcesamiento de datosArchitectureStandardPatternSoftwarePrototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una bibliotecaPrototype of a Source Code Generator for Service Applications. Case of Study: Library Rental Process.Monografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALPrietoRodriguezCamiloAlberto2021.pdfPrietoRodriguezCamiloAlberto2021.pdfapplication/pdf9277949https://repository.udistrital.edu.co/bitstreams/f2388eed-827d-402d-b4aa-f666fdb7f4cc/download4d8af44ac7c1e7aaa6c37db8894188eeMD51PrietoRodriguezCamiloAlberto2021Anexos.zipPrietoRodriguezCamiloAlberto2021Anexos.zipapplication/zip12578791https://repository.udistrital.edu.co/bitstreams/81f384a3-73b9-4213-a063-2e4bf079fc2f/download624e291329de286e530313acb97c6b29MD52Licencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfapplication/pdf275103https://repository.udistrital.edu.co/bitstreams/d240ddd5-a917-4740-937f-c33d515e918f/downloadb7057916d076c6b85e31725b6c1851a3MD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repository.udistrital.edu.co/bitstreams/433fc3df-98f3-48be-afa7-fea06ad81c35/download217700a34da79ed616c2feb68d4c5e06MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/0312b9d7-70d9-4967-9297-b03192c52f64/download997daf6c648c962d566d7b082dac908dMD55THUMBNAILPrietoRodriguezCamiloAlberto2021.pdf.jpgPrietoRodriguezCamiloAlberto2021.pdf.jpgIM Thumbnailimage/jpeg6600https://repository.udistrital.edu.co/bitstreams/0c496706-5d66-49c4-b856-50a31f006307/download59bbb55c35b01fd67a5fb744ab306308MD56Licencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg13324https://repository.udistrital.edu.co/bitstreams/129ee1d4-abb3-415a-b766-7deca980e9c7/download50582d5cfcfbcc1e7712a860f4cb1611MD5711349/29569oai:repository.udistrital.edu.co:11349/295692023-06-13 14:59:05.027http://creativecommons.org/licenses/by-nc-nd/2.5/co/Atribución-NoComercial-SinDerivadas 2.5 Colombiaopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |