Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores

Due to the subjectivity involved currently in pulmonary auscultation process and its diagnostic to evaluate the condition of respiratory airways, this work pretends to evaluate the performance of clustering algorithms such as k-means and DBSCAN to perform a computational analysis of lung sounds aimi...

Full description

Autores:
Sosa, Germán D
Velásquez Clavijo, Fabián
Tipo de recurso:
Article of journal
Fecha de publicación:
2015
Institución:
Corporación Universidad de la Costa
Repositorio:
REDICUC - Repositorio CUC
Idioma:
eng
OAI Identifier:
oai:repositorio.cuc.edu.co:11323/1564
Acceso en línea:
https://hdl.handle.net/11323/1564
https://doi.org/10.17981/ingecuc.11.1.2015.05
https://repositorio.cuc.edu.co/
Palabra clave:
Sonido Pulmonar
Estertores
Sonidos Vesiculares
Sonidos Adventicios
Transformada Wavelet
Descomposición Wavelet
symlet
Clustering
k-means
DBSCAN
log-ennergy
Pulmonary sound
Rales
Vesicular sounds
Adventitious Sounds  
Wavelet Transform
Wavelet decomposition
Rights
openAccess
License
http://purl.org/coar/access_right/c_abf2
id RCUC2_1694552d86d023398710a209411913d3
oai_identifier_str oai:repositorio.cuc.edu.co:11323/1564
network_acronym_str RCUC2
network_name_str REDICUC - Repositorio CUC
repository_id_str
dc.title.eng.fl_str_mv Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
dc.title.translated.eng.fl_str_mv Application of clustering techniques for lung sounds to improve interpretability and detection of crackles
title Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
spellingShingle Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
Sonido Pulmonar
Estertores
Sonidos Vesiculares
Sonidos Adventicios
Transformada Wavelet
Descomposición Wavelet
symlet
Clustering
k-means
DBSCAN
log-ennergy
Pulmonary sound
Rales
Vesicular sounds
Adventitious Sounds  
Wavelet Transform
Wavelet decomposition
title_short Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
title_full Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
title_fullStr Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
title_full_unstemmed Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
title_sort Aplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertores
dc.creator.fl_str_mv Sosa, Germán D
Velásquez Clavijo, Fabián
dc.contributor.author.spa.fl_str_mv Sosa, Germán D
Velásquez Clavijo, Fabián
dc.subject.eng.fl_str_mv Sonido Pulmonar
Estertores
Sonidos Vesiculares
Sonidos Adventicios
Transformada Wavelet
Descomposición Wavelet
symlet
Clustering
k-means
DBSCAN
log-ennergy
Pulmonary sound
Rales
Vesicular sounds
Adventitious Sounds  
Wavelet Transform
Wavelet decomposition
topic Sonido Pulmonar
Estertores
Sonidos Vesiculares
Sonidos Adventicios
Transformada Wavelet
Descomposición Wavelet
symlet
Clustering
k-means
DBSCAN
log-ennergy
Pulmonary sound
Rales
Vesicular sounds
Adventitious Sounds  
Wavelet Transform
Wavelet decomposition
description Due to the subjectivity involved currently in pulmonary auscultation process and its diagnostic to evaluate the condition of respiratory airways, this work pretends to evaluate the performance of clustering algorithms such as k-means and DBSCAN to perform a computational analysis of lung sounds aiming to visualize a representation of such sounds that highlights the presence of crackles and the energy associated with them. In order to achieve that goal, Wavelet analysis techniques were used in contrast to traditional frequency analysis given the similarity between the typical waveform for a crackle and the wavelet sym4. Once the lung sound signal with isolated crackles is obtained, the clustering process groups crackles in regions of high density and provides visualization that might be useful for the diagnostic made by an expert. Evaluation suggests that k-means groups crackle more effective than DBSCAN in terms of generated clusters.
publishDate 2015
dc.date.issued.none.fl_str_mv 2015-01-05
dc.date.accessioned.none.fl_str_mv 2018-11-20T23:36:40Z
dc.date.available.none.fl_str_mv 2018-11-20T23:36:40Z
dc.type.spa.fl_str_mv Artículo de revista
dc.type.coar.fl_str_mv http://purl.org/coar/resource_type/c_2df8fbb1
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_6501
dc.type.content.spa.fl_str_mv Text
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/article
dc.type.redcol.spa.fl_str_mv http://purl.org/redcol/resource_type/ART
dc.type.version.spa.fl_str_mv info:eu-repo/semantics/acceptedVersion
format http://purl.org/coar/resource_type/c_6501
status_str acceptedVersion
dc.identifier.citation.spa.fl_str_mv Sosa Ramírez, G., & Velásquez Clavijo, F. (2015). Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores. INGE CUC, 11(1), 53-62. Recuperado a partir de https://revistascientificas.cuc.edu.co/ingecuc/article/view/366
dc.identifier.issn.spa.fl_str_mv 0122-6517, 2382-4700 electrónico
dc.identifier.uri.spa.fl_str_mv https://hdl.handle.net/11323/1564
dc.identifier.url.spa.fl_str_mv https://doi.org/10.17981/ingecuc.11.1.2015.05
dc.identifier.doi.spa.fl_str_mv 10.17981/ingecuc.11.1.2015.05
dc.identifier.eissn.spa.fl_str_mv 2382-4700
dc.identifier.instname.spa.fl_str_mv Corporación Universidad de la Costa
dc.identifier.pissn.spa.fl_str_mv 0122-6517
dc.identifier.reponame.spa.fl_str_mv REDICUC - Repositorio CUC
dc.identifier.repourl.spa.fl_str_mv https://repositorio.cuc.edu.co/
identifier_str_mv Sosa Ramírez, G., & Velásquez Clavijo, F. (2015). Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores. INGE CUC, 11(1), 53-62. Recuperado a partir de https://revistascientificas.cuc.edu.co/ingecuc/article/view/366
0122-6517, 2382-4700 electrónico
10.17981/ingecuc.11.1.2015.05
2382-4700
Corporación Universidad de la Costa
0122-6517
REDICUC - Repositorio CUC
url https://hdl.handle.net/11323/1564
https://doi.org/10.17981/ingecuc.11.1.2015.05
https://repositorio.cuc.edu.co/
dc.language.iso.none.fl_str_mv eng
language eng
dc.relation.ispartofseries.spa.fl_str_mv INGE CUC; Vol. 11, Núm. 1 (2015)
dc.relation.ispartofjournal.spa.fl_str_mv INGE CUC
INGE CUC
dc.relation.references.spa.fl_str_mv [1] W. H. Organization et al., “The top 10 causes of death: The 10 leading causes of death in the world, 2000 and 2011,” 2013.
[2] M. Munakata, H. Ukita, I. Doi, Y. Ohtsuka, Y. Masaki, Y. Homma, and Y. Kawakami, “Spectral and waveform characteristics of fine and coarse crackles.” Thorax, vol. 46, no. 9, pp. 651–657, 1991. DOI:10.1136/thx.46.9.651
[3] M. Yeginer and Y. P. Kahya, “Elimination of vesicular sounds from pulmonary crackle waveforms,” Computer methods and programs in biomedicine, vol. 89, no. 1, pp. 1–13, 2008. DOI:10.1016/j.cmpb.2007.10.002
[4] T. Kaisia, A. Sovijarvi, P. Piirila, H. Rajala, S. Haltsonen, and T. Rosqvist, “Validated method for automatic detection of lung sound crackles,” Medical and Biological Engineering and Computing, vol. 29, no. 5, pp. 517–521, 1991. DOI:10.1007/BF02442324
[5] M. Yeginer and Y. P. Kahya, “Probing the existence of medium pulmonary crackles via model-based clustering,” Computers in biology and medicine, vol. 40, no. 9, pp. 765–774, 2010. DOI:10.1016/j.compbiomed.2010.07.004
[6] M. Paoletti, G. Camiciottoli, E. Meoni, F. Bigazzi, L. Cestelli, M. Pistolesi, and C. Marchesi, “Explorative data analysis techniques and unsupervised clustering methods to support clinical assessment of chronic obstructive pulmonary disease (COPD) phenotypes,” Journal of biomedical informatics, vol. 42, no. 6, pp. 1013–1021, 2009. DOI:10.1016/j.jbi.2009.05.008
[7] X. Lu and M. Bahoura, “An automatic system for crackles detection and classification,” in Electrical and Computer Engineering, 2006. CCECE’06. Canadian Conference. IEEE, 2006, pp. 725–729. DOI:10.1109/CCECE.2006.277698
[8] M. Bahoura and X. Lu, “Separation of crackles from vesicular sounds using wavelet packet transform,” in Acoustics, Speech and Signal Processing, 2006. ICASSP 2006 Proceedings. 2006 IEEE International Conference, vol. 2. IEEE, 2006, pp. II–II. DOI:10.1109/ICASSP.2006.1660533
[9] L. J. Hadjileontiadis and S. M. Panas, “Separation of discontinuous adventitious sounds from vesicular sounds using a wavelet-based filter,” Biomedical Engineering, IEEE Transactions on, vol. 44, no. 12, pp. 1269–1281, 1997. DOI:10.1109/10.649999
[10] S. Mallat, A wavelet tour of signal processing. Academic Press, 1999.
[11] F. Pedregosa et al., “Scikit-learn: Machine learning in Python,” J Mach Learn Res, vol. 12, pp. 2825–2830, 2011.
[12] E. Alpaydin, Introduction to machine learning. MIT press, 2004.
[13] J. J. Ward, “Rale lung sounds 3.1 professional edition,” Respiratory Care, vol. 50, no. 10, pp. 1385–1388, 2005.
[14] D. Mazzoni, M. Brubeck, and J. Haberman, “Audacity: Free audio editor and recorder”. [En línea] Disponible en: http://audacity.sourceforge.net, 2005.
dc.relation.citationissue.spa.fl_str_mv 1
dc.relation.citationvolume.spa.fl_str_mv 11
dc.relation.ispartofjournalabbrev.spa.fl_str_mv INGE CUC
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
eu_rights_str_mv openAccess
rights_invalid_str_mv http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv application/pdf
dc.publisher.spa.fl_str_mv Corporación Universidad de la Costa
dc.source.spa.fl_str_mv INGE CUC
institution Corporación Universidad de la Costa
dc.source.url.spa.fl_str_mv https://revistascientificas.cuc.edu.co/ingecuc/article/view/366
bitstream.url.fl_str_mv https://repositorio.cuc.edu.co/bitstreams/6a9ee435-1e09-41a2-96d7-249752795249/download
https://repositorio.cuc.edu.co/bitstreams/213ac4cd-1670-4afa-9f9e-f8f3d2be8cbd/download
https://repositorio.cuc.edu.co/bitstreams/372cbdfd-83be-440a-bf7b-49aeb6fede58/download
https://repositorio.cuc.edu.co/bitstreams/8e5bfd45-b98a-4349-97bb-a0990c74f57f/download
bitstream.checksum.fl_str_mv 62e66148cbacbfbd7f593752ddbbdbe2
8a4605be74aa9ea9d79846c1fba20a33
d3734efe2aa0057741a8d624cd183386
7ea04342be43cf4a5549bc61b4d8abc3
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio de la Universidad de la Costa CUC
repository.mail.fl_str_mv repdigital@cuc.edu.co
_version_ 1811760816171515904
spelling Sosa, Germán DVelásquez Clavijo, Fabián2018-11-20T23:36:40Z2018-11-20T23:36:40Z2015-01-05Sosa Ramírez, G., & Velásquez Clavijo, F. (2015). Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores. INGE CUC, 11(1), 53-62. Recuperado a partir de https://revistascientificas.cuc.edu.co/ingecuc/article/view/3660122-6517, 2382-4700 electrónicohttps://hdl.handle.net/11323/1564https://doi.org/10.17981/ingecuc.11.1.2015.0510.17981/ingecuc.11.1.2015.052382-4700Corporación Universidad de la Costa0122-6517REDICUC - Repositorio CUChttps://repositorio.cuc.edu.co/Due to the subjectivity involved currently in pulmonary auscultation process and its diagnostic to evaluate the condition of respiratory airways, this work pretends to evaluate the performance of clustering algorithms such as k-means and DBSCAN to perform a computational analysis of lung sounds aiming to visualize a representation of such sounds that highlights the presence of crackles and the energy associated with them. In order to achieve that goal, Wavelet analysis techniques were used in contrast to traditional frequency analysis given the similarity between the typical waveform for a crackle and the wavelet sym4. Once the lung sound signal with isolated crackles is obtained, the clustering process groups crackles in regions of high density and provides visualization that might be useful for the diagnostic made by an expert. Evaluation suggests that k-means groups crackle more effective than DBSCAN in terms of generated clusters.Debido a la subjetividad que involucra actualmente el proceso de auscultación pulmonar y su diagnóstico para evaluar la condición de las vías respiratorias de un paciente, este trabajo busca evaluar el desempeño de los algoritmos de clustering: k-means y DBSCAN para efectuar un análisis computacional de sonidos pulmonares con el objetivo de visualizar una representación de dichos sonidos que exalte la presencia de estertores y la energía contenida en ellos. Para este fin, se emplearon técnicas de descomposición y análisis Wavelet a diferencia del tradicional análisis en frecuencia dada la similitud entre la forma de onda de un estertor típico y la wavelet sym4. Obtenida la señal de sonido pulmonar con estertores aislados, el proceso de clustering agrupa estertores en regiones de alta presencia y ofrece una visualización que puede ser de utilidad para el diagnóstico hecho por un experto. La evaluación hecha sugiere que k-means agrupa conjuntos de estertores de forma más efectiva que DBSCAN en términos de clusters generados.Sosa, Germán DVelásquez Clavijo, Fabiánapplication/pdfengCorporación Universidad de la CostaINGE CUC; Vol. 11, Núm. 1 (2015)INGE CUCINGE CUC[1] W. H. Organization et al., “The top 10 causes of death: The 10 leading causes of death in the world, 2000 and 2011,” 2013.[2] M. Munakata, H. Ukita, I. Doi, Y. Ohtsuka, Y. Masaki, Y. Homma, and Y. Kawakami, “Spectral and waveform characteristics of fine and coarse crackles.” Thorax, vol. 46, no. 9, pp. 651–657, 1991. DOI:10.1136/thx.46.9.651[3] M. Yeginer and Y. P. Kahya, “Elimination of vesicular sounds from pulmonary crackle waveforms,” Computer methods and programs in biomedicine, vol. 89, no. 1, pp. 1–13, 2008. DOI:10.1016/j.cmpb.2007.10.002[4] T. Kaisia, A. Sovijarvi, P. Piirila, H. Rajala, S. Haltsonen, and T. Rosqvist, “Validated method for automatic detection of lung sound crackles,” Medical and Biological Engineering and Computing, vol. 29, no. 5, pp. 517–521, 1991. DOI:10.1007/BF02442324[5] M. Yeginer and Y. P. Kahya, “Probing the existence of medium pulmonary crackles via model-based clustering,” Computers in biology and medicine, vol. 40, no. 9, pp. 765–774, 2010. DOI:10.1016/j.compbiomed.2010.07.004[6] M. Paoletti, G. Camiciottoli, E. Meoni, F. Bigazzi, L. Cestelli, M. Pistolesi, and C. Marchesi, “Explorative data analysis techniques and unsupervised clustering methods to support clinical assessment of chronic obstructive pulmonary disease (COPD) phenotypes,” Journal of biomedical informatics, vol. 42, no. 6, pp. 1013–1021, 2009. DOI:10.1016/j.jbi.2009.05.008[7] X. Lu and M. Bahoura, “An automatic system for crackles detection and classification,” in Electrical and Computer Engineering, 2006. CCECE’06. Canadian Conference. IEEE, 2006, pp. 725–729. DOI:10.1109/CCECE.2006.277698[8] M. Bahoura and X. Lu, “Separation of crackles from vesicular sounds using wavelet packet transform,” in Acoustics, Speech and Signal Processing, 2006. ICASSP 2006 Proceedings. 2006 IEEE International Conference, vol. 2. IEEE, 2006, pp. II–II. DOI:10.1109/ICASSP.2006.1660533[9] L. J. Hadjileontiadis and S. M. Panas, “Separation of discontinuous adventitious sounds from vesicular sounds using a wavelet-based filter,” Biomedical Engineering, IEEE Transactions on, vol. 44, no. 12, pp. 1269–1281, 1997. DOI:10.1109/10.649999[10] S. Mallat, A wavelet tour of signal processing. Academic Press, 1999.[11] F. Pedregosa et al., “Scikit-learn: Machine learning in Python,” J Mach Learn Res, vol. 12, pp. 2825–2830, 2011.[12] E. Alpaydin, Introduction to machine learning. MIT press, 2004.[13] J. J. Ward, “Rale lung sounds 3.1 professional edition,” Respiratory Care, vol. 50, no. 10, pp. 1385–1388, 2005.[14] D. Mazzoni, M. Brubeck, and J. Haberman, “Audacity: Free audio editor and recorder”. [En línea] Disponible en: http://audacity.sourceforge.net, 2005.111INGE CUCINGE CUChttps://revistascientificas.cuc.edu.co/ingecuc/article/view/366Sonido PulmonarEstertoresSonidos VesicularesSonidos AdventiciosTransformada WaveletDescomposición WaveletsymletClusteringk-meansDBSCANlog-ennergyPulmonary soundRalesVesicular soundsAdventitious Sounds  Wavelet TransformWavelet decompositionAplicación de técnicas de clustering en sonidos adventicios para mejorar la interpretabilidad y detección de estertoresApplication of clustering techniques for lung sounds to improve interpretability and detection of cracklesArtículo de revistahttp://purl.org/coar/resource_type/c_6501http://purl.org/coar/resource_type/c_2df8fbb1Textinfo:eu-repo/semantics/articlehttp://purl.org/redcol/resource_type/ARTinfo:eu-repo/semantics/acceptedVersioninfo:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2PublicationORIGINAL5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdf5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdfapplication/pdf1697505https://repositorio.cuc.edu.co/bitstreams/6a9ee435-1e09-41a2-96d7-249752795249/download62e66148cbacbfbd7f593752ddbbdbe2MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://repositorio.cuc.edu.co/bitstreams/213ac4cd-1670-4afa-9f9e-f8f3d2be8cbd/download8a4605be74aa9ea9d79846c1fba20a33MD52THUMBNAIL5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdf.jpg5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdf.jpgimage/jpeg55537https://repositorio.cuc.edu.co/bitstreams/372cbdfd-83be-440a-bf7b-49aeb6fede58/downloadd3734efe2aa0057741a8d624cd183386MD54TEXT5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdf.txt5. Aplicación de Técnicas de Clustering en Sonidos Adventicios para Mejorar la Interpretabilidad y Detección de Estertores.pdf.txttext/plain28307https://repositorio.cuc.edu.co/bitstreams/8e5bfd45-b98a-4349-97bb-a0990c74f57f/download7ea04342be43cf4a5549bc61b4d8abc3MD5511323/1564oai:repositorio.cuc.edu.co:11323/15642024-09-17 12:49:24.535open.accesshttps://repositorio.cuc.edu.coRepositorio de la Universidad de la Costa CUCrepdigital@cuc.edu.coTk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=