Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps

El presente documento describe las actividades realizadas en la empresa FosterApps durante el desarrollo de la práctica social, empresarial y solidaria, como modalidad de grado. Komercia es una plataforma de comercio electrónico para la gestión de inventario y la creación de tiendas virtuales, siend...

Full description

Autores:
Escobar Parrado, Dany Alexander
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/18016
Acceso en línea:
https://hdl.handle.net/20.500.12494/18016
Palabra clave:
Pruebas de extremo a extremo
Integración continua
Despliegue continuo
Cypress
Canalizaciones
Frontend
End-to-end testing
Continuous integration
Continuous deployment
Cypress
Pipelines
Frontend
Rights
openAccess
License
Atribución – No comercial – Sin Derivar
id COOPER2_ff5f81cd6d163dafab174f2e6b1e6a58
oai_identifier_str oai:repository.ucc.edu.co:20.500.12494/18016
network_acronym_str COOPER2
network_name_str Repositorio UCC
repository_id_str
dc.title.spa.fl_str_mv Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
title Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
spellingShingle Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
Pruebas de extremo a extremo
Integración continua
Despliegue continuo
Cypress
Canalizaciones
Frontend
End-to-end testing
Continuous integration
Continuous deployment
Cypress
Pipelines
Frontend
title_short Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
title_full Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
title_fullStr Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
title_full_unstemmed Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
title_sort Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps
dc.creator.fl_str_mv Escobar Parrado, Dany Alexander
dc.contributor.advisor.none.fl_str_mv Ojeda Enríquez, Miguel Antonio
dc.contributor.author.none.fl_str_mv Escobar Parrado, Dany Alexander
dc.subject.spa.fl_str_mv Pruebas de extremo a extremo
Integración continua
Despliegue continuo
Cypress
Canalizaciones
Frontend
topic Pruebas de extremo a extremo
Integración continua
Despliegue continuo
Cypress
Canalizaciones
Frontend
End-to-end testing
Continuous integration
Continuous deployment
Cypress
Pipelines
Frontend
dc.subject.other.spa.fl_str_mv End-to-end testing
Continuous integration
Continuous deployment
Cypress
Pipelines
Frontend
description El presente documento describe las actividades realizadas en la empresa FosterApps durante el desarrollo de la práctica social, empresarial y solidaria, como modalidad de grado. Komercia es una plataforma de comercio electrónico para la gestión de inventario y la creación de tiendas virtuales, siendo el producto principal de FosterApps. Debido a su crecimiento, se hace necesario la implantación de un sistema de integración continua en su proyecto, con el fin de lograr el mayor nivel de automatización posible en la ejecución de las pruebas, permitiendo así a los desarrolladores ahorrar tiempo en estas tareas, para centrarse en otras relacionadas con el proyecto. FosterApps es consciente de la importancia de aplicar las pruebas de extremo a extremo, inicialmente en algunos de los componentes del checkout y secciones del panel de administración de las tiendas de su proyecto Komercia, para probar los procesos y las funcionalidades de estos mismos desde la perspectiva del usuario real y final. Por este motivo, surge también como parte de la pasantía, el implementar las pruebas e2e, con el fin de ayudar a la detección de errores, a garantizar y mejorar la calidad en la entrega del producto a cliente y que el desarrollo final del mismo no contenga errores.
publishDate 2020
dc.date.accessioned.none.fl_str_mv 2020-06-26T04:12:03Z
dc.date.available.none.fl_str_mv 2020-06-26T04:12:03Z
dc.date.issued.none.fl_str_mv 2020-06-25
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/18016
dc.identifier.bibliographicCitation.spa.fl_str_mv Escobar Parrado, D. A. (2020). Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps [Trabajo de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional UCC. https://repository.ucc.edu.co/handle/20.500.12494/18016
url https://hdl.handle.net/20.500.12494/18016
identifier_str_mv Escobar Parrado, D. A. (2020). Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps [Trabajo de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional UCC. https://repository.ucc.edu.co/handle/20.500.12494/18016
dc.relation.references.spa.fl_str_mv cypress. (2020). cypress. Obtenido de Cypress Documentation: https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell
Fernández, N. (24 de Febrero de 2016). Naiara Fernández - Comunicación Online. Obtenido de Naiara Fernández - Comunicación Online: http://www.naiarafernandez.com/tutorial-slack-que-es-para-que-sirve-y-como-funciona/
FosterApps S.A.S. (2020). fosterapps. Obtenido de fosterapps: http://www.fosterapps.com/
Fowler, M. (01 de Mayo de 2006). martinfowler.com. Obtenido de Continuous Integration: https://www.martinfowler.com/articles/continuousIntegration.html
Khetarpal, A. (04 de Abril de 2020). TOOLSQA. Obtenido de TOOLSQA: https://www.toolsqa.com/cypress/what-is-cypress/
Netlify. (2020). Netlify: All-in-one platform for automating modern web projects. Obtenido de Welcome to Netlify | Netlify Docs: https://docs.netlify.com/#get-started
Nuxt.js. (2020). Nuxt.js - The Vue.js Framework. Obtenido de Introduction - NuxtJS: https://nuxtjs.org/guide
Parquesoftmeta. (2020). ParqueSoft Meta. Obtenido de ParqueSoft Meta: http://parquesoftmeta.com/nosotros
Sebastián Divinsky. (2016). Cessi Argentina. Obtenido de Analista tester: https://www.cessi.org.ar/perfilesit/detalle-de-analista-tester-tester-9
Vue.js. (2020). Vue.js. Obtenido de Introduction — Vue.js: 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.format.extent.spa.fl_str_mv 78 p.
dc.publisher.spa.fl_str_mv Universidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, Villavicencio
dc.publisher.program.spa.fl_str_mv Ingeniería de Sistemas
dc.publisher.place.spa.fl_str_mv Villavicencio
institution Universidad Cooperativa de Colombia
bitstream.url.fl_str_mv https://repository.ucc.edu.co/bitstreams/f61bd462-427a-44de-bc0f-5c9b25ab8fcd/download
https://repository.ucc.edu.co/bitstreams/c8656c23-f032-4966-b9a4-48f341474a77/download
https://repository.ucc.edu.co/bitstreams/51341fce-cecd-4ce6-9a5b-e0deb5c44686/download
https://repository.ucc.edu.co/bitstreams/e6874fec-c6c0-4398-8fda-29b98b6d3d02/download
https://repository.ucc.edu.co/bitstreams/d9490fb9-d15f-448e-b5a2-936b6599dc09/download
https://repository.ucc.edu.co/bitstreams/4bd47d78-1043-46ed-8829-d15fc257274c/download
https://repository.ucc.edu.co/bitstreams/5c975a5c-9618-49e4-9f38-8e7d834d867a/download
bitstream.checksum.fl_str_mv 3bce4f7ab09dfc588f126e1e36e98a45
bd9dc7caa8e35b8f72d7cbbc79f1bf88
3f0b9d1d8c2e1f59c551925ac5c0c3e3
26911347754a57a19f8ac707175b1dfb
2677d59821f70ea457442cbe1cad398f
5826c1e69bb45a707e881060d6689803
8f7e67db12cd6aa4d31c3dfd60eeeb9c
bitstream.checksumAlgorithm.fl_str_mv 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_ 1814247356037595136
spelling Ojeda Enríquez, Miguel AntonioEscobar Parrado, Dany Alexander2020-06-26T04:12:03Z2020-06-26T04:12:03Z2020-06-25https://hdl.handle.net/20.500.12494/18016Escobar Parrado, D. A. (2020). Implementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster Apps [Trabajo de pregrado, Universidad Cooperativa de Colombia]. Repositorio Institucional UCC. https://repository.ucc.edu.co/handle/20.500.12494/18016El presente documento describe las actividades realizadas en la empresa FosterApps durante el desarrollo de la práctica social, empresarial y solidaria, como modalidad de grado. Komercia es una plataforma de comercio electrónico para la gestión de inventario y la creación de tiendas virtuales, siendo el producto principal de FosterApps. Debido a su crecimiento, se hace necesario la implantación de un sistema de integración continua en su proyecto, con el fin de lograr el mayor nivel de automatización posible en la ejecución de las pruebas, permitiendo así a los desarrolladores ahorrar tiempo en estas tareas, para centrarse en otras relacionadas con el proyecto. FosterApps es consciente de la importancia de aplicar las pruebas de extremo a extremo, inicialmente en algunos de los componentes del checkout y secciones del panel de administración de las tiendas de su proyecto Komercia, para probar los procesos y las funcionalidades de estos mismos desde la perspectiva del usuario real y final. Por este motivo, surge también como parte de la pasantía, el implementar las pruebas e2e, con el fin de ayudar a la detección de errores, a garantizar y mejorar la calidad en la entrega del producto a cliente y que el desarrollo final del mismo no contenga errores.This document describes the activities carried out in the company FosterApps during the development of social, business and solidarity practice, as a degree modality. Komercia is an e-commerce platform for inventory management and virtual store creation, being the main product of FosterApps. Due to its growth, it is necessary to implement a continuous integration system in their project, in order to achieve the highest possible level of automation in the execution of tests, thus allowing developers to save time on these tasks, to focus on others related to the project. FosterApps is aware of the importance of applying end-to-end testing, initially in some of the checkout components and sections of the store administration panel of their Komercia project, to test their processes and functionalities from the perspective from the real and end user. For this reason, the implementation of e2e tests also arises as part of the internship, in order to help error detection, guarantee and improve the quality of the product delivery to the client and that the final development of the same does not contain errors.Capítulo 1. Información de la empresa. -- 1.1. Descripción y naturaleza de la organización. -- 1.2. Misión. -- 1.3. Visión. -- 1.4. Objetivos estratégicos. -- 1.5. Valores de FosterApps. -- 1.6. Organigrama. -- Capítulo 2. Requerimientos de la organización. -- 2.1. Funciones a desarrollar. -- 2.2. Requisitos tecnológicos. -- Capítulo 3. Plan de acción. -- Capítulo 4. Actividades realizadas. -- 4.1. Determinar el alcance del proyecto. -- 4.2. Gestionar el armado de ambientes de prueba. -- 4.3. Definir los casos de prueba de e2e que se realizarán. -- 4.4. Desarrollar y ejecutar de forma manual los casos de prueba de e2e. -- 4.5. Análisis y Feedback de los resultados de las pruebas manuales. -- 4.6. Realizar la configuración para implementar la Integración Continua. -- 4.7. Automatizar las pruebas e2e de Cypress al subir cambios al repositorio del proyecto. -- 4.8. Aplicar la Integración y despliegue continuos, junto con la automatización de pruebas. -- 4.9. Realizar la documentación de las pruebas (evidencia) y el proceso de Integración y despliegue continuos. -- 4.10. Puesta en marcha. -- Capítulo 5. Logros y lecciones aprendidas. -- Capítulo 6. Limitaciones, conclusiones y recomendaciones. -- Anexos. -- Anexo A. Certificado de Práctica FosterApps S.A.S. -- Anexo B. Matriz de Pruebas. -- Referencias.dany.escobarpc@campusucc.edu.co78 p.Universidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, VillavicencioIngeniería de SistemasVillavicencioPruebas de extremo a extremoIntegración continuaDespliegue continuoCypressCanalizacionesFrontendEnd-to-end testingContinuous integrationContinuous deploymentCypressPipelinesFrontendImplementar la integración continua y aplicar el modelo de testing de extremo a extremo en el proyecto Komercia de la empresa Foster AppsTrabajo 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_abf2cypress. (2020). cypress. Obtenido de Cypress Documentation: https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshellFernández, N. (24 de Febrero de 2016). Naiara Fernández - Comunicación Online. Obtenido de Naiara Fernández - Comunicación Online: http://www.naiarafernandez.com/tutorial-slack-que-es-para-que-sirve-y-como-funciona/FosterApps S.A.S. (2020). fosterapps. Obtenido de fosterapps: http://www.fosterapps.com/Fowler, M. (01 de Mayo de 2006). martinfowler.com. Obtenido de Continuous Integration: https://www.martinfowler.com/articles/continuousIntegration.htmlKhetarpal, A. (04 de Abril de 2020). TOOLSQA. Obtenido de TOOLSQA: https://www.toolsqa.com/cypress/what-is-cypress/Netlify. (2020). Netlify: All-in-one platform for automating modern web projects. Obtenido de Welcome to Netlify | Netlify Docs: https://docs.netlify.com/#get-startedNuxt.js. (2020). Nuxt.js - The Vue.js Framework. Obtenido de Introduction - NuxtJS: https://nuxtjs.org/guideParquesoftmeta. (2020). ParqueSoft Meta. Obtenido de ParqueSoft Meta: http://parquesoftmeta.com/nosotrosSebastián Divinsky. (2016). Cessi Argentina. Obtenido de Analista tester: https://www.cessi.org.ar/perfilesit/detalle-de-analista-tester-tester-9Vue.js. (2020). Vue.js. Obtenido de Introduction — Vue.js: https://vuejs.org/v2/guide/PublicationLICENSElicense.txtlicense.txttext/plain; charset=utf-84334https://repository.ucc.edu.co/bitstreams/f61bd462-427a-44de-bc0f-5c9b25ab8fcd/download3bce4f7ab09dfc588f126e1e36e98a45MD53ORIGINAL2020_Implementar_integración_continua.pdf2020_Implementar_integración_continua.pdfTrabajo finalapplication/pdf1946008https://repository.ucc.edu.co/bitstreams/c8656c23-f032-4966-b9a4-48f341474a77/downloadbd9dc7caa8e35b8f72d7cbbc79f1bf88MD512020_Implementar_integración_continua_Formato.pdf2020_Implementar_integración_continua_Formato.pdfFormato Licencia de Usoapplication/pdf208978https://repository.ucc.edu.co/bitstreams/51341fce-cecd-4ce6-9a5b-e0deb5c44686/download3f0b9d1d8c2e1f59c551925ac5c0c3e3MD52THUMBNAIL2020_Implementar_integración_continua.pdf.jpg2020_Implementar_integración_continua.pdf.jpgGenerated Thumbnailimage/jpeg3055https://repository.ucc.edu.co/bitstreams/e6874fec-c6c0-4398-8fda-29b98b6d3d02/download26911347754a57a19f8ac707175b1dfbMD542020_Implementar_integración_continua_Formato.pdf.jpg2020_Implementar_integración_continua_Formato.pdf.jpgGenerated Thumbnailimage/jpeg5143https://repository.ucc.edu.co/bitstreams/d9490fb9-d15f-448e-b5a2-936b6599dc09/download2677d59821f70ea457442cbe1cad398fMD55TEXT2020_Implementar_integración_continua.pdf.txt2020_Implementar_integración_continua.pdf.txtExtracted texttext/plain76599https://repository.ucc.edu.co/bitstreams/4bd47d78-1043-46ed-8829-d15fc257274c/download5826c1e69bb45a707e881060d6689803MD562020_Implementar_integración_continua_Formato.pdf.txt2020_Implementar_integración_continua_Formato.pdf.txtExtracted texttext/plain5906https://repository.ucc.edu.co/bitstreams/5c975a5c-9618-49e4-9f38-8e7d834d867a/download8f7e67db12cd6aa4d31c3dfd60eeeb9cMD5720.500.12494/18016oai:repository.ucc.edu.co:20.500.12494/180162024-08-10 21:44:50.689open.accesshttps://repository.ucc.edu.coRepositorio Institucional Universidad Cooperativa de Colombiabdigital@metabiblioteca.comVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEKUkVQT1NJVE9SSU9TIElOU1RJVFVDSU9OQUxFUwpMSUNFTkNJQSBERSBVU08KClBvciBtZWRpbyBkZWwgcHJlc2VudGUgZG9jdW1lbnRvLCBlbCBBdXRvcihlcyksIG1heW9yIChlcykgZGUgZWRhZCwgcXVpZW4gZW4gYWRlbGFudGUgc2UgZGVub21pbmFyw6EgZWwgQVVUT1IsIGNvbmZpZXJlIGEgbGEgVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEsIGNvbiBOSVQuIDg2MC0wMjk5MjQtNywgdW5hIExJQ0VOQ0lBIERFIFVTTyBkZSBvYnJhLCBiYWpvIGxhcyBzaWd1aWVudGVzIGNvbmRpY2lvbmVzLgoKQ0zDgVVTVUxBUwoKUFJJTUVSQS4gT2JqZXRvLiBFTCBBVVRPUiBwb3IgZXN0ZSBhY3RvIGF1dG9yaXphIGxhIHV0aWxpemFjacOzbiBkZSBsYSBvYnJhLCBkZSBjb25mb3JtaWRhZCBjb24gbG8gZXN0aXB1bGFkbyBhIGNvbnRpbnVhY2nDs246IAoKKGEpIFBhcmEgZWZlY3RvcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSBzZSBhdXRvcml6YSBsYSByZXByb2R1Y2Npw7NuIGRlIGxhIG9icmEgYW50ZXJpb3JtZW50ZSBjaXRhZGEsIGxhIGN1YWwgc2UgYWxvamFyw6EgZW4gZm9ybWF0byBkaWdpdGFsIGVuIGxhcyBwbGF0YWZvcm1hcyBvIHJlcG9zaXRvcmlvcyBhZG1pbmlzdHJhZG9zIHBvciBsYSBVTklWRVJTSURBRCBvIGVuIG90cm8gdGlwbyBkZSByZXBvc2l0b3Jpb3MgZXh0ZXJub3MgbyBww6FnaW5hcyB3ZWIgZXNjb2dpZG9zIHBvciBsYSBVTklWRVJTSURBRCwgcGFyYSBmaW5lcyBkZSBkaWZ1c2nDs24geSBkaXZ1bGdhY2nDs24uIEFkaWNpb25hbG1lbnRlLCBzZSBhdXRvcml6YSBhIHF1ZSBsb3MgdXN1YXJpb3MgaW50ZXJub3MgeSBleHRlcm5vcyBkZSBkaWNoYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgcmVwcm9kdXpjYW4gbyBkZXNjYXJndWVuIGxhIG9icmEsIHNpbiDDoW5pbW8gZGUgbHVjcm8sIHBhcmEgZmluZXMgcHJpdmFkb3MsIGVkdWNhdGl2b3MgbyBhY2Fkw6ltaWNvczsgc2llbXByZSB5IGN1YW5kbyBubyBzZSB2aW9sZW4gYWN1ZXJkb3MgY29uIGVkaXRvcmVzLCBwZXJpb2RvcyBkZSBlbWJhcmdvIG8gYWN1ZXJkb3MgZGUgY29uZmlkZW5jaWFsaWRhZCBxdWUgYXBsaXF1ZW4uCgooYikgU2UgYXV0b3JpemEgbGEgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGxhIHB1ZXN0YSBhIGRpc3Bvc2ljacOzbiBkZSBsYSBvYnJhIG1lbmNpb25hZGEsIGVuIGFjY2VzbyBhYmllcnRvLCBwYXJhIHN1IHV0aWxpemFjacOzbiBlbiBsYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgYWRtaW5pc3RyYWRvcyBwb3IgbGEgVU5JVkVSU0lEQUQuCgooYykgTG8gYW50ZXJpb3IgZXN0YXLDoSBzdWpldG8gYSBsYXMgZGVmaW5pY2lvbmVzIGNvbnRlbmlkYXMgZW4gbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MyB5IGxhIExleSAyMyBkZSAxOTgyLgoKClNFR1VOREEuIE9yaWdpbmFsaWRhZCB5IHJlY2xhbWFjaW9uZXMuIEVsIEFVVE9SIGRlY2xhcmEgcXVlIGxhIE9CUkEgZXMgb3JpZ2luYWwgeSBxdWUgZXMgZGUgc3UgY3JlYWNpw7NuIGV4Y2x1c2l2YSwgbm8gZXhpc3RpZW5kbyBpbXBlZGltZW50byBkZSBjdWFscXVpZXIgbmF0dXJhbGV6YSAoZW1iYXJnb3MsIHVzbyBkZSBtYXRlcmlhbCBwcm90ZWdpZG8gcG9yIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGxhIGNvbmNlc2nDs24gZGUgbG9zIGRlcmVjaG9zIHByZXZpc3RvcyBlbiBlc3RlIGFjdWVyZG8uIEVsIEFVVE9SIHJlc3BvbmRlcsOhIHBvciBjdWFscXVpZXIgYWNjacOzbiBkZSByZWl2aW5kaWNhY2nDs24sIHBsYWdpbyB1IG90cmEgY2xhc2UgZGUgcmVjbGFtYWNpw7NuIHF1ZSBhbCByZXNwZWN0byBwdWRpZXJhIHNvYnJldmVuaXIuCgpURVJDRVJBLiBDb250cmFwcmVzdGFjacOzbi4gRWwgQVVUT1IgYXV0b3JpemEgYSBxdWUgc3Ugb2JyYSBzZWEgdXRpbGl6YWRhIGRlIGNvbmZvcm1pZGFkIGNvbiBsYSBjbMOhdXN1bGEgUFJJTUVSQSBkZSBmb3JtYSBncmF0dWl0YSwgZXMgZGVjaXIsIHF1ZSBsYSB1dGlsaXphY2nDs24gZGUgbGEgbWlzbWEgbm8gZ2VuZXJhIG5pbmfDum4gcGFnbyBvIHJlZ2Fsw61hcyBlbiBmYXZvciBkZSBlc3RlLgoKQ1VBUlRBLiBUaXR1bGFyaWRhZCBkZSBkZXJlY2hvcy4gRWwgcHJlc2VudGUgY29udHJhdG8gbm8gdHJhbnNmaWVyZSBsYSB0aXR1bGFyaWRhZCBkZSBsb3MgZGVyZWNob3MgcGF0cmltb25pYWxlcyBzb2JyZSBsYXMgb2JyYXMgYW50ZXJpb3JtZW50ZSBtZW5jaW9uYWRhcyBhIGxhIFVOSVZFUlNJREFELiDDmm5pY2FtZW50ZSBoYWNlIHJlbGFjacOzbiBhIHVuYSBsaWNlbmNpYSBubyBleGNsdXNpdmEgZW4gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVyaW9ybWVudGUgcGFjdGFkb3MuCgpRVUlOVEEuIENyw6lkaXRvcy4gTGEgVU5JVkVSU0lEQUQgc2UgY29tcHJvbWV0ZSBhIGRhciBhbCBBVVRPUiwgZWwgcmVjb25vY2ltaWVudG8gZGVudHJvIGNhZGEgZm9ybWEgZGUgdXRpbGl6YWNpw7NuIGVuIGxhIG9icmEuIExvcyBjcsOpZGl0b3MgZGViZW4gZmlndXJhciBlbiBjYWRhIHVubyBkZSBsb3MgZm9ybWF0b3MgbyByZWdpc3Ryb3MgZGUgcHVibGljYWNpw7NuLiBObyBjb25zdGl0dWlyw6EgdW5hIHZpb2xhY2nDs24gYSBsb3MgZGVyZWNob3MgbW9yYWxlcyBkZWwgYXV0b3IgbGEgbm8gcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBvIGRlbcOhcyB1dGlsaXphY2lvbmVzIGRlIGxhIG9icmEuIExhIHV0aWxpemFjacOzbiBvIG5vIGRlIGxhIG9icmEsIGFzw60gY29tbyBzdSBmb3JtYSBkZSB1dGlsaXphY2nDs24gc2Vyw6EgZmFjdWx0YWQgZXhjbHVzaXZhIGRlIGxhIFVOSVZFUlNJREFELgogClNFWFRBLiBEdXJhY2nDs24geSB0ZXJyaXRvcmlvLiBMYSBwcmVzZW50ZSBsaWNlbmNpYSBkZSB1c28gcXVlIHNlIG90b3JnYSBhIGZhdm9yIGRlIGxhIFVOSVZFUlNJREFEIHRlbmRyw6EgdW5hIGR1cmFjacOzbiBlcXVpdmFsZW50ZSBhbCB0w6lybWlubyBkZSBwcm90ZWNjacOzbiBsZWdhbCBkZSBsYSBvYnJhIHkgcGFyYSB0b2RvcyBsb3MgcGHDrXNlcyBkZWwgbXVuZG8uCgpTw4lQVElNQS4gVXNvIGRlIENyZWF0aXZlIENvbW1vbnMuIEVsIEFVVE9SIGF1dG9yaXphcsOhIGxhIGRpZnVzacOzbiBkZSBzdSBjb250ZW5pZG8gYmFqbyB1bmEgbGljZW5jaWEgQ3JlYXRpdmUgQ29tbW9ucyBhdHJpYnVjacOzbiA0LjAgaW50ZXJuYWNpb25hbCwgcXVlIGRlYmVyw6EgaW5jbHVpcnNlIGVuIGVsIGNvbnRlbmlkby4gCgpPQ1RBVkEuIERlcmVjaG8gZGUgZXhjbHVzacOzbi4gQ2FkYSBhdXRvciBwdWVkZSBpbmRpY2FyIGVuIGVsIG1vbWVudG8gZGUgZGVww7NzaXRvIGRlbCBjb250ZW5pZG8gcXVlIGVsIHRleHRvIGNvbXBsZXRvIGRlIGxhIHByb2R1Y2Npw7NuIGFjYWTDqW1pY2EgbyBjaWVudMOtZmljYSBubyBlc3RlIGNvbiBhY2Nlc28gYWJpZXJ0byBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIHBvciBtb3Rpdm9zIGRlIGNvbmZpZGVuY2lhbGlkYWQsIHBvcnF1ZSBzZSBlbmN1ZW50cmUgZW4gdsOtYXMgZGUgb2J0ZW5lciB1biBkZXJlY2hvIGRlIHByb3BpZWRhZCBpbmR1c3RyaWFsIG8gZXhpc3RpciBhY3VlcmRvcyBwcmV2aW9zIGNvbiB0ZXJjZXJvcyAoZWRpdG9yaWFsZXMsIHJldmlzdGFzIGNpZW50w61maWNhcywgb3RyYXMgaW5zdGl0dWNpb25lcykuIEVsIGF1dG9yIHNlIGNvbXByb21ldGUgYSBkZXBvc2l0YXIgbG9zIG1ldGFkYXRvcyBlIGluZm9ybWFyIGVsIHRpZW1wbyBkZSBlbWJhcmdvIGR1cmFudGUgZWwgY3VhbCBlbCB0ZXh0byBjb21wbGV0byB0ZW5kcsOhIGFjY2VzbyByZXN0cmluZ2lkby4gCgpOT1ZFTkEuIEVsIEFVVE9SIGFsIGFjZXB0YXIgZXN0YSBsaWNlbmNpYSBhZHVjZSBxdWUgZXN0YSBwcm9kdWNjacOzbiBzZSBkZXNhcnJvbGzDsyBlbiBlbCBwZXJpb2RvIGVuIHF1ZSBzZSBlbmN1ZW50cmEgY29uIHbDrW5jdWxvcyBjb24gTGEgVW5pdmVyc2lkYWQuCgpEw4lDSU1BLiBOb3JtYXMgYXBsaWNhYmxlcy4gUGFyYSBsYSBpbnRlcnByZXRhY2nDs24geSBjdW1wbGltaWVudG8gZGVsIHByZXNlbnRlIGFjdWVyZG8gbGFzIHBhcnRlcyBzZSBzb21ldGVuIGEgbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgbGEgTGV5IDIzIGRlIDE5ODIgeSBkZW3DoXMgbm9ybWFzIGFwbGljYWJsZXMgZGUgQ29sb21iaWEuIEFkZW3DoXMsIGEgbGFzIG5vcm1hcyBJbnN0aXR1Y2lvbmFsZXMgcXVlIGFwbGlxdWVuLgoKTGEgcHJlc2VudGUgbGljZW5jaWEgc2UgYXV0b3JpemEgZW4gbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuIGVuIGxvcyByZXBvc2l0b3Jpb3MgaW5zdGl0dWNpb25hbGVzLgo=