<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">
<div tabindex="-1" class="T31hC GNqVo allowTextSelection">
<div>
<div>
<div lang="en-US">
<div>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
GREETINGS,</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted2">
I have been using GStreamer (up to v1.19.1 at this point) for about 2 years now, both with the GStreamer RTSP codebase and within the OpenCV VideoCapture open() method (on Windows 10 and developed using Visual Studio 2019)...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
GStreamer functionality along with its launch element model has been a great success for my project...good job...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
When running gst-launch-1.0 with various launch strings in the cmd console, when stopping the exe or closing the cmd console I never had any problem with the pipeline being stopped and resources being recovered behind the scenes. When I run my project likewise
 never had any problem...I can close it down and open it again over and over, no problem...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
However, with the RTSP server code I now need to stop and disconnect ('TEAR DOWN') an RTSP server and create a new one within a running exe, and I am having a problem destroying the current RTSP server and its resources.  It seems the pipeline formed during
 the connection process still is running and I can't start a new one.  I have searched online for doing this and found multiple ways to destroy portions of the assortment of objects of the server and in multiple orders of destruction, none of them work...see
<a href="https://github.com/GStreamer/gst-rtsp-server/tree/master/examples" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-safelink="true" data-linkindex="0" class="ContentPasted1">
https://github.com/GStreamer/gst-rtsp-server/tree/master/examples</a>, yes, I tried test-video-disconnect.c code...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
Also, within the OpenCV VideoCapture open() method call which accepts a GStreamer launch string the video acquisition is excellent, but rarely a camera/network/connection can enter a state where the open() method never returns, requiring an app restart. Calling
 open() using std::async to detect this condition does not work (BTW, calling the OpenCV VideoCapture grab() method with std::async works well and reliably for other purposes though)... 
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
After much research I am thinking that these two behaviors are originating at the GStreamer launch string level, so this is why I am asking both questions in this forum...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
I am hoping to find a way to ensure an RTSP server pipeline has been completely destroyed within a running exe...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
If you have general thoughts feel free to respond, but if I have sparked your interest please read on for more detail...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
I have used the following launch strings which utilize GPU-CUDA-h/w codec capabilities of the NVidia GPU's currently being used:</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
GStreamer RTSP code - running multiple RTSP servers, each running in different threads (Qt QThread)</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                Some code extract, but conforms to the RTSP server examples:</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                gst_init_check(nullptr, nullptr, &gstError)</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                for (int feed_num = 0; feed_num < numOutputVideoFeeds; feed_num++)</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                {</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                QObject[feed_num].moveToThread(&QThread[feed_num]);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                QObject::connect(&(&QThread[feed_num], &QThread::started, &QObject[feed_num], [&, feed_num]()</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                {</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                g_main_loop_new(NULL, FALSE);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                g_main_loop_get_context(gst_loop);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_new();</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_set_address(gst_server, "127.0.0.1");</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_set_service(gst_server, "8554");</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_get_mount_points(gst_server);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_media_factory_new();</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_media_factory_set_launch(gst_factory, "( appsrc name=mysrc ! videoconvert ! nvh264enc ! video/x-h264,profile=high ! rtph264pay name=pay0 pt=96 )" );</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                g_signal_connect(gst_factory, "media-configure", (GCallback)media_configure, &stream_data);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_media_factory_set_shared(gst_factory, TRUE);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_mount_points_add_factory(gst_mounts, "/test", gst_factory);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                rtsp_sourceID = gst_rtsp_server_attach(gst_server, gst_context);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                while (!(QThread[feed_num].isInterruptionRequested()))</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                {</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                                g_main_context_iteration(gst_context, FALSE);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                }</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                Once the QThread is signaled to exit this main loop, then I try to clean up based on online code, before terminating the QThread, tried a bunch of ways, none worked...</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_get_mount_points(gst_server);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_mount_points_remove_factory(gst_mounts, "/test");</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3"><span class="ContentPasted3">      </span><span class="ContentPasted3">      </span><span class="ContentPasted3">      </span><span class="ContentPasted3">    
 g</span>st_object unref ()</span><br class="ContentPasted3">
<span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3"></span> <span>     </span></p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_server_get_session_pool(gst_server);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                gst_rtsp_session_pool_filter(gst_pool, remove_func, gst_server);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 <span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3 ContentPasted4"><span class="ContentPasted4">      </span><span class="ContentPasted4">      </span><span class="ContentPasted4">      </span><span class="ContentPasted4">   
</span>gst_object unref ()</span><br class="ContentPasted4">
<span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3"></span></p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                               <br>
</p>
<div style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<span>      </span><span>      </span><span>      </span><span>    </span> g_source_remove(rtsp_sourceID);</div>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                if (g_main_loop_is_running(gst_loop))</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                                                g_main_loop_quit(gst_loop);</p>
<div style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 <span>     </span><span>      </span><span>      </span><span>    <span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3 ContentPasted5"><span class="ContentPasted5"></span>gst_object unref ()</span><br class="ContentPasted5">
<span style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1 ContentPasted3"></span></span></div>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                }</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                }</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                QThread[feed_num].start(QThread::InheritPriority);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
When the above recovery code is run I get the following errors:</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<br>
</p>
<div style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<div class="rps_8887">
<div lang="EN-US">
<div class="x_WordSection1">
<p class="x_MsoNormal">(DILARTS_PDP_App_2022_Debug.exe:44908): GStreamer-CRITICAL **: 14:25:01.948: gst_object_ref: assertion 'object != NULL' failed</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">(DILARTS_PDP_App_2022_Debug.exe:44908): GLib-CRITICAL **: 14:25:01.957: g_hash_table_insert_internal: assertion 'hash_table != NULL' failed</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">(DILARTS_PDP_App_2022_Debug.exe:44908): GStreamer-CRITICAL **: 14:25:01.959: gst_allocator_free: assertion 'GST_IS_ALLOCATOR (allocator)' failed</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">(DILARTS_PDP_App_2022_Debug.exe:44908): GStreamer-CRITICAL **: 14:25:01.965: gst_object_unref: assertion 'object != NULL' failed</p>
</div>
</div>
</div>
<br>
</div>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
But they don't tell me what objects are involved??<br>
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 <br>
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
Based on online research, perhaps an EOS signal needs to be sent out the pipeline?  How would that be implemented in this code that uses this media_configure() and need_data() construct?</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 Here is the OpenCV code:</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
OpenCV VideoCapture class open() method - used for multiple camera video acquisition, each running in different threads (std::thread)</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                capturePromises[cam_num] = std::promise<void>();</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                captureFutures[cam_num] = capturePromises[cam_num].get_future();</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                captureThreads[cam_num] = new std::thread(&Controls::capture, this, ipCamPaths[cam_num], ipCamPrefix[cam_num], ipCamAttribs[cam_num], cam_num, std::ref(capture_state), std::move(captureFutures[cam_num]));</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                capture(const QString path, const QString prefix, const QString attributes, const int cam_num, std::array<std::atomic<capture_state_mode>, max_num_pano_cameras>& capture_state, std::future<void> future)</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                {</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                cv::VideoCapture cap(0, cv::CAP_GSTREAMER);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                cap.open("path plus latency=0 ! rtph264depay ! h264parse ! d3d11h264dec ! videoconvert ! appsink sync = 0", VIDEO_PROVIDER_API/*, [ (cv::CAP_PROP_HW_ACCELERATION), cv2.VIDEO_ACCELERATION_ANY ]*/);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                std::future<bool> future_grab = std::async(&cv::VideoCapture::grab, cap);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                grabbed = (future_grab.wait_for(std::chrono::milliseconds(config.capture_camera_grab_wait_limit_msec)) == std::future_status::ready);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                retrieved = cap.retrieve(frame);</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                                frameBufs[cam_num] = frame;</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
                }</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
 </p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
This OpenCV code works well with GStreamer but sometimes the open() method does not return...
<br>
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<br>
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
<br>
</p>
<p style="font-size:11pt;font-family:Calibri,sans-serif;margin:0" class="ContentPasted1">
Any help, comments, quidance, links, or code would be appreciated...</p>
</div>
</div>
</div>
</div>
</div>
<br>
</div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<p><b><i><span style="font-size:10.5pt;font-family:Palatino, serif, EmojiFont;color:rgb(0, 66, 170);border:1pt none windowtext;padding:0in" class="ContentPasted0">David Yurkanin</span></i></b></p>
<br>
</div>
</div>
</div>
</div>
<br class="Apple-interchange-newline" style="font-family: Garamond; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">
<font face="Garamond" style="font-family: Garamond; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-size: 14px;" class=""><i class="">The
 preceding message (including attachments) is covered by the Electronic Communication Privacy Act, 18 U.S.C. sections 2510-2512, is intended only for the person or entity to which it is addressed, and may contain information that is confidential, protected by
 attorney-client or other privilege, or otherwise protected from disclosure by law.  If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited.  Please
 reply to the sender that you have received the message in error and destroy the original message and all copies.</i></font><br style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px;" class="">
<div style="font-family: Garamond; font-size: 18px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">
<font face="Garamond" style="font-size: 14px;" class=""><i class=""><br class="">
</i></font></div>
</body>
</html>