Simulación del control de contenedores usando el protocolo MQTT
El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos...
- Autores:
-
Valiente Simbaqueba, Brayan David
Guevara Triana, Luis Fernando
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2024
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- spa
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/41198
- Acceso en línea:
- http://hdl.handle.net/11349/41198
- Palabra clave:
- APIS
Broker
Contenedor
MQTT
Simulador
Topics
Ingeniería Telemática -- Tesis y disertaciones académicas
Internet de las cosas (IoT)
Protocolo MQTT
Control de contenedores refrigerados
Monitoreo en tiempo real
Seguridad en el transporte de carga
APIS
Broker
Container
MQTT
Simulator
Topics
- Rights
- License
- Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id |
UDISTRITA2_d80aac7a1b7461ebc0eef1dd3110c06b |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/41198 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.none.fl_str_mv |
Simulación del control de contenedores usando el protocolo MQTT |
dc.title.titleenglish.none.fl_str_mv |
Simulation of container control using the MQTT protocol |
title |
Simulación del control de contenedores usando el protocolo MQTT |
spellingShingle |
Simulación del control de contenedores usando el protocolo MQTT APIS Broker Contenedor MQTT Simulador Topics Ingeniería Telemática -- Tesis y disertaciones académicas Internet de las cosas (IoT) Protocolo MQTT Control de contenedores refrigerados Monitoreo en tiempo real Seguridad en el transporte de carga APIS Broker Container MQTT Simulator Topics |
title_short |
Simulación del control de contenedores usando el protocolo MQTT |
title_full |
Simulación del control de contenedores usando el protocolo MQTT |
title_fullStr |
Simulación del control de contenedores usando el protocolo MQTT |
title_full_unstemmed |
Simulación del control de contenedores usando el protocolo MQTT |
title_sort |
Simulación del control de contenedores usando el protocolo MQTT |
dc.creator.fl_str_mv |
Valiente Simbaqueba, Brayan David Guevara Triana, Luis Fernando |
dc.contributor.advisor.none.fl_str_mv |
Hernández Gutiérrez, Jairo |
dc.contributor.author.none.fl_str_mv |
Valiente Simbaqueba, Brayan David Guevara Triana, Luis Fernando |
dc.contributor.orcid.none.fl_str_mv |
Hernández Gutiérrez, Jairo [0000-0003-3908-2763] |
dc.subject.spa.fl_str_mv |
APIS Broker Contenedor MQTT Simulador Topics |
topic |
APIS Broker Contenedor MQTT Simulador Topics Ingeniería Telemática -- Tesis y disertaciones académicas Internet de las cosas (IoT) Protocolo MQTT Control de contenedores refrigerados Monitoreo en tiempo real Seguridad en el transporte de carga APIS Broker Container MQTT Simulator Topics |
dc.subject.lemb.none.fl_str_mv |
Ingeniería Telemática -- Tesis y disertaciones académicas Internet de las cosas (IoT) Protocolo MQTT Control de contenedores refrigerados Monitoreo en tiempo real Seguridad en el transporte de carga |
dc.subject.keyword.spa.fl_str_mv |
APIS Broker Container MQTT Simulator Topics |
description |
El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos para el flujo de mensajes que permiten la comunicación entre varias aplicaciones de forma asíncrona, lo cual es una alternativa para la interacción máquina a máquina (M2M). Una problemática que se viene presentado en la industria del transporte de carga y logística es la del control de sus contenedores refrigerados, que, en la mayoría de los casos, muestran inconvenientes frente a su ubicación en tiempo real y la revisión de temperatura; dos temas que preocupan al gremio transportador por la falta de seguridad en las carreteras y la conservación de los productos que distribuyen, llevando a una posible pérdida de mercancía. Se diseñó un aplicativo en JavaScript basado en el protocolo de comunicación MQTT que utiliza un modelo publicación y suscripción, definido por dos tipos de entidades de red: un broker de mensajes que hace el papel de servidor y los clientes que pueden ser sensores, aplicaciones u objetos que interactúan con el broker, dichos clientes se conectan con el broker por medio de una suscripción a un “Topic”, el cliente envía publicaciones al broker, y el broker se encarga de distribuirlas a todos los clientes que pertenecen a ese “Topic”. Como resultado se brinda la posibilidad de evaluar el estado de la mercancía remotamente, permitiendo consultar y cambiar los datos de refrigeración, asimismo, el estado de encendido y apagado del contenedor, configurar alertas a través de un envío de correo electrónico y verificar mediante un Sistema de Posicionamiento Global (GPS), en qué lugar se encuentra ubicado elvehículo; internamente existe un algoritmo que simula el envío de datos masivos y aleatorios vii cada quinientos milisegundos, y se establece la configuración de temperaturas que están bajo un rango de menos cincuenta a cincuenta grados, alcanzando así, una mayor precisión y control de los contenedores. Con la implementación del protocolo de comunicación MQTT y el desarrollo de la aplicación, se logró evidenciar en un ambiente controlado, la configuración, monitoreo y gestión de contenedores; teniendo como base un desempeño óptimo en la visualización de los datos en tiempo real, de igual forma, el diagnóstico de fallos y generación de alertas que permiten mitigar los daños de mercancía y disminuir los riesgos de seguridad en el transporte. |
publishDate |
2024 |
dc.date.accessioned.none.fl_str_mv |
2024-10-03T16:05:32Z |
dc.date.available.none.fl_str_mv |
2024-10-03T16:05:32Z |
dc.date.created.none.fl_str_mv |
2024-04-11 |
dc.type.spa.fl_str_mv |
bachelorThesis |
dc.type.degree.spa.fl_str_mv |
Monografía |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
format |
http://purl.org/coar/resource_type/c_7a1f |
dc.identifier.uri.none.fl_str_mv |
http://hdl.handle.net/11349/41198 |
url |
http://hdl.handle.net/11349/41198 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.rights.*.fl_str_mv |
Attribution-NonCommercial-NoDerivatives 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 |
Attribution-NonCommercial-NoDerivatives 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 |
https://repository.udistrital.edu.co/bitstreams/3110943a-8a35-4461-a86e-74dc4ba97541/download https://repository.udistrital.edu.co/bitstreams/b77f7b07-9235-42e8-ad92-62b2ae61d8b9/download https://repository.udistrital.edu.co/bitstreams/d10e99ea-09c1-401d-b0d5-427d41206b83/download https://repository.udistrital.edu.co/bitstreams/63d57e83-9368-497c-93fa-9c032c5e8d25/download https://repository.udistrital.edu.co/bitstreams/6769a803-7d6a-4869-8740-28a60ff4a833/download https://repository.udistrital.edu.co/bitstreams/2c405a04-53a7-493c-8f18-1be286b945b8/download https://repository.udistrital.edu.co/bitstreams/9aa81990-9296-44e0-b0e0-51de93630dc3/download |
bitstream.checksum.fl_str_mv |
648d495193a5ca9f8a50efc8c65b2239 e0639cdea01c1fd52f0ad98c57c80648 54cd36d3ba8c78bf237bcfd3fa5fd124 4460e5956bc1d1639be9ae6146a50347 997daf6c648c962d566d7b082dac908d 200e42d9487086da4f86ec8b9c356a46 d4459952c9439a0dbe08154f86481b20 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1828165569814200320 |
spelling |
Hernández Gutiérrez, JairoValiente Simbaqueba, Brayan DavidGuevara Triana, Luis FernandoHernández Gutiérrez, Jairo [0000-0003-3908-2763]2024-10-03T16:05:32Z2024-10-03T16:05:32Z2024-04-11http://hdl.handle.net/11349/41198El internet de las cosas (IoT) se ha convertido en una tecnología que ofrece soluciones, tanto a nivel de software como de hardware, especialmente en dispositivos físicos, los cuales sirven como herramienta en las labores diarias de los seres humanos. De igual manera, posee un conjunto de protocolos para el flujo de mensajes que permiten la comunicación entre varias aplicaciones de forma asíncrona, lo cual es una alternativa para la interacción máquina a máquina (M2M). Una problemática que se viene presentado en la industria del transporte de carga y logística es la del control de sus contenedores refrigerados, que, en la mayoría de los casos, muestran inconvenientes frente a su ubicación en tiempo real y la revisión de temperatura; dos temas que preocupan al gremio transportador por la falta de seguridad en las carreteras y la conservación de los productos que distribuyen, llevando a una posible pérdida de mercancía. Se diseñó un aplicativo en JavaScript basado en el protocolo de comunicación MQTT que utiliza un modelo publicación y suscripción, definido por dos tipos de entidades de red: un broker de mensajes que hace el papel de servidor y los clientes que pueden ser sensores, aplicaciones u objetos que interactúan con el broker, dichos clientes se conectan con el broker por medio de una suscripción a un “Topic”, el cliente envía publicaciones al broker, y el broker se encarga de distribuirlas a todos los clientes que pertenecen a ese “Topic”. Como resultado se brinda la posibilidad de evaluar el estado de la mercancía remotamente, permitiendo consultar y cambiar los datos de refrigeración, asimismo, el estado de encendido y apagado del contenedor, configurar alertas a través de un envío de correo electrónico y verificar mediante un Sistema de Posicionamiento Global (GPS), en qué lugar se encuentra ubicado elvehículo; internamente existe un algoritmo que simula el envío de datos masivos y aleatorios vii cada quinientos milisegundos, y se establece la configuración de temperaturas que están bajo un rango de menos cincuenta a cincuenta grados, alcanzando así, una mayor precisión y control de los contenedores. Con la implementación del protocolo de comunicación MQTT y el desarrollo de la aplicación, se logró evidenciar en un ambiente controlado, la configuración, monitoreo y gestión de contenedores; teniendo como base un desempeño óptimo en la visualización de los datos en tiempo real, de igual forma, el diagnóstico de fallos y generación de alertas que permiten mitigar los daños de mercancía y disminuir los riesgos de seguridad en el transporte.The Internet of Things (IoT) has become a technology that offers solutions, both to software and hardware level, especially in physical devices, which serve as a tool in the daily work of human beings. Likewise, it has a set of protocols for the flow of messages that allow communication between several applications asynchronously, which is an alternative for machine-to-machine interaction machine (M2M). A problem that has been presented in the cargo transportation and logistics industry is the of the control of its refrigerated containers, which, in most cases, show inconveniences regarding its real-time location and temperature review; two topics that The transport union is concerned about the lack of safety on the roads and the conservation of the products they distribute, causing a possible loss of merchandise. A JavaScript application was designed based on the MQTT communication protocol that uses a publish-subscribe model, defined by two types of network entities: a broker messages that plays the role of server and clients that can be sensors, applications or that interact with the broker, said clients connect with objects of the broker through a subscription to a “Topic”, the client sends publications to the broker, and the broker is in charge of distribute them to all the clients that belong to that “Topic”. As a result, the possibility of evaluating the status of the merchandise remotely is provided, allowing you to consult and change the cooling data, as well as the power-on status and container shutdown, configure alerts via an email send and verify through a Global Positioning System (GPS), where the vehicle is located; Internally there is an algorithm that simulates the sending of massive and random data vii every five hundred milliseconds, and the temperature settings are established that are under a range of minus fifty to fifty degrees, thus achieving greater precision and control of The containers. With the implementation of the MQTT communication protocol and the development of the application, managed to demonstrate in a controlled environment, the configuration, monitoring and management of containers; based on optimal performance in the visualization of data in in real time, in the same way, the diagnosis of failures and generation of alerts that allow mitigating damage to merchandise and reduce security risks in transportation.pdfspaAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2APISBrokerContenedorMQTTSimuladorTopicsIngeniería Telemática -- Tesis y disertaciones académicasInternet de las cosas (IoT)Protocolo MQTTControl de contenedores refrigeradosMonitoreo en tiempo realSeguridad en el transporte de cargaAPISBrokerContainerMQTTSimulatorTopicsSimulación del control de contenedores usando el protocolo MQTTSimulation of container control using the MQTT protocolbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALValienteBrayanDavidYGuevaraLuisFernando2024.pdfValienteBrayanDavidYGuevaraLuisFernando2024.pdfTrabajo de gradoapplication/pdf1872541https://repository.udistrital.edu.co/bitstreams/3110943a-8a35-4461-a86e-74dc4ba97541/download648d495193a5ca9f8a50efc8c65b2239MD51ValienteBrayanDavidYGuevaraLuisFernandoAnexos2024.zipValienteBrayanDavidYGuevaraLuisFernandoAnexos2024.zipAnexos application/zip3936956https://repository.udistrital.edu.co/bitstreams/b77f7b07-9235-42e8-ad92-62b2ae61d8b9/downloade0639cdea01c1fd52f0ad98c57c80648MD52Licencia y autorización de los autores para publicar.pdfLicencia y autorización de los autores para publicar.pdfLicencia de uso y publicaciónapplication/pdf229128https://repository.udistrital.edu.co/bitstreams/d10e99ea-09c1-401d-b0d5-427d41206b83/download54cd36d3ba8c78bf237bcfd3fa5fd124MD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repository.udistrital.edu.co/bitstreams/63d57e83-9368-497c-93fa-9c032c5e8d25/download4460e5956bc1d1639be9ae6146a50347MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/6769a803-7d6a-4869-8740-28a60ff4a833/download997daf6c648c962d566d7b082dac908dMD55THUMBNAILValienteBrayanDavidYGuevaraLuisFernando2024.pdf.jpgValienteBrayanDavidYGuevaraLuisFernando2024.pdf.jpgIM Thumbnailimage/jpeg2607https://repository.udistrital.edu.co/bitstreams/2c405a04-53a7-493c-8f18-1be286b945b8/download200e42d9487086da4f86ec8b9c356a46MD56Licencia y autorización de los autores para publicar.pdf.jpgLicencia y autorización de los autores para publicar.pdf.jpgIM Thumbnailimage/jpeg9503https://repository.udistrital.edu.co/bitstreams/9aa81990-9296-44e0-b0e0-51de93630dc3/downloadd4459952c9439a0dbe08154f86481b20MD5711349/41198oai:repository.udistrital.edu.co:11349/411982024-12-07 01:05:49.93http://creativecommons.org/licenses/by-nc-nd/4.0/Attribution-NonCommercial-NoDerivatives 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |