Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en difer...
- Autores:
-
Ramírez Carvajal, Diego Alexander
Salazar Álvarez, Juan David
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2020
- Institución:
- Universidad Cooperativa de Colombia
- Repositorio:
- Repositorio UCC
- Idioma:
- OAI Identifier:
- oai:repository.ucc.edu.co:20.500.12494/16081
- Acceso en línea:
- https://hdl.handle.net/20.500.12494/16081
- Palabra clave:
- Arquitectura de software
Microservicios
Spring cloud
Software architecture
Microservices
Spring cloud
- Rights
- openAccess
- License
- Atribución – No comercial – Sin Derivar
id |
COOPER2_d437861b3edf4eb19040188021c6434c |
---|---|
oai_identifier_str |
oai:repository.ucc.edu.co:20.500.12494/16081 |
network_acronym_str |
COOPER2 |
network_name_str |
Repositorio UCC |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
title |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
spellingShingle |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. Arquitectura de software Microservicios Spring cloud Software architecture Microservices Spring cloud |
title_short |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
title_full |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
title_fullStr |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
title_full_unstemmed |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
title_sort |
Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá. |
dc.creator.fl_str_mv |
Ramírez Carvajal, Diego Alexander Salazar Álvarez, Juan David |
dc.contributor.advisor.none.fl_str_mv |
Pahuena López, Fabio Iván |
dc.contributor.author.none.fl_str_mv |
Ramírez Carvajal, Diego Alexander Salazar Álvarez, Juan David |
dc.subject.spa.fl_str_mv |
Arquitectura de software Microservicios Spring cloud |
topic |
Arquitectura de software Microservicios Spring cloud Software architecture Microservices Spring cloud |
dc.subject.other.spa.fl_str_mv |
Software architecture Microservices Spring cloud |
description |
Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en diferentes mercados, las aplicaciones monolíticas se construyen bajo una una sola base de código y se ejecutan en un solo proceso, son fáciles de mantener y desplegar en ambientes productivos. Sin embargo, una vez la aplicación crece la arquitectura comienza a deteriorarse, lo cual no solo impacta en el rendimiento y el consumo de recursos, sino también en el equipo de desarrollo y la entrega continua de valor a los clientes y usuarios. Este trabajo de grado bajo la modalidad de análisis sistemático de literatura de un estudio de caso, propone la implementación de una arquitectura de microservicios para ofrecer una alternativa a las arquitecturas monoliticas. |
publishDate |
2020 |
dc.date.accessioned.none.fl_str_mv |
2020-01-20T13:21:51Z |
dc.date.available.none.fl_str_mv |
2020-01-20T13:21:51Z |
dc.date.issued.none.fl_str_mv |
2020-01-17 |
dc.type.none.fl_str_mv |
Trabajo de grado - Pregrado |
dc.type.coar.none.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.version.none.fl_str_mv |
info:eu-repo/semantics/acceptedVersion |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
acceptedVersion |
dc.identifier.uri.none.fl_str_mv |
https://hdl.handle.net/20.500.12494/16081 |
dc.identifier.bibliographicCitation.spa.fl_str_mv |
Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá. |
url |
https://hdl.handle.net/20.500.12494/16081 |
identifier_str_mv |
Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá. |
dc.relation.references.spa.fl_str_mv |
Amazon Web Services, Inc. (2019). Amazon AWS. Obtenido de https://aws.amazon.com/es/relational-database/ Axios. (s.f.). Axios . Obtenido de https://github.com/axios/axios Blancarte, O. (4 de 12 de 2018). Oscar Blancarte Software Arquitect. Obtenido de https://www.oscarblancarteblog.com/2018/12/04/circuit-breaker-pattern/ Clements, P. (1996). A Survey of Architecture Description Languages. Alemania: Carnegie Mellon University. Gabriel, J. &. (2002). Networkworld. Obtenido de https://www.networkworld.es Lewis, J. (25 de 03 de 2014). Martin Fowler. Obtenido de https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture OpenJS Foundation. (22 de 10 de 2019). Node Js. Obtenido de https://nodejs.org Pivotal Software. (2019). Obtenido de https://spring.io/projects/spring-cloud-gateway Pivotal Software. (2019). Spring Cloud Config Server Documentation. Obtenido de https://cloud.spring.io/spring-cloud-config/reference/html/ Pivotal Software. (2019). Spring Cloud Netflix Documentation. Obtenido de https://spring.io/projects/spring-cloud-netflix Pivotal Software. (09 de 2019). Spring Framework. Obtenido de https://spring.io/projects/spring-framework Richarson. (2018). Microservices Patterns. Manning Ed Sanchéz, L. y. (2003). Metodologías Ágiles en el desarrollo de software. (pág. 1). Alicante: Grupo ISSI. ScrumStudy. (2016). A Guide to the Scrum Body Of Knowledge . Avondale, Arizona: ScrumStudy. You, E. (s.f.). Vue Js. Obtenido de https://vuejs.org/v2/guide/ |
dc.rights.license.none.fl_str_mv |
Atribución – No comercial – Sin Derivar |
dc.rights.accessrights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.coar.none.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
rights_invalid_str_mv |
Atribución – No comercial – Sin Derivar http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.publisher.spa.fl_str_mv |
Universidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, Bogotá |
dc.publisher.program.spa.fl_str_mv |
Ingeniería de Sistemas |
dc.publisher.place.spa.fl_str_mv |
Bogotá |
institution |
Universidad Cooperativa de Colombia |
bitstream.url.fl_str_mv |
https://repository.ucc.edu.co/bitstreams/d8a14a19-9301-4cbc-9230-7f782d072151/download https://repository.ucc.edu.co/bitstreams/65cd52b6-c6e1-414d-85a2-89bd3547cc2d/download https://repository.ucc.edu.co/bitstreams/745f2852-c99d-482f-bc33-c30539f38aff/download https://repository.ucc.edu.co/bitstreams/572f07d2-ae19-4e5b-aff0-29bcaed1cb54/download https://repository.ucc.edu.co/bitstreams/9773c2f9-a707-46bb-a671-d94e9c6b2162/download https://repository.ucc.edu.co/bitstreams/c4647f8a-cc82-4c3b-bf73-562206aa5494/download https://repository.ucc.edu.co/bitstreams/6708c77d-07b4-48c4-a049-c30027da6bf0/download https://repository.ucc.edu.co/bitstreams/3824de01-5ada-4f75-9345-478c149d9c82/download https://repository.ucc.edu.co/bitstreams/faa185f8-207b-4780-bb16-9b3302effbc1/download https://repository.ucc.edu.co/bitstreams/73571bd9-60f8-4a32-afb1-eb6fd67e0f90/download |
bitstream.checksum.fl_str_mv |
5910cd955a543f917fb745713904f3e0 482aa5c95e85681ac2c9b4990bbbe12f 6ccd995a71586ed2a5773fe0056e846e 3bce4f7ab09dfc588f126e1e36e98a45 6598a4c99d27525bb7fd9f8a53b66a55 679487eae8cd1460d1ffcc488337272d 0cc2da295fe4b8876a4716959d044319 47b84146c6b6cb57efbb58cf3565ee22 1429ba63b6afd7c45a330f23d1328d1d 6d93d3216dc4a7f5df47d4876fbec4d3 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional Universidad Cooperativa de Colombia |
repository.mail.fl_str_mv |
bdigital@metabiblioteca.com |
_version_ |
1814247271456309248 |
spelling |
Pahuena López, Fabio IvánRamírez Carvajal, Diego AlexanderSalazar Álvarez, Juan David2020-01-20T13:21:51Z2020-01-20T13:21:51Z2020-01-17https://hdl.handle.net/20.500.12494/16081Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá.Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en diferentes mercados, las aplicaciones monolíticas se construyen bajo una una sola base de código y se ejecutan en un solo proceso, son fáciles de mantener y desplegar en ambientes productivos. Sin embargo, una vez la aplicación crece la arquitectura comienza a deteriorarse, lo cual no solo impacta en el rendimiento y el consumo de recursos, sino también en el equipo de desarrollo y la entrega continua de valor a los clientes y usuarios. Este trabajo de grado bajo la modalidad de análisis sistemático de literatura de un estudio de caso, propone la implementación de una arquitectura de microservicios para ofrecer una alternativa a las arquitecturas monoliticas.The monolithic applications we know today were born in the mainframes; Large computers and powerful processing modifiers a lot of data. For many companies in the world, this has been the traditional method to develop software solutions that solve problems in different markets, monolithic applications are built under a single code base and run in a single process, are easy to maintain and deploy In productive environments. However, once the application grows, the architecture begins to deteriorate, which not only impacts on performance and resource consumption, but also on the development team and the continuous delivery of value to customers and users. This degree work under the systematic analysis of literature of a case study proposes the implementation of a microservice architecture to offer an alternative to monolithic architectures.Agradecimientos -- Dedicatoria -- 1.CAPITULO I: INTRODUCCIÓN -- 1.1. Planteamiento del problema -- 1.2. Objetivos -- 1.2.1. Objetivo general -- 1.2.2. Objetivos específicos -- 1.3. Justificación -- 2. CAPITULO II: MARCO TEÓRICO -- 2.2. Antecedentes -- 2.3. Marco conceptual -- 2.3.1. Arquitectura de software -- 2.3.2. Microservicios -- 2.3.3. Arquitectura monolítica -- 2.3.4. Spring Framework -- 2.3.5. Base de datos relacional -- 2.3.6. Metodología Ágil -- 2.3.7. Node JS -- 2.3.8. Vue JS -- 2.3.9. Postman -- 2.3.10. Bulma CSS -- 2.3.11. Axios 2.4. Marco Legal -- 3. CAPITULO III: DESARROLLO INGENIERIL -- 3.1. Especificación de requerimientos de la arquitectura -- 3.2. Metodología --3.2.1. Equipo Scrum --3.2.2. Backlog del producto -- 3.2.2.1. Historias de Usuario -- 3.2.3. Definición de Sprint --3.2.4. Eventos de Scrum -- 3.2.4.1. Sprint Planning3.2.4.2. Daily Standup -- 3.2.4.3. Reunión retrospectiva del sprint -- 3.3. Casos de uso -- 3.3.1. Caso de uso usuario línea de frente -- 3.3.2. Caso de uso registro de solicitud de servicios --3.4. Modelo de arquitectura e Infraestructura -- 3.5. Componentes -- 3.5.1. Servidor de configuración -- 3.5.2. Servidor Gateway -- 3.5.3. Servicio de descubrimiento Eureka --3.5.4. Circuit breaker -- 3.5.5. Seguimiento distribuido -- 3.5.6. Capa de servicios -- 3.5.7. Bases de datos -- 3.5.8. Servicios externos -- 3.6. Montaje de componentes -- 3.6.1. Creación de proyectos con Spring Initializer -- 3.7. Dependencias utilizadas -- 3.7.1. Spring Security -- 3.7.2. Spring data JPA -- 3.8. Configuración base de datos PostgreSQL -- 3.9. Montaje de servicio de configuración centralizada -- 3.9.1. Habilitar el servidor de configuración -- 3.9.2. Propiedades de configuración -- 3.9.3. Configuración repositorio Git -- 3.10. Montaje del servicio de descubrimiento -- 3.10.1. Habilitar el servidor de descubrimiento -- 3.10.2. Propiedades de configuración -- 3.11. Montaje del servidor Gateway -- 3.11.1. Habilitar el servidor Gateway -- 3.11.2 Propiedades de configuración -- 3.11.3. Inicializar datos del servicio -- 3.11.4. Implementación de autenticación con JWT -- 3.12. Montaje capa de servicios -- 3.12.1. Inicializar datos del servicio -- 3.12.2. Habilitar microservicio -- 3.12.3. Propiedades de configuración -- 3.13.1. Habilitar el tablero de mando del circuit breaker -- 3.14. Ejecución de los servicios -- 3.14.1. Ejecutar servicio de configuración -- 3.14.2. Ejecutar servidor de descubrimiento -- 3.14.3. Ejecutar servicio Gateway -- 3.14.4. Autenticación de usuarios -- 3.14.5. Ejecutar microservicios -- 3.14.6. Consulta de métodos -- 3.14.7. Tablero de mando del patrón circuit breaker -- 3.15. DISEÑO DEL CLIENTE WEB -- 3.15.1. Login -- 3.15.2. Página de bienvenida -- 3.15.3. Página para cargue de solicitud -- 3.15.4. Registro de la solicitud -- 3.15.5. Ver solicitudes registradas3.16. Comparativo entre arquitecturas --4. CAPITULO IV: CONCLUSIONES -- Bibliografía -- 5. ANEXOS -- 5.1. Guía para creación de proyectos con Spring Initializr --5.1.1. Entorno --5.1.2 Creación del Proyecto -- 5.1.3. Generar artefacto -- 5.1.4. Trabajando en el entorno de desarrollo.diegoa.ramirez@campusucc.edu.cojuan.salazaral@campusucc.edu.coUniversidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, BogotáIngeniería de SistemasBogotáArquitectura de softwareMicroserviciosSpring cloudSoftware architectureMicroservicesSpring cloudPropuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.Trabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1finfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionAtribución – No comercial – Sin Derivarinfo:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Amazon Web Services, Inc. (2019). Amazon AWS. Obtenido de https://aws.amazon.com/es/relational-database/Axios. (s.f.). Axios . Obtenido de https://github.com/axios/axiosBlancarte, O. (4 de 12 de 2018). Oscar Blancarte Software Arquitect. Obtenido de https://www.oscarblancarteblog.com/2018/12/04/circuit-breaker-pattern/Clements, P. (1996). A Survey of Architecture Description Languages. Alemania: Carnegie Mellon University.Gabriel, J. &. (2002). Networkworld. Obtenido de https://www.networkworld.esLewis, J. (25 de 03 de 2014). Martin Fowler. Obtenido de https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitectureOpenJS Foundation. (22 de 10 de 2019). Node Js. Obtenido de https://nodejs.orgPivotal Software. (2019). Obtenido de https://spring.io/projects/spring-cloud-gatewayPivotal Software. (2019). Spring Cloud Config Server Documentation. Obtenido de https://cloud.spring.io/spring-cloud-config/reference/html/Pivotal Software. (2019). Spring Cloud Netflix Documentation. Obtenido de https://spring.io/projects/spring-cloud-netflixPivotal Software. (09 de 2019). Spring Framework. Obtenido de https://spring.io/projects/spring-frameworkRicharson. (2018). Microservices Patterns. Manning EdSanchéz, L. y. (2003). Metodologías Ágiles en el desarrollo de software. (pág. 1). Alicante: Grupo ISSI.ScrumStudy. (2016). A Guide to the Scrum Body Of Knowledge . Avondale, Arizona: ScrumStudy.You, E. (s.f.). Vue Js. Obtenido de https://vuejs.org/v2/guide/PublicationORIGINAL2020_Propuesta_Arquitectura_Microservicios.pdf2020_Propuesta_Arquitectura_Microservicios.pdfTrabajo de grado completoapplication/pdf1537819https://repository.ucc.edu.co/bitstreams/d8a14a19-9301-4cbc-9230-7f782d072151/download5910cd955a543f917fb745713904f3e0MD512020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdfapplication/pdf141370https://repository.ucc.edu.co/bitstreams/65cd52b6-c6e1-414d-85a2-89bd3547cc2d/download482aa5c95e85681ac2c9b4990bbbe12fMD522020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdfLicencia de uso de obraapplication/pdf288265https://repository.ucc.edu.co/bitstreams/745f2852-c99d-482f-bc33-c30539f38aff/download6ccd995a71586ed2a5773fe0056e846eMD53LICENSElicense.txtlicense.txttext/plain; charset=utf-84334https://repository.ucc.edu.co/bitstreams/572f07d2-ae19-4e5b-aff0-29bcaed1cb54/download3bce4f7ab09dfc588f126e1e36e98a45MD54THUMBNAIL2020_Propuesta_Arquitectura_Microservicios.pdf.jpg2020_Propuesta_Arquitectura_Microservicios.pdf.jpgGenerated Thumbnailimage/jpeg2529https://repository.ucc.edu.co/bitstreams/9773c2f9-a707-46bb-a671-d94e9c6b2162/download6598a4c99d27525bb7fd9f8a53b66a55MD552020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.jpg2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.jpgGenerated Thumbnailimage/jpeg4364https://repository.ucc.edu.co/bitstreams/c4647f8a-cc82-4c3b-bf73-562206aa5494/download679487eae8cd1460d1ffcc488337272dMD562020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.jpg2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.jpgGenerated Thumbnailimage/jpeg4783https://repository.ucc.edu.co/bitstreams/6708c77d-07b4-48c4-a049-c30027da6bf0/download0cc2da295fe4b8876a4716959d044319MD57TEXT2020_Propuesta_Arquitectura_Microservicios.pdf.txt2020_Propuesta_Arquitectura_Microservicios.pdf.txtExtracted texttext/plain94654https://repository.ucc.edu.co/bitstreams/3824de01-5ada-4f75-9345-478c149d9c82/download47b84146c6b6cb57efbb58cf3565ee22MD582020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.txt2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.txtExtracted texttext/plain2328https://repository.ucc.edu.co/bitstreams/faa185f8-207b-4780-bb16-9b3302effbc1/download1429ba63b6afd7c45a330f23d1328d1dMD592020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.txt2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.txtExtracted texttext/plain6https://repository.ucc.edu.co/bitstreams/73571bd9-60f8-4a32-afb1-eb6fd67e0f90/download6d93d3216dc4a7f5df47d4876fbec4d3MD51020.500.12494/16081oai:repository.ucc.edu.co:20.500.12494/160812024-08-10 22:16:46.966open.accesshttps://repository.ucc.edu.coRepositorio Institucional Universidad Cooperativa de Colombiabdigital@metabiblioteca.comVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEKUkVQT1NJVE9SSU9TIElOU1RJVFVDSU9OQUxFUwpMSUNFTkNJQSBERSBVU08KClBvciBtZWRpbyBkZWwgcHJlc2VudGUgZG9jdW1lbnRvLCBlbCBBdXRvcihlcyksIG1heW9yIChlcykgZGUgZWRhZCwgcXVpZW4gZW4gYWRlbGFudGUgc2UgZGVub21pbmFyw6EgZWwgQVVUT1IsIGNvbmZpZXJlIGEgbGEgVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEsIGNvbiBOSVQuIDg2MC0wMjk5MjQtNywgdW5hIExJQ0VOQ0lBIERFIFVTTyBkZSBvYnJhLCBiYWpvIGxhcyBzaWd1aWVudGVzIGNvbmRpY2lvbmVzLgoKQ0zDgVVTVUxBUwoKUFJJTUVSQS4gT2JqZXRvLiBFTCBBVVRPUiBwb3IgZXN0ZSBhY3RvIGF1dG9yaXphIGxhIHV0aWxpemFjacOzbiBkZSBsYSBvYnJhLCBkZSBjb25mb3JtaWRhZCBjb24gbG8gZXN0aXB1bGFkbyBhIGNvbnRpbnVhY2nDs246IAoKKGEpIFBhcmEgZWZlY3RvcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSBzZSBhdXRvcml6YSBsYSByZXByb2R1Y2Npw7NuIGRlIGxhIG9icmEgYW50ZXJpb3JtZW50ZSBjaXRhZGEsIGxhIGN1YWwgc2UgYWxvamFyw6EgZW4gZm9ybWF0byBkaWdpdGFsIGVuIGxhcyBwbGF0YWZvcm1hcyBvIHJlcG9zaXRvcmlvcyBhZG1pbmlzdHJhZG9zIHBvciBsYSBVTklWRVJTSURBRCBvIGVuIG90cm8gdGlwbyBkZSByZXBvc2l0b3Jpb3MgZXh0ZXJub3MgbyBww6FnaW5hcyB3ZWIgZXNjb2dpZG9zIHBvciBsYSBVTklWRVJTSURBRCwgcGFyYSBmaW5lcyBkZSBkaWZ1c2nDs24geSBkaXZ1bGdhY2nDs24uIEFkaWNpb25hbG1lbnRlLCBzZSBhdXRvcml6YSBhIHF1ZSBsb3MgdXN1YXJpb3MgaW50ZXJub3MgeSBleHRlcm5vcyBkZSBkaWNoYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgcmVwcm9kdXpjYW4gbyBkZXNjYXJndWVuIGxhIG9icmEsIHNpbiDDoW5pbW8gZGUgbHVjcm8sIHBhcmEgZmluZXMgcHJpdmFkb3MsIGVkdWNhdGl2b3MgbyBhY2Fkw6ltaWNvczsgc2llbXByZSB5IGN1YW5kbyBubyBzZSB2aW9sZW4gYWN1ZXJkb3MgY29uIGVkaXRvcmVzLCBwZXJpb2RvcyBkZSBlbWJhcmdvIG8gYWN1ZXJkb3MgZGUgY29uZmlkZW5jaWFsaWRhZCBxdWUgYXBsaXF1ZW4uCgooYikgU2UgYXV0b3JpemEgbGEgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGxhIHB1ZXN0YSBhIGRpc3Bvc2ljacOzbiBkZSBsYSBvYnJhIG1lbmNpb25hZGEsIGVuIGFjY2VzbyBhYmllcnRvLCBwYXJhIHN1IHV0aWxpemFjacOzbiBlbiBsYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgYWRtaW5pc3RyYWRvcyBwb3IgbGEgVU5JVkVSU0lEQUQuCgooYykgTG8gYW50ZXJpb3IgZXN0YXLDoSBzdWpldG8gYSBsYXMgZGVmaW5pY2lvbmVzIGNvbnRlbmlkYXMgZW4gbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MyB5IGxhIExleSAyMyBkZSAxOTgyLgoKClNFR1VOREEuIE9yaWdpbmFsaWRhZCB5IHJlY2xhbWFjaW9uZXMuIEVsIEFVVE9SIGRlY2xhcmEgcXVlIGxhIE9CUkEgZXMgb3JpZ2luYWwgeSBxdWUgZXMgZGUgc3UgY3JlYWNpw7NuIGV4Y2x1c2l2YSwgbm8gZXhpc3RpZW5kbyBpbXBlZGltZW50byBkZSBjdWFscXVpZXIgbmF0dXJhbGV6YSAoZW1iYXJnb3MsIHVzbyBkZSBtYXRlcmlhbCBwcm90ZWdpZG8gcG9yIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGxhIGNvbmNlc2nDs24gZGUgbG9zIGRlcmVjaG9zIHByZXZpc3RvcyBlbiBlc3RlIGFjdWVyZG8uIEVsIEFVVE9SIHJlc3BvbmRlcsOhIHBvciBjdWFscXVpZXIgYWNjacOzbiBkZSByZWl2aW5kaWNhY2nDs24sIHBsYWdpbyB1IG90cmEgY2xhc2UgZGUgcmVjbGFtYWNpw7NuIHF1ZSBhbCByZXNwZWN0byBwdWRpZXJhIHNvYnJldmVuaXIuCgpURVJDRVJBLiBDb250cmFwcmVzdGFjacOzbi4gRWwgQVVUT1IgYXV0b3JpemEgYSBxdWUgc3Ugb2JyYSBzZWEgdXRpbGl6YWRhIGRlIGNvbmZvcm1pZGFkIGNvbiBsYSBjbMOhdXN1bGEgUFJJTUVSQSBkZSBmb3JtYSBncmF0dWl0YSwgZXMgZGVjaXIsIHF1ZSBsYSB1dGlsaXphY2nDs24gZGUgbGEgbWlzbWEgbm8gZ2VuZXJhIG5pbmfDum4gcGFnbyBvIHJlZ2Fsw61hcyBlbiBmYXZvciBkZSBlc3RlLgoKQ1VBUlRBLiBUaXR1bGFyaWRhZCBkZSBkZXJlY2hvcy4gRWwgcHJlc2VudGUgY29udHJhdG8gbm8gdHJhbnNmaWVyZSBsYSB0aXR1bGFyaWRhZCBkZSBsb3MgZGVyZWNob3MgcGF0cmltb25pYWxlcyBzb2JyZSBsYXMgb2JyYXMgYW50ZXJpb3JtZW50ZSBtZW5jaW9uYWRhcyBhIGxhIFVOSVZFUlNJREFELiDDmm5pY2FtZW50ZSBoYWNlIHJlbGFjacOzbiBhIHVuYSBsaWNlbmNpYSBubyBleGNsdXNpdmEgZW4gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVyaW9ybWVudGUgcGFjdGFkb3MuCgpRVUlOVEEuIENyw6lkaXRvcy4gTGEgVU5JVkVSU0lEQUQgc2UgY29tcHJvbWV0ZSBhIGRhciBhbCBBVVRPUiwgZWwgcmVjb25vY2ltaWVudG8gZGVudHJvIGNhZGEgZm9ybWEgZGUgdXRpbGl6YWNpw7NuIGVuIGxhIG9icmEuIExvcyBjcsOpZGl0b3MgZGViZW4gZmlndXJhciBlbiBjYWRhIHVubyBkZSBsb3MgZm9ybWF0b3MgbyByZWdpc3Ryb3MgZGUgcHVibGljYWNpw7NuLiBObyBjb25zdGl0dWlyw6EgdW5hIHZpb2xhY2nDs24gYSBsb3MgZGVyZWNob3MgbW9yYWxlcyBkZWwgYXV0b3IgbGEgbm8gcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBvIGRlbcOhcyB1dGlsaXphY2lvbmVzIGRlIGxhIG9icmEuIExhIHV0aWxpemFjacOzbiBvIG5vIGRlIGxhIG9icmEsIGFzw60gY29tbyBzdSBmb3JtYSBkZSB1dGlsaXphY2nDs24gc2Vyw6EgZmFjdWx0YWQgZXhjbHVzaXZhIGRlIGxhIFVOSVZFUlNJREFELgogClNFWFRBLiBEdXJhY2nDs24geSB0ZXJyaXRvcmlvLiBMYSBwcmVzZW50ZSBsaWNlbmNpYSBkZSB1c28gcXVlIHNlIG90b3JnYSBhIGZhdm9yIGRlIGxhIFVOSVZFUlNJREFEIHRlbmRyw6EgdW5hIGR1cmFjacOzbiBlcXVpdmFsZW50ZSBhbCB0w6lybWlubyBkZSBwcm90ZWNjacOzbiBsZWdhbCBkZSBsYSBvYnJhIHkgcGFyYSB0b2RvcyBsb3MgcGHDrXNlcyBkZWwgbXVuZG8uCgpTw4lQVElNQS4gVXNvIGRlIENyZWF0aXZlIENvbW1vbnMuIEVsIEFVVE9SIGF1dG9yaXphcsOhIGxhIGRpZnVzacOzbiBkZSBzdSBjb250ZW5pZG8gYmFqbyB1bmEgbGljZW5jaWEgQ3JlYXRpdmUgQ29tbW9ucyBhdHJpYnVjacOzbiA0LjAgaW50ZXJuYWNpb25hbCwgcXVlIGRlYmVyw6EgaW5jbHVpcnNlIGVuIGVsIGNvbnRlbmlkby4gCgpPQ1RBVkEuIERlcmVjaG8gZGUgZXhjbHVzacOzbi4gQ2FkYSBhdXRvciBwdWVkZSBpbmRpY2FyIGVuIGVsIG1vbWVudG8gZGUgZGVww7NzaXRvIGRlbCBjb250ZW5pZG8gcXVlIGVsIHRleHRvIGNvbXBsZXRvIGRlIGxhIHByb2R1Y2Npw7NuIGFjYWTDqW1pY2EgbyBjaWVudMOtZmljYSBubyBlc3RlIGNvbiBhY2Nlc28gYWJpZXJ0byBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIHBvciBtb3Rpdm9zIGRlIGNvbmZpZGVuY2lhbGlkYWQsIHBvcnF1ZSBzZSBlbmN1ZW50cmUgZW4gdsOtYXMgZGUgb2J0ZW5lciB1biBkZXJlY2hvIGRlIHByb3BpZWRhZCBpbmR1c3RyaWFsIG8gZXhpc3RpciBhY3VlcmRvcyBwcmV2aW9zIGNvbiB0ZXJjZXJvcyAoZWRpdG9yaWFsZXMsIHJldmlzdGFzIGNpZW50w61maWNhcywgb3RyYXMgaW5zdGl0dWNpb25lcykuIEVsIGF1dG9yIHNlIGNvbXByb21ldGUgYSBkZXBvc2l0YXIgbG9zIG1ldGFkYXRvcyBlIGluZm9ybWFyIGVsIHRpZW1wbyBkZSBlbWJhcmdvIGR1cmFudGUgZWwgY3VhbCBlbCB0ZXh0byBjb21wbGV0byB0ZW5kcsOhIGFjY2VzbyByZXN0cmluZ2lkby4gCgpOT1ZFTkEuIEVsIEFVVE9SIGFsIGFjZXB0YXIgZXN0YSBsaWNlbmNpYSBhZHVjZSBxdWUgZXN0YSBwcm9kdWNjacOzbiBzZSBkZXNhcnJvbGzDsyBlbiBlbCBwZXJpb2RvIGVuIHF1ZSBzZSBlbmN1ZW50cmEgY29uIHbDrW5jdWxvcyBjb24gTGEgVW5pdmVyc2lkYWQuCgpEw4lDSU1BLiBOb3JtYXMgYXBsaWNhYmxlcy4gUGFyYSBsYSBpbnRlcnByZXRhY2nDs24geSBjdW1wbGltaWVudG8gZGVsIHByZXNlbnRlIGFjdWVyZG8gbGFzIHBhcnRlcyBzZSBzb21ldGVuIGEgbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgbGEgTGV5IDIzIGRlIDE5ODIgeSBkZW3DoXMgbm9ybWFzIGFwbGljYWJsZXMgZGUgQ29sb21iaWEuIEFkZW3DoXMsIGEgbGFzIG5vcm1hcyBJbnN0aXR1Y2lvbmFsZXMgcXVlIGFwbGlxdWVuLgoKTGEgcHJlc2VudGUgbGljZW5jaWEgc2UgYXV0b3JpemEgZW4gbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuIGVuIGxvcyByZXBvc2l0b3Jpb3MgaW5zdGl0dWNpb25hbGVzLgo= |