Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta

El presente documento expone el desarrollo de un algoritmo orientado a esquemas de robótica asistencial trabajando en ambientes multiherramientas. Esto se refiere a un robot de tipo antropomórfico que se desenvuelve en un área de trabajo compartida por una persona, a quien asistirá en tareas como en...

Full description

Autores:
Tipo de recurso:
Doctoral thesis
Fecha de publicación:
2018
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/14483
Acceso en línea:
http://hdl.handle.net/11349/14483
Palabra clave:
Aprendizaje profundo
Visión de máquina
Robótica asistencial
Reconocimiento de patrones
Doctorado en Ingeniería - Tesis y disertaciones académicas
Robótica asistencial
Algoritmos
Robots
Deep learning
Machine vision
Assistance robots
Pattern recognition
Rights
License
Atribución-NoComercial-SinDerivadas 4.0 Internacional
id UDISTRITA2_12fba8235b4339a03efc14de22101c03
oai_identifier_str oai:repository.udistrital.edu.co:11349/14483
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
dc.title.titleenglish.spa.fl_str_mv structuring of a deep learning based algorithm for training of assistant robots in recognition of objects for multi tool platforms
title Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
spellingShingle Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
Aprendizaje profundo
Visión de máquina
Robótica asistencial
Reconocimiento de patrones
Doctorado en Ingeniería - Tesis y disertaciones académicas
Robótica asistencial
Algoritmos
Robots
Deep learning
Machine vision
Assistance robots
Pattern recognition
title_short Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
title_full Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
title_fullStr Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
title_full_unstemmed Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
title_sort Estructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramienta
dc.contributor.advisor.spa.fl_str_mv Ovalle Martínez, Diana Marcela
Avilés Sánchez, Oscar Fernando
dc.subject.spa.fl_str_mv Aprendizaje profundo
Visión de máquina
Robótica asistencial
Reconocimiento de patrones
topic Aprendizaje profundo
Visión de máquina
Robótica asistencial
Reconocimiento de patrones
Doctorado en Ingeniería - Tesis y disertaciones académicas
Robótica asistencial
Algoritmos
Robots
Deep learning
Machine vision
Assistance robots
Pattern recognition
dc.subject.lemb.spa.fl_str_mv Doctorado en Ingeniería - Tesis y disertaciones académicas
Robótica asistencial
Algoritmos
Robots
dc.subject.keyword.spa.fl_str_mv Deep learning
Machine vision
Assistance robots
Pattern recognition
description El presente documento expone el desarrollo de un algoritmo orientado a esquemas de robótica asistencial trabajando en ambientes multiherramientas. Esto se refiere a un robot de tipo antropomórfico que se desenvuelve en un área de trabajo compartida por una persona, a quien asistirá en tareas como entrega de herramientas. Para ello el robot debe identificar qué herramienta desea tomar dentro de un grupo de herramientas, lo que corresponde a una labor de reconocimiento de patrones. Cada herramienta presenta características particulares que deben ser aprendidas mediante un algoritmo de reconocimiento. En este trabajo se expone una dificultad en dicho reconocimiento aún no abordada en trabajos similares y que surgió de los desarrollos propios de robótica asistencial realizados previamente. Al buscar reconocer una herramienta dentro de un grupo, el sistema de reconocimiento de patrones debe aprender las características que exhibe cada herramienta. Típicamente esta tarea se realiza mediante la captura de la imagen del grupo de herramientas por medio de una cámara, desde una posición dada, aprendiendo herramienta por herramienta. Una vez reconocida y ubicada espacialmente la herramienta, se emplean algoritmos de planeación de trayectorias, que por medio de la cinemática del robot, permiten el desplazamiento de su efector final hasta la herramienta, pero si se presenta el caso que en el área de trabajo un usuario interrumpe dicha trayectoria, el robot debe buscar una solución. En la actualidad el camino ha sido detener el robot y esperar a que termine la interrupción, al buscar mejorar esta solución, donde el robot sea capaz de generar la evasión de lo que le obstruye, se debe buscar una nueva trayectoria, desde el nuevo punto en que se halla (robot desplazado) hasta la herramienta. Es aquí donde se presenta el problema de reconocimiento, desde la nueva posición se debe capturar la información de la herramienta para generar el nuevo desplazamiento, donde al cambiar el punto de captura, por cercanía o lejanía, la herramienta presenta más o menos características, lo que varía el grado de reconocimiento desde el punto de aprendizaje inicial, dificultando el reconocimiento y confundiendo las herramientas presentes en la escena. Esta tarea desde puntos estáticos se ha trabajado ampliamente, pero desde esta perspectiva dinámica no presenta aún soluciones, que se hacen necesarias para mejorar la interacción hombre máquina, tal cual como lo hace un ser humano, que cambia la trayectoria a su destino cuando un obstáculo se detecta.
publishDate 2018
dc.date.created.spa.fl_str_mv 2018-10-08
dc.date.accessioned.none.fl_str_mv 2019-03-27T16:04:12Z
dc.date.available.none.fl_str_mv 2019-03-27T16:04:12Z
dc.type.degree.spa.fl_str_mv Investigación-Innovación
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/doctoralThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_db06
format http://purl.org/coar/resource_type/c_db06
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/14483
url http://hdl.handle.net/11349/14483
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional
http://creativecommons.org/licenses/by-nc-nd/4.0/
Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv http://repository.udistrital.edu.co/bitstream/11349/14483/6/Jim%c3%a9nezMorenoRobinson2018.pdf.jpg
http://repository.udistrital.edu.co/bitstream/11349/14483/1/Jim%c3%a9nezMorenoRobinson2018.pdf
http://repository.udistrital.edu.co/bitstream/11349/14483/2/license_url
http://repository.udistrital.edu.co/bitstream/11349/14483/3/license_text
http://repository.udistrital.edu.co/bitstream/11349/14483/4/license_rdf
http://repository.udistrital.edu.co/bitstream/11349/14483/5/license.txt
bitstream.checksum.fl_str_mv d4baf8b9d16e6569f417480f7cde76c7
d0a81e80907a4fad90e765b80ed6afcc
924993ce0b3ba389f79f32a1b2735415
d41d8cd98f00b204e9800998ecf8427e
d41d8cd98f00b204e9800998ecf8427e
da5c6a3ca62d5dd4853000a60fee7083
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad Distrital - RIUD
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1803712749938671616
spelling Ovalle Martínez, Diana MarcelaAvilés Sánchez, Oscar FernandoJiménez Moreno, Robinson2019-03-27T16:04:12Z2019-03-27T16:04:12Z2018-10-08http://hdl.handle.net/11349/14483El presente documento expone el desarrollo de un algoritmo orientado a esquemas de robótica asistencial trabajando en ambientes multiherramientas. Esto se refiere a un robot de tipo antropomórfico que se desenvuelve en un área de trabajo compartida por una persona, a quien asistirá en tareas como entrega de herramientas. Para ello el robot debe identificar qué herramienta desea tomar dentro de un grupo de herramientas, lo que corresponde a una labor de reconocimiento de patrones. Cada herramienta presenta características particulares que deben ser aprendidas mediante un algoritmo de reconocimiento. En este trabajo se expone una dificultad en dicho reconocimiento aún no abordada en trabajos similares y que surgió de los desarrollos propios de robótica asistencial realizados previamente. Al buscar reconocer una herramienta dentro de un grupo, el sistema de reconocimiento de patrones debe aprender las características que exhibe cada herramienta. Típicamente esta tarea se realiza mediante la captura de la imagen del grupo de herramientas por medio de una cámara, desde una posición dada, aprendiendo herramienta por herramienta. Una vez reconocida y ubicada espacialmente la herramienta, se emplean algoritmos de planeación de trayectorias, que por medio de la cinemática del robot, permiten el desplazamiento de su efector final hasta la herramienta, pero si se presenta el caso que en el área de trabajo un usuario interrumpe dicha trayectoria, el robot debe buscar una solución. En la actualidad el camino ha sido detener el robot y esperar a que termine la interrupción, al buscar mejorar esta solución, donde el robot sea capaz de generar la evasión de lo que le obstruye, se debe buscar una nueva trayectoria, desde el nuevo punto en que se halla (robot desplazado) hasta la herramienta. Es aquí donde se presenta el problema de reconocimiento, desde la nueva posición se debe capturar la información de la herramienta para generar el nuevo desplazamiento, donde al cambiar el punto de captura, por cercanía o lejanía, la herramienta presenta más o menos características, lo que varía el grado de reconocimiento desde el punto de aprendizaje inicial, dificultando el reconocimiento y confundiendo las herramientas presentes en la escena. Esta tarea desde puntos estáticos se ha trabajado ampliamente, pero desde esta perspectiva dinámica no presenta aún soluciones, que se hacen necesarias para mejorar la interacción hombre máquina, tal cual como lo hace un ser humano, que cambia la trayectoria a su destino cuando un obstáculo se detecta.This document presents the development of an algorithm oriented to assistive robotics schemes working in multi-tool environments. This refers to an anthropomorphic robot that develops in a work area shared with a person, who will be assisted in tasks such as delivery of tools. For this, the robot must identify which tool they want to take within a group of tools, which corresponds to a work of pattern recognition. Each tool has particular characteristics that must be learned through a recognition algorithm. In this work, a difficulty in this recognition is exposed, that has not yet been addressed in similar works and that arose from the own developments of assistive robotics previously carried out. When looking to recognize a tool within a group, the pattern recognition system must learn the characteristics that each tool exhibits. Typically, this task is done by capturing the image of the tool group by means of a camera, from a given position, learning tool by tool. Once the tool is recognized and located spatially, trajectory planning algorithms are used, which by means of the robot's kinematics, allow the movement of its end effector towards the tool, but if the case arises that a user interrupts this path in the work area, the robot must look for a solution. Nowadays, the most used method has been to stop the robot and wait for the interruption to end, when seeking to improve this solution, where the robot is capable of generating evasion of what is obstructing it, a new trajectory must be sought, from the new point where it is located (displaced robot) to the tool. This is where the problem of recognition is presented, from the new position the information of the tool must be captured to generate the new trajectory, where, when changing the capture point by proximity or distance, the tool presents more or less characteristics, which varies the degree of recognition from the point of initial learning, making it difficult to recognize and confusing the tools present in the scene. This task from static points has been worked extensively, but from this dynamic perspective it does not yet present solutions, which are necessary to improve human-machine interaction, just as a human being does, that changes the trajectory to its destination when an obstacle is detected.pdfspaAtribución-NoComercial-SinDerivadas 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Aprendizaje profundoVisión de máquinaRobótica asistencialReconocimiento de patronesDoctorado en Ingeniería - Tesis y disertaciones académicasRobótica asistencialAlgoritmosRobotsDeep learningMachine visionAssistance robotsPattern recognitionEstructuración de un algoritmo basado en deep learning para entrenamiento de robots asistentes en reconocimiento de objetos para plataformas multiherramientastructuring of a deep learning based algorithm for training of assistant robots in recognition of objects for multi tool platformsInvestigación-Innovacióninfo:eu-repo/semantics/doctoralThesishttp://purl.org/coar/resource_type/c_db06THUMBNAILJiménezMorenoRobinson2018.pdf.jpgJiménezMorenoRobinson2018.pdf.jpgIM Thumbnailimage/jpeg6908http://repository.udistrital.edu.co/bitstream/11349/14483/6/Jim%c3%a9nezMorenoRobinson2018.pdf.jpgd4baf8b9d16e6569f417480f7cde76c7MD56open accessORIGINALJiménezMorenoRobinson2018.pdfJiménezMorenoRobinson2018.pdfTesis de Doctoradoapplication/pdf17747384http://repository.udistrital.edu.co/bitstream/11349/14483/1/Jim%c3%a9nezMorenoRobinson2018.pdfd0a81e80907a4fad90e765b80ed6afccMD51open accessCC-LICENSElicense_urllicense_urltext/plain; charset=utf-849http://repository.udistrital.edu.co/bitstream/11349/14483/2/license_url924993ce0b3ba389f79f32a1b2735415MD52open accesslicense_textlicense_texttext/html; charset=utf-80http://repository.udistrital.edu.co/bitstream/11349/14483/3/license_textd41d8cd98f00b204e9800998ecf8427eMD53open accesslicense_rdflicense_rdfapplication/rdf+xml; charset=utf-80http://repository.udistrital.edu.co/bitstream/11349/14483/4/license_rdfd41d8cd98f00b204e9800998ecf8427eMD54open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87163http://repository.udistrital.edu.co/bitstream/11349/14483/5/license.txtda5c6a3ca62d5dd4853000a60fee7083MD55open access11349/14483oai:repository.udistrital.edu.co:11349/144832023-06-09 14:23:48.469open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMClTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGRlIHVzbyBwYXJhIHB1YmxpY2FjacOzbiBkZSBvYnJhcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChSSVVEKQoKQ29tbyB0aXR1bGFyKGVzKSBkZWwob3MpIGRlcmVjaG8ocykgZGUgYXV0b3IsIGNvbmZpZXJvIChlcmltb3MpIGEgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMgKGVuIGFkZWxhbnRlLCBMQSBVTklWRVJTSURBRCkgdW5hIGxpY2VuY2lhIHBhcmEgdXNvIG5vIGV4Y2x1c2l2YSwgbGltaXRhZGEgeSBncmF0dWl0YSBzb2JyZSBsYSBvYnJhIHF1ZSBpbnRlZ3JhcsOhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgKGVuIGFkZWxhbnRlLCBSSVVEKSwgZGUgYWN1ZXJkbyBhIGxhcyBzaWd1aWVudGVzIHJlZ2xhcywgbGFzIGN1YWxlcyBkZWNsYXJvIChhbW9zKSBjb25vY2VyIHkgYWNlcHRhcjoKCmEpCUVzdGFyw6EgdmlnZW50ZSBhIHBhcnRpciBkZSBsYSBmZWNoYSBlbiBxdWUgc2UgaW5jbHV5YSBlbiBlbCBSSVVEIHkgaGFzdGEgcG9yIHVuIHBsYXpvIGRlIGRpZXogKDEwKSBBw7FvcywgcHJvcnJvZ2FibGUgaW5kZWZpbmlkYW1lbnRlIHBvciBlbCB0aWVtcG8gcXVlIGR1cmUgZWwgZGVyZWNobyBQYXRyaW1vbmlhbCBkZWwgYXV0b3I7IGxhIGN1YWwgcG9kcsOhIGRhcnNlIHBvciB0ZXJtaW5hZGEgcHJldmlhIHNvbGljaXR1ZCBhIExBIFVOSVZFUlNJREFEIHBvciBlc2NyaXRvIGNvbiB1bmEgYW50ZWxhY2nDs24gZGUgZG9zICgyKSBtZXNlcyBhbnRlcyBkZWwgdmVuY2ltaWVudG8gZGVsIHBsYXpvIGluaWNpYWwgbyBlbCBkZSBzdShzKSBwcsOzcnJvZ2EocykuICAKCmIpCUxBIFVOSVZFUlNJREFEIHBvZHLDoSBwdWJsaWNhciBsYSBvYnJhIGVuIGxhcyBkaXN0aW50YXMgdmVyc2lvbmVzIHJlcXVlcmlkYXMgcG9yIGVsIFJJVUQgKGRpZ2l0YWwsIGltcHJlc28sIGVsZWN0csOzbmljbyB1IG90cm8gbWVkaW8gY29ub2NpZG8gbyBwb3IgY29ub2NlcikgTEEgVU5JVkVSU0lEQUQgbm8gc2Vyw6EgcmVzcG9uc2FibGUgZW4gZWwgZXZlbnRvIHF1ZSBlbCBkb2N1bWVudG8gYXBhcmV6Y2EgcmVmZXJlbmNpYWRvIGVuIG1vdG9yZXMgZGUgYsO6c3F1ZWRhIG8gcmVwb3NpdG9yaW9zIGRpZmVyZW50ZXMgYWwgUklVRCwgdW5hIHZleiBlbChvcykgYXV0b3IoZXMpIHNvbGljaXRlbiBzdSBlbGltaW5hY2nDs24gZGVsIFJJVUQsIGRhZG8gcXVlIGxhIG1pc21hIHNlcsOhIHB1YmxpY2FkYSBlbiBJbnRlcm5ldC4gCgpjKQlMYSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgYSB0w610dWxvIGdyYXR1aXRvLCBwb3IgbG8gdGFudG8sIGxvcyBhdXRvcmVzIHJlbnVuY2lhbiBhIHJlY2liaXIgYmVuZWZpY2lvIGFsZ3VubyBwb3IgbGEgcHVibGljYWNpw7NuLCBkaXN0cmlidWNpw7NuLCBjb211bmljYWNpw7NuIHDDumJsaWNhIHkgY3VhbHF1aWVyIG90cm8gdXNvIHF1ZSBzZSBoYWdhIGVuIGxvcyB0w6lybWlub3MgZGUgbGEgcHJlc2VudGUgbGljZW5jaWEgeSBkZSBsYSBsaWNlbmNpYSBkZSB1c28gY29uIHF1ZSBzZSBwdWJsaWNhIChDcmVhdGl2ZSBDb21tb25zKS4KCmQpCUxvcyBjb250ZW5pZG9zIHB1YmxpY2Fkb3MgZW4gZWwgUklVRCBzb24gb2JyYShzKSBvcmlnaW5hbChlcykgc29icmUgbGEgY3VhbChlcykgZWwob3MpIGF1dG9yKGVzKSBjb21vIHRpdHVsYXJlcyBkZSBsb3MgZGVyZWNob3MgZGUgYXV0b3IsIGFzdW1lbiB0b3RhbCByZXNwb25zYWJpbGlkYWQgcG9yIGVsIGNvbnRlbmlkbyBkZSBzdSBvYnJhIGFudGUgTEEgVU5JVkVSU0lEQUQgeSBhbnRlIHRlcmNlcm9zLiBFbiB0b2RvIGNhc28gTEEgVU5JVkVSU0lEQUQgc2UgY29tcHJvbWV0ZSBhIGluZGljYXIgc2llbXByZSBsYSBhdXRvcsOtYSBpbmNsdXllbmRvIGVsIG5vbWJyZSBkZWwgYXV0b3IgeSBsYSBmZWNoYSBkZSBwdWJsaWNhY2nDs24uCgplKQlMQSBVTklWRVJTSURBRCBwb2Ryw6EgaW5jbHVpciBsYSBvYnJhIGVuIGxvcyDDrW5kaWNlcyB5IGJ1c2NhZG9yZXMgcXVlIGVzdGltZW4gbmVjZXNhcmlvcyBwYXJhIG1heGltaXphciBsYSB2aXNpYmlsaWRhZCBlbCB1c28geSBlbCBpbXBhY3RvIGRlIGxhIHByb2R1Y2Npw7NuIGNpZW50w61maWNhLCBhcnTDrXN0aWNhIHkgYWNhZMOpbWljYSBlbiBsYSBjb211bmlkYWQgbG9jYWwsIG5hY2lvbmFsIG8gaW50ZXJuYWNpb25hbC4gCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbyAJCkF1dG9yCUFwZWxsaWRvcwlOb21icmVzCjEJCQoyCQkKMwkJCiAKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8gIAoKaykJQWNlcHRvKGFtb3MpIHF1ZSBMQSBVTklWRVJTSURBRCBubyBzZSByZXNwb25zYWJpbGl6YSBwb3IgbGFzIGluZnJhY2Npb25lcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIERlcmVjaG9zIGRlIEF1dG9yIGNhdXNhZGFzIHBvciBsb3MgdGl0dWxhcmVzIGRlIGxhIHByZXNlbnRlIExpY2VuY2lhIHkgZGVjbGFyYW1vcyBxdWUgbWFudGVuZHLDqSAoZW1vcykgaW5kZW1uZSBhIExBIFVOSVZFUlNJREFEIHBvciBsYXMgcmVjbGFtYWNpb25lcyBsZWdhbGVzIGRlIGN1YWxxdWllciB0aXBvIHF1ZSBsbGVnYXJlbiBhIHByZXNlbnRhcnNlIHBvciB2aW9sYWNpw7NuIGRlIGRlcmVjaG9zIGEgbGEgcHJvcGllZGFkIGludGVsZWN0dWFsIG8gZGUgQXV0b3IgcmVsYWNpb25hZG9zIGNvbiBsb3MgZG9jdW1lbnRvcyByZWdpc3RyYWRvcyBlbiBlbCBSSVVELgoKbCkJRWwgKGxvcykgYXV0b3IoZXMpIG1hbmlmaWVzdGEobW9zKSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCwgZGUgZXhjbHVzaXZhIGF1dG9yw61hLCB5IHNlIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zOyBkZSB0YWwgc3VlcnRlLCBlbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhLCBlbCAobG9zKSBlc3R1ZGlhbnRlKHMpIOKAkyBhdXRvcihlcykgYXN1bWlyw6EobikgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQgeSBzYWxkcsOhKG4pIGVuIGRlZmVuc2EgZGUgbG9zIGRlcmVjaG9zIGFxdcOtIGF1dG9yaXphZG9zLiBQYXJhIHRvZG9zIGxvcyBlZmVjdG9zLCBMQSBVTklWRVJTSURBRCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLiAgIAoKCm0pCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGNvbm96Y28oY2Vtb3MpIGxhIGF1dG9ub23DrWEgeSBsb3MgZGVyZWNob3MsIHF1ZSBwb3NlZShtb3MpIHNvYnJlIGxhIG9icmEgeSwgY29tbyB0YWwsIGVzIChzb21vcykgcmVzcG9uc2FibGUocykgZGVsIGFsY2FuY2UganVyw61kaWNvIHkgbGVnYWwsIGRlIGVzY29nZXIgbGEgb3BjacOzbiBkZSBsYSBwdWJsaWNhY2nDs24gbyBkZSByZXN0cmljY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIGRlbCBkb2N1bWVudG8gcmVnaXN0cmFkbyBlbiBlbCBSSVVELgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MgCkRFUkVDSE9TIFkgT0JMSUdBQ0lPTkVTIFJFUVVFUklET1MgUE9SIEVMIFJFU1BFQ1RJVk8gQ09OVFJBVE8gTyBBQ1VFUkRPLgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpFbiBjb25zdGFuY2lhIGRlIGxvIGFudGVyaW9yLCBmaXJtbyhhbW9zKSBlbCBwcmVzZW50ZSBkb2N1bWVudG8sIGVuIGxhIGNpdWRhZCBkZSBCb2dvdMOhLCBELkMuLCBhIGxvcyAKCgpGSVJNQSBERSBMT1MgVElUVUxBUkVTIERFIERFUkVDSE9TIERFIEFVVE9SCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCUNvcnJlbyBFbGVjdHLDs25pY28gCjEJCjIJCjMJCgpOb21icmUgZGUgRGlyZWN0b3IoZXMpIGRlIEdyYWRvOgoKMQkKMgkKMwkKCk5vbWJyZSBGYWN1bHRhZCB5IFByb3llY3RvIEN1cnJpY3VsYXI6CgpGYWN1bHRhZAlQcm95ZWN0byBDdXJyaWN1bGFyCgkKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEKCgo=