Ardila Ortiz
En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan...
- Autores:
-
Ardila Ortiz, Camilo Andres
- Tipo de recurso:
- Fecha de publicación:
- 2024
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/40769
- Acceso en línea:
- http://hdl.handle.net/11349/40769
- Palabra clave:
- gps
raspberry pi
oil & gas
microservicios
modulo ethernet
gps
raspberry pi
oil & gas
microservices
ethernet module
- Rights
- License
- Abierto (Texto Completo)
id |
UDISTRITA2_3d554c25bcb8c2880f7398d33e44ea2e |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/40769 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.none.fl_str_mv |
Ardila Ortiz |
dc.title.alternative.none.fl_str_mv |
Development of a system for calculating distances in the mobilization of workover and drilling rigs using gps data |
dc.title.titleenglish.none.fl_str_mv |
Desarrollo de un sistema para cálculo de distancias en movilizaciónes de torres de workover y perforación con data gps |
title |
Ardila Ortiz |
spellingShingle |
Ardila Ortiz gps raspberry pi oil & gas microservicios modulo ethernet gps raspberry pi oil & gas microservices ethernet module |
title_short |
Ardila Ortiz |
title_full |
Ardila Ortiz |
title_fullStr |
Ardila Ortiz |
title_full_unstemmed |
Ardila Ortiz |
title_sort |
Ardila Ortiz |
dc.creator.fl_str_mv |
Ardila Ortiz, Camilo Andres |
dc.contributor.advisor.none.fl_str_mv |
Cárdenas Castiblanco, José Roberto |
dc.contributor.author.none.fl_str_mv |
Ardila Ortiz, Camilo Andres |
dc.subject.none.fl_str_mv |
gps raspberry pi oil & gas microservicios modulo ethernet |
topic |
gps raspberry pi oil & gas microservicios modulo ethernet gps raspberry pi oil & gas microservices ethernet module |
dc.subject.keyword.none.fl_str_mv |
gps raspberry pi oil & gas microservices ethernet module |
description |
En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan a una empresa prestadora de servicios que posee RSU, torres y, o rigs para realizar estos trabajos, estas torres son estructuras móviles muy grandes que se trasladan de una locación a otra sobre todo en zonas rurales y en algunos casos de difícil acceso para realizar esta operaciones. La operadora realiza un contrato en el cual tiene una cantidad de torres disponibles que puede mover según su plan de negocios en los bloques, clúster o pozos que controla y de acuerdo a cada actividad que la operadora solicite a la dueña de los taladros esta ejecuta y factura, uno de esos casos específicos es la actividad de movilización que tiene unos de los costos más altos en el proceso, éste normalmente se factura basado en la carga y la trayectoria y en ciertas ocasiones el tiempo como una medida del esfuerzo de la misma, por su puesto la carga es fácilmente conocida igual que la distancia sin embargo no se sabe a ciencia cierta si la ruta planeada es la que verdaderamente se tomó y si es la cantidad de kilómetros que se facturaron por lo tanto tiene como consecuencia pérdidas económicas para la dueña de los taladros. En el presente proyecto se expone el desarrollo de un sistema que permite obtener las coordenadas en formato longitud y latitud para las torres de perforación y workover por medio de un equipo de IoT que permita enviarla hacia la nube para procesarla y conocer la trayectoria que una torre de perforación o workover montada en su unidad básica realiza desde un punto a otro con el fin de entrar entregar esta información para calcular correctamente del costo de la operación de movilización y adecuada facturación a las operadoras por parte de la empresa prestadora de servicios. Para resolver este problema se plantea usar un dispositivo que obtenga la información de las coordenadas mientras el equipo se moviliza, de tal forma que al llegar a una locación y vuelva a tener conexión a la red se envíe toda la data represada para su posterior procesamiento, al tener la data se realizan los cálculos de la trayectoria usando el procedimiento desarrollado por Haversine. El prototipo plantea la necesidad de un sistema de respaldo de energía y la conexión a módulos GPS y ethernet entre otros para la obtención y envío de información de la longitud, latitud, reloj, altura, fecha, y número de satélites. Este trabajo se enfoca en el desarrollo de la lógica de la solución, como lo es la codificación del microcontrolador para la captura, almacenamiento y envío de la información, así como la creación del servicio de IoT gateway, implementación bróker y lógica básica del negocio para conocer la distancia, se esboza además una posible forma de implementar la solución a nivel físico teniendo en cuenta el contexto. Se logra capturar y enviar la data a la nube para almacenarla y calcular la distancia recorrida en un intervalo de tiempo. |
publishDate |
2024 |
dc.date.accessioned.none.fl_str_mv |
2024-09-16T16:39:45Z |
dc.date.available.none.fl_str_mv |
2024-09-16T16:39:45Z |
dc.date.created.none.fl_str_mv |
2024-08-09 |
dc.type.none.fl_str_mv |
bachelorThesis |
dc.type.coar.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.degree.none.fl_str_mv |
Monografía |
dc.identifier.uri.none.fl_str_mv |
http://hdl.handle.net/11349/40769 |
url |
http://hdl.handle.net/11349/40769 |
dc.relation.references.none.fl_str_mv |
Ardila Ortiz, C. A. (Agosto, 2024). Desarrollo de un sistema para cálculo de distancias en movilizaciones de torres de workover y perforación con data GPS. Universidad Distrital |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.acceso.none.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Abierto (Texto Completo) http://purl.org/coar/access_right/c_abf2 |
dc.format.mimetype.none.fl_str_mv |
pdf |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
https://repository.udistrital.edu.co/bitstreams/e1f77a76-9097-4b13-bfd8-d1af8d4301e7/download https://repository.udistrital.edu.co/bitstreams/16bfba4d-4cb4-4970-969f-b3322304b78f/download https://repository.udistrital.edu.co/bitstreams/b046192e-b8dd-4695-aa30-1843b196ea40/download https://repository.udistrital.edu.co/bitstreams/f1b7ca1d-c274-4a2c-b741-301364f76539/download https://repository.udistrital.edu.co/bitstreams/a9379679-9f14-41c3-98e5-5a2a39f4e935/download |
bitstream.checksum.fl_str_mv |
997daf6c648c962d566d7b082dac908d 79da0f75074b094e696a5717f282eedb 959cb358216240346ab73226c59222b2 e4b0ec899d76fc73234cd93965210e86 356c1c5a1ae066596d5b72b70d632c9d |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1828165819381579776 |
spelling |
Cárdenas Castiblanco, José RobertoArdila Ortiz, Camilo Andres2024-09-16T16:39:45Z2024-09-16T16:39:45Z2024-08-09http://hdl.handle.net/11349/40769En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan a una empresa prestadora de servicios que posee RSU, torres y, o rigs para realizar estos trabajos, estas torres son estructuras móviles muy grandes que se trasladan de una locación a otra sobre todo en zonas rurales y en algunos casos de difícil acceso para realizar esta operaciones. La operadora realiza un contrato en el cual tiene una cantidad de torres disponibles que puede mover según su plan de negocios en los bloques, clúster o pozos que controla y de acuerdo a cada actividad que la operadora solicite a la dueña de los taladros esta ejecuta y factura, uno de esos casos específicos es la actividad de movilización que tiene unos de los costos más altos en el proceso, éste normalmente se factura basado en la carga y la trayectoria y en ciertas ocasiones el tiempo como una medida del esfuerzo de la misma, por su puesto la carga es fácilmente conocida igual que la distancia sin embargo no se sabe a ciencia cierta si la ruta planeada es la que verdaderamente se tomó y si es la cantidad de kilómetros que se facturaron por lo tanto tiene como consecuencia pérdidas económicas para la dueña de los taladros. En el presente proyecto se expone el desarrollo de un sistema que permite obtener las coordenadas en formato longitud y latitud para las torres de perforación y workover por medio de un equipo de IoT que permita enviarla hacia la nube para procesarla y conocer la trayectoria que una torre de perforación o workover montada en su unidad básica realiza desde un punto a otro con el fin de entrar entregar esta información para calcular correctamente del costo de la operación de movilización y adecuada facturación a las operadoras por parte de la empresa prestadora de servicios. Para resolver este problema se plantea usar un dispositivo que obtenga la información de las coordenadas mientras el equipo se moviliza, de tal forma que al llegar a una locación y vuelva a tener conexión a la red se envíe toda la data represada para su posterior procesamiento, al tener la data se realizan los cálculos de la trayectoria usando el procedimiento desarrollado por Haversine. El prototipo plantea la necesidad de un sistema de respaldo de energía y la conexión a módulos GPS y ethernet entre otros para la obtención y envío de información de la longitud, latitud, reloj, altura, fecha, y número de satélites. Este trabajo se enfoca en el desarrollo de la lógica de la solución, como lo es la codificación del microcontrolador para la captura, almacenamiento y envío de la información, así como la creación del servicio de IoT gateway, implementación bróker y lógica básica del negocio para conocer la distancia, se esboza además una posible forma de implementar la solución a nivel físico teniendo en cuenta el contexto. Se logra capturar y enviar la data a la nube para almacenarla y calcular la distancia recorrida en un intervalo de tiempo.In the Oil & Gas industry, there are drilling or workover rigs that perform drilling and well maintenance tasks for the production of oil and gas. The dynamics in this industry segment involve an operating company (such as Ecopetrol, Hocol, Parex, etc.) contracting a service provider company that owns RSUs, rigs, and/or drilling rigs to perform these tasks. These rigs are large mobile structures that are moved from one location to another, especially in rural areas and, in some cases, in difficult-to-access locations, to carry out these operations. The operating company establishes a contract in which it has a certain number of rigs available that can be moved according to its business plan in the blocks, clusters, or wells it controls. Based on the activities requested by the operating company, the rig owner executes and bills these activities. One specific case is mobilization, which is one of the most expensive processes. It is typically billed based on load, trajectory, and sometimes time as a measure of effort. While the load is easily known, as well as the distance, it is not always certain whether the planned route was actually taken and whether the kilometers billed were accurate, leading to potential financial losses for the rig owner. This project presents the development of a system that allows obtaining longitude and latitude coordinates for drilling and workover rigs using an IoT device that sends this data to the cloud for processing. This enables tracking the trajectory of a drilling or workover rig mounted on its base unit from one point to another, with the aim of providing accurate information to correctly calculate the mobilization operation cost and ensure proper billing to the operators by the service provider company. To address this problem, the proposed solution involves using a device that captures the coordinates while the rig is in motion. Once it arrives at a location and regains network connectivity, all stored data is sent for further processing. The data is then used to calculate the trajectory using the Haversine formula. The prototype outlines the need for a backup power system and the connection to GPS and Ethernet modules, among others, to obtain and transmit information such as longitude, latitude, time, altitude, date, and the number of satellites. This work focuses on developing the logic of the solution, including coding the microcontroller for capturing, storing, and transmitting information, as well as creating the IoT gateway service, implementing a broker, and establishing the basic business logic to determine the distance. Additionally, it outlines a potential physical implementation of the solution, taking the context into account. The project successfully captures and sends the data to the cloud for storage and calculates the distance traveled within a given time interval.SKANAHAWK SASpdfgpsraspberry pioil & gasmicroserviciosmodulo ethernetgpsraspberry pioil & gasmicroservicesethernet moduleArdila OrtizDevelopment of a system for calculating distances in the mobilization of workover and drilling rigs using gps dataDesarrollo de un sistema para cálculo de distancias en movilizaciónes de torres de workover y perforación con data gpsbachelorThesisMonografíahttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Ardila Ortiz, C. A. (Agosto, 2024). Desarrollo de un sistema para cálculo de distancias en movilizaciones de torres de workover y perforación con data GPS. Universidad DistritalLICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/e1f77a76-9097-4b13-bfd8-d1af8d4301e7/download997daf6c648c962d566d7b082dac908dMD54ORIGINALLicencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfapplication/pdf223061https://repository.udistrital.edu.co/bitstreams/16bfba4d-4cb4-4970-969f-b3322304b78f/download79da0f75074b094e696a5717f282eedbMD56ArdilaOrtizCamiloAndres2024.pdfArdilaOrtizCamiloAndres2024.pdfapplication/pdf2274279https://repository.udistrital.edu.co/bitstreams/b046192e-b8dd-4695-aa30-1843b196ea40/download959cb358216240346ab73226c59222b2MD57THUMBNAILLicencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg9508https://repository.udistrital.edu.co/bitstreams/f1b7ca1d-c274-4a2c-b741-301364f76539/downloade4b0ec899d76fc73234cd93965210e86MD58ArdilaOrtizCamiloAndres2024.pdf.jpgArdilaOrtizCamiloAndres2024.pdf.jpgIM Thumbnailimage/jpeg3040https://repository.udistrital.edu.co/bitstreams/a9379679-9f14-41c3-98e5-5a2a39f4e935/download356c1c5a1ae066596d5b72b70d632c9dMD5911349/40769oai:repository.udistrital.edu.co:11349/407692024-12-25 01:07:56.198open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |