Software best practices for machine learning

El documento esta en inglés en caso de necesitar algo en español, por favor contactar con los autores del documento lo más rápido posible

Autores:
Munar González, Nicolás
Tobo Urrutia, Nicolás Andrés
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2022
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
eng
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/59023
Acceso en línea:
http://hdl.handle.net/1992/59023
Palabra clave:
Machine learning
Buenas prácticas
Ingeniería de software
Ingeniería
Rights
openAccess
License
Atribución 4.0 Internacional
id UNIANDES2_955890b57228986ba1fab7698d00df10
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/59023
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.none.fl_str_mv Software best practices for machine learning
dc.title.alternative.none.fl_str_mv Best Practices of SE for ML
title Software best practices for machine learning
spellingShingle Software best practices for machine learning
Machine learning
Buenas prácticas
Ingeniería de software
Ingeniería
title_short Software best practices for machine learning
title_full Software best practices for machine learning
title_fullStr Software best practices for machine learning
title_full_unstemmed Software best practices for machine learning
title_sort Software best practices for machine learning
dc.creator.fl_str_mv Munar González, Nicolás
Tobo Urrutia, Nicolás Andrés
dc.contributor.advisor.none.fl_str_mv Mojica Hanke, Anamaría Irmgard
Linares Vásquez, Mario
dc.contributor.author.none.fl_str_mv Munar González, Nicolás
Tobo Urrutia, Nicolás Andrés
dc.contributor.researchgroup.es_CO.fl_str_mv The Software Design Lab
dc.subject.keyword.none.fl_str_mv Machine learning
Buenas prácticas
Ingeniería de software
topic Machine learning
Buenas prácticas
Ingeniería de software
Ingeniería
dc.subject.themes.es_CO.fl_str_mv Ingeniería
description El documento esta en inglés en caso de necesitar algo en español, por favor contactar con los autores del documento lo más rápido posible
publishDate 2022
dc.date.accessioned.none.fl_str_mv 2022-07-21T15:35:44Z
dc.date.available.none.fl_str_mv 2022-07-21T15:35:44Z
dc.date.issued.none.fl_str_mv 2022-07-19
dc.type.es_CO.fl_str_mv Trabajo de grado - Pregrado
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.es_CO.fl_str_mv Text
dc.type.redcol.none.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/1992/59023
dc.identifier.instname.es_CO.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.es_CO.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.es_CO.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url http://hdl.handle.net/1992/59023
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.es_CO.fl_str_mv eng
language eng
dc.relation.references.es_CO.fl_str_mv L. I. of Advanced Computer Science (LIACS), "Se-ml/awesome-seml: A curated list of articles that cover the software engineering best practices for building machine learning applications." [Online]. Available: https://github.com/SE-ML/awesome-seml
A. Serban, K. van der Blom, H. Hoos, and J. Visser, "Adoption and effects of software engineering best practices in machine learning," in Proceedings of the 14th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), 2020, pp. 1-12.
"React a javascript library for building user interfaces," https://reactjs.org/.
Google. Inc., "Google Dialogflow," https://dialogflow.cloud.google.com/
"Ieee standard glossary of software engineering terminology," IEEE Std 610.12-1990, pp. 1¿84, 1990.
T. G. Dietterich, Machine Learning. GBR: John Wiley and Sons Ltd., 2003, p. 1056-1059.
S. E. Inc, "Stack exchange." [Online]. Available: https://stackexchange.com/about
S. O. Inc, "Stack overflow." [Online]. Available: https://stackoverflow.com/
G. A. Lewis, S. Bellomo, and I. Ozkaya, "Characterizing and detecting mismatch in machine-learning-enabled systems," Mar 2021. [Online]. Available: https://arxiv.org/abs/2103.14101
G. A. Lewis, S. Bellomo, and A. Galyardt, "Component mismatches are a critical bottleneck to fielding ai-enabled systems in the public sector," Oct 2019. [Online]. Available: https://arxiv.org/abs/1910.06136
C. T. Wolf, "Conceptualizing care in the everyday work practices of machine learning developers: Companion publication of the 2019 on designing interactive systems conference 2019 companion," Jun 2019. [Online]. Available: https://dl.acm.org/doi/10.1145/3301019.3323879
A. Tsymbal, "The problem of concept drift: Definitions and related work." [Online]. Available: https://www.researchgate.net/publication/ 228723141 The Problem of Concept Drift Definitions and Related Work
S. Thrun and L. Pratt, "Learning to learn." [Online]. Available: https://doi.org/10.1007/978-1-4615-5529-2
N. Inc., "Notion for personal use," https://www.notion.so/personal.
M. Company, "The mongodb database tools documentation," https:// www.mongodb.com/docs/database-tools/.
O. Foundation., "Node.js web application framework," https://expressjs.com/.
M. Inc., "Mongoose," https://mongoosejs.com/.
W. corp., "React-chat-widget," https://www.npmjs.com/package/react-chat-widget.
Y. Roh, G. Heo, and S. E. Whang, "A survey on data collection for machine learning: a big data-ai integration perspective," IEEE Transactions on Knowledge and Data Engineering, vol. 33, no. 4, pp. 1328¿1347, 2019.
S. Schelter, D. Lange, P. Schmidt, M. Celikel, F. Biessmann, and A. Grafberger, "Automating large-scale data quality verification," Proceedings of the VLDB Endowment, vol. 11, no. 12, pp. 1781-1794, 2018.
E. Breck, N. Polyzotis, S. Roy, S. Whang, and M. Zinkevich, "Data validation for machine learning." in MLSys, 2019.
L. James, "10 deep learning best practices to keep in mind in 2020," https://nanonets.com/blog/10-best-practices-deep-learning/#track-model-experiments, 2021.
G. Forman and M. Scholz, "Apples-to-apples in cross-validation studies: pitfalls in classifier performance measurement," Acm Sigkdd Explorations Newsletter, vol. 12, no. 1, pp. 49¿57, 2010.
E. Hady, "How do you manage your machine learning experiments?" https://hadyelsahar.medium.com/ how-do-you-manage-your-machine-learning-experiments-ab87508348ac, 2019.
J. M. Zhang, M. Harman, L. Ma, and Y. Liu, "Machine learning testing: Survey, landscapes and horizons," IEEE Transactions on Software Engineering, 2020.
M. Matthew, "¿How do you manage your machine learning experiments?" https://matthewmcateer.me/blog/machine-learning-technical-debt/, 2020.
S. L. Salzberg, "On comparing classifiers: Pitfalls to avoid and a recommended approach," Data mining and knowledge discovery, vol. 1, no. 3, pp. 317-328, 1997.
DataRobot, "Best practices in machine learning infrastructure," https://www.datarobot.com/blog/ best-practices-in-machine-learning-infrastructure/, 2019.
B. Karlas, M. Interlandi, C. Renggli, W. Wu, C. Zhang, D. Mukunthu Iyap- pan Babu, J. Edwards, C. Lauren, A. Xu, and M. Weimer, "Building continuous integration services for machine learning," in Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 2020, pp. 2407-2415.
S. Danilo, A. Wider, and C. Windheuser, "Continuous delivery for machine learning," https://martinfowler.com/articles/cd4ml.html, 2019
X. Catherina and D. Tulsee, "Fairness indicators: Scalable infrastructure for fair ml systems," https://ai.googleblog.com/2019/12/ fairness-indicators-scalable.html, 2019.
R. Seyffarth, "Machine learning: Moving from experiments to production," https://blog.codecentric.de/en/2019/03/ machine-learning-experiments-production/, 2019.
C. Breuel, "Ml ops: Machine learning as an engineering discipline," https://towardsdatascience.com/ ml-ops-machine-learning-as-an-engineering-discipline-b86ca4874a3f, 2020.
V. Sridhar, S. Subramanian, D. Arteaga, S. Sundararaman, D. Roselli, and N. Talagala, "Model governance: Reducing the anarchy of production {ML}," in 2018 USENIX Annual Technical Conference (USENIX ATC 18), 2018, pp. 351-358.
dc.rights.license.spa.fl_str_mv Atribución 4.0 Internacional
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by/4.0/
dc.rights.accessrights.spa.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.spa.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Atribución 4.0 Internacional
http://creativecommons.org/licenses/by/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.es_CO.fl_str_mv 27 páginas
dc.format.mimetype.es_CO.fl_str_mv application/pdf
dc.publisher.es_CO.fl_str_mv Universidad de los Andes
dc.publisher.program.es_CO.fl_str_mv Ingeniería de Sistemas y Computación
dc.publisher.faculty.es_CO.fl_str_mv Facultad de Ingeniería
dc.publisher.department.es_CO.fl_str_mv Departamento de Ingeniería Sistemas y Computación
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/c6915668-2e0a-4a32-a693-7e79cebaba37/download
https://repositorio.uniandes.edu.co/bitstreams/dc8a6586-6a0c-4711-aca0-77059b13cfaf/download
https://repositorio.uniandes.edu.co/bitstreams/bf039df8-fe70-4053-b8f8-327e1bee03ca/download
https://repositorio.uniandes.edu.co/bitstreams/99aa513a-b0e8-4a2e-a20a-d37bba8a3991/download
https://repositorio.uniandes.edu.co/bitstreams/c9fbc235-7b20-464b-a7f1-209b289fb870/download
https://repositorio.uniandes.edu.co/bitstreams/43f10134-7ff7-4424-8860-c337078cbe9d/download
https://repositorio.uniandes.edu.co/bitstreams/77b72371-feb3-438d-80d3-25e720f99e5f/download
https://repositorio.uniandes.edu.co/bitstreams/38b4d07b-7469-4985-bd6d-c391598d1afc/download
bitstream.checksum.fl_str_mv 0175ea4a2d4caec4bbcc37e300941108
0014c82da2919ad35f19b3c91390e95f
4491fe1afb58beaaef41a73cf7ff2e27
16d482eea01c934fe460f9cd503fb702
7600aefb5055553f53827b97bdd80055
acc2fd5717ef4be290ab3e177e6c09ee
2c2f2a88ba36894cebea2962e64660ae
5aa5c691a1ffe97abd12c2966efcb8d6
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1812133930426433536
spelling Atribución 4.0 Internacionalhttp://creativecommons.org/licenses/by/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Mojica Hanke, Anamaría Irmgarde28239ba-4f38-4a99-9af7-748e90fee549600Linares Vásquez, Mariodfd38a9c-52f9-42b5-aec7-c79ab93c6385600Munar González, Nicolás043958f5-0433-4f2c-aa1b-6a00dc6cbb4b600Tobo Urrutia, Nicolás Andrés32abf618-8953-43d7-9959-cf493bd63b33600The Software Design Lab2022-07-21T15:35:44Z2022-07-21T15:35:44Z2022-07-19http://hdl.handle.net/1992/59023instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/El documento esta en inglés en caso de necesitar algo en español, por favor contactar con los autores del documento lo más rápido posibleThroughout this document, an analysis of which best practices of Software Engineering (SE) for Machine Learning (ML) are discussed in Community Question Answering (CQA), scientific articles, and surveys. Furthermore, we will investigate if these rules are being used in SE, and how these techniques can affect multiple actors inside an ML project. To achieve this, we will follow a series of steps: First, we will extract data from different CQA communities, websites, Scientific articles, and surveys related to best practices of SE for ML. Second, we will analyze and classify this information to associate these techniques with examples of SE implementations and roles inside a project of SE for ML. Third, we will create a chatbot with deterministic behavior. Through a conversation about the project being implemented of SE for ML, it returns some practices to follow. Finally, we will publish this research in an online documentation format, where the techniques, the chatbot, and the survey will be accessible to the public in general.A lo largo de este documento, se analizan cuáles son las mejores prácticas de Ingeniería de software (SE) para Machine Learning (ML) que se discuten en la comunidad de respuestas a preguntas (CQA), artículos científicos y encuestas. Además, investigaremos si estas reglas se están utilizando en SE, y cómo estas técnicas pueden afectar a múltiples actores dentro de un proyecto de ML. Para ello, seguiremos una serie de pasos: En primer lugar, extraeremos datos de diferentes comunidades de CQA, sitios web, artículos científicos y encuestas relacionadas con las mejores prácticas de SE para ML. En segundo lugar, analizaremos y clasificaremos esta información para asociar estas técnicas con ejemplos de implementaciones de SE y roles dentro de un proyecto de SE para ML. En tercer lugar, crearemos un chatbot con comportamiento determinista. A través de una conversación sobre el proyecto de implementación de SE para ML, devuelve algunas prácticas a seguir. Finalmente, publicaremos esta investigación en un formato de documentación online, donde las técnicas, el chatbot y la encuesta serán accesibles al público en general.N. Inc., "Notion for personal use," https://www.notion.so/personal.Ingeniero de Sistemas y ComputaciónPregrado27 páginasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería Sistemas y ComputaciónSoftware best practices for machine learningBest Practices of SE for MLTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPMachine learningBuenas prácticasIngeniería de softwareIngenieríaL. I. of Advanced Computer Science (LIACS), "Se-ml/awesome-seml: A curated list of articles that cover the software engineering best practices for building machine learning applications." [Online]. Available: https://github.com/SE-ML/awesome-semlA. Serban, K. van der Blom, H. Hoos, and J. Visser, "Adoption and effects of software engineering best practices in machine learning," in Proceedings of the 14th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), 2020, pp. 1-12."React a javascript library for building user interfaces," https://reactjs.org/.Google. Inc., "Google Dialogflow," https://dialogflow.cloud.google.com/"Ieee standard glossary of software engineering terminology," IEEE Std 610.12-1990, pp. 1¿84, 1990.T. G. Dietterich, Machine Learning. GBR: John Wiley and Sons Ltd., 2003, p. 1056-1059.S. E. Inc, "Stack exchange." [Online]. Available: https://stackexchange.com/aboutS. O. Inc, "Stack overflow." [Online]. Available: https://stackoverflow.com/G. A. Lewis, S. Bellomo, and I. Ozkaya, "Characterizing and detecting mismatch in machine-learning-enabled systems," Mar 2021. [Online]. Available: https://arxiv.org/abs/2103.14101G. A. Lewis, S. Bellomo, and A. Galyardt, "Component mismatches are a critical bottleneck to fielding ai-enabled systems in the public sector," Oct 2019. [Online]. Available: https://arxiv.org/abs/1910.06136C. T. Wolf, "Conceptualizing care in the everyday work practices of machine learning developers: Companion publication of the 2019 on designing interactive systems conference 2019 companion," Jun 2019. [Online]. Available: https://dl.acm.org/doi/10.1145/3301019.3323879A. Tsymbal, "The problem of concept drift: Definitions and related work." [Online]. Available: https://www.researchgate.net/publication/ 228723141 The Problem of Concept Drift Definitions and Related WorkS. Thrun and L. Pratt, "Learning to learn." [Online]. Available: https://doi.org/10.1007/978-1-4615-5529-2N. Inc., "Notion for personal use," https://www.notion.so/personal.M. Company, "The mongodb database tools documentation," https:// www.mongodb.com/docs/database-tools/.O. Foundation., "Node.js web application framework," https://expressjs.com/.M. Inc., "Mongoose," https://mongoosejs.com/.W. corp., "React-chat-widget," https://www.npmjs.com/package/react-chat-widget.Y. Roh, G. Heo, and S. E. Whang, "A survey on data collection for machine learning: a big data-ai integration perspective," IEEE Transactions on Knowledge and Data Engineering, vol. 33, no. 4, pp. 1328¿1347, 2019.S. Schelter, D. Lange, P. Schmidt, M. Celikel, F. Biessmann, and A. Grafberger, "Automating large-scale data quality verification," Proceedings of the VLDB Endowment, vol. 11, no. 12, pp. 1781-1794, 2018.E. Breck, N. Polyzotis, S. Roy, S. Whang, and M. Zinkevich, "Data validation for machine learning." in MLSys, 2019.L. James, "10 deep learning best practices to keep in mind in 2020," https://nanonets.com/blog/10-best-practices-deep-learning/#track-model-experiments, 2021.G. Forman and M. Scholz, "Apples-to-apples in cross-validation studies: pitfalls in classifier performance measurement," Acm Sigkdd Explorations Newsletter, vol. 12, no. 1, pp. 49¿57, 2010.E. Hady, "How do you manage your machine learning experiments?" https://hadyelsahar.medium.com/ how-do-you-manage-your-machine-learning-experiments-ab87508348ac, 2019.J. M. Zhang, M. Harman, L. Ma, and Y. Liu, "Machine learning testing: Survey, landscapes and horizons," IEEE Transactions on Software Engineering, 2020.M. Matthew, "¿How do you manage your machine learning experiments?" https://matthewmcateer.me/blog/machine-learning-technical-debt/, 2020.S. L. Salzberg, "On comparing classifiers: Pitfalls to avoid and a recommended approach," Data mining and knowledge discovery, vol. 1, no. 3, pp. 317-328, 1997.DataRobot, "Best practices in machine learning infrastructure," https://www.datarobot.com/blog/ best-practices-in-machine-learning-infrastructure/, 2019.B. Karlas, M. Interlandi, C. Renggli, W. Wu, C. Zhang, D. Mukunthu Iyap- pan Babu, J. Edwards, C. Lauren, A. Xu, and M. Weimer, "Building continuous integration services for machine learning," in Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 2020, pp. 2407-2415.S. Danilo, A. Wider, and C. Windheuser, "Continuous delivery for machine learning," https://martinfowler.com/articles/cd4ml.html, 2019X. Catherina and D. Tulsee, "Fairness indicators: Scalable infrastructure for fair ml systems," https://ai.googleblog.com/2019/12/ fairness-indicators-scalable.html, 2019.R. Seyffarth, "Machine learning: Moving from experiments to production," https://blog.codecentric.de/en/2019/03/ machine-learning-experiments-production/, 2019.C. Breuel, "Ml ops: Machine learning as an engineering discipline," https://towardsdatascience.com/ ml-ops-machine-learning-as-an-engineering-discipline-b86ca4874a3f, 2020.V. Sridhar, S. Subramanian, D. Arteaga, S. Sundararaman, D. Roselli, and N. Talagala, "Model governance: Reducing the anarchy of production {ML}," in 2018 USENIX Annual Technical Conference (USENIX ATC 18), 2018, pp. 351-358.201817465201814383PublicationCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8908https://repositorio.uniandes.edu.co/bitstreams/c6915668-2e0a-4a32-a693-7e79cebaba37/download0175ea4a2d4caec4bbcc37e300941108MD52TEXTUniandes_thesis_Tobo_Munar_Final.pdf.txtUniandes_thesis_Tobo_Munar_Final.pdf.txtExtracted texttext/plain46461https://repositorio.uniandes.edu.co/bitstreams/dc8a6586-6a0c-4711-aca0-77059b13cfaf/download0014c82da2919ad35f19b3c91390e95fMD55Formato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdf.txtFormato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdf.txtExtracted texttext/plain1163https://repositorio.uniandes.edu.co/bitstreams/bf039df8-fe70-4053-b8f8-327e1bee03ca/download4491fe1afb58beaaef41a73cf7ff2e27MD57THUMBNAILUniandes_thesis_Tobo_Munar_Final.pdf.jpgUniandes_thesis_Tobo_Munar_Final.pdf.jpgIM Thumbnailimage/jpeg7098https://repositorio.uniandes.edu.co/bitstreams/99aa513a-b0e8-4a2e-a20a-d37bba8a3991/download16d482eea01c934fe460f9cd503fb702MD56Formato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdf.jpgFormato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdf.jpgIM Thumbnailimage/jpeg17002https://repositorio.uniandes.edu.co/bitstreams/c9fbc235-7b20-464b-a7f1-209b289fb870/download7600aefb5055553f53827b97bdd80055MD58ORIGINALUniandes_thesis_Tobo_Munar_Final.pdfUniandes_thesis_Tobo_Munar_Final.pdfTrabajo de gradoapplication/pdf2081492https://repositorio.uniandes.edu.co/bitstreams/43f10134-7ff7-4424-8860-c337078cbe9d/downloadacc2fd5717ef4be290ab3e177e6c09eeMD53Formato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdfFormato de autorizacio¿n entrega de tesis-trabajo de grado- Tobo - Munar.pdfHIDEapplication/pdf116541https://repositorio.uniandes.edu.co/bitstreams/77b72371-feb3-438d-80d3-25e720f99e5f/download2c2f2a88ba36894cebea2962e64660aeMD54LICENSElicense.txtlicense.txttext/plain; charset=utf-81810https://repositorio.uniandes.edu.co/bitstreams/38b4d07b-7469-4985-bd6d-c391598d1afc/download5aa5c691a1ffe97abd12c2966efcb8d6MD511992/59023oai:repositorio.uniandes.edu.co:1992/590232023-10-10 17:19:14.477http://creativecommons.org/licenses/by/4.0/open.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coWW8sIGVuIG1pIGNhbGlkYWQgZGUgYXV0b3IgZGVsIHRyYWJham8gZGUgdGVzaXMsIG1vbm9ncmFmw61hIG8gdHJhYmFqbyBkZSBncmFkbywgaGFnbyBlbnRyZWdhIGRlbCBlamVtcGxhciByZXNwZWN0aXZvIHkgZGUgc3VzIGFuZXhvcyBkZSBzZXIgZWwgY2FzbywgZW4gZm9ybWF0byBkaWdpdGFsIHkvbyBlbGVjdHLDs25pY28geSBhdXRvcml6byBhIGxhIFVuaXZlcnNpZGFkIGRlIGxvcyBBbmRlcyBwYXJhIHF1ZSByZWFsaWNlIGxhIHB1YmxpY2FjacOzbiBlbiBlbCBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIG8gZW4gY3VhbHF1aWVyIG90cm8gc2lzdGVtYSBvIGJhc2UgZGUgZGF0b3MgcHJvcGlvIG8gYWplbm8gYSBsYSBVbml2ZXJzaWRhZCB5IHBhcmEgcXVlIGVuIGxvcyB0w6lybWlub3MgZXN0YWJsZWNpZG9zIGVuIGxhIExleSAyMyBkZSAxOTgyLCBMZXkgNDQgZGUgMTk5MywgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgRGVjcmV0byA0NjAgZGUgMTk5NSB5IGRlbcOhcyBub3JtYXMgZ2VuZXJhbGVzIHNvYnJlIGxhIG1hdGVyaWEsIHV0aWxpY2UgZW4gdG9kYXMgc3VzIGZvcm1hcywgbG9zIGRlcmVjaG9zIHBhdHJpbW9uaWFsZXMgZGUgcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSwgdHJhbnNmb3JtYWNpw7NuIHkgZGlzdHJpYnVjacOzbiAoYWxxdWlsZXIsIHByw6lzdGFtbyBww7pibGljbyBlIGltcG9ydGFjacOzbikgcXVlIG1lIGNvcnJlc3BvbmRlbiBjb21vIGNyZWFkb3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50by4gIAoKCkxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgZW1pdGUgZW4gY2FsaWRhZCBkZSBhdXRvciBkZSBsYSBvYnJhIG9iamV0byBkZWwgcHJlc2VudGUgZG9jdW1lbnRvIHkgbm8gY29ycmVzcG9uZGUgYSBjZXNpw7NuIGRlIGRlcmVjaG9zLCBzaW5vIGEgbGEgYXV0b3JpemFjacOzbiBkZSB1c28gYWNhZMOpbWljbyBkZSBjb25mb3JtaWRhZCBjb24gbG8gYW50ZXJpb3JtZW50ZSBzZcOxYWxhZG8uIExhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgaGFjZSBleHRlbnNpdmEgbm8gc29sbyBhIGxhcyBmYWN1bHRhZGVzIHkgZGVyZWNob3MgZGUgdXNvIHNvYnJlIGxhIG9icmEgZW4gZm9ybWF0byBvIHNvcG9ydGUgbWF0ZXJpYWwsIHNpbm8gdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGVsZWN0csOzbmljbywgeSBlbiBnZW5lcmFsIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gCgoKRWwgYXV0b3IsIG1hbmlmaWVzdGEgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsYSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcywgcG9yIGxvIHRhbnRvLCBsYSBvYnJhIGVzIGRlIHN1IGV4Y2x1c2l2YSBhdXRvcsOtYSB5IHRpZW5lIGxhIHRpdHVsYXJpZGFkIHNvYnJlIGxhIG1pc21hLiAKCgpFbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLiAKCg==