<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>195765</bug_id>
          
          <creation_ts>2019-03-14 14:38:58 -0700</creation_ts>
          <short_desc>Please add API to save a PDF from the contents of a WKWebView</short_desc>
          <delta_ts>2019-09-10 16:29:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>Safari 11</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brad Andalman">bya</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516653</commentid>
    <comment_count>0</comment_count>
    <who name="Brad Andalman">bya</who>
    <bug_when>2019-03-14 14:38:58 -0700</bug_when>
    <thetext>I have an application which – as a critical feature – creates a PDF from the contents of a webview. This PDF isn&apos;t merely a container for an image, but is a &quot;real&quot; PDF that contains embedded fonts, etc. The way this is currently accomplished is by rendering a view which contains a legacy WebView (there are actually three, but that is largely beside-the-point) into a PDFContext. It is important that these PDFs match what is in the view *exactly*, which is why we cannot use WebView&apos;s PrintOperation, for example.

We understand that WebViews will be going away at some point in the future, and wanted to adopt WKWebView. Unfortunately, the above design results in a blank PDF when WKWebViews are used. Ideally, this would &quot;just work&quot; and switching to WKWebViews would be trivial for us.

However, it seems like that might violate the design of WKWebViews. If that&apos;s the case, please add API to WKWebView to save a PDF from its contents. Perhaps something similar to takeSnapshot would work? Or perhaps takeSnapshot would work if WKSnapshotConfiguration had a &quot;format&quot; property? 

I&apos;ve filed this as normal severity, but for my application this is clearly a blocker: we cannot adopt WKWebViews, and must continue using the legacy WebViews, until this is addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517465</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-16 13:44:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/48955900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545211</commentid>
    <comment_count>2</comment_count>
    <who name="Wevah">webkit</who>
    <bug_when>2019-06-16 23:49:15 -0700</bug_when>
    <thetext>Seconding this; I stumbled upon being able to capture a WebView as PDF (with clickable links) years ago via -dataWithPDFInsideRect:, and having to remove this feature would be a bummer. (Tangentially, compiling an app with the 10.14 SDK seems to make -dataWithPDFInsideRect: on WebView produce PDFs that can&apos;t be opened properly with non-Apple apps.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568281</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-05 15:09:33 -0700</bug_when>
    <thetext>*** Bug 201520 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568284</commentid>
    <comment_count>4</comment_count>
      <attachid>378128</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-05 15:18:54 -0700</bug_when>
    <thetext>Created attachment 378128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568294</commentid>
    <comment_count>5</comment_count>
      <attachid>378128</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-05 15:45:54 -0700</bug_when>
    <thetext>Comment on attachment 378128
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=378128&amp;action=review

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:5032
&gt; +    // FIXME: &lt;rdar://problem/55081578&gt; PDF exporting on iOS should respect WKSnapshotConfiguration.afterScreenUpdates

I don&apos;t think there&apos;s anything for it to do? That&apos;s there because the image API can snapshot without bouncing to the Web Content process (and thus won&apos;t naturally include changes that haven&apos;t arrived in the latest transaction), but in the PDF case you always get everything because you have to go through the Web Content process.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:435
&gt; +- (void)_takePDFSnapshotWithConfiguration:(WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void (^)(NSData * pdfSnapshotData, NSError * error))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

No spaces after the stars

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2412
&gt; +        auto dictionary = adoptCF(CFDictionaryCreateMutable(NULL, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +        CGRect mediaBox = CGRectMake(0, 0, bitmapSize.width(), bitmapSize.height());
&gt; +        auto mediaBoxData = adoptCF(CFDataCreate(NULL, (const UInt8 *)&amp;mediaBox, sizeof(CGRect)));
&gt; +        CFDictionarySetValue(dictionary.get(), kCGPDFContextMediaBox, mediaBoxData.get());

ObjC dictionary literal syntax is much nicer

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:4786
&gt; +    auto originalLayoutViewportOverrideRect = frameView.layoutViewportOverrideRect();
&gt; +    frameView.setLayoutViewportOverrideRect(LayoutRect(snapshotRect));

Ooh you should add a test for this code (by having a fixed position thing and testing that it ends up in the right place). I didn&apos;t test because I&apos;m not a good person like you, but now you can!

&gt; Tools/MiniBrowser/MiniBrowser.entitlements:4
&gt;  &lt;dict&gt;

Unfortunate that the sorting and read-only -&gt; read-write change are together

&gt; Tools/TestWebKitAPI/Configurations/TestWebKitAPILibrary.xcconfig:32
&gt; +

weird extra space here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568305</commentid>
    <comment_count>6</comment_count>
      <attachid>378128</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-05 16:12:04 -0700</bug_when>
    <thetext>Comment on attachment 378128
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=378128&amp;action=review

&gt; Tools/TestWebKitAPI/cocoa/TestPDFDocument.mm:121
&gt; +    auto context = adoptCF(CGBitmapContextCreate(NULL, boundsRect.size.width, boundsRect.size.height, 8, 0, colorSpace.get(), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big));

You do not have to draw the whole PDF to know the color at a point. You can create 1x1 bitmap context, transform the context to this point and then draw the PDF to the context.

unsigned char pixel[4];
auto context = adoptCF(CGBitmapContextCreate(pixel, 1, 1, 8, sizeof(pixel), colorSpace.get(), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big));
context.translate(-x, -y);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568325</commentid>
    <comment_count>7</comment_count>
      <attachid>378139</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-05 16:54:43 -0700</bug_when>
    <thetext>Created attachment 378139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568326</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-05 16:55:43 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #6)
&gt; Comment on attachment 378128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378128&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/cocoa/TestPDFDocument.mm:121
&gt; &gt; +    auto context = adoptCF(CGBitmapContextCreate(NULL, boundsRect.size.width, boundsRect.size.height, 8, 0, colorSpace.get(), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big));
&gt; 
&gt; You do not have to draw the whole PDF to know the color at a point. You can
&gt; create 1x1 bitmap context, transform the context to this point and then draw
&gt; the PDF to the context.
&gt; 
&gt; unsigned char pixel[4];
&gt; auto context = adoptCF(CGBitmapContextCreate(pixel, 1, 1, 8, sizeof(pixel),
&gt; colorSpace.get(), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big));
&gt; context.translate(-x, -y);

Oh super neat! Will try out this change the next upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568637</commentid>
    <comment_count>9</comment_count>
      <attachid>378218</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-06 12:39:37 -0700</bug_when>
    <thetext>Created attachment 378218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568670</commentid>
    <comment_count>10</comment_count>
      <attachid>378228</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-06 13:48:31 -0700</bug_when>
    <thetext>Created attachment 378228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568920</commentid>
    <comment_count>11</comment_count>
      <attachid>378300</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-07 14:02:19 -0700</bug_when>
    <thetext>Created attachment 378300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568933</commentid>
    <comment_count>12</comment_count>
      <attachid>378301</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-07 15:50:53 -0700</bug_when>
    <thetext>Created attachment 378301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568939</commentid>
    <comment_count>13</comment_count>
      <attachid>378303</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-07 16:20:37 -0700</bug_when>
    <thetext>Created attachment 378303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569015</commentid>
    <comment_count>14</comment_count>
      <attachid>378330</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 11:29:32 -0700</bug_when>
    <thetext>Created attachment 378330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569016</commentid>
    <comment_count>15</comment_count>
      <attachid>378331</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 11:51:57 -0700</bug_when>
    <thetext>Created attachment 378331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569021</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 13:09:42 -0700</bug_when>
    <thetext>The &lt;win&gt; bot build failure has nothing to do with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569025</commentid>
    <comment_count>17</comment_count>
      <attachid>378331</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-08 14:35:25 -0700</bug_when>
    <thetext>Comment on attachment 378331
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=378331&amp;action=review

Plus the one offline comment

&gt; Source/WebCore/rendering/PaintPhase.h:70
&gt; +    AnnotateLinks               = 1 &lt;&lt; 12,

This one is weird enough it probably deserves a comment

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:-4216
&gt; -		537CF84822EFD72000C6EBB3 /* Check .xcfilelists */ = {

Where did this go??

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:5048
&gt; +					&quot;$(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Versions/A/Frameworks&quot;,

Shouldn&apos;t this be in an xcconfig?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569027</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 14:51:28 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #17)
&gt; Comment on attachment 378331 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378331&amp;action=review
&gt; 
&gt; Plus the one offline comment
&gt; 
&gt; &gt; Source/WebCore/rendering/PaintPhase.h:70
&gt; &gt; +    AnnotateLinks               = 1 &lt;&lt; 12,
&gt; 
&gt; This one is weird enough it probably deserves a comment
&gt; 
&gt; &gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:-4216
&gt; &gt; -		537CF84822EFD72000C6EBB3 /* Check .xcfilelists */ = {
&gt; 
&gt; Where did this go??

No clue - I did not consciously remove it.

I will restore it manually, though.

&gt; &gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:5048
&gt; &gt; +					&quot;$(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Versions/A/Frameworks&quot;,
&gt; 
&gt; Shouldn&apos;t this be in an xcconfig?

Per the patch, it actually *is* in an xcconfig...  I&apos;m not actually sure how it got into the xcodeproj.

I&apos;ll cleanup the xcodeproj stuff before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569029</commentid>
    <comment_count>19</comment_count>
      <attachid>378336</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 15:52:26 -0700</bug_when>
    <thetext>Created attachment 378336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569031</commentid>
    <comment_count>20</comment_count>
      <attachid>378337</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 16:24:49 -0700</bug_when>
    <thetext>Created attachment 378337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569034</commentid>
    <comment_count>21</comment_count>
      <attachid>378339</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-08 16:53:13 -0700</bug_when>
    <thetext>Created attachment 378339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569620</commentid>
    <comment_count>22</comment_count>
      <attachid>378476</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-10 12:46:03 -0700</bug_when>
    <thetext>Created attachment 378476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569626</commentid>
    <comment_count>23</comment_count>
      <attachid>378476</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-10 13:00:39 -0700</bug_when>
    <thetext>Comment on attachment 378476
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=378476&amp;action=review

&gt; Source/WebCore/rendering/RenderElement.cpp:2036
&gt; +    return element() &amp;&amp; element()-&gt;isLink() &amp;&amp; (document().printing() || (view().frameView().paintBehavior() &amp; PaintBehavior::AnnotateLinks));

Would be nicer to set the PaintBehavior::AnnotateLinks bit when printing.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:5040
&gt; +- (void)_takePDFSnapshotWithConfiguration:(WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void (^)(NSData *, NSError *))completionHandler

Should the format (PDF) be part of the WKSnapshotConfiguration?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:5057
&gt; +            handler(nil, createNSError(WKErrorUnknown).get());

Can we do better than &quot;unknown error&quot;?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:7754
&gt; +#if PLATFORM(COCOA)
&gt; +void WebPageProxy::drawToPDF(FrameIdentifier frameID, const Optional&lt;FloatRect&gt;&amp; rect, DrawToPDFCallback::CallbackFunction&amp;&amp; callback)

Why not put it in WebPageProxyCocoa.mm?

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:263
&gt; +        auto mediaBoxData = adoptCF(CFDataCreate(NULL, (const UInt8 *)&amp;mediaBox, sizeof(CGRect)));

That&apos;s pretty crazy but looks correct.

&gt; Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:276
&gt; +        CGPDFContextBeginPage(pdfContext.get(), dictionary);
&gt; +
&gt; +        GraphicsContext graphicsContext { pdfContext.get() };
&gt; +        graphicsContext.scale({ 1, -1 });
&gt; +        graphicsContext.translate(0, -bitmapSize.height());
&gt; +
&gt; +        paintSnapshotAtSize(rect, bitmapSize, options, *coreFrame, *frameView, graphicsContext);
&gt; +
&gt; +        CGPDFContextEndPage(pdfContext.get());

Use some {} to scope the GraphicsContext between the begin page/end page

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:4719
&gt;  #if PLATFORM(COCOA)
&gt; +void WebPage::drawToPDF(FrameIdentifier frameID, const Optional&lt;FloatRect&gt;&amp; rect, CallbackID callbackID)

WebPageCocoa.mm?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:4735
&gt; +    frameView.setLayoutViewportOverrideRect(LayoutRect(snapshotRect));

Do you really want position:fixed thing laid out relative to the snapshotRect if it&apos;s just a small portion of the document? Probably not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569718</commentid>
    <comment_count>24</comment_count>
      <attachid>378476</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-10 16:12:56 -0700</bug_when>
    <thetext>Comment on attachment 378476
Patch

Clearing flags on attachment: 378476

Committed r249739: &lt;https://trac.webkit.org/changeset/249739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569719</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-10 16:12:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569725</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-10 16:29:35 -0700</bug_when>
    <thetext>Sorry for missing these comments before CQ landed.

(In reply to Simon Fraser (smfr) from comment #23)
&gt; Comment on attachment 378476 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378476&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderElement.cpp:2036
&gt; &gt; +    return element() &amp;&amp; element()-&gt;isLink() &amp;&amp; (document().printing() || (view().frameView().paintBehavior() &amp; PaintBehavior::AnnotateLinks));
&gt; 
&gt; Would be nicer to set the PaintBehavior::AnnotateLinks bit when printing.

I agree the printing codepath has room for cleanup, this included! But I also suspect our printing tests don&apos;t cover annotations in the generated PDF, and therefore the risk of regression is... non-trivial.
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:5040
&gt; &gt; +- (void)_takePDFSnapshotWithConfiguration:(WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void (^)(NSData *, NSError *))completionHandler
&gt; 
&gt; Should the format (PDF) be part of the WKSnapshotConfiguration?

The current API in its current form literally cannot handle this new use-case, so we had to add PDF-specific API.

The hope is that we can get support from other teams to make the current API work, at which point we would fold the &quot;make PDF&quot; bit onto snapshot configuration.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:5057
&gt; &gt; +            handler(nil, createNSError(WKErrorUnknown).get());
&gt; 
&gt; Can we do better than &quot;unknown error&quot;?

Not with API, sadly. (We need a big WKError API revamp, not just related to this patch!

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:4735
&gt; &gt; +    frameView.setLayoutViewportOverrideRect(LayoutRect(snapshotRect));
&gt; 
&gt; Do you really want position:fixed thing laid out relative to the
&gt; snapshotRect if it&apos;s just a small portion of the document? Probably not?

Discussed this IRL - Great point, and I&apos;m working on it now!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378128</attachid>
            <date>2019-09-05 15:18:54 -0700</date>
            <delta_ts>2019-09-05 16:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190905151853.patch</filename>
            <type>text/plain</type>
            <size>58878</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYwOTEyZjgyZTY1NTI4
MTQwZGZkMDM4ZmZhM2QxM2E0OGM1YjI3Yi4uMDk5M2FjYmRjODBmMzFiZTQ3NmQzZWM3YzFkMTky
N2EzZjBmN2FkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOC0yNyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZWQgZGV2aWNlcyBzaG91bGQgbm90
IGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIHNlYXJjaGluZyBmb3IgYSBjYXB0dXJlIGRldmlj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyYTdhYzMyY2I5MzU5MTM2NmViZmRiZDNiOTk2MzdjNTlkNzdiNzVmLi45
YTIxMTRmZWYwNTVmOTdlN2I0NmNkNjgyZjg0M2MzOGVmNDY3MmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM2IEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBX
S1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHJlZmFjdG9yaW5nIGEgY29t
YmluYXRpb24gb2YgInNuYXBzaG90Rmlyc3RQYWdlIiBQREYgcHJpbnRpbmcgY29kZSBhbmQgdGhl
CisgICAgICAgICJ0YWtlU25hcHNob3QiIEFQSSBjb2RlIHRvIGNhcHR1cmUgdGhlIG9uLXNjcmVl
biB2aXNpYmxlIHBhZ2UgdG8gYSBQREYgYXQgZnVsbCBmaWRlbGl0eS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rh
a2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZHJhd1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9Q
REZDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dr
X3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGQ2FsbGJhY2spOiBNb3ZlIHRvIGNyb3NzIHBsYXRmb3JtIFdlYlBhZ2VQcm94eS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cGRmU25hcHNob3RBdFNpemUpOiBJbnN0ZWFkIG9mIGFzc3VtaW5nIDEgcGFn
ZSBjYXBwZWQgYXQgMjAwIGluY2hlcywKKyAgICAgICAgICBwYWdpbmF0ZSBldmVyeSAyMDAgaW5j
aGVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMDgtMjYgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgZnVsbHNjcmVlbiBlbGVtZW50IGluIHJB
RigpIGNhbGxiYWNrIGFmdGVyIHJlcXVlc3RGdWxsc2NyZWVuKCkgY2FuIGxlYXZlIGZ1bGxzY3Jl
ZW4gaW4gaW5jb25zaXN0ZW50IHN0YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IGNiNGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMz
NjZjNzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBm
aWxsV2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNw
YXJlbnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdh
cm5pbmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQot
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7
CisKKyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1
Z1JlY3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJl
Y3QpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwg
MjU1KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhp
cy0+cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5
NTk4YzI5Y2JhNTA3MzE2MzkwMTg4YjkuLjhjNjk5YTM2YzgyM2ZhODU2MTg0N2UwYWZhMjg2MGRj
OGE4MDIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzksNiArMTYzOSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBmbG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0
KGNvbnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBG
SVhNRTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91
bGQgaW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhaW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhi
NTNiLi4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQ
YWludEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAg
ICA9IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJv
dW5kYXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAg
ICBUaWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlu
a3MgICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMWIxMWUy
ZTNmMWNkMWVhNDdmODY3YTBlZDBkZDA4MGJhOGM5NzJjYS4uN2M2ZmRlNDY3NTI3NTZlMjIwMTIx
NTBhYTk3Y2JkYzZlOGExMzRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcApAQCAtMjAxOSw3ICsyMDE5LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRh
dGVPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVy
RWxlbWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVt
ZW50KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgp
LnByaW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWlu
dEJlaGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGI0Mjk3ZjMwZGJhM2U4YTZiMzFhYTE0NzQ5MWI5
NTA3MWQzZjJhZS4uMDI4YmI4MTBiOTMwOTc3ZTdmOTFlYmIyMDZlMjRlMjRhYmJiNmU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01
MDI3LDYgKzUwMjcsMzQgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0
SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAor
LSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25m
aWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIC8vIEZJ
WE1FOiA8cmRhcjovL3Byb2JsZW0vNTUwODE1Nzg+IFBERiBleHBvcnRpbmcgb24gaU9TIHNob3Vs
ZCByZXNwZWN0IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmFmdGVyU2NyZWVuVXBkYXRlcworCisg
ICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZy
YW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5m
cmFtZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3Jl
YXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYg
KHNuYXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJh
dGlvbi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBz
aG90Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9h
dFJlY3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3Jl
YXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAg
ICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNp
ZiBQTEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVy
Q2hhbmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYz
MDA3ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uYmI2Nzg1YmRmOGI3N2E3MzJiOTBjMzgxZWQ4
MDU3OWY2MjJmZmJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9p
ZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0
RWxlbWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TRGF0YSAqIHBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqIGVycm9yKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORSAmJiAhVEFSR0VUX09TX1dBVENI
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5Yzk1ZjAyZmM4
OGVmMDk2YTM4ZjVkYjA4NTg2NjJkNmJlZTQzMmNjLi5jNTc4NzM5ZjliNDgwYzQ4MzkwNWIyNjEw
MjBkNTc4YmZlOWQxMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTc3MzUsNiArNzczNSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9y
UHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogfQogI2Vu
ZGlmCiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIERyYXdUb1BERkNhbGxiYWNrOjpD
YWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7CisgICAgICAgIGNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSgpLCBDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERihmcmFtZUlELCBy
ZWN0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
RHJhd1RvUERGQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxi
YWNrKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBkZkRh
dGEpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFi
bGVTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKGhhc1J1bm5pbmdQcm9jZXNzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlNGJjMTMwMDI2NTc1ZTViMDg4NTc4Mjkz
MDY4MWFkOTI5NTZlNzBkLi44ZDFmYjY5ZGM2YjUyNThiN2RjZjkxNjhkYzg0M2YyNTlkNDYwMjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzU1LDkgKzM1NSw5
IEBAIHN0cnVjdCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogfTsKKyNlbmRpZgogCiB1c2luZyBEcmF3VG9QREZD
YWxsYmFjayA9IEdlbmVyaWNDYWxsYmFjazxjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmPjsKLSNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CkBAIC0xMTYyLDEy
ICsxMTYyLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJl
ZjxEYXRhQ2FsbGJhY2s+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdWludDMy
X3QgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5j
dGlvbiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5j
dGlvbiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKwogICAgIFBhZ2VMb2FkU3RhdGUm
IHBhZ2VMb2FkU3RhdGUoKSB7IHJldHVybiBtX3BhZ2VMb2FkU3RhdGU7IH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDYxZGMxYmM1MDJkNWM5MjUzM2UyNzFiN2QxNmM5ZGY0Y2YyNjNhNDMu
Ljc5MTQ5OTRiMWZiYTAzYmMzZWI2NGI3OWRjZDA1YmYxYmZlZDY4NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE5Niw5ICsx
OTYsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENvbXBsZXRlU3ludGhl
dGljQ2xpY2soKQogICAgIERpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNz
YXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBIYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZv
cm1hdGlvbkZvclBvdGVudGlhbFRhcCh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZsb2F0
UmVjdCByZW5kZXJSZWN0LCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQotICAgIERyYXdUb1BERkNhbGxi
YWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwog
I2VuZGlmCisgICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKICAgICBTZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHN0cnVjdCBXZWJLaXQ6OkRhdGFEZXRlY3Rp
b25SZXN1bHQgZGF0YURldGVjdGlvblJlc3VsdCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAwNGY5YzZlMjcwMmU3ZDg3Y2U1Njhi
ZTIwMjExZTcwNmQ3MWJjMmVlLi5kYWEwY2ZkZDhlYzg2ZDcyZTE5MDBjMjA0MDFhYzU0MzhiNzFm
MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpA
QCAtNzIwLDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9y
bWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9
IDE7CiAgICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25h
cHNob3RGaXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcg
UERGcyB0YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFn
ZSkgewogICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAw
ICogNzI7IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5j
aGVzCiAgICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiYmUz
OWY0ZjNlNTU4NGI1MDc0OTkxZmMyYWE1NjYwNjJiZTQ1ODIxLi5kZjNjZTU4OWFjNThlNGI5MDg1
MGRjNzM2Nzg1YjM4NGQyYTgzMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQ
YWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRp
ZmllciBmcmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxEcmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
Y2FsbGJhY2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
cGRmRGF0YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlk
Q2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShj
b250ZW50U2l6ZUNhdGVnb3J5KSwgbV9wYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiZmY2M2FmMjEwNzU5OWQxYmZiYWFhNjczYmI4
ODA1YzQwNjNmNjc4Li4yNmY3YTRjYzhmODc4MDcyNjY5OGRiYTNmZjRlOTU5OGI2YmJjZjM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjM3
OSw3ICsyMzc5LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKIH0KIAogI2lmIFVTRShDRikK
LVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zKQorUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6cGRmU25hcHNob3RBdFNpemUo
SW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25z
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CiAg
ICAgaWYgKCFjb3JlRnJhbWUpCkBAIC0yMzk2LDE0ICsyMzk2LDM1IEBAIFJldGFpblB0cjxDRkRh
dGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpCiAgICAgYXV0byBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKICAgICBhdXRvIHBkZkNvbnRleHQgPSBh
ZG9wdENGKENHUERGQ29udGV4dENyZWF0ZShkYXRhQ29uc3VtZXIuZ2V0KCksICZtZWRpYUJveCwg
bnVsbHB0cikpOwogCi0gICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCks
IG51bGxwdHIpOworICAgIGludDY0X3QgcmVtYWluaW5nSGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWln
aHQoKTsKKyAgICBpbnQ2NF90IG5leHRSZWN0WSA9IHJlY3QueSgpOworICAgIHdoaWxlIChyZW1h
aW5pbmdIZWlnaHQgPiAwKSB7CisgICAgICAgIC8vIFBERnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdo
dCBsaW1pdCBvZiAyMDAgaW5jaGVzIGF0IDcyZHBpLgorICAgICAgICAvLyBXZSdsbCBleHBvcnQg
b25lIFBERiBwYWdlIGF0IGEgdGltZSwgdXAgdG8gdGhhdCBtYXhpbXVtIGhlaWdodC4KKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludDY0X3QgbWF4UGFnZUhlaWdodCA9IDcyICogMjAwOworICAgICAg
ICBiaXRtYXBTaXplLnNldEhlaWdodChzdGQ6Om1pbihyZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VI
ZWlnaHQpKTsKKyAgICAgICAgcmVjdC5zZXRIZWlnaHQoYml0bWFwU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIHJlY3Quc2V0WShuZXh0UmVjdFkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0IGdyYXBo
aWNzQ29udGV4dCB7IHBkZkNvbnRleHQuZ2V0KCkgfTsKLSAgICBncmFwaGljc0NvbnRleHQuc2Nh
bGUoeyAxLCAtMSB9KTsKLSAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBT
aXplLmhlaWdodCgpKTsKLSAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUs
IG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisgICAg
ICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShO
VUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2Uo
MCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
YXV0byBtZWRpYUJveERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUlu
dDggKikmbWVkaWFCb3gsIHNpemVvZihDR1JlY3QpKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtDR1BERkNvbnRleHRNZWRpYUJveCwgbWVkaWFCb3hE
YXRhLmdldCgpKTsKKworICAgICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5n
ZXQoKSwgZGljdGlvbmFyeS5nZXQoKSk7CisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBo
aWNzQ29udGV4dCB7IHBkZkNvbnRleHQuZ2V0KCkgfTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNjYWxlKHsgMSwgLTEgfSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwg
LWJpdG1hcFNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHBhaW50U25hcHNob3RBdFNpemUocmVj
dCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3ND
b250ZXh0KTsKKworICAgICAgICBDR1BERkNvbnRleHRFbmRQYWdlKHBkZkNvbnRleHQuZ2V0KCkp
OworCisgICAgICAgIG5leHRSZWN0WSArPSBiaXRtYXBTaXplLmhlaWdodCgpOworICAgICAgICBy
ZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFnZUhlaWdodDsKKyAgICB9CiAKLSAgICBDR1BERkNvbnRl
eHRFbmRQYWdlKHBkZkNvbnRleHQuZ2V0KCkpOwogICAgIENHUERGQ29udGV4dENsb3NlKHBkZkNv
bnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKQEAgLTQ3NDYsNiArNDc2NywzNCBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbgogICAgICAgICByZXN1bHRQYWdlUmVjdHMuYXBwZW5kKEludFJlY3QoMCwg
MCwgMSwgMSkpOwogfQogCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQoreworICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKTsKKyAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKKyAgICBpZiAocmVjdCkKKyAgICAgICAg
c25hcHNob3RTaXplID0gSW50U2l6ZShyZWN0LT5zaXplKCkpOworICAgIGVsc2UKKyAgICAgICAg
c25hcHNob3RTaXplID0geyBmcmFtZVZpZXcuY29udGVudHNTaXplKCkgfTsKKworICAgIEludFJl
Y3Qgc25hcHNob3RSZWN0OworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFJlY3QgPSB7
IHsoaW50KXJlY3QtPngoKSwgKGludClyZWN0LT55KCl9LCBzbmFwc2hvdFNpemUgfTsKKyAgICBl
bHNlCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgezAsIDB9LCBzbmFwc2hvdFNpemUgfTsKKwor
ICAgIGF1dG8gb3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCA9IGZyYW1lVmlldy5s
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpOworICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3
cG9ydE92ZXJyaWRlUmVjdChMYXlvdXRSZWN0KHNuYXBzaG90UmVjdCkpOworICAgIGF1dG8gb3Jp
Z2luYWxQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LnBhaW50QmVoYXZpb3IoKTsKKyAgICBmcmFt
ZVZpZXcuc2V0UGFpbnRCZWhhdmlvcihvcmlnaW5hbFBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2
aW9yOjpBbm5vdGF0ZUxpbmtzKTsKKworICAgIGF1dG8gcGRmRGF0YSA9IHBkZlNuYXBzaG90QXRT
aXplKHNuYXBzaG90UmVjdCwgc25hcHNob3RTaXplLCAwKTsKKworICAgIGZyYW1lVmlldy5zZXRM
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KTsKKyAgICBmcmFtZVZpZXcuc2V0UGFpbnRCZWhhdmlvcihvcmlnaW5hbFBhaW50QmVoYXZp
b3IpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEcmF3VG9QREZDYWxsYmFj
ayhJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZE
YXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOworfQorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDVmNmIyNzZlYTIwZWU0ZGZiMGE1NDBkZTYyZDkwZTgyN2NmMjk5ZjkuLjllYjQ4ZDE2YjAyMmVk
ODAzMDlkNzZmYWQ2YWNhZDU3MjY3ODI0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4MSw2ICs4ODEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5JiYpOwogI2VuZGlm
CiAKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDYWxsYmFja0lEKTsKKwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5pc2hQ
cmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7
CkBAIC0xNjAxLDcgKzE2MDMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25h
cHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBz
bmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywgdW5zaWduZWQgbWF4
aW11bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwog
I2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hv
dEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIFNu
YXBzaG90T3B0aW9ucyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCA1YjllMWUwN2ViN2Q4YjcwYjI1NWFlMmI3MmI2Njk1MDQ4OWNhZTM3Li5h
ZWU3MDZmYTUyYzllMWNkMzAwODMxNDZmODA4NjQxMzQwZTViOTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM4
OCw2ICszODgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50
KSBTeW5jaHJvbm91cwogI2VuZGlmCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIERy
YXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4YzMwNGZhNjBiNjBkYTE4NGZlZjg5ODBlMDI0NTk0MjZjNDhjMzI3Li5jOWQwZGFjZTE3Yjhi
MTI0ODJjMTg4ODhkYzg0MTgyZDhmMzFmZWQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDktMDUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBh
IFBERiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ4OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIC1BZGQgYW4gIkV4cG9ydCB0byBQREYuLi4iIG1lbnUgb3B0aW9uIHRvIE1pbmlCcm93c2Vy
LgorICAgICAgICAtQWRkIEFQSSB0ZXN0cyBmb3IgdGhlIEFQSSBpdHNlbGYuCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHM6CisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9NYWluTWVu
dS54aWI6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm06CisgICAgICAgICgtW1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHZhbGlkYXRlTWVu
dUl0ZW06XSk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHZhbGlkYXRl
TWVudUl0ZW06XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVB
c1BERjpdKToKKyAgICAgICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjplcXVhbFVzaW5nUkdCQSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbTogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b0NHUmVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp0b1BsYXRmb3JtUG9pbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFu
bm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRl
c3RQREZBbm5vdGF0aW9uOjppc0xpbmsgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERkFubm90YXRpb246OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpUZXN0UERGUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQ
REZQYWdlOjpUZXN0UERGUGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFn
ZTo6YW5ub3RhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNo
YXJhY3RlckNvdW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
Ojp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpyZWN0
Rm9yQ2hhcmFjdGVyQXRJbmRleCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RQREZQYWdlOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RQREZEb2N1bWVudDo6VGVzdFBERkRvY3VtZW50KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZSk6CisKIDIwMTktMDgtMjcgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJ1bi13ZWJraXQtdGVz
dHM6IFVzZSAtbm9CdWxrU3ltYm9saWNhdGlvbiB3aGVuIGNhbGxpbmcgc3BpbmR1bXAgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRp
dGxlbWVudHMgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKaW5k
ZXggYzllYTM3NjQ2OGE2NDk5NzZjOWFlMzhmMjk5YTMyNWRjYjRkYWRiOS4uZTRjMmJhMTgwZjM5
NWRjYTFkMzQxZGI2NjZkNWMzNGMyZWEzZWMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL01pbmlC
cm93c2VyLmVudGl0bGVtZW50cwpAQCAtMiwyMCArMiwyMCBAQAogPCFET0NUWVBFIHBsaXN0IFBV
QkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20v
RFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0
PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+CisJPHRydWUvPgog
CTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRldmljZS51c2I8L2tleT4KIAk8dHJ1ZS8+Ci0JPGtl
eT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFkLW9ubHk8L2tleT4K
Kwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNlbGVjdGVkLnJlYWQtd3JpdGU8
L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8
L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2Vw
dGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25seTwva2V5PgorCTxzdHJpbmc+Lzwvc3Ry
aW5nPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24ubWFjaC1s
b29rdXAuZ2xvYmFsLW5hbWU8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJpbmc+Y29tLmFwcGxlLlNh
ZmFyaS5TYWZlQnJvd3NpbmcuU2VydmljZTwvc3RyaW5nPgogCQk8c3RyaW5nPmNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya2luZ0RhZW1vbjwvc3RyaW5nPgogCTwvYXJyYXk+Ci0JPGtleT5jb20uYXBw
bGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUu
c2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUu
c2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25s
eTwva2V5PgotCTxzdHJpbmc+Lzwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKaW5kZXggYzViOWQ1
NGE1MjIwNDI2MzZiNzg4MjU3NTY0NGUzYTAyNGE1ZDk0Ni4uZGZkYjY0MDEzZjAxNmJkMGJkYTUy
MGE1ZWU4ZDA4YzMyOTViZmRkYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jy
b3dzZXJXaW5kb3dDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgQGludGVyZmFjZSBCcm93c2Vy
V2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CiAKIC0gKElCQWN0aW9uKW9w
ZW5Mb2NhdGlvbjooaWQpc2VuZGVyOwogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRl
cjsKKwogLSAoSUJBY3Rpb24pZmV0Y2g6KGlkKXNlbmRlcjsKIC0gKElCQWN0aW9uKXNoYXJlOihp
ZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZWxvYWQ6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggNGI5OTA1N2EwM2Nl
MDY2MDRiMmQzMTUwNzZjMGM0YTE2ZTA0NDgyZi4uNGQ0NTczOTZmMDY1NGUwZjllZTgzNGY5MTRk
MWRkYTAyOWZlNmY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0KQEAgLTkzLDYgKzkzLDExIEBAIC0gKElCQWN0aW9uKWZvcmNlUmVwYWlu
dDooaWQpc2VuZGVyCiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwog
fQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIGRvZXNO
b3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKK30KKwogLSAoSUJBY3Rpb24pZ29CYWNrOihpZClz
ZW5kZXIKIHsKICAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2NtZF07CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliIGIvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL01haW5NZW51LnhpYgppbmRleCA1NDZhNjBmMDMyZTcyZTQyYjZhNmMzNmM0OThl
MjhmMTMzMjM3NWIzLi4wNzE2MzQ2YzUyOTdjMzYwMGM0OGI3Y2YwNGM0MzEyOGRlNmJmMjRhIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5J
bnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIx
Mzc3MSIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9
Im5vbmUiPgorPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2Nv
YS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIxNDQ5MC43MCIgdGFyZ2V0UnVudGlt
ZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9Im5vbmUiPgogICAgIDxkZXBl
bmRlbmNpZXM+Ci0gICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFj
ZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNpb249IjEzNzcxIi8+CisgICAgICAgIDxwbHVnSW4g
aWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNp
b249IjE0NDkwLjcwIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgICAgPG9iamVjdHM+CiAgICAg
ICAgIDxjdXN0b21PYmplY3QgaWQ9Ii0yIiB1c2VyTGFiZWw9IkZpbGUncyBPd25lciIgY3VzdG9t
Q2xhc3M9Ik5TQXBwbGljYXRpb24iPgpAQCAtMTMzLDYgKzEzMywxMiBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0ic2F2ZURvY3VtZW50QXM6
IiB0YXJnZXQ9Ii0xIiBpZD0iMzYzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvY29ubmVjdGlvbnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9IlNhdmUgQXMgUERG
4oCmIiBrZXlFcXVpdmFsZW50PSJTIiBpZD0iZ21TLTNRLW9McyI+CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJN
YXNrIiBvcHRpb249IllFUyIgY29tbWFuZD0iWUVTIi8+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVBc1BERjoiIHRhcmdldD0iLTEiIGlkPSIyNVQtSWQt
MzM0Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9IlJldmVydCB0byBTYXZlZCIgaWQ9IjExMiI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVp
dmFsZW50TW9kaWZpZXJNYXNrIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxj
b25uZWN0aW9ucz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0KaW5kZXggNDFkMWE3OGJjNjFlMmQ3ODI1ZDkzNzNjOTZhNzYwYTkyYmQ1
NmY1Zi4uMDMzNGYwOGMwNTUyNTg3YTFjYzM4NjAyMTU0ZWE4YTA0NzI5MTRhZCAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAg
LTEzNSw2ICsxMzUsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKilt
ZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBbbWVudUl0ZW0gYWN0aW9uXTsKIAorICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICByZXR1cm4gTk87CisK
ICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAgICAgICAgcmV0dXJuIFtz
ZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbU91dDopKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bQppbmRleCA2OWYxMGMwY2YwYTVmZTk4MTVmMWExMWQyNjViNDNjNTlhY2E3YThjLi5lZDA3MWE4
NzA3NzdiODRiMDIyMTFhYWYyYTVhZDhmNjg0ZDViNDgxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMjA4LDYgKzIwOCw5
IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiB7CiAg
ICAgU0VMIGFjdGlvbiA9IG1lbnVJdGVtLmFjdGlvbjsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICByZXR1cm4gWUVTOworCiAgICAgaWYgKGFjdGlv
biA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5d
OwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKQEAgLTgxNSw0ICs4MTgs
MTcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBpbmNsdWRlU2Vuc2l0
aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICgKICAgICBkZWNpc2lvbkhhbmRsZXIoZmFsc2Up
OwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgoreworICAgIE5TU2F2ZVBh
bmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAgIHBhbmVsLmFsbG93ZWRG
aWxlVHlwZXMgPSBAWyBAInBkZiIgXTsKKyAgICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2lu
ZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgewor
ICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKSB7CisgICAgICAgICAgICBb
X3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICAgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb1VSTDpbcGFuZWwgVVJMXSBvcHRp
b25zOjAgZXJyb3I6bmlsXTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgfV07Cit9
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnCmluZGV4IDJkZTYxZjc5NTRi
NTA4OTUzMDlhOGM0YTY4ZjEyNWQ0N2FhODA0OWQuLjdhNDI5NzFlMWU3MzY4M2FiYzJkYWVmZGIy
MjU1NTQ2YTMwMGVkOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZwpAQCAtMjgs
MyArMjgsOCBAQAogUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsKIFNLSVBfSU5TVEFMTCA9
IFlFUzsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOworCisKK1NZU1RFTV9GUkFN
RVdPUktfU0VBUkNIX1BBVEhTID0gJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKGluaGVyaXRlZCk7CisKKwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGUyZmI2OTAyNGJiMTQ5ZTAx
NTg4NjU2MGZlNGI0MzhjNjU5YjUxMzkuLjRkOWI0ZDc0MzIwZjUwZTJmNTE0MWEzMzdkMjQwZTQz
MzA5N2FkZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTMz
LDggKzMzLDkgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKLU9C
SkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TQ29sb3I7CiBPQkpDX0NMQVNTIE5TRGlj
dGlvbmFyeTsKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNGRkNTQ3Y2U3NGJlODkzYmQ3
Mjc0YzRhMzAzYjhmZDQzOGNhM2M4Li5lY2Q1NTU5YzJlZWEwZjRjNGZhNTNkZDU3YjA5NTBjZDJl
ZmQwZDRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjczLDYgKzI3MywxMSBAQAogCQk1
MUIxRUU5NzFDODBGQUVGMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFF
RTk1MUM4MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07
CiAJCTUxQkNFRTRFMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkNFRTRDMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1s
ICovOyB9OwogCQk1MUJDRUU0RjFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTIuaHRtbCAqLzsgfTsKKwkJNTFCRTlGOTIyMzE5RThENDAwRjk2Q0UyIC8qIFBERlNuYXBzaG90
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlG
OTEyMzE5RThDMTAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tICovOyB9OworCQk1MUJFOUY5QjIz
MUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjlBMjMxRjJFOTgwMEY5NkNFMiAvKiBR
dWFydHouZnJhbWV3b3JrICovOyB9OworCQk1MUJFOUY5QzIzMUYyRjREMDBGOTZDRTIgLyogUXVh
cnR6LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkU5RjlBMjMxRjJFOTgwMEY5NkNFMiAvKiBRdWFydHouZnJhbWV3b3JrICovOyB9
OworCQk1MUJFOUY5RTIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjlEMjMxRjM1
MUUwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovOyB9OworCQk1MUJFOUZBMTIzMjAyMzhB
MDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlGOUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZE
b2N1bWVudC5tbSAqLzsgfTsKIAkJNTFDNjgzREUxRUExMzRFODAwNjUwMTgzIC8qIFdLVVJMU2No
ZW1lSGFuZGxlci0xLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1t
ICovOyB9OwogCQk1MUM4RTFBNTFGMjZBRjRDMDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovOyB9
OwogCQk1MUM4RTFBOTFGMjdGNDk2MDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5wbGlzdCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFu
ZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLzsgfTsKQEAgLTE3NjEsNiAr
MTc2NiwxMSBAQAogCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQ
cm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0
QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQkU5RjkxMjMxOUU4QzEwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBERlNuYXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gUXVhcnR6LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUXVhcnR6LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTUxQkU5RjlE
MjMxRjM1MUUwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQ
REZLaXQuZnJhbWV3b3JrOyBwYXRoID0gUGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9w
ZXIvU0RLcy9NYWNPU1gxMC4xNC5zZGsvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHou
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9QREZLaXQuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gREVWRUxPUEVSX0RJUjsgfTsKKwkJNTFCRTlGOUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRl
c3RQREZEb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFRlc3RQREZEb2N1bWVudC5tbTsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGQTAyMzIwMjM4QTAwRjk2Q0UyIC8qIFRl
c3RQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0UERG
RG9jdW1lbnQuaDsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4
RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0
aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBFbXB0eUdyYW5k
ZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjU0Nyw2ICsyNTU3LDggQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAor
CQkJCTUxQkU5RjlFMjMxRjM1MUUwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJNTFCRTlGOUMyMzFGMkY0RDAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1NjEsNiArMjU3Myw3IEBACiAJCQkJNUNGQUNGNjMy
MjZGNzNDNjAwNTZDN0QwIC8qIGxpYmJvcmluZ3NzbC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
N0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQk1NzhDQkQ2NzIwNEZCMkM4MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlv
bi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1MUJFOUY5QjIzMUYyRTk4MDBGOTZD
RTIgLyogUXVhcnR6LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNEMUQ4
NzdDMEQwMEVERTcyQSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAog
CQkJCTU3NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CkBAIC0yNjU4LDYgKzI2NzEsOCBAQAogCQkJCTVDRTc1OTQ3MjJB
ODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCiAJCQkJMkQxQzA0
QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQky
RDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywK
KwkJCQk1MUJFOUZBMDIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCisJ
CQkJNTFCRTlGOUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAqLywKIAkJ
CQlBMTRGQzU4RDFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29sLmggKi8sCiAJCQkJQTE0
RkM1OEUxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSAqLywKIAkJCQkyRUZGMDZE
MjFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5oICovLApAQCAtMjgxOSw2ICsyODM0
LDcgQEAKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAog
CQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJ
CQkJNTFEOEMxOEYyMjY3QjI2NzAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSAqLywKKwkJ
CQk1MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8sCiAJCQkJM0ZD
QzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywK
IAkJCQk4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVz
Lm1tICovLAogCQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAq
LywKQEAgLTMwODcsNiArMzEwMyw4IEBACiAJCQkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8q
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk3QzgzRTAyOTFEMEE1Q0RGMDBG
RUJDRjMgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc4Q0JENjYyMDRGQjJDNzAwODNCOUYyIC8qIExv
Y2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLAorCQkJCTUxQkU5RjlEMjMxRjM1MUUwMEY5
NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovLAorCQkJCTUxQkU5RjlBMjMxRjJFOTgwMEY5NkNF
MiAvKiBRdWFydHouZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNDMUQ4NzdDMEQwMEVERTcyQSAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayAqLywKIAkJCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYg
LyogU2VjdXJpdHkuZnJhbWV3b3JrICovLAogCQkJKTsKQEAgLTQ2MjEsNiArNDYzOSw3IEBACiAJ
CQkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTlCMjM0NjQyMUY5NDNFMjcwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MUQ4QzE5MDIyNjdCMjZEMDA3OTdFNDAgLyogUERGTGlua1JlZmVy
cmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCRTlGOTIyMzE5RThENDAwRjk2Q0UyIC8qIFBE
RlNuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTMxRDBBNjQzQTAwRkVCQ0Yz
IC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQ0M0RkU1
MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VBNjFBNDExQTBGMDA0NDdDNEMgLyogUGxhdGZvcm1VdGlsaXRpZXNN
YWMubW0gaW4gU291cmNlcyAqLywKQEAgLTQ3MTcsNiArNDczNiw3IEBACiAJCQkJRjRGNUJCNTIy
MTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NUQzODkxMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFy
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQ
REZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NzRBQTY4MjFGQkJGNzgwMEFGMkEx
QiAvKiBUZXN0U09BdXRob3JpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRDRDc0Qzky
MEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC00OTgzLDYgKzUwMDMsMTAgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4
MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdlYktpdEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3Mv
UXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9Owog
CQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtNDk5MCw2ICs1MDE0LDEwIEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5
MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAor
CQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdv
cmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtNTA4NSw2ICs1MTEzLDEwIEBACiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gN0NDRTdFQTMxQTQxMTVDQjAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJD
SF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZ
X0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIs
CisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC01MDkyLDYgKzUxMjQs
MTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSA3Q0NFN0VBMzFBNDExNUNCMDA0NDdDNEMgLyogVGVzdFdlYktpdEFQSUxp
YnJhcnkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFN
RVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hv
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3Qu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzg0NzU3ZmZhYmIzZGUxY2UzM2VhZDBjY2ZjZTViNjFkNDgyM2UxZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UERGU25hcHNob3QubW0KQEAgLTAsMCArMSwyNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3Qu
aCIKKyNpbXBvcnQgIlRlc3RQREZEb2N1bWVudC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBlcXVhbFVzaW5nUkdCQShOU0NvbG9yICphLCBOU0Nv
bG9yICpiKQoreworICAgIHJldHVybiBbW2EgY29sb3JVc2luZ0NvbG9yU3BhY2U6W05TQ29sb3JT
cGFjZSBzUkdCQ29sb3JTcGFjZV1dIGlzRXF1YWw6W2IgY29sb3JVc2luZ0NvbG9yU3BhY2U6W05T
Q29sb3JTcGFjZSBzUkdCQ29sb3JTcGFjZV1dXTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgRnVs
bENvbnRlbnQpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgUERG
IHRha2VzIHRoZSBIVE1MIGJhY2tncm91bmQgY29sb3IgYW5kIG5vdCB0aGUgdmlldydzIGJhY2tn
cm91bmQgY29sb3IuCisgICAgW3dlYlZpZXcgX3NldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBz
eXN0ZW1CbHVlQ29sb3JdXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICBbd2ViVmll
dyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVu
dDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRv
Y3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBF
Q1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIDUgY2hhcmFjdGVycyAi
SGVsbG8iLCBidXQgdGhlcmUncyBhIHNwYWNlIGJlZm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5l
IGFmdGVyIHRoZSAnbycKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCks
IDd1KTsKKworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzFdLCAnSCcpOworICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzVdLCAnbycpOworCisgICAgICAgIC8vIFRoZSAiSCIg
ZnJvbSBIZWxsbyBoYXMgdGhlIHJlY3Q6IDguMDAwMDAwIDU3NC4wMDAwMDAgMTEuNTU1MjAwIDE2
LjAwMDAwMAorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVySW5kZXhBdFBvaW50KENH
UG9pbnRNYWtlKDEzLCA1ODApKSwgMXUpOworCisgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBz
aG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAg
ICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAz
MDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9
IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisK
K1RFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFr
ZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAw
ZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIC8vIFNuYXBzaG90IGEgc3VicmVnaW9uIGNvbnRh
aW5lZCBlbnRpcmVseSB3aXRoaW4gdGhlIHZpZXcKKyAgICBhdXRvIHNuYXBzaG90Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1NuYXBzaG90Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDIwMCwgMTUwLCA0
MDAsIDMwMCldOworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0U25hcHNob3RXaWR0aDpA
NDAwXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpz
bmFwc2hvdENvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBk
ZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9t
RGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VD
b3VudCgpLCAxdSk7CisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAg
ICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVj
dEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDQwMCwgMzAwKSkp
OworCisgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVy
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICAvLyBUaGUgZW50aXJl
IHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVj
ay4KKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50
KDIwMCwgMTUwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsKKworICAgICAgICBbcGRmU25hcHNo
b3REYXRhIHdyaXRlVG9GaWxlOkAiL1ZvbHVtZXMvRGF0YS9SZWFsTGliZXJ0eUhvbWUvc3VicmVn
aW9uLnBkZiIgYXRvbWljYWxseTpZRVNdOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRy
dWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlk
VGFrZVNuYXBzaG90ID0gZmFsc2U7CisKKyAgICAvLyBTbmFwc2hvdCBhIHJlZ2lvbiBsYXJnZXIg
dGhhbiB0aGUgdmlldworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VS
ZWN0KDAsIDAsIDEyMDAsIDEyMDApXTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNu
YXBzaG90V2lkdGg6QDEyMDBdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1l
bnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShk
b2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwg
MCwgMTIwMCwgMTIwMCkpKTsKKworICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2
aWV3IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2su
CisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFsVXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCgy
MDAsIDE1MCksIFtOU0NvbG9yIGdyZWVuQ29sb3JdKSk7CisKKyAgICAgICAgLy8gQSBwaXhlbCB0
aGF0IHdhcyBvdXRzaWRlIHRoZSB2aWV3IHNob3VsZCBhbHNvIGJlIGdyZWVuICh3ZSBleHRlbmQg
YmFja2dyb3VuZCBjb2xvciBvdXQpLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVj
ay4KKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50
KDkwMCwgNzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsKKworICAgICAgICBbcGRmU25hcHNo
b3REYXRhIHdyaXRlVG9GaWxlOkAiL1ZvbHVtZXMvRGF0YS9SZWFsTGliZXJ0eUhvbWUvc3VicmVn
aW9uLnBkZiIgYXRvbWljYWxseTpZRVNdOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRy
dWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlk
VGFrZVNuYXBzaG90ID0gZmFsc2U7CisKK30KKworVEVTVChQREZTbmFwc2hvdCwgT3ZlcjIwMElu
Y2hlcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgMjk0MDApXSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFBERiB0
YWtlcyB0aGUgSFRNTCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBub3QgdGhlIHZpZXcncyBiYWNrZ3Jv
dW5kIGNvbG9yLgorICAgIFt3ZWJWaWV3IF9zZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3Igc3lz
dGVtQmx1ZUNvbG9yXV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6
OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1
bWVudC0+cGFnZUNvdW50KCksIDN1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBF
Q1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdl
LT5jb2xvckF0UG9pbnQoNDAwLCAzMDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworICAgICAg
ICAvLyBXZSBleHBlY3QgdGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIGZ1
bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlciBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBh
ZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3
dSk7CisKKyAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDEpOworICAgICAgICBFWFBFQ1Rf
TkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0
KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKGVxdWFsVXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCks
IFtOU0NvbG9yIGdyZWVuQ29sb3JdKSk7CisKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVy
IG9uIHRoZSBzZWNvbmQgcGFnZSBpcyBhIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBF
Q1RfRVEocGFnZS0+dGV4dCgpWzBdLCAzMik7CisKKyAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5w
YWdlKDIpOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdlLT5j
b2xvckF0UG9pbnQoNDAwLCAzMDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworICAgICAgICAv
LyBUaGUgb25seSBjaGFyYWN0ZXIgb24gdGhlIHRoaXJkIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3Nw
YWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCks
IDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAg
IGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRh
a2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIExpbmtzKQoreworICAgIHN0YXRp
YyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAx
NTAwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2
IHN0eWxlPVwiLXdlYmtpdC1saW5lLWJveC1jb250YWluOiBnbHlwaHNcIj48YSBocmVmPVwiaHR0
cHM6Ly93ZWJraXQub3JnL1wiPkNsaWNrIG1lPC9hPjwvZGl2PiJdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6
OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1
bWVudC0+cGFnZUNvdW50KCksIDJ1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBF
Q1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdl
LT5jb2xvckF0UG9pbnQoNDAwLCAzMDApLCBbTlNDb2xvciB3aGl0ZUNvbG9yXSkpOworCisgICAg
ICAgIGF1dG8gYW5ub3RhdGlvbnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOworICAgICAgICBFWFBF
Q1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFubm90
YXRpb25zWzBdLmlzTGluaygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBd
LmxpbmtVUkwoKSBpc0VxdWFsVG86W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmcvIl1dKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOwor
CisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90
LCBJbmxpbmVMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIjxhIGhyZWY9XCJodHRwczovL3dlYmtpdC5vcmcvXCI+Q2xp
Y2sgbWU8L2E+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3Vy
YXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0
byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3RE
YXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworCisg
ICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUo
cGFnZSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZCBiZSBhIGxp
bmsgaGVyZSwgYnV0IGR1ZSB0byB0aGUgd2F5IHdlIGdhdGhlciBsaW5rcyBmb3IgYW5ub3RhdGlv
biB1c2luZyB0aGUgUmVuZGVySW5saW5lIHRyZWUKKyAgICAgICAgLy8gaXQgaXMgbWlzc2VkLgor
CisvLyAgICAgICAgYXV0byBhbm5vdGF0aW9ucyA9IHBhZ2UtPmFubm90YXRpb25zKCk7CisvLyAg
ICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUpOworLy8gICAgICAgIEVYUEVD
VF9UUlVFKGFubm90YXRpb25zWzBdLmlzTGluaygpKTsKKy8vICAgICAgICBFWFBFQ1RfVFJVRShb
YW5ub3RhdGlvbnNbMF0ubGlua1VSTCgpIGlzRXF1YWxUbzpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRy
dWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzAyM2U3OThkYWZhZjAyOWMwMTZmMGIxNzA2YWRmYTEyMDViNTc0YgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxQREZLaXQv
UERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gQW5ub3RhdGlvbnMgYXJl
bid0IHJlZiBjb3VudGVkLiBUaGV5IHJlbWFpbiB2YWxpZCBhcyBsb25nIGFzIHRoZWlyIGNvbnRh
aW5pbmcgVGVzdFBERlBhZ2UgcmVtYWlucyB2YWxpZAorY2xhc3MgVGVzdFBERkFubm90YXRpb24g
eworcHVibGljOgorICAgIFRlc3RQREZBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKik7CisKKyAg
ICBib29sIGlzTGluaygpIGNvbnN0OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBO
U1VSTCAqbGlua1VSTCgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8UERG
QW5ub3RhdGlvbj4gbV9hbm5vdGF0aW9uOworfTsKKworY2xhc3MgVGVzdFBERlBhZ2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxUZXN0UERGUGFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVz
dFBERlBhZ2U+IGNyZWF0ZShQREZQYWdlICopOworCisgICAgY29uc3QgVmVjdG9yPFRlc3RQREZB
bm5vdGF0aW9uPiYgYW5ub3RhdGlvbnMoKTsKKyAgICBzaXplX3QgY2hhcmFjdGVyQ291bnQoKSBj
b25zdDsKKyAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIENHUmVjdCByZWN0Rm9yQ2hhcmFj
dGVyQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIHNpemVfdCBjaGFyYWN0ZXJJbmRleEF0UG9p
bnQoQ0dQb2ludCkgY29uc3Q7CisgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OworCisgICAgTlND
b2xvciAqY29sb3JBdFBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgCitwcml2YXRlOgor
ICAgIFRlc3RQREZQYWdlKFBERlBhZ2UgKik7CisgICAgUmV0YWluUHRyPFBERlBhZ2U+IG1fcGFn
ZTsKKyAgICBPcHRpb25hbDxWZWN0b3I8VGVzdFBERkFubm90YXRpb24+PiBtX2Fubm90YXRpb25z
OworfTsKKworY2xhc3MgVGVzdFBERkRvY3VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBE
RkRvY3VtZW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGRG9jdW1lbnQ+IGNy
ZWF0ZUZyb21EYXRhKE5TRGF0YSAqKTsKKworICAgIHZvaWQgZHVtcCgpOworCisgICAgc2l6ZV90
IHBhZ2VDb3VudCgpIGNvbnN0OworICAgIFRlc3RQREZQYWdlKiBwYWdlKHNpemVfdCBpbmRleCk7
CisKK3ByaXZhdGU6CisgICAgVGVzdFBERkRvY3VtZW50KE5TRGF0YSAqKTsKKworICAgIFJldGFp
blB0cjxQREZEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWZWN0b3I8UmVmUHRyPFRlc3RQREZQ
YWdlPj4gbV9wYWdlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM4
MGI0NWFkM2Q0ZGIxYzdiMjhjYzA5NWJlZmYxMzQ3MTIxZDYxYQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCkBAIC0wLDAgKzEs
MTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UERG
RG9jdW1lbnQuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CisjaWYgUExBVEZPUk0oTUFDKQorQ0dSZWN0IHRvQ0dSZWN0KE5TUmVjdCByZWN0KSB7IHJldHVy
biBOU1JlY3RUb0NHUmVjdChyZWN0KTsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9pbnQoQ0dQb2lu
dCBwb2ludCkgeyByZXR1cm4gTlNQb2ludEZyb21DR1BvaW50KHBvaW50KTsgfQorI2Vsc2UKK0NH
UmVjdCB0b0NHUmVjdChDR1JlY3QgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorTlNQb2ludCB0b1Bs
YXRmb3JtUG9pbnQoQ0dQb2ludCBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KKyNlbmRpZgorCisv
LyBBbm5vdGF0aW9ucworVGVzdFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKFBERkFu
bm90YXRpb24gKmFubm90YXRpb24pCisgICAgOiBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKK3sK
K30KKworYm9vbCBUZXN0UERGQW5ub3RhdGlvbjo6aXNMaW5rKCkgY29uc3QKK3sKKyAgICBib29s
IGlzTGluayA9IFttX2Fubm90YXRpb24gaXNLaW5kT2ZDbGFzczpbUERGQW5ub3RhdGlvbkxpbmsg
Y2xhc3NdXTsKKyAgICBpZiAoaXNMaW5rKQorICAgICAgICBBU1NFUlQoW21fYW5ub3RhdGlvbi5n
ZXQoKS50eXBlIGlzRXF1YWxUb1N0cmluZzpAIkxpbmsiXSk7CisgICAgcmV0dXJuIGlzTGluazsK
K30KKworQ0dSZWN0IFRlc3RQREZBbm5vdGF0aW9uOjpib3VuZHMoKSBjb25zdAoreworICAgIHJl
dHVybiB0b0NHUmVjdChtX2Fubm90YXRpb24uZ2V0KCkuYm91bmRzKTsKK30KKworTlNVUkwgKlRl
c3RQREZBbm5vdGF0aW9uOjpsaW5rVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTGluaygpKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbKFBERkFubm90YXRpb25MaW5rICopbV9h
bm5vdGF0aW9uLmdldCgpIFVSTF07Cit9CisKKy8vIFBhZ2VzCisKK1JlZjxUZXN0UERGUGFnZT4g
VGVzdFBERlBhZ2U6OmNyZWF0ZShQREZQYWdlICpwYWdlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRlc3RQREZQYWdlKHBhZ2UpKTsKK30KKworVGVzdFBERlBhZ2U6OlRlc3RQREZQYWdl
KFBERlBhZ2UgKnBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworY29uc3QgVmVjdG9y
PFRlc3RQREZBbm5vdGF0aW9uPiYgVGVzdFBERlBhZ2U6OmFubm90YXRpb25zKCkKK3sKKyAgICBp
ZiAoIW1fYW5ub3RhdGlvbnMpIHsKKyAgICAgICAgbV9hbm5vdGF0aW9ucyA9IFZlY3RvcjxUZXN0
UERGQW5ub3RhdGlvbj4oKTsKKyAgICAgICAgZm9yIChQREZBbm5vdGF0aW9uICphbm5vdGF0aW9u
IGluIG1fcGFnZS5nZXQoKS5hbm5vdGF0aW9ucykKKyAgICAgICAgICAgIG1fYW5ub3RhdGlvbnMt
PmFwcGVuZCh7IGFubm90YXRpb24gfSk7CisgICAgfQorCisgICAgcmV0dXJuICptX2Fubm90YXRp
b25zOworfQorCitzaXplX3QgVGVzdFBERlBhZ2U6OmNoYXJhY3RlckNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWdlLmdldCgpLm51bWJlck9mQ2hhcmFjdGVyczsKK30KKworU3RyaW5n
IFRlc3RQREZQYWdlOjp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmdldCgpLnN0
cmluZzsKK30KKworQ0dSZWN0IFRlc3RQREZQYWdlOjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KFttX3BhZ2UgY2hhcmFj
dGVyQm91bmRzQXRJbmRleDppbmRleF0pOworfQorCitzaXplX3QgVGVzdFBERlBhZ2U6OmNoYXJh
Y3RlckluZGV4QXRQb2ludChDR1BvaW50IHBvaW50KSBjb25zdAoreworICAgIHJldHVybiBbbV9w
YWdlIGNoYXJhY3RlckluZGV4QXRQb2ludDp0b1BsYXRmb3JtUG9pbnQocG9pbnQpXTsKK30KKwor
Q0dSZWN0IFRlc3RQREZQYWdlOjpib3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiB0b0NHUmVj
dChbbV9wYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveE1lZGlhQm94XSk7Cit9CisKKwor
TlNDb2xvciAqVGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludChpbnQgeCwgaW50IHkpIGNvbnN0Cit7
CisgICAgYXV0byBib3VuZHNSZWN0ID0gYm91bmRzKCk7CisgICAgYXV0byBjb2xvclNwYWNlID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwor
ICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKE5VTEwsIGJv
dW5kc1JlY3Quc2l6ZS53aWR0aCwgYm91bmRzUmVjdC5zaXplLmhlaWdodCwgOCwgMCwgY29sb3JT
cGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJCaWcpKTsKKworICAgIGF1dG8gY2dQYWdlID0gbV9wYWdlLmdldCgpLnBhZ2VSZWY7
CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5nZXQoKSwg
Y2dQYWdlLCBudWxscHRyKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHBpeGVsID0gKGNv
bnN0IHVuc2lnbmVkIGNoYXIqKUNHQml0bWFwQ29udGV4dEdldERhdGEoY29udGV4dC5nZXQoKSk7
CisgICAgc2l6ZV90IGkgPSAoeSAqIHggKiA0KSArICh4ICogNCk7CisKKyAgICBhdXRvIHIgPSBw
aXhlbFtpXTsKKyAgICBhdXRvIGcgPSBwaXhlbFtpICsgMV07CisgICAgYXV0byBiID0gcGl4ZWxb
aSArIDJdOworICAgIGF1dG8gYSA9IHBpeGVsW2kgKyAzXTsKKworICAgIGlmICghYSkKKyAgICAg
ICAgcmV0dXJuIG5zQ29sb3IoV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCwgMCkpOworICAgIHJldHVy
biBuc0NvbG9yKFdlYkNvcmU6OkNvbG9yKHIgKiAyNTUgLyBhLCBnICogMjU1IC8gYSwgYiAqIDI1
NSAvIGEsIGEpKTsKK30KKworLy8gRG9jdW1lbnRzCisKK1JlZjxUZXN0UERGRG9jdW1lbnQ+IFRl
c3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEoTlNEYXRhICpkYXRhKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFRlc3RQREZEb2N1bWVudChkYXRhKSk7Cit9CisKK1Rlc3RQREZEb2N1
bWVudDo6VGVzdFBERkRvY3VtZW50KE5TRGF0YSAqZGF0YSkKKyAgICA6IG1fZG9jdW1lbnQoYWRv
cHROUyhbW1BERkRvY3VtZW50IGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pKQorICAgICwgbV9w
YWdlcyhwYWdlQ291bnQoKSkKK3sKK30KKworc2l6ZV90IFRlc3RQREZEb2N1bWVudDo6cGFnZUNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50XTsKK30KKwor
VGVzdFBERlBhZ2UqIFRlc3RQREZEb2N1bWVudDo6cGFnZShzaXplX3QgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID49IHBhZ2VDb3VudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAoIW1fcGFnZXNbaW5kZXhdKQorICAgICAgICBtX3BhZ2VzW2luZGV4XSA9IFRlc3RQREZQYWdl
OjpjcmVhdGUoW21fZG9jdW1lbnQgcGFnZUF0SW5kZXg6aW5kZXhdKTsKKyAgICByZXR1cm4gbV9w
YWdlc1tpbmRleF0uZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378139</attachid>
            <date>2019-09-05 16:54:43 -0700</date>
            <delta_ts>2019-09-06 12:39:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190905165442.patch</filename>
            <type>text/plain</type>
            <size>61301</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjU5OWRlYWFlOThhZTM0ZTgzZTkwOWNkMzNlZjRiMGI1NzNiNTcx
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAordm9pZCBX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rp
b24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZyYW1lSUQsIHJlY3QsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9QREZD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOworICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0YSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkK
IHsKICAgICBBU1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgx
MWZhNWYuLjc4ZGMyMTRkYTE3ODE5YzJiZDdjZDRjNGNiZWUzNzYyZmJkMmZhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsOSArMzYwLDkgQEAgc3RydWN0
IEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzOwogICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiB9OworI2VuZGlmCiAKIHVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwotI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdURjo6TWFj
aFNlbmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKQEAgLTExNzQsMTIgKzExNzQsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxs
YmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJ
bmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwor
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOworCiAgICAgUGFnZUxvYWRTdGF0ZSYgcGFnZUxvYWRT
dGF0ZSgpIHsgcmV0dXJuIG1fcGFnZUxvYWRTdGF0ZTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOTNkMzQxNDJmODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uZjM4MzY2Njlk
ZWM1OTc3ODlmMDdjNmQyMmJhY2YxOWQ3NWM5ZGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDkgKzE5Niw5IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygp
CiAgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0
X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9y
UG90ZW50aWFsVGFwKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRl
clJlY3QsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNl
bGVjdGlvblJlY3RzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyAg
ICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNl
dERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBk
YXRhRGV0ZWN0aW9uUmVzdWx0KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDNhZDhkZjQ4MDhlOGRhODBhMGNiMTMzZDMwMzZmNDFh
MWJlYzYyY2QuLjg0Nzg4ZThhNWFhZmRmMGViNDRhN2Y1ZmFhNmE0OGU4OWJkN2ZmN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03MTgsNiAr
NzE4LDggQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBXZWJLaXQ6OlByaW50SW5mbyBw
cmludEluZm87CiAgICAgcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKICAgICBw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UgPSBwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0
UGFnZTsKKworICAgIC8vIEZJWE1FOiBQYWdpbmF0ZSB3aGVuIGV4cG9ydGluZyBQREZzIHRhbGxl
ciB0aGFuIDIwMCIKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IG1heGltdW1QREZIZWlnaHQgPSAyMDAgKiA3MjsgLy8g
bWF4aW11bSBQREYgaGVpZ2h0IGZvciBhIHNpbmdsZSBwYWdlIGlzIDIwMCBpbmNoZXMKICAgICAg
ICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2VsZi5ib3VuZHMuc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2Nj
ZGI4ZTlmMzAwZGMwYmVmYzZjMTU4NDkyMDQuLmJhZjhkMzYyY2MxMDNmNGQ1YTlhYzE4NmQ5ZWQ3
ZWVmYjFlM2IxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTA4NiwxMyArMTA4Niw2IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BE
RkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdU
b1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7
Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsK
LX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29u
c3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXpl
Q2F0ZWdvcnkpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODVhNDNiNTQ3OWMxNTll
NDBkOGVmZmQ5MzJjYjI1YjU0M2RiMjZlYS4uYmMxNGJlNGE5ZmEzYjk2ODU4MzI3YmYwMjc3ZTU0
NWEyMjg2MDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMjMyLDcgKzIzMiw1OCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQog
ICAgIGF1dG8qIGRvY3VtZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK1JldGFpblB0
cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1l
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKworICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRD
RihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8g
bWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSk7CisgICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRD
cmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKKworICAgIGlu
dDY0X3QgcmVtYWluaW5nSGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQ2NF90
IG5leHRSZWN0WSA9IHJlY3QueSgpOworICAgIHdoaWxlIChyZW1haW5pbmdIZWlnaHQgPiAwKSB7
CisgICAgICAgIC8vIFBERnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdodCBsaW1pdCBvZiAyMDAgaW5j
aGVzIGF0IDcyZHBpLgorICAgICAgICAvLyBXZSdsbCBleHBvcnQgb25lIFBERiBwYWdlIGF0IGEg
dGltZSwgdXAgdG8gdGhhdCBtYXhpbXVtIGhlaWdodC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDY0X3QgbWF4UGFnZUhlaWdodCA9IDcyICogMjAwOworICAgICAgICBiaXRtYXBTaXplLnNldEhl
aWdodChzdGQ6Om1pbihyZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VIZWlnaHQpKTsKKyAgICAgICAg
cmVjdC5zZXRIZWlnaHQoYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlY3Quc2V0WShu
ZXh0UmVjdFkpOworCisgICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwg
Yml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byBt
ZWRpYUJveERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikm
bWVkaWFCb3gsIHNpemVvZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IChD
RkRpY3Rpb25hcnlSZWYpQHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDR1BERkNvbnRleHRN
ZWRpYUJveCA6IChOU0RhdGEgKiltZWRpYUJveERhdGEuZ2V0KCkKKyAgICAgICAgfTsKKworICAg
ICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgZGljdGlvbmFyeSk7
CisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQu
Z2V0KCkgfTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwor
CisgICAgICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
KmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKKworICAgICAgICBDR1BE
RkNvbnRleHRFbmRQYWdlKHBkZkNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIG5leHRSZWN0WSAr
PSBiaXRtYXBTaXplLmhlaWdodCgpOworICAgICAgICByZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFn
ZUhlaWdodDsKKyAgICB9CisKKyAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgp
KTsKKworICAgIHJldHVybiBkYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBlZWEwZjQ2MWYyMTU5MjI0ZTIxYmUxNDhhNGM3ZDZiOTcyNjYx
NzA0Li40ZjAzNTU2ZDA3YTJkZWRhZTc0M2JiMDU4NTBhYmNmZWE4YTdkYjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMwNiw3ICsyMzA2
LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25z
KGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZQogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1lVmll
dywgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit2b2lkIFdlYlBhZ2U6OnBhaW50
U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFw
U2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewogICAgIEludFJl
Y3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3Ig
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYml0bWFwU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsK
QEAgLTIzODAsMzkgKzIzODAsNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIHJldHVy
biBzbmFwc2hvdDsKIH0KIAotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBh
Z2U6OnBkZlNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQotewotICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOwotCi0jaWYgVVNFKENHKQotICAgIGF1dG8gZGF0YUNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwot
ICAgIGF1dG8gbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwg
Yml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsK
LQotICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBudWxscHRyKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0LmdldCgp
IH07Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LnRyYW5zbGF0ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgcGFpbnRTbmFw
c2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVW
aWV3LCBncmFwaGljc0NvbnRleHQpOwotCi0gICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250
ZXh0LmdldCgpKTsKLSAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGRhdGE7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CkBAIC00NzQ4LDYgKzQ3MTUsMzQgQEAg
dm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFByaW50SW4KICAgICAgICAgcmVzdWx0UGFnZVJlY3RzLmFwcGVuZChJ
bnRSZWN0KDAsIDAsIDEsIDEpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCk7CisgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CisgICAgaWYgKHJlY3Qp
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUocmVjdC0+c2l6ZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IHsgZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpIH07CisK
KyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICBpZiAocmVjdCkKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7KGludClyZWN0LT54KCksIChpbnQpcmVjdC0+eSgpfSwgc25hcHNob3RTaXpl
IH07CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFJlY3QgPSB7IHswLCAwfSwgc25hcHNob3RT
aXplIH07CisKKyAgICBhdXRvIG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QgPSBm
cmFtZVZpZXcubGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKTsKKyAgICBmcmFtZVZpZXcuc2V0
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdChzbmFwc2hvdFJlY3QpKTsKKyAg
ICBhdXRvIG9yaWdpbmFsUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy5wYWludEJlaGF2aW9yKCk7
CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yIHwg
UGFpbnRCZWhhdmlvcjo6QW5ub3RhdGVMaW5rcyk7CisKKyAgICBhdXRvIHBkZkRhdGEgPSBwZGZT
bmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CisKKyAgICBmcmFt
ZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdCk7CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQ
YWludEJlaGF2aW9yKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1Rv
UERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5n
ZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30K
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBkZjFjODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3YWEyZDEyNTg2Li43ZjFi
NzEzYmZhM2U4MWFlNzBhOTZiZDkyYTQ4ZTM5ZmNiNDY2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04ODEsNiArODgxLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYm
KTsKICNlbmRpZgogCisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ2FsbGJhY2tJRCk7CisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENh
bGxiYWNrSUQpOwpAQCAtMTYwNSw4ICsxNjA3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxX
ZWJJbWFnZT4gc25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywg
dW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpOwotI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFw
c2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0xNjIxLDYgKzE2MjMsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNv
bW1pdHRpbmdMb2FkKCk7CiAKKyAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hvdE9wdGlvbnMs
IFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik7CisKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
NWI5ZTFlMDdlYjdkOGI3MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uYWVlNzA2ZmE1MmM5ZTFj
ZDMwMDgzMTQ2ZjgwODY0MTM0MGU1Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zODgsNiArMzg4LDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMK
ICNlbmRpZgorICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmlu
dGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWU4ZTE0MWM2MDQx
MDgzOWRiZmQxMTIxM2IwNmIzNjM0NWJhYjNmNi4uZTE0MmU1MTE1NjUxNGFhNTAwM2UyNmM4YWE1
MjM3ZWU2OTYwNGZiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUg
Y29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkw
MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtQWRkIGFuICJF
eHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgLUFk
ZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
TWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBm
b3JjZVJlcGFpbnQ6XSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVB
c1BERjpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAg
ICAgIAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SUxpYnJhcnkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUERGU25hcHNob3QubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXF1YWxV
c2luZ1JHQkEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dG9DR1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9QbGF0Zm9y
bVBvaW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpUZXN0
UERGQW5ub3RhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlv
bjo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0
aW9uOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90
YXRpb246OmxpbmtVUkwgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6VGVzdFBE
RlBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFubm90YXRpb25z
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCBj
b25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4dCBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0
SW5kZXggY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJh
Y3RlckluZGV4QXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
UGFnZTo6Ym91bmRzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
Ojpjb2xvckF0UG9pbnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRv
Y3VtZW50OjpjcmVhdGVGcm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
RG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0UERGRG9jdW1lbnQ6OnBhZ2UpOgorCiAyMDE5LTA5LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldGFpbiBj
ZXJ0YWluIHBhcmFtZXRlcnMgd2hlbiBmb2xsb3dpbmcgbWVudSBsaW5rcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJy
b3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCmluZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2Yzlh
ZTM4ZjI5OWEzMjVkY2I0ZGFkYjkuLmU0YzJiYTE4MGYzOTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVh
M2VjMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVt
ZW50cworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKQEAg
LTIsMjAgKzIsMjAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJ
U1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5k
dGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1
cml0eS5hcHAtc2FuZGJveDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0
eS5kZXZpY2UudXNiPC9rZXk+CiAJPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZp
bGVzLnVzZXItc2VsZWN0ZWQucmVhZC1vbmx5PC9rZXk+CisJPGtleT5jb20uYXBwbGUuc2VjdXJp
dHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFkLXdyaXRlPC9rZXk+CisJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0
aC5yZWFkLW9ubHk8L2tleT4KKwk8c3RyaW5nPi88L3N0cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5z
ZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLm1hY2gtbG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+
CiAJPGFycmF5PgogCQk8c3RyaW5nPmNvbS5hcHBsZS5TYWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZp
Y2U8L3N0cmluZz4KIAkJPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248
L3N0cmluZz4KIAk8L2FycmF5PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KLQk8c3RyaW5nPi88L3N0
cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oCmluZGV4IGM1YjlkNTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRl
M2EwMjRhNWQ5NDYuLmRmZGI2NDAxM2YwMTZiZDBiZGE1MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCkBA
IC00Niw2ICs0Niw4IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dp
bmRvd0NvbnRyb2xsZXIgewogCiAtIChJQkFjdGlvbilvcGVuTG9jYXRpb246KGlkKXNlbmRlcjsK
IAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXI7CisKIC0gKElCQWN0aW9uKWZldGNo
OihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilzaGFyZTooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24p
cmVsb2FkOihpZClzZW5kZXI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCmluZGV4IDRiOTkwNTdhMDNjZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUw
NDQ4MmYuLjRkNDU3Mzk2ZjA2NTRlMGY5ZWU4MzRmOTE0ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC05Myw2
ICs5MywxMSBAQCAtIChJQkFjdGlvbilmb3JjZVJlcGFpbnQ6KGlkKXNlbmRlcgogICAgIFtzZWxm
IGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFz
UERGOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2Nt
ZF07Cit9CisKIC0gKElCQWN0aW9uKWdvQmFjazooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgZG9l
c05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL01haW5NZW51LnhpYiBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIK
aW5kZXggNTQ2YTYwZjAzMmU3MmU0MmI2YTZjMzZjNDk4ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1
Mjk3YzM2MDBjNDhiN2NmMDRjNDMxMjhkZTZiZjI0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL01haW5NZW51LnhpYgorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1l
bnUueGliCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2Eu
WElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1h
Y09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KKzxkb2N1bWVudCB0eXBl
PSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRv
b2xzVmVyc2lvbj0iMTQ0OTAuNzAiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVy
dHlBY2Nlc3NDb250cm9sPSJub25lIj4KICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICA8cGx1
Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2
ZXJzaW9uPSIxMzc3MSIvPgorICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5J
bnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxNDQ5MC43MCIvPgogICAgIDwv
ZGVwZW5kZW5jaWVzPgogICAgIDxvYmplY3RzPgogICAgICAgICA8Y3VzdG9tT2JqZWN0IGlkPSIt
MiIgdXNlckxhYmVsPSJGaWxlJ3MgT3duZXIiIGN1c3RvbUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4K
QEAgLTEzMyw2ICsxMzMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxhY3Rpb24gc2VsZWN0b3I9InNhdmVEb2N1bWVudEFzOiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIv
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPG1lbnVJdGVtIHRpdGxlPSJTYXZlIEFzIFBERuKApiIga2V5RXF1aXZhbGVudD0iUyIg
aWQ9ImdtUy0zUS1vTHMiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZp
ZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIgb3B0aW9uPSJZRVMiIGNvbW1h
bmQ9IllFUyIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9yPSJz
YXZlQXNQREY6IiB0YXJnZXQ9Ii0xIiBpZD0iMjVULUlkLTMzNCIvPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvbWVudUl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRp
dGxlPSJSZXZlcnQgdG8gU2F2ZWQiIGlkPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIvPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDdl
ZDZjM2QyZjkwNjkzNzM3NjU0NzMxYzczNGI4MTM4YjE1MmZlNjMuLjZkNjZiZmIwYTVmMzljOThk
MjkyNzdhNmM2YWNlZDkzODBkZDJjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0xMzQsNiArMTM0LDkgQEAgLSAoQk9P
TCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0
aW9uID0gW21lbnVJdGVtIGFjdGlvbl07CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihz
YXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2
YzI4NTE5MjFkMzRkYzRhMjJmNDNhMmU1Zi4uY2Y0ZDNhZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1
M2QyZjcyMDNkMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KQEAgLTIwNyw2ICsyMDcsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVu
dUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBtZW51SXRl
bS5hY3Rpb247CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21Jbjop
KQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBz
ZWxlY3Rvcih6b29tT3V0OikpCkBAIC04MTQsNCArODE3LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoo
dm9pZCAoCiAgICAgZGVjaXNpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2
ZUFzUERGOihpZClzZW5kZXIKK3sKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFu
ZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5hbGxvd2VkRmlsZVR5cGVzID0gQFsgQCJwZGYiIF07
CisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBO
U01vZGFsUmVzcG9uc2VPSykgeworICAgICAgICAgICAgW193ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBbcGRmU25hcHNo
b3REYXRhIHdyaXRlVG9VUkw6W3BhbmVsIFVSTF0gb3B0aW9uczowIGVycm9yOm5pbF07CisgICAg
ICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH1dOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5Lnhj
Y29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
TGlicmFyeS54Y2NvbmZpZwppbmRleCAyZGU2MWY3OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdh
YTgwNDlkLi5mNzY4ZmMyNjVkMzc0NDc1OWRhOTE4NzQyNWI3YTA0NjA4ODg1NTgzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJy
YXJ5LnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKQEAgLTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFN
RSA9IFRlc3RXZWJLaXRBUEk7CiBTS0lQX0lOU1RBTEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklW
QVRFX0VYVEVSTiA9IFlFUzsKKworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNE
S1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9G
cmFtZXdvcmtzICQoaW5oZXJpdGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaAppbmRleCBlMmZiNjkwMjRiYjE0OWUwMTU4ODY1NjBmZTRiNDM4YzY1OWI1MTM5Li40ZDli
NGQ3NDMyMGY1MGUyZjUxNDFhMzM3ZDI0MGU0MzMwOTdhZGUyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8c3RyaW5n
PgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFT
UyBOU0NvbG9yOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5n
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTQ3NDNkMjcwZWYyZmI2NDEwMGYzZjdlNWM4M2Y2OGI3ZmM4N2ZiOC4uMTJiNzNi
YzNjMmNjZTYyZDdhZWJlNWY0ZTZlOTM4MWUxM2U0ZTg4NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI3NSw2ICsyNzUsMTEgQEAKIAkJNTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8qIElu
ZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5kZXhl
ZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAw
NDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJD
ODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CisJCTUxQkU5RjkyMjMx
OUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjkxMjMxOUU4QzEwMEY5NkNFMiAvKiBQREZTbmFw
c2hvdC5tbSAqLzsgfTsKKwkJNTFCRTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFC
RTlGOUMyMzFGMkY0RDAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5QTIzMUYyRTk4MDBGOTZD
RTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFCRTlGOUUyMzFGMzUxRTAwRjk2Q0Uy
IC8qIFBERktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjlG
MjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi87IH07CiAJCTUxQzY4M0RF
MUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4
MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLzsgfTsKIAkJNTFDOEUxQTUxRjI2QUY0QzAw
QkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLzsgfTsKIAkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFC
IC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTgx
RjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MucGxpc3QgKi87IH07CkBAIC0xNzY4LDYgKzE3NzMsMTEgQEAKIAkJNTFCQ0VFNDkxQzg0RjRB
RjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIg
LyogUERGU25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQREZTbmFwc2hvdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGOUEyMzFGMkU5ODAwRjk2Q0UyIC8q
IFF1YXJ0ei5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ei5mcmFtZXdvcms7IHBh
dGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSBTREtST09UOyB9OworCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0LmZyYW1ld29yazsgcGF0aCA9IFBsYXRm
b3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMTQuc2RrL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvUERGS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CisJCTUx
QkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0UERGRG9jdW1lbnQubW07IHBhdGggPSBj
b2NvYS9UZXN0UERGRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
QkU5RkEwMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRvY3VtZW50Lmg7IHBhdGggPSBjb2NvYS9UZXN0
UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUEx
MzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4RTFBODFGMjdG
NDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGUuYnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MUJFOUY5RTIzMUYzNTFFMDBGOTZDRTIg
LyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUxQkU5RjlDMjMxRjJG
NEQwMEY5NkNFMiAvKiBRdWFydHouZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTY4
LDYgKzI1ODAsNyBAQAogCQkJCTVDRkFDRjYzMjI2RjczQzYwMDU2QzdEMCAvKiBsaWJib3Jpbmdz
c2wuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdDODNFMDNGMUQwQTYxQTAwMEZFQkNGMyAvKiBs
aWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTc4Q0JENjcyMDRGQjJDODAw
ODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CisJCQkJNTFCRTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQk3QTAxMEJDRDFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYg
LyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpAQCAtMjY2NSw2
ICsyNjc4LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRN
ZW51RHJpdmVyLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCisJCQkJNTFCRTlGQTAyMzIwMjM4QTAwRjk2Q0Uy
IC8qIFRlc3RQREZEb2N1bWVudC5oICovLAorCQkJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAv
KiBUZXN0UERGRG9jdW1lbnQubW0gKi8sCiAJCQkJQTE0RkM1OEQxQjhBRTM2NTAwRDEwN0VCIC8q
IFRlc3RQcm90b2NvbC5oICovLAogCQkJCUExNEZDNThFMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0
UHJvdG9jb2wubW0gKi8sCiAJCQkJMkVGRjA2RDIxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dl
YlZpZXcuaCAqLywKQEAgLTI4MjYsNiArMjg0MSw3IEBACiAJCQkJOUJERDk1NTYxRjgzNjgzNjAw
RDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0MDBEQjFEMjMg
LyogUGFzdGVXZWJBcmNoaXZlLm1tICovLAogCQkJCTUxRDhDMThGMjI2N0IyNjcwMDc5N0U0MCAv
KiBQREZMaW5rUmVmZXJyZXIubW0gKi8sCisJCQkJNTFCRTlGOTEyMzE5RThDMTAwRjk2Q0UyIC8q
IFBERlNuYXBzaG90Lm1tICovLAogCQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0
dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0
IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywKIAkJCQlDOTU1MDFCRTE5QUQyRkFG
MDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCkBAIC0zMDkzLDYgKzMxMDksOCBAQAogCQkJ
CTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIg
Ki8sCiAJCQkJN0M4M0UwMjkxRDBBNUNERjAwRkVCQ0YzIC8qIGxpYldURi5hICovLAogCQkJCTU3
OENCRDY2MjA0RkIyQzcwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAq
LywKKwkJCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLywK
KwkJCQk1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLywKIAkJ
CQk3QTAxMEJDQzFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8sCiAJ
CQkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLywKIAkJ
CSk7CkBAIC00NjI4LDYgKzQ2NDYsNyBAQAogCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAv
KiBQYXN0ZVJURkQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjIzNDY0MjFGOTQzRTI3MDBEQjFE
MjMgLyogUGFzdGVXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEOEMxOTAyMjY3
QjI2RDAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
QkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzRkNDNEZFNTFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUlu
UGljdHVyZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAw
NDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00NzI1
LDYgKzQ3NDQsNyBAQAogCQkJCUY0RjVCQjUyMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9w
dGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3NjIxMTJDRTYyMDAzMDdFODIgLyog
VGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVEMzg5MTIxNUE3QjRC
MDAyQTI5NzkgLyogVGVzdEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5
RkExMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1Nzc0QUE2ODIxRkJCRjc4MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCUY0Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2No
ZW1lSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcy
MSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtNDk5MSw2
ICs1MDExLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJL
aXRBUEkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFN
RVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTQ5
OTgsNiArNTAyMiwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0
V2ViS2l0QVBJLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1f
RlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIk
KFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
QEAgLTUwOTMsNiArNTEyMSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAv
KiBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwogCQl9OwpAQCAtNTEwMCw2ICs1MTMyLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0NDRTdFQTMxQTQxMTVD
QjAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
IiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9R
dWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NjUxMGVmOTE3ZTI3
OWFmNWU4MDQzMDQzNmViZmNlYWE5ZTgzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC0wLDAgKzEsMjQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQu
aCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZXF1
YWxVc2luZ1JHQkEoTlNDb2xvciAqYSwgTlNDb2xvciAqYikKK3sKKyAgICByZXR1cm4gW1thIGNv
bG9yVXNpbmdDb2xvclNwYWNlOltOU0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXSBpc0VxdWFs
OltiIGNvbG9yVXNpbmdDb2xvclNwYWNlOltOU0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXV07
Cit9CisKK1RFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQoreworICAgIHN0YXRpYyBib29s
IGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFBERiB0YWtlcyB0aGUgSFRNTCBiYWNrZ3JvdW5kIGNv
bG9yIGFuZCBub3QgdGhlIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorICAgIFt3ZWJWaWV3IF9z
ZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXV07CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhl
bGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1
dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90
RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisKKyAgICAgICAgLy8g
V2UgZXhwZWN0IHRoZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBzcGFjZSBi
ZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPnRleHQoKVsxXSwgJ0gnKTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs1XSwg
J28nKTsKKworICAgICAgICAvLyBUaGUgIkgiIGZyb20gSGVsbG8gaGFzIHRoZSByZWN0OiA4LjAw
MDAwMCA1NzQuMDAwMDAwIDExLjU1NTIwMCAxNi4wMDAwMDAKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50TWFrZSgxMywgNTgwKSksIDF1KTsKKwor
ICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQg
aW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JH
QkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsK
KworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6
cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25z
KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICAv
LyBTbmFwc2hvdCBhIHN1YnJlZ2lvbiBjb250YWluZWQgZW50aXJlbHkgd2l0aGluIHRoZSB2aWV3
CisgICAgYXV0byBzbmFwc2hvdENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNl
dFJlY3Q6TlNNYWtlUmVjdCgyMDAsIDE1MCwgNDAwLCAzMDApXTsKKyAgICBbc25hcHNob3RDb25m
aWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDQwMF07CisKKyAgICBbd2ViVmlldyBfdGFrZVBE
RlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1cmF0aW9uLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9
IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIp
OworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwg
Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDMwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhl
IGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hh
cmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAz
Mik7CisKKyAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBh
IHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFs
VXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCksIFtOU0NvbG9yIGdyZWVuQ29s
b3JdKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVz
L0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCisgICAg
Ly8gU25hcHNob3QgYSByZWdpb24gbGFyZ2VyIHRoYW4gdGhlIHZpZXcKKyAgICBbc25hcHNob3RD
b25maWd1cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxMjAwLCAxMjAwKV07CisgICAg
W3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkAxMjAwXTsKKworICAgIFt3
ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3Vy
YXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBh
dXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hv
dERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7Cisg
ICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUo
cGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBh
Z2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEyMDApKSk7CisKKyAgICAgICAg
Ly8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBw
b2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVz
aW5nUkdCQShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApLCBbTlNDb2xvciBncmVlbkNvbG9y
XSkpOworCisgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91
bGQgYWxzbyBiZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBh
IHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFs
VXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAsIDcwMCksIFtOU0NvbG9yIGdyZWVuQ29s
b3JdKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVz
L0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCit9CisK
K1RFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJvb2wgZGlk
VGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAwKV0pOwor
CisgICAgLy8gTWFrZSBzdXJlIHRoZSBQREYgdGFrZXMgdGhlIEhUTUwgYmFja2dyb3VuZCBjb2xv
ciBhbmQgbm90IHRoZSB2aWV3J3MgYmFja2dyb3VuZCBjb2xvci4KKyAgICBbd2ViVmlldyBfc2V0
QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIHN5c3RlbUJsdWVDb2xvcl1dOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxs
bzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAzdSk7CisKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05T
Q29sb3IgZ3JlZW5Db2xvcl0pKTsKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1IGNoYXJhY3Rl
cnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIgYmVm
b3JlIHRoZSAnSCcsIGFuZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlICdvJworICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgN3UpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgxKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShw
YWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworCisg
ICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3RlciBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgYSBmdWxs
IHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rl
ckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOwor
CisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgyKTsKKyAgICAgICAgRVhQRUNUX05FKHBh
Z2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdl
LT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29s
b3IgZ3JlZW5Db2xvcl0pKTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9uIHRoZSB0
aGlyZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdl
LT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAg
IH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNu
YXBzaG90LCBMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJraXQtbGluZS1ib3gtY29u
dGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwv
YT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7CisKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05T
Q29sb3Igd2hpdGVDb2xvcl0pKTsKKworICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+
YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUp
OworICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGEgdGlvbnNbMF0uaXNMaW5rKCkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbYW5ub3RhdGlvbnNbMF0ubGlua1VSTCgpIGlzRXF1YWxUbzpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRh
a2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFw
c2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIElubGluZUxpbmtzKQoreworICAgIHN0YXRp
YyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgaHJl
Zj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT4iXTsKKworICAgIFt3ZWJWaWV3
IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6
XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50
OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9j
dW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKworICAgICAgICAv
LyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgbGluayBoZXJlLCBidXQgZHVlIHRvIHRoZSB3YXkg
d2UgZ2F0aGVyIGxpbmtzIGZvciBhbm5vdGF0aW9uIHVzaW5nIHRoZSBSZW5kZXJJbmxpbmUgdHJl
ZQorICAgICAgICAvLyBpdCBpcyBtaXNzZWQuCisKKy8vICAgICAgICBhdXRvIGFubm90YXRpb25z
ID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKy8vICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMu
c2l6ZSgpLCAxdSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoYW5ub3RhdGlvbnNbMF0uaXNMaW5r
KCkpOworLy8gICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNF
cXVhbFRvOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisK
KyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1
bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDIzZTc5OGRhZmFmMDI5YzAxNmYwYjE3
MDZhZGZhMTIwNWI1NzRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0UERGRG9jdW1lbnQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCisvLyBBbm5vdGF0aW9ucyBhcmVuJ3QgcmVmIGNvdW50ZWQuIFRoZXkgcmVtYWlu
IHZhbGlkIGFzIGxvbmcgYXMgdGhlaXIgY29udGFpbmluZyBUZXN0UERGUGFnZSByZW1haW5zIHZh
bGlkCitjbGFzcyBUZXN0UERGQW5ub3RhdGlvbiB7CitwdWJsaWM6CisgICAgVGVzdFBERkFubm90
YXRpb24oUERGQW5ub3RhdGlvbiAqKTsKKworICAgIGJvb2wgaXNMaW5rKCkgY29uc3Q7CisgICAg
Q0dSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIE5TVVJMICpsaW5rVVJMKCkgY29uc3Q7CisgICAg
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxQREZBbm5vdGF0aW9uPiBtX2Fubm90YXRpb247Cit9
OworCitjbGFzcyBUZXN0UERGUGFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZQYWdlPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGUGFnZT4gY3JlYXRlKFBERlBhZ2UgKik7
CisKKyAgICBjb25zdCBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+JiBhbm5vdGF0aW9ucygpOwor
ICAgIHNpemVfdCBjaGFyYWN0ZXJDb3VudCgpIGNvbnN0OworICAgIFN0cmluZyB0ZXh0KCkgY29u
c3Q7CisgICAgQ0dSZWN0IHJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KHNpemVfdCkgY29uc3Q7Cisg
ICAgc2l6ZV90IGNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50KSBjb25zdDsKKyAgICBDR1Jl
Y3QgYm91bmRzKCkgY29uc3Q7CisKKyAgICBOU0NvbG9yICpjb2xvckF0UG9pbnQoaW50IHgsIGlu
dCB5KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgVGVzdFBERlBhZ2UoUERGUGFnZSAqKTsK
KyAgICBSZXRhaW5QdHI8UERGUGFnZT4gbV9wYWdlOworICAgIE9wdGlvbmFsPFZlY3RvcjxUZXN0
UERGQW5ub3RhdGlvbj4+IG1fYW5ub3RhdGlvbnM7Cit9OworCitjbGFzcyBUZXN0UERGRG9jdW1l
bnQgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXN0UERGRG9jdW1lbnQ+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFRlc3RQREZEb2N1bWVudD4gY3JlYXRlRnJvbURhdGEoTlNEYXRhICopOworCisg
ICAgdm9pZCBkdW1wKCk7CisKKyAgICBzaXplX3QgcGFnZUNvdW50KCkgY29uc3Q7CisgICAgVGVz
dFBERlBhZ2UqIHBhZ2Uoc2l6ZV90IGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBUZXN0UERGRG9j
dW1lbnQoTlNEYXRhICopOworCisgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBtX2RvY3VtZW50
OworICAgIFZlY3RvcjxSZWZQdHI8VGVzdFBERlBhZ2U+PiBtX3BhZ2VzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0UERGRG9jdW1lbnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
REZEb2N1bWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgwYjQ1YWQzZDRkYjFjN2IyOGNjMDk1YmVmZjEz
NDcxMjFkNjFhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0UERGRG9jdW1lbnQubW0KQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQREZEb2N1bWVudC5oIgorCisjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKyNpZiBQTEFURk9STShNQUMpCitDR1JlY3Qg
dG9DR1JlY3QoTlNSZWN0IHJlY3QpIHsgcmV0dXJuIE5TUmVjdFRvQ0dSZWN0KHJlY3QpOyB9CitO
U1BvaW50IHRvUGxhdGZvcm1Qb2ludChDR1BvaW50IHBvaW50KSB7IHJldHVybiBOU1BvaW50RnJv
bUNHUG9pbnQocG9pbnQpOyB9CisjZWxzZQorQ0dSZWN0IHRvQ0dSZWN0KENHUmVjdCByZWN0KSB7
IHJldHVybiByZWN0OyB9CitOU1BvaW50IHRvUGxhdGZvcm1Qb2ludChDR1BvaW50IHBvaW50KSB7
IHJldHVybiBwb2ludDsgfQorI2VuZGlmCisKKy8vIEFubm90YXRpb25zCitUZXN0UERGQW5ub3Rh
dGlvbjo6VGVzdFBERkFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbikKKyAgICA6
IG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQoreworfQorCitib29sIFRlc3RQREZBbm5vdGF0aW9u
Ojppc0xpbmsoKSBjb25zdAoreworICAgIGJvb2wgaXNMaW5rID0gW21fYW5ub3RhdGlvbiBpc0tp
bmRPZkNsYXNzOltQREZBbm5vdGF0aW9uTGluayBjbGFzc11dOworICAgIGlmIChpc0xpbmspCisg
ICAgICAgIEFTU0VSVChbbV9hbm5vdGF0aW9uLmdldCgpLnR5cGUgaXNFcXVhbFRvU3RyaW5nOkAi
TGluayJdKTsKKyAgICByZXR1cm4gaXNMaW5rOworfQorCitDR1JlY3QgVGVzdFBERkFubm90YXRp
b246OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KG1fYW5ub3RhdGlvbi5n
ZXQoKS5ib3VuZHMpOworfQorCitOU1VSTCAqVGVzdFBERkFubm90YXRpb246OmxpbmtVUkwoKSBj
b25zdAoreworICAgIGlmICghaXNMaW5rKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIFsoUERGQW5ub3RhdGlvbkxpbmsgKiltX2Fubm90YXRpb24uZ2V0KCkgVVJMXTsKK30KKwor
Ly8gUGFnZXMKKworUmVmPFRlc3RQREZQYWdlPiBUZXN0UERGUGFnZTo6Y3JlYXRlKFBERlBhZ2Ug
KnBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVzdFBERlBhZ2UocGFnZSkpOwor
fQorCitUZXN0UERGUGFnZTo6VGVzdFBERlBhZ2UoUERGUGFnZSAqcGFnZSkKKyAgICA6IG1fcGFn
ZShwYWdlKQoreworfQorCitjb25zdCBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+JiBUZXN0UERG
UGFnZTo6YW5ub3RhdGlvbnMoKQoreworICAgIGlmICghbV9hbm5vdGF0aW9ucykgeworICAgICAg
ICBtX2Fubm90YXRpb25zID0gVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPigpOworICAgICAgICBm
b3IgKFBERkFubm90YXRpb24gKmFubm90YXRpb24gaW4gbV9wYWdlLmdldCgpLmFubm90YXRpb25z
KQorICAgICAgICAgICAgbV9hbm5vdGF0aW9ucy0+YXBwZW5kKHsgYW5ub3RhdGlvbiB9KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gKm1fYW5ub3RhdGlvbnM7Cit9CisKK3NpemVfdCBUZXN0UERGUGFn
ZTo6Y2hhcmFjdGVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuZ2V0KCkubnVt
YmVyT2ZDaGFyYWN0ZXJzOworfQorCitTdHJpbmcgVGVzdFBERlBhZ2U6OnRleHQoKSBjb25zdAor
eworICAgIHJldHVybiBtX3BhZ2UuZ2V0KCkuc3RyaW5nOworfQorCitDR1JlY3QgVGVzdFBERlBh
Z2U6OnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBjaGFyYWN0ZXJCb3VuZHNBdEluZGV4OmluZGV4XSk7Cit9
CisKK3NpemVfdCBUZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQgcG9p
bnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3BhZ2UgY2hhcmFjdGVySW5kZXhBdFBvaW50OnRv
UGxhdGZvcm1Qb2ludChwb2ludCldOworfQorCitDR1JlY3QgVGVzdFBERlBhZ2U6OmJvdW5kcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KFttX3BhZ2UgYm91bmRzRm9yQm94OmtQREZE
aXNwbGF5Qm94TWVkaWFCb3hdKTsKK30KKworCitOU0NvbG9yICpUZXN0UERGUGFnZTo6Y29sb3JB
dFBvaW50KGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICBhdXRvIGJvdW5kc1JlY3QgPSBib3Vu
ZHMoKTsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUoTlVMTCwgYm91bmRzUmVjdC5zaXplLndpZHRoLCBib3VuZHNS
ZWN0LnNpemUuaGVpZ2h0LCA4LCAwLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAgYXV0byBj
Z1BhZ2UgPSBtX3BhZ2UuZ2V0KCkucGFnZVJlZjsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZVdp
dGhBbm5vdGF0aW9ucyhjb250ZXh0LmdldCgpLCBjZ1BhZ2UsIG51bGxwdHIpOworCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciogcGl4ZWwgPSAoY29uc3QgdW5zaWduZWQgY2hhciopQ0dCaXRtYXBD
b250ZXh0R2V0RGF0YShjb250ZXh0LmdldCgpKTsKKyAgICBzaXplX3QgaSA9ICh5ICogeCAqIDQp
ICsgKHggKiA0KTsKKworICAgIGF1dG8gciA9IHBpeGVsW2ldOworICAgIGF1dG8gZyA9IHBpeGVs
W2kgKyAxXTsKKyAgICBhdXRvIGIgPSBwaXhlbFtpICsgMl07CisgICAgYXV0byBhID0gcGl4ZWxb
aSArIDNdOworCisgICAgaWYgKCFhKQorICAgICAgICByZXR1cm4gbnNDb2xvcihXZWJDb3JlOjpD
b2xvcigwLCAwLCAwLCAwKSk7CisgICAgcmV0dXJuIG5zQ29sb3IoV2ViQ29yZTo6Q29sb3IociAq
IDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSkpOworfQorCisvLyBEb2N1bWVu
dHMKKworUmVmPFRlc3RQREZEb2N1bWVudD4gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0
YShOU0RhdGEgKmRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVzdFBERkRvY3Vt
ZW50KGRhdGEpKTsKK30KKworVGVzdFBERkRvY3VtZW50OjpUZXN0UERGRG9jdW1lbnQoTlNEYXRh
ICpkYXRhKQorICAgIDogbV9kb2N1bWVudChhZG9wdE5TKFtbUERGRG9jdW1lbnQgYWxsb2NdIGlu
aXRXaXRoRGF0YTpkYXRhXSkpCisgICAgLCBtX3BhZ2VzKHBhZ2VDb3VudCgpKQoreworfQorCitz
aXplX3QgVGVzdFBERkRvY3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9kb2N1bWVudCBwYWdlQ291bnRdOworfQorCitUZXN0UERGUGFnZSogVGVzdFBERkRvY3VtZW50
OjpwYWdlKHNpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gcGFnZUNvdW50KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9wYWdlc1tpbmRleF0pCisgICAgICAg
IG1fcGFnZXNbaW5kZXhdID0gVGVzdFBERlBhZ2U6OmNyZWF0ZShbbV9kb2N1bWVudCBwYWdlQXRJ
bmRleDppbmRleF0pOworICAgIHJldHVybiBtX3BhZ2VzW2luZGV4XS5nZXQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378218</attachid>
            <date>2019-09-06 12:39:37 -0700</date>
            <delta_ts>2019-09-06 13:48:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190906123936.patch</filename>
            <type>text/plain</type>
            <size>61300</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjU5OWRlYWFlOThhZTM0ZTgzZTkwOWNkMzNlZjRiMGI1NzNiNTcx
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAordm9pZCBX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rp
b24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZyYW1lSUQsIHJlY3QsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9QREZD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOworICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0YSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkK
IHsKICAgICBBU1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgx
MWZhNWYuLjc4ZGMyMTRkYTE3ODE5YzJiZDdjZDRjNGNiZWUzNzYyZmJkMmZhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsOSArMzYwLDkgQEAgc3RydWN0
IEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzOwogICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiB9OworI2VuZGlmCiAKIHVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwotI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdURjo6TWFj
aFNlbmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKQEAgLTExNzQsMTIgKzExNzQsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxs
YmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJ
bmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwor
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOworCiAgICAgUGFnZUxvYWRTdGF0ZSYgcGFnZUxvYWRT
dGF0ZSgpIHsgcmV0dXJuIG1fcGFnZUxvYWRTdGF0ZTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOTNkMzQxNDJmODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uZjM4MzY2Njlk
ZWM1OTc3ODlmMDdjNmQyMmJhY2YxOWQ3NWM5ZGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDkgKzE5Niw5IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygp
CiAgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0
X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9y
UG90ZW50aWFsVGFwKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRl
clJlY3QsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNl
bGVjdGlvblJlY3RzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyAg
ICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNl
dERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBk
YXRhRGV0ZWN0aW9uUmVzdWx0KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDNhZDhkZjQ4MDhlOGRhODBhMGNiMTMzZDMwMzZmNDFh
MWJlYzYyY2QuLjg0Nzg4ZThhNWFhZmRmMGViNDRhN2Y1ZmFhNmE0OGU4OWJkN2ZmN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03MTgsNiAr
NzE4LDggQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBXZWJLaXQ6OlByaW50SW5mbyBw
cmludEluZm87CiAgICAgcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKICAgICBw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UgPSBwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0
UGFnZTsKKworICAgIC8vIEZJWE1FOiBQYWdpbmF0ZSB3aGVuIGV4cG9ydGluZyBQREZzIHRhbGxl
ciB0aGFuIDIwMCIKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IG1heGltdW1QREZIZWlnaHQgPSAyMDAgKiA3MjsgLy8g
bWF4aW11bSBQREYgaGVpZ2h0IGZvciBhIHNpbmdsZSBwYWdlIGlzIDIwMCBpbmNoZXMKICAgICAg
ICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2VsZi5ib3VuZHMuc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2Nj
ZGI4ZTlmMzAwZGMwYmVmYzZjMTU4NDkyMDQuLmJhZjhkMzYyY2MxMDNmNGQ1YTlhYzE4NmQ5ZWQ3
ZWVmYjFlM2IxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTA4NiwxMyArMTA4Niw2IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BE
RkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdU
b1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7
Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsK
LX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29u
c3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXpl
Q2F0ZWdvcnkpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODVhNDNiNTQ3OWMxNTll
NDBkOGVmZmQ5MzJjYjI1YjU0M2RiMjZlYS4uYmMxNGJlNGE5ZmEzYjk2ODU4MzI3YmYwMjc3ZTU0
NWEyMjg2MDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMjMyLDcgKzIzMiw1OCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQog
ICAgIGF1dG8qIGRvY3VtZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK1JldGFpblB0
cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1l
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKworICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRD
RihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8g
bWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSk7CisgICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRD
cmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKKworICAgIGlu
dDY0X3QgcmVtYWluaW5nSGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQ2NF90
IG5leHRSZWN0WSA9IHJlY3QueSgpOworICAgIHdoaWxlIChyZW1haW5pbmdIZWlnaHQgPiAwKSB7
CisgICAgICAgIC8vIFBERnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdodCBsaW1pdCBvZiAyMDAgaW5j
aGVzIGF0IDcyZHBpLgorICAgICAgICAvLyBXZSdsbCBleHBvcnQgb25lIFBERiBwYWdlIGF0IGEg
dGltZSwgdXAgdG8gdGhhdCBtYXhpbXVtIGhlaWdodC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDY0X3QgbWF4UGFnZUhlaWdodCA9IDcyICogMjAwOworICAgICAgICBiaXRtYXBTaXplLnNldEhl
aWdodChzdGQ6Om1pbihyZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VIZWlnaHQpKTsKKyAgICAgICAg
cmVjdC5zZXRIZWlnaHQoYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlY3Quc2V0WShu
ZXh0UmVjdFkpOworCisgICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwg
Yml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byBt
ZWRpYUJveERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikm
bWVkaWFCb3gsIHNpemVvZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IChD
RkRpY3Rpb25hcnlSZWYpQHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDR1BERkNvbnRleHRN
ZWRpYUJveCA6IChOU0RhdGEgKiltZWRpYUJveERhdGEuZ2V0KCkKKyAgICAgICAgfTsKKworICAg
ICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgZGljdGlvbmFyeSk7
CisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQu
Z2V0KCkgfTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwor
CisgICAgICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
KmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKKworICAgICAgICBDR1BE
RkNvbnRleHRFbmRQYWdlKHBkZkNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIG5leHRSZWN0WSAr
PSBiaXRtYXBTaXplLmhlaWdodCgpOworICAgICAgICByZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFn
ZUhlaWdodDsKKyAgICB9CisKKyAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgp
KTsKKworICAgIHJldHVybiBkYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBlZWEwZjQ2MWYyMTU5MjI0ZTIxYmUxNDhhNGM3ZDZiOTcyNjYx
NzA0Li40ZjAzNTU2ZDA3YTJkZWRhZTc0M2JiMDU4NTBhYmNmZWE4YTdkYjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMwNiw3ICsyMzA2
LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25z
KGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZQogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1lVmll
dywgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit2b2lkIFdlYlBhZ2U6OnBhaW50
U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFw
U2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewogICAgIEludFJl
Y3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3Ig
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYml0bWFwU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsK
QEAgLTIzODAsMzkgKzIzODAsNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIHJldHVy
biBzbmFwc2hvdDsKIH0KIAotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBh
Z2U6OnBkZlNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQotewotICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOwotCi0jaWYgVVNFKENHKQotICAgIGF1dG8gZGF0YUNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwot
ICAgIGF1dG8gbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwg
Yml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsK
LQotICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBudWxscHRyKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0LmdldCgp
IH07Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LnRyYW5zbGF0ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgcGFpbnRTbmFw
c2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVW
aWV3LCBncmFwaGljc0NvbnRleHQpOwotCi0gICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250
ZXh0LmdldCgpKTsKLSAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGRhdGE7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CkBAIC00NzQ4LDYgKzQ3MTUsMzQgQEAg
dm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFByaW50SW4KICAgICAgICAgcmVzdWx0UGFnZVJlY3RzLmFwcGVuZChJ
bnRSZWN0KDAsIDAsIDEsIDEpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCk7CisgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CisgICAgaWYgKHJlY3Qp
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUocmVjdC0+c2l6ZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IHsgZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpIH07CisK
KyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICBpZiAocmVjdCkKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7KGludClyZWN0LT54KCksIChpbnQpcmVjdC0+eSgpfSwgc25hcHNob3RTaXpl
IH07CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFJlY3QgPSB7IHswLCAwfSwgc25hcHNob3RT
aXplIH07CisKKyAgICBhdXRvIG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QgPSBm
cmFtZVZpZXcubGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKTsKKyAgICBmcmFtZVZpZXcuc2V0
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdChzbmFwc2hvdFJlY3QpKTsKKyAg
ICBhdXRvIG9yaWdpbmFsUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy5wYWludEJlaGF2aW9yKCk7
CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yIHwg
UGFpbnRCZWhhdmlvcjo6QW5ub3RhdGVMaW5rcyk7CisKKyAgICBhdXRvIHBkZkRhdGEgPSBwZGZT
bmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CisKKyAgICBmcmFt
ZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdCk7CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQ
YWludEJlaGF2aW9yKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1Rv
UERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5n
ZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30K
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBkZjFjODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3YWEyZDEyNTg2Li43ZjFi
NzEzYmZhM2U4MWFlNzBhOTZiZDkyYTQ4ZTM5ZmNiNDY2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04ODEsNiArODgxLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYm
KTsKICNlbmRpZgogCisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ2FsbGJhY2tJRCk7CisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENh
bGxiYWNrSUQpOwpAQCAtMTYwNSw4ICsxNjA3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxX
ZWJJbWFnZT4gc25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywg
dW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpOwotI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFw
c2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0xNjIxLDYgKzE2MjMsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNv
bW1pdHRpbmdMb2FkKCk7CiAKKyAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hvdE9wdGlvbnMs
IFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik7CisKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
NWI5ZTFlMDdlYjdkOGI3MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uYWVlNzA2ZmE1MmM5ZTFj
ZDMwMDgzMTQ2ZjgwODY0MTM0MGU1Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zODgsNiArMzg4LDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMK
ICNlbmRpZgorICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmlu
dGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWU4ZTE0MWM2MDQx
MDgzOWRiZmQxMTIxM2IwNmIzNjM0NWJhYjNmNi4uZTE0MmU1MTE1NjUxNGFhNTAwM2UyNmM4YWE1
MjM3ZWU2OTYwNGZiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUg
Y29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkw
MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtQWRkIGFuICJF
eHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgLUFk
ZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
TWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBm
b3JjZVJlcGFpbnQ6XSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVB
c1BERjpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAg
ICAgIAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SUxpYnJhcnkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUERGU25hcHNob3QubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXF1YWxV
c2luZ1JHQkEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dG9DR1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9QbGF0Zm9y
bVBvaW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpUZXN0
UERGQW5ub3RhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlv
bjo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0
aW9uOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90
YXRpb246OmxpbmtVUkwgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6VGVzdFBE
RlBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFubm90YXRpb25z
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCBj
b25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4dCBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0
SW5kZXggY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJh
Y3RlckluZGV4QXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
UGFnZTo6Ym91bmRzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
Ojpjb2xvckF0UG9pbnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRv
Y3VtZW50OjpjcmVhdGVGcm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
RG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0UERGRG9jdW1lbnQ6OnBhZ2UpOgorCiAyMDE5LTA5LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldGFpbiBj
ZXJ0YWluIHBhcmFtZXRlcnMgd2hlbiBmb2xsb3dpbmcgbWVudSBsaW5rcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJy
b3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCmluZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2Yzlh
ZTM4ZjI5OWEzMjVkY2I0ZGFkYjkuLmU0YzJiYTE4MGYzOTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVh
M2VjMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVt
ZW50cworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKQEAg
LTIsMjAgKzIsMjAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJ
U1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5k
dGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1
cml0eS5hcHAtc2FuZGJveDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0
eS5kZXZpY2UudXNiPC9rZXk+CiAJPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZp
bGVzLnVzZXItc2VsZWN0ZWQucmVhZC1vbmx5PC9rZXk+CisJPGtleT5jb20uYXBwbGUuc2VjdXJp
dHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFkLXdyaXRlPC9rZXk+CisJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0
aC5yZWFkLW9ubHk8L2tleT4KKwk8c3RyaW5nPi88L3N0cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5z
ZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLm1hY2gtbG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+
CiAJPGFycmF5PgogCQk8c3RyaW5nPmNvbS5hcHBsZS5TYWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZp
Y2U8L3N0cmluZz4KIAkJPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248
L3N0cmluZz4KIAk8L2FycmF5PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KLQk8c3RyaW5nPi88L3N0
cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oCmluZGV4IGM1YjlkNTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRl
M2EwMjRhNWQ5NDYuLmRmZGI2NDAxM2YwMTZiZDBiZGE1MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCkBA
IC00Niw2ICs0Niw4IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dp
bmRvd0NvbnRyb2xsZXIgewogCiAtIChJQkFjdGlvbilvcGVuTG9jYXRpb246KGlkKXNlbmRlcjsK
IAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXI7CisKIC0gKElCQWN0aW9uKWZldGNo
OihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilzaGFyZTooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24p
cmVsb2FkOihpZClzZW5kZXI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCmluZGV4IDRiOTkwNTdhMDNjZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUw
NDQ4MmYuLjRkNDU3Mzk2ZjA2NTRlMGY5ZWU4MzRmOTE0ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC05Myw2
ICs5MywxMSBAQCAtIChJQkFjdGlvbilmb3JjZVJlcGFpbnQ6KGlkKXNlbmRlcgogICAgIFtzZWxm
IGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFz
UERGOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2Nt
ZF07Cit9CisKIC0gKElCQWN0aW9uKWdvQmFjazooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgZG9l
c05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL01haW5NZW51LnhpYiBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIK
aW5kZXggNTQ2YTYwZjAzMmU3MmU0MmI2YTZjMzZjNDk4ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1
Mjk3YzM2MDBjNDhiN2NmMDRjNDMxMjhkZTZiZjI0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL01haW5NZW51LnhpYgorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1l
bnUueGliCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2Eu
WElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1h
Y09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KKzxkb2N1bWVudCB0eXBl
PSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRv
b2xzVmVyc2lvbj0iMTQ0OTAuNzAiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVy
dHlBY2Nlc3NDb250cm9sPSJub25lIj4KICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICA8cGx1
Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2
ZXJzaW9uPSIxMzc3MSIvPgorICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5J
bnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxNDQ5MC43MCIvPgogICAgIDwv
ZGVwZW5kZW5jaWVzPgogICAgIDxvYmplY3RzPgogICAgICAgICA8Y3VzdG9tT2JqZWN0IGlkPSIt
MiIgdXNlckxhYmVsPSJGaWxlJ3MgT3duZXIiIGN1c3RvbUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4K
QEAgLTEzMyw2ICsxMzMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxhY3Rpb24gc2VsZWN0b3I9InNhdmVEb2N1bWVudEFzOiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIv
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPG1lbnVJdGVtIHRpdGxlPSJTYXZlIEFzIFBERuKApiIga2V5RXF1aXZhbGVudD0iUyIg
aWQ9ImdtUy0zUS1vTHMiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZp
ZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIgb3B0aW9uPSJZRVMiIGNvbW1h
bmQ9IllFUyIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9yPSJz
YXZlQXNQREY6IiB0YXJnZXQ9Ii0xIiBpZD0iMjVULUlkLTMzNCIvPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvbWVudUl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRp
dGxlPSJSZXZlcnQgdG8gU2F2ZWQiIGlkPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIvPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDdl
ZDZjM2QyZjkwNjkzNzM3NjU0NzMxYzczNGI4MTM4YjE1MmZlNjMuLjZkNjZiZmIwYTVmMzljOThk
MjkyNzdhNmM2YWNlZDkzODBkZDJjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0xMzQsNiArMTM0LDkgQEAgLSAoQk9P
TCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0
aW9uID0gW21lbnVJdGVtIGFjdGlvbl07CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihz
YXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2
YzI4NTE5MjFkMzRkYzRhMjJmNDNhMmU1Zi4uY2Y0ZDNhZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1
M2QyZjcyMDNkMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KQEAgLTIwNyw2ICsyMDcsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVu
dUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBtZW51SXRl
bS5hY3Rpb247CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21Jbjop
KQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBz
ZWxlY3Rvcih6b29tT3V0OikpCkBAIC04MTQsNCArODE3LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoo
dm9pZCAoCiAgICAgZGVjaXNpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2
ZUFzUERGOihpZClzZW5kZXIKK3sKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFu
ZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5hbGxvd2VkRmlsZVR5cGVzID0gQFsgQCJwZGYiIF07
CisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBO
U01vZGFsUmVzcG9uc2VPSykgeworICAgICAgICAgICAgW193ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBbcGRmU25hcHNo
b3REYXRhIHdyaXRlVG9VUkw6W3BhbmVsIFVSTF0gb3B0aW9uczowIGVycm9yOm5pbF07CisgICAg
ICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH1dOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5Lnhj
Y29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
TGlicmFyeS54Y2NvbmZpZwppbmRleCAyZGU2MWY3OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdh
YTgwNDlkLi5mNzY4ZmMyNjVkMzc0NDc1OWRhOTE4NzQyNWI3YTA0NjA4ODg1NTgzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJy
YXJ5LnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKQEAgLTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFN
RSA9IFRlc3RXZWJLaXRBUEk7CiBTS0lQX0lOU1RBTEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklW
QVRFX0VYVEVSTiA9IFlFUzsKKworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNE
S1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9G
cmFtZXdvcmtzICQoaW5oZXJpdGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaAppbmRleCBlMmZiNjkwMjRiYjE0OWUwMTU4ODY1NjBmZTRiNDM4YzY1OWI1MTM5Li40ZDli
NGQ3NDMyMGY1MGUyZjUxNDFhMzM3ZDI0MGU0MzMwOTdhZGUyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8c3RyaW5n
PgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFT
UyBOU0NvbG9yOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5n
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTQ3NDNkMjcwZWYyZmI2NDEwMGYzZjdlNWM4M2Y2OGI3ZmM4N2ZiOC4uMTJiNzNi
YzNjMmNjZTYyZDdhZWJlNWY0ZTZlOTM4MWUxM2U0ZTg4NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI3NSw2ICsyNzUsMTEgQEAKIAkJNTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8qIElu
ZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5kZXhl
ZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUg
LyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAw
NDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJD
ODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07CisJCTUxQkU5RjkyMjMx
OUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjkxMjMxOUU4QzEwMEY5NkNFMiAvKiBQREZTbmFw
c2hvdC5tbSAqLzsgfTsKKwkJNTFCRTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFC
RTlGOUMyMzFGMkY0RDAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5QTIzMUYyRTk4MDBGOTZD
RTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFCRTlGOUUyMzFGMzUxRTAwRjk2Q0Uy
IC8qIFBERktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29y
ayAqLzsgfTsKKwkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjlG
MjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi87IH07CiAJCTUxQzY4M0RF
MUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4
MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLzsgfTsKIAkJNTFDOEUxQTUxRjI2QUY0QzAw
QkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLzsgfTsKIAkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFC
IC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTgx
RjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MucGxpc3QgKi87IH07CkBAIC0xNzY4LDYgKzE3NzMsMTEgQEAKIAkJNTFCQ0VFNDkxQzg0RjRB
RjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhl
ZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIg
LyogUERGU25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQREZTbmFwc2hvdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGOUEyMzFGMkU5ODAwRjk2Q0UyIC8q
IFF1YXJ0ei5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ei5mcmFtZXdvcms7IHBh
dGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSBTREtST09UOyB9OworCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0LmZyYW1ld29yazsgcGF0aCA9IFBsYXRm
b3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMTQuc2RrL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvUERGS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CisJCTUx
QkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0UERGRG9jdW1lbnQubW07IHBhdGggPSBj
b2NvYS9UZXN0UERGRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
QkU5RkEwMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRvY3VtZW50Lmg7IHBhdGggPSBjb2NvYS9UZXN0
UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUEx
MzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4RTFBODFGMjdG
NDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGUuYnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU2NCw4IEBA
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MUJFOUY5RTIzMUYzNTFFMDBGOTZDRTIg
LyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUxQkU5RjlDMjMxRjJG
NEQwMEY5NkNFMiAvKiBRdWFydHouZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTY4
LDYgKzI1ODAsNyBAQAogCQkJCTVDRkFDRjYzMjI2RjczQzYwMDU2QzdEMCAvKiBsaWJib3Jpbmdz
c2wuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdDODNFMDNGMUQwQTYxQTAwMEZFQkNGMyAvKiBs
aWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTc4Q0JENjcyMDRGQjJDODAw
ODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CisJCQkJNTFCRTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQk3QTAxMEJDRDFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYg
LyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpAQCAtMjY2NSw2
ICsyNjc4LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRN
ZW51RHJpdmVyLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCisJCQkJNTFCRTlGQTAyMzIwMjM4QTAwRjk2Q0Uy
IC8qIFRlc3RQREZEb2N1bWVudC5oICovLAorCQkJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAv
KiBUZXN0UERGRG9jdW1lbnQubW0gKi8sCiAJCQkJQTE0RkM1OEQxQjhBRTM2NTAwRDEwN0VCIC8q
IFRlc3RQcm90b2NvbC5oICovLAogCQkJCUExNEZDNThFMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0
UHJvdG9jb2wubW0gKi8sCiAJCQkJMkVGRjA2RDIxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dl
YlZpZXcuaCAqLywKQEAgLTI4MjYsNiArMjg0MSw3IEBACiAJCQkJOUJERDk1NTYxRjgzNjgzNjAw
RDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0MDBEQjFEMjMg
LyogUGFzdGVXZWJBcmNoaXZlLm1tICovLAogCQkJCTUxRDhDMThGMjI2N0IyNjcwMDc5N0U0MCAv
KiBQREZMaW5rUmVmZXJyZXIubW0gKi8sCisJCQkJNTFCRTlGOTEyMzE5RThDMTAwRjk2Q0UyIC8q
IFBERlNuYXBzaG90Lm1tICovLAogCQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0
dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0
IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywKIAkJCQlDOTU1MDFCRTE5QUQyRkFG
MDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCkBAIC0zMDkzLDYgKzMxMDksOCBAQAogCQkJ
CTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIg
Ki8sCiAJCQkJN0M4M0UwMjkxRDBBNUNERjAwRkVCQ0YzIC8qIGxpYldURi5hICovLAogCQkJCTU3
OENCRDY2MjA0RkIyQzcwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAq
LywKKwkJCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLywK
KwkJCQk1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLywKIAkJ
CQk3QTAxMEJDQzFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8sCiAJ
CQkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLywKIAkJ
CSk7CkBAIC00NjI4LDYgKzQ2NDYsNyBAQAogCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAv
KiBQYXN0ZVJURkQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjIzNDY0MjFGOTQzRTI3MDBEQjFE
MjMgLyogUGFzdGVXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEOEMxOTAyMjY3
QjI2RDAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
QkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzRkNDNEZFNTFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUlu
UGljdHVyZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAw
NDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00NzI1
LDYgKzQ3NDQsNyBAQAogCQkJCUY0RjVCQjUyMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9w
dGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3NjIxMTJDRTYyMDAzMDdFODIgLyog
VGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVEMzg5MTIxNUE3QjRC
MDAyQTI5NzkgLyogVGVzdEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5
RkExMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1Nzc0QUE2ODIxRkJCRjc4MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCUY0Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2No
ZW1lSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcy
MSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtNDk5MSw2
ICs1MDExLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJL
aXRBUEkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFN
RVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTQ5
OTgsNiArNTAyMiwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0
V2ViS2l0QVBJLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1f
RlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIk
KFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
QEAgLTUwOTMsNiArNTEyMSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAv
KiBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwogCQl9OwpAQCAtNTEwMCw2ICs1MTMyLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0NDRTdFQTMxQTQxMTVD
QjAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnICovOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
IiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9R
dWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJ
CQluYW1lID0gUmVsZWFzZTsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NDc1N2ZmYWJiM2Rl
MWNlMzNlYWQwY2NmY2U1YjYxZDQ4MjNlMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC0wLDAgKzEsMjQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQu
aCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZXF1
YWxVc2luZ1JHQkEoTlNDb2xvciAqYSwgTlNDb2xvciAqYikKK3sKKyAgICByZXR1cm4gW1thIGNv
bG9yVXNpbmdDb2xvclNwYWNlOltOU0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXSBpc0VxdWFs
OltiIGNvbG9yVXNpbmdDb2xvclNwYWNlOltOU0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXV07
Cit9CisKK1RFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQoreworICAgIHN0YXRpYyBib29s
IGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIFBERiB0YWtlcyB0aGUgSFRNTCBiYWNrZ3JvdW5kIGNv
bG9yIGFuZCBub3QgdGhlIHZpZXcncyBiYWNrZ3JvdW5kIGNvbG9yLgorICAgIFt3ZWJWaWV3IF9z
ZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXV07CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhl
bGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1
dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90
RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisKKyAgICAgICAgLy8g
V2UgZXhwZWN0IHRoZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBzcGFjZSBi
ZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPnRleHQoKVsxXSwgJ0gnKTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs1XSwg
J28nKTsKKworICAgICAgICAvLyBUaGUgIkgiIGZyb20gSGVsbG8gaGFzIHRoZSByZWN0OiA4LjAw
MDAwMCA1NzQuMDAwMDAwIDExLjU1NTIwMCAxNi4wMDAwMDAKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50TWFrZSgxMywgNTgwKSksIDF1KTsKKwor
ICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQg
aW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JH
QkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsK
KworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6
cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25z
KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICAv
LyBTbmFwc2hvdCBhIHN1YnJlZ2lvbiBjb250YWluZWQgZW50aXJlbHkgd2l0aGluIHRoZSB2aWV3
CisgICAgYXV0byBzbmFwc2hvdENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNl
dFJlY3Q6TlNNYWtlUmVjdCgyMDAsIDE1MCwgNDAwLCAzMDApXTsKKyAgICBbc25hcHNob3RDb25m
aWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDQwMF07CisKKyAgICBbd2ViVmlldyBfdGFrZVBE
RlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1cmF0aW9uLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9
IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIp
OworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwg
Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDMwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhl
IGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hh
cmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAz
Mik7CisKKyAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBh
IHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFs
VXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCksIFtOU0NvbG9yIGdyZWVuQ29s
b3JdKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVz
L0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCisgICAg
Ly8gU25hcHNob3QgYSByZWdpb24gbGFyZ2VyIHRoYW4gdGhlIHZpZXcKKyAgICBbc25hcHNob3RD
b25maWd1cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxMjAwLCAxMjAwKV07CisgICAg
W3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkAxMjAwXTsKKworICAgIFt3
ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3Vy
YXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBh
dXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hv
dERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7Cisg
ICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUo
cGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBh
Z2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEyMDApKSk7CisKKyAgICAgICAg
Ly8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBw
b2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVz
aW5nUkdCQShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApLCBbTlNDb2xvciBncmVlbkNvbG9y
XSkpOworCisgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91
bGQgYWxzbyBiZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBh
IHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFs
VXNpbmdSR0JBKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAsIDcwMCksIFtOU0NvbG9yIGdyZWVuQ29s
b3JdKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVz
L0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCit9CisK
K1RFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJvb2wgZGlk
VGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAwKV0pOwor
CisgICAgLy8gTWFrZSBzdXJlIHRoZSBQREYgdGFrZXMgdGhlIEhUTUwgYmFja2dyb3VuZCBjb2xv
ciBhbmQgbm90IHRoZSB2aWV3J3MgYmFja2dyb3VuZCBjb2xvci4KKyAgICBbd2ViVmlldyBfc2V0
QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIHN5c3RlbUJsdWVDb2xvcl1dOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxs
bzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAzdSk7CisKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05T
Q29sb3IgZ3JlZW5Db2xvcl0pKTsKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1IGNoYXJhY3Rl
cnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIgYmVm
b3JlIHRoZSAnSCcsIGFuZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlICdvJworICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgN3UpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgxKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShw
YWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworCisg
ICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3RlciBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgYSBmdWxs
IHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rl
ckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOwor
CisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgyKTsKKyAgICAgICAgRVhQRUNUX05FKHBh
Z2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdl
LT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29s
b3IgZ3JlZW5Db2xvcl0pKTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9uIHRoZSB0
aGlyZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdl
LT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAg
IH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNu
YXBzaG90LCBMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJraXQtbGluZS1ib3gtY29u
dGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwv
YT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7CisKKyAg
ICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShw
YWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFn
ZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05T
Q29sb3Igd2hpdGVDb2xvcl0pKTsKKworICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+
YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUp
OworICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbFRvOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgZGlkVGFr
ZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBz
aG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgSW5saW5lTGlua3MpCit7CisgICAgc3RhdGlj
IGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVm
PVwiaHR0cHM6Ly93ZWJraXQub3JnL1wiPkNsaWNrIG1lPC9hPiJdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6
OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1
bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworCisgICAgICAgIC8v
IEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBsaW5rIGhlcmUsIGJ1dCBkdWUgdG8gdGhlIHdheSB3
ZSBnYXRoZXIgbGlua3MgZm9yIGFubm90YXRpb24gdXNpbmcgdGhlIFJlbmRlcklubGluZSB0cmVl
CisgICAgICAgIC8vIGl0IGlzIG1pc3NlZC4KKworLy8gICAgICAgIGF1dG8gYW5ub3RhdGlvbnMg
PSBwYWdlLT5hbm5vdGF0aW9ucygpOworLy8gICAgICAgIEVYUEVDVF9FUShhbm5vdGF0aW9ucy5z
aXplKCksIDF1KTsKKy8vICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmso
KSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0Vx
dWFsVG86W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dKTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RQREZEb2N1bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMjNlNzk4ZGFmYWYwMjljMDE2ZjBiMTcw
NmFkZmExMjA1YjU3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RQREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291bnRlZC4gVGhleSByZW1haW4g
dmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQREZQYWdlIHJlbWFpbnMgdmFs
aWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBUZXN0UERGQW5ub3Rh
dGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xpbmsoKSBjb25zdDsKKyAgICBD
R1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtVUkwoKSBjb25zdDsKKyAgICAK
K3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+IG1fYW5ub3RhdGlvbjsKK307
CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERlBhZ2U+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBjcmVhdGUoUERGUGFnZSAqKTsK
KworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIGFubm90YXRpb25zKCk7Cisg
ICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHRleHQoKSBjb25z
dDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAg
ICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQpIGNvbnN0OworICAgIENHUmVj
dCBib3VuZHMoKSBjb25zdDsKKworICAgIE5TQ29sb3IgKmNvbG9yQXRQb2ludChpbnQgeCwgaW50
IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUZXN0UERGUGFnZShQREZQYWdlICopOwor
ICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7CisgICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQ
REZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKK307CisKK2NsYXNzIFRlc3RQREZEb2N1bWVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVGcm9tRGF0YShOU0RhdGEgKik7CisKKyAg
ICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdDsKKyAgICBUZXN0
UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitwcml2YXRlOgorICAgIFRlc3RQREZEb2N1
bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+IG1fcGFnZXM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBE
RkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODBiNDVhZDNkNGRiMWM3YjI4Y2MwOTViZWZmMTM0
NzEyMWQ2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50LmgiCisKKyNpbXBvcnQgPFdlYkNv
cmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lmIFBMQVRGT1JNKE1BQykKK0NHUmVjdCB0
b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNSZWN0VG9DR1JlY3QocmVjdCk7IH0KK05T
UG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIE5TUG9pbnRGcm9t
Q0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3QgdG9DR1JlY3QoQ0dSZWN0IHJlY3QpIHsg
cmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsg
cmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5ub3RhdGlvbnMKK1Rlc3RQREZBbm5vdGF0
aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uKQorICAgIDog
bV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisKK2Jvb2wgVGVzdFBERkFubm90YXRpb246
OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xpbmsgPSBbbV9hbm5vdGF0aW9uIGlzS2lu
ZE9mQ2xhc3M6W1BERkFubm90YXRpb25MaW5rIGNsYXNzXV07CisgICAgaWYgKGlzTGluaykKKyAg
ICAgICAgQVNTRVJUKFttX2Fubm90YXRpb24uZ2V0KCkudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJM
aW5rIl0pOworICAgIHJldHVybiBpc0xpbms7Cit9CisKK0NHUmVjdCBUZXN0UERGQW5ub3RhdGlv
bjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QobV9hbm5vdGF0aW9uLmdl
dCgpLmJvdW5kcyk7Cit9CisKK05TVVJMICpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCgpIGNv
bnN0Cit7CisgICAgaWYgKCFpc0xpbmsoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gWyhQREZBbm5vdGF0aW9uTGluayAqKW1fYW5ub3RhdGlvbi5nZXQoKSBVUkxdOworfQorCisv
LyBQYWdlcworCitSZWY8VGVzdFBERlBhZ2U+IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFnZSAq
cGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7Cit9
CisKK1Rlc3RQREZQYWdlOjpUZXN0UERGUGFnZShQREZQYWdlICpwYWdlKQorICAgIDogbV9wYWdl
KHBhZ2UpCit7Cit9CisKK2NvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQ
YWdlOjphbm5vdGF0aW9ucygpCit7CisgICAgaWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAgICAg
IG1fYW5ub3RhdGlvbnMgPSBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+KCk7CisgICAgICAgIGZv
ciAoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMp
CisgICAgICAgICAgICBtX2Fubm90YXRpb25zLT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOworICAg
IH0KKworICAgIHJldHVybiAqbV9hbm5vdGF0aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQYWdl
OjpjaGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5udW1i
ZXJPZkNoYXJhY3RlcnM7Cit9CisKK1N0cmluZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5zdHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERGUGFn
ZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJl
dHVybiB0b0NHUmVjdChbbV9wYWdlIGNoYXJhY3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsKK30K
Kworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBwb2lu
dCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fcGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9Q
bGF0Zm9ybVBvaW50KHBvaW50KV07Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BERkRp
c3BsYXlCb3hNZWRpYUJveF0pOworfQorCisKK05TQ29sb3IgKlRlc3RQREZQYWdlOjpjb2xvckF0
UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJvdW5k
cygpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5kc1Jl
Y3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRvIGNn
UGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0
aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1hcENv
bnRleHRHZXREYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICogNCkg
KyAoeCAqIDQpOworCisgICAgYXV0byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4ZWxb
aSArIDFdOworICAgIGF1dG8gYiA9IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhlbFtp
ICsgM107CisKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiBuc0NvbG9yKFdlYkNvcmU6OkNv
bG9yKDAsIDAsIDAsIDApKTsKKyAgICByZXR1cm4gbnNDb2xvcihXZWJDb3JlOjpDb2xvcihyICog
MjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhKSk7Cit9CisKKy8vIERvY3VtZW50
cworCitSZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRh
KE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGRG9jdW1l
bnQoZGF0YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudChOU0RhdGEg
KmRhdGEpCisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1bWVudCBhbGxvY10gaW5p
dFdpdGhEYXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50KCkpCit7Cit9CisKK3Np
emVfdCBUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X2RvY3VtZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBUZXN0UERGRG9jdW1lbnQ6
OnBhZ2Uoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBwYWdlQ291bnQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2luZGV4XSkKKyAgICAgICAg
bV9wYWdlc1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2RvY3VtZW50IHBhZ2VBdElu
ZGV4OmluZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdldCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378228</attachid>
            <date>2019-09-06 13:48:31 -0700</date>
            <delta_ts>2019-09-07 14:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190906134830.patch</filename>
            <type>text/plain</type>
            <size>61759</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjU5OWRlYWFlOThhZTM0ZTgzZTkwOWNkMzNlZjRiMGI1NzNiNTcx
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAordm9pZCBX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0
aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rp
b24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZyYW1lSUQsIHJlY3QsIGNhbGxiYWNr
SUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9QREZD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOworICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0YSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkK
IHsKICAgICBBU1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgx
MWZhNWYuLjc4ZGMyMTRkYTE3ODE5YzJiZDdjZDRjNGNiZWUzNzYyZmJkMmZhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsOSArMzYwLDkgQEAgc3RydWN0
IEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7CiAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGVDaGFuZ2VzOwogICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiB9OworI2VuZGlmCiAKIHVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwotI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdURjo6TWFj
aFNlbmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKQEAgLTExNzQsMTIgKzExNzQsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxs
YmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJ
bmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwor
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOworCiAgICAgUGFnZUxvYWRTdGF0ZSYgcGFnZUxvYWRT
dGF0ZSgpIHsgcmV0dXJuIG1fcGFnZUxvYWRTdGF0ZTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOTNkMzQxNDJmODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uZjM4MzY2Njlk
ZWM1OTc3ODlmMDdjNmQyMmJhY2YxOWQ3NWM5ZGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDkgKzE5Niw5IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygp
CiAgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0
X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9y
UG90ZW50aWFsVGFwKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRl
clJlY3QsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBk
b3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNl
bGVjdGlvblJlY3RzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyAg
ICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNl
dERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBk
YXRhRGV0ZWN0aW9uUmVzdWx0KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDNhZDhkZjQ4MDhlOGRhODBhMGNiMTMzZDMwMzZmNDFh
MWJlYzYyY2QuLjg0Nzg4ZThhNWFhZmRmMGViNDRhN2Y1ZmFhNmE0OGU4OWJkN2ZmN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03MTgsNiAr
NzE4LDggQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBXZWJLaXQ6OlByaW50SW5mbyBw
cmludEluZm87CiAgICAgcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKICAgICBw
cmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UgPSBwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0
UGFnZTsKKworICAgIC8vIEZJWE1FOiBQYWdpbmF0ZSB3aGVuIGV4cG9ydGluZyBQREZzIHRhbGxl
ciB0aGFuIDIwMCIKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IG1heGltdW1QREZIZWlnaHQgPSAyMDAgKiA3MjsgLy8g
bWF4aW11bSBQREYgaGVpZ2h0IGZvciBhIHNpbmdsZSBwYWdlIGlzIDIwMCBpbmNoZXMKICAgICAg
ICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2VsZi5ib3VuZHMuc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2Nj
ZGI4ZTlmMzAwZGMwYmVmYzZjMTU4NDkyMDQuLmJhZjhkMzYyY2MxMDNmNGQ1YTlhYzE4NmQ5ZWQ3
ZWVmYjFlM2IxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMTA4NiwxMyArMTA4Niw2IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BE
RkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdU
b1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7
Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsK
LX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29u
c3QgU3RyaW5nJiBjb250ZW50U2l6ZUNhdGVnb3J5KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXpl
Q2F0ZWdvcnkpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODVhNDNiNTQ3OWMxNTll
NDBkOGVmZmQ5MzJjYjI1YjU0M2RiMjZlYS4uYmMxNGJlNGE5ZmEzYjk2ODU4MzI3YmYwMjc3ZTU0
NWEyMjg2MDQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMjMyLDcgKzIzMiw1OCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQog
ICAgIGF1dG8qIGRvY3VtZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK1JldGFpblB0
cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1l
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKworICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRD
RihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8g
bWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSk7CisgICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRD
cmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKKworICAgIGlu
dDY0X3QgcmVtYWluaW5nSGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQ2NF90
IG5leHRSZWN0WSA9IHJlY3QueSgpOworICAgIHdoaWxlIChyZW1haW5pbmdIZWlnaHQgPiAwKSB7
CisgICAgICAgIC8vIFBERnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdodCBsaW1pdCBvZiAyMDAgaW5j
aGVzIGF0IDcyZHBpLgorICAgICAgICAvLyBXZSdsbCBleHBvcnQgb25lIFBERiBwYWdlIGF0IGEg
dGltZSwgdXAgdG8gdGhhdCBtYXhpbXVtIGhlaWdodC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGlu
dDY0X3QgbWF4UGFnZUhlaWdodCA9IDcyICogMjAwOworICAgICAgICBiaXRtYXBTaXplLnNldEhl
aWdodChzdGQ6Om1pbihyZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VIZWlnaHQpKTsKKyAgICAgICAg
cmVjdC5zZXRIZWlnaHQoYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlY3Quc2V0WShu
ZXh0UmVjdFkpOworCisgICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwg
Yml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byBt
ZWRpYUJveERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikm
bWVkaWFCb3gsIHNpemVvZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IChD
RkRpY3Rpb25hcnlSZWYpQHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDR1BERkNvbnRleHRN
ZWRpYUJveCA6IChOU0RhdGEgKiltZWRpYUJveERhdGEuZ2V0KCkKKyAgICAgICAgfTsKKworICAg
ICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgZGljdGlvbmFyeSk7
CisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQu
Z2V0KCkgfTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwor
CisgICAgICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
KmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKKworICAgICAgICBDR1BE
RkNvbnRleHRFbmRQYWdlKHBkZkNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIG5leHRSZWN0WSAr
PSBiaXRtYXBTaXplLmhlaWdodCgpOworICAgICAgICByZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFn
ZUhlaWdodDsKKyAgICB9CisKKyAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgp
KTsKKworICAgIHJldHVybiBkYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBlZWEwZjQ2MWYyMTU5MjI0ZTIxYmUxNDhhNGM3ZDZiOTcyNjYx
NzA0Li40ZjAzNTU2ZDA3YTJkZWRhZTc0M2JiMDU4NTBhYmNmZWE4YTdkYjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMwNiw3ICsyMzA2
LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25z
KGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdWJsZQogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTbmFwc2hv
dEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1lVmll
dywgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit2b2lkIFdlYlBhZ2U6OnBhaW50
U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFw
U2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewogICAgIEludFJl
Y3Qgc25hcHNob3RSZWN0ID0gcmVjdDsKICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3Ig
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYml0bWFwU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsK
QEAgLTIzODAsMzkgKzIzODAsNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIHJldHVy
biBzbmFwc2hvdDsKIH0KIAotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBh
Z2U6OnBkZlNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQotewotICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOwotCi0jaWYgVVNFKENHKQotICAgIGF1dG8gZGF0YUNvbnN1bWVy
ID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwot
ICAgIGF1dG8gbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwg
Yml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BE
RkNvbnRleHRDcmVhdGUoZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsK
LQotICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBudWxscHRyKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0LmdldCgp
IH07Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LnRyYW5zbGF0ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgcGFpbnRTbmFw
c2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVW
aWV3LCBncmFwaGljc0NvbnRleHQpOwotCi0gICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250
ZXh0LmdldCgpKTsKLSAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGRhdGE7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPFdlYkltYWdlPiBX
ZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50KQogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CkBAIC00NzQ4LDYgKzQ3MTUsMzQgQEAg
dm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFByaW50SW4KICAgICAgICAgcmVzdWx0UGFnZVJlY3RzLmFwcGVuZChJ
bnRSZWN0KDAsIDAsIDEsIDEpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCk7CisgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CisgICAgaWYgKHJlY3Qp
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IEludFNpemUocmVjdC0+c2l6ZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIHNuYXBzaG90U2l6ZSA9IHsgZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpIH07CisK
KyAgICBJbnRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICBpZiAocmVjdCkKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7KGludClyZWN0LT54KCksIChpbnQpcmVjdC0+eSgpfSwgc25hcHNob3RTaXpl
IH07CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFJlY3QgPSB7IHswLCAwfSwgc25hcHNob3RT
aXplIH07CisKKyAgICBhdXRvIG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QgPSBm
cmFtZVZpZXcubGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKTsKKyAgICBmcmFtZVZpZXcuc2V0
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdChzbmFwc2hvdFJlY3QpKTsKKyAg
ICBhdXRvIG9yaWdpbmFsUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy5wYWludEJlaGF2aW9yKCk7
CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yIHwg
UGFpbnRCZWhhdmlvcjo6QW5ub3RhdGVMaW5rcyk7CisKKyAgICBhdXRvIHBkZkRhdGEgPSBwZGZT
bmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CisKKyAgICBmcmFt
ZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdCk7CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQ
YWludEJlaGF2aW9yKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1Rv
UERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5n
ZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30K
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBkZjFjODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3YWEyZDEyNTg2Li43ZjFi
NzEzYmZhM2U4MWFlNzBhOTZiZDkyYTQ4ZTM5ZmNiNDY2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04ODEsNiArODgxLDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYm
KTsKICNlbmRpZgogCisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ2FsbGJhY2tJRCk7CisKICNp
ZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENh
bGxiYWNrSUQpOwpAQCAtMTYwNSw4ICsxNjA3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxX
ZWJJbWFnZT4gc25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywg
dW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpOwotI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFw
c2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0xNjIxLDYgKzE2MjMsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNv
bW1pdHRpbmdMb2FkKCk7CiAKKyAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hvdE9wdGlvbnMs
IFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik7CisKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
NWI5ZTFlMDdlYjdkOGI3MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uYWVlNzA2ZmE1MmM5ZTFj
ZDMwMDgzMTQ2ZjgwODY0MTM0MGU1Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zODgsNiArMzg4LDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMK
ICNlbmRpZgorICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmlu
dGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWU4ZTE0MWM2MDQx
MDgzOWRiZmQxMTIxM2IwNmIzNjM0NWJhYjNmNi4uZTE0MmU1MTE1NjUxNGFhNTAwM2UyNmM4YWE1
MjM3ZWU2OTYwNGZiNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUg
Y29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkw
MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtQWRkIGFuICJF
eHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgLUFk
ZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
TWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBm
b3JjZVJlcGFpbnQ6XSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVB
c1BERjpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAg
ICAgIAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SUxpYnJhcnkueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUERGU25hcHNob3QubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXF1YWxV
c2luZ1JHQkEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dG9DR1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9QbGF0Zm9y
bVBvaW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpUZXN0
UERGQW5ub3RhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlv
bjo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0
aW9uOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90
YXRpb246OmxpbmtVUkwgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6VGVzdFBE
RlBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFubm90YXRpb25z
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCBj
b25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4dCBjb25zdCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0
SW5kZXggY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJh
Y3RlckluZGV4QXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
UGFnZTo6Ym91bmRzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
Ojpjb2xvckF0UG9pbnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRv
Y3VtZW50OjpjcmVhdGVGcm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
RG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0UERGRG9jdW1lbnQ6OnBhZ2UpOgorCiAyMDE5LTA5LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldGFpbiBj
ZXJ0YWluIHBhcmFtZXRlcnMgd2hlbiBmb2xsb3dpbmcgbWVudSBsaW5rcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJy
b3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCmluZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2Yzlh
ZTM4ZjI5OWEzMjVkY2I0ZGFkYjkuLmU0YzJiYTE4MGYzOTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVh
M2VjMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVt
ZW50cworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKQEAg
LTIsMjAgKzIsMjAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJ
U1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5k
dGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1
cml0eS5hcHAtc2FuZGJveDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0
eS5kZXZpY2UudXNiPC9rZXk+CiAJPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZp
bGVzLnVzZXItc2VsZWN0ZWQucmVhZC1vbmx5PC9rZXk+CisJPGtleT5jb20uYXBwbGUuc2VjdXJp
dHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFkLXdyaXRlPC9rZXk+CisJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+
Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0
aC5yZWFkLW9ubHk8L2tleT4KKwk8c3RyaW5nPi88L3N0cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5z
ZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLm1hY2gtbG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+
CiAJPGFycmF5PgogCQk8c3RyaW5nPmNvbS5hcHBsZS5TYWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZp
Y2U8L3N0cmluZz4KIAkJPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248
L3N0cmluZz4KIAk8L2FycmF5PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50
PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KLQk8c3RyaW5nPi88L3N0
cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oCmluZGV4IGM1YjlkNTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRl
M2EwMjRhNWQ5NDYuLmRmZGI2NDAxM2YwMTZiZDBiZGE1MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCkBA
IC00Niw2ICs0Niw4IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dp
bmRvd0NvbnRyb2xsZXIgewogCiAtIChJQkFjdGlvbilvcGVuTG9jYXRpb246KGlkKXNlbmRlcjsK
IAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXI7CisKIC0gKElCQWN0aW9uKWZldGNo
OihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilzaGFyZTooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24p
cmVsb2FkOihpZClzZW5kZXI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCmluZGV4IDRiOTkwNTdhMDNjZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUw
NDQ4MmYuLjRkNDU3Mzk2ZjA2NTRlMGY5ZWU4MzRmOTE0ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC05Myw2
ICs5MywxMSBAQCAtIChJQkFjdGlvbilmb3JjZVJlcGFpbnQ6KGlkKXNlbmRlcgogICAgIFtzZWxm
IGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFz
UERGOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2Nt
ZF07Cit9CisKIC0gKElCQWN0aW9uKWdvQmFjazooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgZG9l
c05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL01haW5NZW51LnhpYiBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIK
aW5kZXggNTQ2YTYwZjAzMmU3MmU0MmI2YTZjMzZjNDk4ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1
Mjk3YzM2MDBjNDhiN2NmMDRjNDMxMjhkZTZiZjI0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL01haW5NZW51LnhpYgorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1l
bnUueGliCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KLTxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2Eu
WElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1h
Y09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KKzxkb2N1bWVudCB0eXBl
PSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRv
b2xzVmVyc2lvbj0iMTQ0OTAuNzAiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVy
dHlBY2Nlc3NDb250cm9sPSJub25lIj4KICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICA8cGx1
Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2
ZXJzaW9uPSIxMzc3MSIvPgorICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5J
bnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxNDQ5MC43MCIvPgogICAgIDwv
ZGVwZW5kZW5jaWVzPgogICAgIDxvYmplY3RzPgogICAgICAgICA8Y3VzdG9tT2JqZWN0IGlkPSIt
MiIgdXNlckxhYmVsPSJGaWxlJ3MgT3duZXIiIGN1c3RvbUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4K
QEAgLTEzMyw2ICsxMzMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxhY3Rpb24gc2VsZWN0b3I9InNhdmVEb2N1bWVudEFzOiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIv
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPG1lbnVJdGVtIHRpdGxlPSJTYXZlIEFzIFBERuKApiIga2V5RXF1aXZhbGVudD0iUyIg
aWQ9ImdtUy0zUS1vTHMiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZp
ZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIgb3B0aW9uPSJZRVMiIGNvbW1h
bmQ9IllFUyIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9yPSJz
YXZlQXNQREY6IiB0YXJnZXQ9Ii0xIiBpZD0iMjVULUlkLTMzNCIvPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvbWVudUl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRp
dGxlPSJSZXZlcnQgdG8gU2F2ZWQiIGlkPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIvPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDdl
ZDZjM2QyZjkwNjkzNzM3NjU0NzMxYzczNGI4MTM4YjE1MmZlNjMuLjZkNjZiZmIwYTVmMzljOThk
MjkyNzdhNmM2YWNlZDkzODBkZDJjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0xMzQsNiArMTM0LDkgQEAgLSAoQk9P
TCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0
aW9uID0gW21lbnVJdGVtIGFjdGlvbl07CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihz
YXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2
YzI4NTE5MjFkMzRkYzRhMjJmNDNhMmU1Zi4uY2Y0ZDNhZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1
M2QyZjcyMDNkMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0KQEAgLTIwNyw2ICsyMDcsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVu
dUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBtZW51SXRl
bS5hY3Rpb247CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAg
ICAgICAgcmV0dXJuIFlFUzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21Jbjop
KQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBz
ZWxlY3Rvcih6b29tT3V0OikpCkBAIC04MTQsNCArODE3LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoo
dm9pZCAoCiAgICAgZGVjaXNpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2
ZUFzUERGOihpZClzZW5kZXIKK3sKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFu
ZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5hbGxvd2VkRmlsZVR5cGVzID0gQFsgQCJwZGYiIF07
CisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBO
U01vZGFsUmVzcG9uc2VPSykgeworICAgICAgICAgICAgW193ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBbcGRmU25hcHNo
b3REYXRhIHdyaXRlVG9VUkw6W3BhbmVsIFVSTF0gb3B0aW9uczowIGVycm9yOm5pbF07CisgICAg
ICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH1dOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5Lnhj
Y29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
TGlicmFyeS54Y2NvbmZpZwppbmRleCAyZGU2MWY3OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdh
YTgwNDlkLi40NGUxYzVhMmFlM2Q1Mzg4MGZiYzQxNGYwYTJmNjBiMWNiY2RjYTMxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJy
YXJ5LnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKQEAgLTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFN
RSA9IFRlc3RXZWJLaXRBUEk7CiBTS0lQX0lOU1RBTEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklW
QVRFX0VYVEVSTiA9IFlFUzsKKworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNE
S1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzICQoU0RLUk9PVCkk
KFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3JrcyAkKFNES1JPT1QpJChTWVNURU1fTElCUkFS
WV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzICQoaW5oZXJpdGVk
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRleCBlMmZiNjkwMjRi
YjE0OWUwMTU4ODY1NjBmZTRiNDM4YzY1OWI1MTM5Li40ZDliNGQ3NDMyMGY1MGUyZjUxNDFhMzM3
ZDI0MGU0MzMwOTdhZGUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5o
CkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJ
T04pCi1PQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0NvbG9yOwogT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ3NDNkMjcwZWYy
ZmI2NDEwMGYzZjdlNWM4M2Y2OGI3ZmM4N2ZiOC4uMTJiNzNiYzNjMmNjZTYyZDdhZWJlNWY0ZTZl
OTM4MWUxM2U0ZTg4NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NSw2ICsyNzUsMTEg
QEAKIAkJNTFCMUVFOTcxQzgwRkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUIxRUU5NTFDODBGQUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1s
ICovOyB9OwogCQk1MUJDRUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUJDRUU0QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNz
LTEuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11
bHRpUHJvY2Vzcy0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRp
UHJvY2Vzcy0yLmh0bWwgKi87IH07CisJCTUxQkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZT
bmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkU5RjkxMjMxOUU4QzEwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLzsgfTsKKwkJNTFC
RTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5QTIzMUYyRTk4MDBGOTZD
RTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFCRTlGOUMyMzFGMkY0RDAwRjk2Q0Uy
IC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29y
ayAqLzsgfTsKKwkJNTFCRTlGOUUyMzFGMzUxRTAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5
RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJNTFCRTlGQTEy
MzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBU
ZXN0UERGRG9jdW1lbnQubW0gKi87IH07CiAJCTUxQzY4M0RFMUVBMTM0RTgwMDY1MDE4MyAvKiBX
S1VSTFNjaGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbSAqLzsgfTsKIAkJNTFDOEUxQTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5t
bSAqLzsgfTsKIAkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJl
ZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTgxRjI3RjQ3MzAwQkY3MzFCIC8qIEVt
cHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgKi87IH07CkBAIC0x
NzY4LDYgKzE3NzMsMTEgQEAKIAkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgy
RSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQREZTbmFwc2hvdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFCRTlGOUEyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IFF1YXJ0ei5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk1
MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gUERGS2l0LmZyYW1ld29yazsgcGF0aCA9IFBsYXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0v
RGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMTQuc2RrL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
UXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUERGS2l0LmZyYW1ld29yazsg
c291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CisJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNF
MiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBUZXN0UERGRG9jdW1lbnQubW07IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkU5RkEwMjMyMDIzOEEwMEY5NkNF
MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
VGVzdFBERkRvY3VtZW50Lmg7IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJM
U2NoZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gIldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlH
cmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUuYnBsaXN0OyBwYXRoID0gRW1w
dHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU2NCw4IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKKwkJCQk1MUJFOUY5RTIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAorCQkJCTUxQkU5RjlDMjMxRjJGNEQwMEY5NkNFMiAvKiBRdWFydHou
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTY4LDYgKzI1ODAsNyBAQAogCQkJCTVD
RkFDRjYzMjI2RjczQzYwMDU2QzdEMCAvKiBsaWJib3Jpbmdzc2wuYSBpbiBGcmFtZXdvcmtzICov
LAogCQkJCTdDODNFMDNGMUQwQTYxQTAwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJNTc4Q0JENjcyMDRGQjJDODAwODNCOUYyIC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJNTFCRTlGOUIyMzFGMkU5
ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3QTAx
MEJDRDFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQk1NzRGNTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpAQCAtMjY2NSw2ICsyNjc4LDggQEAKIAkJCQk1Q0U3
NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJ
CTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8s
CiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
bW0gKi8sCisJCQkJNTFCRTlGQTAyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5o
ICovLAorCQkJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0g
Ki8sCiAJCQkJQTE0RkM1OEQxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5oICovLAog
CQkJCUExNEZDNThFMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gKi8sCiAJCQkJ
MkVGRjA2RDIxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcuaCAqLywKQEAgLTI4MjYs
NiArMjg0MSw3IEBACiAJCQkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5t
bSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNoaXZlLm1t
ICovLAogCQkJCTUxRDhDMThGMjI2N0IyNjcwMDc5N0U0MCAvKiBQREZMaW5rUmVmZXJyZXIubW0g
Ki8sCisJCQkJNTFCRTlGOTEyMzE5RThDMTAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tICovLAog
CQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUu
bW0gKi8sCiAJCQkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcy5tbSAqLywKIAkJCQlDOTU1MDFCRTE5QUQyRkFGMDA0OUJFM0UgLyogUHJlZmVyZW5j
ZXMubW0gKi8sCkBAIC0zMDkzLDYgKzMxMDksOCBAQAogCQkJCTQxMzVGQjg2MjAxMUZBQkYwMDMz
MjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJN0M4M0UwMjkxRDBB
NUNERjAwRkVCQ0YzIC8qIGxpYldURi5hICovLAogCQkJCTU3OENCRDY2MjA0RkIyQzcwMDgzQjlG
MiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUJFOUY5RDIzMUYz
NTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLywKKwkJCQk1MUJFOUY5QTIzMUYyRTk4
MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLywKIAkJCQk3QTAxMEJDQzFEODc3QzBEMDBF
REU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJNTc0RjU1RDAyMDRENDcxQzAw
Mjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLywKIAkJCSk7CkBAIC00NjI4LDYgKzQ2NDYs
NyBAQAogCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5QjIzNDY0MjFGOTQzRTI3MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNoaXZl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEOEMxOTAyMjY3QjI2RDAwNzk3RTQwIC8qIFBERkxp
bmtSZWZlcnJlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5RjkyMjMxOUU4RDQwMEY5NkNF
MiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQwQTY0M0Ew
MEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
RkNDNEZFNTFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRp
bGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00NzI1LDYgKzQ3NDQsNyBAQAogCQkJCUY0
RjVCQjUyMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlGNDVFMTU3NjIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNDVEMzg5MTIxNUE3QjRCMDAyQTI5NzkgLyogVGVzdEluc3Bl
Y3RvckJhci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5RkExMjMyMDIzOEEwMEY5NkNFMiAv
KiBUZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Nzc0QUE2ODIxRkJCRjc4
MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtNDk5MSw2ICs1MDExLDEwIEBACiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QkM5MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0g
KAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwog
CQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTQ5OTgsNiArNTAyMiwxMCBAQAogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29uZmlnICov
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRI
UyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikv
RnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJ
KTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTUwOTMsNiArNTEyMSwxMCBA
QAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJTGlicmFy
eS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1FV09S
S19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1f
TElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtNTEwMCw2
ICs1MTMyLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gN0NDRTdFQTMxQTQxMTVDQjAwNDQ3QzRDIC8qIFRlc3RXZWJL
aXRBUElMaWJyYXJ5LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNU
RU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
CSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNp
b25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERG
U25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNu
YXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2OTI4OGIxZWRkNDkwZjg5N2UyMTQ5MDMzMDg1YzNlNDlj
YmViNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC0wLDAgKzEsMjUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZXF1YWxVc2luZ1JHQkEoTlNDb2xvciAq
YSwgTlNDb2xvciAqYikKK3sKKyAgICByZXR1cm4gW1thIGNvbG9yVXNpbmdDb2xvclNwYWNlOltO
U0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXSBpc0VxdWFsOltiIGNvbG9yVXNpbmdDb2xvclNw
YWNlOltOU0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdXV07Cit9CisKK1RFU1QoUERGU25hcHNo
b3QsIEZ1bGxDb250ZW50KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICAvLyBNYWtlIHN1cmUg
dGhlIFBERiB0YWtlcyB0aGUgSFRNTCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBub3QgdGhlIHZpZXcn
cyBiYWNrZ3JvdW5kIGNvbG9yLgorICAgIFt3ZWJWaWV3IF9zZXRCYWNrZ3JvdW5kQ29sb3I6W05T
Q29sb3Igc3lzdGVtQmx1ZUNvbG9yXV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAg
W3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERG
RG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVD
VF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApKSk7CisKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1IGNoYXJh
Y3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBzcGFjZSBiZWZvcmUgdGhlICdIJywgYW5kIGEg
bmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJD
b3VudCgpLCA3dSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVsxXSwgJ0gnKTsK
KyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs1XSwgJ28nKTsKKworICAgICAgICAvLyBU
aGUgIkgiIGZyb20gSGVsbG8gaGFzIHRoZSByZWN0OiA4LjAwMDAwMCA1NzQuMDAwMDAwIDExLjU1
NTIwMCAxNi4wMDAwMDAKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckluZGV4QXRQ
b2ludChDR1BvaW50TWFrZSgxMywgNTgwKSksIDF1KTsKKworICAgICAgICAvLyBUaGUgZW50aXJl
IHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVj
ay4KKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEocGFnZS0+Y29sb3JBdFBvaW50
KDQwMCwgMzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsKKworICAgICAgICBkaWRUYWtlU25h
cHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3Qp
OworfQorCitURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25zKQoreworICAgIHN0YXRpYyBib29s
IGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2Nv
bG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICAvLyBTbmFwc2hvdCBhIHN1YnJlZ2lv
biBjb250YWluZWQgZW50aXJlbHkgd2l0aGluIHRoZSB2aWV3CisgICAgYXV0byBzbmFwc2hvdENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgyMDAs
IDE1MCwgNDAwLCAzMDApXTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90
V2lkdGg6QDQwMF07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3Vy
YXRpb246c25hcHNob3RDb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNE
YXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3Jl
YXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50
LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgw
KTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJV
RShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA0MDAs
IDMwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIGZ1bGwgcGFnZSAnc3BhY2UnIGNo
YXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMXUpOwor
ICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAzMik7CisKKyAgICAgICAgLy8gVGhl
IGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUg
dG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFsVXNpbmdSR0JBKHBhZ2UtPmNvbG9y
QXRQb2ludCgyMDAsIDE1MCksIFtOU0NvbG9yIGdyZWVuQ29sb3JdKSk7CisKKyAgICAgICAgW3Bk
ZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVzL0RhdGEvUmVhbExpYmVydHlIb21l
L3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKworICAgICAgICBkaWRUYWtlU25hcHNo
b3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOwor
ICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCisgICAgLy8gU25hcHNob3QgYSByZWdpb24g
bGFyZ2VyIHRoYW4gdGhlIHZpZXcKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFJlY3Q6
TlNNYWtlUmVjdCgwLCAwLCAxMjAwLCAxMjAwKV07CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlv
biBzZXRTbmFwc2hvdFdpZHRoOkAxMjAwXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBE
RkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBF
Q1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisgICAgICAgIGF1dG8gcGFnZSA9IGRv
Y3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RN
YWtlKDAsIDAsIDEyMDAsIDEyMDApKSk7CisKKyAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBp
biB0aGUgdmlldyBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRv
IGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdlLT5jb2xvckF0
UG9pbnQoMjAwLCAxNTApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworCisgICAgICAgIC8vIEEg
cGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBiZSBncmVlbiAod2Ug
ZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUg
dG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKGVxdWFsVXNpbmdSR0JBKHBhZ2UtPmNvbG9y
QXRQb2ludCg5MDAsIDcwMCksIFtOU0NvbG9yIGdyZWVuQ29sb3JdKSk7CisKKyAgICAgICAgW3Bk
ZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVzL0RhdGEvUmVhbExpYmVydHlIb21l
L3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKworICAgICAgICBkaWRUYWtlU25hcHNo
b3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOwor
ICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCit9CisKK1RFU1QoUERGU25hcHNob3QsIE92
ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAwKV0pOworCisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBQREYgdGFrZXMgdGhlIEhUTUwgYmFja2dyb3VuZCBjb2xvciBhbmQgbm90IHRoZSB2aWV3J3Mg
YmFja2dyb3VuZCBjb2xvci4KKyAgICBbd2ViVmlldyBfc2V0QmFja2dyb3VuZENvbG9yOltOU0Nv
bG9yIHN5c3RlbUJsdWVDb2xvcl1dOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3
ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhh
bmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRv
Y3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1Rf
RVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAzdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1h
a2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JH
QkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsK
KyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJl
J3MgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAnSCcsIGFuZCBhIG5l
d2xpbmUgYWZ0ZXIgdGhlICdvJworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291
bnQoKSwgN3UpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgxKTsKKyAgICAgICAg
RVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVh
bFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShlcXVhbFVzaW5nUkdCQShwYWdlLT5jb2xvckF0UG9pbnQoNDAw
LCAzMDApLCBbTlNDb2xvciBncmVlbkNvbG9yXSkpOworCisgICAgICAgIC8vIFRoZSBvbmx5IGNo
YXJhY3RlciBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0
ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAgIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgyKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAg
ICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JHQkEo
cGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29sb3IgZ3JlZW5Db2xvcl0pKTsKKyAg
ICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9uIHRoZSB0aGlyZCBwYWdlIGlzIGEgZnVsbCBw
YWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJD
b3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBMaW5rcykKK3sKKyAg
ICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPGRpdiBzdHlsZT1cIi13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzXCI+PGEgaHJl
Zj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT48L2Rpdj4iXTsKKworICAgIFt3
ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhh
bmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRv
Y3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1Rf
RVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1h
a2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXF1YWxVc2luZ1JH
QkEocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSwgW05TQ29sb3Igd2hpdGVDb2xvcl0pKTsK
KworICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUpOworICAgICAgICBFWFBFQ1RfVFJV
RShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0
aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbFRvOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6
Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNv
dW50KCksIDEwdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMV0sICdDJyk7CisK
KyAgICAgICAgYXV0byBjUmVjdCA9IHBhZ2UtPnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KDEpOwor
ICAgICAgICBhdXRvIGNNaWRwb2ludCA9IENHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoY1JlY3Qp
LCBDR1JlY3RHZXRNaWRZKGNSZWN0KSk7CisgICAgICAgIGF1dG8gYW5ub3RhdGlvbkJvdW5kcyA9
IGFubm90YXRpb25zWzBdLmJvdW5kcygpOworCisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdENv
bnRhaW5zUG9pbnQoYW5ub3RhdGlvbkJvdW5kcywgY01pZHBvaW50KSk7CisKKyAgICAgICAgZGlk
VGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNu
YXBzaG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgSW5saW5lTGlua3MpCit7CisgICAgc3Rh
dGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBo
cmVmPVwiaHR0cHM6Ly93ZWJraXQub3JnL1wiPkNsaWNrIG1lPC9hPiJdOworCisgICAgW3dlYlZp
ZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1l
bnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShk
b2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworCisgICAgICAg
IC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBsaW5rIGhlcmUsIGJ1dCBkdWUgdG8gdGhlIHdh
eSB3ZSBnYXRoZXIgbGlua3MgZm9yIGFubm90YXRpb24gdXNpbmcgdGhlIFJlbmRlcklubGluZSB0
cmVlCisgICAgICAgIC8vIGl0IGlzIG1pc3NlZC4KKworLy8gICAgICAgIGF1dG8gYW5ub3RhdGlv
bnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOworLy8gICAgICAgIEVYUEVDVF9FUShhbm5vdGF0aW9u
cy5zaXplKCksIDF1KTsKKy8vICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xp
bmsoKSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBp
c0VxdWFsVG86W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dKTsK
KworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6
cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RQREZEb2N1bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwMjNlNzk4ZGFmYWYwMjljMDE2ZjBi
MTcwNmFkZmExMjA1YjU3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RQREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgorI2ltcG9ydCA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0
b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291bnRlZC4gVGhleSByZW1h
aW4gdmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQREZQYWdlIHJlbWFpbnMg
dmFsaWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBUZXN0UERGQW5u
b3RhdGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xpbmsoKSBjb25zdDsKKyAg
ICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtVUkwoKSBjb25zdDsKKyAg
ICAKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+IG1fYW5ub3RhdGlvbjsK
K307CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERlBhZ2U+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBjcmVhdGUoUERGUGFnZSAq
KTsKKworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIGFubm90YXRpb25zKCk7
CisgICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHRleHQoKSBj
b25zdDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQpIGNvbnN0OworICAgIENH
UmVjdCBib3VuZHMoKSBjb25zdDsKKworICAgIE5TQ29sb3IgKmNvbG9yQXRQb2ludChpbnQgeCwg
aW50IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUZXN0UERGUGFnZShQREZQYWdlICop
OworICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7CisgICAgT3B0aW9uYWw8VmVjdG9yPFRl
c3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKK307CisKK2NsYXNzIFRlc3RQREZEb2N1
bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVGcm9tRGF0YShOU0RhdGEgKik7CisK
KyAgICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdDsKKyAgICBU
ZXN0UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitwcml2YXRlOgorICAgIFRlc3RQREZE
b2N1bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+IG1fcGFnZXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFBERkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODBiNDVhZDNkNGRiMWM3YjI4Y2MwOTViZWZm
MTM0NzEyMWQ2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50LmgiCisKKyNpbXBvcnQgPFdl
YkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lmIFBMQVRGT1JNKE1BQykKK0NHUmVj
dCB0b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNSZWN0VG9DR1JlY3QocmVjdCk7IH0K
K05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIE5TUG9pbnRG
cm9tQ0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3QgdG9DR1JlY3QoQ0dSZWN0IHJlY3Qp
IHsgcmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQp
IHsgcmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5ub3RhdGlvbnMKK1Rlc3RQREZBbm5v
dGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uKQorICAg
IDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisKK2Jvb2wgVGVzdFBERkFubm90YXRp
b246OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xpbmsgPSBbbV9hbm5vdGF0aW9uIGlz
S2luZE9mQ2xhc3M6W1BERkFubm90YXRpb25MaW5rIGNsYXNzXV07CisgICAgaWYgKGlzTGluaykK
KyAgICAgICAgQVNTRVJUKFttX2Fubm90YXRpb24uZ2V0KCkudHlwZSBpc0VxdWFsVG9TdHJpbmc6
QCJMaW5rIl0pOworICAgIHJldHVybiBpc0xpbms7Cit9CisKK0NHUmVjdCBUZXN0UERGQW5ub3Rh
dGlvbjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QobV9hbm5vdGF0aW9u
LmdldCgpLmJvdW5kcyk7Cit9CisKK05TVVJMICpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCgp
IGNvbnN0Cit7CisgICAgaWYgKCFpc0xpbmsoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gWyhQREZBbm5vdGF0aW9uTGluayAqKW1fYW5ub3RhdGlvbi5nZXQoKSBVUkxdOworfQor
CisvLyBQYWdlcworCitSZWY8VGVzdFBERlBhZ2U+IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFn
ZSAqcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7
Cit9CisKK1Rlc3RQREZQYWdlOjpUZXN0UERGUGFnZShQREZQYWdlICpwYWdlKQorICAgIDogbV9w
YWdlKHBhZ2UpCit7Cit9CisKK2NvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQ
REZQYWdlOjphbm5vdGF0aW9ucygpCit7CisgICAgaWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAg
ICAgIG1fYW5ub3RhdGlvbnMgPSBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+KCk7CisgICAgICAg
IGZvciAoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlv
bnMpCisgICAgICAgICAgICBtX2Fubm90YXRpb25zLT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOwor
ICAgIH0KKworICAgIHJldHVybiAqbV9hbm5vdGF0aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQ
YWdlOjpjaGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5u
dW1iZXJPZkNoYXJhY3RlcnM7Cit9CisKK1N0cmluZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5zdHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERG
UGFnZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAg
IHJldHVybiB0b0NHUmVjdChbbV9wYWdlIGNoYXJhY3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsK
K30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBw
b2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fcGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6
dG9QbGF0Zm9ybVBvaW50KHBvaW50KV07Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BE
RkRpc3BsYXlCb3hNZWRpYUJveF0pOworfQorCisKK05TQ29sb3IgKlRlc3RQREZQYWdlOjpjb2xv
ckF0UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJv
dW5kcygpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5k
c1JlY3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRv
IGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdl
V2l0aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1h
cENvbnRleHRHZXREYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICog
NCkgKyAoeCAqIDQpOworCisgICAgYXV0byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4
ZWxbaSArIDFdOworICAgIGF1dG8gYiA9IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhl
bFtpICsgM107CisKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiBuc0NvbG9yKFdlYkNvcmU6
OkNvbG9yKDAsIDAsIDAsIDApKTsKKyAgICByZXR1cm4gbnNDb2xvcihXZWJDb3JlOjpDb2xvcihy
ICogMjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhKSk7Cit9CisKKy8vIERvY3Vt
ZW50cworCitSZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21E
YXRhKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGRG9j
dW1lbnQoZGF0YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudChOU0Rh
dGEgKmRhdGEpCisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1bWVudCBhbGxvY10g
aW5pdFdpdGhEYXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50KCkpCit7Cit9CisK
K3NpemVfdCBUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFttX2RvY3VtZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBUZXN0UERGRG9jdW1l
bnQ6OnBhZ2Uoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBwYWdlQ291bnQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2luZGV4XSkKKyAgICAg
ICAgbV9wYWdlc1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2RvY3VtZW50IHBhZ2VB
dEluZGV4OmluZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378300</attachid>
            <date>2019-09-07 14:02:19 -0700</date>
            <delta_ts>2019-09-07 15:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190907140218.patch</filename>
            <type>text/plain</type>
            <size>61603</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjdlMGVkNzA1ZDBkN2FmZDEwNTBkMjBhNDdiYTMxNWVhMWFhZjY1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2Fs
bGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZy
YW1lSUQsIHJlY3QsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxEcmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2spOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUocGRmRGF0YSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkKIHsKICAgICBB
U1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgxMWZhNWYuLjZh
YmU4MjdkNDlkY2QwYWE0ZTRiYmU0MWJhMGRlMGNhODE2MzYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsMTEgKzM2MCwxMCBAQCBzdHJ1Y3QgRWxlbWVu
dERpZEZvY3VzQXJndW1lbnRzIHsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXM7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1
c2VyRGF0YTsKIH07Ci0KLXVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKK3VzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSY+OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV1RGOjpNYWNo
U2VuZFJpZ2h0Jj4gTWFjaFNlbmRSaWdodENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Ym9vbCwgYm9vbCwgU3RyaW5nLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3Q+IE5vd1BsYXlp
bmdJbmZvQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTExNzIsOSArMTE3MSwxMCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94
eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgUmVmPEltYWdlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2Vz
VG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CisgICAgdm9pZCBkcmF3VG9QREYo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+JiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CisgICAgdm9pZCBk
cmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktp
dDo6Q2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9u
JiYpOwotICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3Qg
UHJpbnRJbmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTNkMzQxNDJm
ODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uZjM4MzY2NjlkZWM1OTc3ODlmMDdjNmQy
MmJhY2YxOWQ3NWM5ZGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDkgKzE5Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQog
ICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVp
bnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIGJvb2wgZml0
RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRN
YXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHBk
ZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdGlvblJlY3Rz
Q2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyAgICBEcmF3VG9QREZDYWxs
YmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25S
ZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVz
dWx0KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IDNhZDhkZjQ4MDhlOGRhODBhMGNiMTMzZDMwMzZmNDFhMWJlYzYyY2QuLjg0Nzg4
ZThhNWFhZmRmMGViNDRhN2Y1ZmFhNmE0OGU4OWJkN2ZmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03MTgsNiArNzE4LDggQEAgLSAoTlNV
SW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlciAqKXByaW50Rm8KICAgICBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm87CiAgICAg
cHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKICAgICBwcmludEluZm8uc25hcHNo
b3RGaXJzdFBhZ2UgPSBwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0UGFnZTsKKworICAgIC8v
IEZJWE1FOiBQYWdpbmF0ZSB3aGVuIGV4cG9ydGluZyBQREZzIHRhbGxlciB0aGFuIDIwMCIKICAg
ICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IG1heGltdW1QREZIZWlnaHQgPSAyMDAgKiA3MjsgLy8gbWF4aW11bSBQREYgaGVp
Z2h0IGZvciBhIHNpbmdsZSBwYWdlIGlzIDIwMCBpbmNoZXMKICAgICAgICAgQ0dTaXplIGNvbnRl
bnRTaXplID0gc2VsZi5ib3VuZHMuc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2NjZGI4ZTlmMzAwZGMwYmVm
YzZjMTU4NDkyMDQuLmJhZjhkMzYyY2MxMDNmNGQ1YTlhYzE4NmQ5ZWQ3ZWVmYjFlM2IxZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAt
MTA4NiwxMyArMTA4Niw2IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgcmV0dXJuIHBh
Z2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewot
ICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihj
YWxsYmFja0lEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250
ZW50U2l6ZUNhdGVnb3J5KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXplQ2F0ZWdvcnkpLCBtX3dl
YlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODVhNDNiNTQ3OWMxNTllNDBkOGVmZmQ5MzJjYjI1
YjU0M2RiMjZlYS4uYmMxNGJlNGE5ZmEzYjk2ODU4MzI3YmYwMjc3ZTU0NWEyMjg2MDQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQpAQCAtMjMyLDcgKzIzMiw1OCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogICAgIGF1dG8qIGRvY3Vt
ZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRvY3VtZW50LT5pc1BsdWdp
bkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK1JldGFpblB0cjxDRkRhdGFSZWY+IFdl
YlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3
KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKKworICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8gbWVkaWFCb3ggPSBDR1Jl
Y3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoZGF0YUNvbnN1
bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKKworICAgIGludDY0X3QgcmVtYWluaW5n
SGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQ2NF90IG5leHRSZWN0WSA9IHJl
Y3QueSgpOworICAgIHdoaWxlIChyZW1haW5pbmdIZWlnaHQgPiAwKSB7CisgICAgICAgIC8vIFBE
RnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdodCBsaW1pdCBvZiAyMDAgaW5jaGVzIGF0IDcyZHBpLgor
ICAgICAgICAvLyBXZSdsbCBleHBvcnQgb25lIFBERiBwYWdlIGF0IGEgdGltZSwgdXAgdG8gdGhh
dCBtYXhpbXVtIGhlaWdodC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgbWF4UGFnZUhl
aWdodCA9IDcyICogMjAwOworICAgICAgICBiaXRtYXBTaXplLnNldEhlaWdodChzdGQ6Om1pbihy
ZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VIZWlnaHQpKTsKKyAgICAgICAgcmVjdC5zZXRIZWlnaHQo
Yml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlY3Quc2V0WShuZXh0UmVjdFkpOworCisg
ICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6ZS53aWR0
aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byBtZWRpYUJveERhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikmbWVkaWFCb3gsIHNpemVv
ZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IChDRkRpY3Rpb25hcnlSZWYp
QHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDR1BERkNvbnRleHRNZWRpYUJveCA6IChOU0Rh
dGEgKiltZWRpYUJveERhdGEuZ2V0KCkKKyAgICAgICAgfTsKKworICAgICAgICBDR1BERkNvbnRl
eHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgZGljdGlvbmFyeSk7CisKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQuZ2V0KCkgfTsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKKworICAgICAgICBDR1BERkNvbnRleHRFbmRQYWdl
KHBkZkNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIG5leHRSZWN0WSArPSBiaXRtYXBTaXplLmhl
aWdodCgpOworICAgICAgICByZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFnZUhlaWdodDsKKyAgICB9
CisKKyAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgIHJldHVy
biBkYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlZWEwZjQ2MWYyMTU5MjI0ZTIxYmUxNDhhNGM3ZDZiOTcyNjYxNzA0Li40ZjAzNTU2ZDA3
YTJkZWRhZTc0M2JiMDU4NTBhYmNmZWE4YTdkYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMwNiw3ICsyMzA2LDcgQEAgUmVmUHRyPFdl
YkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGRvdWJsZQogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXpl
LCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1lVmlldywgR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCit2b2lkIFdlYlBhZ2U6OnBhaW50U25hcHNob3RBdFNpemUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewogICAgIEludFJlY3Qgc25hcHNob3RSZWN0
ID0gcmVjdDsKICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYml0bWFwU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTIzODAsMzkgKzIz
ODAsNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0K
IAotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsK
LSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCkpOwotCi0jaWYgVVNFKENHKQotICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRDRihDR0Rh
dGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwotICAgIGF1dG8gbWVkaWFC
b3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWln
aHQoKSk7Ci0gICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUo
ZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKLQotICAgIENHUERGQ29u
dGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBudWxscHRyKTsKLQotICAgIEdyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0LmdldCgpIH07Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0
ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0
LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0Nv
bnRleHQpOwotCi0gICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKLSAg
ICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGRhdGE7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hv
dE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heGltdW1QaXhlbENvdW50KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCk7CkBAIC00NzQ4LDYgKzQ3MTUsMzQgQEAgdm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW4KICAgICAgICAgcmVzdWx0UGFnZVJlY3RzLmFwcGVuZChJbnRSZWN0KDAsIDAsIDEs
IDEpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7
CisgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CisgICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBz
aG90U2l6ZSA9IEludFNpemUocmVjdC0+c2l6ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHNuYXBz
aG90U2l6ZSA9IHsgZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpIH07CisKKyAgICBJbnRSZWN0IHNu
YXBzaG90UmVjdDsKKyAgICBpZiAocmVjdCkKKyAgICAgICAgc25hcHNob3RSZWN0ID0geyB7KGlu
dClyZWN0LT54KCksIChpbnQpcmVjdC0+eSgpfSwgc25hcHNob3RTaXplIH07CisgICAgZWxzZQor
ICAgICAgICBzbmFwc2hvdFJlY3QgPSB7IHswLCAwfSwgc25hcHNob3RTaXplIH07CisKKyAgICBh
dXRvIG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QgPSBmcmFtZVZpZXcubGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3QoKTsKKyAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRP
dmVycmlkZVJlY3QoTGF5b3V0UmVjdChzbmFwc2hvdFJlY3QpKTsKKyAgICBhdXRvIG9yaWdpbmFs
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy5wYWludEJlaGF2aW9yKCk7CisgICAgZnJhbWVWaWV3
LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvcjo6
QW5ub3RhdGVMaW5rcyk7CisKKyAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShz
bmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CisKKyAgICBmcmFtZVZpZXcuc2V0TGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7
CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsK
KworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChwZGZEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30KKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkZjFj
ODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3YWEyZDEyNTg2Li43ZjFiNzEzYmZhM2U4MWFlNzBh
OTZiZDkyYTQ4ZTM5ZmNiNDY2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC04ODEsNiArODgxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCisg
ICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ2FsbGJhY2tJRCk7CisKICNpZiBQTEFURk9STShHVEsp
CiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRmluaXNoUHJpbnRP
cGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENhbGxiYWNrSUQpOwpAQCAt
MTYwNSw4ICsxNjA3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNo
b3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFw
c2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywgdW5zaWduZWQgbWF4aW11
bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotI2lm
IFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwg
U25hcHNob3RPcHRpb25zKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0xNjIxLDYgKzE2MjMsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCk7
CiAKKyAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hvdE9wdGlvbnMsIFdlYkNvcmU6OkZyYW1l
JiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisKICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWI5ZTFlMDdlYjdkOGI3
MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uYWVlNzA2ZmE1MmM5ZTFjZDMwMDgzMTQ2ZjgwODY0
MTM0MGU1Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zODgsNiArMzg4LDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKICNlbmRpZgorICAgIERy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiByZWN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWU4ZTE0MWM2MDQxMDgzOWRiZmQxMTIxM2Iw
NmIzNjM0NWJhYjNmNi4uZTE0MmU1MTE1NjUxNGFhNTAwM2UyNmM4YWE1MjM3ZWU2OTYwNGZiNSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBX
S1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4u
IiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9y
IHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICogTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50
aXRsZW1lbnRzOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxl
ci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBmb3JjZVJlcGFpbnQ6XSk6
CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVBc1BERjpdKToKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2Vy
V2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAgICAgIAorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25m
aWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3Qu
bW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXF1YWxVc2luZ1JHQkEpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9D
R1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9QbGF0Zm9ybVBvaW50KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6aXNMaW5rIGNvbnN0
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpib3VuZHMgY29u
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OmxpbmtVUkwg
Y29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6VGVzdFBERlBhZ2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFubm90YXRpb25zKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCBjb25zdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4dCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXggY29uc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJhY3RlckluZGV4QXRQb2lu
dCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Ym91bmRzIGNv
bnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQg
Y29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpjcmVhdGVG
cm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OlRlc3RQ
REZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OnBh
Z2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6
OnBhZ2UpOgorCiAyMDE5LTA5LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldGFpbiBjZXJ0YWluIHBhcmFtZXRl
cnMgd2hlbiBmb2xsb3dpbmcgbWVudSBsaW5rcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dz
ZXIuZW50aXRsZW1lbnRzCmluZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2YzlhZTM4ZjI5OWEzMjVkY2I0
ZGFkYjkuLmU0YzJiYTE4MGYzOTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVhM2VjMmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKQEAgLTIsMjAgKzIsMjAgQEAK
IDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0
dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZl
cnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5hcHAtc2FuZGJv
eDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5kZXZpY2UudXNiPC9r
ZXk+CiAJPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZpbGVzLnVzZXItc2VsZWN0
ZWQucmVhZC1vbmx5PC9rZXk+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1z
ZWxlY3RlZC5yZWFkLXdyaXRlPC9rZXk+CisJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3Vy
aXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3Vy
aXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tl
eT4KKwk8c3RyaW5nPi88L3N0cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3Jh
cnktZXhjZXB0aW9uLm1hY2gtbG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+CiAJPGFycmF5PgogCQk8
c3RyaW5nPmNvbS5hcHBsZS5TYWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZpY2U8L3N0cmluZz4KIAkJ
PHN0cmluZz5jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248L3N0cmluZz4KIAk8L2Fy
cmF5PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+Ci0JPHRydWUv
PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+Ci0JPHRydWUv
PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJz
b2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KLQk8c3RyaW5nPi88L3N0cmluZz4KIDwvZGljdD4K
IDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oCmluZGV4IGM1YjlkNTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRlM2EwMjRhNWQ5NDYuLmRm
ZGI2NDAxM2YwMTZiZDBiZGE1MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCkBAIC00Niw2ICs0Niw4IEBA
IEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIg
ewogCiAtIChJQkFjdGlvbilvcGVuTG9jYXRpb246KGlkKXNlbmRlcjsKIAorLSAoSUJBY3Rpb24p
c2F2ZUFzUERGOihpZClzZW5kZXI7CisKIC0gKElCQWN0aW9uKWZldGNoOihpZClzZW5kZXI7CiAt
IChJQkFjdGlvbilzaGFyZTooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24pcmVsb2FkOihpZClzZW5k
ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5t
CmluZGV4IDRiOTkwNTdhMDNjZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUwNDQ4MmYuLjRkNDU3Mzk2
ZjA2NTRlMGY5ZWU4MzRmOTE0ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC05Myw2ICs5MywxMSBAQCAtIChJ
QkFjdGlvbilmb3JjZVJlcGFpbnQ6KGlkKXNlbmRlcgogICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25p
emVTZWxlY3RvcjpfY21kXTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2NtZF07Cit9CisKIC0gKElC
QWN0aW9uKWdvQmFjazooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNl
bGVjdG9yOl9jbWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51
LnhpYiBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKaW5kZXggNTQ2YTYwZjAz
MmU3MmU0MmI2YTZjMzZjNDk4ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1Mjk3YzM2MDBjNDhiN2Nm
MDRjNDMxMjhkZTZiZjI0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYgorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCkBAIC0xLDcg
KzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxkb2N1bWVu
dCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIz
LjAiIHRvb2xzVmVyc2lvbj0iMTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJv
cGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KKzxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50
ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTQ0
OTAuNzAiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9s
PSJub25lIj4KICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9
ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxMzc3MSIv
PgorICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVy
LkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxNDQ5MC43MCIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgog
ICAgIDxvYmplY3RzPgogICAgICAgICA8Y3VzdG9tT2JqZWN0IGlkPSItMiIgdXNlckxhYmVsPSJG
aWxlJ3MgT3duZXIiIGN1c3RvbUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4KQEAgLTEzMyw2ICsxMzMs
MTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0
b3I9InNhdmVEb2N1bWVudEFzOiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIvPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvbWVudUl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVt
IHRpdGxlPSJTYXZlIEFzIFBERuKApiIga2V5RXF1aXZhbGVudD0iUyIgaWQ9ImdtUy0zUS1vTHMi
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5
RXF1aXZhbGVudE1vZGlmaWVyTWFzayIgb3B0aW9uPSJZRVMiIGNvbW1hbmQ9IllFUyIvPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9yPSJzYXZlQXNQREY6IiB0YXJn
ZXQ9Ii0xIiBpZD0iMjVULUlkLTMzNCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Nvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRpdGxlPSJSZXZlcnQgdG8g
U2F2ZWQiIGlkPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZp
ZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIvPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDdlZDZjM2QyZjkwNjkzNzM3
NjU0NzMxYzczNGI4MTM4YjE1MmZlNjMuLjZkNjZiZmIwYTVmMzljOThkMjkyNzdhNmM2YWNlZDkz
ODBkZDJjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCkBAIC0xMzQsNiArMTM0LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJ
dGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0aW9uID0gW21lbnVJdGVt
IGFjdGlvbl07CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAg
ICAgICAgcmV0dXJuIE5POworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikp
CiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHpvb21PdXQ6KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2YzI4NTE5MjFkMzRkYzRh
MjJmNDNhMmU1Zi4uY2Y0ZDNhZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1M2QyZjcyMDNkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KQEAgLTIwNyw2ICsyMDcsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0
ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBtZW51SXRlbS5hY3Rpb247CiAKKyAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIFlF
UzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21JbjopKQogICAgICAgICByZXR1
cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tT3V0
OikpCkBAIC04MTQsNCArODE3LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoCiAgICAgZGVj
aXNpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5k
ZXIKK3sKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsK
KyAgICBwYW5lbC5hbGxvd2VkRmlsZVR5cGVzID0gQFsgQCJwZGYiIF07CisgICAgW3BhbmVsIGJl
Z2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
SW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01vZGFsUmVzcG9uc2VP
SykgeworICAgICAgICAgICAgW193ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9V
Ukw6W3BhbmVsIFVSTF0gb3B0aW9uczowIGVycm9yOm5pbF07CisgICAgICAgICAgICB9XTsKKyAg
ICAgICAgfQorICAgIH1dOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZp
ZwppbmRleCAyZGU2MWY3OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdhYTgwNDlkLi40NGUxYzVh
MmFlM2Q1Mzg4MGZiYzQxNGYwYTJmNjBiMWNiY2RjYTMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJh
cnkueGNjb25maWcKQEAgLTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRB
UEk7CiBTS0lQX0lOU1RBTEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlF
UzsKKworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNES1JPT1QpJChTWVNURU1f
TElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZ
X0RJUikvRnJhbWV3b3JrcyAkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29y
a3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzICQoaW5oZXJpdGVkKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRleCBlMmZiNjkwMjRiYjE0OWUwMTU4ODY1NjBm
ZTRiNDM4YzY1OWI1MTM5Li40ZDliNGQ3NDMyMGY1MGUyZjUxNDFhMzM3ZDI0MGU0MzMwOTdhZGUy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0zMyw4ICszMyw5
IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNT
IE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0NvbG9yOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7
CitPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ3NDNkMjcwZWYyZmI2NDEwMGYzZjdlNWM4
M2Y2OGI3ZmM4N2ZiOC4uMTJiNzNiYzNjMmNjZTYyZDdhZWJlNWY0ZTZlOTM4MWUxM2U0ZTg4NSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3NSw2ICsyNzUsMTEgQEAKIAkJNTFCMUVFOTcx
QzgwRkFFRjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBG
QUREMDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OwogCQk1MUJD
RUU0RTFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0
QzFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsK
IAkJNTFCQ0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwg
Ki87IH07CisJCTUxQkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjkxMjMxOUU4
QzEwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLzsgfTsKKwkJNTFCRTlGOUIyMzFGMkU5ODAw
Rjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZy
YW1ld29yayAqLzsgfTsKKwkJNTFCRTlGOUMyMzFGMkY0RDAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVhcnR6LmZyYW1ld29yayAqLzsgfTsKKwkJNTFC
RTlGOUUyMzFGMzUxRTAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5RDIzMUYzNTFFMDBGOTZD
RTIgLyogUERGS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0Uy
IC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQu
bW0gKi87IH07CiAJCTUxQzY4M0RFMUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLzsgfTsK
IAkJNTFDOEUxQTUxRjI2QUY0QzAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBNDFG
MjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLzsgfTsKIAkJNTFD
OEUxQTkxRjI3RjQ5NjAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0
YXRpc3RpY3MucGxpc3QgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFDOEUxQTgxRjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJl
ZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgKi87IH07CkBAIC0xNzY4LDYgKzE3NzMsMTEg
QEAKIAkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRp
UHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUy
QzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJN
dWx0aVByb2Nlc3MtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJF
OUY5MTIzMTlFOEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQREZTbmFwc2hvdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlG
OUEyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1YXJ0ei5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IFF1YXJ0ei5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ei5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk1MUJFOUY5RDIzMUYzNTFF
MDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0LmZy
YW1ld29yazsgcGF0aCA9IFBsYXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3Mv
TWFjT1NYMTAuMTQuc2RrL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUERGS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IERF
VkVMT1BFUl9ESVI7IH07CisJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9j
dW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0UERG
RG9jdW1lbnQubW07IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxQkU5RkEwMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9j
dW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRvY3VtZW50
Lmg7IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0x
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1l
SGFuZGxlci0xLm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOEUxQTQxRjI2
QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGUuYnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVk
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1NTQsNiArMjU2NCw4IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MUJF
OUY5RTIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAorCQkJCTUxQkU5RjlDMjMxRjJGNEQwMEY5NkNFMiAvKiBRdWFydHouZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNTY4LDYgKzI1ODAsNyBAQAogCQkJCTVDRkFDRjYzMjI2RjczQzYw
MDU2QzdEMCAvKiBsaWJib3Jpbmdzc2wuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdDODNFMDNG
MUQwQTYxQTAwMEZFQkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJ
CQkJNTc4Q0JENjcyMDRGQjJDODAwODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJNTFCRTlGOUIyMzFGMkU5ODAwRjk2Q0UyIC8qIFF1
YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3QTAxMEJDRDFEODc3QzBEMDBF
REU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzRG
NTVEMjIwNEQ0N0YwMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8sCiAJCQkpOwpAQCAtMjY2NSw2ICsyNjc4LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBD
MTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5
OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYx
RDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCisJCQkJNTFC
RTlGQTAyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5oICovLAorCQkJCTUxQkU5
RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi8sCiAJCQkJQTE0RkM1
OEQxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5oICovLAogCQkJCUExNEZDNThFMUI4
QUUzNjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gKi8sCiAJCQkJMkVGRjA2RDIxRDhBRURC
QjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcuaCAqLywKQEAgLTI4MjYsNiArMjg0MSw3IEBACiAJ
CQkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKIAkJCQk5QjIz
NDY0MTFGOTQzQTI0MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNoaXZlLm1tICovLAogCQkJCTUxRDhD
MThGMjI2N0IyNjcwMDc5N0U0MCAvKiBQREZMaW5rUmVmZXJyZXIubW0gKi8sCisJCQkJNTFCRTlG
OTEyMzE5RThDMTAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tICovLAogCQkJCTNGQ0M0RkU0MUVD
NEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNC
QUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywK
IAkJCQlDOTU1MDFCRTE5QUQyRkFGMDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCkBAIC0z
MDkzLDYgKzMxMDksOCBAQAogCQkJCTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJD
b3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJN0M4M0UwMjkxRDBBNUNERjAwRkVCQ0YzIC8q
IGxpYldURi5hICovLAogCQkJCTU3OENCRDY2MjA0RkIyQzcwMDgzQjlGMiAvKiBMb2NhbEF1dGhl
bnRpY2F0aW9uLmZyYW1ld29yayAqLywKKwkJCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyog
UERGS2l0LmZyYW1ld29yayAqLywKKwkJCQk1MUJFOUY5QTIzMUYyRTk4MDBGOTZDRTIgLyogUXVh
cnR6LmZyYW1ld29yayAqLywKIAkJCQk3QTAxMEJDQzFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6
Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3Vy
aXR5LmZyYW1ld29yayAqLywKIAkJCSk7CkBAIC00NjI4LDYgKzQ2NDYsNyBAQAogCQkJCTlCREQ5
NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
QjIzNDY0MjFGOTQzRTI3MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFEOEMxOTAyMjY3QjI2RDAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxQkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hv
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5k
aW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzRkNDNEZFNTFFQzRFODUy
MDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC00NzI1LDYgKzQ3NDQsNyBAQAogCQkJCUY0RjVCQjUyMjE2NjdCQUEw
MDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3
NjIxMTJDRTYyMDAzMDdFODIgLyogVGVzdElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDVEMzg5MTIxNUE3QjRCMDAyQTI5NzkgLyogVGVzdEluc3BlY3RvckJhci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTUxQkU5RkExMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1l
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Nzc0QUE2ODIxRkJCRjc4MDBBRjJBMUIgLyogVGVz
dFNPQXV0aG9yaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0Q0Q3NEM5MjBGREI0OTYw
MERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLApAQCAtNDk5MSw2ICs1MDExLDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1ODAxMjU1NENG
OTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhl
cml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUg
PSBEZWJ1ZzsKIAkJfTsKQEAgLTQ5OTgsNiArNTAyMiwxMCBAQAogCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1
NTRDRjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQo
aW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFy
dHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQlu
YW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTUwOTMsNiArNTEyMSwxMCBAQAogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDQ0U3
RUEzMUE0MTE1Q0IwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyAqLzsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0Zy
YW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7
CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtNTEwMCw2ICs1MTMyLDEwIEBACiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gN0NDRTdFQTMxQTQxMTVDQjAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJyYXJ5Lnhj
Y29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NF
QVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJS
QVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU1ZDJlZDdmNzliN2I5ODZmNTA4OGRjNzlhYzgzZTNkOTAyNDAxYTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBz
aG90Lm1tCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0ICJUZXN0UERGRG9jdW1lbnQuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CisKK3VzaW5nIFdlYkNvcmU6OkNvbG9yOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K1RFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQoreworICAgIHN0YXRpYyBib29sIGRpZFRh
a2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMw
MGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0
aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hv
dERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRm
U25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwg
MXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQ
RUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRv
UmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKworICAg
ICAgICAvLyBXZSBleHBlY3QgdGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBh
IHNwYWNlIGJlZm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5lIGFmdGVyIHRoZSAnbycKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDd1KTsKKworICAgICAgICBFWFBF
Q1RfRVEocGFnZS0+dGV4dCgpWzFdLCAnSCcpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4
dCgpWzVdLCAnbycpOworCisgICAgICAgIC8vIFRoZSAiSCIgZnJvbSBIZWxsbyBoYXMgdGhlIHJl
Y3Q6IDguMDAwMDAwIDU3NC4wMDAwMDAgMTEuNTU1MjAwIDE2LjAwMDAwMAorICAgICAgICBFWFBF
Q1RfRVEocGFnZS0+Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnRNYWtlKDEzLCA1ODApKSwg
MXUpOworCisgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sg
YSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdl
LT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1
LCAwKSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgU3Vi
cmVnaW9ucykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOwor
CisgICAgLy8gU25hcHNob3QgYSBzdWJyZWdpb24gY29udGFpbmVkIGVudGlyZWx5IHdpdGhpbiB0
aGUgdmlldworICAgIGF1dG8gc25hcHNob3RDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLU25h
cHNob3RDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3NuYXBzaG90Q29uZmlndXJh
dGlvbiBzZXRSZWN0Ok5TTWFrZVJlY3QoMjAwLCAxNTAsIDQwMCwgMzAwKV07CisgICAgW3NuYXBz
aG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkA0MDBdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9j
dW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7
CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAg
YXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBu
dWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91
bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgNDAwLCAzMDApKSk7CisKKyAgICAgICAgLy8gV2UgZXhw
ZWN0IHRoZSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQo
KVswXSwgMzIpOworCisgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4u
IFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJV
RShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQo
MCwgMjU1LCAwKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9W
b2x1bWVzL0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVT
XTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRp
bDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOwor
CisgICAgLy8gU25hcHNob3QgYSByZWdpb24gbGFyZ2VyIHRoYW4gdGhlIHZpZXcKKyAgICBbc25h
cHNob3RDb25maWd1cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxMjAwLCAxMjAwKV07
CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkAxMjAwXTsKKwor
ICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENv
bmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90
RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZT
bmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAx
dSk7CisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBF
Q1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9S
ZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEyMDApKSk7CisKKyAg
ICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQgYmUgZ3JlZW4uIFBp
Y2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShw
YWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwg
MjU1LCAwKSk7CisKKyAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBvdXRzaWRlIHRoZSB2aWV3
IHNob3VsZCBhbHNvIGJlIGdyZWVuICh3ZSBleHRlbmQgYmFja2dyb3VuZCBjb2xvciBvdXQpLiBQ
aWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUo
cGFnZS0+Y29sb3JBdFBvaW50KDkwMCwgNzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAs
IDI1NSwgMCkpOworCisgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb0ZpbGU6QCIvVm9s
dW1lcy9EYXRhL1JlYWxMaWJlcnR5SG9tZS9zdWJyZWdpb24ucGRmIiBhdG9taWNhbGx5OllFU107
CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6
OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKwor
fQorCitURVNUKFBERlNuYXBzaG90LCBPdmVyMjAwSW5jaGVzKQoreworICAgIHN0YXRpYyBib29s
IGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAyOTQwMCld
KTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJn
Y29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBk
ZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9t
RGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VD
b3VudCgpLCAzdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7Cisg
ICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dS
ZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9
PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBXZSBleHBl
Y3QgdGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIGZ1bGwgcGFnZSAnc3Bh
Y2UnIGNoYXJhY3RlciBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28n
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAg
ICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDEpOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVs
bHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5k
cygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgw
LCAyNTUsIDApKTsKKworICAgICAgICAvLyBUaGUgb25seSBjaGFyYWN0ZXIgb24gdGhlIHNlY29u
ZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9F
UShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50
ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CisgICAg
ICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29s
b3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hh
cmFjdGVyIG9uIHRoZSB0aGlyZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVy
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBkaWRUYWtlU25hcHNo
b3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOwor
fQorCitURVNUKFBERlNuYXBzaG90LCBMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtl
U25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJr
aXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9y
Zy9cIj5DbGljayBtZTwvYT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0
YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3Vu
dCgpLCAydSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAg
ICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMjU1LCAyNTUpKTsKKworICAgICAgICBhdXRvIGFu
bm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90
YXRpb25zLnNpemUoKSwgMXUpOworICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5p
c0xpbmsoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkg
aXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOwor
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxMXUpOworICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzFdLCAnQycpOworCisgICAgICAgIGF1dG8gY1JlY3Qg
PSBwYWdlLT5yZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCgxKTsKKyAgICAgICAgYXV0byBjTWlkcG9p
bnQgPSBDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGNSZWN0KSwgQ0dSZWN0R2V0TWlkWShjUmVj
dCkpOworICAgICAgICBhdXRvIGFubm90YXRpb25Cb3VuZHMgPSBhbm5vdGF0aW9uc1swXS5ib3Vu
ZHMoKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RDb250YWluc1BvaW50KGFubm90YXRp
b25Cb3VuZHMsIGNNaWRwb2ludCkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7
CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1Qo
UERGU25hcHNob3QsIElubGluZUxpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFw
c2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgaHJlZj1cImh0dHBzOi8vd2Via2l0
Lm9yZy9cIj5DbGljayBtZTwvYT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RX
aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBz
aG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShw
ZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgp
LCAxdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAg
IEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKworICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hv
dWxkIGJlIGEgbGluayBoZXJlLCBidXQgZHVlIHRvIHRoZSB3YXkgd2UgZ2F0aGVyIGxpbmtzIGZv
ciBhbm5vdGF0aW9uIHVzaW5nIHRoZSBSZW5kZXJJbmxpbmUgdHJlZQorICAgICAgICAvLyBpdCBp
cyBtaXNzZWQuCisKKy8vICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlv
bnMoKTsKKy8vICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisvLyAg
ICAgICAgRVhQRUNUX1RSVUUoYW5ub3RhdGlvbnNbMF0uaXNMaW5rKCkpOworLy8gICAgICAgIEVY
UEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRha2VTbmFw
c2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7
Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERG
RG9jdW1lbnQuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODIyMTIyMzc2Yzc3ODk4MzEyODcyYTgwZDliMTFhY2ZkZTE4ZDU4NAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50
LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0
IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYg
Y291bnRlZC4gVGhleSByZW1haW4gdmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRl
c3RQREZQYWdlIHJlbWFpbnMgdmFsaWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1Ymxp
YzoKKyAgICBUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBp
c0xpbmsoKSBjb25zdDsKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxp
bmtVUkwoKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRp
b24+IG1fYW5ub3RhdGlvbjsKK307CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNv
dW50ZWQ8VGVzdFBERlBhZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdl
PiBjcmVhdGUoUERGUGFnZSAqKTsKKworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlv
bj4mIGFubm90YXRpb25zKCk7CisgICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKKyAgICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9p
bnQpIGNvbnN0OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkNv
bG9yIGNvbG9yQXRQb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAg
ICBUZXN0UERGUGFnZShQREZQYWdlICopOworICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7
CisgICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsK
K307CisKK2NsYXNzIFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZE
b2N1bWVudD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVh
dGVGcm9tRGF0YShOU0RhdGEgKik7CisKKyAgICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBw
YWdlQ291bnQoKSBjb25zdDsKKyAgICBUZXN0UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOwor
Citwcml2YXRlOgorICAgIFRlc3RQREZEb2N1bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5Q
dHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFn
ZT4+IG1fcGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNTM3
YTU2Zjg2ODg4NmE3NWIxODJjN2NjZWJmYjc5OWQ3ZDFmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRv
Y3VtZW50LmgiCisKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
I2lmIFBMQVRGT1JNKE1BQykKK0NHUmVjdCB0b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4g
TlNSZWN0VG9DR1JlY3QocmVjdCk7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQg
cG9pbnQpIHsgcmV0dXJuIE5TUG9pbnRGcm9tQ0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1Jl
Y3QgdG9DR1JlY3QoQ0dSZWN0IHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0
Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8g
QW5ub3RhdGlvbnMKK1Rlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5v
dGF0aW9uICphbm5vdGF0aW9uKQorICAgIDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9
CisKK2Jvb2wgVGVzdFBERkFubm90YXRpb246OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBp
c0xpbmsgPSBbbV9hbm5vdGF0aW9uLmdldCgpLnR5cGUgaXNFcXVhbFRvU3RyaW5nOlBERkFubm90
YXRpb25TdWJ0eXBlTGlua107CisgICAgaWYgKGlzTGluaykKKyAgICAgICAgQVNTRVJUKFttX2Fu
bm90YXRpb24uZ2V0KCkuYWN0aW9uIGlzS2luZE9mQ2xhc3M6W1BERkFjdGlvblVSTCBjbGFzc11d
KTsKKyAgICByZXR1cm4gaXNMaW5rOworfQorCitDR1JlY3QgVGVzdFBERkFubm90YXRpb246OmJv
dW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KG1fYW5ub3RhdGlvbi5nZXQoKS5i
b3VuZHMpOworfQorCitOU1VSTCAqVGVzdFBERkFubm90YXRpb246OmxpbmtVUkwoKSBjb25zdAor
eworICAgIGlmICghaXNMaW5rKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICgo
UERGQWN0aW9uVVJMICopbV9hbm5vdGF0aW9uLmdldCgpLmFjdGlvbikuVVJMOworfQorCisvLyBQ
YWdlcworCitSZWY8VGVzdFBERlBhZ2U+IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFnZSAqcGFn
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7Cit9CisK
K1Rlc3RQREZQYWdlOjpUZXN0UERGUGFnZShQREZQYWdlICpwYWdlKQorICAgIDogbV9wYWdlKHBh
Z2UpCit7Cit9CisKK2NvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQYWdl
Ojphbm5vdGF0aW9ucygpCit7CisgICAgaWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAgICAgIG1f
YW5ub3RhdGlvbnMgPSBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+KCk7CisgICAgICAgIGZvciAo
UERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMpCisg
ICAgICAgICAgICBtX2Fubm90YXRpb25zLT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOworICAgIH0K
KworICAgIHJldHVybiAqbV9hbm5vdGF0aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpj
aGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5udW1iZXJP
ZkNoYXJhY3RlcnM7Cit9CisKK1N0cmluZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5zdHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6
cmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVy
biB0b0NHUmVjdChbbV9wYWdlIGNoYXJhY3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsKK30KKwor
c2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBwb2ludCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW21fcGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9QbGF0
Zm9ybVBvaW50KHBvaW50KV07Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3Bs
YXlCb3hNZWRpYUJveF0pOworfQorCisKK1dlYkNvcmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xv
ckF0UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJv
dW5kcygpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5k
c1JlY3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRv
IGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdl
V2l0aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1h
cENvbnRleHRHZXREYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICog
NCkgKyAoeCAqIDQpOworCisgICAgYXV0byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4
ZWxbaSArIDFdOworICAgIGF1dG8gYiA9IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhl
bFtpICsgM107CisKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsK
KyAgICByZXR1cm4geyByICogMjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhIH07
Cit9CisKKy8vIERvY3VtZW50cworCitSZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1l
bnQ6OmNyZWF0ZUZyb21EYXRhKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUZXN0UERGRG9jdW1lbnQoZGF0YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQ
REZEb2N1bWVudChOU0RhdGEgKmRhdGEpCisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZE
b2N1bWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNv
dW50KCkpCit7Cit9CisKK3NpemVfdCBUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdl
KiBUZXN0UERGRG9jdW1lbnQ6OnBhZ2Uoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+
PSBwYWdlQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2Vz
W2luZGV4XSkKKyAgICAgICAgbV9wYWdlc1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFtt
X2RvY3VtZW50IHBhZ2VBdEluZGV4OmluZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhd
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378301</attachid>
            <date>2019-09-07 15:50:53 -0700</date>
            <delta_ts>2019-09-07 16:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190907155052.patch</filename>
            <type>text/plain</type>
            <size>65584</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjdlMGVkNzA1ZDBkN2FmZDEwNTBkMjBhNDdiYTMxNWVhMWFhZjY1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2Fs
bGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZy
YW1lSUQsIHJlY3QsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxEcmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2spOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUocGRmRGF0YSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkKIHsKICAgICBB
U1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgxMWZhNWYuLjZh
YmU4MjdkNDlkY2QwYWE0ZTRiYmU0MWJhMGRlMGNhODE2MzYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsMTEgKzM2MCwxMCBAQCBzdHJ1Y3QgRWxlbWVu
dERpZEZvY3VzQXJndW1lbnRzIHsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXM7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1
c2VyRGF0YTsKIH07Ci0KLXVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKK3VzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSY+OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV1RGOjpNYWNo
U2VuZFJpZ2h0Jj4gTWFjaFNlbmRSaWdodENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Ym9vbCwgYm9vbCwgU3RyaW5nLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3Q+IE5vd1BsYXlp
bmdJbmZvQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTExNzIsOSArMTE3MSwxMCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94
eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgUmVmPEltYWdlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2Vz
VG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CisgICAgdm9pZCBkcmF3VG9QREYo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+JiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CisgICAgdm9pZCBk
cmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktp
dDo6Q2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9u
JiYpOwotICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3Qg
UHJpbnRJbmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTNkMzQxNDJm
ODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uZjM4MzY2NjlkZWM1OTc3ODlmMDdjNmQy
MmJhY2YxOWQ3NWM5ZGUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDkgKzE5Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQog
ICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVp
bnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIGJvb2wgZml0
RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRN
YXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHBk
ZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdGlvblJlY3Rz
Q2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKKyAgICBEcmF3VG9QREZDYWxs
YmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25S
ZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVz
dWx0KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IDNhZDhkZjQ4MDhlOGRhODBhMGNiMTMzZDMwMzZmNDFhMWJlYzYyY2QuLjg0Nzg4
ZThhNWFhZmRmMGViNDRhN2Y1ZmFhNmE0OGU4OWJkN2ZmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC03MTgsNiArNzE4LDggQEAgLSAoTlNV
SW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZv
cm1hdHRlciAqKXByaW50Rm8KICAgICBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm87CiAgICAg
cHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKICAgICBwcmludEluZm8uc25hcHNo
b3RGaXJzdFBhZ2UgPSBwcmludEZvcm1hdHRlci5zbmFwc2hvdEZpcnN0UGFnZTsKKworICAgIC8v
IEZJWE1FOiBQYWdpbmF0ZSB3aGVuIGV4cG9ydGluZyBQREZzIHRhbGxlciB0aGFuIDIwMCIKICAg
ICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IG1heGltdW1QREZIZWlnaHQgPSAyMDAgKiA3MjsgLy8gbWF4aW11bSBQREYgaGVp
Z2h0IGZvciBhIHNpbmdsZSBwYWdlIGlzIDIwMCBpbmNoZXMKICAgICAgICAgQ0dTaXplIGNvbnRl
bnRTaXplID0gc2VsZi5ib3VuZHMuc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBkOGQ4ZmRiZjFhM2NjZGI4ZTlmMzAwZGMwYmVm
YzZjMTU4NDkyMDQuLmJhZjhkMzYyY2MxMDNmNGQ1YTlhYzE4NmQ5ZWQ3ZWVmYjFlM2IxZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAt
MTA4NiwxMyArMTA4Niw2IEBAIHVpbnQzMl90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lCiAgICAgcmV0dXJuIHBh
Z2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewot
ICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihj
YWxsYmFja0lEKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7Ci0gICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBjb250
ZW50U2l6ZUNhdGVnb3J5KQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnRlbnRTaXplQ2F0ZWdvcnkpLCBtX3dl
YlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODVhNDNiNTQ3OWMxNTllNDBkOGVmZmQ5MzJjYjI1
YjU0M2RiMjZlYS4uYmMxNGJlNGE5ZmEzYjk2ODU4MzI3YmYwMjc3ZTU0NWEyMjg2MDQzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQpAQCAtMjMyLDcgKzIzMiw1OCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZU1vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKQogICAgIGF1dG8qIGRvY3Vt
ZW50ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgW21fbW9ja0FjY2Vzc2liaWxpdHlF
bGVtZW50IHNldEhhc01haW5GcmFtZVBsdWdpbjpkb2N1bWVudCA/IGRvY3VtZW50LT5pc1BsdWdp
bkRvY3VtZW50KCkgOiBmYWxzZV07CiB9Ci0gICAgCisKK1JldGFpblB0cjxDRkRhdGFSZWY+IFdl
YlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3
KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKKworICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1l
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8gbWVkaWFCb3ggPSBDR1Jl
Y3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUoZGF0YUNvbnN1
bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKKworICAgIGludDY0X3QgcmVtYWluaW5n
SGVpZ2h0ID0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQ2NF90IG5leHRSZWN0WSA9IHJl
Y3QueSgpOworICAgIHdoaWxlIChyZW1haW5pbmdIZWlnaHQgPiAwKSB7CisgICAgICAgIC8vIFBE
RnMgaGF2ZSBhIHBlci1wYWdlIGhlaWdodCBsaW1pdCBvZiAyMDAgaW5jaGVzIGF0IDcyZHBpLgor
ICAgICAgICAvLyBXZSdsbCBleHBvcnQgb25lIFBERiBwYWdlIGF0IGEgdGltZSwgdXAgdG8gdGhh
dCBtYXhpbXVtIGhlaWdodC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgbWF4UGFnZUhl
aWdodCA9IDcyICogMjAwOworICAgICAgICBiaXRtYXBTaXplLnNldEhlaWdodChzdGQ6Om1pbihy
ZW1haW5pbmdIZWlnaHQsIG1heFBhZ2VIZWlnaHQpKTsKKyAgICAgICAgcmVjdC5zZXRIZWlnaHQo
Yml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJlY3Quc2V0WShuZXh0UmVjdFkpOworCisg
ICAgICAgIENHUmVjdCBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6ZS53aWR0
aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byBtZWRpYUJveERhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShOVUxMLCAoY29uc3QgVUludDggKikmbWVkaWFCb3gsIHNpemVv
ZihDR1JlY3QpKSk7CisgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IChDRkRpY3Rpb25hcnlSZWYp
QHsKKyAgICAgICAgICAgIChOU1N0cmluZyAqKWtDR1BERkNvbnRleHRNZWRpYUJveCA6IChOU0Rh
dGEgKiltZWRpYUJveERhdGEuZ2V0KCkKKyAgICAgICAgfTsKKworICAgICAgICBDR1BERkNvbnRl
eHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgZGljdGlvbmFyeSk7CisKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQuZ2V0KCkgfTsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOworCisgICAgICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKKworICAgICAgICBDR1BERkNvbnRleHRFbmRQYWdl
KHBkZkNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIG5leHRSZWN0WSArPSBiaXRtYXBTaXplLmhl
aWdodCgpOworICAgICAgICByZW1haW5pbmdIZWlnaHQgLT0gbWF4UGFnZUhlaWdodDsKKyAgICB9
CisKKyAgICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgIHJldHVy
biBkYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBlZWEwZjQ2MWYyMTU5MjI0ZTIxYmUxNDhhNGM3ZDZiOTcyNjYxNzA0Li40ZjAzNTU2ZDA3
YTJkZWRhZTc0M2JiMDU4NTBhYmNmZWE4YTdkYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMwNiw3ICsyMzA2LDcgQEAgUmVmUHRyPFdl
YkltYWdlPiBXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGRvdWJsZQogICAgIHJldHVybiBzbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXpl
LCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMg
b3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1lVmlldywgR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCit2b2lkIFdlYlBhZ2U6OnBhaW50U25hcHNob3RBdFNpemUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RP
cHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewogICAgIEludFJlY3Qgc25hcHNob3RSZWN0
ID0gcmVjdDsKICAgICBmbG9hdCBob3Jpem9udGFsU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYml0bWFwU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTIzODAsMzkgKzIz
ODAsNiBAQCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0K
IAotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFdlYlBhZ2U6OnBkZlNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsK
LSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCkpOwotCi0jaWYgVVNFKENHKQotICAgIGF1dG8gZGF0YUNvbnN1bWVyID0gYWRvcHRDRihDR0Rh
dGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwotICAgIGF1dG8gbWVkaWFC
b3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWln
aHQoKSk7Ci0gICAgYXV0byBwZGZDb250ZXh0ID0gYWRvcHRDRihDR1BERkNvbnRleHRDcmVhdGUo
ZGF0YUNvbnN1bWVyLmdldCgpLCAmbWVkaWFCb3gsIG51bGxwdHIpKTsKLQotICAgIENHUERGQ29u
dGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBudWxscHRyKTsKLQotICAgIEdyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0LmdldCgpIH07Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0
ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7Ci0gICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0
LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29yZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0Nv
bnRleHQpOwotCi0gICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKLSAg
ICBDR1BERkNvbnRleHRDbG9zZShwZGZDb250ZXh0LmdldCgpKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGRhdGE7Ci19Ci0jZW5kaWYKLQogUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hv
dE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heGltdW1QaXhlbENvdW50KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCk7CkBAIC00NzQ4LDYgKzQ3MTUsMzQgQEAgdm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW4KICAgICAgICAgcmVzdWx0UGFnZVJlY3RzLmFwcGVuZChJbnRSZWN0KDAsIDAsIDEs
IDEpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IE9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3sKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7
CisgICAgSW50U2l6ZSBzbmFwc2hvdFNpemU7CisgICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBz
aG90U2l6ZSA9IEludFNpemUocmVjdC0+c2l6ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHNuYXBz
aG90U2l6ZSA9IHsgZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpIH07CisKKyAgICBJbnRSZWN0IHNu
YXBzaG90UmVjdDsKKyAgICBpZiAocmVjdCkKKyAgICAgICAgc25hcHNob3RSZWN0ID0geyB7KGlu
dClyZWN0LT54KCksIChpbnQpcmVjdC0+eSgpfSwgc25hcHNob3RTaXplIH07CisgICAgZWxzZQor
ICAgICAgICBzbmFwc2hvdFJlY3QgPSB7IHswLCAwfSwgc25hcHNob3RTaXplIH07CisKKyAgICBh
dXRvIG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QgPSBmcmFtZVZpZXcubGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3QoKTsKKyAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRP
dmVycmlkZVJlY3QoTGF5b3V0UmVjdChzbmFwc2hvdFJlY3QpKTsKKyAgICBhdXRvIG9yaWdpbmFs
UGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy5wYWludEJlaGF2aW9yKCk7CisgICAgZnJhbWVWaWV3
LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvcjo6
QW5ub3RhdGVMaW5rcyk7CisKKyAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShz
bmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CisKKyAgICBmcmFtZVZpZXcuc2V0TGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7
CisgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsK
KworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RHJhd1RvUERGQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChwZGZEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30KKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkZjFj
ODI1OWM4ZGRmYmRhMTFhYTA1OGVkNWNhZTE3YWEyZDEyNTg2Li43ZjFiNzEzYmZhM2U4MWFlNzBh
OTZiZDkyYTQ4ZTM5ZmNiNDY2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC04ODEsNiArODgxLDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseSYmKTsKICNlbmRpZgogCisg
ICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ2FsbGJhY2tJRCk7CisKICNpZiBQTEFURk9STShHVEsp
CiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRmluaXNoUHJpbnRP
cGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENhbGxiYWNrSUQpOwpAQCAt
MTYwNSw4ICsxNjA3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNo
b3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFw
c2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYsIFNuYXBzaG90T3B0aW9ucywgdW5zaWduZWQgbWF4aW11
bVBpeGVsQ291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotI2lm
IFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwg
U25hcHNob3RPcHRpb25zKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBwZGZTbmFwc2hvdEF0U2l6ZShXZWJDb3JlOjpJbnRSZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0xNjIxLDYgKzE2MjMsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCk7
CiAKKyAgICB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTbmFwc2hvdE9wdGlvbnMsIFdlYkNvcmU6OkZyYW1l
JiwgV2ViQ29yZTo6RnJhbWVWaWV3JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisKICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWI5ZTFlMDdlYjdkOGI3
MGIyNTVhZTJiNzJiNjY5NTA0ODljYWUzNy4uYWVlNzA2ZmE1MmM5ZTFjZDMwMDgzMTQ2ZjgwODY0
MTM0MGU1Yjk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zODgsNiArMzg4LDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKICNlbmRpZgorICAgIERy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiByZWN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWU4ZTE0MWM2MDQxMDgzOWRiZmQxMTIxM2Iw
NmIzNjM0NWJhYjNmNi4uZTE0MmU1MTE1NjUxNGFhNTAwM2UyNmM4YWE1MjM3ZWU2OTYwNGZiNSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUzIEBACisyMDE5LTA5LTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBX
S1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4u
IiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9y
IHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICogTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50
aXRsZW1lbnRzOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxl
ci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBmb3JjZVJlcGFpbnQ6XSk6
CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVBc1BERjpdKToKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2Vy
V2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAgICAgIAorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25m
aWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3Qu
bW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZXF1YWxVc2luZ1JHQkEpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9D
R1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dG9QbGF0Zm9ybVBvaW50KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6aXNMaW5rIGNvbnN0
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpib3VuZHMgY29u
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OmxpbmtVUkwg
Y29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6VGVzdFBERlBhZ2UpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFubm90YXRpb25zKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCBjb25zdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4dCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXggY29uc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJhY3RlckluZGV4QXRQb2lu
dCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Ym91bmRzIGNv
bnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQg
Y29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpjcmVhdGVG
cm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OlRlc3RQ
REZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OnBh
Z2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6
OnBhZ2UpOgorCiAyMDE5LTA5LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldGFpbiBjZXJ0YWluIHBhcmFtZXRl
cnMgd2hlbiBmb2xsb3dpbmcgbWVudSBsaW5rcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dz
ZXIuZW50aXRsZW1lbnRzCmluZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2YzlhZTM4ZjI5OWEzMjVkY2I0
ZGFkYjkuLmU0YzJiYTE4MGYzOTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVhM2VjMmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cworKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKQEAgLTIsMjAgKzIsMjAgQEAK
IDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0
dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZl
cnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5hcHAtc2FuZGJv
eDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5kZXZpY2UudXNiPC9r
ZXk+CiAJPHRydWUvPgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZpbGVzLnVzZXItc2VsZWN0
ZWQucmVhZC1vbmx5PC9rZXk+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1z
ZWxlY3RlZC5yZWFkLXdyaXRlPC9rZXk+CisJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3Vy
aXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3Vy
aXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tl
eT4KKwk8c3RyaW5nPi88L3N0cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3Jh
cnktZXhjZXB0aW9uLm1hY2gtbG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+CiAJPGFycmF5PgogCQk8
c3RyaW5nPmNvbS5hcHBsZS5TYWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZpY2U8L3N0cmluZz4KIAkJ
PHN0cmluZz5jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248L3N0cmluZz4KIAk8L2Fy
cmF5PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+Ci0JPHRydWUv
PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+Ci0JPHRydWUv
PgotCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJz
b2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KLQk8c3RyaW5nPi88L3N0cmluZz4KIDwvZGljdD4K
IDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oCmluZGV4IGM1YjlkNTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRlM2EwMjRhNWQ5NDYuLmRm
ZGI2NDAxM2YwMTZiZDBiZGE1MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCkBAIC00Niw2ICs0Niw4IEBA
IEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIg
ewogCiAtIChJQkFjdGlvbilvcGVuTG9jYXRpb246KGlkKXNlbmRlcjsKIAorLSAoSUJBY3Rpb24p
c2F2ZUFzUERGOihpZClzZW5kZXI7CisKIC0gKElCQWN0aW9uKWZldGNoOihpZClzZW5kZXI7CiAt
IChJQkFjdGlvbilzaGFyZTooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24pcmVsb2FkOihpZClzZW5k
ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5t
CmluZGV4IDRiOTkwNTdhMDNjZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUwNDQ4MmYuLjRkNDU3Mzk2
ZjA2NTRlMGY5ZWU4MzRmOTE0ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC05Myw2ICs5MywxMSBAQCAtIChJ
QkFjdGlvbilmb3JjZVJlcGFpbnQ6KGlkKXNlbmRlcgogICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25p
emVTZWxlY3RvcjpfY21kXTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6X2NtZF07Cit9CisKIC0gKElC
QWN0aW9uKWdvQmFjazooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNl
bGVjdG9yOl9jbWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51
LnhpYiBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKaW5kZXggNTQ2YTYwZjAz
MmU3MmU0MmI2YTZjMzZjNDk4ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1Mjk3YzM2MDBjNDhiN2Nm
MDRjNDMxMjhkZTZiZjI0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYgorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCkBAIC0xLDcg
KzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxkb2N1bWVu
dCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIz
LjAiIHRvb2xzVmVyc2lvbj0iMTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJv
cGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KKzxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50
ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTQ0
OTAuNzAiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9s
PSJub25lIj4KICAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9
ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxMzc3MSIv
PgorICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVy
LkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxNDQ5MC43MCIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgog
ICAgIDxvYmplY3RzPgogICAgICAgICA8Y3VzdG9tT2JqZWN0IGlkPSItMiIgdXNlckxhYmVsPSJG
aWxlJ3MgT3duZXIiIGN1c3RvbUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4KQEAgLTEzMyw2ICsxMzMs
MTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0
b3I9InNhdmVEb2N1bWVudEFzOiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIvPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvbWVudUl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVt
IHRpdGxlPSJTYXZlIEFzIFBERuKApiIga2V5RXF1aXZhbGVudD0iUyIgaWQ9ImdtUy0zUS1vTHMi
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5
RXF1aXZhbGVudE1vZGlmaWVyTWFzayIgb3B0aW9uPSJZRVMiIGNvbW1hbmQ9IllFUyIvPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9yPSJzYXZlQXNQREY6IiB0YXJn
ZXQ9Ii0xIiBpZD0iMjVULUlkLTMzNCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Nvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRpdGxlPSJSZXZlcnQgdG8g
U2F2ZWQiIGlkPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZp
ZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVyTWFzayIvPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDdlZDZjM2QyZjkwNjkzNzM3
NjU0NzMxYzczNGI4MTM4YjE1MmZlNjMuLjZkNjZiZmIwYTVmMzljOThkMjkyNzdhNmM2YWNlZDkz
ODBkZDJjYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCkBAIC0xMzQsNiArMTM0LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJ
dGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0aW9uID0gW21lbnVJdGVt
IGFjdGlvbl07CiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAg
ICAgICAgcmV0dXJuIE5POworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikp
CiAgICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHpvb21PdXQ6KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2YzI4NTE5MjFkMzRkYzRh
MjJmNDNhMmU1Zi4uY2Y0ZDNhZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1M2QyZjcyMDNkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KQEAgLTIwNyw2ICsyMDcsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0
ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBtZW51SXRlbS5hY3Rpb247CiAKKyAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIFlF
UzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21JbjopKQogICAgICAgICByZXR1
cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tT3V0
OikpCkBAIC04MTQsNCArODE3LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgaW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoCiAgICAgZGVj
aXNpb25IYW5kbGVyKGZhbHNlKTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5k
ZXIKK3sKKyAgICBOU1NhdmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsK
KyAgICBwYW5lbC5hbGxvd2VkRmlsZVR5cGVzID0gQFsgQCJwZGYiIF07CisgICAgW3BhbmVsIGJl
Z2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
SW50ZWdlciByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01vZGFsUmVzcG9uc2VP
SykgeworICAgICAgICAgICAgW193ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9V
Ukw6W3BhbmVsIFVSTF0gb3B0aW9uczowIGVycm9yOm5pbF07CisgICAgICAgICAgICB9XTsKKyAg
ICAgICAgfQorICAgIH1dOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZp
ZwppbmRleCAyZGU2MWY3OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdhYTgwNDlkLi40NGUxYzVh
MmFlM2Q1Mzg4MGZiYzQxNGYwYTJmNjBiMWNiY2RjYTMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJh
cnkueGNjb25maWcKQEAgLTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRB
UEk7CiBTS0lQX0lOU1RBTEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlF
UzsKKworU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNES1JPT1QpJChTWVNURU1f
TElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZ
X0RJUikvRnJhbWV3b3JrcyAkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29y
a3MvUXVhcnR6LmZyYW1ld29yay9GcmFtZXdvcmtzICQoaW5oZXJpdGVkKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRleCBlMmZiNjkwMjRiYjE0OWUwMTU4ODY1NjBm
ZTRiNDM4YzY1OWI1MTM5Li40ZDliNGQ3NDMyMGY1MGUyZjUxNDFhMzM3ZDI0MGU0MzMwOTdhZGUy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0zMyw4ICszMyw5
IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNT
IE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU0NvbG9yOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7
CitPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ3NDNkMjcwZWYyZmI2NDEwMGYzZjdlNWM4
M2Y2OGI3ZmM4N2ZiOC4uZjBlZWRjZGUzOWJjOTc3MmE3NjQyNDhmNmYzODMzZmFhY2M5MWRhNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5LDE5ICsyOSw2IEBACiAJCQluYW1lID0gIkdl
bmVyYXRlIFVuaWZpZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9IEFsbDsKIAkJfTsKLQkJ
N0M4M0UwMkIxRDBBNUUxMDAwRkVCQ0YzIC8qIEFsbCAqLyA9IHsKLQkJCWlzYSA9IFBCWEFnZ3Jl
Z2F0ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzgzRTAyQzFEMEE1RTEw
MDBGRUJDRjMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJn
ZXQgIkFsbCIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk1MzdDRjg0ODIyRUZENzIwMDBD
NkVCQjMgLyogQ2hlY2sgLnhjZmlsZWxpc3RzICovLAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9
ICgKLQkJCQk3QzgzRTAzMDFEMEE1RTFCMDBGRUJDRjMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKLQkJCQk3QzgzRTAzMjFEMEE1RTFEMDBGRUJDRjMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKLQkJCSk7Ci0JCQluYW1lID0gQWxsOwotCQkJcHJvZHVjdE5hbWUgPSBBbGw7Ci0JCX07CiAv
KiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KQEAgLTI3NSw2ICsyNjIsOSBAQAogCQk1MUIxRUU5NzFDODBGQUVGMDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjFFRTk1MUM4MEZBREQwMDY0RkI5
OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgKi87IH07CiAJCTUxQkNFRTRFMUM4NEY1
M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTRDMUM4NEY1MkMw
MDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovOyB9OwogCQk1MUJDRUU0
RjFDODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0RDFD
ODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLzsgfTsKKwkJ
NTFCRTlGOTIyMzE5RThENDAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlGOTEyMzE5RThDMTAwRjk2Q0Uy
IC8qIFBERlNuYXBzaG90Lm1tICovOyB9OworCQk1MUJFOUZBMTIzMjAyMzhBMDBGOTZDRTIgLyog
VGVzdFBERkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCRTlGOUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAq
LzsgfTsKKwkJNTFCRTlGQTcyMzI0NjJFNjAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUZBNTIz
MjQ2MkEzMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJNTFDNjgzREUxRUEx
MzRFODAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8q
IFdLVVJMU2NoZW1lSGFuZGxlci0xLm1tICovOyB9OwogCQk1MUM4RTFBNTFGMjZBRjRDMDBCRjcz
MUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE0MUYyNkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLm1tICovOyB9OwogCQk1MUM4RTFBOTFGMjdGNDk2MDBCRjczMUIgLyog
RW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBODFGMjdG
NDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5w
bGlzdCAqLzsgfTsKQEAgLTEwNTMsMjAgKzEwNDMsNiBAQAogCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSA3QzgzREU5NTFEMEE1OTBDMDBGRUJDRjM7CiAJCQlyZW1vdGVJbmZvID0gVGVzdFdURkxp
YnJhcnk7CiAJCX07Ci0JCTdDODNFMDJGMUQwQTVFMUIwMEZFQkNGMyAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250
YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4REQ3NkY5
NjA0ODZBQTc2MDBEOTZCNUU7Ci0JCQlyZW1vdGVJbmZvID0gVGVzdFdlYktpdEFQSTsKLQkJfTsK
LQkJN0M4M0UwMzExRDBBNUUxRDAwRkVCQ0YzIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9
IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9
IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5
VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDdDODNERjk1MUQwQTVBRTQwMEZF
QkNGMzsKLQkJCXJlbW90ZUluZm8gPSBUZXN0V1RGOwotCQl9OwogCQk3Q0NFN0Y1MDFBNDEyNERC
MDA0NDdDNEMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMTc2OCw2ICsxNzQ0LDExIEBACiAJCTUx
QkNFRTQ5MUM4NEY0QUYwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJNdWx0aVByb2Nlc3Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTRDMUM4NEY1MkMwMDQyQzgy
RSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUJDRUU0RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVBy
b2Nlc3MtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGOTEyMzE5
RThDMTAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERG
U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkU5RjlEMjMxRjM1
MUUwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQREZLaXQu
ZnJhbWV3b3JrOyBwYXRoID0gUGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RL
cy9NYWNPU1gxMC4xNC5zZGsvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3
b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9QREZLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
REVWRUxPUEVSX0RJUjsgfTsKKwkJNTFCRTlGOUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZE
b2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RQ
REZEb2N1bWVudC5tbTsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGQTAyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZE
b2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0UERGRG9jdW1l
bnQuaDsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUJFOUZBNTIzMjQ2MkEzMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0LmZyYW1ld29yazsgcGF0aCA9IFBsYXRmb3Jtcy9pUGhv
bmVPUy5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVPUzEzLjEuc2RrL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvUERGS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9E
SVI7IH07CiAJCTUxQzY4M0REMUVBMTM0REIwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9ICJXS1VSTFNjaGVt
ZUhhbmRsZXItMS5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzhFMUE0MUYy
NkFDNTQwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFDOEUxQTgxRjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJl
c291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IEVtcHR5R3JhbmRmYXRoZXJl
ZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTY4LDYgKzI1NDksNyBAQAogCQkJCTVDRkFDRjYzMjI2RjczQzYwMDU2QzdEMCAvKiBs
aWJib3Jpbmdzc2wuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdDODNFMDNGMUQwQTYxQTAwMEZF
QkNGMyAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTc4Q0JENjcy
MDRGQjJDODAwODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJNTFCRTlGQTcyMzI0NjJFNjAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3QTAxMEJDRDFEODc3QzBEMDBFREU3MkEgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzRGNTVEMjIwNEQ0N0Yw
MDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpA
QCAtMjY2NSw2ICsyNjQ3LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVz
dENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAv
KiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2
ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCisJCQkJNTFCRTlGQTAyMzIwMjM4
QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5oICovLAorCQkJCTUxQkU5RjlGMjMyMDIzOEEw
MEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi8sCiAJCQkJQTE0RkM1OEQxQjhBRTM2NTAw
RDEwN0VCIC8qIFRlc3RQcm90b2NvbC5oICovLAogCQkJCUExNEZDNThFMUI4QUUzNjUwMEQxMDdF
QiAvKiBUZXN0UHJvdG9jb2wubW0gKi8sCiAJCQkJMkVGRjA2RDIxRDhBRURCQjAwMDRCQjMwIC8q
IFRlc3RXS1dlYlZpZXcuaCAqLywKQEAgLTI4MjYsNiArMjgxMCw3IEBACiAJCQkJOUJERDk1NTYx
RjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0
MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNoaXZlLm1tICovLAogCQkJCTUxRDhDMThGMjI2N0IyNjcw
MDc5N0U0MCAvKiBQREZMaW5rUmVmZXJyZXIubW0gKi8sCisJCQkJNTFCRTlGOTEyMzE5RThDMTAw
Rjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tICovLAogCQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3
QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNCQUVFOEMxRUY0NjI1
NTAwRERFODk0IC8qIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywKIAkJCQlDOTU1MDFC
RTE5QUQyRkFGMDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCkBAIC0zMDkzLDYgKzMwNzgs
OCBAQAogCQkJCTQxMzVGQjg2MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBv
cnQuZHlsaWIgKi8sCiAJCQkJN0M4M0UwMjkxRDBBNUNERjAwRkVCQ0YzIC8qIGxpYldURi5hICov
LAogCQkJCTU3OENCRDY2MjA0RkIyQzcwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayAqLywKKwkJCQk1MUJFOUZBNTIzMjQ2MkEzMDBGOTZDRTIgLyogUERGS2l0LmZyYW1l
d29yayAqLywKKwkJCQk1MUJFOUY5RDIzMUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29y
ayAqLywKIAkJCQk3QTAxMEJDQzFEODc3QzBEMDBFREU3MkEgLyogUXVhcnR6Q29yZS5mcmFtZXdv
cmsgKi8sCiAJCQkJNTc0RjU1RDAyMDRENDcxQzAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29y
ayAqLywKIAkJCSk7CkBAIC00MTQxLDEwICs0MTI4LDYgQEAKIAkJCQkJNTM3Q0Y4NDMyMkVGRDY0
MTAwQzZFQkIzID0gewogCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gMTEuMDsKIAkJCQkJ
fTsKLQkJCQkJN0M4M0UwMkIxRDBBNUUxMDAwRkVCQ0YzID0gewotCQkJCQkJQ3JlYXRlZE9uVG9v
bHNWZXJzaW9uID0gOC4wOwotCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7Ci0J
CQkJCX07CiAJCQkJCTdDQ0U3RThCMUE0MTE0NEUwMDQ0N0M0QyA9IHsKIAkJCQkJCUNyZWF0ZWRP
blRvb2xzVmVyc2lvbiA9IDYuMzsKIAkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0gTWFudWFsOwpA
QCAtNDE3Miw3ICs0MTU1LDYgQEAKIAkJCXByb2plY3REaXJQYXRoID0gIiI7CiAJCQlwcm9qZWN0
Um9vdCA9ICIiOwogCQkJdGFyZ2V0cyA9ICgKLQkJCQk3QzgzRTAyQjFEMEE1RTEwMDBGRUJDRjMg
LyogQWxsICovLAogCQkJCTVDOUQ5MjE0MjJEN0RBMDIwMDhFOTI2NiAvKiBHZW5lcmF0ZSBVbmlm
aWVkIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFOEIxQTQxMTQ0RTAwNDQ3QzRDIC8qIFRlc3RXZWJL
aXRBUElMaWJyYXJ5ICovLAogCQkJCTdDODNERTk1MUQwQTU5MEMwMEZFQkNGMyAvKiBUZXN0V1RG
TGlicmFyeSAqLywKQEAgLTQyMTMsMjQgKzQxOTUsNiBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKIAkJCXNoZWxsU2NyaXB0ID0gImV2YWwgXCIke1dLX1NVQkxBVU5DSF9TQ1JJUFRfUEFSQU1F
VEVSU1tAXX1cIlxuIjsKIAkJfTsKLQkJNTM3Q0Y4NDgyMkVGRDcyMDAwQzZFQkIzIC8qIENoZWNr
IC54Y2ZpbGVsaXN0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
LQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0J
CQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCi0JCQkpOwotCQkJaW5wdXRQYXRocyA9ICgKLQkJCSk7
Ci0JCQluYW1lID0gIkNoZWNrIC54Y2ZpbGVsaXN0cyI7Ci0JCQlvdXRwdXRGaWxlTGlzdFBhdGhz
ID0gKAotCQkJKTsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNo
ZWxsU2NyaXB0ID0gIlNjcmlwdHMvY2hlY2steGNmaWxlbGlzdHMuc2hcbiI7Ci0JCX07CiAJCTVD
OUQ5MjFDMjJEN0RBMzMwMDhFOTI2NiAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CkBAIC00NjI4LDYgKzQ1OTIsNyBAQAogCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQ
YXN0ZVJURkQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjIzNDY0MjFGOTQzRTI3MDBEQjFEMjMg
LyogUGFzdGVXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEOEMxOTAyMjY3QjI2
RDAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5
RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzRkNDNEZFNTFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGlj
dHVyZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTYxQTQxMUEwRjAwNDQ3
QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00NzI1LDYg
KzQ2OTAsNyBAQAogCQkJCUY0RjVCQjUyMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlv
bnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3NjIxMTJDRTYyMDAzMDdFODIgLyogVGVz
dElucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVEMzg5MTIxNUE3QjRCMDAy
QTI5NzkgLyogVGVzdEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxQkU5RkEx
MjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1Nzc0QUE2ODIxRkJCRjc4MDBBRjJBMUIgLyogVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0Q0Q3NEM5MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1l
SGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAv
KiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLApAQCAtNDk1OSwxNiAr
NDkyNSw2IEBACiAJCQl0YXJnZXQgPSA3QzgzREU5NTFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdFdU
RkxpYnJhcnkgKi87CiAJCQl0YXJnZXRQcm94eSA9IDdDODNFMDI0MUQwQTVCMjUwMEZFQkNGMyAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07Ci0JCTdDODNFMDMwMUQwQTVFMUIwMEZF
QkNGMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKLQkJCXRhcmdldCA9IDhERDc2Rjk2MDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2Vi
S2l0QVBJICovOwotCQkJdGFyZ2V0UHJveHkgPSA3QzgzRTAyRjFEMEE1RTFCMDBGRUJDRjMgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotCQk3QzgzRTAzMjFEMEE1RTFEMDBGRUJD
RjMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7Ci0JCQl0YXJnZXQgPSA3QzgzREY5NTFEMEE1QUU0MDBGRUJDRjMgLyogVGVzdFdURiAq
LzsKLQkJCXRhcmdldFByb3h5ID0gN0M4M0UwMzExRDBBNUUxRDAwRkVCQ0YzIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKIAkJN0NDRTdGNTExQTQxMjREQjAwNDQ3QzRDIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owog
CQkJdGFyZ2V0ID0gN0NDRTdFOEIxQTQxMTQ0RTAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJy
YXJ5ICovOwpAQCAtNDk5MSw2ICs0OTQ3LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1ODAxMjU1NENGOTAw
MDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBE
ZWJ1ZzsKIAkJfTsKQEAgLTQ5OTgsNiArNDk1OCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRD
RjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5o
ZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHou
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1l
ID0gUmVsZWFzZTsKIAkJfTsKQEAgLTUwNzUsMjQgKzUwMzksMTQgQEAKIAkJCX07CiAJCQluYW1l
ID0gUmVsZWFzZTsKIAkJfTsKLQkJN0M4M0UwMkQxRDBBNUUxMDAwRkVCQ0YzIC8qIERlYnVnICov
ID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9
IERlYnVnOwotCQl9OwotCQk3QzgzRTAyRTFEMEE1RTEwMDBGRUJDRjMgLyogUmVsZWFzZSAqLyA9
IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsK
LQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJfTsKLQkJCW5hbWUgPSBS
ZWxlYXNlOwotCQl9OwogCQk3Q0NFN0U5RDFBNDExNDRFMDA0NDdDNEMgLyogRGVidWcgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gN0NDRTdFQTMxQTQxMTVDQjAwNDQ3QzRDIC8qIFRlc3RXZWJLaXRBUElMaWJyYXJ5
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JL
X1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9M
SUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC01MTAwLDYg
KzUwNTQsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA3Q0NFN0VBMzFBNDExNUNCMDA0NDdDNEMgLyogVGVzdFdlYktp
dEFQSUxpYnJhcnkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RF
TV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJ
IiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9
OwpAQCAtNTE4OCwxNSArNTE0Niw2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQk3
QzgzRTAyQzFEMEE1RTEwMDBGRUJDRjMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhBZ2dyZWdhdGVUYXJnZXQgIkFsbCIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk3QzgzRTAyRDFEMEE1RTEwMDBG
RUJDRjMgLyogRGVidWcgKi8sCi0JCQkJN0M4M0UwMkUxRDBBNUUxMDAwRkVCQ0YzIC8qIFJlbGVh
c2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKIAkJN0NDRTdFQTExQTQx
MTQ0RTAwNDQ3QzRDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJUZXN0V2ViS2l0QVBJTGlicmFyeSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1
ZDJlZDdmNzliN2I5ODZmNTA4OGRjNzlhYzgzZTNkOTAyNDAxYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBA
IC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0
UERGRG9jdW1lbnQuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvQ29sb3IuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK3VzaW5n
IFdlYkNvcmU6OkNvbG9yOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoUERG
U25hcHNob3QsIEZ1bGxDb250ZW50KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hv
dDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVs
bG88L2JvZHk+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3Vy
YXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0
byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3RE
YXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAg
ICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBh
Z2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdl
LT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKworICAgICAgICAvLyBX
ZSBleHBlY3QgdGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIHNwYWNlIGJl
Zm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5lIGFmdGVyIHRoZSAnbycKKyAgICAgICAgRVhQRUNU
X0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDd1KTsKKworICAgICAgICBFWFBFQ1RfRVEocGFn
ZS0+dGV4dCgpWzFdLCAnSCcpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzVdLCAn
bycpOworCisgICAgICAgIC8vIFRoZSAiSCIgZnJvbSBIZWxsbyBoYXMgdGhlIHJlY3Q6IDguMDAw
MDAwIDU3NC4wMDAwMDAgMTEuNTU1MjAwIDE2LjAwMDAwMAorICAgICAgICBFWFBFQ1RfRVEocGFn
ZS0+Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnRNYWtlKDEzLCA1ODApKSwgMXUpOworCisg
ICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBp
biB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0
UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisK
KyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1
bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykK
K3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgLy8g
U25hcHNob3QgYSBzdWJyZWdpb24gY29udGFpbmVkIGVudGlyZWx5IHdpdGhpbiB0aGUgdmlldwor
ICAgIGF1dG8gc25hcHNob3RDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLU25hcHNob3RDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRS
ZWN0Ok5TTWFrZVJlY3QoMjAwLCAxNTAsIDQwMCwgMzAwKV07CisgICAgW3NuYXBzaG90Q29uZmln
dXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkA0MDBdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBU
ZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAg
IEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgNDAwLCAzMDApKSk7CisKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSBm
dWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJh
Y3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIp
OworCisgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBw
b2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoMjAwLCAxNTApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAw
KSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVzL0Rh
dGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKworICAg
ICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZk
aWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCisgICAgLy8g
U25hcHNob3QgYSByZWdpb24gbGFyZ2VyIHRoYW4gdGhlIHZpZXcKKyAgICBbc25hcHNob3RDb25m
aWd1cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgwLCAwLCAxMjAwLCAxMjAwKV07CisgICAgW3Nu
YXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdpZHRoOkAxMjAwXTsKKworICAgIFt3ZWJW
aWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3VyYXRp
b24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRv
IGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERh
dGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisgICAg
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUocGFn
ZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2Ut
PmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEyMDApKSk7CisKKyAgICAgICAgLy8g
QSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2lu
dCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xv
ckF0UG9pbnQoMjAwLCAxNTApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7
CisKKyAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBvdXRzaWRlIHRoZSB2aWV3IHNob3VsZCBh
bHNvIGJlIGdyZWVuICh3ZSBleHRlbmQgYmFja2dyb3VuZCBjb2xvciBvdXQpLiBQaWNrIGEgcG9p
bnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDkwMCwgNzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkp
OworCisgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb0ZpbGU6QCIvVm9sdW1lcy9EYXRh
L1JlYWxMaWJlcnR5SG9tZS9zdWJyZWdpb24ucGRmIiBhdG9taWNhbGx5OllFU107CisKKyAgICAg
ICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlk
VGFrZVNuYXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKworfQorCitURVNU
KFBERlNuYXBzaG90LCBPdmVyMjAwSW5jaGVzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VT
bmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAyOTQwMCldKTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAw
ZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRo
Q29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90
RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZT
bmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAz
dSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVY
UEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6
Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIDUg
Y2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJh
Y3RlciBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgcGFnZSA9
IGRvY3VtZW50LT5wYWdlKDEpOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDAp
KTsKKworICAgICAgICAvLyBUaGUgb25seSBjaGFyYWN0ZXIgb24gdGhlIHNlY29uZCBwYWdlIGlz
IGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5j
aGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0s
IDMyKTsKKworICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CisgICAgICAgIEVYUEVD
VF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1Jl
Y3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0
ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9u
IHRoZSB0aGlyZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9F
UShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVl
OworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNU
KFBERlNuYXBzaG90LCBMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJraXQtbGluZS1i
b3gtY29udGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGlj
ayBtZTwvYT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0
YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFw
c2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7
CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVD
VF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1Jl
Y3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3Jl
YXRlVW5jaGVja2VkKDI1NSwgMjU1LCAyNTUpKTsKKworICAgICAgICBhdXRvIGFubm90YXRpb25z
ID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNp
emUoKSwgMXUpOworICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxMXUpOworICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+dGV4dCgpWzFdLCAnQycpOworCisgICAgICAgIGF1dG8gY1JlY3QgPSBwYWdlLT5y
ZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCgxKTsKKyAgICAgICAgYXV0byBjTWlkcG9pbnQgPSBDR1Bv
aW50TWFrZShDR1JlY3RHZXRNaWRYKGNSZWN0KSwgQ0dSZWN0R2V0TWlkWShjUmVjdCkpOworICAg
ICAgICBhdXRvIGFubm90YXRpb25Cb3VuZHMgPSBhbm5vdGF0aW9uc1swXS5ib3VuZHMoKTsKKwor
ICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RDb250YWluc1BvaW50KGFubm90YXRpb25Cb3VuZHMs
IGNNaWRwb2ludCkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07
CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNo
b3QsIElubGluZUxpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5D
bGljayBtZTwvYT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmln
dXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBh
dXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hv
dERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisK
KyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9O
RShwYWdlLCBudWxscHRyKTsKKworICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEg
bGluayBoZXJlLCBidXQgZHVlIHRvIHRoZSB3YXkgd2UgZ2F0aGVyIGxpbmtzIGZvciBhbm5vdGF0
aW9uIHVzaW5nIHRoZSBSZW5kZXJJbmxpbmUgdHJlZQorICAgICAgICAvLyBpdCBpcyBtaXNzZWQu
CisKKy8vICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKy8v
ICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisvLyAgICAgICAgRVhQ
RUNUX1RSVUUoYW5ub3RhdGlvbnNbMF0uaXNMaW5rKCkpOworLy8gICAgICAgIEVYUEVDVF9UUlVF
KFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRy
dWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODIyMTIyMzc2Yzc3ODk4MzEyODcyYTgwZDliMTFhY2ZkZTE4ZDU4NAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxQREZLaXQv
UERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291bnRlZC4g
VGhleSByZW1haW4gdmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQREZQYWdl
IHJlbWFpbnMgdmFsaWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBU
ZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xpbmsoKSBj
b25zdDsKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtVUkwoKSBj
b25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+IG1fYW5u
b3RhdGlvbjsKK307CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8VGVz
dFBERlBhZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBjcmVhdGUo
UERGUGFnZSAqKTsKKworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIGFubm90
YXRpb25zKCk7CisgICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAgU3RyaW5n
IHRleHQoKSBjb25zdDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKKyAgICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQpIGNvbnN0
OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
QXRQb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUZXN0UERG
UGFnZShQREZQYWdlICopOworICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7CisgICAgT3B0
aW9uYWw8VmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKK307CisKK2Ns
YXNzIFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4g
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVGcm9tRGF0
YShOU0RhdGEgKik7CisKKyAgICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdlQ291bnQo
KSBjb25zdDsKKyAgICBUZXN0UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitwcml2YXRl
OgorICAgIFRlc3RQREZEb2N1bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8UERGRG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+IG1fcGFn
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNTM3YTU2Zjg2ODg4
NmE3NWIxODJjN2NjZWJmYjc5OWQ3ZDFmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50Lmgi
CisKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lmIFBMQVRG
T1JNKE1BQykKK0NHUmVjdCB0b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNSZWN0VG9D
R1JlY3QocmVjdCk7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsg
cmV0dXJuIE5TUG9pbnRGcm9tQ0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3QgdG9DR1Jl
Y3QoQ0dSZWN0IHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50
KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5ub3RhdGlv
bnMKK1Rlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICph
bm5vdGF0aW9uKQorICAgIDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisKK2Jvb2wg
VGVzdFBERkFubm90YXRpb246OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xpbmsgPSBb
bV9hbm5vdGF0aW9uLmdldCgpLnR5cGUgaXNFcXVhbFRvU3RyaW5nOlBERkFubm90YXRpb25TdWJ0
eXBlTGlua107CisgICAgaWYgKGlzTGluaykKKyAgICAgICAgQVNTRVJUKFttX2Fubm90YXRpb24u
Z2V0KCkuYWN0aW9uIGlzS2luZE9mQ2xhc3M6W1BERkFjdGlvblVSTCBjbGFzc11dKTsKKyAgICBy
ZXR1cm4gaXNMaW5rOworfQorCitDR1JlY3QgVGVzdFBERkFubm90YXRpb246OmJvdW5kcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KG1fYW5ub3RhdGlvbi5nZXQoKS5ib3VuZHMpOwor
fQorCitOU1VSTCAqVGVzdFBERkFubm90YXRpb246OmxpbmtVUkwoKSBjb25zdAoreworICAgIGlm
ICghaXNMaW5rKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICgoUERGQWN0aW9u
VVJMICopbV9hbm5vdGF0aW9uLmdldCgpLmFjdGlvbikuVVJMOworfQorCisvLyBQYWdlcworCitS
ZWY8VGVzdFBERlBhZ2U+IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFnZSAqcGFnZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7Cit9CisKK1Rlc3RQREZQ
YWdlOjpUZXN0UERGUGFnZShQREZQYWdlICpwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9
CisKK2NvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQYWdlOjphbm5vdGF0
aW9ucygpCit7CisgICAgaWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAgICAgIG1fYW5ub3RhdGlv
bnMgPSBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+KCk7CisgICAgICAgIGZvciAoUERGQW5ub3Rh
dGlvbiAqYW5ub3RhdGlvbiBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMpCisgICAgICAgICAg
ICBtX2Fubm90YXRpb25zLT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOworICAgIH0KKworICAgIHJl
dHVybiAqbV9hbm5vdGF0aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5udW1iZXJPZkNoYXJhY3Rl
cnM7Cit9CisKK1N0cmluZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS5nZXQoKS5zdHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6cmVjdEZvckNo
YXJhY3RlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiB0b0NHUmVj
dChbbV9wYWdlIGNoYXJhY3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsKK30KKworc2l6ZV90IFRl
c3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBwb2ludCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fcGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9QbGF0Zm9ybVBvaW50
KHBvaW50KV07Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3BsYXlCb3hNZWRp
YUJveF0pOworfQorCisKK1dlYkNvcmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQo
aW50IHgsIGludCB5KSBjb25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJvdW5kcygpOwor
ICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5kc1JlY3Quc2l6
ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRvIGNnUGFnZSA9
IG1fcGFnZS5nZXQoKS5wYWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90
YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBwaXhlbCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1hcENvbnRleHRH
ZXREYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICogNCkgKyAoeCAq
IDQpOworCisgICAgYXV0byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4ZWxbaSArIDFd
OworICAgIGF1dG8gYiA9IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhlbFtpICsgM107
CisKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKKyAgICByZXR1
cm4geyByICogMjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhIH07Cit9CisKKy8v
IERvY3VtZW50cworCitSZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0
ZUZyb21EYXRhKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0
UERGRG9jdW1lbnQoZGF0YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVu
dChOU0RhdGEgKmRhdGEpCisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1bWVudCBh
bGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50KCkpCit7
Cit9CisKK3NpemVfdCBUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBUZXN0UERG
RG9jdW1lbnQ6OnBhZ2Uoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBwYWdlQ291
bnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2luZGV4XSkK
KyAgICAgICAgbV9wYWdlc1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2RvY3VtZW50
IHBhZ2VBdEluZGV4OmluZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378303</attachid>
            <date>2019-09-07 16:20:37 -0700</date>
            <delta_ts>2019-09-08 11:29:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190907162037.patch</filename>
            <type>text/plain</type>
            <size>65937</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1N2E4ZTljNDk3NWZk
MWE3MmI3YWE5MjQ5MDdkMGU5ZGUwY2MyMi4uYjY4OTVlOTViMjNjMWYxYmEwZWMwNzEyNWNiNmNm
MjYzYmQ1MjhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSW50cm9kdWNlIGEgUHJveHkg
Q0RNIGZvciB0aHJlYWQtc2FmZSBhY2Nlc3MgdG8gQ0RNIGluc3RhbmNlcyBmcm9tIGJhY2tncm91
bmQgZGVjcnlwdGlvbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUz
MmQ0N2I2ZTFmYTM1YjZmOWIuLmIyMGJmMTlhZTM4OGJmOTU3NmQwODI5OGJkYjAyM2M0NzUzYjgy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9t
IHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgcmVmYWN0b3JpbmcgYSBjb21iaW5hdGlvbiBvZiAic25hcHNob3RGaXJzdFBhZ2UiIFBERiBw
cmludGluZyBjb2RlIGFuZCB0aGUKKyAgICAgICAgInRha2VTbmFwc2hvdCIgQVBJIGNvZGUgdG8g
Y2FwdHVyZSB0aGUgb24tc2NyZWVuIHZpc2libGUgcGFnZSB0byBhIFBERiBhdCBmdWxsIGZpZGVs
aXR5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6IE1vdmUgdG8gY3Jvc3MgcGxhdGZv
cm0gV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZSk6IEluc3Rl
YWQgb2YgYXNzdW1pbmcgMSBwYWdlIGNhcHBlZCBhdCAyMDAgaW5jaGVzLAorICAgICAgICAgIHBh
Z2luYXRlIGV2ZXJ5IDIwMCBpbmNoZXMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdU
b1BERik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFn
ZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFnZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdl
TWFuYWdlcnMgdGhhdCBvd24gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGNi
NGI4MWEzNTY4NWM4ZWEwZWYxZDMxZjc3NTFhOWUwZTA3MDA5OWQuLmFmZGQ3ZDRiMmI4YjMzNjZj
NzU2MDlkMGZiZDA2MTA0YWFlYjg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTQxMDcsOSArNDEwNywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxs
V2l0aFdhcm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJl
bnQsIGRvbid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5p
bmdDb2xvciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisK
KyAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1Jl
Y3QgPSBmcmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1
KSk7CisgICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+
cmVuZGVyVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5
MmE4ZGU4OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2
NDg1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBm
bG9hdCB0aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNv
bnN0IFVSTCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhN
RTogPHJkYXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQg
aW5jbHVkZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50UGhhc2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNi
Li4xZjE1NjM1ZmJmM2FmOTA4ZWM1NzY0OTBkMTVlYjRhMTQxNTljMDcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWlu
dEJlaGF2aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9
IDEgPDwgOSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5k
YXJpZXMuCiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBU
aWxlRmlyc3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3Mg
ICAgICAgICAgICAgICA9IDEgPDwgMTIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMmQwNjJiNWZi
YjllYTYwMGUwZjhkMWMxYzYyMzU1NzI0MDUzM2RhOS4uMDM1NzQxM2FhODg2NWE5N2Q0NGU3MWIy
MTY4NTEzMzg2NTBiMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp1cGRhdGVP
dXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG8pCiAKIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50
KCkgJiYgZWxlbWVudCgpLT5pc0xpbmsoKSAmJiBkb2N1bWVudCgpLnByaW50aW5nKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIChkb2N1bWVudCgpLnBy
aW50aW5nKCkgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkgJiBQYWludEJl
aGF2aW9yOjpBbm5vdGF0ZUxpbmtzKSk7CiB9CiAKIGJvb2wgUmVuZGVyRWxlbWVudDo6aGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggOGZhOWY4NjQ0OTdjZThlZWZmMGFiNjc3M2EwNmY0Yzcw
OGIzMGZjOC4uN2RjYTllYjVjMWYxNzA2OTA0ZDRiOTMwNmVjNTg1MGFkNzk2OWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01MDM3
LDYgKzUwMzcsMzIgQEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dCBjb21wbGV0aW8KICAgICB9KTsKIH0KIAorLSAo
dm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1
cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdl
LT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OworICAgIGlmIChzbmFwc2hvdENv
bmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdCkp
CisgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChzbmFwc2hvdENvbmZpZ3Vy
YXRpb24ucmVjdCk7CisKKyAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpOworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0
YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3Io
V0tFcnJvclVua25vd24pLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBoYW5kbGVy
KChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOworICAgIH0pOworfQorCiAjaWYgUExBVEZPUk0o
TUFDKQogLSAodm9pZClfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXM6KEJP
T0wpc2hvdWxkU3VwcHJlc3MKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGJkNWViN2ZjNTI2MzAwN2YyMDA2M2Q2
ODFiMjM4MTkzZWIwMGMzYjcuLjJjNmI1Y2I0OTRkNzY5YTRlYzQwOWQ5MmYzMTAzNDU5YjlmYmNh
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PF9X
S1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2ZvY3VzVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKXRleHRJbnB1dEVsZW1lbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FICYmICFUQVJHRVRfT1NfV0FUQ0gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZhNzU4ODFiZTZkMjJmNzNmMjZlMzY5
MDEwY2IzZGM0MmVmNzA3M2QuLjdlMGVkNzA1ZDBkN2FmZDEwNTBkMjBhNDdiYTMxNWVhMWFhZjY1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzc1MCw2
ICs3NzUwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgRHJhd1RvUERGQ2Fs
bGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlKCksIENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGKGZy
YW1lSUQsIHJlY3QsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxEcmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2spOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUocGRmRGF0YSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0YXRlKCkKIHsKICAgICBB
U1NFUlQoaGFzUnVubmluZ1Byb2Nlc3MoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDdkNWI1OWM3YmMyZWI3OTJmN2FkMDZiOWM5MzdmZTIyMzgxMWZhNWYuLjZh
YmU4MjdkNDlkY2QwYWE0ZTRiYmU0MWJhMGRlMGNhODE2MzYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjAsMTEgKzM2MCwxMCBAQCBzdHJ1Y3QgRWxlbWVu
dERpZEZvY3VzQXJndW1lbnRzIHsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXM7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1
c2VyRGF0YTsKIH07Ci0KLXVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSY+OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKK3VzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSY+OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV1RGOjpNYWNo
U2VuZFJpZ2h0Jj4gTWFjaFNlbmRSaWdodENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Ym9vbCwgYm9vbCwgU3RyaW5nLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3Q+IE5vd1BsYXlp
bmdJbmZvQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTExNzIsOSArMTE3MSwxMCBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94
eSosIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgUmVmPEltYWdlQ2FsbGJhY2s+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2Vz
VG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CisgICAgdm9pZCBkcmF3VG9QREYo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+JiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CisgICAgdm9pZCBk
cmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktp
dDo6Q2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB1aW50MzJfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9u
JiYpOwotICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3Qg
UHJpbnRJbmZvJiwgUmVmPFByaW50RmluaXNoZWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTNkMzQxNDJm
ODc1MjcxMzA4ZTUwZmRmNWViMTBmYmQ2ODc1MmFkYS4uMTM0NGE1MTQ3YjkyNDQxMzJmNzVjY2Qx
NmZlYzZhMGM2ZjE0ODgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTk2LDcgKzE5Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQog
ICAgIEhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHVp
bnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIGJvb2wgZml0
RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRN
YXhpbXVtU2NhbGUpCi0gICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHBk
ZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdGlvblJlY3Rz
Q2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCkBAIC0yMDYsNiArMjA1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTWFjaFNlbmRSaWdodENhbGxiYWNrKE1h
Y2hTZW5kUmlnaHQgc2VuZFJpZ2h0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBOb3dQbGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wgYWN0aXZlLCBib29sIHJlZ2lzdGVyZWRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiwgU3RyaW5nIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJs
ZSBlbGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0KaW5kZXggM2FkOGRmNDgwOGU4ZGE4MGEwY2IxMzNkMzAzNmY0MWExYmVj
NjJjZC4uODQ3ODhlOGE1YWFmZGYwZWI0NGE3ZjVmYWE2YTQ4ZTg5YmQ3ZmY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTcxOCw2ICs3MTgs
OCBAQCAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGbwogICAgIFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbzsKICAgICBwcmludEluZm8ucGFnZVNldHVwU2NhbGVGYWN0b3IgPSAxOwogICAgIHByaW50
SW5mby5zbmFwc2hvdEZpcnN0UGFnZSA9IHByaW50Rm9ybWF0dGVyLnNuYXBzaG90Rmlyc3RQYWdl
OworCisgICAgLy8gRklYTUU6IFBhZ2luYXRlIHdoZW4gZXhwb3J0aW5nIFBERnMgdGFsbGVyIHRo
YW4gMjAwIgogICAgIGlmIChwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IENHRmxvYXQgbWF4aW11bVBERkhlaWdodCA9IDIwMCAqIDcyOyAvLyBtYXhp
bXVtIFBERiBoZWlnaHQgZm9yIGEgc2luZ2xlIHBhZ2UgaXMgMjAwIGluY2hlcwogICAgICAgICBD
R1NpemUgY29udGVudFNpemUgPSBzZWxmLmJvdW5kcy5zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMGQ4ZDhmZGJmMWEzY2NkYjhl
OWYzMDBkYzBiZWZjNmMxNTg0OTIwNC4uYmFmOGQzNjJjYzEwM2Y0ZDVhOWFjMTg2ZDllZDdlZWZi
MWUzYjFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0xMDg2LDEzICsxMDg2LDYgQEAgdWludDMyX3QgV2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWUKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8RHJhd1RvUERG
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrKTsKLSAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBkZkRhdGEpOwotfQot
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCiB7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29udGVudFNpemVDYXRl
Z29yeSksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA4NWE0M2I1NDc5YzE1OWU0MGQ4
ZWZmZDkzMmNiMjViNTQzZGIyNmVhLi5iYzE0YmU0YTlmYTNiOTY4NTgzMjdiZjAyNzdlNTQ1YTIy
ODYwNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC0yMzIsNyArMjMyLDU4IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpCiAgICAg
YXV0byogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBbbV9tb2NrQWNj
ZXNzaWJpbGl0eUVsZW1lbnQgc2V0SGFzTWFpbkZyYW1lUGx1Z2luOmRvY3VtZW50ID8gZG9jdW1l
bnQtPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlXTsKIH0KLSAgICAKKworUmV0YWluUHRyPENG
RGF0YVJlZj4gV2ViUGFnZTo6cGRmU25hcHNob3RBdFNpemUoSW50UmVjdCByZWN0LCBJbnRTaXpl
IGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb3Jl
RnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOworCisgICAgYXV0byBkYXRhQ29uc3VtZXIgPSBhZG9wdENGKENH
RGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7CisgICAgYXV0byBtZWRp
YUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhl
aWdodCgpKTsKKyAgICBhdXRvIHBkZkNvbnRleHQgPSBhZG9wdENGKENHUERGQ29udGV4dENyZWF0
ZShkYXRhQ29uc3VtZXIuZ2V0KCksICZtZWRpYUJveCwgbnVsbHB0cikpOworCisgICAgaW50NjRf
dCByZW1haW5pbmdIZWlnaHQgPSBiaXRtYXBTaXplLmhlaWdodCgpOworICAgIGludDY0X3QgbmV4
dFJlY3RZID0gcmVjdC55KCk7CisgICAgd2hpbGUgKHJlbWFpbmluZ0hlaWdodCA+IDApIHsKKyAg
ICAgICAgLy8gUERGcyBoYXZlIGEgcGVyLXBhZ2UgaGVpZ2h0IGxpbWl0IG9mIDIwMCBpbmNoZXMg
YXQgNzJkcGkuCisgICAgICAgIC8vIFdlJ2xsIGV4cG9ydCBvbmUgUERGIHBhZ2UgYXQgYSB0aW1l
LCB1cCB0byB0aGF0IG1heGltdW0gaGVpZ2h0LgorICAgICAgICBzdGF0aWMgY29uc3QgaW50NjRf
dCBtYXhQYWdlSGVpZ2h0ID0gNzIgKiAyMDA7CisgICAgICAgIGJpdG1hcFNpemUuc2V0SGVpZ2h0
KHN0ZDo6bWluKHJlbWFpbmluZ0hlaWdodCwgbWF4UGFnZUhlaWdodCkpOworICAgICAgICByZWN0
LnNldEhlaWdodChiaXRtYXBTaXplLmhlaWdodCgpKTsKKyAgICAgICAgcmVjdC5zZXRZKG5leHRS
ZWN0WSk7CisKKyAgICAgICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICBhdXRvIG1lZGlh
Qm94RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKE5VTEwsIChjb25zdCBVSW50OCAqKSZtZWRp
YUJveCwgc2l6ZW9mKENHUmVjdCkpKTsKKyAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gKENGRGlj
dGlvbmFyeVJlZilAeworICAgICAgICAgICAgKE5TU3RyaW5nICopa0NHUERGQ29udGV4dE1lZGlh
Qm94IDogKE5TRGF0YSAqKW1lZGlhQm94RGF0YS5nZXQoKQorICAgICAgICB9OworCisgICAgICAg
IENHUERGQ29udGV4dEJlZ2luUGFnZShwZGZDb250ZXh0LmdldCgpLCBkaWN0aW9uYXJ5KTsKKwor
ICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5nZXQo
KSB9OworICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoeyAxLCAtMSB9KTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgwLCAtYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisKKyAg
ICAgICAgcGFpbnRTbmFwc2hvdEF0U2l6ZShyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCAqY29y
ZUZyYW1lLCAqZnJhbWVWaWV3LCBncmFwaGljc0NvbnRleHQpOworCisgICAgICAgIENHUERGQ29u
dGV4dEVuZFBhZ2UocGRmQ29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgbmV4dFJlY3RZICs9IGJp
dG1hcFNpemUuaGVpZ2h0KCk7CisgICAgICAgIHJlbWFpbmluZ0hlaWdodCAtPSBtYXhQYWdlSGVp
Z2h0OworICAgIH0KKworICAgIENHUERGQ29udGV4dENsb3NlKHBkZkNvbnRleHQuZ2V0KCkpOwor
CisgICAgcmV0dXJuIGRhdGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGVlYTBmNDYxZjIxNTkyMjRlMjFiZTE0OGE0YzdkNmI5NzI2NjE3MDQu
LjRmMDM1NTZkMDdhMmRlZGFlNzQzYmIwNTg1MGFiY2ZlYThhN2RiMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzA2LDcgKzIzMDYsNyBA
QCBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29u
c3QgSW50UmVjdCYgcmVjdCwgZG91YmxlCiAgICAgcmV0dXJuIHNuYXBzaG90QXRTaXplKHJlY3Qs
IGJpdG1hcFNpemUsIG9wdGlvbnMpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmlldyYgZnJhbWVWaWV3LCBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3ZvaWQgV2ViUGFnZTo6cGFpbnRTbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucywgRnJhbWUmIGZyYW1lLCBGcmFtZVZpZXcmIGZyYW1l
VmlldywgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgSW50UmVjdCBz
bmFwc2hvdFJlY3QgPSByZWN0OwogICAgIGZsb2F0IGhvcml6b250YWxTY2FsZUZhY3RvciA9IHN0
YXRpY19jYXN0PGZsb2F0PihiaXRtYXBTaXplLndpZHRoKCkpIC8gcmVjdC53aWR0aCgpOwpAQCAt
MjM4MCwzOSArMjM4MCw2IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNp
emUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0CiAgICAgcmV0dXJuIHNu
YXBzaG90OwogfQogCi0jaWYgVVNFKENGKQotUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViUGFnZTo6
cGRmU25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0
bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGNvcmVGcmFt
ZS0+dmlldygpOwotICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwKSk7Ci0KLSNpZiBVU0UoQ0cpCi0gICAgYXV0byBkYXRhQ29uc3VtZXIgPSBh
ZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7Ci0gICAg
YXV0byBtZWRpYUJveCA9IENHUmVjdE1ha2UoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRt
YXBTaXplLmhlaWdodCgpKTsKLSAgICBhdXRvIHBkZkNvbnRleHQgPSBhZG9wdENGKENHUERGQ29u
dGV4dENyZWF0ZShkYXRhQ29uc3VtZXIuZ2V0KCksICZtZWRpYUJveCwgbnVsbHB0cikpOwotCi0g
ICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIG51bGxwdHIpOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCB7IHBkZkNvbnRleHQuZ2V0KCkgfTsK
LSAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoeyAxLCAtMSB9KTsKLSAgICBncmFwaGljc0NvbnRl
eHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgpKTsKLSAgICBwYWludFNuYXBzaG90
QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcs
IGdyYXBoaWNzQ29udGV4dCk7Ci0KLSAgICBDR1BERkNvbnRleHRFbmRQYWdlKHBkZkNvbnRleHQu
Z2V0KCkpOwotICAgIENHUERGQ29udGV4dENsb3NlKHBkZkNvbnRleHQuZ2V0KCkpOwotI2VuZGlm
Ci0KLSAgICByZXR1cm4gZGF0YTsKLX0KLSNlbmRpZgotCiBSZWZQdHI8V2ViSW1hZ2U+IFdlYlBh
Z2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucywgdW5zaWduZWQgbWF4aW11bVBpeGVsQ291bnQpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKQEAgLTQ3NDgsNiArNDcxNSwzNCBAQCB2b2lk
IFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbChGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbgogICAgICAgICByZXN1bHRQYWdlUmVjdHMuYXBwZW5kKEludFJl
Y3QoMCwgMCwgMSwgMSkpOwogfQogCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQoreworICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFt
ZSgpLnZpZXcoKTsKKyAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKKyAgICBpZiAocmVjdCkKKyAg
ICAgICAgc25hcHNob3RTaXplID0gSW50U2l6ZShyZWN0LT5zaXplKCkpOworICAgIGVsc2UKKyAg
ICAgICAgc25hcHNob3RTaXplID0geyBmcmFtZVZpZXcuY29udGVudHNTaXplKCkgfTsKKworICAg
IEludFJlY3Qgc25hcHNob3RSZWN0OworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFJl
Y3QgPSB7IHsoaW50KXJlY3QtPngoKSwgKGludClyZWN0LT55KCl9LCBzbmFwc2hvdFNpemUgfTsK
KyAgICBlbHNlCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgezAsIDB9LCBzbmFwc2hvdFNpemUg
fTsKKworICAgIGF1dG8gb3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCA9IGZyYW1l
Vmlldy5sYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpOworICAgIGZyYW1lVmlldy5zZXRMYXlv
dXRWaWV3cG9ydE92ZXJyaWRlUmVjdChMYXlvdXRSZWN0KHNuYXBzaG90UmVjdCkpOworICAgIGF1
dG8gb3JpZ2luYWxQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LnBhaW50QmVoYXZpb3IoKTsKKyAg
ICBmcmFtZVZpZXcuc2V0UGFpbnRCZWhhdmlvcihvcmlnaW5hbFBhaW50QmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yOjpBbm5vdGF0ZUxpbmtzKTsKKworICAgIGF1dG8gcGRmRGF0YSA9IHBkZlNuYXBz
aG90QXRTaXplKHNuYXBzaG90UmVjdCwgc25hcHNob3RTaXplLCAwKTsKKworICAgIGZyYW1lVmll
dy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0KTsKKyAgICBmcmFtZVZpZXcuc2V0UGFpbnRCZWhhdmlvcihvcmlnaW5hbFBhaW50
QmVoYXZpb3IpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEcmF3VG9QREZD
YWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOworfQorCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IGRmMWM4MjU5YzhkZGZiZGExMWFhMDU4ZWQ1Y2FlMTdhYTJkMTI1ODYuLjdmMWI3MTNi
ZmEzZTgxYWU3MGE5NmJkOTJhNDhlMzlmY2I0NjYxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4MSw2ICs4ODEsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5JiYpOwog
I2VuZGlmCiAKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDYWxsYmFja0lEKTsKKwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQ2FsbGJh
Y2tJRCk7CkBAIC0xNjA1LDggKzE2MDcsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYklt
YWdlPiBzbmFwc2hvdEF0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKICAgICBSZWZQdHI8V2Vi
SW1hZ2U+IHNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiwgU25hcHNob3RPcHRpb25zLCB1bnNp
Z25lZCBtYXhpbXVtUGl4ZWxDb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSk7Ci0jaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBkZlNuYXBzaG90
QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IHBkZlNuYXBzaG90QXRTaXplKFdlYkNvcmU6OkludFJlY3QsIFdl
YkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTE2MjEsNiArMTYyMyw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0
dGluZ0xvYWQoKTsKIAorICAgIHZvaWQgcGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNuYXBzaG90T3B0aW9ucywgV2Vi
Q29yZTo6RnJhbWUmLCBXZWJDb3JlOjpGcmFtZVZpZXcmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmKTsKKwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1Yjll
MWUwN2ViN2Q4YjcwYjI1NWFlMmI3MmI2Njk1MDQ4OWNhZTM3Li5hZWU3MDZmYTUyYzllMWNkMzAw
ODMxNDZmODA4NjQxMzQwZTViOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM4OCw2ICszODgsNyBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwogI2Vu
ZGlmCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5n
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZThlMTQxYzYwNDEwODM5
ZGJmZDExMjEzYjA2YjM2MzQ1YmFiM2Y2Li5lMTQyZTUxMTU2NTE0YWE1MDAzZTI2YzhhYTUyMzdl
ZTY5NjA0ZmI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDktMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gc2F2ZSBhIFBERiBmcm9tIHRoZSBjb250
ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTU1OTAwPiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc2NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC1BZGQgYW4gIkV4cG9y
dCB0byBQREYuLi4iIG1lbnUgb3B0aW9uIHRvIE1pbmlCcm93c2VyLgorICAgICAgICAtQWRkIEFQ
SSB0ZXN0cyBmb3IgdGhlIEFQSSBpdHNlbGYuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9NaW5p
QnJvd3Nlci5lbnRpdGxlbWVudHM6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGZvcmNl
UmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgc2F2ZUFzUERG
Ol0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWI6CisgICAgICAgICog
TWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgt
W1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAg
ICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAg
ICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHNhdmVBc1BERjpdKToKKyAgICAgICAg
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGli
cmFyeS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
REZTbmFwc2hvdC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjplcXVhbFVzaW5n
UkdCQSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0b0NHUmVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b1BsYXRmb3JtUG9p
bnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OlRlc3RQREZB
bm5vdGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpp
c0xpbmsgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90YXRpb246
OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlv
bjo6bGlua1VSTCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6
Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpUZXN0UERGUGFn
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6YW5ub3RhdGlvbnMpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNoYXJhY3RlckNvdW50IGNvbnN0
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjp0ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRl
eCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y2hhcmFjdGVy
SW5kZXhBdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
Ojpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNv
bG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1l
bnQ6OmNyZWF0ZUZyb21EYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1
bWVudDo6VGVzdFBERkRvY3VtZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZE
b2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQ
REZEb2N1bWVudDo6cGFnZSk6CisKIDIwMTktMDktMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJlc3VsdHMud2Via2l0Lm9yZzogUmV0YWluIGNlcnRh
aW4gcGFyYW1ldGVycyB3aGVuIGZvbGxvd2luZyBtZW51IGxpbmtzCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMgYi9Ub29scy9NaW5pQnJvd3Nl
ci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKaW5kZXggYzllYTM3NjQ2OGE2NDk5NzZjOWFlMzhm
Mjk5YTMyNWRjYjRkYWRiOS4uZTRjMmJhMTgwZjM5NWRjYTFkMzQxZGI2NjZkNWMzNGMyZWEzZWMy
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRz
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cwpAQCAtMiwy
MCArMiwyMCBAQAogPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAx
LjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+
CiA8cGxpc3QgdmVyc2lvbj0iMS4wIj4KIDxkaWN0PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5
LmFwcC1zYW5kYm94PC9rZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRl
dmljZS51c2I8L2tleT4KIAk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMu
dXNlci1zZWxlY3RlZC5yZWFkLW9ubHk8L2tleT4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5m
aWxlcy51c2VyLXNlbGVjdGVkLnJlYWQtd3JpdGU8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5jb20u
YXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20u
YXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJl
YWQtb25seTwva2V5PgorCTxzdHJpbmc+Lzwvc3RyaW5nPgogCTxrZXk+Y29tLmFwcGxlLnNlY3Vy
aXR5LnRlbXBvcmFyeS1leGNlcHRpb24ubWFjaC1sb29rdXAuZ2xvYmFsLW5hbWU8L2tleT4KIAk8
YXJyYXk+CiAJCTxzdHJpbmc+Y29tLmFwcGxlLlNhZmFyaS5TYWZlQnJvd3NpbmcuU2VydmljZTwv
c3RyaW5nPgogCQk8c3RyaW5nPmNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZ0RhZW1vbjwvc3Ry
aW5nPgogCTwvYXJyYXk+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8L2tl
eT4KLQk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tl
eT4KLQk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlv
bi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25seTwva2V5PgotCTxzdHJpbmc+Lzwvc3RyaW5n
PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9C
cm93c2VyV2luZG93Q29udHJvbGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLmgKaW5kZXggYzViOWQ1NGE1MjIwNDI2MzZiNzg4MjU3NTY0NGUzYTAy
NGE1ZDk0Ni4uZGZkYjY0MDEzZjAxNmJkMGJkYTUyMGE1ZWU4ZDA4YzMyOTViZmRkYyAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKQEAgLTQ2
LDYgKzQ2LDggQEAgQGludGVyZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93
Q29udHJvbGxlciB7CiAKIC0gKElCQWN0aW9uKW9wZW5Mb2NhdGlvbjooaWQpc2VuZGVyOwogCist
IChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcjsKKwogLSAoSUJBY3Rpb24pZmV0Y2g6KGlk
KXNlbmRlcjsKIC0gKElCQWN0aW9uKXNoYXJlOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZWxv
YWQ6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KaW5kZXggNGI5OTA1N2EwM2NlMDY2MDRiMmQzMTUwNzZjMGM0YTE2ZTA0NDgy
Zi4uNGQ0NTczOTZmMDY1NGUwZjllZTgzNGY5MTRkMWRkYTAyOWZlNmY5NyAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTkzLDYgKzkz
LDExIEBAIC0gKElCQWN0aW9uKWZvcmNlUmVwYWludDooaWQpc2VuZGVyCiAgICAgW3NlbGYgZG9l
c05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6
KGlkKXNlbmRlcgoreworICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsK
K30KKwogLSAoSUJBY3Rpb24pZ29CYWNrOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBkb2VzTm90
UmVjb2duaXplU2VsZWN0b3I6X2NtZF07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvTWFpbk1lbnUueGliIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgppbmRl
eCA1NDZhNjBmMDMyZTcyZTQyYjZhNmMzNmM0OThlMjhmMTMzMjM3NWIzLi4wNzE2MzQ2YzUyOTdj
MzYwMGM0OGI3Y2YwNGM0MzEyOGRlNmJmMjRhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvTWFpbk1lbnUueGliCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54
aWIKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgotPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIi
IHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIxMzc3MSIgdGFyZ2V0UnVudGltZT0iTWFjT1NY
LkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9Im5vbmUiPgorPGRvY3VtZW50IHR5cGU9ImNv
bS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNW
ZXJzaW9uPSIxNDQ5MC43MCIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFj
Y2Vzc0NvbnRyb2w9Im5vbmUiPgogICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICAgIDxwbHVnSW4g
aWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNp
b249IjEzNzcxIi8+CisgICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVy
ZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNpb249IjE0NDkwLjcwIi8+CiAgICAgPC9kZXBl
bmRlbmNpZXM+CiAgICAgPG9iamVjdHM+CiAgICAgICAgIDxjdXN0b21PYmplY3QgaWQ9Ii0yIiB1
c2VyTGFiZWw9IkZpbGUncyBPd25lciIgY3VzdG9tQ2xhc3M9Ik5TQXBwbGljYXRpb24iPgpAQCAt
MTMzLDYgKzEzMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFj
dGlvbiBzZWxlY3Rvcj0ic2F2ZURvY3VtZW50QXM6IiB0YXJnZXQ9Ii0xIiBpZD0iMzYzIi8+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8bWVudUl0ZW0gdGl0bGU9IlNhdmUgQXMgUERG4oCmIiBrZXlFcXVpdmFsZW50PSJTIiBpZD0i
Z21TLTNRLW9McyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1h
c2sga2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrIiBvcHRpb249IllFUyIgY29tbWFuZD0i
WUVTIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVB
c1BERjoiIHRhcmdldD0iLTEiIGlkPSIyNVQtSWQtMzM0Ii8+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9tZW51SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9
IlJldmVydCB0byBTYXZlZCIgaWQ9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrIi8+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggN2VkNmMz
ZDJmOTA2OTM3Mzc2NTQ3MzFjNzM0YjgxMzhiMTUyZmU2My4uNmQ2NmJmYjBhNWYzOWM5OGQyOTI3
N2E2YzZhY2VkOTM4MGRkMmNiNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTEzNCw2ICsxMzQsOSBAQCAtIChCT09MKXZh
bGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24g
PSBbbWVudUl0ZW0gYWN0aW9uXTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVB
c1BERjopKQorICAgICAgICByZXR1cm4gTk87CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rv
cih6b29tSW46KSkKICAgICAgICAgcmV0dXJuIFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFj
dGlvbiA9PSBAc2VsZWN0b3Ioem9vbU91dDopKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBmNzhkYmRmZjAyZmVkOTZjMjg1
MTkyMWQzNGRjNGEyMmY0M2EyZTVmLi5jZjRkM2FmMTc4MWEyMDRjNGRkOWZiZWMwNmNlODUzZDJm
NzIwM2QxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQpAQCAtMjA3LDYgKzIwNyw5IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRl
bTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IG1lbnVJdGVtLmFj
dGlvbjsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAg
ICByZXR1cm4gWUVTOworCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAg
ICAgICAgIHJldHVybiBbc2VsZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVj
dG9yKHpvb21PdXQ6KSkKQEAgLTgxNCw0ICs4MTcsMTcgQEAgLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBpbmNsdWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lk
ICgKICAgICBkZWNpc2lvbkhhbmRsZXIoZmFsc2UpOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQ
REY6KGlkKXNlbmRlcgoreworICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBz
YXZlUGFuZWxdOworICAgIHBhbmVsLmFsbG93ZWRGaWxlVHlwZXMgPSBAWyBAInBkZiIgXTsKKyAg
ICBbcGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9k
YWxSZXNwb25zZU9LKSB7CisgICAgICAgICAgICBbX3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdp
dGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNo
b3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgICAgIFtwZGZTbmFwc2hvdERh
dGEgd3JpdGVUb1VSTDpbcGFuZWwgVVJMXSBvcHRpb25zOjAgZXJyb3I6bmlsXTsKKyAgICAgICAg
ICAgIH1dOworICAgICAgICB9CisgICAgfV07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25m
aWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJy
YXJ5LnhjY29uZmlnCmluZGV4IDJkZTYxZjc5NTRiNTA4OTUzMDlhOGM0YTY4ZjEyNWQ0N2FhODA0
OWQuLjQ0ZTFjNWEyYWUzZDUzODgwZmJjNDE0ZjBhMmY2MGIxY2JjZGNhMzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnku
eGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJTGlicmFyeS54Y2NvbmZpZwpAQCAtMjgsMyArMjgsNSBAQAogUFJPRFVDVF9OQU1FID0g
VGVzdFdlYktpdEFQSTsKIFNLSVBfSU5TVEFMTCA9IFlFUzsKIEdDQ19TWU1CT0xTX1BSSVZBVEVf
RVhURVJOID0gWUVTOworCitTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoU0RLUk9P
VCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MgJChTREtST09UKSQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJ
UikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChpbmhlcml0ZWQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGUyZmI2OTAyNGJiMTQ5
ZTAxNTg4NjU2MGZlNGI0MzhjNjU5YjUxMzkuLjRkOWI0ZDc0MzIwZjUwZTJmNTE0MWEzMzdkMjQw
ZTQzMzA5N2FkZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAg
LTMzLDggKzMzLDkgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpZiBVU0UoRk9VTkRBVElPTikK
LU9CSkNfQ0xBU1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TQ29sb3I7CiBPQkpDX0NMQVNTIE5T
RGljdGlvbmFyeTsKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNDc0M2QyNzBlZjJmYjY0
MTAwZjNmN2U1YzgzZjY4YjdmYzg3ZmI4Li5mMGVlZGNkZTM5YmM5NzcyYTc2NDI0OGY2ZjM4MzNm
YWFjYzkxZGE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjksMTkgKzI5LDYgQEAKIAkJ
CW5hbWUgPSAiR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gQWxs
OwogCQl9OwotCQk3QzgzRTAyQjFEMEE1RTEwMDBGRUJDRjMgLyogQWxsICovID0gewotCQkJaXNh
ID0gUEJYQWdncmVnYXRlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDODNF
MDJDMUQwQTVFMTAwMEZFQkNGMyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiQWxsIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTUzN0NGODQ4
MjJFRkQ3MjAwMEM2RUJCMyAvKiBDaGVjayAueGNmaWxlbGlzdHMgKi8sCi0JCQkpOwotCQkJZGVw
ZW5kZW5jaWVzID0gKAotCQkJCTdDODNFMDMwMUQwQTVFMUIwMEZFQkNGMyAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAotCQkJCTdDODNFMDMyMUQwQTVFMUQwMEZFQkNGMyAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5hbWUgPSBBbGw7Ci0JCQlwcm9kdWN0TmFtZSA9IEFs
bDsKLQkJfTsKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwpAQCAtMjc1LDYgKzI2Miw5IEBACiAJCTUxQjFFRTk3
MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUxQzgw
RkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKIAkJNTFC
Q0VFNEUxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VF
NEMxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07
CiAJCTUxQkNFRTRGMUM4NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1s
ICovOyB9OworCQk1MUJFOUY5MjIzMTlFOEQ0MDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5MTIzMTlF
OEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi87IH07CisJCTUxQkU5RkExMjMyMDIzOEEw
MEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5RjIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRv
Y3VtZW50Lm1tICovOyB9OworCQk1MUJFOUZBNzIzMjQ2MkU2MDBGOTZDRTIgLyogUERGS2l0LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkU5RkE1MjMyNDYyQTMwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovOyB9OwogCQk1
MUM2ODNERTFFQTEzNEU4MDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM2ODNERDFFQTEzNERC
MDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gKi87IH07CiAJCTUxQzhFMUE1MUYy
NkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi87IH07CiAJCTUxQzhFMUE5MUYyN0Y0OTYw
MEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLnBsaXN0ICovOyB9OwpAQCAtMTA1MywyMCArMTA0Myw2IEBACiAJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDdDODNERTk1MUQwQTU5MEMwMEZFQkNGMzsKIAkJCXJlbW90ZUluZm8g
PSBUZXN0V1RGTGlicmFyeTsKIAkJfTsKLQkJN0M4M0UwMkYxRDBBNUUxQjAwRkVCQ0YzIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDhERDc2Rjk2MDQ4NkFBNzYwMEQ5NkI1RTsKLQkJCXJlbW90ZUluZm8gPSBUZXN0V2ViS2l0
QVBJOwotCQl9OwotCQk3QzgzRTAzMTFEMEE1RTFEMDBGRUJDRjMgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFp
bmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gN0M4M0RGOTUx
RDBBNUFFNDAwRkVCQ0YzOwotCQkJcmVtb3RlSW5mbyA9IFRlc3RXVEY7Ci0JCX07CiAJCTdDQ0U3
RjUwMUE0MTI0REIwMDQ0N0M0QyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwOEZCNzc5
M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC0xNzY4LDYgKzE3NDQs
MTEgQEAKIAkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vz
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11
bHRpUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0
RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVk
REJNdWx0aVByb2Nlc3MtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4
ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQREZTbmFwc2hvdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFC
RTlGOUQyMzFGMzUxRTAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFt
ZSA9IFBERktpdC5mcmFtZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0Rl
dmVsb3Blci9TREtzL01hY09TWDEwLjE0LnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1
YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSBERVZFTE9QRVJfRElSOyB9OworCQk1MUJFOUY5RjIzMjAyMzhBMDBGOTZDRTIg
LyogVGVzdFBERkRvY3VtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gVGVzdFBERkRvY3VtZW50Lm1tOyBwYXRoID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJFOUZBMDIzMjAyMzhBMDBGOTZDRTIg
LyogVGVzdFBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRl
c3RQREZEb2N1bWVudC5oOyBwYXRoID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkU5RkE1MjMyNDYyQTMwMEY5NkNFMiAvKiBQREZLaXQu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQREZLaXQuZnJhbWV3b3JrOyBwYXRoID0gUGxh
dGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZU9TMTMuMS5zZGsv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QREZLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
REVWRUxPUEVSX0RJUjsgfTsKIAkJNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJMU2No
ZW1lSGFuZGxlci0xLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
IldLVVJMU2NoZW1lSGFuZGxlci0xLm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFu
ZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUuYnBsaXN0OyBwYXRoID0gRW1wdHlH
cmFuZGZhdGhlcmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI1NjgsNiArMjU0OSw3IEBACiAJCQkJNUNGQUNGNjMyMjZGNzNDNjAw
NTZDN0QwIC8qIGxpYmJvcmluZ3NzbC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0Yx
RDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQk1NzhDQkQ2NzIwNEZCMkM4MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1MUJFOUZBNzIzMjQ2MkU2MDBGOTZDRTIgLyogUERG
S2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNEMUQ4NzdDMEQwMEVE
RTcyQSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTU3NEY1
NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LywKIAkJCSk7CkBAIC0yNjY1LDYgKzI2NDcsOCBAQAogCQkJCTVDRTc1OTQ3MjJBODgzQTUwMEMx
MjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4
QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFE
NzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKKwkJCQk1MUJF
OUZBMDIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCisJCQkJNTFCRTlG
OUYyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAqLywKIAkJCQlBMTRGQzU4
RDFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29sLmggKi8sCiAJCQkJQTE0RkM1OEUxQjhB
RTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSAqLywKIAkJCQkyRUZGMDZEMjFEOEFFREJC
MDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5oICovLApAQCAtMjgyNiw2ICsyODEwLDcgQEAKIAkJ
CQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAogCQkJCTlCMjM0
NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJNTFEOEMx
OEYyMjY3QjI2NzAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSAqLywKKwkJCQk1MUJFOUY5
MTIzMTlFOEMxMDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0
RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKIAkJCQk4M0JB
RUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLAog
CQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAqLywKQEAgLTMw
OTMsNiArMzA3OCw4IEBACiAJCQkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNv
cmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk3QzgzRTAyOTFEMEE1Q0RGMDBGRUJDRjMgLyog
bGliV1RGLmEgKi8sCiAJCQkJNTc4Q0JENjYyMDRGQjJDNzAwODNCOUYyIC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrICovLAorCQkJCTUxQkU5RkE1MjMyNDYyQTMwMEY5NkNFMiAvKiBQ
REZLaXQuZnJhbWV3b3JrICovLAorCQkJCTUxQkU5RjlEMjMxRjM1MUUwMEY5NkNFMiAvKiBQREZL
aXQuZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNDMUQ4NzdDMEQwMEVERTcyQSAvKiBRdWFydHpD
b3JlLmZyYW1ld29yayAqLywKIAkJCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJp
dHkuZnJhbWV3b3JrICovLAogCQkJKTsKQEAgLTQxNDEsMTAgKzQxMjgsNiBAQAogCQkJCQk1MzdD
Rjg0MzIyRUZENjQxMDBDNkVCQjMgPSB7CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAx
MS4wOwogCQkJCQl9OwotCQkJCQk3QzgzRTAyQjFEMEE1RTEwMDBGRUJDRjMgPSB7Ci0JCQkJCQlD
cmVhdGVkT25Ub29sc1ZlcnNpb24gPSA4LjA7Ci0JCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IEF1
dG9tYXRpYzsKLQkJCQkJfTsKIAkJCQkJN0NDRTdFOEIxQTQxMTQ0RTAwNDQ3QzRDID0gewogCQkJ
CQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gNi4zOwogCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUg
PSBNYW51YWw7CkBAIC00MTcyLDcgKzQxNTUsNiBAQAogCQkJcHJvamVjdERpclBhdGggPSAiIjsK
IAkJCXByb2plY3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0gKAotCQkJCTdDODNFMDJCMUQwQTVF
MTAwMEZFQkNGMyAvKiBBbGwgKi8sCiAJCQkJNUM5RDkyMTQyMkQ3REEwMjAwOEU5MjY2IC8qIEdl
bmVyYXRlIFVuaWZpZWQgU291cmNlcyAqLywKIAkJCQk3Q0NFN0U4QjFBNDExNDRFMDA0NDdDNEMg
LyogVGVzdFdlYktpdEFQSUxpYnJhcnkgKi8sCiAJCQkJN0M4M0RFOTUxRDBBNTkwQzAwRkVCQ0Yz
IC8qIFRlc3RXVEZMaWJyYXJ5ICovLApAQCAtNDIxMywyNCArNDE5NSw2IEBACiAJCQlzaGVsbFBh
dGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQgPSAiZXZhbCBcIiR7V0tfU1VCTEFVTkNIX1ND
UklQVF9QQVJBTUVURVJTW0BdfVwiXG4iOwogCQl9OwotCQk1MzdDRjg0ODIyRUZENzIwMDBDNkVC
QjMgLyogQ2hlY2sgLnhjZmlsZWxpc3RzICovID0gewotCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0g
KAotCQkJKTsKLQkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhz
ID0gKAotCQkJKTsKLQkJCW5hbWUgPSAiQ2hlY2sgLnhjZmlsZWxpc3RzIjsKLQkJCW91dHB1dEZp
bGVMaXN0UGF0aHMgPSAoCi0JCQkpOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkpOwotCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiU2NyaXB0cy9jaGVjay14Y2ZpbGVsaXN0cy5zaFxuIjsK
LQkJfTsKIAkJNUM5RDkyMUMyMkQ3REEzMzAwOEU5MjY2IC8qIFNoZWxsU2NyaXB0ICovID0gewog
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTQ2MjgsNiArNDU5Miw3IEBACiAJCQkJOUJERDk1NTgxRjgzNjgzNjAw
RDIwQzYwIC8qIFBhc3RlUlRGRC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMjM0NjQyMUY5NDNF
MjcwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUQ4
QzE5MDIyNjdCMjZEMDA3OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFCRTlGOTIyMzE5RThENDAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0UwNTMxRDBBNjQzQTAwRkVCQ0YzIC8qIFBlbmRpbmdBUElSZXF1ZXN0
VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQ0M0RkU1MUVDNEU4NTIwMDc2RTM3QyAvKiBQ
aWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBNjFB
NDExQTBGMDA0NDdDNEMgLyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLywK
QEAgLTQ3MjUsNiArNDY5MCw3IEBACiAJCQkJRjRGNUJCNTIyMTY2N0JBQTAwMkQwNkI5IC8qIFRl
c3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMw
N0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUQzODkx
MjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3NzRBQTY4MjFGQkJGNzgwMEFGMkExQiAvKiBUZXN0U09BdXRob3JpemF0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRDRDc0QzkyMEZEQjQ5NjAwREUzNzk0IC8qIFRl
c3RVUkxTY2hlbWVIYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1MTdCNjcyMDU0QzQ5
NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC00OTU5LDE2ICs0OTI1LDYgQEAKIAkJCXRhcmdldCA9IDdDODNERTk1MUQwQTU5MEMwMEZFQkNG
MyAvKiBUZXN0V1RGTGlicmFyeSAqLzsKIAkJCXRhcmdldFByb3h5ID0gN0M4M0UwMjQxRDBBNUIy
NTAwRkVCQ0YzIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKLQkJN0M4M0UwMzAx
RDBBNUUxQjAwRkVCQ0YzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gOERENzZGOTYwNDg2QUE3NjAwRDk2QjVF
IC8qIFRlc3RXZWJLaXRBUEkgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDdDODNFMDJGMUQwQTVFMUIw
MEZFQkNGMyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0JCTdDODNFMDMyMUQw
QTVFMUQwMEZFQkNGMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJY
VGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDdDODNERjk1MUQwQTVBRTQwMEZFQkNGMyAv
KiBUZXN0V1RGICovOwotCQkJdGFyZ2V0UHJveHkgPSA3QzgzRTAzMTFEMEE1RTFEMDBGRUJDRjMg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwogCQk3Q0NFN0Y1MTFBNDEyNERCMDA0
NDdDNEMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERl
cGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA3Q0NFN0U4QjFBNDExNDRFMDA0NDdDNEMgLyogVGVzdFdl
YktpdEFQSUxpYnJhcnkgKi87CkBAIC00OTkxLDYgKzQ5NDcsMTAgQEAKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4
MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdlYktpdEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJ
CSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3Mv
UXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9Owog
CQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtNDk5OCw2ICs0OTU4LDEwIEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5
MDk1ODAxMjU1NENGOTAwMDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAor
CQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdv
cmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtNTA3NSwyNCArNTAzOSwxNCBAQAogCQkJ
fTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQk3QzgzRTAyRDFEMEE1RTEwMDBGRUJDRjMg
LyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxk
U2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCX07
Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTdDODNFMDJFMUQwQTVFMTAwMEZFQkNGMyAvKiBS
ZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNl
dHRpbmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9Owot
CQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07CiAJCTdDQ0U3RTlEMUE0MTE0NEUwMDQ0N0M0QyAvKiBE
ZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA3Q0NFN0VBMzFBNDExNUNCMDA0NDdDNEMgLyogVGVzdFdlYktp
dEFQSUxpYnJhcnkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RF
TV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJ
IiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsK
QEAgLTUxMDAsNiArNTA1NCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAv
KiBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJl
bGVhc2U7CiAJCX07CkBAIC01MTg4LDE1ICs1MTQ2LDYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0
aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7
CiAJCX07Ci0JCTdDODNFMDJDMUQwQTVFMTAwMEZFQkNGMyAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTdDODNFMDJE
MUQwQTVFMTAwMEZFQkNGMyAvKiBEZWJ1ZyAqLywKLQkJCQk3QzgzRTAyRTFEMEE1RTEwMDBGRUJD
RjMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwogCQk3
Q0NFN0VBMTFBNDExNDRFMDA0NDdDNEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIlRlc3RXZWJLaXRBUElMaWJyYXJ5IiAqLyA9IHsKIAkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTVkMmVkN2Y3OWI3Yjk4NmY1MDg4ZGM3OWFjODNlM2Q5MDI0MDFhMwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25h
cHNob3QubW0KQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNp
bXBvcnQgIlRlc3RQREZEb2N1bWVudC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KKwordXNpbmcgV2ViQ29yZTo6Q29sb3I7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVChQREZTbmFwc2hvdCwgRnVsbENvbnRlbnQpCit7CisgICAgc3RhdGljIGJvb2wgZGlk
VGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9
IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RX
aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBz
aG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShw
ZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgp
LCAxdSk7CisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBF
WFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOworCisg
ICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgNSBjaGFyYWN0ZXJzICJIZWxsbyIsIGJ1dCB0aGVyZSdz
IGEgc3BhY2UgYmVmb3JlIHRoZSAnSCcsIGFuZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlICdvJworICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgN3UpOworCisgICAgICAgIEVY
UEVDVF9FUShwYWdlLT50ZXh0KClbMV0sICdIJyk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50
ZXh0KClbNV0sICdvJyk7CisKKyAgICAgICAgLy8gVGhlICJIIiBmcm9tIEhlbGxvIGhhcyB0aGUg
cmVjdDogOC4wMDAwMDAgNTc0LjAwMDAwMCAxMS41NTUyMDAgMTYuMDAwMDAwCisgICAgICAgIEVY
UEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludE1ha2UoMTMsIDU4MCkp
LCAxdSk7CisKKyAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGlj
ayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBh
Z2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAy
NTUsIDApKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisg
ICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBT
dWJyZWdpb25zKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07
CisKKyAgICAvLyBTbmFwc2hvdCBhIHN1YnJlZ2lvbiBjb250YWluZWQgZW50aXJlbHkgd2l0aGlu
IHRoZSB2aWV3CisgICAgYXV0byBzbmFwc2hvdENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc25hcHNob3RDb25maWd1
cmF0aW9uIHNldFJlY3Q6TlNNYWtlUmVjdCgyMDAsIDE1MCwgNDAwLCAzMDApXTsKKyAgICBbc25h
cHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDQwMF07CisKKyAgICBbd2ViVmll
dyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1cmF0aW9u
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBk
b2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRh
KTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAg
ICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2Us
IG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5i
b3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA0MDAsIDMwMCkpKTsKKworICAgICAgICAvLyBXZSBl
eHBlY3QgdGhlIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEo
cGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4
dCgpWzBdLCAzMik7CisKKyAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVl
bi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9U
UlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tl
ZCgwLCAyNTUsIDApKTsKKworICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9GaWxlOkAi
L1ZvbHVtZXMvRGF0YS9SZWFsTGliZXJ0eUhvbWUvc3VicmVnaW9uLnBkZiIgYXRvbWljYWxseTpZ
RVNdOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBV
dGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNuYXBzaG90ID0gZmFsc2U7
CisKKyAgICAvLyBTbmFwc2hvdCBhIHJlZ2lvbiBsYXJnZXIgdGhhbiB0aGUgdmlldworICAgIFtz
bmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEyMDAsIDEyMDAp
XTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDEyMDBdOwor
CisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90
Q29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNo
b3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBk
ZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCks
IDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVY
UEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKKwor
ICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4g
UGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVF
KHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgw
LCAyNTUsIDApKTsKKworICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZp
ZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCku
IFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJV
RShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQo
MCwgMjU1LCAwKSk7CisKKyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9W
b2x1bWVzL0RhdGEvUmVhbExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVT
XTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRp
bDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOwor
Cit9CisKK1RFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJv
b2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAw
KV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkg
Ymdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAq
cGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZy
b21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFn
ZUNvdW50KCksIDN1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsK
KyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShD
R1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0
NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDAp
ID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIC8vIFdlIGV4
cGVjdCB0aGUgNSBjaGFyYWN0ZXJzICJIZWxsbyIsIGJ1dCB0aGVyZSdzIGEgZnVsbCBwYWdlICdz
cGFjZScgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5lIGFmdGVyIHRoZSAn
bycKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDd1KTsKKworICAg
ICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMSk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBu
dWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91
bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2Vk
KDAsIDI1NSwgMCkpOworCisgICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3RlciBvbiB0aGUgc2Vj
b25kIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNU
X0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2Ut
PnRleHQoKVswXSwgMzIpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgyKTsKKyAg
ICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1Jl
Y3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBUaGUgb25seSBj
aGFyYWN0ZXIgb24gdGhlIHRoaXJkIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0
ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAgIGRpZFRha2VTbmFw
c2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7
Cit9CisKK1RFU1QoUERGU25hcHNob3QsIExpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRh
a2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAxNTAwMCldKTsKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPVwiLXdl
YmtpdC1saW5lLWJveC1jb250YWluOiBnbHlwaHNcIj48YSBocmVmPVwiaHR0cHM6Ly93ZWJraXQu
b3JnL1wiPkNsaWNrIG1lPC9hPjwvZGl2PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFw
c2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRm
U25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21E
YXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNv
dW50KCksIDJ1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAg
ICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1Jl
Y3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMjU1LCAyNTUsIDI1NSkpOworCisgICAgICAgIGF1dG8g
YW5ub3RhdGlvbnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOworICAgICAgICBFWFBFQ1RfRVEoYW5u
b3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFubm90YXRpb25zWzBd
LmlzTGluaygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwo
KSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7
CisKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDExdSk7CisgICAg
ICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMV0sICdDJyk7CisKKyAgICAgICAgYXV0byBjUmVj
dCA9IHBhZ2UtPnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KDEpOworICAgICAgICBhdXRvIGNNaWRw
b2ludCA9IENHUG9pbnRNYWtlKENHUmVjdEdldE1pZFgoY1JlY3QpLCBDR1JlY3RHZXRNaWRZKGNS
ZWN0KSk7CisgICAgICAgIGF1dG8gYW5ub3RhdGlvbkJvdW5kcyA9IGFubm90YXRpb25zWzBdLmJv
dW5kcygpOworCisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdENvbnRhaW5zUG9pbnQoYW5ub3Rh
dGlvbkJvdW5kcywgY01pZHBvaW50KSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworVEVT
VChQREZTbmFwc2hvdCwgSW5saW5lTGlua3MpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNu
YXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVmPVwiaHR0cHM6Ly93ZWJr
aXQub3JnL1wiPkNsaWNrIG1lPC9hPiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25h
cHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRh
KHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50
KCksIDF1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAg
ICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSBz
aG91bGQgYmUgYSBsaW5rIGhlcmUsIGJ1dCBkdWUgdG8gdGhlIHdheSB3ZSBnYXRoZXIgbGlua3Mg
Zm9yIGFubm90YXRpb24gdXNpbmcgdGhlIFJlbmRlcklubGluZSB0cmVlCisgICAgICAgIC8vIGl0
IGlzIG1pc3NlZC4KKworLy8gICAgICAgIGF1dG8gYW5ub3RhdGlvbnMgPSBwYWdlLT5hbm5vdGF0
aW9ucygpOworLy8gICAgICAgIEVYUEVDVF9FUShhbm5vdGF0aW9ucy5zaXplKCksIDF1KTsKKy8v
ICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisvLyAgICAgICAg
RVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0VxdWFsOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgZGlkVGFrZVNu
YXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90
KTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
REZEb2N1bWVudC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MjIxMjIzNzZjNzc4OTgzMTI4NzJhODBkOWIxMWFjZmRlMThkNTg0Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1l
bnQuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBv
cnQgPFBERktpdC9QREZLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7Cit9
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gQW5ub3RhdGlvbnMgYXJlbid0IHJl
ZiBjb3VudGVkLiBUaGV5IHJlbWFpbiB2YWxpZCBhcyBsb25nIGFzIHRoZWlyIGNvbnRhaW5pbmcg
VGVzdFBERlBhZ2UgcmVtYWlucyB2YWxpZAorY2xhc3MgVGVzdFBERkFubm90YXRpb24geworcHVi
bGljOgorICAgIFRlc3RQREZBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKik7CisKKyAgICBib29s
IGlzTGluaygpIGNvbnN0OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBOU1VSTCAq
bGlua1VSTCgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8UERGQW5ub3Rh
dGlvbj4gbV9hbm5vdGF0aW9uOworfTsKKworY2xhc3MgVGVzdFBERlBhZ2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxUZXN0UERGUGFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERlBh
Z2U+IGNyZWF0ZShQREZQYWdlICopOworCisgICAgY29uc3QgVmVjdG9yPFRlc3RQREZBbm5vdGF0
aW9uPiYgYW5ub3RhdGlvbnMoKTsKKyAgICBzaXplX3QgY2hhcmFjdGVyQ291bnQoKSBjb25zdDsK
KyAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIENHUmVjdCByZWN0Rm9yQ2hhcmFjdGVyQXRJ
bmRleChzaXplX3QpIGNvbnN0OworICAgIHNpemVfdCBjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQ
b2ludCkgY29uc3Q7CisgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6
Q29sb3IgY29sb3JBdFBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgCitwcml2YXRlOgor
ICAgIFRlc3RQREZQYWdlKFBERlBhZ2UgKik7CisgICAgUmV0YWluUHRyPFBERlBhZ2U+IG1fcGFn
ZTsKKyAgICBPcHRpb25hbDxWZWN0b3I8VGVzdFBERkFubm90YXRpb24+PiBtX2Fubm90YXRpb25z
OworfTsKKworY2xhc3MgVGVzdFBERkRvY3VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBE
RkRvY3VtZW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGRG9jdW1lbnQ+IGNy
ZWF0ZUZyb21EYXRhKE5TRGF0YSAqKTsKKworICAgIHZvaWQgZHVtcCgpOworCisgICAgc2l6ZV90
IHBhZ2VDb3VudCgpIGNvbnN0OworICAgIFRlc3RQREZQYWdlKiBwYWdlKHNpemVfdCBpbmRleCk7
CisKK3ByaXZhdGU6CisgICAgVGVzdFBERkRvY3VtZW50KE5TRGF0YSAqKTsKKworICAgIFJldGFp
blB0cjxQREZEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWZWN0b3I8UmVmUHRyPFRlc3RQREZQ
YWdlPj4gbV9wYWdlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y1
MzdhNTZmODY4ODg2YTc1YjE4MmM3Y2NlYmZiNzk5ZDdkMWY3YgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCkBAIC0wLDAgKzEs
MTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UERG
RG9jdW1lbnQuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CisjaWYgUExBVEZPUk0oTUFDKQorQ0dSZWN0IHRvQ0dSZWN0KE5TUmVjdCByZWN0KSB7IHJldHVy
biBOU1JlY3RUb0NHUmVjdChyZWN0KTsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9pbnQoQ0dQb2lu
dCBwb2ludCkgeyByZXR1cm4gTlNQb2ludEZyb21DR1BvaW50KHBvaW50KTsgfQorI2Vsc2UKK0NH
UmVjdCB0b0NHUmVjdChDR1JlY3QgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorTlNQb2ludCB0b1Bs
YXRmb3JtUG9pbnQoQ0dQb2ludCBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KKyNlbmRpZgorCisv
LyBBbm5vdGF0aW9ucworVGVzdFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKFBERkFu
bm90YXRpb24gKmFubm90YXRpb24pCisgICAgOiBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKK3sK
K30KKworYm9vbCBUZXN0UERGQW5ub3RhdGlvbjo6aXNMaW5rKCkgY29uc3QKK3sKKyAgICBib29s
IGlzTGluayA9IFttX2Fubm90YXRpb24uZ2V0KCkudHlwZSBpc0VxdWFsVG9TdHJpbmc6UERGQW5u
b3RhdGlvblN1YnR5cGVMaW5rXTsKKyAgICBpZiAoaXNMaW5rKQorICAgICAgICBBU1NFUlQoW21f
YW5ub3RhdGlvbi5nZXQoKS5hY3Rpb24gaXNLaW5kT2ZDbGFzczpbUERGQWN0aW9uVVJMIGNsYXNz
XV0pOworICAgIHJldHVybiBpc0xpbms7Cit9CisKK0NHUmVjdCBUZXN0UERGQW5ub3RhdGlvbjo6
Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QobV9hbm5vdGF0aW9uLmdldCgp
LmJvdW5kcyk7Cit9CisKK05TVVJMICpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCgpIGNvbnN0
Cit7CisgICAgaWYgKCFpc0xpbmsoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4g
KChQREZBY3Rpb25VUkwgKiltX2Fubm90YXRpb24uZ2V0KCkuYWN0aW9uKS5VUkw7Cit9CisKKy8v
IFBhZ2VzCisKK1JlZjxUZXN0UERGUGFnZT4gVGVzdFBERlBhZ2U6OmNyZWF0ZShQREZQYWdlICpw
YWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRlc3RQREZQYWdlKHBhZ2UpKTsKK30K
KworVGVzdFBERlBhZ2U6OlRlc3RQREZQYWdlKFBERlBhZ2UgKnBhZ2UpCisgICAgOiBtX3BhZ2Uo
cGFnZSkKK3sKK30KKworY29uc3QgVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPiYgVGVzdFBERlBh
Z2U6OmFubm90YXRpb25zKCkKK3sKKyAgICBpZiAoIW1fYW5ub3RhdGlvbnMpIHsKKyAgICAgICAg
bV9hbm5vdGF0aW9ucyA9IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4oKTsKKyAgICAgICAgZm9y
IChQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uIGluIG1fcGFnZS5nZXQoKS5hbm5vdGF0aW9ucykK
KyAgICAgICAgICAgIG1fYW5ub3RhdGlvbnMtPmFwcGVuZCh7IGFubm90YXRpb24gfSk7CisgICAg
fQorCisgICAgcmV0dXJuICptX2Fubm90YXRpb25zOworfQorCitzaXplX3QgVGVzdFBERlBhZ2U6
OmNoYXJhY3RlckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmdldCgpLm51bWJl
ck9mQ2hhcmFjdGVyczsKK30KKworU3RyaW5nIFRlc3RQREZQYWdlOjp0ZXh0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWdlLmdldCgpLnN0cmluZzsKK30KKworQ0dSZWN0IFRlc3RQREZQYWdl
OjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRvQ0dSZWN0KFttX3BhZ2UgY2hhcmFjdGVyQm91bmRzQXRJbmRleDppbmRleF0pOworfQor
CitzaXplX3QgVGVzdFBERlBhZ2U6OmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50IHBvaW50
KSBjb25zdAoreworICAgIHJldHVybiBbbV9wYWdlIGNoYXJhY3RlckluZGV4QXRQb2ludDp0b1Bs
YXRmb3JtUG9pbnQocG9pbnQpXTsKK30KKworQ0dSZWN0IFRlc3RQREZQYWdlOjpib3VuZHMoKSBj
b25zdAoreworICAgIHJldHVybiB0b0NHUmVjdChbbV9wYWdlIGJvdW5kc0ZvckJveDprUERGRGlz
cGxheUJveE1lZGlhQm94XSk7Cit9CisKKworV2ViQ29yZTo6Q29sb3IgVGVzdFBERlBhZ2U6OmNv
bG9yQXRQb2ludChpbnQgeCwgaW50IHkpIGNvbnN0Cit7CisgICAgYXV0byBib3VuZHNSZWN0ID0g
Ym91bmRzKCk7CisgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKE5VTEwsIGJvdW5kc1JlY3Quc2l6ZS53aWR0aCwgYm91
bmRzUmVjdC5zaXplLmhlaWdodCwgOCwgMCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKworICAgIGF1
dG8gY2dQYWdlID0gbV9wYWdlLmdldCgpLnBhZ2VSZWY7CisgICAgQ0dDb250ZXh0RHJhd1BERlBh
Z2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5nZXQoKSwgY2dQYWdlLCBudWxscHRyKTsKKworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIHBpeGVsID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKUNHQml0
bWFwQ29udGV4dEdldERhdGEoY29udGV4dC5nZXQoKSk7CisgICAgc2l6ZV90IGkgPSAoeSAqIHgg
KiA0KSArICh4ICogNCk7CisKKyAgICBhdXRvIHIgPSBwaXhlbFtpXTsKKyAgICBhdXRvIGcgPSBw
aXhlbFtpICsgMV07CisgICAgYXV0byBiID0gcGl4ZWxbaSArIDJdOworICAgIGF1dG8gYSA9IHBp
eGVsW2kgKyAzXTsKKworICAgIGlmICghYSkKKyAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwgMCB9
OworICAgIHJldHVybiB7IHIgKiAyNTUgLyBhLCBnICogMjU1IC8gYSwgYiAqIDI1NSAvIGEsIGEg
fTsKK30KKworLy8gRG9jdW1lbnRzCisKK1JlZjxUZXN0UERGRG9jdW1lbnQ+IFRlc3RQREZEb2N1
bWVudDo6Y3JlYXRlRnJvbURhdGEoTlNEYXRhICpkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRlc3RQREZEb2N1bWVudChkYXRhKSk7Cit9CisKK1Rlc3RQREZEb2N1bWVudDo6VGVz
dFBERkRvY3VtZW50KE5TRGF0YSAqZGF0YSkKKyAgICA6IG1fZG9jdW1lbnQoYWRvcHROUyhbW1BE
RkRvY3VtZW50IGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YV0pKQorICAgICwgbV9wYWdlcyhwYWdl
Q291bnQoKSkKK3sKK30KKworc2l6ZV90IFRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50XTsKK30KKworVGVzdFBERlBh
Z2UqIFRlc3RQREZEb2N1bWVudDo6cGFnZShzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4
ID49IHBhZ2VDb3VudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1fcGFn
ZXNbaW5kZXhdKQorICAgICAgICBtX3BhZ2VzW2luZGV4XSA9IFRlc3RQREZQYWdlOjpjcmVhdGUo
W21fZG9jdW1lbnQgcGFnZUF0SW5kZXg6aW5kZXhdKTsKKyAgICByZXR1cm4gbV9wYWdlc1tpbmRl
eF0uZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378330</attachid>
            <date>2019-09-08 11:29:32 -0700</date>
            <delta_ts>2019-09-08 11:51:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190908112932.patch</filename>
            <type>text/plain</type>
            <size>65930</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uOTQ4ZGYyMzdlMjBmNzBlMzJiYzhhODgwMGNmMDM0
M2IyYjEwMzQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwb3N0TWVzc2FnZSBi
dWZmZXJpbmcgYmV0d2VlbiB0aGUgc2VydmljZSB3b3JrZXIgYW5kIHdpbmRvdwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAzYjYxOTk4YzU4ZWNlYWQ3ZWNmZTAwNDYxYzliYmEwN2Q4NjA2MzFjLi45ZmQ1ODU2OGQ2ZWI5
OTM5NzgyZGY1ODFkOWM4MzEyOTkxZGMxYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisy
MDE5LTA5LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHJlZmFjdG9yaW5nIGEgY29tYmluYXRpb24gb2Yg
InNuYXBzaG90Rmlyc3RQYWdlIiBQREYgcHJpbnRpbmcgY29kZSBhbmQgdGhlCisgICAgICAgICJ0
YWtlU25hcHNob3QiIEFQSSBjb2RlIHRvIGNhcHR1cmUgdGhlIG9uLXNjcmVlbiB2aXNpYmxlIHBh
Z2UgdG8gYSBQREYgYXQgZnVsbCBmaWRlbGl0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1Rv
UERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJh
Y2spOiBNb3ZlIHRvIGNyb3NzIHBsYXRmb3JtIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGRmU25hcHNob3RBdFNpemUpOiBJbnN0ZWFkIG9mIGFzc3VtaW5nIDEgcGFnZSBjYXBwZWQgYXQg
MjAwIGluY2hlcywKKyAgICAgICAgICBwYWdpbmF0ZSBldmVyeSAyMDAgaW5jaGVzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTktMDktMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXdyaXRlIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXItcHJpdmF0ZS1icm93c2luZy5odHRwcy5odG1sIGFzIGFuIEFQSSB0ZXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKaW5kZXggYTM1NjE1MWY3ZTJjZmYxYWJkN2FmNjhlMTIzZjlhMTdjZWMx
YzcxMS4uZWFmODllMzI4M2Q1ZmI3NWI5OGQ3NjgwOWQ0N2JjNTE4MGNhN2Y4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDExMyw5ICs0MTEzLDEyIEBAIHZvaWQgRnJhbWVWaWV3
OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoV2FybmluZ0NvbG9yID0gZmFsc2U7IC8vIEVsZW1l
bnQgaW1hZ2VzIGFyZSB0cmFuc3BhcmVudCwgZG9uJ3QgZmlsbCB3aXRoIHJlZC4KICAgICBlbHNl
CiAgICAgICAgIGZpbGxXaXRoV2FybmluZ0NvbG9yID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoZmls
bFdpdGhXYXJuaW5nQ29sb3IpCi0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0LCBD
b2xvcigyNTUsIDY0LCAyNTUpKTsKKworICAgIGlmIChmaWxsV2l0aFdhcm5pbmdDb2xvcikgewor
ICAgICAgICBJbnRSZWN0IGRlYnVnUmVjdCA9IGZyYW1lUmVjdCgpOworICAgICAgICBkZWJ1Z1Jl
Y3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGVidWdS
ZWN0LCBDb2xvcigyNTUsIDY0LCAyNTUpKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggZWUyNzM4ZjQyMTBjNjkyYzM1YjkyYThkZTg5YWZkYTI3MGJkOGIyMC4uYzBjYmQxZjZlYjc3
MGIzODg2NGE1NWM0OGEzMWYyYzM3YjY0ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTYz
NSw2ICsxNjM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lc0ZvclRleHQoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywKIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiBsaW5rLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KQogeworICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNTQ5MDAxMzM+IFBERiBl
eHBvcnRpbmcgb24gaU9TIHNob3VsZCBpbmNsdWRlIFVSTCByZWN0cwogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCmluZGV4IDJlM2MwMjNkNWE4YjVjMTVh
ZDljMTVkOWRhMDhjZmE0NWI4OGI1M2IuLjFmMTU2MzVmYmYzYWY5MDhlYzU3NjQ5MGQxNWViNGEx
NDE1OWMwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaApAQCAtNjcsNiAr
NjcsNyBAQCBlbnVtIGNsYXNzIFBhaW50QmVoYXZpb3IgOiB1aW50MTZfdCB7CiAgICAgRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzICAgID0gMSA8PCA5LCAvLyBQYWludCBkb2Vzbid0IHN0b3AgYXQg
Y29tcG9zaXRpbmcgbGF5ZXIgYm91bmRhcmllcy4KICAgICBTbmFwc2hvdHRpbmcgICAgICAgICAg
ICAgICAgPSAxIDw8IDEwLAogICAgIFRpbGVGaXJzdFBhaW50ICAgICAgICAgICAgICA9IDEgPDwg
MTEsCisgICAgQW5ub3RhdGVMaW5rcyAgICAgICAgICAgICAgID0gMSA8PCAxMiwKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAppbmRleCAyZDA2MmI1ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4w
MzU3NDEzYWE4ODY1YTk3ZDQ0ZTcxYjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OnVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5l
QXV0bykKIAogYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3Vt
ZW50KCkucHJpbnRpbmcoKTsKKyAgICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNM
aW5rKCkgJiYgKGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBh
aW50QmVoYXZpb3IoKSAmIFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9v
bCBSZW5kZXJFbGVtZW50OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5
N2NlOGVlZmYwYWI2NzczYTA2ZjRjNzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2
ZWM1ODUwYWQ3OTY5ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTUwMzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJ
bnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBs
ZXRpbwogICAgIH0pOwogfQogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJh
dGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYg
KGF1dG8gbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0g
bWFpbkZyYW1lLT5mcmFtZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJl
Y3Q7CisgICAgaWYgKHNuYXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBz
aG90Q29uZmlndXJhdGlvbi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6Rmxv
YXRSZWN0KHNuYXBzaG90Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihm
cmFtZUlELCBmbG9hdFJlY3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRs
ZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEs
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3Ig
IT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5k
bGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6
ZSgpKSk7CisgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAg
fSk7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0Zp
cnN0UmVzcG9uZGVyQ2hhbmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXgg
YmQ1ZWI3ZmM1MjYzMDA3ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3Njlh
NGVjNDA5ZDkyZjMxMDM0NTliOWZiY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAg
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9y
ZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0
ICopdGV4dElucHV0RWxlbWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjoo
V0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJv
cikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdF
VF9PU19XQVRDSApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZmE3NTg4MWJlNmQyMmY3M2YyNmUzNjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZk
MTA1MGQyMGE0N2JhMzE1ZWExYWFmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC03NzUwLDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRy
YXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8m
IHAKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJl
Y3Q+JiByZWN0LCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNr
KQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJ
UEM6OkRhdGFSZWZlcmVuY2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3VG9QREYoZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAg
IGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxs
YmFja0lEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKKwogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2Nh
cmRhYmxlU3RhdGUoKQogewogICAgIEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQw
NmI5YzkzN2ZlMjIzODExZmE1Zi4uNmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYz
NjE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSAr
MzYwLDEwIEBAIHN0cnVjdCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2Fs
bGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91
YmxlLCB1aW50NjRfdD4gTm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5
ICsxMTcxLDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdS
ZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4m
Jik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJ
bmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYm
KTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tG
dW5jdGlvbiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHVpbnQzMl90IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2Fs
bGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAj
ZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5n
KFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxi
YWNrPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA5M2QzNDE0MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4x
MzQ0YTUxNDdiOTI0NDEzMmY3NWNjZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2
LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRp
Y0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2Fy
eSh1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3Jt
YXRpb25Gb3JQb3RlbnRpYWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVuZGVyUmVjdCwgYm9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVt
U2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFj
ayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgU2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4gc2VsZWN0aW9uUmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNl
bmRpZgogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0
YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBN
YWNoU2VuZFJpZ2h0Q2FsbGJhY2soTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3Rp
dmUsIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUs
IGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVu
dGlmaWVyLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0
ZDAwZTIzNzY0OWMwNGQyMmQ0ZTQyMDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdi
ZWNiNGM3ODBhM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQpAQCAtNzIwLDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAg
V2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2Fs
ZUZhY3RvciA9IDE7CiAgICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3Jt
YXR0ZXIuc25hcHNob3RGaXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBl
eHBvcnRpbmcgUERGcyB0YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hv
dEZpcnN0UGFnZSkgewogICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVp
Z2h0ID0gMjAwICogNzI7IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBp
cyAyMDAgaW5jaGVzCiAgICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCAwZDhkOGZkYmYxYTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNj
MTAzZjRkNWE5YWMxODZkOWVkN2VlZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50
MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZy
YW1lSWRlbnRpZmllciBmcmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBk
ZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxEcmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUocGRmRGF0YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNh
dGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURp
ZENoYW5nZShjb250ZW50U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmlu
ZGV4IDg1YTQzYjU0NzljMTU5ZTQwZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZh
M2I5Njg1ODMyN2JmMDI3N2U1NDVhMjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsy
MzIsNTggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRl
ckNvbW1pdHRpbmdMb2FkKCkKICAgICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1
bWVudCgpOwogICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQ
bHVnaW46ZG9jdW1lbnQgPyBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwog
fQotICAgIAorCitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6
ZShJbnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlv
bnMpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRh
dGFDb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEu
Z2V0KCkpKTsKKyAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXpl
LndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFk
b3B0Q0YoQ0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBu
dWxscHRyKSk7CisKKyAgICBpbnQ2NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVp
Z2h0KCk7CisgICAgaW50NjRfdCBuZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVt
YWluaW5nSGVpZ2h0ID4gMCkgeworICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWln
aHQgbGltaXQgb2YgMjAwIGluY2hlcyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0
IG9uZSBQREYgcGFnZSBhdCBhIHRpbWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAg
ICAgYml0bWFwU2l6ZS5zZXRIZWlnaHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdl
SGVpZ2h0KSk7CisgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOwor
ICAgICAgICByZWN0LnNldFkobmV4dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3gg
PSBDR1JlY3RNYWtlKDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQo
KSk7CisgICAgICAgIGF1dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVM
TCwgKGNvbnN0IFVJbnQ4ICopJm1lZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBh
dXRvIGRpY3Rpb25hcnkgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJp
bmcgKilrQ0dQREZDb250ZXh0TWVkaWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgp
CisgICAgICAgIH07CisKKyAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQu
Z2V0KCksIGRpY3Rpb25hcnkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHQgeyBwZGZDb250ZXh0LmdldCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2Fs
ZSh7IDEsIC0xIH0pOworICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRt
YXBTaXplLmhlaWdodCgpKTsKKworICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJp
dG1hcFNpemUsIG9wdGlvbnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4
dCk7CisKKyAgICAgICAgQ0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKwor
ICAgICAgICBuZXh0UmVjdFkgKz0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWlu
aW5nSGVpZ2h0IC09IG1heFBhZ2VIZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xv
c2UocGRmQ29udGV4dC5nZXQoKSk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUy
MWJlMTQ4YTRjN2Q2Yjk3MjY2MTcwNC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4
ODRiODU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTIzMDYsNyArMjMwNiw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVk
U25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1
cm4gc25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRp
YyB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwg
RnJhbWVWaWV3JiBmcmFtZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQor
dm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYg
ZnJhbWUsIEZyYW1lVmlldyYgZnJhbWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCkKIHsKICAgICBJbnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9y
aXpvbnRhbFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgo
KSkgLyByZWN0LndpZHRoKCk7CkBAIC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdl
PiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiBiaXQKICAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykK
LXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAg
IGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gY29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAg
ICBhdXRvIGRhdGFDb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEuZ2V0KCkpKTsKLSAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBi
aXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29u
dGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1l
ZGlhQm94LCBudWxscHRyKSk7Ci0KLSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4
dC5nZXQoKSwgbnVsbHB0cik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0
IHsgcGRmQ29udGV4dC5nZXQoKSB9OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0x
IH0pOwotICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0
KCkpOwotICAgIHBhaW50U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywg
KmNvcmVGcmFtZSwgKmZyYW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29u
dGV4dEVuZFBhZ2UocGRmQ29udGV4dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRm
Q29udGV4dC5nZXQoKSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0K
IFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5v
ZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAt
NDc0OSw2ICs0NzE2LDM0IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJ
bXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit7CisgICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygp
OworICAgIEludFNpemUgc25hcHNob3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFw
c2hvdFNpemUgPSBJbnRTaXplKHJlY3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFw
c2hvdFNpemUgPSB7IGZyYW1lVmlldy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBz
bmFwc2hvdFJlY3Q7CisgICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhp
bnQpcmVjdC0+eCgpLCAoaW50KXJlY3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UK
KyAgICAgICAgc25hcHNob3RSZWN0ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAg
YXV0byBvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0
T3ZlcnJpZGVSZWN0KExheW91dFJlY3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5h
bFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6
OkFubm90YXRlTGlua3MpOworCisgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUo
c25hcHNob3RSZWN0LCBzbmFwc2hvdFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qp
OworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7
CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQ
Qzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFn
ZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgaW1hZ2VTaXplLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJk
YTExYWEwNThlZDVjYWUxN2FhMmQxMjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUz
OWZjYjQ2NjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtODgxLDYgKzg4MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJ
bmZvJiwgQ2FsbGJhY2tJRCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJh
d1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PiYsIENhbGxiYWNrSUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQg
ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmlu
dEluZm8mLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYw
Nyw4IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdl
YkNvcmU6Ok5vZGUmLCBTbmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0
aW9ucyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRm
U25hcHNob3RBdFNpemUoV2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBT
aXplLCBTbmFwc2hvdE9wdGlvbnMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQpAQCAtMTYyMSw2ICsxNjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRl
TW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9p
ZCBwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgU25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6
OkZyYW1lVmlldyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlBhZ2U+IG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcy
YjY2OTUwNDg5Y2FlMzcuLmFlZTcwNmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMzg4LDYgKzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1
aW50MzJfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gcmVjdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDBhNjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjVi
ZDUuLjM1MzUyZTgzMDBiNzIyNmRjMDEwZjRmOTk1ZjJiN2FkYTA1ODQ2ZDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAor
MjAxOS0wOS0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIFNQSSB0byBzYXZlIGEgUERGIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3Lgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLUFkZCBhbiAiRXhwb3J0IHRvIFBERi4uLiIgbWVudSBvcHRp
b24gdG8gTWluaUJyb3dzZXIuCisgICAgICAgIC1BZGQgQVBJIHRlc3RzIGZvciB0aGUgQVBJIGl0
c2VsZi4KKworICAgICAgICAqIE1pbmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50czoK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAg
ICAgKC1bQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZm9yY2VSZXBhaW50Ol0pOgorICAgICAgICAo
LVtCcm93c2VyV2luZG93Q29udHJvbGxlciBzYXZlQXNQREY6XSk6CisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL01haW5NZW51LnhpYjoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0sxQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgdmFsaWRhdGVNZW51SXRlbTpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgdmFsaWRhdGVNZW51SXRlbTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmVxdWFsVXNpbmdSR0JBKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRv
Y3VtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRv
Y3VtZW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRvQ0dSZWN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnRvUGxhdGZvcm1Qb2ludCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6VGVzdFBERkFubm90YXRpb24pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OmlzTGluayBjb25zdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6Ym91bmRzIGNvbnN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpsaW5rVVJMIGNvbnN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjcmVhdGUpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OlRlc3RQREZQYWdlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RQREZQYWdlOjphbm5vdGF0aW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGUGFnZTo6Y2hhcmFjdGVyQ291bnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdFBERlBhZ2U6OnRleHQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERlBhZ2U6OnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQgY29uc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmJvdW5kcyBjb25zdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50IGNvbnN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpUZXN0UERGRG9jdW1lbnQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpwYWdlQ291bnQgY29u
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpwYWdlKToKKwog
MjAxOS0wOS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
d3JpdGUgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlci1wcml2YXRlLWJy
b3dzaW5nLmh0dHBzLmh0bWwgYXMgYW4gQVBJIHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cyBiL1Rvb2xzL01pbmlCcm93c2VyL01pbmlC
cm93c2VyLmVudGl0bGVtZW50cwppbmRleCBjOWVhMzc2NDY4YTY0OTk3NmM5YWUzOGYyOTlhMzI1
ZGNiNGRhZGI5Li5lNGMyYmExODBmMzk1ZGNhMWQzNDFkYjY2NmQ1YzM0YzJlYTNlYzJlIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCkBAIC0yLDIwICsyLDIw
IEBACiA8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4i
ICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlz
dCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNh
bmRib3g8L2tleT4KKwk8dHJ1ZS8+CiAJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZGV2aWNlLnVz
Yjwva2V5PgogCTx0cnVlLz4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNl
bGVjdGVkLnJlYWQtb25seTwva2V5PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZpbGVzLnVz
ZXItc2VsZWN0ZWQucmVhZC13cml0ZTwva2V5PgorCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5z
ZWN1cml0eS5uZXR3b3JrLmNsaWVudDwva2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5z
ZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLmZpbGVzLmFic29sdXRlLXBhdGgucmVhZC1vbmx5
PC9rZXk+CisJPHN0cmluZz4vPC9zdHJpbmc+CiAJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVt
cG9yYXJ5LWV4Y2VwdGlvbi5tYWNoLWxvb2t1cC5nbG9iYWwtbmFtZTwva2V5PgogCTxhcnJheT4K
IAkJPHN0cmluZz5jb20uYXBwbGUuU2FmYXJpLlNhZmVCcm93c2luZy5TZXJ2aWNlPC9zdHJpbmc+
CiAJCTxzdHJpbmc+Y29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nRGFlbW9uPC9zdHJpbmc+CiAJ
PC9hcnJheT4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5hcHAtc2FuZGJveDwva2V5PgotCTx0
cnVlLz4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5uZXR3b3JrLmNsaWVudDwva2V5PgotCTx0
cnVlLz4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLmZpbGVz
LmFic29sdXRlLXBhdGgucmVhZC1vbmx5PC9rZXk+Ci0JPHN0cmluZz4vPC9zdHJpbmc+CiA8L2Rp
Y3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIuaAppbmRleCBjNWI5ZDU0YTUyMjA0MjYzNmI3ODgyNTc1NjQ0ZTNhMDI0YTVkOTQ2
Li5kZmRiNjQwMTNmMDE2YmQwYmRhNTIwYTVlZThkMDhjMzI5NWJmZGRjIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaApAQCAtNDYsNiArNDYs
OCBAQCBAaW50ZXJmYWNlIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9s
bGVyIHsKIAogLSAoSUJBY3Rpb24pb3BlbkxvY2F0aW9uOihpZClzZW5kZXI7CiAKKy0gKElCQWN0
aW9uKXNhdmVBc1BERjooaWQpc2VuZGVyOworCiAtIChJQkFjdGlvbilmZXRjaDooaWQpc2VuZGVy
OwogLSAoSUJBY3Rpb24pc2hhcmU6KGlkKXNlbmRlcjsKIC0gKElCQWN0aW9uKXJlbG9hZDooaWQp
c2VuZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubQppbmRleCA0Yjk5MDU3YTAzY2UwNjYwNGIyZDMxNTA3NmMwYzRhMTZlMDQ0ODJmLi40ZDQ1
NzM5NmYwNjU0ZTBmOWVlODM0ZjkxNGQxZGRhMDI5ZmU2Zjk3IDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtOTMsNiArOTMsMTEgQEAg
LSAoSUJBY3Rpb24pZm9yY2VSZXBhaW50OihpZClzZW5kZXIKICAgICBbc2VsZiBkb2VzTm90UmVj
b2duaXplU2VsZWN0b3I6X2NtZF07CiB9CiAKKy0gKElCQWN0aW9uKXNhdmVBc1BERjooaWQpc2Vu
ZGVyCit7CisgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOworfQorCiAt
IChJQkFjdGlvbilnb0JhY2s6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25p
emVTZWxlY3RvcjpfY21kXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWlu
TWVudS54aWIgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCmluZGV4IDU0NmE2
MGYwMzJlNzJlNDJiNmE2YzM2YzQ5OGUyOGYxMzMyMzc1YjMuLjA3MTYzNDZjNTI5N2MzNjAwYzQ4
YjdjZjA0YzQzMTI4ZGU2YmYyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9N
YWluTWVudS54aWIKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgpAQCAt
MSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZG9j
dW1lbnQgdHlwZT0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIzLkNvY29hLlhJQiIgdmVyc2lv
bj0iMy4wIiB0b29sc1ZlcnNpb249IjEzNzcxIiB0YXJnZXRSdW50aW1lPSJNYWNPU1guQ29jb2Ei
IHByb3BlcnR5QWNjZXNzQ29udHJvbD0ibm9uZSI+Cis8ZG9jdW1lbnQgdHlwZT0iY29tLmFwcGxl
LkludGVyZmFjZUJ1aWxkZXIzLkNvY29hLlhJQiIgdmVyc2lvbj0iMy4wIiB0b29sc1ZlcnNpb249
IjE0NDkwLjcwIiB0YXJnZXRSdW50aW1lPSJNYWNPU1guQ29jb2EiIHByb3BlcnR5QWNjZXNzQ29u
dHJvbD0ibm9uZSI+CiAgICAgPGRlcGVuZGVuY2llcz4KLSAgICAgICAgPHBsdWdJbiBpZGVudGlm
aWVyPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbiIgdmVyc2lvbj0iMTM3
NzEiLz4KKyAgICAgICAgPHBsdWdJbiBpZGVudGlmaWVyPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVp
bGRlci5Db2NvYVBsdWdpbiIgdmVyc2lvbj0iMTQ0OTAuNzAiLz4KICAgICA8L2RlcGVuZGVuY2ll
cz4KICAgICA8b2JqZWN0cz4KICAgICAgICAgPGN1c3RvbU9iamVjdCBpZD0iLTIiIHVzZXJMYWJl
bD0iRmlsZSdzIE93bmVyIiBjdXN0b21DbGFzcz0iTlNBcHBsaWNhdGlvbiI+CkBAIC0xMzMsNiAr
MTMzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNl
bGVjdG9yPSJzYXZlRG9jdW1lbnRBczoiIHRhcmdldD0iLTEiIGlkPSIzNjMiLz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25uZWN0aW9ucz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L21lbnVJdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51
SXRlbSB0aXRsZT0iU2F2ZSBBcyBQREbigKYiIGtleUVxdWl2YWxlbnQ9IlMiIGlkPSJnbVMtM1Et
b0xzIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGlmaWVyTWFzayBrZXk9
ImtleUVxdWl2YWxlbnRNb2RpZmllck1hc2siIG9wdGlvbj0iWUVTIiBjb21tYW5kPSJZRVMiLz4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbm5lY3Rpb25zPgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0ic2F2ZUFzUERGOiIg
dGFyZ2V0PSItMSIgaWQ9IjI1VC1JZC0zMzQiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPC9jb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21lbnVJ
dGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51SXRlbSB0aXRsZT0iUmV2ZXJ0
IHRvIFNhdmVkIiBpZD0iMTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1v
ZGlmaWVyTWFzayBrZXk9ImtleUVxdWl2YWxlbnRNb2RpZmllck1hc2siLz4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGNvbm5lY3Rpb25zPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA3ZWQ2YzNkMmY5MDY5
MzczNzY1NDczMWM3MzRiODEzOGIxNTJmZTYzLi42ZDY2YmZiMGE1ZjM5Yzk4ZDI5Mjc3YTZjNmFj
ZWQ5MzgwZGQyY2I2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMTM0LDYgKzEzNCw5IEBAIC0gKEJPT0wpdmFsaWRhdGVN
ZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IFttZW51
SXRlbSBhY3Rpb25dOwogCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2F2ZUFzUERGOikp
CisgICAgICAgIHJldHVybiBOTzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21J
bjopKQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09
IEBzZWxlY3Rvcih6b29tT3V0OikpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IGY3OGRiZGZmMDJmZWQ5NmMyODUxOTIxZDM0
ZGM0YTIyZjQzYTJlNWYuLmNmNGQzYWYxNzgxYTIwNGM0ZGQ5ZmJlYzA2Y2U4NTNkMmY3MjAzZDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCkBAIC0yMDcsNiArMjA3LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01l
bnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0aW9uID0gbWVudUl0ZW0uYWN0aW9uOwog
CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2F2ZUFzUERGOikpCisgICAgICAgIHJldHVy
biBZRVM7CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAgICAgICAg
cmV0dXJuIFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9v
bU91dDopKQpAQCAtODE0LDQgKzgxNywxNyBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGluY2x1ZGVTZW5zaXRpdmVNZWRpYURldmljZURldGFpbHM6KHZvaWQgKAogICAg
IGRlY2lzaW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKKy0gKElCQWN0aW9uKXNhdmVBc1BERjooaWQp
c2VuZGVyCit7CisgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05TU2F2ZVBhbmVsIHNhdmVQYW5l
bF07CisgICAgcGFuZWwuYWxsb3dlZEZpbGVUeXBlcyA9IEBbIEAicGRmIiBdOworICAgIFtwYW5l
bCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6
XihOU0ludGVnZXIgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3Bv
bnNlT0spIHsKKyAgICAgICAgICAgIFtfd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZp
Z3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0
ZVRvVVJMOltwYW5lbCBVUkxdIG9wdGlvbnM6MCBlcnJvcjpuaWxdOworICAgICAgICAgICAgfV07
CisgICAgICAgIH0KKyAgICB9XTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNj
b25maWcKaW5kZXggMmRlNjFmNzk1NGI1MDg5NTMwOWE4YzRhNjhmMTI1ZDQ3YWE4MDQ5ZC4uNDRl
MWM1YTJhZTNkNTM4ODBmYmM0MTRmMGEyZjYwYjFjYmNkY2EzMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZp
ZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElM
aWJyYXJ5LnhjY29uZmlnCkBAIC0yOCwzICsyOCw1IEBACiBQUk9EVUNUX05BTUUgPSBUZXN0V2Vi
S2l0QVBJOwogU0tJUF9JTlNUQUxMID0gWUVTOwogR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4g
PSBZRVM7CisKK1NZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChTREtST09UKSQoU1lT
VEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyAkKFNES1JPT1QpJChTWVNURU1fTElC
UkFSWV9ESVIpL0ZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFt
ZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKGluaGVyaXRlZCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggZTJmYjY5MDI0YmIxNDllMDE1ODg2
NTYwZmU0YjQzOGM2NTliNTEzOS4uNGQ5YjRkNzQzMjBmNTBlMmY1MTQxYTMzN2QyNDBlNDMzMDk3
YWRlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMzMsOCAr
MzMsOSBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQotT0JKQ19D
TEFTUyBOU1N0cmluZzsKK09CSkNfQ0xBU1MgTlNDb2xvcjsKIE9CSkNfQ0xBU1MgTlNEaWN0aW9u
YXJ5OworT0JKQ19DTEFTUyBOU1N0cmluZzsKICNlbmRpZgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiMTFkZGU1MjViMmViYjQ2NDgxOWI2
MDM2YmIxNDVjNWEzNDI5ODQuLjI5OTZiOThjMzFmNzk2MDE2YzVmNmNhM2Y2OTY4OGQxNmQ1MTM5
MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOSwxOSArMjksNiBAQAogCQkJbmFtZSA9
ICJHZW5lcmF0ZSBVbmlmaWVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSBBbGw7CiAJCX07
Ci0JCTdDODNFMDJCMUQwQTVFMTAwMEZFQkNGMyAvKiBBbGwgKi8gPSB7Ci0JCQlpc2EgPSBQQlhB
Z2dyZWdhdGVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M4M0UwMkMxRDBB
NUUxMDAwRkVCQ0YzIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRl
VGFyZ2V0ICJBbGwiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJNTM3Q0Y4NDgyMkVGRDcy
MDAwQzZFQkIzIC8qIENoZWNrIC54Y2ZpbGVsaXN0cyAqLywKLQkJCSk7Ci0JCQlkZXBlbmRlbmNp
ZXMgPSAoCi0JCQkJN0M4M0UwMzAxRDBBNUUxQjAwRkVCQ0YzIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCi0JCQkJN0M4M0UwMzIxRDBBNUUxRDAwRkVCQ0YzIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9IEFsbDsKLQkJCXByb2R1Y3ROYW1lID0gQWxsOwotCQl9
OwogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCkBAIC0yNzYsNiArMjYzLDkgQEAKIAkJNTFCMUVFOTcxQzgwRkFF
RjAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxRUU5NTFDODBGQUREMDA2
NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UtMi5odG1sICovOyB9OwogCQk1MUJDRUU0RTFD
ODRGNTNCMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJDRUU0QzFDODRG
NTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLzsgfTsKIAkJNTFC
Q0VFNEYxQzg0RjUzQjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VF
NEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0yLmh0bWwgKi87IH07
CisJCTUxQkU5RjkyMjMxOUU4RDQwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RjkxMjMxOUU4QzEwMEY5
NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLzsgfTsKKwkJNTFCRTlGQTEyMzIwMjM4QTAwRjk2Q0Uy
IC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQu
bW0gKi87IH07CisJCTUxQkU5RkE3MjMyNDYyRTYwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTlG
QTUyMzI0NjJBMzAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsgKi87IH07CiAJCTUxQzY4M0RF
MUVBMTM0RTgwMDY1MDE4MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzY4M0REMUVBMTM0REIwMDY1MDE4
MyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItMS5tbSAqLzsgfTsKIAkJNTFDOEUxQTUxRjI2QUY0QzAw
QkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLzsgfTsKIAkJNTFDOEUxQTkxRjI3RjQ5NjAwQkY3MzFC
IC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3RpY3MucGxpc3QgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTgx
RjI3RjQ3MzAwQkY3MzFCIC8qIEVtcHR5R3JhbmRmYXRoZXJlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MucGxpc3QgKi87IH07CkBAIC0xMDUzLDIwICsxMDQzLDYgQEAKIAkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gN0M4M0RFOTUxRDBBNTkwQzAwRkVCQ0YzOwogCQkJcmVtb3RlSW5mbyA9IFRlc3RX
VEZMaWJyYXJ5OwogCQl9OwotCQk3QzgzRTAyRjFEMEE1RTFCMDBGRUJDRjMgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJ
Y29udGFpbmVyUG9ydGFsID0gMDhGQjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2Jq
ZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gOERE
NzZGOTYwNDg2QUE3NjAwRDk2QjVFOwotCQkJcmVtb3RlSW5mbyA9IFRlc3RXZWJLaXRBUEk7Ci0J
CX07Ci0JCTdDODNFMDMxMUQwQTVFMUQwMEZFQkNGMyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0
YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlw
cm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA3QzgzREY5NTFEMEE1QUU0
MDBGRUJDRjM7Ci0JCQlyZW1vdGVJbmZvID0gVGVzdFdURjsKLQkJfTsKIAkJN0NDRTdGNTAxQTQx
MjREQjAwNDQ3QzRDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1
NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTE3NjksNiArMTc0NSwxMSBAQAog
CQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJDRUU0QzFDODRGNTJDMDA0
MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJJbmRleGVkREJNdWx0aVByb2Nlc3MtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEQxQzg0RjUyQzAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRp
UHJvY2Vzcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCTXVs
dGlQcm9jZXNzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkU5Rjkx
MjMxOUU4QzEwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBERlNuYXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJFOUY5RDIz
MUYzNTFFMDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERG
S2l0LmZyYW1ld29yazsgcGF0aCA9IFBsYXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVy
L1NES3MvTWFjT1NYMTAuMTQuc2RrL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUERGS2l0LmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IERFVkVMT1BFUl9ESVI7IH07CisJCTUxQkU5RjlGMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0
UERGRG9jdW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBU
ZXN0UERGRG9jdW1lbnQubW07IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkU5RkEwMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0
UERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRv
Y3VtZW50Lmg7IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFCRTlGQTUyMzI0NjJBMzAwRjk2Q0UyIC8qIFBERktpdC5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9IFBERktpdC5mcmFtZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMv
aVBob25lT1MucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvaVBob25lT1MxMy4xLnNkay9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZFTE9Q
RVJfRElSOyB9OwogCQk1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5k
bGVyLTEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4RTFB
NDFGMjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQzhFMUE4MUYyN0Y0NzMwMEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVy
ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5icGxpc3Q7IHBhdGggPSBFbXB0eUdyYW5kZmF0
aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU2OCw2ICsyNTQ5LDcgQEAKIAkJCQk1Q0ZBQ0Y2MzIyNkY3M0M2MDA1NkM3RDAg
LyogbGliYm9yaW5nc3NsLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3QzgzRTAzRjFEMEE2MUEw
MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAogCQkJCTU3OENC
RDY3MjA0RkIyQzgwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAorCQkJCTUxQkU5RkE3MjMyNDYyRTYwMEY5NkNFMiAvKiBQREZLaXQuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0EwMTBCQ0QxRDg3N0MwRDAwRURFNzJBIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTc0RjU1RDIyMDRE
NDdGMDAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJ
KTsKQEAgLTI2NjUsNiArMjY0Nyw4IEBACiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8q
IFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4
MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIw
MDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAorCQkJCTUxQkU5RkEwMjMy
MDIzOEEwMEY5NkNFMiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywKKwkJCQk1MUJFOUY5RjIzMjAy
MzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50Lm1tICovLAogCQkJCUExNEZDNThEMUI4QUUz
NjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wuaCAqLywKIAkJCQlBMTRGQzU4RTFCOEFFMzY1MDBE
MTA3RUIgLyogVGVzdFByb3RvY29sLm1tICovLAogCQkJCTJFRkYwNkQyMUQ4QUVEQkIwMDA0QkIz
MCAvKiBUZXN0V0tXZWJWaWV3LmggKi8sCkBAIC0yODI2LDYgKzI4MTAsNyBAQAogCQkJCTlCREQ5
NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi8sCiAJCQkJOUIyMzQ2NDExRjk0
M0EyNDAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk1MUQ4QzE4RjIyNjdC
MjY3MDA3OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tICovLAorCQkJCTUxQkU5RjkxMjMxOUU4
QzEwMEY5NkNFMiAvKiBQREZTbmFwc2hvdC5tbSAqLywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3
NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tICovLAogCQkJCTgzQkFFRThDMUVG
NDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1
NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLApAQCAtMzA5NCw2ICsz
MDc5LDggQEAKIAkJCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RT
dXBwb3J0LmR5bGliICovLAogCQkJCTdDODNFMDI5MUQwQTVDREYwMEZFQkNGMyAvKiBsaWJXVEYu
YSAqLywKIAkJCQk1NzhDQkQ2NjIwNEZCMkM3MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlv
bi5mcmFtZXdvcmsgKi8sCisJCQkJNTFCRTlGQTUyMzI0NjJBMzAwRjk2Q0UyIC8qIFBERktpdC5m
cmFtZXdvcmsgKi8sCisJCQkJNTFCRTlGOUQyMzFGMzUxRTAwRjk2Q0UyIC8qIFBERktpdC5mcmFt
ZXdvcmsgKi8sCiAJCQkJN0EwMTBCQ0MxRDg3N0MwRDAwRURFNzJBIC8qIFF1YXJ0ekNvcmUuZnJh
bWV3b3JrICovLAogCQkJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFt
ZXdvcmsgKi8sCiAJCQkpOwpAQCAtNDE0MSwxMCArNDEyOCw2IEBACiAJCQkJCTUzN0NGODQzMjJF
RkQ2NDEwMEM2RUJCMyA9IHsKIAkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDExLjA7CiAJ
CQkJCX07Ci0JCQkJCTdDODNFMDJCMUQwQTVFMTAwMEZFQkNGMyA9IHsKLQkJCQkJCUNyZWF0ZWRP
blRvb2xzVmVyc2lvbiA9IDguMDsKLQkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0gQXV0b21hdGlj
OwotCQkJCQl9OwogCQkJCQk3Q0NFN0U4QjFBNDExNDRFMDA0NDdDNEMgPSB7CiAJCQkJCQlDcmVh
dGVkT25Ub29sc1ZlcnNpb24gPSA2LjM7CiAJCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IE1hbnVh
bDsKQEAgLTQxNzIsNyArNDE1NSw2IEBACiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwogCQkJcHJv
amVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCi0JCQkJN0M4M0UwMkIxRDBBNUUxMDAwRkVC
Q0YzIC8qIEFsbCAqLywKIAkJCQk1QzlEOTIxNDIyRDdEQTAyMDA4RTkyNjYgLyogR2VuZXJhdGUg
VW5pZmllZCBTb3VyY2VzICovLAogCQkJCTdDQ0U3RThCMUE0MTE0NEUwMDQ0N0M0QyAvKiBUZXN0
V2ViS2l0QVBJTGlicmFyeSAqLywKIAkJCQk3QzgzREU5NTFEMEE1OTBDMDBGRUJDRjMgLyogVGVz
dFdURkxpYnJhcnkgKi8sCkBAIC00MjEzLDI0ICs0MTk1LDYgQEAKIAkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJldmFsIFwiJHtXS19TVUJMQVVOQ0hfU0NSSVBUX1BB
UkFNRVRFUlNbQF19XCJcbiI7CiAJCX07Ci0JCTUzN0NGODQ4MjJFRkQ3MjAwMEM2RUJCMyAvKiBD
aGVjayAueGNmaWxlbGlzdHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkp
OwotCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAotCQkJKTsKLQkJCWlucHV0UGF0aHMgPSAoCi0J
CQkpOwotCQkJbmFtZSA9ICJDaGVjayAueGNmaWxlbGlzdHMiOwotCQkJb3V0cHV0RmlsZUxpc3RQ
YXRocyA9ICgKLQkJCSk7Ci0JCQlvdXRwdXRQYXRocyA9ICgKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0J
CQlzaGVsbFNjcmlwdCA9ICJTY3JpcHRzL2NoZWNrLXhjZmlsZWxpc3RzLnNoXG4iOwotCQl9Owog
CQk1QzlEOTIxQzIyRDdEQTMzMDA4RTkyNjYgLyogU2hlbGxTY3JpcHQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtNDYyNyw2ICs0NTkxLDcgQEAKIAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAg
LyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIx
RDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRDhDMTkwMjI2
N0IyNkQwMDc5N0U0MCAvKiBQREZMaW5rUmVmZXJyZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
MUJFOUY5MjIzMTlFOEQ0MDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJ
blBpY3R1cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYw
MDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDcy
NCw2ICs0Njg5LDcgQEAKIAkJCQlGNEY1QkI1MjIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRP
cHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8q
IFRlc3RJbnB1dERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1RDM4OTEyMTVBN0I0
QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUJF
OUZBMTIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTc3NEFBNjgyMUZCQkY3ODAwQUYyQTFCIC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNENENzRDOTIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNj
aGVtZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3
MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTQ5NTks
MTYgKzQ5MjUsNiBAQAogCQkJdGFyZ2V0ID0gN0M4M0RFOTUxRDBBNTkwQzAwRkVCQ0YzIC8qIFRl
c3RXVEZMaWJyYXJ5ICovOwogCQkJdGFyZ2V0UHJveHkgPSA3QzgzRTAyNDFEMEE1QjI1MDBGRUJD
RjMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OwotCQk3QzgzRTAzMDFEMEE1RTFC
MDBGRUJDRjMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSA4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUgLyogVGVz
dFdlYktpdEFQSSAqLzsKLQkJCXRhcmdldFByb3h5ID0gN0M4M0UwMkYxRDBBNUUxQjAwRkVCQ0Yz
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJN0M4M0UwMzIxRDBBNUUxRDAw
RkVCQ0YzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXRE
ZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gN0M4M0RGOTUxRDBBNUFFNDAwRkVCQ0YzIC8qIFRlc3RX
VEYgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDdDODNFMDMxMUQwQTVFMUQwMEZFQkNGMyAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07CiAJCTdDQ0U3RjUxMUE0MTI0REIwMDQ0N0M0QyAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKIAkJCXRhcmdldCA9IDdDQ0U3RThCMUE0MTE0NEUwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJ
TGlicmFyeSAqLzsKQEAgLTQ5OTEsNiArNDk0NywxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRD
RjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5o
ZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHou
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1l
ID0gRGVidWc7CiAJCX07CkBAIC00OTk4LDYgKzQ5NTgsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4MDEy
NTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdlYktpdEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIk
KGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVh
cnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJ
bmFtZSA9IFJlbGVhc2U7CiAJCX07CkBAIC01MDc1LDI0ICs1MDM5LDE0IEBACiAJCQl9OwogCQkJ
bmFtZSA9IFJlbGVhc2U7CiAJCX07Ci0JCTdDODNFMDJEMUQwQTVFMTAwMEZFQkNGMyAvKiBEZWJ1
ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotCQkJfTsKLQkJCW5h
bWUgPSBEZWJ1ZzsKLQkJfTsKLQkJN0M4M0UwMkUxRDBBNUUxMDAwRkVCQ0YzIC8qIFJlbGVhc2Ug
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3Mg
PSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCX07Ci0JCQluYW1l
ID0gUmVsZWFzZTsKLQkJfTsKIAkJN0NDRTdFOUQxQTQxMTQ0RTAwNDQ3QzRDIC8qIERlYnVnICov
ID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJTGli
cmFyeS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1F
V09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNU
RU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtNTEw
MCw2ICs1MDU0LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0NDRTdFQTMxQTQxMTVDQjAwNDQ3QzRDIC8qIFRlc3RX
ZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlT
WVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJ
CQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1Zl
cnNpb25zL0EvRnJhbWV3b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsK
IAkJfTsKQEAgLTUxODgsMTUgKzUxNDYsNiBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsK
LQkJN0M4M0UwMkMxRDBBNUUxMDAwRkVCQ0YzIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJN0M4M0UwMkQxRDBBNUUx
MDAwRkVCQ0YzIC8qIERlYnVnICovLAotCQkJCTdDODNFMDJFMUQwQTVFMTAwMEZFQkNGMyAvKiBS
ZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsK
LQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07CiAJCTdDQ0U3RUEx
MUE0MTE0NEUwMDQ0N0M0QyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiVGVzdFdlYktpdEFQSUxpYnJhcnkiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NWQyZWQ3Zjc5YjdiOTg2ZjUwODhkYzc5YWM4M2UzZDkwMjQwMWEzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5t
bQpAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAi
VGVzdFBERkRvY3VtZW50LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCit1
c2luZyBXZWJDb3JlOjpDb2xvcjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25h
cHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAw
PkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRh
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBz
aG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsK
KyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9O
RShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3Qo
cGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisKKyAgICAgICAg
Ly8gV2UgZXhwZWN0IHRoZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBzcGFj
ZSBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVY
UEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgRVhQRUNUX0VR
KHBhZ2UtPnRleHQoKVsxXSwgJ0gnKTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs1
XSwgJ28nKTsKKworICAgICAgICAvLyBUaGUgIkgiIGZyb20gSGVsbG8gaGFzIHRoZSByZWN0OiA4
LjAwMDAwMCA1NzQuMDAwMDAwIDExLjU1NTIwMCAxNi4wMDAwMDAKKyAgICAgICAgRVhQRUNUX0VR
KHBhZ2UtPmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50TWFrZSgxMywgNTgwKSksIDF1KTsK
KworICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9p
bnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkp
OworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGls
OjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lv
bnMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAg
IC8vIFNuYXBzaG90IGEgc3VicmVnaW9uIGNvbnRhaW5lZCBlbnRpcmVseSB3aXRoaW4gdGhlIHZp
ZXcKKyAgICBhdXRvIHNuYXBzaG90Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24g
c2V0UmVjdDpOU01ha2VSZWN0KDIwMCwgMTUwLCA0MDAsIDMwMCldOworICAgIFtzbmFwc2hvdENv
bmZpZ3VyYXRpb24gc2V0U25hcHNob3RXaWR0aDpANDAwXTsKKworICAgIFt3ZWJWaWV3IF90YWtl
UERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3VyYXRpb24uZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50
ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAg
ICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisgICAgICAgIGF1dG8g
cGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygp
LCBDR1JlY3RNYWtlKDAsIDAsIDQwMCwgMzAwKSkpOworCisgICAgICAgIC8vIFdlIGV4cGVjdCB0
aGUgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5j
aGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0s
IDMyKTsKKworICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNr
IGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFn
ZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1
NSwgMCkpOworCisgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb0ZpbGU6QCIvVm9sdW1l
cy9EYXRhL1JlYWxMaWJlcnR5SG9tZS9zdWJyZWdpb24ucGRmIiBhdG9taWNhbGx5OllFU107CisK
KyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1
bigmZGlkVGFrZVNuYXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKworICAg
IC8vIFNuYXBzaG90IGEgcmVnaW9uIGxhcmdlciB0aGFuIHRoZSB2aWV3CisgICAgW3NuYXBzaG90
Q29uZmlndXJhdGlvbiBzZXRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgMTIwMCwgMTIwMCldOworICAg
IFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0U25hcHNob3RXaWR0aDpAMTIwMF07CisKKyAgICBb
d2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1
cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
YXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNo
b3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOwor
ICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05F
KHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChw
YWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxMjAwLCAxMjAwKSkpOworCisgICAgICAg
IC8vIEEgcGl4ZWwgdGhhdCB3YXMgaW4gdGhlIHZpZXcgc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEg
cG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+
Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwg
MCkpOworCisgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91
bGQgYWxzbyBiZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBh
IHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2Ut
PmNvbG9yQXRQb2ludCg5MDAsIDcwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUs
IDApKTsKKworICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9GaWxlOkAiL1ZvbHVtZXMv
RGF0YS9SZWFsTGliZXJ0eUhvbWUvc3VicmVnaW9uLnBkZiIgYXRvbWljYWxseTpZRVNdOworCisg
ICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4o
JmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNuYXBzaG90ID0gZmFsc2U7CisKK30KKwor
VEVTVChQREZTbmFwc2hvdCwgT3ZlcjIwMEluY2hlcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRU
YWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMjk0MDApXSk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9y
PSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90
V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFw
c2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEo
cGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQo
KSwgM3UpOworCisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAg
ICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVx
dWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29s
b3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRo
ZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBj
aGFyYWN0ZXIgYmVmb3JlIHRoZSAnSCcsIGFuZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlICdvJworICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgN3UpOworCisgICAgICAgIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgxKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIp
OworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwg
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdl
LT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1
LCAwKSk7CisKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9uIHRoZSBzZWNvbmQgcGFn
ZSBpcyBhIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEocGFn
ZS0+Y2hhcmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgp
WzBdLCAzMik7CisKKyAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDIpOworICAgICAgICBF
WFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpj
cmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3Rl
ciBvbiB0aGUgdGhpcmQgcGFnZSBpcyBhIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMXUpOworICAgICAgICBFWFBF
Q1RfRVEocGFnZS0+dGV4dCgpWzBdLCAzMik7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKwor
VEVTVChQREZTbmFwc2hvdCwgTGlua3MpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBz
aG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDE1MDAwKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9XCItd2Via2l0LWxp
bmUtYm94LWNvbnRhaW46IGdseXBoc1wiPjxhIGhyZWY9XCJodHRwczovL3dlYmtpdC5vcmcvXCI+
Q2xpY2sgbWU8L2E+PC9kaXY+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0
aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hv
dERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRm
U25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwg
MnUpOworCisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBF
WFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6
OmNyZWF0ZVVuY2hlY2tlZCgyNTUsIDI1NSwgMjU1KSk7CisKKyAgICAgICAgYXV0byBhbm5vdGF0
aW9ucyA9IHBhZ2UtPmFubm90YXRpb25zKCk7CisgICAgICAgIEVYUEVDVF9FUShhbm5vdGF0aW9u
cy5zaXplKCksIDF1KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoYW5ub3RhdGlvbnNbMF0uaXNMaW5r
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShbYW5ub3RhdGlvbnNbMF0ubGlua1VSTCgpIGlzRXF1
YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dKTsKKworICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMTF1KTsKKyAgICAgICAgRVhQ
RUNUX0VRKHBhZ2UtPnRleHQoKVsxXSwgJ0MnKTsKKworICAgICAgICBhdXRvIGNSZWN0ID0gcGFn
ZS0+cmVjdEZvckNoYXJhY3RlckF0SW5kZXgoMSk7CisgICAgICAgIGF1dG8gY01pZHBvaW50ID0g
Q0dQb2ludE1ha2UoQ0dSZWN0R2V0TWlkWChjUmVjdCksIENHUmVjdEdldE1pZFkoY1JlY3QpKTsK
KyAgICAgICAgYXV0byBhbm5vdGF0aW9uQm91bmRzID0gYW5ub3RhdGlvbnNbMF0uYm91bmRzKCk7
CisKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0Q29udGFpbnNQb2ludChhbm5vdGF0aW9uQm91
bmRzLCBjTWlkcG9pbnQpKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAg
IH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNu
YXBzaG90LCBJbmxpbmVMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxhIGhyZWY9XCJodHRwczovL3dlYmtpdC5vcmcv
XCI+Q2xpY2sgbWU8L2E+Il07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENv
bmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERh
dGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25h
cHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUp
OworCisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBF
Q1RfTkUocGFnZSwgbnVsbHB0cik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZCBi
ZSBhIGxpbmsgaGVyZSwgYnV0IGR1ZSB0byB0aGUgd2F5IHdlIGdhdGhlciBsaW5rcyBmb3IgYW5u
b3RhdGlvbiB1c2luZyB0aGUgUmVuZGVySW5saW5lIHRyZWUKKyAgICAgICAgLy8gaXQgaXMgbWlz
c2VkLgorCisvLyAgICAgICAgYXV0byBhbm5vdGF0aW9ucyA9IHBhZ2UtPmFubm90YXRpb25zKCk7
CisvLyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUpOworLy8gICAgICAg
IEVYUEVDVF9UUlVFKGFubm90YXRpb25zWzBdLmlzTGluaygpKTsKKy8vICAgICAgICBFWFBFQ1Rf
VFJVRShbYW5ub3RhdGlvbnNbMF0ubGlua1VSTCgpIGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3Qg
PSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQor
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3Vt
ZW50LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgyMjEyMjM3NmM3Nzg5ODMxMjg3MmE4MGQ5YjExYWNmZGUxOGQ1ODQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8UERG
S2l0L1BERktpdC5oPgorI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK30KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisvLyBBbm5vdGF0aW9ucyBhcmVuJ3QgcmVmIGNvdW50
ZWQuIFRoZXkgcmVtYWluIHZhbGlkIGFzIGxvbmcgYXMgdGhlaXIgY29udGFpbmluZyBUZXN0UERG
UGFnZSByZW1haW5zIHZhbGlkCitjbGFzcyBUZXN0UERGQW5ub3RhdGlvbiB7CitwdWJsaWM6Cisg
ICAgVGVzdFBERkFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqKTsKKworICAgIGJvb2wgaXNMaW5r
KCkgY29uc3Q7CisgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIE5TVVJMICpsaW5rVVJM
KCkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFJldGFpblB0cjxQREZBbm5vdGF0aW9uPiBt
X2Fubm90YXRpb247Cit9OworCitjbGFzcyBUZXN0UERGUGFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRlc3RQREZQYWdlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGUGFnZT4gY3Jl
YXRlKFBERlBhZ2UgKik7CisKKyAgICBjb25zdCBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+JiBh
bm5vdGF0aW9ucygpOworICAgIHNpemVfdCBjaGFyYWN0ZXJDb3VudCgpIGNvbnN0OworICAgIFN0
cmluZyB0ZXh0KCkgY29uc3Q7CisgICAgQ0dSZWN0IHJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KHNp
emVfdCkgY29uc3Q7CisgICAgc2l6ZV90IGNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50KSBj
b25zdDsKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpDb2xvciBj
b2xvckF0UG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgVGVz
dFBERlBhZ2UoUERGUGFnZSAqKTsKKyAgICBSZXRhaW5QdHI8UERGUGFnZT4gbV9wYWdlOworICAg
IE9wdGlvbmFsPFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4+IG1fYW5ub3RhdGlvbnM7Cit9Owor
CitjbGFzcyBUZXN0UERGRG9jdW1lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXN0UERGRG9jdW1l
bnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZEb2N1bWVudD4gY3JlYXRlRnJv
bURhdGEoTlNEYXRhICopOworCisgICAgdm9pZCBkdW1wKCk7CisKKyAgICBzaXplX3QgcGFnZUNv
dW50KCkgY29uc3Q7CisgICAgVGVzdFBERlBhZ2UqIHBhZ2Uoc2l6ZV90IGluZGV4KTsKKworcHJp
dmF0ZToKKyAgICBUZXN0UERGRG9jdW1lbnQoTlNEYXRhICopOworCisgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFZlY3RvcjxSZWZQdHI8VGVzdFBERlBhZ2U+PiBt
X3BhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjUzN2E1NmY4
Njg4ODZhNzViMTgyYzdjY2ViZmI3OTlkN2QxZjdiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KQEAgLTAsMCArMSwxNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQREZEb2N1bWVu
dC5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKyNpZiBQ
TEFURk9STShNQUMpCitDR1JlY3QgdG9DR1JlY3QoTlNSZWN0IHJlY3QpIHsgcmV0dXJuIE5TUmVj
dFRvQ0dSZWN0KHJlY3QpOyB9CitOU1BvaW50IHRvUGxhdGZvcm1Qb2ludChDR1BvaW50IHBvaW50
KSB7IHJldHVybiBOU1BvaW50RnJvbUNHUG9pbnQocG9pbnQpOyB9CisjZWxzZQorQ0dSZWN0IHRv
Q0dSZWN0KENHUmVjdCByZWN0KSB7IHJldHVybiByZWN0OyB9CitOU1BvaW50IHRvUGxhdGZvcm1Q
b2ludChDR1BvaW50IHBvaW50KSB7IHJldHVybiBwb2ludDsgfQorI2VuZGlmCisKKy8vIEFubm90
YXRpb25zCitUZXN0UERGQW5ub3RhdGlvbjo6VGVzdFBERkFubm90YXRpb24oUERGQW5ub3RhdGlv
biAqYW5ub3RhdGlvbikKKyAgICA6IG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQoreworfQorCiti
b29sIFRlc3RQREZBbm5vdGF0aW9uOjppc0xpbmsoKSBjb25zdAoreworICAgIGJvb2wgaXNMaW5r
ID0gW21fYW5ub3RhdGlvbi5nZXQoKS50eXBlIGlzRXF1YWxUb1N0cmluZzpQREZBbm5vdGF0aW9u
U3VidHlwZUxpbmtdOworICAgIGlmIChpc0xpbmspCisgICAgICAgIEFTU0VSVChbbV9hbm5vdGF0
aW9uLmdldCgpLmFjdGlvbiBpc0tpbmRPZkNsYXNzOltQREZBY3Rpb25VUkwgY2xhc3NdXSk7Cisg
ICAgcmV0dXJuIGlzTGluazsKK30KKworQ0dSZWN0IFRlc3RQREZBbm5vdGF0aW9uOjpib3VuZHMo
KSBjb25zdAoreworICAgIHJldHVybiB0b0NHUmVjdChtX2Fubm90YXRpb24uZ2V0KCkuYm91bmRz
KTsKK30KKworTlNVUkwgKlRlc3RQREZBbm5vdGF0aW9uOjpsaW5rVVJMKCkgY29uc3QKK3sKKyAg
ICBpZiAoIWlzTGluaygpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAoKFBERkFj
dGlvblVSTCAqKW1fYW5ub3RhdGlvbi5nZXQoKS5hY3Rpb24pLlVSTDsKK30KKworLy8gUGFnZXMK
KworUmVmPFRlc3RQREZQYWdlPiBUZXN0UERGUGFnZTo6Y3JlYXRlKFBERlBhZ2UgKnBhZ2UpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVzdFBERlBhZ2UocGFnZSkpOworfQorCitUZXN0
UERGUGFnZTo6VGVzdFBERlBhZ2UoUERGUGFnZSAqcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQor
eworfQorCitjb25zdCBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+JiBUZXN0UERGUGFnZTo6YW5u
b3RhdGlvbnMoKQoreworICAgIGlmICghbV9hbm5vdGF0aW9ucykgeworICAgICAgICBtX2Fubm90
YXRpb25zID0gVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPigpOworICAgICAgICBmb3IgKFBERkFu
bm90YXRpb24gKmFubm90YXRpb24gaW4gbV9wYWdlLmdldCgpLmFubm90YXRpb25zKQorICAgICAg
ICAgICAgbV9hbm5vdGF0aW9ucy0+YXBwZW5kKHsgYW5ub3RhdGlvbiB9KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gKm1fYW5ub3RhdGlvbnM7Cit9CisKK3NpemVfdCBUZXN0UERGUGFnZTo6Y2hhcmFj
dGVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UuZ2V0KCkubnVtYmVyT2ZDaGFy
YWN0ZXJzOworfQorCitTdHJpbmcgVGVzdFBERlBhZ2U6OnRleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BhZ2UuZ2V0KCkuc3RyaW5nOworfQorCitDR1JlY3QgVGVzdFBERlBhZ2U6OnJlY3RG
b3JDaGFyYWN0ZXJBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9D
R1JlY3QoW21fcGFnZSBjaGFyYWN0ZXJCb3VuZHNBdEluZGV4OmluZGV4XSk7Cit9CisKK3NpemVf
dCBUZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQgcG9pbnQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX3BhZ2UgY2hhcmFjdGVySW5kZXhBdFBvaW50OnRvUGxhdGZvcm1Q
b2ludChwb2ludCldOworfQorCitDR1JlY3QgVGVzdFBERlBhZ2U6OmJvdW5kcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHRvQ0dSZWN0KFttX3BhZ2UgYm91bmRzRm9yQm94OmtQREZEaXNwbGF5Qm94
TWVkaWFCb3hdKTsKK30KKworCitXZWJDb3JlOjpDb2xvciBUZXN0UERGUGFnZTo6Y29sb3JBdFBv
aW50KGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICBhdXRvIGJvdW5kc1JlY3QgPSBib3VuZHMo
KTsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUoTlVMTCwgYm91bmRzUmVjdC5zaXplLndpZHRoLCBib3VuZHNSZWN0
LnNpemUuaGVpZ2h0LCA4LCAwLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAgYXV0byBjZ1Bh
Z2UgPSBtX3BhZ2UuZ2V0KCkucGFnZVJlZjsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhB
bm5vdGF0aW9ucyhjb250ZXh0LmdldCgpLCBjZ1BhZ2UsIG51bGxwdHIpOworCisgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogcGl4ZWwgPSAoY29uc3QgdW5zaWduZWQgY2hhciopQ0dCaXRtYXBDb250
ZXh0R2V0RGF0YShjb250ZXh0LmdldCgpKTsKKyAgICBzaXplX3QgaSA9ICh5ICogeCAqIDQpICsg
KHggKiA0KTsKKworICAgIGF1dG8gciA9IHBpeGVsW2ldOworICAgIGF1dG8gZyA9IHBpeGVsW2kg
KyAxXTsKKyAgICBhdXRvIGIgPSBwaXhlbFtpICsgMl07CisgICAgYXV0byBhID0gcGl4ZWxbaSAr
IDNdOworCisgICAgaWYgKCFhKQorICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAwIH07CisgICAg
cmV0dXJuIHsgciAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSB9OworfQor
CisvLyBEb2N1bWVudHMKKworUmVmPFRlc3RQREZEb2N1bWVudD4gVGVzdFBERkRvY3VtZW50Ojpj
cmVhdGVGcm9tRGF0YShOU0RhdGEgKmRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGVzdFBERkRvY3VtZW50KGRhdGEpKTsKK30KKworVGVzdFBERkRvY3VtZW50OjpUZXN0UERGRG9j
dW1lbnQoTlNEYXRhICpkYXRhKQorICAgIDogbV9kb2N1bWVudChhZG9wdE5TKFtbUERGRG9jdW1l
bnQgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSkpCisgICAgLCBtX3BhZ2VzKHBhZ2VDb3VudCgp
KQoreworfQorCitzaXplX3QgVGVzdFBERkRvY3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBbbV9kb2N1bWVudCBwYWdlQ291bnRdOworfQorCitUZXN0UERGUGFnZSogVGVz
dFBERkRvY3VtZW50OjpwYWdlKHNpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gcGFn
ZUNvdW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9wYWdlc1tpbmRl
eF0pCisgICAgICAgIG1fcGFnZXNbaW5kZXhdID0gVGVzdFBERlBhZ2U6OmNyZWF0ZShbbV9kb2N1
bWVudCBwYWdlQXRJbmRleDppbmRleF0pOworICAgIHJldHVybiBtX3BhZ2VzW2luZGV4XS5nZXQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378331</attachid>
            <date>2019-09-08 11:51:57 -0700</date>
            <delta_ts>2019-09-08 15:52:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190908115157.patch</filename>
            <type>text/plain</type>
            <size>66093</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uOTQ4ZGYyMzdlMjBmNzBlMzJiYzhhODgwMGNmMDM0
M2IyYjEwMzQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6IERvbid0IHBh
aW50IHRoZSBkZWJ1ZyBjb2xvciBvdXRzaWRlIG9mIHRoZSBGcmFtZVJlY3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QpOgorCisgICAgICAgICogcmVu
ZGVyaW5nL1BhaW50UGhhc2UuaDogQWRkICJBbm5vdGF0ZUxpbmtzIiBvcHRpb24gdG8gYWx3YXlz
IGdhdGhlciBhbmQgYW5ub3RhdGlvbiBsaW5rcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Omhhc091dGxp
bmVBbm5vdGF0aW9uIGNvbnN0KTogQWxzbyByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBQYWludE9wdGlv
bnMgaW5jbHVkZSAiQW5ub3RhdGVMaW5rcyIKKwogMjAxOS0wOS0wNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwb3N0TWVzc2FnZSBi
dWZmZXJpbmcgYmV0d2VlbiB0aGUgc2VydmljZSB3b3JrZXIgYW5kIHdpbmRvdwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAzYjYxOTk4YzU4ZWNlYWQ3ZWNmZTAwNDYxYzliYmEwN2Q4NjA2MzFjLi42NDRiMjc2OWY1ODQy
YTdkNjBkOWM0YTNmNWI3ODRiNjA4ODQ2ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisy
MDE5LTA5LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU1BJIHRvIHNhdmUgYSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHJlZmFjdG9yaW5nIGEgY29tYmluYXRpb24gb2Yg
InNuYXBzaG90Rmlyc3RQYWdlIiBQREYgcHJpbnRpbmcgY29kZSBhbmQgdGhlCisgICAgICAgICJ0
YWtlU25hcHNob3QiIEFQSSBjb2RlIHRvIGNhcHR1cmUgdGhlIG9uLXNjcmVlbiB2aXNpYmxlIHBh
Z2UgdG8gYSBQREYgYXQgZnVsbCBmaWRlbGl0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hv
dFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1Rv
UERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxsYmFjayk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJh
Y2spOiBNb3ZlIHRvIGNyb3NzIHBsYXRmb3JtIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGRmU25hcHNob3RB
dFNpemUpOiBJbnN0ZWFkIG9mIGFzc3VtaW5nIDEgcGFnZSBjYXBwZWQgYXQgMjAwIGluY2hlcywK
KyAgICAgICAgICBwYWdpbmF0ZSBldmVyeSAyMDAgaW5jaGVzLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpwYWludFNuYXBzaG90QXRTaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGRmU25hcHNob3RBdFNpemUp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMDkt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXItcHJpdmF0ZS1icm93c2luZy5o
dHRwcy5odG1sIGFzIGFuIEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXgg
YTM1NjE1MWY3ZTJjZmYxYWJkN2FmNjhlMTIzZjlhMTdjZWMxYzcxMS4uZWFmODllMzI4M2Q1ZmI3
NWI5OGQ3NjgwOWQ0N2JjNTE4MGNhN2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApA
QCAtNDExMyw5ICs0MTEzLDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZp
bGxXaXRoV2FybmluZ0NvbG9yID0gZmFsc2U7IC8vIEVsZW1lbnQgaW1hZ2VzIGFyZSB0cmFuc3Bh
cmVudCwgZG9uJ3QgZmlsbCB3aXRoIHJlZC4KICAgICBlbHNlCiAgICAgICAgIGZpbGxXaXRoV2Fy
bmluZ0NvbG9yID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpCi0g
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGlydHlSZWN0LCBDb2xvcigyNTUsIDY0LCAyNTUpKTsK
KworICAgIGlmIChmaWxsV2l0aFdhcm5pbmdDb2xvcikgeworICAgICAgICBJbnRSZWN0IGRlYnVn
UmVjdCA9IGZyYW1lUmVjdCgpOworICAgICAgICBkZWJ1Z1JlY3QuaW50ZXJzZWN0KGRpcnR5UmVj
dCk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGVidWdSZWN0LCBDb2xvcigyNTUsIDY0LCAy
NTUpKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlz
LT5yZW5kZXJWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZWUyNzM4ZjQyMTBjNjkyYzM1
YjkyYThkZTg5YWZkYTI3MGJkOGIyMC4uYzBjYmQxZjZlYjc3MGIzODg2NGE1NWM0OGEzMWYyYzM3
YjY0ODVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTYzNSw2ICsxNjM1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGZsb2F0IHRoaWNrbmVzcywKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3Qo
Y29uc3QgVVJMJiBsaW5rLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogeworICAgIC8vIEZJ
WE1FOiA8cmRhcjovL3Byb2JsZW0vNTQ5MDAxMzM+IFBERiBleHBvcnRpbmcgb24gaU9TIHNob3Vs
ZCBpbmNsdWRlIFVSTCByZWN0cwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRQaGFzZS5oCmluZGV4IDJlM2MwMjNkNWE4YjVjMTVhZDljMTVkOWRhMDhjZmE0NWI4OGI1
M2IuLjFmMTU2MzVmYmYzYWY5MDhlYzU3NjQ5MGQxNWViNGExNDE1OWMwNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludFBoYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50UGhhc2UuaApAQCAtNjcsNiArNjcsNyBAQCBlbnVtIGNsYXNzIFBh
aW50QmVoYXZpb3IgOiB1aW50MTZfdCB7CiAgICAgRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzICAg
ID0gMSA8PCA5LCAvLyBQYWludCBkb2Vzbid0IHN0b3AgYXQgY29tcG9zaXRpbmcgbGF5ZXIgYm91
bmRhcmllcy4KICAgICBTbmFwc2hvdHRpbmcgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAogICAg
IFRpbGVGaXJzdFBhaW50ICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAgQW5ub3RhdGVMaW5r
cyAgICAgICAgICAgICAgID0gMSA8PCAxMiwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAyZDA2MmI1
ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4wMzU3NDEzYWE4ODY1YTk3ZDQ0ZTcx
YjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnVwZGF0
ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0bykKIAogYm9vbCBSZW5kZXJF
bGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1l
bnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3VtZW50KCkucHJpbnRpbmcoKTsKKyAg
ICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgKGRvY3VtZW50KCku
cHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAmIFBhaW50
QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNT
ZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5N2NlOGVlZmYwYWI2NzczYTA2ZjRj
NzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2ZWM1ODUwYWQ3OTY5ZTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTUw
MzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJ
bnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogICAgIH0pOwogfQogCist
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gX3Bh
Z2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFtZUlEKCk7
CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJv
cihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHNuYXBzaG90
Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlvbi5yZWN0
KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBzaG90Q29uZmln
dXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJlY3QsIFty
ZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIp
XShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJv
cihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGhhbmRs
ZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNpZiBQTEFURk9S
TShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlczoo
Qk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYzMDA3ZjIwMDYz
ZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3NjlhNGVjNDA5ZDkyZjMxMDM0NTliOWZi
Y2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8
X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfZm9jdXNU
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxlbWVudCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lk
KV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
RGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBl
bmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19XQVRDSApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmE3NTg4MWJlNmQyMmY3M2YyNmUz
NjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZkMTA1MGQyMGE0N2JhMzE1ZWExYWFm
NjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NzUw
LDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKIH0KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBEcmF3VG9QREZD
YWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrKQoreworICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UoKSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREYo
ZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRm
RGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwogdm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKQogewogICAg
IEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODExZmE1Zi4u
NmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYzNjE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSArMzYwLDEwIEBAIHN0cnVjdCBFbGVt
ZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXVEY6Ok1h
Y2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4gTm93UGxh
eWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5ICsxMTcxLDEwIEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVBy
b3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBkcmF3UGFn
ZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGRyYXdUb1BE
RihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKKyAgICB2b2lk
IGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2Vi
S2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rp
b24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25z
dCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5M2QzNDE0
MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4xMzQ0YTUxNDdiOTI0NDEzMmY3NWNj
ZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxl
RG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQp
CiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAo
dWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgYm9vbCBm
aXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9y
dE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Ug
cGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0aW9uUmVj
dHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2so
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3RpdmUsIGJvb2wgcmVnaXN0ZXJlZEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91
YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0ZDAwZTIzNzY0OWMwNGQyMmQ0ZTQy
MDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdiZWNiNGM3ODBhM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzIwLDYgKzcy
MCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9IDE7CiAgICAgcHJp
bnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25hcHNob3RGaXJzdFBh
Z2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcgUERGcyB0YWxsZXIg
dGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewogICAgICAg
ICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAwICogNzI7IC8vIG1h
eGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5jaGVzCiAgICAgICAg
IENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwZDhkOGZkYmYxYTNjY2Ri
OGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNjMTAzZjRkNWE5YWMxODZkOWVkN2Vl
ZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZQog
ICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZD
YWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9Q
REZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOwot
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0YSk7Ci19
Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0
IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50U2l6ZUNh
dGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDg1YTQzYjU0NzljMTU5ZTQw
ZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZhM2I5Njg1ODMyN2JmMDI3N2U1NDVh
MjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsyMzIsNTggQEAgdm9pZCBXZWJQYWdl
Ojp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCkKICAg
ICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIFttX21vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQbHVnaW46ZG9jdW1lbnQgPyBkb2N1
bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwogfQotICAgIAorCitSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0IHJlY3QsIEludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGNv
cmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRhdGFDb25zdW1lciA9IGFkb3B0Q0Yo
Q0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIG1l
ZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUu
aGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250ZXh0Q3Jl
YXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7CisKKyAgICBpbnQ2
NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVpZ2h0KCk7CisgICAgaW50NjRfdCBu
ZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVtYWluaW5nSGVpZ2h0ID4gMCkgewor
ICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWlnaHQgbGltaXQgb2YgMjAwIGluY2hl
cyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0IG9uZSBQREYgcGFnZSBhdCBhIHRp
bWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQ2
NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAgICAgYml0bWFwU2l6ZS5zZXRIZWln
aHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdlSGVpZ2h0KSk7CisgICAgICAgIHJl
Y3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZWN0LnNldFkobmV4
dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAsIDAsIGJp
dG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1dG8gbWVk
aWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVMTCwgKGNvbnN0IFVJbnQ4ICopJm1l
ZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0dQREZDb250ZXh0TWVk
aWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgpCisgICAgICAgIH07CisKKyAgICAg
ICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIGRpY3Rpb25hcnkpOwor
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250ZXh0Lmdl
dCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOworICAgICAg
ICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgpKTsKKwor
ICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsICpj
b3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAgQ0dQREZD
b250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgICAgICBuZXh0UmVjdFkgKz0g
Yml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWluaW5nSGVpZ2h0IC09IG1heFBhZ2VI
ZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7
CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUyMWJlMTQ4YTRjN2Q2Yjk3MjY2MTcw
NC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4ODRiODU4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMDYsNyArMjMwNiw3
IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhj
b25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1cm4gc25hcHNob3RBdFNpemUocmVj
dCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U25hcHNob3RB
dFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6ZSwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcs
IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQordm9pZCBXZWJQYWdlOjpwYWludFNu
YXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNp
emUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmlldyYgZnJh
bWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKICAgICBJbnRSZWN0
IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9yaXpvbnRhbFNjYWxlRmFjdG9yID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CkBA
IC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0
U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICByZXR1cm4g
c25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdl
OjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICBGcmFtZSogY29yZUZy
YW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1lKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29yZUZy
YW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAgICBhdXRvIGRhdGFDb25zdW1lciA9
IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKLSAg
ICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJp
dG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZD
b250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7Ci0K
LSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0K
LSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5nZXQoKSB9
OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwotICAgIGdyYXBoaWNzQ29u
dGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIHBhaW50U25hcHNo
b3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZyYW1lVmll
dywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29udGV4dEVuZFBhZ2UocGRmQ29udGV4
dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0KIFJlZlB0cjxXZWJJbWFnZT4gV2Vi
UGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAtNDc0OSw2ICs0NzE2LDM0IEBAIHZv
aWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2Vi
UGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxG
bG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0byYgZnJh
bWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEludFNpemUgc25hcHNo
b3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRTaXplKHJl
Y3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFNpemUgPSB7IGZyYW1lVmll
dy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3Q7CisgICAgaWYg
KHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhpbnQpcmVjdC0+eCgpLCAoaW50KXJl
Y3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UKKyAgICAgICAgc25hcHNob3RSZWN0
ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAgYXV0byBvcmlnaW5hbExheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0
KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExheW91dFJl
Y3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5hbFBhaW50QmVoYXZpb3IgPSBmcmFt
ZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9y
aWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpOworCisg
ICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBzbmFwc2hv
dFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0
KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOworICAgIGZyYW1lVmlldy5zZXRQ
YWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZShDRkRh
dGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQo
KSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUxN2FhMmQx
MjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUzOWZjYjQ2NjFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODgxLDYgKzg4MSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwgTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxh
eWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENhbGxiYWNr
SUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYwNyw4IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMpOwog
ICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBTbmFwc2hv
dE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoV2ViQ29y
ZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMTYyMSw2ICsx
NjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVt
ZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9pZCBwYWludFNuYXBzaG90QXRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU25hcHNo
b3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcyYjY2OTUwNDg5Y2FlMzcuLmFlZTcw
NmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzg4LDYg
KzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdl
YktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIFN5
bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBh
NjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjViZDUuLmQ3ZDFhMzc3Njk5OTY4MzBi
N2FmMDYwY2JmOGNhYzVmYmNmMjhlZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wOS0wOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzYXZlIGEgUERG
IGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3LgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LUFkZCBhbiAiRXhwb3J0IHRvIFBERi4uLiIgbWVudSBvcHRpb24gdG8gTWluaUJyb3dzZXIuCisg
ICAgICAgIC1BZGQgQVBJIHRlc3RzIGZvciB0aGUgQVBJIGl0c2VsZi4KKworICAgICAgICAqIE1p
bmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50czoKKworICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93
Q29udHJvbGxlciBmb3JjZVJlcGFpbnQ6XSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250
cm9sbGVyIHNhdmVBc1BERjpdKToKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9NYWluTWVu
dS54aWI6CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubToKKyAgICAgICAgKC1bV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgdmFsaWRhdGVN
ZW51SXRlbTpdKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgdmFsaWRh
dGVNZW51SXRlbTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgc2F2
ZUFzUERGOl0pOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtVXRpbGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5o
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5t
bTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b0NHUmVjdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0b1BsYXRmb3JtUG9pbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjppc0xpbmsgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRlc3RQREZQYWdlOjpUZXN0UERGUGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
ZXN0UERGUGFnZTo6YW5ub3RhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBE
RlBhZ2U6OmNoYXJhY3RlckNvdW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRl
c3RQREZQYWdlOjp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQ
YWdlOjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpUZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50IGNvbnN0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6VGVzdFBERkRvY3VtZW50KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZSk6CisKIDIwMTktMDkt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXItcHJpdmF0ZS1icm93c2luZy5o
dHRwcy5odG1sIGFzIGFuIEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9N
aW5pQnJvd3Nlci5lbnRpdGxlbWVudHMgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5l
bnRpdGxlbWVudHMKaW5kZXggYzllYTM3NjQ2OGE2NDk5NzZjOWFlMzhmMjk5YTMyNWRjYjRkYWRi
OS4uZTRjMmJhMTgwZjM5NWRjYTFkMzQxZGI2NjZkNWMzNGMyZWEzZWMyZSAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cwpAQCAtMiwyMCArMiwyMCBAQAogPCFE
T0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDov
L3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lv
bj0iMS4wIj4KIDxkaWN0PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9r
ZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRldmljZS51c2I8L2tleT4K
IAk8dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1zZWxlY3RlZC5y
ZWFkLW9ubHk8L2tleT4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNlbGVj
dGVkLnJlYWQtd3JpdGU8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHku
bmV0d29yay5jbGllbnQ8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHku
dGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25seTwva2V5Pgor
CTxzdHJpbmc+Lzwvc3RyaW5nPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1l
eGNlcHRpb24ubWFjaC1sb29rdXAuZ2xvYmFsLW5hbWU8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJp
bmc+Y29tLmFwcGxlLlNhZmFyaS5TYWZlQnJvd3NpbmcuU2VydmljZTwvc3RyaW5nPgogCQk8c3Ry
aW5nPmNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZ0RhZW1vbjwvc3RyaW5nPgogCTwvYXJyYXk+
Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8L2tleT4KLQk8dHJ1ZS8+Ci0J
PGtleT5jb20uYXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tleT4KLQk8dHJ1ZS8+Ci0J
PGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0
ZS1wYXRoLnJlYWQtb25seTwva2V5PgotCTxzdHJpbmc+Lzwvc3RyaW5nPgogPC9kaWN0PgogPC9w
bGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVy
LmgKaW5kZXggYzViOWQ1NGE1MjIwNDI2MzZiNzg4MjU3NTY0NGUzYTAyNGE1ZDk0Ni4uZGZkYjY0
MDEzZjAxNmJkMGJkYTUyMGE1ZWU4ZDA4YzMyOTViZmRkYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgQGlu
dGVyZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CiAK
IC0gKElCQWN0aW9uKW9wZW5Mb2NhdGlvbjooaWQpc2VuZGVyOwogCistIChJQkFjdGlvbilzYXZl
QXNQREY6KGlkKXNlbmRlcjsKKwogLSAoSUJBY3Rpb24pZmV0Y2g6KGlkKXNlbmRlcjsKIC0gKElC
QWN0aW9uKXNoYXJlOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZWxvYWQ6KGlkKXNlbmRlcjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxl
ci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5k
ZXggNGI5OTA1N2EwM2NlMDY2MDRiMmQzMTUwNzZjMGM0YTE2ZTA0NDgyZi4uNGQ0NTczOTZmMDY1
NGUwZjllZTgzNGY5MTRkMWRkYTAyOWZlNmY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTkzLDYgKzkzLDExIEBAIC0gKElCQWN0
aW9uKWZvcmNlUmVwYWludDooaWQpc2VuZGVyCiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNl
bGVjdG9yOl9jbWRdOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgorewor
ICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKK30KKwogLSAoSUJBY3Rp
b24pZ29CYWNrOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0
b3I6X2NtZF07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGli
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgppbmRleCA1NDZhNjBmMDMyZTcy
ZTQyYjZhNmMzNmM0OThlMjhmMTMzMjM3NWIzLi4wNzE2MzQ2YzUyOTdjMzYwMGM0OGI3Y2YwNGM0
MzEyOGRlNmJmMjRhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUu
eGliCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKQEAgLTEsNyArMSw3
IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRvY3VtZW50IHR5
cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIg
dG9vbHNWZXJzaW9uPSIxMzc3MSIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0
eUFjY2Vzc0NvbnRyb2w9Im5vbmUiPgorPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZh
Y2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIxNDQ5MC43
MCIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9Im5v
bmUiPgogICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29t
LmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNpb249IjEzNzcxIi8+Cisg
ICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29j
b2FQbHVnaW4iIHZlcnNpb249IjE0NDkwLjcwIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgICAg
PG9iamVjdHM+CiAgICAgICAgIDxjdXN0b21PYmplY3QgaWQ9Ii0yIiB1c2VyTGFiZWw9IkZpbGUn
cyBPd25lciIgY3VzdG9tQ2xhc3M9Ik5TQXBwbGljYXRpb24iPgpAQCAtMTMzLDYgKzEzMywxMiBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0i
c2F2ZURvY3VtZW50QXM6IiB0YXJnZXQ9Ii0xIiBpZD0iMzYzIi8+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9tZW51SXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0
bGU9IlNhdmUgQXMgUERG4oCmIiBrZXlFcXVpdmFsZW50PSJTIiBpZD0iZ21TLTNRLW9McyI+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVp
dmFsZW50TW9kaWZpZXJNYXNrIiBvcHRpb249IllFUyIgY29tbWFuZD0iWUVTIi8+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVBc1BERjoiIHRhcmdldD0i
LTEiIGlkPSIyNVQtSWQtMzM0Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv
Y29ubmVjdGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9IlJldmVydCB0byBTYXZl
ZCIgaWQ9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1h
c2sga2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrIi8+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggN2VkNmMzZDJmOTA2OTM3Mzc2NTQ3
MzFjNzM0YjgxMzhiMTUyZmU2My4uNmQ2NmJmYjBhNWYzOWM5OGQyOTI3N2E2YzZhY2VkOTM4MGRk
MmNiNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KQEAgLTEzNCw2ICsxMzQsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06
KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBbbWVudUl0ZW0gYWN0
aW9uXTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAg
ICByZXR1cm4gTk87CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAg
ICAgICAgcmV0dXJuIFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3Ioem9vbU91dDopKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubQppbmRleCBmNzhkYmRmZjAyZmVkOTZjMjg1MTkyMWQzNGRjNGEyMmY0
M2EyZTVmLi5jZjRkM2FmMTc4MWEyMDRjNGRkOWZiZWMwNmNlODUzZDJmNzIwM2QxIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpA
QCAtMjA3LDYgKzIwNyw5IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAq
KW1lbnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IG1lbnVJdGVtLmFjdGlvbjsKIAorICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICByZXR1cm4gWUVTOwor
CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBb
c2VsZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkK
QEAgLTgxNCw0ICs4MTcsMTcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBpbmNsdWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICgKICAgICBkZWNpc2lv
bkhhbmRsZXIoZmFsc2UpOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgor
eworICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAg
IHBhbmVsLmFsbG93ZWRGaWxlVHlwZXMgPSBAWyBAInBkZiIgXTsKKyAgICBbcGFuZWwgYmVnaW5T
aGVldE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRl
Z2VyIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKSB7
CisgICAgICAgICAgICBbX3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9u
Om5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICAgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb1VSTDpb
cGFuZWwgVVJMXSBvcHRpb25zOjAgZXJyb3I6bmlsXTsKKyAgICAgICAgICAgIH1dOworICAgICAg
ICB9CisgICAgfV07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnCmlu
ZGV4IDJkZTYxZjc5NTRiNTA4OTUzMDlhOGM0YTY4ZjEyNWQ0N2FhODA0OWQuLjQ0ZTFjNWEyYWUz
ZDUzODgwZmJjNDE0ZjBhMmY2MGIxY2JjZGNhMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54
Y2NvbmZpZwpAQCAtMjgsMyArMjgsNSBAQAogUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsK
IFNLSVBfSU5TVEFMTCA9IFlFUzsKIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOwor
CitTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJS
QVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElS
KS9GcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9R
dWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChpbmhlcml0ZWQpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGUyZmI2OTAyNGJiMTQ5ZTAxNTg4NjU2MGZlNGI0
MzhjNjU5YjUxMzkuLjRkOWI0ZDc0MzIwZjUwZTJmNTE0MWEzMzdkMjQwZTQzMzA5N2FkZTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTMzLDggKzMzLDkgQEAK
ICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKLU9CSkNfQ0xBU1MgTlNT
dHJpbmc7CitPQkpDX0NMQVNTIE5TQ29sb3I7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKK09C
SkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjExZGRlNTI1YjJlYmI0NjQ4MTliNjAzNmJiMTQ1
YzVhMzQyOTg0Li4yOTk2Yjk4YzMxZjc5NjAxNmM1ZjZjYTNmNjk2ODhkMTZkNTEzOTAyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjksMTkgKzI5LDYgQEAKIAkJCW5hbWUgPSAiR2VuZXJh
dGUgVW5pZmllZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gQWxsOwogCQl9OwotCQk3Qzgz
RTAyQjFEMEE1RTEwMDBGRUJDRjMgLyogQWxsICovID0gewotCQkJaXNhID0gUEJYQWdncmVnYXRl
VGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDODNFMDJDMUQwQTVFMTAwMEZF
QkNGMyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAi
QWxsIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTUzN0NGODQ4MjJFRkQ3MjAwMEM2RUJC
MyAvKiBDaGVjayAueGNmaWxlbGlzdHMgKi8sCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAot
CQkJCTdDODNFMDMwMUQwQTVFMUIwMEZFQkNGMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAot
CQkJCTdDODNFMDMyMUQwQTVFMUQwMEZFQkNGMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAot
CQkJKTsKLQkJCW5hbWUgPSBBbGw7Ci0JCQlwcm9kdWN0TmFtZSA9IEFsbDsKLQkJfTsKIC8qIEVu
ZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwpAQCAtMjc2LDYgKzI2Myw5IEBACiAJCTUxQjFFRTk3MUM4MEZBRUYwMDY0RkI5
OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMUVFOTUxQzgwRkFERDAwNjRGQjk4IC8q
IEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLzsgfTsKIAkJNTFCQ0VFNEUxQzg0RjUzQjAw
NDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQ0VFNEMxQzg0RjUyQzAwNDJD
ODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi87IH07CiAJCTUxQkNFRTRGMUM4
NEY1M0IwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkNFRTREMUM4NEY1
MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovOyB9OworCQk1MUJF
OUY5MjIzMTlFOEQ0MDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFOUY5MTIzMTlFOEMxMDBGOTZDRTIgLyog
UERGU25hcHNob3QubW0gKi87IH07CisJCTUxQkU5RkExMjMyMDIzOEEwMEY5NkNFMiAvKiBUZXN0
UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUJFOUY5RjIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3VtZW50Lm1tICovOyB9
OworCQk1MUJFOUZBNzIzMjQ2MkU2MDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkU5RkE1MjMyNDYy
QTMwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovOyB9OwogCQk1MUM2ODNERTFFQTEzNEU4
MDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM2ODNERDFFQTEzNERCMDA2NTAxODMgLyogV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW0gKi87IH07CiAJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDOEUxQTQxRjI2QUM1NDAwQkY3MzFCIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MubW0gKi87IH07CiAJCTUxQzhFMUE5MUYyN0Y0OTYwMEJGNzMxQiAvKiBFbXB0
eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0IGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzhFMUE4MUYyN0Y0NzMw
MEJGNzMxQiAvKiBFbXB0eUdyYW5kZmF0aGVyZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLnBsaXN0
ICovOyB9OwpAQCAtMTA1MywyMCArMTA0Myw2IEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IDdDODNERTk1MUQwQTU5MEMwMEZFQkNGMzsKIAkJCXJlbW90ZUluZm8gPSBUZXN0V1RGTGlicmFy
eTsKIAkJfTsKLQkJN0M4M0UwMkYxRDBBNUUxQjAwRkVCQ0YzIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
LQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhERDc2Rjk2MDQ4
NkFBNzYwMEQ5NkI1RTsKLQkJCXJlbW90ZUluZm8gPSBUZXN0V2ViS2l0QVBJOwotCQl9OwotCQk3
QzgzRTAzMTFEMEE1RTFEMDBGRUJDRjMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewot
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMDhG
Qjc3OTNGRTg0MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBl
ID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gN0M4M0RGOTUxRDBBNUFFNDAwRkVCQ0Yz
OwotCQkJcmVtb3RlSW5mbyA9IFRlc3RXVEY7Ci0JCX07CiAJCTdDQ0U3RjUwMUE0MTI0REIwMDQ0
N0M0QyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwOEZCNzc5M0ZFODQxNTVEQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC0xNzY5LDYgKzE3NDUsMTEgQEAKIAkJNTFCQ0VF
NDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCQ0VFNEMxQzg0RjUyQzAwNDJDODJFIC8q
IEluZGV4ZWREQk11bHRpUHJvY2Vzcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQkNFRTREMUM4NEY1MkMwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3Mt
Mi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQk11bHRpUHJvY2Vz
cy0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJFOUY5MTIzMTlFOEMx
MDBGOTZDRTIgLyogUERGU25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQREZTbmFw
c2hvdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCRTlGOUQyMzFGMzUxRTAw
Rjk2Q0UyIC8qIFBERktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFBERktpdC5mcmFt
ZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01h
Y09TWDEwLjE0LnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZF
TE9QRVJfRElSOyB9OworCQk1MUJFOUY5RjIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3Vt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdFBERkRv
Y3VtZW50Lm1tOyBwYXRoID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUJFOUZBMDIzMjAyMzhBMDBGOTZDRTIgLyogVGVzdFBERkRvY3Vt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RQREZEb2N1bWVudC5o
OyBwYXRoID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxQkU5RkE1MjMyNDYyQTMwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBQREZLaXQuZnJhbWV3b3JrOyBwYXRoID0gUGxhdGZvcm1zL2lQaG9uZU9T
LnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZU9TMTMuMS5zZGsvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9QREZLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gREVWRUxPUEVSX0RJUjsg
fTsKIAkJNTFDNjgzREQxRUExMzREQjAwNjUwMTgzIC8qIFdLVVJMU2NoZW1lSGFuZGxlci0xLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOEUxQTQxRjI2QUM1
NDAwQkY3MzFCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUM4RTFBODFGMjdGNDczMDBCRjczMUIgLyogRW1wdHlHcmFuZGZhdGhlcmVkUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGUuYnBsaXN0OyBwYXRoID0gRW1wdHlHcmFuZGZhdGhlcmVkUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NjgsNiArMjU0OSw3IEBACiAJCQkJNUNGQUNGNjMyMjZGNzNDNjAwNTZDN0QwIC8qIGxpYmJv
cmluZ3NzbC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0Yz
IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzhDQkQ2NzIwNEZC
MkM4MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKKwkJCQk1MUJFOUZBNzIzMjQ2MkU2MDBGOTZDRTIgLyogUERGS2l0LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNEMUQ4NzdDMEQwMEVERTcyQSAvKiBRdWFydHpD
b3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTU3NEY1NUQyMjA0RDQ3RjAwMDI5
NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CkBAIC0y
NjY1LDYgKzI2NDcsOCBAQAogCQkJCTVDRTc1OTQ3MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29u
dGV4dE1lbnVEcml2ZXIubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYg
LyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKKwkJCQk1MUJFOUZBMDIzMjAyMzhBMDBG
OTZDRTIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCisJCQkJNTFCRTlGOUYyMzIwMjM4QTAwRjk2
Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAqLywKIAkJCQlBMTRGQzU4RDFCOEFFMzY1MDBEMTA3
RUIgLyogVGVzdFByb3RvY29sLmggKi8sCiAJCQkJQTE0RkM1OEUxQjhBRTM2NTAwRDEwN0VCIC8q
IFRlc3RQcm90b2NvbC5tbSAqLywKIAkJCQkyRUZGMDZEMjFEOEFFREJCMDAwNEJCMzAgLyogVGVz
dFdLV2ViVmlldy5oICovLApAQCAtMjgyNiw2ICsyODEwLDcgQEAKIAkJCQk5QkREOTU1NjFGODM2
ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERC
MUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJNTFEOEMxOEYyMjY3QjI2NzAwNzk3
RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSAqLywKKwkJCQk1MUJFOUY5MTIzMTlFOEMxMDBGOTZD
RTIgLyogUERGU25hcHNob3QubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8q
IFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKIAkJCQk4M0JBRUU4QzFFRjQ2MjU1MDBE
REU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLAogCQkJCUM5NTUwMUJFMTlB
RDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAqLywKQEAgLTMwOTQsNiArMzA3OSw4IEBA
CiAJCQkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5k
eWxpYiAqLywKIAkJCQk3QzgzRTAyOTFEMEE1Q0RGMDBGRUJDRjMgLyogbGliV1RGLmEgKi8sCiAJ
CQkJNTc4Q0JENjYyMDRGQjJDNzAwODNCOUYyIC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3
b3JrICovLAorCQkJCTUxQkU5RkE1MjMyNDYyQTMwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3Jr
ICovLAorCQkJCTUxQkU5RjlEMjMxRjM1MUUwMEY5NkNFMiAvKiBQREZLaXQuZnJhbWV3b3JrICov
LAogCQkJCTdBMDEwQkNDMUQ4NzdDMEQwMEVERTcyQSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAq
LywKIAkJCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICov
LAogCQkJKTsKQEAgLTQxNDEsMTAgKzQxMjgsNiBAQAogCQkJCQk1MzdDRjg0MzIyRUZENjQxMDBD
NkVCQjMgPSB7CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMS4wOwogCQkJCQl9Owot
CQkJCQk3QzgzRTAyQjFEMEE1RTEwMDBGRUJDRjMgPSB7Ci0JCQkJCQlDcmVhdGVkT25Ub29sc1Zl
cnNpb24gPSA4LjA7Ci0JCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IEF1dG9tYXRpYzsKLQkJCQkJ
fTsKIAkJCQkJN0NDRTdFOEIxQTQxMTQ0RTAwNDQ3QzRDID0gewogCQkJCQkJQ3JlYXRlZE9uVG9v
bHNWZXJzaW9uID0gNi4zOwogCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBNYW51YWw7CkBAIC00
MTcyLDcgKzQxNTUsNiBAQAogCQkJcHJvamVjdERpclBhdGggPSAiIjsKIAkJCXByb2plY3RSb290
ID0gIiI7CiAJCQl0YXJnZXRzID0gKAotCQkJCTdDODNFMDJCMUQwQTVFMTAwMEZFQkNGMyAvKiBB
bGwgKi8sCiAJCQkJNUM5RDkyMTQyMkQ3REEwMjAwOEU5MjY2IC8qIEdlbmVyYXRlIFVuaWZpZWQg
U291cmNlcyAqLywKIAkJCQk3Q0NFN0U4QjFBNDExNDRFMDA0NDdDNEMgLyogVGVzdFdlYktpdEFQ
SUxpYnJhcnkgKi8sCiAJCQkJN0M4M0RFOTUxRDBBNTkwQzAwRkVCQ0YzIC8qIFRlc3RXVEZMaWJy
YXJ5ICovLApAQCAtNDIxMywyNCArNDE5NSw2IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwog
CQkJc2hlbGxTY3JpcHQgPSAiZXZhbCBcIiR7V0tfU1VCTEFVTkNIX1NDUklQVF9QQVJBTUVURVJT
W0BdfVwiXG4iOwogCQl9OwotCQk1MzdDRjg0ODIyRUZENzIwMDBDNkVCQjMgLyogQ2hlY2sgLnhj
ZmlsZWxpc3RzICovID0gewotCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwotCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCWlu
cHV0RmlsZUxpc3RQYXRocyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhzID0gKAotCQkJKTsKLQkJ
CW5hbWUgPSAiQ2hlY2sgLnhjZmlsZWxpc3RzIjsKLQkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAo
Ci0JCQkpOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxT
Y3JpcHQgPSAiU2NyaXB0cy9jaGVjay14Y2ZpbGVsaXN0cy5zaFxuIjsKLQkJfTsKIAkJNUM5RDky
MUMyMkQ3REEzMzAwOEU5MjY2IC8qIFNoZWxsU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTQ2MjcsNiArNDU5MSw3IEBACiAJCQkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3Rl
UlRGRC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMjM0NjQyMUY5NDNFMjcwMERCMUQyMyAvKiBQ
YXN0ZVdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUQ4QzE5MDIyNjdCMjZEMDA3
OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCRTlGOTIy
MzE5RThENDAwRjk2Q0UyIC8qIFBERlNuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwNTMxRDBBNjQzQTAwRkVCQ0YzIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTNGQ0M0RkU1MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJl
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBNjFBNDExQTBGMDA0NDdDNEMg
LyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTQ3MjQsNiArNDY4
OSw3IEBACiAJCQkJRjRGNUJCNTIyMTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5w
dXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUQzODkxMjE1QTdCNEIwMDJBMjk3
OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFCRTlGQTEyMzIw
MjM4QTAwRjk2Q0UyIC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3
NzRBQTY4MjFGQkJGNzgwMEFGMkExQiAvKiBUZXN0U09BdXRob3JpemF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjRDRDc0QzkyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5k
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRl
c3RXS1dlYlZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00OTU5LDE2ICs0OTI1
LDYgQEAKIAkJCXRhcmdldCA9IDdDODNERTk1MUQwQTU5MEMwMEZFQkNGMyAvKiBUZXN0V1RGTGli
cmFyeSAqLzsKIAkJCXRhcmdldFByb3h5ID0gN0M4M0UwMjQxRDBBNUIyNTAwRkVCQ0YzIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKLQkJN0M4M0UwMzAxRDBBNUUxQjAwRkVCQ0Yz
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwotCQkJdGFyZ2V0ID0gOERENzZGOTYwNDg2QUE3NjAwRDk2QjVFIC8qIFRlc3RXZWJLaXRB
UEkgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDdDODNFMDJGMUQwQTVFMUIwMEZFQkNGMyAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0JCTdDODNFMDMyMUQwQTVFMUQwMEZFQkNGMyAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKLQkJCXRhcmdldCA9IDdDODNERjk1MUQwQTVBRTQwMEZFQkNGMyAvKiBUZXN0V1RGICovOwot
CQkJdGFyZ2V0UHJveHkgPSA3QzgzRTAzMTFEMEE1RTFEMDBGRUJDRjMgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOwotCQl9OwogCQk3Q0NFN0Y1MTFBNDEyNERCMDA0NDdDNEMgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0
YXJnZXQgPSA3Q0NFN0U4QjFBNDExNDRFMDA0NDdDNEMgLyogVGVzdFdlYktpdEFQSUxpYnJhcnkg
Ki87CkBAIC00OTkxLDYgKzQ5NDcsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3
NTYgLyogVGVzdFdlYktpdEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVn
OwogCQl9OwpAQCAtNDk5OCw2ICs0OTU4LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkM5MDk1ODAxMjU1NENGOTAw
MDgzNzU2IC8qIFRlc3RXZWJLaXRBUEkueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzIiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwogCQl9OwpAQCAtNTA3NSwyNCArNTAzOSwxNCBAQAogCQkJfTsKIAkJCW5hbWUgPSBS
ZWxlYXNlOwogCQl9OwotCQk3QzgzRTAyRDFEMEE1RTEwMDBGRUJDRjMgLyogRGVidWcgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCX07Ci0JCQluYW1lID0gRGVi
dWc7Ci0JCX07Ci0JCTdDODNFMDJFMUQwQTVFMTAwMEZFQkNGMyAvKiBSZWxlYXNlICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVh
c2U7Ci0JCX07CiAJCTdDQ0U3RTlEMUE0MTE0NEUwMDQ0N0M0QyAvKiBEZWJ1ZyAqLyA9IHsKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSA3Q0NFN0VBMzFBNDExNUNCMDA0NDdDNEMgLyogVGVzdFdlYktpdEFQSUxpYnJhcnkueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNZU1RFTV9GUkFNRVdPUktfU0VB
UkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJB
UllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
IiwKKwkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTUxMDAsNiArNTA1
NCwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDdDQ0U3RUEzMUE0MTE1Q0IwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJ
TGlicmFyeS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZS
QU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBA
IC01MTg4LDE1ICs1MTQ2LDYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07Ci0JCTdDODNF
MDJDMUQwQTVFMTAwMEZFQkNGMyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiQWxsIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTdDODNFMDJEMUQwQTVFMTAwMEZFQkNG
MyAvKiBEZWJ1ZyAqLywKLQkJCQk3QzgzRTAyRTFEMEE1RTEwMDBGRUJDRjMgLyogUmVsZWFzZSAq
LywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwogCQk3Q0NFN0VBMTFBNDExNDRF
MDA0NDdDNEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IlRlc3RXZWJLaXRBUElMaWJyYXJ5IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVkMmVk
N2Y3OWI3Yjk4NmY1MDg4ZGM3OWFjODNlM2Q5MDI0MDFhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0KQEAgLTAs
MCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RQREZE
b2N1bWVudC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9D
b2xvci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKwordXNpbmcgV2Vi
Q29yZTo6Q29sb3I7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChQREZTbmFw
c2hvdCwgRnVsbENvbnRlbnQpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90Owor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwv
Ym9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlv
bjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRv
Y3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEp
OworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisgICAgICAg
IGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwg
bnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJv
dW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOworCisgICAgICAgIC8vIFdlIGV4
cGVjdCB0aGUgNSBjaGFyYWN0ZXJzICJIZWxsbyIsIGJ1dCB0aGVyZSdzIGEgc3BhY2UgYmVmb3Jl
IHRoZSAnSCcsIGFuZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlICdvJworICAgICAgICBFWFBFQ1RfRVEo
cGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgN3UpOworCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50
ZXh0KClbMV0sICdIJyk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbNV0sICdvJyk7
CisKKyAgICAgICAgLy8gVGhlICJIIiBmcm9tIEhlbGxvIGhhcyB0aGUgcmVjdDogOC4wMDAwMDAg
NTc0LjAwMDAwMCAxMS41NTUyMDAgMTYuMDAwMDAwCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5j
aGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludE1ha2UoMTMsIDU4MCkpLCAxdSk7CisKKyAgICAg
ICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRo
ZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2lu
dCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKworICAg
ICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZk
aWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25zKQorewor
ICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICAvLyBTbmFw
c2hvdCBhIHN1YnJlZ2lvbiBjb250YWluZWQgZW50aXJlbHkgd2l0aGluIHRoZSB2aWV3CisgICAg
YXV0byBzbmFwc2hvdENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFJlY3Q6
TlNNYWtlUmVjdCgyMDAsIDE1MCwgNDAwLCAzMDApXTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0
aW9uIHNldFNuYXBzaG90V2lkdGg6QDQwMF07CisKKyAgICBbd2ViVmlldyBfdGFrZVBERlNuYXBz
aG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQ
REZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAg
ICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0
TWFrZSgwLCAwLCA0MDAsIDMwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIGZ1bGwg
cGFnZSAnc3BhY2UnIGNoYXJhY3RlcgorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVy
Q291bnQoKSwgMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAzMik7CisK
KyAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50
IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9y
QXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsK
KworICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9GaWxlOkAiL1ZvbHVtZXMvRGF0YS9S
ZWFsTGliZXJ0eUhvbWUvc3VicmVnaW9uLnBkZiIgYXRvbWljYWxseTpZRVNdOworCisgICAgICAg
IGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRh
a2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNuYXBzaG90ID0gZmFsc2U7CisKKyAgICAvLyBTbmFw
c2hvdCBhIHJlZ2lvbiBsYXJnZXIgdGhhbiB0aGUgdmlldworICAgIFtzbmFwc2hvdENvbmZpZ3Vy
YXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEyMDAsIDEyMDApXTsKKyAgICBbc25hcHNo
b3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDEyMDBdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9j
dW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7
CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAg
YXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBu
dWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91
bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKKworICAgICAgICAvLyBBIHBp
eGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGlu
IHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKwor
ICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28g
YmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBp
biB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0
UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisK
KyAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvRmlsZTpAIi9Wb2x1bWVzL0RhdGEvUmVh
bExpYmVydHlIb21lL3N1YnJlZ2lvbi5wZGYiIGF0b21pY2FsbHk6WUVTXTsKKworICAgICAgICBk
aWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtl
U25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCit9CisKK1RFU1QoUERG
U25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBz
aG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAwKV0pOworCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAw
PkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRh
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBz
aG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDN1KTsK
KworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNU
X05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVj
dChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVh
dGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgNSBjaGFy
YWN0ZXJzICJIZWxsbyIsIGJ1dCB0aGVyZSdzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVy
IGJlZm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5lIGFmdGVyIHRoZSAnbycKKyAgICAgICAgRVhQ
RUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDd1KTsKKworICAgICAgICBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoMSk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1h
a2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOwor
CisgICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3RlciBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgYSBm
dWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJh
Y3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIp
OworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgyKTsKKyAgICAgICAgRVhQRUNUX05F
KHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChw
YWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5j
aGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBUaGUgb25seSBjaGFyYWN0ZXIgb24gdGhl
IHRoaXJkIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQ
RUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERG
U25hcHNob3QsIExpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAxNTAwMCldKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPVwiLXdlYmtpdC1saW5lLWJveC1j
b250YWluOiBnbHlwaHNcIj48YSBocmVmPVwiaHR0cHM6Ly93ZWJraXQub3JnL1wiPkNsaWNrIG1l
PC9hPjwvZGl2PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1
dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90
RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDJ1KTsKKwor
ICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05F
KHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChw
YWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVV
bmNoZWNrZWQoMjU1LCAyNTUsIDI1NSkpOworCisgICAgICAgIGF1dG8gYW5ub3RhdGlvbnMgPSBw
YWdlLT5hbm5vdGF0aW9ucygpOworICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgp
LCAxdSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFubm90YXRpb25zWzBdLmlzTGluaygpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0VxdWFsOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgRVhQ
RUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDExdSk7CisgICAgICAgIEVYUEVDVF9FUShw
YWdlLT50ZXh0KClbMV0sICdDJyk7CisKKyAgICAgICAgYXV0byBjUmVjdCA9IHBhZ2UtPnJlY3RG
b3JDaGFyYWN0ZXJBdEluZGV4KDEpOworICAgICAgICBhdXRvIGNNaWRwb2ludCA9IENHUG9pbnRN
YWtlKENHUmVjdEdldE1pZFgoY1JlY3QpLCBDR1JlY3RHZXRNaWRZKGNSZWN0KSk7CisgICAgICAg
IGF1dG8gYW5ub3RhdGlvbkJvdW5kcyA9IGFubm90YXRpb25zWzBdLmJvdW5kcygpOworCisgICAg
ICAgIEVYUEVDVF9UUlVFKENHUmVjdENvbnRhaW5zUG9pbnQoYW5ub3RhdGlvbkJvdW5kcywgY01p
ZHBvaW50KSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwg
SW5saW5lTGlua3MpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVmPVwiaHR0cHM6Ly93ZWJraXQub3JnL1wiPkNsaWNr
IG1lPC9hPiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0
aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8g
ZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0
YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKworICAg
ICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBh
Z2UsIG51bGxwdHIpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBsaW5r
IGhlcmUsIGJ1dCBkdWUgdG8gdGhlIHdheSB3ZSBnYXRoZXIgbGlua3MgZm9yIGFubm90YXRpb24g
dXNpbmcgdGhlIFJlbmRlcklubGluZSB0cmVlCisgICAgICAgIC8vIGl0IGlzIG1pc3NlZC4KKwor
Ly8gICAgICAgIGF1dG8gYW5ub3RhdGlvbnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOworLy8gICAg
ICAgIEVYUEVDVF9FUShhbm5vdGF0aW9ucy5zaXplKCksIDF1KTsKKy8vICAgICAgICBFWFBFQ1Rf
VFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoW2Fu
bm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworfQorCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MjIxMjIzNzZjNzc4OTgzMTI4NzJhODBkOWIxMWFjZmRlMThkNTg0Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaApAQCAtMCwwICsx
LDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFBERktpdC9QREZL
aXQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7Cit9CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworLy8gQW5ub3RhdGlvbnMgYXJlbid0IHJlZiBjb3VudGVkLiBUaGV5
IHJlbWFpbiB2YWxpZCBhcyBsb25nIGFzIHRoZWlyIGNvbnRhaW5pbmcgVGVzdFBERlBhZ2UgcmVt
YWlucyB2YWxpZAorY2xhc3MgVGVzdFBERkFubm90YXRpb24geworcHVibGljOgorICAgIFRlc3RQ
REZBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKik7CisKKyAgICBib29sIGlzTGluaygpIGNvbnN0
OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBOU1VSTCAqbGlua1VSTCgpIGNvbnN0
OworICAgIAorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8UERGQW5ub3RhdGlvbj4gbV9hbm5vdGF0
aW9uOworfTsKKworY2xhc3MgVGVzdFBERlBhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXN0UERG
UGFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERlBhZ2U+IGNyZWF0ZShQREZQ
YWdlICopOworCisgICAgY29uc3QgVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPiYgYW5ub3RhdGlv
bnMoKTsKKyAgICBzaXplX3QgY2hhcmFjdGVyQ291bnQoKSBjb25zdDsKKyAgICBTdHJpbmcgdGV4
dCgpIGNvbnN0OworICAgIENHUmVjdCByZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleChzaXplX3QpIGNv
bnN0OworICAgIHNpemVfdCBjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCkgY29uc3Q7Cisg
ICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3JBdFBv
aW50KGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFRlc3RQREZQYWdl
KFBERlBhZ2UgKik7CisgICAgUmV0YWluUHRyPFBERlBhZ2U+IG1fcGFnZTsKKyAgICBPcHRpb25h
bDxWZWN0b3I8VGVzdFBERkFubm90YXRpb24+PiBtX2Fubm90YXRpb25zOworfTsKKworY2xhc3Mg
VGVzdFBERkRvY3VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERkRvY3VtZW50PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGRG9jdW1lbnQ+IGNyZWF0ZUZyb21EYXRhKE5T
RGF0YSAqKTsKKworICAgIHZvaWQgZHVtcCgpOworCisgICAgc2l6ZV90IHBhZ2VDb3VudCgpIGNv
bnN0OworICAgIFRlc3RQREZQYWdlKiBwYWdlKHNpemVfdCBpbmRleCk7CisKK3ByaXZhdGU6Cisg
ICAgVGVzdFBERkRvY3VtZW50KE5TRGF0YSAqKTsKKworICAgIFJldGFpblB0cjxQREZEb2N1bWVu
dD4gbV9kb2N1bWVudDsKKyAgICBWZWN0b3I8UmVmUHRyPFRlc3RQREZQYWdlPj4gbV9wYWdlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y1MzdhNTZmODY4ODg2YTc1
YjE4MmM3Y2NlYmZiNzk5ZDdkMWY3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQuaCIKKwor
I2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisjaWYgUExBVEZPUk0o
TUFDKQorQ0dSZWN0IHRvQ0dSZWN0KE5TUmVjdCByZWN0KSB7IHJldHVybiBOU1JlY3RUb0NHUmVj
dChyZWN0KTsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9pbnQoQ0dQb2ludCBwb2ludCkgeyByZXR1
cm4gTlNQb2ludEZyb21DR1BvaW50KHBvaW50KTsgfQorI2Vsc2UKK0NHUmVjdCB0b0NHUmVjdChD
R1JlY3QgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9pbnQoQ0dQ
b2ludCBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KKyNlbmRpZgorCisvLyBBbm5vdGF0aW9ucwor
VGVzdFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKmFubm90
YXRpb24pCisgICAgOiBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKK3sKK30KKworYm9vbCBUZXN0
UERGQW5ub3RhdGlvbjo6aXNMaW5rKCkgY29uc3QKK3sKKyAgICBib29sIGlzTGluayA9IFttX2Fu
bm90YXRpb24uZ2V0KCkudHlwZSBpc0VxdWFsVG9TdHJpbmc6UERGQW5ub3RhdGlvblN1YnR5cGVM
aW5rXTsKKyAgICBpZiAoaXNMaW5rKQorICAgICAgICBBU1NFUlQoW21fYW5ub3RhdGlvbi5nZXQo
KS5hY3Rpb24gaXNLaW5kT2ZDbGFzczpbUERGQWN0aW9uVVJMIGNsYXNzXV0pOworICAgIHJldHVy
biBpc0xpbms7Cit9CisKK0NHUmVjdCBUZXN0UERGQW5ub3RhdGlvbjo6Ym91bmRzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdG9DR1JlY3QobV9hbm5vdGF0aW9uLmdldCgpLmJvdW5kcyk7Cit9CisK
K05TVVJMICpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCgpIGNvbnN0Cit7CisgICAgaWYgKCFp
c0xpbmsoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gKChQREZBY3Rpb25VUkwg
KiltX2Fubm90YXRpb24uZ2V0KCkuYWN0aW9uKS5VUkw7Cit9CisKKy8vIFBhZ2VzCisKK1JlZjxU
ZXN0UERGUGFnZT4gVGVzdFBERlBhZ2U6OmNyZWF0ZShQREZQYWdlICpwYWdlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRlc3RQREZQYWdlKHBhZ2UpKTsKK30KKworVGVzdFBERlBhZ2U6
OlRlc3RQREZQYWdlKFBERlBhZ2UgKnBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwor
Y29uc3QgVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPiYgVGVzdFBERlBhZ2U6OmFubm90YXRpb25z
KCkKK3sKKyAgICBpZiAoIW1fYW5ub3RhdGlvbnMpIHsKKyAgICAgICAgbV9hbm5vdGF0aW9ucyA9
IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4oKTsKKyAgICAgICAgZm9yIChQREZBbm5vdGF0aW9u
ICphbm5vdGF0aW9uIGluIG1fcGFnZS5nZXQoKS5hbm5vdGF0aW9ucykKKyAgICAgICAgICAgIG1f
YW5ub3RhdGlvbnMtPmFwcGVuZCh7IGFubm90YXRpb24gfSk7CisgICAgfQorCisgICAgcmV0dXJu
ICptX2Fubm90YXRpb25zOworfQorCitzaXplX3QgVGVzdFBERlBhZ2U6OmNoYXJhY3RlckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLmdldCgpLm51bWJlck9mQ2hhcmFjdGVyczsK
K30KKworU3RyaW5nIFRlc3RQREZQYWdlOjp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
YWdlLmdldCgpLnN0cmluZzsKK30KKworQ0dSZWN0IFRlc3RQREZQYWdlOjpyZWN0Rm9yQ2hhcmFj
dGVyQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KFtt
X3BhZ2UgY2hhcmFjdGVyQm91bmRzQXRJbmRleDppbmRleF0pOworfQorCitzaXplX3QgVGVzdFBE
RlBhZ2U6OmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50IHBvaW50KSBjb25zdAoreworICAg
IHJldHVybiBbbV9wYWdlIGNoYXJhY3RlckluZGV4QXRQb2ludDp0b1BsYXRmb3JtUG9pbnQocG9p
bnQpXTsKK30KKworQ0dSZWN0IFRlc3RQREZQYWdlOjpib3VuZHMoKSBjb25zdAoreworICAgIHJl
dHVybiB0b0NHUmVjdChbbV9wYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveE1lZGlhQm94
XSk7Cit9CisKKworV2ViQ29yZTo6Q29sb3IgVGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludChpbnQg
eCwgaW50IHkpIGNvbnN0Cit7CisgICAgYXV0byBib3VuZHNSZWN0ID0gYm91bmRzKCk7CisgICAg
YXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dD
b2xvclNwYWNlU1JHQikpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKE5VTEwsIGJvdW5kc1JlY3Quc2l6ZS53aWR0aCwgYm91bmRzUmVjdC5zaXplLmhl
aWdodCwgOCwgMCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKworICAgIGF1dG8gY2dQYWdlID0gbV9w
YWdlLmdldCgpLnBhZ2VSZWY7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlv
bnMoY29udGV4dC5nZXQoKSwgY2dQYWdlLCBudWxscHRyKTsKKworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIHBpeGVsID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKUNHQml0bWFwQ29udGV4dEdldERh
dGEoY29udGV4dC5nZXQoKSk7CisgICAgc2l6ZV90IGkgPSAoeSAqIHggKiA0KSArICh4ICogNCk7
CisKKyAgICBhdXRvIHIgPSBwaXhlbFtpXTsKKyAgICBhdXRvIGcgPSBwaXhlbFtpICsgMV07Cisg
ICAgYXV0byBiID0gcGl4ZWxbaSArIDJdOworICAgIGF1dG8gYSA9IHBpeGVsW2kgKyAzXTsKKwor
ICAgIGlmICghYSkKKyAgICAgICAgcmV0dXJuIHsgMCwgMCwgMCwgMCB9OworICAgIHJldHVybiB7
IHIgKiAyNTUgLyBhLCBnICogMjU1IC8gYSwgYiAqIDI1NSAvIGEsIGEgfTsKK30KKworLy8gRG9j
dW1lbnRzCisKK1JlZjxUZXN0UERGRG9jdW1lbnQ+IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJv
bURhdGEoTlNEYXRhICpkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRlc3RQREZE
b2N1bWVudChkYXRhKSk7Cit9CisKK1Rlc3RQREZEb2N1bWVudDo6VGVzdFBERkRvY3VtZW50KE5T
RGF0YSAqZGF0YSkKKyAgICA6IG1fZG9jdW1lbnQoYWRvcHROUyhbW1BERkRvY3VtZW50IGFsbG9j
XSBpbml0V2l0aERhdGE6ZGF0YV0pKQorICAgICwgbV9wYWdlcyhwYWdlQ291bnQoKSkKK3sKK30K
Kworc2l6ZV90IFRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50XTsKK30KKworVGVzdFBERlBhZ2UqIFRlc3RQREZEb2N1
bWVudDo6cGFnZShzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IHBhZ2VDb3VudCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIW1fcGFnZXNbaW5kZXhdKQorICAg
ICAgICBtX3BhZ2VzW2luZGV4XSA9IFRlc3RQREZQYWdlOjpjcmVhdGUoW21fZG9jdW1lbnQgcGFn
ZUF0SW5kZXg6aW5kZXhdKTsKKyAgICByZXR1cm4gbV9wYWdlc1tpbmRleF0uZ2V0KCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378336</attachid>
            <date>2019-09-08 15:52:26 -0700</date>
            <delta_ts>2019-09-08 16:24:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190908155226.patch</filename>
            <type>text/plain</type>
            <size>61516</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uMjYzZWU2ZTJmYjU3ZmZkODc2MzdjODQwZTQ1NjMx
MDk1N2Y4ZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAg
IENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKTogRG9uJ3QgcGFpbnQg
dGhlIGRlYnVnIGNvbG9yIG91dHNpZGUgb2YgdGhlIEZyYW1lUmVjdC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdCk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRQaGFzZS5oOiBBZGQgIkFubm90YXRlTGlua3MiIG9wdGlvbiB0byBhbHdheXMgZ2F0
aGVyIGFuZCBhbm5vdGF0aW9uIGxpbmtzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzT3V0bGluZUFu
bm90YXRpb24gY29uc3QpOiBBbHNvIHJldHVybiB0cnVlIHdoZW4gdGhlIFBhaW50T3B0aW9ucyBp
bmNsdWRlICJBbm5vdGF0ZUxpbmtzIgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZl
cmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNi
NjE5OThjNThlY2VhZDdlY2ZlMDA0NjFjOWJiYTA3ZDg2MDYzMWMuLjU2MmQ0Y2IxN2QyMmU3ZjU1
MTA0YjZmNDgzODA3MTMzZjI4OTEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTkt
MDktMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gc2F2ZSBhIFBERiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhpcyBpcyByZWZhY3RvcmluZyBhIGNvbWJpbmF0aW9uIG9mICJzbmFwc2hv
dEZpcnN0UGFnZSIgUERGIHByaW50aW5nIGNvZGUgYW5kIHRoZQorICAgICAgICAidGFrZVNuYXBz
aG90IiBBUEkgY29kZSB0byBjYXB0dXJlIHRoZSBvbi1zY3JlZW4gdmlzaWJsZSBwYWdlIHRvIGEg
UERGIGF0IGZ1bGwgZmlkZWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKTogTW92
ZSB0byBjcm9zcyBwbGF0Zm9ybSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZGZTbmFwc2hvdEF0U2l6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTog
SW5zdGVhZCBvZiBhc3N1bWluZyAxIHBhZ2UgY2FwcGVkIGF0IDIwMCBpbmNoZXMsCisgICAgICAg
ICAgcGFnaW5hdGUgZXZlcnkgMjAwIGluY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6cGFpbnRTbmFwc2hvdEF0U2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyLXByaXZhdGUtYnJvd3NpbmcuaHR0cHMuaHRt
bCBhcyBhbiBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGEzNTYxNTFm
N2UyY2ZmMWFiZDdhZjY4ZTEyM2Y5YTE3Y2VjMWM3MTEuLmVhZjg5ZTMyODNkNWZiNzViOThkNzY4
MDlkNDdiYzUxODBjYTdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxMTMs
OSArNDExMywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFdh
cm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJlbnQsIGRv
bid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5pbmdDb2xv
ciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisKKyAgICBp
ZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1JlY3QgPSBm
cmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7Cisg
ICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVy
VmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4
OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2NDg1ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0
aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQgaW5jbHVk
ZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNiLi43ZmNi
MjhmYjg0NWY4ZmViMjQ0OWViYjJiMTNmZTQ1MjRlNTBjNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWludEJlaGF2
aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwg
OSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMu
CiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBUaWxlRmly
c3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3MgICAgICAg
ICAgICAgICA9IDEgPDwgMTIsIC8vIENvbGxlY3QgYWxsIHJlbmRlcmVycyB3aXRoIGxpbmtzIHRv
IGFubm90YXRlIHRoZWlyIFVSTHMgKGUuZy4gUERGcykKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAy
ZDA2MmI1ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4wMzU3NDEzYWE4ODY1YTk3
ZDQ0ZTcxYjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0bykKIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3VtZW50KCkucHJpbnRpbmco
KTsKKyAgICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgKGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50
OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5N2NlOGVlZmYwYWI2Nzcz
YTA2ZjRjNzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2ZWM1ODUwYWQ3OTY5ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTUwMzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9X
S1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogICAgIH0pOwog
fQogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1l
ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFt
ZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHNu
YXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlv
bi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBzaG90
Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJl
Y3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNpZiBQ
TEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hh
bmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYzMDA3
ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3NjlhNGVjNDA5ZDkyZjMxMDM0
NTliOWZiY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxl
bWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19XQVRDSApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmE3NTg4MWJlNmQyMmY3
M2YyNmUzNjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZkMTA1MGQyMGE0N2JhMzE1
ZWExYWFmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03NzUwLDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKIH0KICNlbmRpZgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBEcmF3
VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVu
Y2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
VG9QREYoZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKQog
ewogICAgIEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODEx
ZmE1Zi4uNmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYzNjE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSArMzYwLDEwIEBAIHN0cnVj
dCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4g
Tm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5ICsxMTcxLDEwIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJG
cmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGRy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHVp
bnQzMl90IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNr
RnVuY3Rpb24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
M2QzNDE0MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4xMzQ0YTUxNDdiOTI0NDEz
MmY3NWNjZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBE
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1
ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRp
YWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
Ym9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZl
cmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0
aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9u
UmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBNYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3RpdmUsIGJvb2wgcmVnaXN0
ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0ZDAwZTIzNzY0OWMwNGQy
MmQ0ZTQyMDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdiZWNiNGM3ODBhM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzIw
LDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVy
OihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9IDE7CiAg
ICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25hcHNob3RG
aXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcgUERGcyB0
YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAwICogNzI7
IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5jaGVzCiAg
ICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwZDhkOGZkYmYx
YTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNjMTAzZjRkNWE5YWMxODZk
OWVkN2VlZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxE
cmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0
YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50
U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDg1YTQzYjU0Nzlj
MTU5ZTQwZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZhM2I5Njg1ODMyN2JmMDI3
N2U1NDVhMjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsyMzIsNTggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2Fk
KCkKICAgICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQbHVnaW46ZG9jdW1lbnQg
PyBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwogfQotICAgIAorCitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0IHJlY3Qs
IEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRhdGFDb25zdW1lciA9IGFk
b3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBh
dXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250
ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7CisKKyAg
ICBpbnQ2NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVpZ2h0KCk7CisgICAgaW50
NjRfdCBuZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVtYWluaW5nSGVpZ2h0ID4g
MCkgeworICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWlnaHQgbGltaXQgb2YgMjAw
IGluY2hlcyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0IG9uZSBQREYgcGFnZSBh
dCBhIHRpbWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQ2NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAgICAgYml0bWFwU2l6ZS5z
ZXRIZWlnaHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdlSGVpZ2h0KSk7CisgICAg
ICAgIHJlY3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZWN0LnNl
dFkobmV4dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1
dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVMTCwgKGNvbnN0IFVJbnQ4
ICopJm1lZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBhdXRvIGRpY3Rpb25hcnkg
PSAoQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0dQREZDb250
ZXh0TWVkaWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgpCisgICAgICAgIH07CisK
KyAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIGRpY3Rpb25h
cnkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250
ZXh0LmdldCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgp
KTsKKworICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlv
bnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAg
Q0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgICAgICBuZXh0UmVj
dFkgKz0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWluaW5nSGVpZ2h0IC09IG1h
eFBhZ2VIZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5n
ZXQoKSk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUyMWJlMTQ4YTRjN2Q2Yjk3
MjY2MTcwNC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4ODRiODU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMDYsNyAr
MjMwNiw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1cm4gc25hcHNob3RBdFNp
emUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U25h
cHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQordm9pZCBXZWJQYWdlOjpw
YWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJp
dG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKICAgICBJ
bnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9yaXpvbnRhbFNjYWxlRmFj
dG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7CkBAIC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBX
ZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAgICBhdXRvIGRhdGFDb25z
dW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKLSAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRo
KCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRy
KSk7Ci0KLSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgbnVsbHB0
cik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5n
ZXQoKSB9OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwotICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29udGV4dEVuZFBhZ2UocGRm
Q29udGV4dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0KIFJlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAtNDc0OSw2ICs0NzE2LDM0
IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3Zv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0
byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEludFNpemUg
c25hcHNob3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRT
aXplKHJlY3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFNpemUgPSB7IGZy
YW1lVmlldy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhpbnQpcmVjdC0+eCgpLCAo
aW50KXJlY3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAgYXV0byBvcmlnaW5hbExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExh
eW91dFJlY3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5hbFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2
aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3Mp
OworCisgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOworICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5j
ZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0
YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUx
N2FhMmQxMjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUzOWZjYjQ2NjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODgxLDYgKzg4
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJ
RCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENh
bGxiYWNrSUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJp
bnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYwNyw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBT
bmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUo
V2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMTYy
MSw2ICsxNjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9pZCBwYWludFNuYXBzaG90
QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
U25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcyYjY2OTUwNDg5Y2FlMzcu
LmFlZTcwNmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
Mzg4LDYgKzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291
bnQpIFN5bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDBhNjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjViZDUuLjc3MTFjNDZjMjZl
MjQyODM3NGYyM2M5NzIwNGEzOTAwZTdhMmVmOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wOS0wOCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzYXZl
IGEgUERGIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3LgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4K
KyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYjoKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0
ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxp
ZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBz
YXZlQXNQREY6XSk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50
Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRvQ0dSZWN0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnRvUGxhdGZvcm1Qb2ludCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGQW5ub3RhdGlvbjo6VGVzdFBERkFubm90YXRpb24pOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VGVzdFBERkFubm90YXRpb246OmlzTGluayBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6Ym91bmRzIGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0aW9uOjpsaW5rVVJMIGNvbnN0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdFBERlBhZ2U6OlRlc3RQREZQYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRlc3RQREZQYWdlOjphbm5vdGF0aW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGUGFnZTo6Y2hhcmFjdGVyQ291bnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERlBhZ2U6OnRleHQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBE
RlBhZ2U6OnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQgY29uc3QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50IGNvbnN0KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpUZXN0UERGRG9jdW1lbnQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERkRvY3VtZW50OjpwYWdlKToKKwogMjAxOS0w
OS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUg
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlci1wcml2YXRlLWJyb3dzaW5n
Lmh0dHBzLmh0bWwgYXMgYW4gQVBJIHRlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L01pbmlCcm93c2VyLmVudGl0bGVtZW50cyBiL1Rvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2Vy
LmVudGl0bGVtZW50cwppbmRleCBjOWVhMzc2NDY4YTY0OTk3NmM5YWUzOGYyOTlhMzI1ZGNiNGRh
ZGI5Li5lNGMyYmExODBmMzk1ZGNhMWQzNDFkYjY2NmQ1YzM0YzJlYTNlYzJlIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCkBAIC0yLDIwICsyLDIwIEBACiA8
IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRw
Oi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJz
aW9uPSIxLjAiPgogPGRpY3Q+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8
L2tleT4KKwk8dHJ1ZS8+CiAJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZGV2aWNlLnVzYjwva2V5
PgogCTx0cnVlLz4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNlbGVjdGVk
LnJlYWQtb25seTwva2V5PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZpbGVzLnVzZXItc2Vs
ZWN0ZWQucmVhZC13cml0ZTwva2V5PgorCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0
eS5uZXR3b3JrLmNsaWVudDwva2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0
eS50ZW1wb3JhcnktZXhjZXB0aW9uLmZpbGVzLmFic29sdXRlLXBhdGgucmVhZC1vbmx5PC9rZXk+
CisJPHN0cmluZz4vPC9zdHJpbmc+CiAJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5
LWV4Y2VwdGlvbi5tYWNoLWxvb2t1cC5nbG9iYWwtbmFtZTwva2V5PgogCTxhcnJheT4KIAkJPHN0
cmluZz5jb20uYXBwbGUuU2FmYXJpLlNhZmVCcm93c2luZy5TZXJ2aWNlPC9zdHJpbmc+CiAJCTxz
dHJpbmc+Y29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nRGFlbW9uPC9zdHJpbmc+CiAJPC9hcnJh
eT4KLQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5hcHAtc2FuZGJveDwva2V5PgotCTx0cnVlLz4K
LQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5uZXR3b3JrLmNsaWVudDwva2V5PgotCTx0cnVlLz4K
LQk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLmZpbGVzLmFic29s
dXRlLXBhdGgucmVhZC1vbmx5PC9rZXk+Ci0JPHN0cmluZz4vPC9zdHJpbmc+CiA8L2RpY3Q+CiA8
L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIuaAppbmRleCBjNWI5ZDU0YTUyMjA0MjYzNmI3ODgyNTc1NjQ0ZTNhMDI0YTVkOTQ2Li5kZmRi
NjQwMTNmMDE2YmQwYmRhNTIwYTVlZThkMDhjMzI5NWJmZGRjIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaApAQCAtNDYsNiArNDYsOCBAQCBA
aW50ZXJmYWNlIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsK
IAogLSAoSUJBY3Rpb24pb3BlbkxvY2F0aW9uOihpZClzZW5kZXI7CiAKKy0gKElCQWN0aW9uKXNh
dmVBc1BERjooaWQpc2VuZGVyOworCiAtIChJQkFjdGlvbilmZXRjaDooaWQpc2VuZGVyOwogLSAo
SUJBY3Rpb24pc2hhcmU6KGlkKXNlbmRlcjsKIC0gKElCQWN0aW9uKXJlbG9hZDooaWQpc2VuZGVy
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpp
bmRleCA0Yjk5MDU3YTAzY2UwNjYwNGIyZDMxNTA3NmMwYzRhMTZlMDQ0ODJmLi40ZDQ1NzM5NmYw
NjU0ZTBmOWVlODM0ZjkxNGQxZGRhMDI5ZmU2Zjk3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtOTMsNiArOTMsMTEgQEAgLSAoSUJB
Y3Rpb24pZm9yY2VSZXBhaW50OihpZClzZW5kZXIKICAgICBbc2VsZiBkb2VzTm90UmVjb2duaXpl
U2VsZWN0b3I6X2NtZF07CiB9CiAKKy0gKElCQWN0aW9uKXNhdmVBc1BERjooaWQpc2VuZGVyCit7
CisgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOworfQorCiAtIChJQkFj
dGlvbilnb0JhY2s6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxl
Y3RvcjpfY21kXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54
aWIgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCmluZGV4IDU0NmE2MGYwMzJl
NzJlNDJiNmE2YzM2YzQ5OGUyOGYxMzMyMzc1YjMuLjA3MTYzNDZjNTI5N2MzNjAwYzQ4YjdjZjA0
YzQzMTI4ZGU2YmYyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVu
dS54aWIKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgpAQCAtMSw3ICsx
LDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZG9jdW1lbnQg
dHlwZT0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIzLkNvY29hLlhJQiIgdmVyc2lvbj0iMy4w
IiB0b29sc1ZlcnNpb249IjEzNzcxIiB0YXJnZXRSdW50aW1lPSJNYWNPU1guQ29jb2EiIHByb3Bl
cnR5QWNjZXNzQ29udHJvbD0ibm9uZSI+Cis8ZG9jdW1lbnQgdHlwZT0iY29tLmFwcGxlLkludGVy
ZmFjZUJ1aWxkZXIzLkNvY29hLlhJQiIgdmVyc2lvbj0iMy4wIiB0b29sc1ZlcnNpb249IjE0NDkw
LjcwIiB0YXJnZXRSdW50aW1lPSJNYWNPU1guQ29jb2EiIHByb3BlcnR5QWNjZXNzQ29udHJvbD0i
bm9uZSI+CiAgICAgPGRlcGVuZGVuY2llcz4KLSAgICAgICAgPHBsdWdJbiBpZGVudGlmaWVyPSJj
b20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbiIgdmVyc2lvbj0iMTM3NzEiLz4K
KyAgICAgICAgPHBsdWdJbiBpZGVudGlmaWVyPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5D
b2NvYVBsdWdpbiIgdmVyc2lvbj0iMTQ0OTAuNzAiLz4KICAgICA8L2RlcGVuZGVuY2llcz4KICAg
ICA8b2JqZWN0cz4KICAgICAgICAgPGN1c3RvbU9iamVjdCBpZD0iLTIiIHVzZXJMYWJlbD0iRmls
ZSdzIE93bmVyIiBjdXN0b21DbGFzcz0iTlNBcHBsaWNhdGlvbiI+CkBAIC0xMzMsNiArMTMzLDEy
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWN0aW9uIHNlbGVjdG9y
PSJzYXZlRG9jdW1lbnRBczoiIHRhcmdldD0iLTEiIGlkPSIzNjMiLz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9jb25uZWN0aW9ucz4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L21lbnVJdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51SXRlbSB0
aXRsZT0iU2F2ZSBBcyBQREbigKYiIGtleUVxdWl2YWxlbnQ9IlMiIGlkPSJnbVMtM1Etb0xzIj4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGlmaWVyTWFzayBrZXk9ImtleUVx
dWl2YWxlbnRNb2RpZmllck1hc2siIG9wdGlvbj0iWUVTIiBjb21tYW5kPSJZRVMiLz4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbm5lY3Rpb25zPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0ic2F2ZUFzUERGOiIgdGFyZ2V0
PSItMSIgaWQ9IjI1VC1JZC0zMzQiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9jb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21lbnVJdGVtPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51SXRlbSB0aXRsZT0iUmV2ZXJ0IHRvIFNh
dmVkIiBpZD0iMTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1vZGlmaWVy
TWFzayBrZXk9ImtleUVxdWl2YWxlbnRNb2RpZmllck1hc2siLz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGNvbm5lY3Rpb25zPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvV0sxQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCA3ZWQ2YzNkMmY5MDY5MzczNzY1
NDczMWM3MzRiODEzOGIxNTJmZTYzLi42ZDY2YmZiMGE1ZjM5Yzk4ZDI5Mjc3YTZjNmFjZWQ5Mzgw
ZGQyY2I2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQpAQCAtMTM0LDYgKzEzNCw5IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRl
bTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IFttZW51SXRlbSBh
Y3Rpb25dOwogCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2F2ZUFzUERGOikpCisgICAg
ICAgIHJldHVybiBOTzsKKwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21JbjopKQog
ICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUluXTsKICAgICBpZiAoYWN0aW9uID09IEBzZWxl
Y3Rvcih6b29tT3V0OikpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCmluZGV4IGY3OGRiZGZmMDJmZWQ5NmMyODUxOTIxZDM0ZGM0YTIy
ZjQzYTJlNWYuLmNmNGQzYWYxNzgxYTIwNGM0ZGQ5ZmJlYzA2Y2U4NTNkMmY3MjAzZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
CkBAIC0yMDcsNiArMjA3LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVt
ICopbWVudUl0ZW0KIHsKICAgICBTRUwgYWN0aW9uID0gbWVudUl0ZW0uYWN0aW9uOwogCisgICAg
aWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2F2ZUFzUERGOikpCisgICAgICAgIHJldHVybiBZRVM7
CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAgICAgICAgcmV0dXJu
IFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbU91dDop
KQpAQCAtODE0LDQgKzgxNywxNyBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGluY2x1ZGVTZW5zaXRpdmVNZWRpYURldmljZURldGFpbHM6KHZvaWQgKAogICAgIGRlY2lz
aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKKy0gKElCQWN0aW9uKXNhdmVBc1BERjooaWQpc2VuZGVy
Cit7CisgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05TU2F2ZVBhbmVsIHNhdmVQYW5lbF07Cisg
ICAgcGFuZWwuYWxsb3dlZEZpbGVUeXBlcyA9IEBbIEAicGRmIiBdOworICAgIFtwYW5lbCBiZWdp
blNoZWV0TW9kYWxGb3JXaW5kb3c6c2VsZi53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6XihOU0lu
dGVnZXIgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3BvbnNlT0sp
IHsKKyAgICAgICAgICAgIFtfd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRp
b246bmlsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgICAgICAgICAgW3BkZlNuYXBzaG90RGF0YSB3cml0ZVRvVVJM
OltwYW5lbCBVUkxdIG9wdGlvbnM6MCBlcnJvcjpuaWxdOworICAgICAgICAgICAgfV07CisgICAg
ICAgIH0KKyAgICB9XTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V1RGTGlicmFyeS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdURkxpYnJhcnkueGNjb25maWcKaW5kZXggNzU1NWY4
YTAyZTE3YzZlODdlZGZhM2EyOGQ1MDY5MjhiMGMxZmM0ZS4uN2QwMzZlYjlhYmI5MDM1YjVjZTUw
NTkxZTljZDlkZjZiOWRlNmJlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9UZXN0V1RGTGlicmFyeS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXVEZMaWJyYXJ5LnhjY29uZmlnCkBAIC0yOCwzICsyOCw1
IEBACiBQUk9EVUNUX05BTUUgPSBUZXN0V1RGOwogU0tJUF9JTlNUQUxMID0gWUVTOwogR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CisKK1NZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BB
VEhTID0gJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyAk
KFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MgJChTREtST09UKSQoU1lT
VEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAk
KGluaGVyaXRlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZwppbmRleCAyZGU2MWY3
OTU0YjUwODk1MzA5YThjNGE2OGYxMjVkNDdhYTgwNDlkLi40NGUxYzVhMmFlM2Q1Mzg4MGZiYzQx
NGYwYTJmNjBiMWNiY2RjYTMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL1Rlc3RXZWJLaXRBUElMaWJyYXJ5LnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWcKQEAg
LTI4LDMgKzI4LDUgQEAKIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRBUEk7CiBTS0lQX0lOU1RB
TEwgPSBZRVM7CiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKKworU1lTVEVNX0ZS
QU1FV09SS19TRUFSQ0hfUEFUSFMgPSAkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL1By
aXZhdGVGcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jr
cyAkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1l
d29yay9GcmFtZXdvcmtzICQoaW5oZXJpdGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1V
dGlsaXRpZXMuaAppbmRleCBlMmZiNjkwMjRiYjE0OWUwMTU4ODY1NjBmZTRiNDM4YzY1OWI1MTM5
Li40ZDliNGQ3NDMyMGY1MGUyZjUxNDFhMzM3ZDI0MGU0MzMwOTdhZGUyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0zMyw4ICszMyw5IEBACiAjaW5jbHVkZSA8
c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi1PQkpDX0NMQVNTIE5TU3RyaW5nOworT0JK
Q19DTEFTUyBOU0NvbG9yOwogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5T
U3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZmIxMWRkZTUyNWIyZWJiNDY0ODE5YjYwMzZiYjE0NWM1YTM0Mjk4NC4u
ZmJkZDM2NWY2NWJkZDQ3OTM5ZmRlY2RjYThlN2NiZGQxNmQ3YmY5MCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTI1Niw2ICsyNTYsMTAgQEAKIAkJNTE0OTU4QkUxRjc0MjdBQzAwRTg3QkFE
IC8qIFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQgLyogV0tXZWJWaWV3
QXV0b2ZpbGxUZXN0cy5tbSAqLzsgfTsKIAkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0
b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxv
YlRvQmVEZWxldGVkLmh0bWwgKi87IH07CiAJCTUxNUJFMTcxMUQ0MjhFNEIwMEREN0M2OCAvKiBT
dG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE1QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxl
dGUubW0gKi87IH07CisJCTUxNjI4MTBEMjMyNUI5NzEwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjI4MTBD
MjMyNUI5NjQwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5tbSAqLzsgfTsKKwkJNTE2MjgxMTEyMzI1
QkM4NTAwQkI3RTQyIC8qIFBERktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyODExMDIzMjVCQzg1MDBCQjdFNDIgLyogUERG
S2l0LmZyYW1ld29yayAqLzsgfTsKKwkJNTE2MjgxMTMyMzI1QkNFOTAwQkI3RTQyIC8qIFBERktp
dC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTYyODExMjIzMjVCQ0U5MDBCQjdFNDIgLyogUERGS2l0LmZyYW1ld29yayAqLzsgfTsK
KwkJNTE2MjgxMTQyMzI1QkQzOTAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjI4MTBFMjMyNUI5OEYw
MEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQubW0gKi87IH07CiAJCTUxNjVGRTA0MjAxRUU2MjAw
MDlGN0VDMyAvKiBNZXNzYWdlUG9ydFByb3ZpZGVycy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjVGRTAzMjAxRUU2MTcwMDlGN0VDMyAvKiBNZXNz
YWdlUG9ydFByb3ZpZGVycy5tbSAqLzsgfTsKIAkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8q
IFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8q
IFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi87IH07CiAJCTUxNzE0RUI1MUNGOEM3
OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIzMUNGOEM3
NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovOyB9OwpAQCAt
MTc0NCw2ICsxNzQ4LDExIEBACiAJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZp
ZXdBdXRvZmlsbFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3QXV0b2Zp
bGxUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxNkUxRDQyODhG
RjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JlQmxvYlRo
ZW5EZWxldGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTBDMjMyNUI5
NjQwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBERlNuYXBzaG90Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTYyODEwRTIzMjVCOThGMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdFBERkRvY3VtZW50Lm1tOyBwYXRo
ID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTYyODEwRjIzMjVCOThGMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RQREZEb2N1bWVudC5oOyBwYXRoID0gY29jb2Ev
VGVzdFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTEw
MjMyNUJDODUwMEJCN0U0MiAvKiBQREZLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQ
REZLaXQuZnJhbWV3b3JrOyBwYXRoID0gUGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0RldmVs
b3Blci9TREtzL2lQaG9uZU9TLnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1BERktpdC5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBERVZFTE9QRVJfRElSOyB9OworCQk1MTYyODExMjIzMjVC
Q0U5MDBCQjdFNDIgLyogUERGS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0
LmZyYW1ld29yazsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUERGS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NUZFMDMyMDFFRTYxNzAwOUY3
RUMzIC8qIE1lc3NhZ2VQb3J0UHJvdmlkZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVzc2FnZVBvcnRQcm92aWRlcnMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElE
QkNsZWFudXAtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcx
NEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjgsNiArMjU3Nyw4IEBACiAJ
CQkJNUNGQUNGNjMyMjZGNzNDNjAwNTZDN0QwIC8qIGxpYmJvcmluZ3NzbC5hIGluIEZyYW1ld29y
a3MgKi8sCiAJCQkJN0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLywKIAkJCQk1NzhDQkQ2NzIwNEZCMkM4MDA4M0I5RjIgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1MTYyODExMTIz
MjVCQzg1MDBCQjdFNDIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJ
CTUxNjI4MTEzMjMyNUJDRTkwMEJCN0U0MiAvKiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8sCiAJCQkJN0EwMTBCQ0QxRDg3N0MwRDAwRURFNzJBIC8qIFF1YXJ0ekNvcmUuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNTc0RjU1RDIyMDRENDdGMDAwMjk0OEM2IC8qIFNl
Y3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKQEAgLTI2NjUsNiArMjY3
Niw4IEBACiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURy
aXZlci5tbSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLm1tICovLAorCQkJCTUxNjI4MTBGMjMyNUI5OEYwMEJCN0U0MiAvKiBU
ZXN0UERGRG9jdW1lbnQuaCAqLywKKwkJCQk1MTYyODEwRTIzMjVCOThGMDBCQjdFNDIgLyogVGVz
dFBERkRvY3VtZW50Lm1tICovLAogCQkJCUExNEZDNThEMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0
UHJvdG9jb2wuaCAqLywKIAkJCQlBMTRGQzU4RTFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3Rv
Y29sLm1tICovLAogCQkJCTJFRkYwNkQyMUQ4QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3
LmggKi8sCkBAIC0yODI2LDYgKzI4MzksNyBAQAogCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2
MCAvKiBQYXN0ZVJURkQubW0gKi8sCiAJCQkJOUIyMzQ2NDExRjk0M0EyNDAwREIxRDIzIC8qIFBh
c3RlV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk1MUQ4QzE4RjIyNjdCMjY3MDA3OTdFNDAgLyogUERG
TGlua1JlZmVycmVyLm1tICovLAorCQkJCTUxNjI4MTBDMjMyNUI5NjQwMEJCN0U0MiAvKiBQREZT
bmFwc2hvdC5tbSAqLywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUlu
UGljdHVyZURlbGVnYXRlLm1tICovLAogCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlC
RTNFIC8qIFByZWZlcmVuY2VzLm1tICovLApAQCAtMzA5NCw2ICszMTA4LDggQEAKIAkJCQk0MTM1
RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAog
CQkJCTdDODNFMDI5MUQwQTVDREYwMEZFQkNGMyAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzhDQkQ2
NjIwNEZCMkM3MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCisJ
CQkJNTE2MjgxMTAyMzI1QkM4NTAwQkI3RTQyIC8qIFBERktpdC5mcmFtZXdvcmsgKi8sCisJCQkJ
NTE2MjgxMTIyMzI1QkNFOTAwQkI3RTQyIC8qIFBERktpdC5mcmFtZXdvcmsgKi8sCiAJCQkJN0Ew
MTBCQ0MxRDg3N0MwRDAwRURFNzJBIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAogCQkJCTU3
NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8sCiAJCQkpOwpA
QCAtNDYyNyw2ICs0NjQzLDcgQEAKIAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFz
dGVSVEZELm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIzIC8q
IFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRDhDMTkwMjI2N0IyNkQw
MDc5N0U0MCAvKiBQREZMaW5rUmVmZXJyZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODEw
RDIzMjVCOTcxMDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1
cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0
QyAvKiBQbGF0Zm9ybVV0aWxpdGllc01hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDcyNCw2ICs0
NzQxLDcgQEAKIAkJCQlGNEY1QkI1MjIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25z
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJ
bnB1dERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1RDM4OTEyMTVBN0I0QjAwMkEy
OTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODExNDIz
MjVCRDM5MDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTc3NEFBNjgyMUZCQkY3ODAwQUYyQTFCIC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGNENENzRDOTIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhh
bmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3MjEgLyog
VGVzdFdLV2ViVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTQ5OTEsNiArNTAw
OSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEJDOTA5NTgwMTI1NTRDRjkwMDA4Mzc1NiAvKiBUZXN0V2ViS2l0QVBJ
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTWVNURU1fRlJBTUVXT1JL
X1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSIkKFNZU1RFTV9M
SUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3JrcyIsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC00OTk4LDYg
KzUwMjAsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQzkwOTU4MDEyNTU0Q0Y5MDAwODM3NTYgLyogVGVzdFdlYktp
dEFQSS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1lTVEVNX0ZSQU1F
V09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNU
RU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MiLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNzg2Y2YwOGNkNjM2ZjZhYzMyOTk5YzgzZGE5NTk0NDFlYzg5YjYwCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
REZTbmFwc2hvdC5tbQpAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5o
IgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgorCit1c2luZyBXZWJDb3JlOjpDb2xvcjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitURVNUKFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdj
b2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFw
c2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRm
U25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21E
YXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNv
dW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAg
ICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7
CisKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRo
ZXJlJ3MgYSBzcGFjZSBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28n
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVsxXSwgJ0gnKTsKKyAgICAgICAgRVhQRUNUX0VRKHBh
Z2UtPnRleHQoKVs1XSwgJ28nKTsKKworICAgICAgICAvLyBUaGUgIkgiIGZyb20gSGVsbG8gaGFz
IHRoZSByZWN0OiA4LjAwMDAwMCA1NzQuMDAwMDAwIDExLjU1NTIwMCAxNi4wMDAwMDAKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckluZGV4QXRQb2ludChDR1BvaW50TWFrZSgxMywg
NTgwKSksIDF1KTsKKworICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVu
LiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RS
VUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2Vk
KDAsIDI1NSwgMCkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07
CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNo
b3QsIFN1YnJlZ2lvbnMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9k
eT4iXTsKKworICAgIC8vIFNuYXBzaG90IGEgc3VicmVnaW9uIGNvbnRhaW5lZCBlbnRpcmVseSB3
aXRoaW4gdGhlIHZpZXcKKyAgICBhdXRvIHNuYXBzaG90Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1NuYXBzaG90Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtzbmFwc2hvdENv
bmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDIwMCwgMTUwLCA0MDAsIDMwMCldOworICAg
IFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0U25hcHNob3RXaWR0aDpANDAwXTsKKworICAgIFt3
ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3Vy
YXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwg
TlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBh
dXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hv
dERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7Cisg
ICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOworICAgICAgICBFWFBFQ1RfTkUo
cGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBh
Z2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDQwMCwgMzAwKSkpOworCisgICAgICAgIC8v
IFdlIGV4cGVjdCB0aGUgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdl
LT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJl
IGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQ
RUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5j
aGVja2VkKDAsIDI1NSwgMCkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNu
YXBzaG90ID0gZmFsc2U7CisKKyAgICAvLyBTbmFwc2hvdCBhIHJlZ2lvbiBsYXJnZXIgdGhhbiB0
aGUgdmlldworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDAs
IDAsIDEyMDAsIDEyMDApXTsKKyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90
V2lkdGg6QDEyMDBdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
RGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNy
ZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVu
dC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
MCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIw
MCwgMTIwMCkpKTsKKworICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNo
b3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNy
ZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKworICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2Fz
IG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3Jv
dW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpj
cmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKKyAgICBk
aWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKworfQorCitURVNUKFBERlNuYXBzaG90LCBPdmVyMjAw
SW5jaGVzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCAyOTQwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsK
KworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29t
cGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0g
VGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAg
ICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAzdSk7CisKKyAgICAgICAgYXV0byBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRy
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCks
IENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFn
ZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1
NSwgMCkpOworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBi
dXQgdGhlcmUncyBhIGZ1bGwgcGFnZSAnc3BhY2UnIGNoYXJhY3RlciBiZWZvcmUgdGhlICdIJywg
YW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDEpOwor
ICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENH
UmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkg
PT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKworICAgICAgICAvLyBUaGUg
b25seSBjaGFyYWN0ZXIgb24gdGhlIHNlY29uZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScg
Y2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoMik7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDAp
KTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFjdGVyIG9uIHRoZSB0aGlyZCBwYWdlIGlzIGEg
ZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMy
KTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRp
bDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBMaW5rcykK
K3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzXCI+
PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT48L2Rpdj4iXTsKKwor
ICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVz
dFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBF
WFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7CisKKyAgICAgICAgYXV0byBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+
Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMjU1
LCAyNTUpKTsKKworICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMo
KTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRpb25zLnNpemUoKSwgMXUpOworICAgICAgICBF
WFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCAxMXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzFdLCAn
QycpOworCisgICAgICAgIGF1dG8gY1JlY3QgPSBwYWdlLT5yZWN0Rm9yQ2hhcmFjdGVyQXRJbmRl
eCgxKTsKKyAgICAgICAgYXV0byBjTWlkcG9pbnQgPSBDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRY
KGNSZWN0KSwgQ0dSZWN0R2V0TWlkWShjUmVjdCkpOworICAgICAgICBhdXRvIGFubm90YXRpb25C
b3VuZHMgPSBhbm5vdGF0aW9uc1swXS5ib3VuZHMoKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShD
R1JlY3RDb250YWluc1BvaW50KGFubm90YXRpb25Cb3VuZHMsIGNNaWRwb2ludCkpOworCisgICAg
ICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRp
ZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIElubGluZUxpbmtzKQorewor
ICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT4iXTsKKworICAg
IFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlv
bkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBE
RkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBF
Q1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKwor
ICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgbGluayBoZXJlLCBidXQgZHVlIHRv
IHRoZSB3YXkgd2UgZ2F0aGVyIGxpbmtzIGZvciBhbm5vdGF0aW9uIHVzaW5nIHRoZSBSZW5kZXJJ
bmxpbmUgdHJlZQorICAgICAgICAvLyBpdCBpcyBtaXNzZWQuCisKKy8vICAgICAgICBhdXRvIGFu
bm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKy8vICAgICAgICBFWFBFQ1RfRVEoYW5u
b3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoYW5ub3RhdGlvbnNb
MF0uaXNMaW5rKCkpOworLy8gICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5r
VVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8i
XV0pOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBV
dGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIyMTIyMzc2Yzc3ODk4MzEy
ODcyYTgwZDliMTFhY2ZkZTE4ZDU4NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3
dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
Ky8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291bnRlZC4gVGhleSByZW1haW4gdmFsaWQgYXMg
bG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQREZQYWdlIHJlbWFpbnMgdmFsaWQKK2NsYXNz
IFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBUZXN0UERGQW5ub3RhdGlvbihQREZB
bm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xpbmsoKSBjb25zdDsKKyAgICBDR1JlY3QgYm91
bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtVUkwoKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+IG1fYW5ub3RhdGlvbjsKK307CisKK2NsYXNz
IFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERlBhZ2U+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBjcmVhdGUoUERGUGFnZSAqKTsKKworICAgIGNv
bnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIGFubm90YXRpb25zKCk7CisgICAgc2l6ZV90
IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBD
R1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBzaXplX3Qg
Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQpIGNvbnN0OworICAgIENHUmVjdCBib3VuZHMo
KSBjb25zdDsKKworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yQXRQb2ludChpbnQgeCwgaW50IHkp
IGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUZXN0UERGUGFnZShQREZQYWdlICopOworICAg
IFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7CisgICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQREZB
bm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKK307CisKK2NsYXNzIFRlc3RQREZEb2N1bWVudCA6
IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVGcm9tRGF0YShOU0RhdGEgKik7CisKKyAgICB2
b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdDsKKyAgICBUZXN0UERG
UGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitwcml2YXRlOgorICAgIFRlc3RQREZEb2N1bWVu
dChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Cisg
ICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+IG1fcGFnZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRv
Y3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNTM3YTU2Zjg2ODg4NmE3NWIxODJjN2NjZWJmYjc5OWQ3
ZDFmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQ
REZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50LmgiCisKKyNpbXBvcnQgPFdlYkNvcmUv
Q29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lmIFBMQVRGT1JNKE1BQykKK0NHUmVjdCB0b0NH
UmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNSZWN0VG9DR1JlY3QocmVjdCk7IH0KK05TUG9p
bnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIE5TUG9pbnRGcm9tQ0dQ
b2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3QgdG9DR1JlY3QoQ0dSZWN0IHJlY3QpIHsgcmV0
dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0
dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5ub3RhdGlvbnMKK1Rlc3RQREZBbm5vdGF0aW9u
OjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uKQorICAgIDogbV9h
bm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisKK2Jvb2wgVGVzdFBERkFubm90YXRpb246Omlz
TGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xpbmsgPSBbbV9hbm5vdGF0aW9uLmdldCgpLnR5
cGUgaXNFcXVhbFRvU3RyaW5nOlBERkFubm90YXRpb25TdWJ0eXBlTGlua107CisgICAgaWYgKGlz
TGluaykKKyAgICAgICAgQVNTRVJUKFttX2Fubm90YXRpb24uZ2V0KCkuYWN0aW9uIGlzS2luZE9m
Q2xhc3M6W1BERkFjdGlvblVSTCBjbGFzc11dKTsKKyAgICByZXR1cm4gaXNMaW5rOworfQorCitD
R1JlY3QgVGVzdFBERkFubm90YXRpb246OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRv
Q0dSZWN0KG1fYW5ub3RhdGlvbi5nZXQoKS5ib3VuZHMpOworfQorCitOU1VSTCAqVGVzdFBERkFu
bm90YXRpb246OmxpbmtVUkwoKSBjb25zdAoreworICAgIGlmICghaXNMaW5rKCkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuICgoUERGQWN0aW9uVVJMICopbV9hbm5vdGF0aW9uLmdl
dCgpLmFjdGlvbikuVVJMOworfQorCisvLyBQYWdlcworCitSZWY8VGVzdFBERlBhZ2U+IFRlc3RQ
REZQYWdlOjpjcmVhdGUoUERGUGFnZSAqcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXN0UERGUGFnZShwYWdlKSk7Cit9CisKK1Rlc3RQREZQYWdlOjpUZXN0UERGUGFnZShQREZQ
YWdlICpwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK2NvbnN0IFZlY3RvcjxUZXN0
UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQYWdlOjphbm5vdGF0aW9ucygpCit7CisgICAgaWYgKCFt
X2Fubm90YXRpb25zKSB7CisgICAgICAgIG1fYW5ub3RhdGlvbnMgPSBWZWN0b3I8VGVzdFBERkFu
bm90YXRpb24+KCk7CisgICAgICAgIGZvciAoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBpbiBt
X3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMpCisgICAgICAgICAgICBtX2Fubm90YXRpb25zLT5hcHBl
bmQoeyBhbm5vdGF0aW9uIH0pOworICAgIH0KKworICAgIHJldHVybiAqbV9hbm5vdGF0aW9uczsK
K30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS5nZXQoKS5udW1iZXJPZkNoYXJhY3RlcnM7Cit9CisKK1N0cmluZyBUZXN0
UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5zdHJpbmc7
Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiB0b0NHUmVjdChbbV9wYWdlIGNoYXJhY3RlckJv
dW5kc0F0SW5kZXg6aW5kZXhdKTsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJ
bmRleEF0UG9pbnQoQ0dQb2ludCBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fcGFnZSBj
aGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9QbGF0Zm9ybVBvaW50KHBvaW50KV07Cit9CisKK0NHUmVj
dCBUZXN0UERGUGFnZTo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1JlY3QoW21f
cGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3BsYXlCb3hNZWRpYUJveF0pOworfQorCisKK1dlYkNv
cmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAor
eworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJvdW5kcygpOworICAgIGF1dG8gY29sb3JTcGFjZSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsK
KyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBi
b3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5kc1JlY3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9y
U3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRvIGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVm
OworICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCks
IGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IChj
b25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1hcENvbnRleHRHZXREYXRhKGNvbnRleHQuZ2V0KCkp
OworICAgIHNpemVfdCBpID0gKHkgKiB4ICogNCkgKyAoeCAqIDQpOworCisgICAgYXV0byByID0g
cGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4ZWxbaSArIDFdOworICAgIGF1dG8gYiA9IHBpeGVs
W2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhlbFtpICsgM107CisKKyAgICBpZiAoIWEpCisgICAg
ICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKKyAgICByZXR1cm4geyByICogMjU1IC8gYSwgZyAq
IDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhIH07Cit9CisKKy8vIERvY3VtZW50cworCitSZWY8VGVz
dFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKE5TRGF0YSAqZGF0
YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGRG9jdW1lbnQoZGF0YSkpOwor
fQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudChOU0RhdGEgKmRhdGEpCisgICAg
OiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1bWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOmRh
dGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50KCkpCit7Cit9CisKK3NpemVfdCBUZXN0UERG
RG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2RvY3VtZW50IHBh
Z2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBUZXN0UERGRG9jdW1lbnQ6OnBhZ2Uoc2l6ZV90
IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBwYWdlQ291bnQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2luZGV4XSkKKyAgICAgICAgbV9wYWdlc1tpbmRl
eF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2RvY3VtZW50IHBhZ2VBdEluZGV4OmluZGV4XSk7
CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378337</attachid>
            <date>2019-09-08 16:24:49 -0700</date>
            <delta_ts>2019-09-08 16:53:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190908162449.patch</filename>
            <type>text/plain</type>
            <size>59605</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uMjYzZWU2ZTJmYjU3ZmZkODc2MzdjODQwZTQ1NjMx
MDk1N2Y4ZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAg
IENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKTogRG9uJ3QgcGFpbnQg
dGhlIGRlYnVnIGNvbG9yIG91dHNpZGUgb2YgdGhlIEZyYW1lUmVjdC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdCk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRQaGFzZS5oOiBBZGQgIkFubm90YXRlTGlua3MiIG9wdGlvbiB0byBhbHdheXMgZ2F0
aGVyIGFuZCBhbm5vdGF0aW9uIGxpbmtzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzT3V0bGluZUFu
bm90YXRpb24gY29uc3QpOiBBbHNvIHJldHVybiB0cnVlIHdoZW4gdGhlIFBhaW50T3B0aW9ucyBp
bmNsdWRlICJBbm5vdGF0ZUxpbmtzIgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZl
cmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNi
NjE5OThjNThlY2VhZDdlY2ZlMDA0NjFjOWJiYTA3ZDg2MDYzMWMuLjU2MmQ0Y2IxN2QyMmU3ZjU1
MTA0YjZmNDgzODA3MTMzZjI4OTEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTkt
MDktMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gc2F2ZSBhIFBERiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhpcyBpcyByZWZhY3RvcmluZyBhIGNvbWJpbmF0aW9uIG9mICJzbmFwc2hv
dEZpcnN0UGFnZSIgUERGIHByaW50aW5nIGNvZGUgYW5kIHRoZQorICAgICAgICAidGFrZVNuYXBz
aG90IiBBUEkgY29kZSB0byBjYXB0dXJlIHRoZSBvbi1zY3JlZW4gdmlzaWJsZSBwYWdlIHRvIGEg
UERGIGF0IGZ1bGwgZmlkZWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKTogTW92
ZSB0byBjcm9zcyBwbGF0Zm9ybSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZGZTbmFwc2hvdEF0U2l6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTog
SW5zdGVhZCBvZiBhc3N1bWluZyAxIHBhZ2UgY2FwcGVkIGF0IDIwMCBpbmNoZXMsCisgICAgICAg
ICAgcGFnaW5hdGUgZXZlcnkgMjAwIGluY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6cGFpbnRTbmFwc2hvdEF0U2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyLXByaXZhdGUtYnJvd3NpbmcuaHR0cHMuaHRt
bCBhcyBhbiBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGEzNTYxNTFm
N2UyY2ZmMWFiZDdhZjY4ZTEyM2Y5YTE3Y2VjMWM3MTEuLmVhZjg5ZTMyODNkNWZiNzViOThkNzY4
MDlkNDdiYzUxODBjYTdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxMTMs
OSArNDExMywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFdh
cm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJlbnQsIGRv
bid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5pbmdDb2xv
ciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisKKyAgICBp
ZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1JlY3QgPSBm
cmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7Cisg
ICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVy
VmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4
OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2NDg1ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0
aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQgaW5jbHVk
ZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNiLi43ZmNi
MjhmYjg0NWY4ZmViMjQ0OWViYjJiMTNmZTQ1MjRlNTBjNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWludEJlaGF2
aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwg
OSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMu
CiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBUaWxlRmly
c3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3MgICAgICAg
ICAgICAgICA9IDEgPDwgMTIsIC8vIENvbGxlY3QgYWxsIHJlbmRlcmVycyB3aXRoIGxpbmtzIHRv
IGFubm90YXRlIHRoZWlyIFVSTHMgKGUuZy4gUERGcykKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAy
ZDA2MmI1ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4wMzU3NDEzYWE4ODY1YTk3
ZDQ0ZTcxYjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0bykKIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3VtZW50KCkucHJpbnRpbmco
KTsKKyAgICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgKGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50
OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5N2NlOGVlZmYwYWI2Nzcz
YTA2ZjRjNzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2ZWM1ODUwYWQ3OTY5ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTUwMzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9X
S1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogICAgIH0pOwog
fQogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1l
ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFt
ZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHNu
YXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlv
bi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBzaG90
Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJl
Y3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNpZiBQ
TEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hh
bmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYzMDA3
ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3NjlhNGVjNDA5ZDkyZjMxMDM0
NTliOWZiY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxl
bWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19XQVRDSApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmE3NTg4MWJlNmQyMmY3
M2YyNmUzNjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZkMTA1MGQyMGE0N2JhMzE1
ZWExYWFmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03NzUwLDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKIH0KICNlbmRpZgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBEcmF3
VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVu
Y2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
VG9QREYoZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKQog
ewogICAgIEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODEx
ZmE1Zi4uNmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYzNjE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSArMzYwLDEwIEBAIHN0cnVj
dCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4g
Tm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5ICsxMTcxLDEwIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJG
cmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGRy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHVp
bnQzMl90IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNr
RnVuY3Rpb24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
M2QzNDE0MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4xMzQ0YTUxNDdiOTI0NDEz
MmY3NWNjZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBE
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1
ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRp
YWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
Ym9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZl
cmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0
aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9u
UmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBNYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3RpdmUsIGJvb2wgcmVnaXN0
ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0ZDAwZTIzNzY0OWMwNGQy
MmQ0ZTQyMDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdiZWNiNGM3ODBhM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzIw
LDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVy
OihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9IDE7CiAg
ICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25hcHNob3RG
aXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcgUERGcyB0
YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAwICogNzI7
IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5jaGVzCiAg
ICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwZDhkOGZkYmYx
YTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNjMTAzZjRkNWE5YWMxODZk
OWVkN2VlZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxE
cmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0
YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50
U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDg1YTQzYjU0Nzlj
MTU5ZTQwZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZhM2I5Njg1ODMyN2JmMDI3
N2U1NDVhMjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsyMzIsNTggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2Fk
KCkKICAgICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQbHVnaW46ZG9jdW1lbnQg
PyBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwogfQotICAgIAorCitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0IHJlY3Qs
IEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRhdGFDb25zdW1lciA9IGFk
b3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBh
dXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250
ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7CisKKyAg
ICBpbnQ2NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVpZ2h0KCk7CisgICAgaW50
NjRfdCBuZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVtYWluaW5nSGVpZ2h0ID4g
MCkgeworICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWlnaHQgbGltaXQgb2YgMjAw
IGluY2hlcyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0IG9uZSBQREYgcGFnZSBh
dCBhIHRpbWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQ2NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAgICAgYml0bWFwU2l6ZS5z
ZXRIZWlnaHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdlSGVpZ2h0KSk7CisgICAg
ICAgIHJlY3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZWN0LnNl
dFkobmV4dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1
dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVMTCwgKGNvbnN0IFVJbnQ4
ICopJm1lZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBhdXRvIGRpY3Rpb25hcnkg
PSAoQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0dQREZDb250
ZXh0TWVkaWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgpCisgICAgICAgIH07CisK
KyAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIGRpY3Rpb25h
cnkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250
ZXh0LmdldCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgp
KTsKKworICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlv
bnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAg
Q0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgICAgICBuZXh0UmVj
dFkgKz0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWluaW5nSGVpZ2h0IC09IG1h
eFBhZ2VIZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5n
ZXQoKSk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUyMWJlMTQ4YTRjN2Q2Yjk3
MjY2MTcwNC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4ODRiODU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMDYsNyAr
MjMwNiw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1cm4gc25hcHNob3RBdFNp
emUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U25h
cHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQordm9pZCBXZWJQYWdlOjpw
YWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJp
dG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKICAgICBJ
bnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9yaXpvbnRhbFNjYWxlRmFj
dG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7CkBAIC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBX
ZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAgICBhdXRvIGRhdGFDb25z
dW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKLSAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRo
KCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRy
KSk7Ci0KLSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgbnVsbHB0
cik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5n
ZXQoKSB9OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwotICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29udGV4dEVuZFBhZ2UocGRm
Q29udGV4dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0KIFJlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAtNDc0OSw2ICs0NzE2LDM0
IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3Zv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0
byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEludFNpemUg
c25hcHNob3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRT
aXplKHJlY3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFNpemUgPSB7IGZy
YW1lVmlldy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhpbnQpcmVjdC0+eCgpLCAo
aW50KXJlY3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAgYXV0byBvcmlnaW5hbExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExh
eW91dFJlY3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5hbFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2
aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3Mp
OworCisgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOworICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5j
ZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0
YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUx
N2FhMmQxMjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUzOWZjYjQ2NjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODgxLDYgKzg4
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJ
RCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENh
bGxiYWNrSUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJp
bnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYwNyw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBT
bmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUo
V2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMTYy
MSw2ICsxNjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9pZCBwYWludFNuYXBzaG90
QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
U25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcyYjY2OTUwNDg5Y2FlMzcu
LmFlZTcwNmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
Mzg4LDYgKzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291
bnQpIFN5bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDBhNjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjViZDUuLjM0OWRlOGUxMjQ1
YjQ4ZTBhODA4MmIxYzM3ZjM0ZmM0ZWUxZWM3OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wOS0wOCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzYXZl
IGEgUERGIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3LgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4K
KyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYjoKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0
ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxp
ZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBz
YXZlQXNQREY6XSk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERG
U25hcHNob3QubW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6dG9DR1JlY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dG9QbGF0Zm9ybVBvaW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZBbm5vdGF0
aW9uOjpUZXN0UERGQW5ub3RhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERG
QW5ub3RhdGlvbjo6aXNMaW5rIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQ
REZBbm5vdGF0aW9uOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVz
dFBERkFubm90YXRpb246OmxpbmtVUkwgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFn
ZTo6VGVzdFBERlBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBhZ2U6OmFu
bm90YXRpb25zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpjaGFyYWN0
ZXJDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6dGV4
dCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6cmVjdEZvckNo
YXJhY3RlckF0SW5kZXggY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNoYXJhY3RlckluZGV4QXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGUGFnZTo6Ym91bmRzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRl
c3RQREZQYWdlOjpjb2xvckF0UG9pbnQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OnBhZ2UpOgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBodHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zZXJ2aWNld29ya2VyLXByaXZhdGUtYnJvd3NpbmcuaHR0cHMuaHRtbCBhcyBh
biBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50
aXRsZW1lbnRzIGIvVG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCmlu
ZGV4IGM5ZWEzNzY0NjhhNjQ5OTc2YzlhZTM4ZjI5OWEzMjVkY2I0ZGFkYjkuLmU0YzJiYTE4MGYz
OTVkY2ExZDM0MWRiNjY2ZDVjMzRjMmVhM2VjMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5p
QnJvd3Nlci5lbnRpdGxlbWVudHMKQEAgLTIsMjAgKzIsMjAgQEAKIDwhRE9DVFlQRSBwbGlzdCBQ
VUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29t
L0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGlj
dD4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5hcHAtc2FuZGJveDwva2V5PgorCTx0cnVlLz4K
IAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5kZXZpY2UudXNiPC9rZXk+CiAJPHRydWUvPgotCTxr
ZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmZpbGVzLnVzZXItc2VsZWN0ZWQucmVhZC1vbmx5PC9rZXk+
CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFkLXdyaXRl
PC9rZXk+CisJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50
PC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9ubHk8L2tleT4KKwk8c3RyaW5nPi88L3N0
cmluZz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLm1hY2gt
bG9va3VwLmdsb2JhbC1uYW1lPC9rZXk+CiAJPGFycmF5PgogCQk8c3RyaW5nPmNvbS5hcHBsZS5T
YWZhcmkuU2FmZUJyb3dzaW5nLlNlcnZpY2U8L3N0cmluZz4KIAkJPHN0cmluZz5jb20uYXBwbGUu
V2ViS2l0Lk5ldHdvcmtpbmdEYWVtb248L3N0cmluZz4KIAk8L2FycmF5PgotCTxrZXk+Y29tLmFw
cGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxl
LnNlY3VyaXR5Lm5ldHdvcmsuY2xpZW50PC9rZXk+Ci0JPHRydWUvPgotCTxrZXk+Y29tLmFwcGxl
LnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uZmlsZXMuYWJzb2x1dGUtcGF0aC5yZWFkLW9u
bHk8L2tleT4KLQk8c3RyaW5nPi88L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCmluZGV4IGM1Yjlk
NTRhNTIyMDQyNjM2Yjc4ODI1NzU2NDRlM2EwMjRhNWQ5NDYuLmRmZGI2NDAxM2YwMTZiZDBiZGE1
MjBhNWVlOGQwOGMzMjk1YmZkZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9C
cm93c2VyV2luZG93Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93
c2VyV2luZG93Q29udHJvbGxlci5oCkBAIC00Niw2ICs0Niw4IEBAIEBpbnRlcmZhY2UgQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgewogCiAtIChJQkFjdGlvbilv
cGVuTG9jYXRpb246KGlkKXNlbmRlcjsKIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5k
ZXI7CisKIC0gKElCQWN0aW9uKWZldGNoOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilzaGFyZToo
aWQpc2VuZGVyOwogLSAoSUJBY3Rpb24pcmVsb2FkOihpZClzZW5kZXI7CmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDRiOTkwNTdhMDNj
ZTA2NjA0YjJkMzE1MDc2YzBjNGExNmUwNDQ4MmYuLjRkNDU3Mzk2ZjA2NTRlMGY5ZWU4MzRmOTE0
ZDFkZGEwMjlmZTZmOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCkBAIC05Myw2ICs5MywxMSBAQCAtIChJQkFjdGlvbilmb3JjZVJlcGFp
bnQ6KGlkKXNlbmRlcgogICAgIFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsK
IH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBkb2Vz
Tm90UmVjb2duaXplU2VsZWN0b3I6X2NtZF07Cit9CisKIC0gKElCQWN0aW9uKWdvQmFjazooaWQp
c2VuZGVyCiB7CiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVjdG9yOl9jbWRdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYiBiL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9NYWluTWVudS54aWIKaW5kZXggNTQ2YTYwZjAzMmU3MmU0MmI2YTZjMzZjNDk4
ZTI4ZjEzMzIzNzViMy4uMDcxNjM0NmM1Mjk3YzM2MDBjNDhiN2NmMDRjNDMxMjhkZTZiZjI0YSAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUu
SW50ZXJmYWNlQnVpbGRlcjMuQ29jb2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0i
MTM3NzEiIHRhcmdldFJ1bnRpbWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9s
PSJub25lIj4KKzxkb2N1bWVudCB0eXBlPSJjb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlcjMuQ29j
b2EuWElCIiB2ZXJzaW9uPSIzLjAiIHRvb2xzVmVyc2lvbj0iMTQ0OTAuNzAiIHRhcmdldFJ1bnRp
bWU9Ik1hY09TWC5Db2NvYSIgcHJvcGVydHlBY2Nlc3NDb250cm9sPSJub25lIj4KICAgICA8ZGVw
ZW5kZW5jaWVzPgotICAgICAgICA8cGx1Z0luIGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZh
Y2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJzaW9uPSIxMzc3MSIvPgorICAgICAgICA8cGx1Z0lu
IGlkZW50aWZpZXI9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luIiB2ZXJz
aW9uPSIxNDQ5MC43MCIvPgogICAgIDwvZGVwZW5kZW5jaWVzPgogICAgIDxvYmplY3RzPgogICAg
ICAgICA8Y3VzdG9tT2JqZWN0IGlkPSItMiIgdXNlckxhYmVsPSJGaWxlJ3MgT3duZXIiIGN1c3Rv
bUNsYXNzPSJOU0FwcGxpY2F0aW9uIj4KQEAgLTEzMyw2ICsxMzMsMTIgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVEb2N1bWVudEFz
OiIgdGFyZ2V0PSItMSIgaWQ9IjM2MyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Nvbm5lY3Rpb25zPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1lbnVJdGVtIHRpdGxlPSJTYXZlIEFzIFBE
RuKApiIga2V5RXF1aXZhbGVudD0iUyIgaWQ9ImdtUy0zUS1vTHMiPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5RXF1aXZhbGVudE1vZGlmaWVy
TWFzayIgb3B0aW9uPSJZRVMiIGNvbW1hbmQ9IllFUyIvPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8Y29ubmVjdGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8YWN0aW9uIHNlbGVjdG9yPSJzYXZlQXNQREY6IiB0YXJnZXQ9Ii0xIiBpZD0iMjVULUlk
LTMzNCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nvbm5lY3Rpb25zPgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWVudUl0ZW0+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPG1lbnVJdGVtIHRpdGxlPSJSZXZlcnQgdG8gU2F2ZWQiIGlkPSIxMTIiPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bW9kaWZpZXJNYXNrIGtleT0ia2V5RXF1
aXZhbGVudE1vZGlmaWVyTWFzayIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
Y29ubmVjdGlvbnM+CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0sxQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCmluZGV4IDdlZDZjM2QyZjkwNjkzNzM3NjU0NzMxYzczNGI4MTM4YjE1
MmZlNjMuLjZkNjZiZmIwYTVmMzljOThkMjkyNzdhNmM2YWNlZDkzODBkZDJjYjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBA
IC0xMzQsNiArMTM0LDkgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICop
bWVudUl0ZW0KIHsKICAgICBTRUwgYWN0aW9uID0gW21lbnVJdGVtIGFjdGlvbl07CiAKKyAgICBp
ZiAoYWN0aW9uID09IEBzZWxlY3RvcihzYXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIE5POwor
CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBb
c2VsZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KaW5kZXggZjc4ZGJkZmYwMmZlZDk2YzI4NTE5MjFkMzRkYzRhMjJmNDNhMmU1Zi4uY2Y0ZDNh
ZjE3ODFhMjA0YzRkZDlmYmVjMDZjZTg1M2QyZjcyMDNkMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTIwNyw2ICsyMDcs
OSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogewog
ICAgIFNFTCBhY3Rpb24gPSBtZW51SXRlbS5hY3Rpb247CiAKKyAgICBpZiAoYWN0aW9uID09IEBz
ZWxlY3RvcihzYXZlQXNQREY6KSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKwogICAgIGlmIChhY3Rp
b24gPT0gQHNlbGVjdG9yKHpvb21JbjopKQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuWm9vbUlu
XTsKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tT3V0OikpCkBAIC04MTQsNCArODE3
LDE3IEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgaW5jbHVkZVNlbnNp
dGl2ZU1lZGlhRGV2aWNlRGV0YWlsczoodm9pZCAoCiAgICAgZGVjaXNpb25IYW5kbGVyKGZhbHNl
KTsKIH0KIAorLSAoSUJBY3Rpb24pc2F2ZUFzUERGOihpZClzZW5kZXIKK3sKKyAgICBOU1NhdmVQ
YW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsKKyAgICBwYW5lbC5hbGxvd2Vk
RmlsZVR5cGVzID0gQFsgQCJwZGYiIF07CisgICAgW3BhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldp
bmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01vZGFsUmVzcG9uc2VPSykgeworICAgICAgICAgICAg
W193ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlv
bkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgICAgICAgICBbcGRmU25hcHNob3REYXRhIHdyaXRlVG9VUkw6W3BhbmVsIFVSTF0gb3B0
aW9uczowIGVycm9yOm5pbF07CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH1dOwor
fQorCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2Uu
eGNjb25maWcKaW5kZXggODljNmIxZTVhNjliZGRkMzUwNjRhMjE1MzZiOWY2NmJmNmJiNTQ1ZC4u
M2ZhM2JhYmFkOTI5Y2JjY2QxNGE3OWNmZjc0MTk3ZDExNzlkOThkYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMTEzLDMgKzEx
Myw1IEBAIFdLX0NPQ09BX1RPVUNIX3dhdGNob3MgPSBjb2NvYXRvdWNoOwogV0tfQ09DT0FfVE9V
Q0hfd2F0Y2hzaW11bGF0b3IgPSBjb2NvYXRvdWNoOwogV0tfQ09DT0FfVE9VQ0hfYXBwbGV0dm9z
ID0gY29jb2F0b3VjaDsKIFdLX0NPQ09BX1RPVUNIX2FwcGxldHZzaW11bGF0b3IgPSBjb2NvYXRv
dWNoOworCitTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICQoU0RLUk9PVCkkKFNZU1RF
TV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVNX0xJQlJB
UllfRElSKS9GcmFtZXdvcmtzICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3
b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3MgJChpbmhlcml0ZWQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGUyZmI2OTAyNGJiMTQ5ZTAxNTg4NjU2
MGZlNGI0MzhjNjU5YjUxMzkuLjRkOWI0ZDc0MzIwZjUwZTJmNTE0MWEzMzdkMjQwZTQzMzA5N2Fk
ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTMzLDggKzMz
LDkgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKLU9CSkNfQ0xB
U1MgTlNTdHJpbmc7CitPQkpDX0NMQVNTIE5TQ29sb3I7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFy
eTsKK09CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjExZGRlNTI1YjJlYmI0NjQ4MTliNjAz
NmJiMTQ1YzVhMzQyOTg0Li40MGIzZjkyMWY0NGU2N2U2YWQyMjAwZTBiY2VhMDViZjk3NjBjODhl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU2LDYgKzI1Niw5IEBACiAJCTUxNDk1OEJF
MUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTU4QkQxRjc0MjdBQzAwRTg3
QkFEIC8qIFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gKi87IH07CiAJCTUxNUJFMTZGMUQ0MjhC
QjEwMEREN0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTZFMUQ0Mjg4RkYwMERE
N0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sICovOyB9OwogCQk1MTVCRTE3MTFENDI4
RTRCMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBT
dG9yZUJsb2JUaGVuRGVsZXRlLm1tICovOyB9OworCQk1MTYyODEyNTIzMjVDMTgwMDBCQjdFNDIg
LyogVGVzdFBERkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE2MjgxMjQyMzI1QzE3QjAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5t
bSAqLzsgfTsKKwkJNTE2MjgxMjcyMzI1QzE5ODAwQkI3RTQyIC8qIFBERlNuYXBzaG90Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MjgxMjYyMzI1
QzE5MTAwQkI3RTQyIC8qIFBERlNuYXBzaG90Lm1tICovOyB9OworCQk1MTYyODEyOTIzMjVDNDU0
MDBCQjdFNDIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjI4MTI4MjMyNUM0NTQwMEJCN0U0MiAvKiBQREZLaXQu
ZnJhbWV3b3JrICovOyB9OwogCQk1MTY1RkUwNDIwMUVFNjIwMDA5RjdFQzMgLyogTWVzc2FnZVBv
cnRQcm92aWRlcnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTY1RkUwMzIwMUVFNjE3MDA5RjdFQzMgLyogTWVzc2FnZVBvcnRQcm92aWRlcnMubW0g
Ki87IH07CiAJCTUxNzE0RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAtMS5odG1sICovOyB9OwogCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJv
Y2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJv
Y2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLzsgfTsKQEAgLTE3NDQsNiArMTc0NywxMCBAQAog
CQk1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQgLyogV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBTdG9yZUJs
b2JUb0JlRGVsZXRlZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU3RvcmVCbG9i
VG9CZURlbGV0ZWQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxNzAx
RDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTYyODEyMzIzMjVDMTdBMDBCQjdFNDIgLyogVGVzdFBE
RkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RQREZEb2N1
bWVudC5oOyBwYXRoID0gY29jb2EvVGVzdFBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxNjI4MTI0MjMyNUMxN0IwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0UERGRG9jdW1l
bnQubW07IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxNjI4MTI2MjMyNUMxOTEwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBERlNuYXBzaG90Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYyODEyODIzMjVDNDU0MDBCQjdFNDIgLyog
UERGS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUERGS2l0LmZyYW1ld29yazsgcGF0
aCA9IFBsYXRmb3Jtcy9pUGhvbmVPUy5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVPUy5z
ZGsvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QREZLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gREVWRUxPUEVSX0RJUjsgfTsKIAkJNTE2NUZFMDMyMDFFRTYxNzAwOUY3RUMzIC8qIE1lc3Nh
Z2VQb3J0UHJvdmlkZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVzc2FnZVBvcnRQcm92aWRlcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxNEVCMzFDRjhDNzYx
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjgsNiArMjU3NSw3IEBACiAJCQkJNUNGQUNGNjMy
MjZGNzNDNjAwNTZDN0QwIC8qIGxpYmJvcmluZ3NzbC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
N0M4M0UwM0YxRDBBNjFBMDAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQk1NzhDQkQ2NzIwNEZCMkM4MDA4M0I5RjIgLyogTG9jYWxBdXRoZW50aWNhdGlv
bi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1MTYyODEyOTIzMjVDNDU0MDBCQjdF
NDIgLyogUERGS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTdBMDEwQkNEMUQ4
NzdDMEQwMEVERTcyQSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAog
CQkJCTU3NEY1NUQyMjA0RDQ3RjAwMDI5NDhDNiAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCSk7CkBAIC0yNjY1LDYgKzI2NzMsOCBAQAogCQkJCTVDRTc1OTQ3MjJB
ODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCiAJCQkJMkQxQzA0
QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQky
RDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywK
KwkJCQk1MTYyODEyMzIzMjVDMTdBMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCisJ
CQkJNTE2MjgxMjQyMzI1QzE3QjAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAqLywKIAkJ
CQlBMTRGQzU4RDFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29sLmggKi8sCiAJCQkJQTE0
RkM1OEUxQjhBRTM2NTAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSAqLywKIAkJCQkyRUZGMDZE
MjFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5oICovLApAQCAtMjgyNiw2ICsyODM2
LDcgQEAKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAog
CQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJ
CQkJNTFEOEMxOEYyMjY3QjI2NzAwNzk3RTQwIC8qIFBERkxpbmtSZWZlcnJlci5tbSAqLywKKwkJ
CQk1MTYyODEyNjIzMjVDMTkxMDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gKi8sCiAJCQkJM0ZD
QzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywK
IAkJCQk4M0JBRUU4QzFFRjQ2MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVz
Lm1tICovLAogCQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNlcy5tbSAq
LywKQEAgLTMwOTQsNiArMzEwNSw3IEBACiAJCQkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8q
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk3QzgzRTAyOTFEMEE1Q0RGMDBG
RUJDRjMgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc4Q0JENjYyMDRGQjJDNzAwODNCOUYyIC8qIExv
Y2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLAorCQkJCTUxNjI4MTI4MjMyNUM0NTQwMEJC
N0U0MiAvKiBQREZLaXQuZnJhbWV3b3JrICovLAogCQkJCTdBMDEwQkNDMUQ4NzdDMEQwMEVERTcy
QSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLywKIAkJCQk1NzRGNTVEMDIwNEQ0NzFDMDAyOTQ4
QzYgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovLAogCQkJKTsKQEAgLTQ2MjcsNiArNDYzOSw3IEBA
CiAJCQkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTlCMjM0NjQyMUY5NDNFMjcwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MUQ4QzE5MDIyNjdCMjZEMDA3OTdFNDAgLyogUERGTGlua1Jl
ZmVycmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MjgxMjcyMzI1QzE5ODAwQkI3RTQyIC8q
IFBERlNuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTMxRDBBNjQzQTAwRkVC
Q0YzIC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTNGQ0M0
RkU1MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0dXJlRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VBNjFBNDExQTBGMDA0NDdDNEMgLyogUGxhdGZvcm1VdGlsaXRp
ZXNNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTQ3MjQsNiArNDczNyw3IEBACiAJCQkJRjRGNUJC
NTIyMTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0NUQzODkxMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9y
QmFyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2MjgxMjUyMzI1QzE4MDAwQkI3RTQyIC8qIFRl
c3RQREZEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NzRBQTY4MjFGQkJGNzgwMEFG
MkExQiAvKiBUZXN0U09BdXRob3JpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRDRDc0
QzkyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjQ1MTdCNjcyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9s
bGVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzg2Y2YwOGNkNjM2ZjZh
YzMyOTk5YzgzZGE5NTk0NDFlYzg5YjYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQpAQCAtMCwwICsxLDI0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50Lmgi
CisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCit1c2luZyBXZWJDb3JlOjpDb2xv
cjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFBERlNuYXBzaG90LCBGdWxs
Q29udGVudCkKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOwor
CisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5pbCBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBU
ZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAg
IEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSA1
IGNoYXJhY3RlcnMgIkhlbGxvIiwgYnV0IHRoZXJlJ3MgYSBzcGFjZSBiZWZvcmUgdGhlICdIJywg
YW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVsxXSwg
J0gnKTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs1XSwgJ28nKTsKKworICAgICAg
ICAvLyBUaGUgIkgiIGZyb20gSGVsbG8gaGFzIHRoZSByZWN0OiA4LjAwMDAwMCA1NzQuMDAwMDAw
IDExLjU1NTIwMCAxNi4wMDAwMDAKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rlcklu
ZGV4QXRQb2ludChDR1BvaW50TWFrZSgxMywgNTgwKSksIDF1KTsKKworICAgICAgICAvLyBUaGUg
ZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0
byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAw
KSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworCisgICAgICAgIGRpZFRh
a2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFw
c2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCit7CisgICAgc3RhdGlj
IGJvb2wgZGlkVGFrZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5
IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIC8vIFNuYXBzaG90IGEgc3Vi
cmVnaW9uIGNvbnRhaW5lZCBlbnRpcmVseSB3aXRoaW4gdGhlIHZpZXcKKyAgICBhdXRvIHNuYXBz
aG90Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1NuYXBzaG90Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0
KDIwMCwgMTUwLCA0MDAsIDMwMCldOworICAgIFtzbmFwc2hvdENvbmZpZ3VyYXRpb24gc2V0U25h
cHNob3RXaWR0aDpANDAwXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpzbmFwc2hvdENvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50
OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9j
dW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5w
YWdlKDApOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CisgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDQwMCwgMzAwKSkpOworCisgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgZnVsbCBwYWdlICdzcGFj
ZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAx
dSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICAv
LyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1p
ZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIw
MCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworCisgICAgICAg
IGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRh
a2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNuYXBzaG90ID0gZmFsc2U7CisKKyAgICAvLyBTbmFw
c2hvdCBhIHJlZ2lvbiBsYXJnZXIgdGhhbiB0aGUgdmlldworICAgIFtzbmFwc2hvdENvbmZpZ3Vy
YXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEyMDAsIDEyMDApXTsKKyAgICBbc25hcHNo
b3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDEyMDBdOworCisgICAgW3dlYlZpZXcg
X3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9j
dW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7
CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAg
YXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBu
dWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91
bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKKworICAgICAgICAvLyBBIHBp
eGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGlu
IHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKwor
ICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28g
YmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBp
biB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0
UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisK
KyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1
bigmZGlkVGFrZVNuYXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKworfQor
CitURVNUKFBERlNuYXBzaG90LCBPdmVyMjAwSW5jaGVzKQoreworICAgIHN0YXRpYyBib29sIGRp
ZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAyOTQwMCldKTsK
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGJnY29s
b3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNu
YXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0
YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3Vu
dCgpLCAzdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAg
ICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0
RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBD
b2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBXZSBleHBlY3Qg
dGhlIDUgY2hhcmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIGZ1bGwgcGFnZSAnc3BhY2Un
IGNoYXJhY3RlciBiZWZvcmUgdGhlICdIJywgYW5kIGEgbmV3bGluZSBhZnRlciB0aGUgJ28nCisg
ICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA3dSk7CisKKyAgICAgICAg
cGFnZSA9IGRvY3VtZW50LT5wYWdlKDEpOworICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygp
LCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBh
Z2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAy
NTUsIDApKTsKKworICAgICAgICAvLyBUaGUgb25seSBjaGFyYWN0ZXIgb24gdGhlIHNlY29uZCBw
YWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0
KClbMF0sIDMyKTsKKworICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CisgICAgICAg
IEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1
YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6
OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKyAgICAgICAgLy8gVGhlIG9ubHkgY2hhcmFj
dGVyIG9uIHRoZSB0aGlyZCBwYWdlIGlzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hhcmFjdGVyCisg
ICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxdSk7CisgICAgICAgIEVY
UEVDVF9FUShwYWdlLT50ZXh0KClbMF0sIDMyKTsKKworICAgICAgICBkaWRUYWtlU25hcHNob3Qg
PSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZkaWRUYWtlU25hcHNob3QpOworfQor
CitURVNUKFBERlNuYXBzaG90LCBMaW5rcykKK3sKKyAgICBzdGF0aWMgYm9vbCBkaWRUYWtlU25h
cHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgMTUwMDApXSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBzdHlsZT1cIi13ZWJraXQt
bGluZS1ib3gtY29udGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9c
Ij5DbGljayBtZTwvYT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RX
aXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBz
aG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShw
ZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgp
LCAydSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAg
IEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1
YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xv
cjo6Y3JlYXRlVW5jaGVja2VkKDI1NSwgMjU1LCAyNTUpKTsKKworICAgICAgICBhdXRvIGFubm90
YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90YXRp
b25zLnNpemUoKSwgMXUpOworICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xp
bmsoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNF
cXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisg
ICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAxMXUpOworICAgICAgICBF
WFBFQ1RfRVEocGFnZS0+dGV4dCgpWzFdLCAnQycpOworCisgICAgICAgIGF1dG8gY1JlY3QgPSBw
YWdlLT5yZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCgxKTsKKyAgICAgICAgYXV0byBjTWlkcG9pbnQg
PSBDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGNSZWN0KSwgQ0dSZWN0R2V0TWlkWShjUmVjdCkp
OworICAgICAgICBhdXRvIGFubm90YXRpb25Cb3VuZHMgPSBhbm5vdGF0aW9uc1swXS5ib3VuZHMo
KTsKKworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RDb250YWluc1BvaW50KGFubm90YXRpb25C
b3VuZHMsIGNNaWRwb2ludCkpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERG
U25hcHNob3QsIElubGluZUxpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hv
dDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9y
Zy9cIj5DbGljayBtZTwvYT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRo
Q29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90
RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZT
bmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAx
dSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVY
UEVDVF9ORShwYWdlLCBudWxscHRyKTsKKworICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxk
IGJlIGEgbGluayBoZXJlLCBidXQgZHVlIHRvIHRoZSB3YXkgd2UgZ2F0aGVyIGxpbmtzIGZvciBh
bm5vdGF0aW9uIHVzaW5nIHRoZSBSZW5kZXJJbmxpbmUgdHJlZQorICAgICAgICAvLyBpdCBpcyBt
aXNzZWQuCisKKy8vICAgICAgICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMo
KTsKKy8vICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisvLyAgICAg
ICAgRVhQRUNUX1RSVUUoYW5ub3RhdGlvbnNbMF0uaXNMaW5rKCkpOworLy8gICAgICAgIEVYUEVD
VF9UUlVFKFthbm5vdGF0aW9uc1swXS5saW5rVVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRha2VTbmFwc2hv
dCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9
CisKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9j
dW1lbnQuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODIyMTIyMzc2Yzc3ODk4MzEyODcyYTgwZDliMTFhY2ZkZTE4ZDU4NAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxQ
REZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291
bnRlZC4gVGhleSByZW1haW4gdmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQ
REZQYWdlIHJlbWFpbnMgdmFsaWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoK
KyAgICBUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xp
bmsoKSBjb25zdDsKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtV
UkwoKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+
IG1fYW5ub3RhdGlvbjsKK307CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50
ZWQ8VGVzdFBERlBhZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBj
cmVhdGUoUERGUGFnZSAqKTsKKworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4m
IGFubm90YXRpb25zKCk7CisgICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAg
U3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKyAgICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQp
IGNvbnN0OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkNvbG9y
IGNvbG9yQXRQb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBU
ZXN0UERGUGFnZShQREZQYWdlICopOworICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7Cisg
ICAgT3B0aW9uYWw8VmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKK307
CisKK2NsYXNzIFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1
bWVudD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVG
cm9tRGF0YShOU0RhdGEgKik7CisKKyAgICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdl
Q291bnQoKSBjb25zdDsKKyAgICBUZXN0UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitw
cml2YXRlOgorICAgIFRlc3RQREZEb2N1bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8
UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+
IG1fcGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmNTM3YTU2
Zjg2ODg4NmE3NWIxODJjN2NjZWJmYjc5OWQ3ZDFmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3Vt
ZW50LmgiCisKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lm
IFBMQVRGT1JNKE1BQykKK0NHUmVjdCB0b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNS
ZWN0VG9DR1JlY3QocmVjdCk7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9p
bnQpIHsgcmV0dXJuIE5TUG9pbnRGcm9tQ0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3Qg
dG9DR1JlY3QoQ0dSZWN0IHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9y
bVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5u
b3RhdGlvbnMKK1Rlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0
aW9uICphbm5vdGF0aW9uKQorICAgIDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisK
K2Jvb2wgVGVzdFBERkFubm90YXRpb246OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xp
bmsgPSBbbV9hbm5vdGF0aW9uLmdldCgpLnR5cGUgaXNFcXVhbFRvU3RyaW5nOlBERkFubm90YXRp
b25TdWJ0eXBlTGlua107CisgICAgaWYgKGlzTGluaykKKyAgICAgICAgQVNTRVJUKFttX2Fubm90
YXRpb24uZ2V0KCkuYWN0aW9uIGlzS2luZE9mQ2xhc3M6W1BERkFjdGlvblVSTCBjbGFzc11dKTsK
KyAgICByZXR1cm4gaXNMaW5rOworfQorCitDR1JlY3QgVGVzdFBERkFubm90YXRpb246OmJvdW5k
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ0dSZWN0KG1fYW5ub3RhdGlvbi5nZXQoKS5ib3Vu
ZHMpOworfQorCitOU1VSTCAqVGVzdFBERkFubm90YXRpb246OmxpbmtVUkwoKSBjb25zdAorewor
ICAgIGlmICghaXNMaW5rKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICgoUERG
QWN0aW9uVVJMICopbV9hbm5vdGF0aW9uLmdldCgpLmFjdGlvbikuVVJMOworfQorCisvLyBQYWdl
cworCitSZWY8VGVzdFBERlBhZ2U+IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFnZSAqcGFnZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7Cit9CisKK1Rl
c3RQREZQYWdlOjpUZXN0UERGUGFnZShQREZQYWdlICpwYWdlKQorICAgIDogbV9wYWdlKHBhZ2Up
Cit7Cit9CisKK2NvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQYWdlOjph
bm5vdGF0aW9ucygpCit7CisgICAgaWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAgICAgIG1fYW5u
b3RhdGlvbnMgPSBWZWN0b3I8VGVzdFBERkFubm90YXRpb24+KCk7CisgICAgICAgIGZvciAoUERG
QW5ub3RhdGlvbiAqYW5ub3RhdGlvbiBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMpCisgICAg
ICAgICAgICBtX2Fubm90YXRpb25zLT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOworICAgIH0KKwor
ICAgIHJldHVybiAqbV9hbm5vdGF0aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFy
YWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5udW1iZXJPZkNo
YXJhY3RlcnM7Cit9CisKK1N0cmluZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS5nZXQoKS5zdHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6cmVj
dEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiB0
b0NHUmVjdChbbV9wYWdlIGNoYXJhY3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsKK30KKworc2l6
ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBwb2ludCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fcGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9QbGF0Zm9y
bVBvaW50KHBvaW50KV07Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdG9DR1JlY3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3BsYXlC
b3hNZWRpYUJveF0pOworfQorCisKK1dlYkNvcmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xvckF0
UG9pbnQoaW50IHgsIGludCB5KSBjb25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJvdW5k
cygpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShOVUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5kc1Jl
Y3Quc2l6ZS5oZWlnaHQsIDgsIDAsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRvIGNn
UGFnZSA9IG1fcGFnZS5nZXQoKS5wYWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0
aEFubm90YXRpb25zKGNvbnRleHQuZ2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBwaXhlbCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1hcENv
bnRleHRHZXREYXRhKGNvbnRleHQuZ2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICogNCkg
KyAoeCAqIDQpOworCisgICAgYXV0byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4ZWxb
aSArIDFdOworICAgIGF1dG8gYiA9IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhlbFtp
ICsgM107CisKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKKyAg
ICByZXR1cm4geyByICogMjU1IC8gYSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhIH07Cit9
CisKKy8vIERvY3VtZW50cworCitSZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6
OmNyZWF0ZUZyb21EYXRhKE5TRGF0YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUZXN0UERGRG9jdW1lbnQoZGF0YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZE
b2N1bWVudChOU0RhdGEgKmRhdGEpCisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1
bWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50
KCkpCit7Cit9CisKK3NpemVfdCBUZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBU
ZXN0UERGRG9jdW1lbnQ6OnBhZ2Uoc2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBw
YWdlQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2lu
ZGV4XSkKKyAgICAgICAgbV9wYWdlc1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2Rv
Y3VtZW50IHBhZ2VBdEluZGV4OmluZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdl
dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378339</attachid>
            <date>2019-09-08 16:53:13 -0700</date>
            <delta_ts>2019-09-10 12:46:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190908165312.patch</filename>
            <type>text/plain</type>
            <size>59071</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uMjYzZWU2ZTJmYjU3ZmZkODc2MzdjODQwZTQ1NjMx
MDk1N2Y4ZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAg
IENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKTogRG9uJ3QgcGFpbnQg
dGhlIGRlYnVnIGNvbG9yIG91dHNpZGUgb2YgdGhlIEZyYW1lUmVjdC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdCk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRQaGFzZS5oOiBBZGQgIkFubm90YXRlTGlua3MiIG9wdGlvbiB0byBhbHdheXMgZ2F0
aGVyIGFuZCBhbm5vdGF0aW9uIGxpbmtzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzT3V0bGluZUFu
bm90YXRpb24gY29uc3QpOiBBbHNvIHJldHVybiB0cnVlIHdoZW4gdGhlIFBhaW50T3B0aW9ucyBp
bmNsdWRlICJBbm5vdGF0ZUxpbmtzIgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZl
cmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNi
NjE5OThjNThlY2VhZDdlY2ZlMDA0NjFjOWJiYTA3ZDg2MDYzMWMuLjU2MmQ0Y2IxN2QyMmU3ZjU1
MTA0YjZmNDgzODA3MTMzZjI4OTEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTkt
MDktMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gc2F2ZSBhIFBERiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhpcyBpcyByZWZhY3RvcmluZyBhIGNvbWJpbmF0aW9uIG9mICJzbmFwc2hv
dEZpcnN0UGFnZSIgUERGIHByaW50aW5nIGNvZGUgYW5kIHRoZQorICAgICAgICAidGFrZVNuYXBz
aG90IiBBUEkgY29kZSB0byBjYXB0dXJlIHRoZSBvbi1zY3JlZW4gdmlzaWJsZSBwYWdlIHRvIGEg
UERGIGF0IGZ1bGwgZmlkZWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKTogTW92
ZSB0byBjcm9zcyBwbGF0Zm9ybSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZGZTbmFwc2hvdEF0U2l6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTog
SW5zdGVhZCBvZiBhc3N1bWluZyAxIHBhZ2UgY2FwcGVkIGF0IDIwMCBpbmNoZXMsCisgICAgICAg
ICAgcGFnaW5hdGUgZXZlcnkgMjAwIGluY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6cGFpbnRTbmFwc2hvdEF0U2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyLXByaXZhdGUtYnJvd3NpbmcuaHR0cHMuaHRt
bCBhcyBhbiBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGEzNTYxNTFm
N2UyY2ZmMWFiZDdhZjY4ZTEyM2Y5YTE3Y2VjMWM3MTEuLmVhZjg5ZTMyODNkNWZiNzViOThkNzY4
MDlkNDdiYzUxODBjYTdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxMTMs
OSArNDExMywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFdh
cm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJlbnQsIGRv
bid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5pbmdDb2xv
ciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisKKyAgICBp
ZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1JlY3QgPSBm
cmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7Cisg
ICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVy
VmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4
OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2NDg1ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0
aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQgaW5jbHVk
ZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNiLi43ZmNi
MjhmYjg0NWY4ZmViMjQ0OWViYjJiMTNmZTQ1MjRlNTBjNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWludEJlaGF2
aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwg
OSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMu
CiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBUaWxlRmly
c3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3MgICAgICAg
ICAgICAgICA9IDEgPDwgMTIsIC8vIENvbGxlY3QgYWxsIHJlbmRlcmVycyB3aXRoIGxpbmtzIHRv
IGFubm90YXRlIHRoZWlyIFVSTHMgKGUuZy4gUERGcykKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAy
ZDA2MmI1ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4wMzU3NDEzYWE4ODY1YTk3
ZDQ0ZTcxYjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0bykKIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3VtZW50KCkucHJpbnRpbmco
KTsKKyAgICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgKGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50
OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5N2NlOGVlZmYwYWI2Nzcz
YTA2ZjRjNzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2ZWM1ODUwYWQ3OTY5ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTUwMzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9X
S1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogICAgIH0pOwog
fQogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1l
ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFt
ZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHNu
YXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlv
bi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBzaG90
Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJl
Y3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNpZiBQ
TEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hh
bmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYzMDA3
ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3NjlhNGVjNDA5ZDkyZjMxMDM0
NTliOWZiY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxl
bWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19XQVRDSApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmE3NTg4MWJlNmQyMmY3
M2YyNmUzNjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZkMTA1MGQyMGE0N2JhMzE1
ZWExYWFmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03NzUwLDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKIH0KICNlbmRpZgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBEcmF3
VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVu
Y2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
VG9QREYoZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKQog
ewogICAgIEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODEx
ZmE1Zi4uNmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYzNjE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSArMzYwLDEwIEBAIHN0cnVj
dCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4g
Tm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5ICsxMTcxLDEwIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJG
cmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGRy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHVp
bnQzMl90IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNr
RnVuY3Rpb24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
M2QzNDE0MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4xMzQ0YTUxNDdiOTI0NDEz
MmY3NWNjZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBE
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1
ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRp
YWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
Ym9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZl
cmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0
aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9u
UmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBNYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3RpdmUsIGJvb2wgcmVnaXN0
ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0ZDAwZTIzNzY0OWMwNGQy
MmQ0ZTQyMDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdiZWNiNGM3ODBhM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzIw
LDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVy
OihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9IDE7CiAg
ICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25hcHNob3RG
aXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcgUERGcyB0
YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAwICogNzI7
IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5jaGVzCiAg
ICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwZDhkOGZkYmYx
YTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNjMTAzZjRkNWE5YWMxODZk
OWVkN2VlZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxE
cmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0
YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50
U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDg1YTQzYjU0Nzlj
MTU5ZTQwZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZhM2I5Njg1ODMyN2JmMDI3
N2U1NDVhMjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsyMzIsNTggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2Fk
KCkKICAgICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQbHVnaW46ZG9jdW1lbnQg
PyBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwogfQotICAgIAorCitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0IHJlY3Qs
IEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRhdGFDb25zdW1lciA9IGFk
b3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBh
dXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250
ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7CisKKyAg
ICBpbnQ2NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVpZ2h0KCk7CisgICAgaW50
NjRfdCBuZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVtYWluaW5nSGVpZ2h0ID4g
MCkgeworICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWlnaHQgbGltaXQgb2YgMjAw
IGluY2hlcyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0IG9uZSBQREYgcGFnZSBh
dCBhIHRpbWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQ2NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAgICAgYml0bWFwU2l6ZS5z
ZXRIZWlnaHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdlSGVpZ2h0KSk7CisgICAg
ICAgIHJlY3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZWN0LnNl
dFkobmV4dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1
dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVMTCwgKGNvbnN0IFVJbnQ4
ICopJm1lZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBhdXRvIGRpY3Rpb25hcnkg
PSAoQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0dQREZDb250
ZXh0TWVkaWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgpCisgICAgICAgIH07CisK
KyAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIGRpY3Rpb25h
cnkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250
ZXh0LmdldCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgp
KTsKKworICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlv
bnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAg
Q0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgICAgICBuZXh0UmVj
dFkgKz0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWluaW5nSGVpZ2h0IC09IG1h
eFBhZ2VIZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5n
ZXQoKSk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUyMWJlMTQ4YTRjN2Q2Yjk3
MjY2MTcwNC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4ODRiODU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMDYsNyAr
MjMwNiw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1cm4gc25hcHNob3RBdFNp
emUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U25h
cHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQordm9pZCBXZWJQYWdlOjpw
YWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJp
dG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKICAgICBJ
bnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9yaXpvbnRhbFNjYWxlRmFj
dG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7CkBAIC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBX
ZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAgICBhdXRvIGRhdGFDb25z
dW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKLSAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRo
KCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRy
KSk7Ci0KLSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgbnVsbHB0
cik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5n
ZXQoKSB9OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwotICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29udGV4dEVuZFBhZ2UocGRm
Q29udGV4dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0KIFJlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAtNDc0OSw2ICs0NzE2LDM0
IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3Zv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0
byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEludFNpemUg
c25hcHNob3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRT
aXplKHJlY3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFNpemUgPSB7IGZy
YW1lVmlldy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhpbnQpcmVjdC0+eCgpLCAo
aW50KXJlY3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAgYXV0byBvcmlnaW5hbExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExh
eW91dFJlY3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5hbFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2
aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3Mp
OworCisgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOworICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5j
ZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0
YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUx
N2FhMmQxMjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUzOWZjYjQ2NjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODgxLDYgKzg4
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJ
RCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENh
bGxiYWNrSUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJp
bnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYwNyw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBT
bmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUo
V2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMTYy
MSw2ICsxNjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9pZCBwYWludFNuYXBzaG90
QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
U25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcyYjY2OTUwNDg5Y2FlMzcu
LmFlZTcwNmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
Mzg4LDYgKzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291
bnQpIFN5bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDBhNjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjViZDUuLjZmNjk5YzM2MDFm
YmQ0YTIwMmZhNTIyMWExMjI2NTlmZGE0ZDgyMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOS0wOS0wOCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzYXZl
IGEgUERGIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3LgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4K
KyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYjoKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0
ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxp
ZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBz
YXZlQXNQREY6XSk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QREZTbmFwc2hvdC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbTog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b0NHUmVjdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjp0b1BsYXRmb3JtUG9pbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVz
dFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRlc3RQREZBbm5vdGF0aW9uOjppc0xpbmsgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdFBERkFubm90YXRpb246OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRlc3RQREZQYWdlOjpUZXN0UERGUGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGUGFnZTo6YW5ub3RhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNoYXJhY3RlckNvdW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQ
REZQYWdlOjp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
OjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6VGVzdFBERkRvY3VtZW50KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZSk6CisKIDIwMTktMDktMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXItcHJpdmF0ZS1icm93c2luZy5odHRw
cy5odG1sIGFzIGFuIEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9NaW5p
QnJvd3Nlci5lbnRpdGxlbWVudHMgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRp
dGxlbWVudHMKaW5kZXggYzllYTM3NjQ2OGE2NDk5NzZjOWFlMzhmMjk5YTMyNWRjYjRkYWRiOS4u
ZTRjMmJhMTgwZjM5NWRjYTFkMzQxZGI2NjZkNWMzNGMyZWEzZWMyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cwpAQCAtMiwyMCArMiwyMCBAQAogPCFET0NU
WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3
dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0i
MS4wIj4KIDxkaWN0PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+
CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRldmljZS51c2I8L2tleT4KIAk8
dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFk
LW9ubHk8L2tleT4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNlbGVjdGVk
LnJlYWQtd3JpdGU8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkubmV0
d29yay5jbGllbnQ8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVt
cG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25seTwva2V5PgorCTxz
dHJpbmc+Lzwvc3RyaW5nPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24ubWFjaC1sb29rdXAuZ2xvYmFsLW5hbWU8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJpbmc+
Y29tLmFwcGxlLlNhZmFyaS5TYWZlQnJvd3NpbmcuU2VydmljZTwvc3RyaW5nPgogCQk8c3RyaW5n
PmNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZ0RhZW1vbjwvc3RyaW5nPgogCTwvYXJyYXk+Ci0J
PGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtl
eT5jb20uYXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtl
eT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1w
YXRoLnJlYWQtb25seTwva2V5PgotCTxzdHJpbmc+Lzwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlz
dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgK
aW5kZXggYzViOWQ1NGE1MjIwNDI2MzZiNzg4MjU3NTY0NGUzYTAyNGE1ZDk0Ni4uZGZkYjY0MDEz
ZjAxNmJkMGJkYTUyMGE1ZWU4ZDA4YzMyOTViZmRkYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgQGludGVy
ZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CiAKIC0g
KElCQWN0aW9uKW9wZW5Mb2NhdGlvbjooaWQpc2VuZGVyOwogCistIChJQkFjdGlvbilzYXZlQXNQ
REY6KGlkKXNlbmRlcjsKKwogLSAoSUJBY3Rpb24pZmV0Y2g6KGlkKXNlbmRlcjsKIC0gKElCQWN0
aW9uKXNoYXJlOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZWxvYWQ6KGlkKXNlbmRlcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5t
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXgg
NGI5OTA1N2EwM2NlMDY2MDRiMmQzMTUwNzZjMGM0YTE2ZTA0NDgyZi4uNGQ0NTczOTZmMDY1NGUw
ZjllZTgzNGY5MTRkMWRkYTAyOWZlNmY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTkzLDYgKzkzLDExIEBAIC0gKElCQWN0aW9u
KWZvcmNlUmVwYWludDooaWQpc2VuZGVyCiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVj
dG9yOl9jbWRdOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgoreworICAg
IFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKK30KKwogLSAoSUJBY3Rpb24p
Z29CYWNrOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6
X2NtZF07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgppbmRleCA1NDZhNjBmMDMyZTcyZTQy
YjZhNmMzNmM0OThlMjhmMTMzMjM3NWIzLi4wNzE2MzQ2YzUyOTdjMzYwMGM0OGI3Y2YwNGM0MzEy
OGRlNmJmMjRhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGli
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKQEAgLTEsNyArMSw3IEBA
CiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRvY3VtZW50IHR5cGU9
ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9v
bHNWZXJzaW9uPSIxMzc3MSIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFj
Y2Vzc0NvbnRyb2w9Im5vbmUiPgorPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VC
dWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIxNDQ5MC43MCIg
dGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9Im5vbmUi
PgogICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFw
cGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNpb249IjEzNzcxIi8+CisgICAg
ICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQ
bHVnaW4iIHZlcnNpb249IjE0NDkwLjcwIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgICAgPG9i
amVjdHM+CiAgICAgICAgIDxjdXN0b21PYmplY3QgaWQ9Ii0yIiB1c2VyTGFiZWw9IkZpbGUncyBP
d25lciIgY3VzdG9tQ2xhc3M9Ik5TQXBwbGljYXRpb24iPgpAQCAtMTMzLDYgKzEzMywxMiBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0ic2F2
ZURvY3VtZW50QXM6IiB0YXJnZXQ9Ii0xIiBpZD0iMzYzIi8+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9tZW51SXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9
IlNhdmUgQXMgUERG4oCmIiBrZXlFcXVpdmFsZW50PSJTIiBpZD0iZ21TLTNRLW9McyI+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVpdmFs
ZW50TW9kaWZpZXJNYXNrIiBvcHRpb249IllFUyIgY29tbWFuZD0iWUVTIi8+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVBc1BERjoiIHRhcmdldD0iLTEi
IGlkPSIyNVQtSWQtMzM0Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29u
bmVjdGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9IlJldmVydCB0byBTYXZlZCIg
aWQ9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sg
a2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrIi8+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxjb25uZWN0aW9ucz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggN2VkNmMzZDJmOTA2OTM3Mzc2NTQ3MzFj
NzM0YjgxMzhiMTUyZmU2My4uNmQ2NmJmYjBhNWYzOWM5OGQyOTI3N2E2YzZhY2VkOTM4MGRkMmNi
NiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KQEAgLTEzNCw2ICsxMzQsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5T
TWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBbbWVudUl0ZW0gYWN0aW9u
XTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICBy
ZXR1cm4gTk87CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAgICAg
ICAgcmV0dXJuIFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Io
em9vbU91dDopKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQppbmRleCBmNzhkYmRmZjAyZmVkOTZjMjg1MTkyMWQzNGRjNGEyMmY0M2Ey
ZTVmLi5jZjRkM2FmMTc4MWEyMDRjNGRkOWZiZWMwNmNlODUzZDJmNzIwM2QxIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAt
MjA3LDYgKzIwNyw5IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1l
bnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IG1lbnVJdGVtLmFjdGlvbjsKIAorICAgIGlmIChh
Y3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICByZXR1cm4gWUVTOworCiAg
ICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2Vs
ZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKQEAg
LTgxNCw0ICs4MTcsMTcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBp
bmNsdWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICgKICAgICBkZWNpc2lvbkhh
bmRsZXIoZmFsc2UpOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgorewor
ICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAgIHBh
bmVsLmFsbG93ZWRGaWxlVHlwZXMgPSBAWyBAInBkZiIgXTsKKyAgICBbcGFuZWwgYmVnaW5TaGVl
dE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2Vy
IHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKSB7Cisg
ICAgICAgICAgICBbX3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICAgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb1VSTDpbcGFu
ZWwgVVJMXSBvcHRpb25zOjAgZXJyb3I6bmlsXTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9
CisgICAgfV07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCA4OWM2YjFlNWE2OWJkZGQzNTA2NGEyMTUzNmI5ZjY2
YmY2YmI1NDVkLi4zZmEzYmFiYWQ5MjljYmNjZDE0YTc5Y2ZmNzQxOTdkMTE3OWQ5OGRjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBA
IC0xMTMsMyArMTEzLDUgQEAgV0tfQ09DT0FfVE9VQ0hfd2F0Y2hvcyA9IGNvY29hdG91Y2g7CiBX
S19DT0NPQV9UT1VDSF93YXRjaHNpbXVsYXRvciA9IGNvY29hdG91Y2g7CiBXS19DT0NPQV9UT1VD
SF9hcHBsZXR2b3MgPSBjb2NvYXRvdWNoOwogV0tfQ09DT0FfVE9VQ0hfYXBwbGV0dnNpbXVsYXRv
ciA9IGNvY29hdG91Y2g7CisKK1NZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChTREtS
T09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyAkKFNES1JPT1QpJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllf
RElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKGluaGVyaXRlZCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiMTFkZGU1MjViMmViYjQ2NDgxOWI2MDM2YmIx
NDVjNWEzNDI5ODQuLjQwYjNmOTIxZjQ0ZTY3ZTZhZDIyMDBlMGJjZWEwNWJmOTc2MGM4OGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTYsNiArMjU2LDkgQEAKIAkJNTE0OTU4QkUxRjc0
MjdBQzAwRTg3QkFEIC8qIFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQg
LyogV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbSAqLzsgfTsKIAkJNTE1QkUxNkYxRDQyOEJCMTAw
REQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4
IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi87IH07CiAJCTUxNUJFMTcxMUQ0MjhFNEIw
MEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3Jl
QmxvYlRoZW5EZWxldGUubW0gKi87IH07CisJCTUxNjI4MTI1MjMyNUMxODAwMEJCN0U0MiAvKiBU
ZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTYyODEyNDIzMjVDMTdCMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tICov
OyB9OworCQk1MTYyODEyNzIzMjVDMTk4MDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyODEyNjIzMjVDMTkx
MDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gKi87IH07CisJCTUxNjI4MTI5MjMyNUM0NTQwMEJC
N0U0MiAvKiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2MjgxMjgyMzI1QzQ1NDAwQkI3RTQyIC8qIFBERktpdC5mcmFt
ZXdvcmsgKi87IH07CiAJCTUxNjVGRTA0MjAxRUU2MjAwMDlGN0VDMyAvKiBNZXNzYWdlUG9ydFBy
b3ZpZGVycy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNjVGRTAzMjAxRUU2MTcwMDlGN0VDMyAvKiBNZXNzYWdlUG9ydFByb3ZpZGVycy5tbSAqLzsg
fTsKIAkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgKi87IH07CiAJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAtMi5odG1sICovOyB9OwpAQCAtMTc0NCw2ICsxNzQ3LDEwIEBACiAJCTUx
NDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRv
QmVEZWxldGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9yZUJsb2JUb0Jl
RGVsZXRlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MDFENDI4
QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JlQmxvYlRoZW5EZWxldGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9j
dW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRvY3VtZW50
Lmg7IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE2MjgxMjQyMzI1QzE3QjAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RQREZEb2N1bWVudC5t
bTsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE2MjgxMjYyMzI1QzE5MTAwQkI3RTQyIC8qIFBERlNuYXBzaG90Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERGU25hcHNob3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTI4MjMyNUM0NTQwMEJCN0U0MiAvKiBQREZL
aXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQREZLaXQuZnJhbWV3b3JrOyBwYXRoID0g
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZU9TLnNkay9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBE
RVZFTE9QRVJfRElSOyB9OwogCQk1MTY1RkUwMzIwMUVFNjE3MDA5RjdFQzMgLyogTWVzc2FnZVBv
cnRQcm92aWRlcnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZXNzYWdlUG9ydFByb3ZpZGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjU2OCw2ICsyNTc1LDcgQEAKIAkJCQk1Q0ZBQ0Y2MzIyNkY3
M0M2MDA1NkM3RDAgLyogbGliYm9yaW5nc3NsLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3Qzgz
RTAzRjFEMEE2MUEwMDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICov
LAogCQkJCTU3OENCRDY3MjA0RkIyQzgwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUxNjI4MTI5MjMyNUM0NTQwMEJCN0U0MiAv
KiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0EwMTBCQ0QxRDg3N0Mw
RDAwRURFNzJBIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
NTc0RjU1RDIyMDRENDdGMDAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAogCQkJKTsKQEAgLTI2NjUsNiArMjY3Myw4IEBACiAJCQkJNUNFNzU5NDcyMkE4ODNB
NTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKIAkJCQkyRDFDMDRBNTFE
NzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMw
NEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAorCQkJ
CTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywKKwkJCQk1
MTYyODEyNDIzMjVDMTdCMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tICovLAogCQkJCUEx
NEZDNThEMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wuaCAqLywKIAkJCQlBMTRGQzU4
RTFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29sLm1tICovLAogCQkJCTJFRkYwNkQyMUQ4
QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3LmggKi8sCkBAIC0yODI2LDYgKzI4MzYsNyBA
QAogCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi8sCiAJCQkJ
OUIyMzQ2NDExRjk0M0EyNDAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk1
MUQ4QzE4RjIyNjdCMjY3MDA3OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tICovLAorCQkJCTUx
NjI4MTI2MjMyNUMxOTEwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5tbSAqLywKIAkJCQkzRkNDNEZF
NDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tICovLAogCQkJ
CTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0g
Ki8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLApA
QCAtMzA5NCw2ICszMTA1LDcgQEAKIAkJCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCTdDODNFMDI5MUQwQTVDREYwMEZFQkNG
MyAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzhDQkQ2NjIwNEZCMkM3MDA4M0I5RjIgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJNTE2MjgxMjgyMzI1QzQ1NDAwQkI3RTQy
IC8qIFBERktpdC5mcmFtZXdvcmsgKi8sCiAJCQkJN0EwMTBCQ0MxRDg3N0MwRDAwRURFNzJBIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAogCQkJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgKi8sCiAJCQkpOwpAQCAtNDYyNyw2ICs0NjM5LDcgQEAKIAkJ
CQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRDhDMTkwMjI2N0IyNkQwMDc5N0U0MCAvKiBQREZMaW5rUmVmZXJy
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODEyNzIzMjVDMTk4MDBCQjdFNDIgLyogUERG
U25hcHNob3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMg
LyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUx
RUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllc01h
Yy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDcyNCw2ICs0NzM3LDcgQEAKIAkJCQlGNEY1QkI1MjIx
NjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJbnB1dERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ1RDM4OTEyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODEyNTIzMjVDMTgwMDBCQjdFNDIgLyogVGVzdFBE
RkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc3NEFBNjgyMUZCQkY3ODAwQUYyQTFC
IC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNENENzRDOTIw
RkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ODZjZjA4Y2Q2MzZmNmFjMzI5
OTljODNkYTk1OTQ0MWVjODliNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC0wLDAgKzEsMjQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQuaCIKKyNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK3VzaW5nIFdlYkNvcmU6OkNvbG9yOwor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoUERGU25hcHNob3QsIEZ1bGxDb250
ZW50KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6QCI8Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAg
ICBbd2ViVmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQ
REZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAg
ICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKworICAgICAgICAvLyBXZSBleHBlY3QgdGhlIDUgY2hh
cmFjdGVycyAiSGVsbG8iLCBidXQgdGhlcmUncyBhIHNwYWNlIGJlZm9yZSB0aGUgJ0gnLCBhbmQg
YSBuZXdsaW5lIGFmdGVyIHRoZSAnbycKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3Rl
ckNvdW50KCksIDd1KTsKKworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzFdLCAnSCcp
OworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzVdLCAnbycpOworCisgICAgICAgIC8v
IFRoZSAiSCIgZnJvbSBIZWxsbyBoYXMgdGhlIHJlY3Q6IDguMDAwMDAwIDU3NC4wMDAwMDAgMTEu
NTU1MjAwIDE2LjAwMDAwMAorICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVySW5kZXhB
dFBvaW50KENHUG9pbnRNYWtlKDEzLCA1ODApKSwgMXUpOworCisgICAgICAgIC8vIFRoZSBlbnRp
cmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNo
ZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisKKyAgICAgICAgZGlkVGFrZVNu
YXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90
KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykKK3sKKyAgICBzdGF0aWMgYm9v
bCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0p
OworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdj
b2xvcj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgLy8gU25hcHNob3QgYSBzdWJyZWdp
b24gY29udGFpbmVkIGVudGlyZWx5IHdpdGhpbiB0aGUgdmlldworICAgIGF1dG8gc25hcHNob3RD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLU25hcHNob3RDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRSZWN0Ok5TTWFrZVJlY3QoMjAw
LCAxNTAsIDQwMCwgMzAwKV07CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hv
dFdpZHRoOkA0MDBdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1
cmF0aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
RGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNy
ZWF0ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVu
dC0+cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
MCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgNDAw
LCAzMDApKSk7CisKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSBmdWxsIHBhZ2UgJ3NwYWNlJyBj
aGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsK
KyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAgIC8vIFRo
ZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxl
IHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAx
NTApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisKKyAgICAgICAgZGlk
VGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNu
YXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBmYWxzZTsKKworICAgIC8vIFNuYXBzaG90
IGEgcmVnaW9uIGxhcmdlciB0aGFuIHRoZSB2aWV3CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlv
biBzZXRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgMTIwMCwgMTIwMCldOworICAgIFtzbmFwc2hvdENv
bmZpZ3VyYXRpb24gc2V0U25hcHNob3RXaWR0aDpAMTIwMF07CisKKyAgICBbd2ViVmlldyBfdGFr
ZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246c25hcHNob3RDb25maWd1cmF0aW9uLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVu
dCA9IFRlc3RQREZEb2N1bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRv
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxw
dHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMo
KSwgQ0dSZWN0TWFrZSgwLCAwLCAxMjAwLCAxMjAwKSkpOworCisgICAgICAgIC8vIEEgcGl4ZWwg
dGhhdCB3YXMgaW4gdGhlIHZpZXcgc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhl
IG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50
KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworCisgICAg
ICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBiZSBn
cmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBvaW50IGluIHRo
ZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2lu
dCg5MDAsIDcwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUsIDApKTsKKworICAg
ICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVuKCZk
aWRUYWtlU25hcHNob3QpOworICAgIGRpZFRha2VTbmFwc2hvdCA9IGZhbHNlOworCit9CisKK1RF
U1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFr
ZVNuYXBzaG90OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDI5NDAwKV0pOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgYmdjb2xvcj0j
MDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdp
dGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNo
b3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBk
ZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCks
IDN1KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAg
RVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVh
bFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9y
OjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisgICAgICAgIC8vIFdlIGV4cGVjdCB0aGUg
NSBjaGFyYWN0ZXJzICJIZWxsbyIsIGJ1dCB0aGVyZSdzIGEgZnVsbCBwYWdlICdzcGFjZScgY2hh
cmFjdGVyIGJlZm9yZSB0aGUgJ0gnLCBhbmQgYSBuZXdsaW5lIGFmdGVyIHRoZSAnbycKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDd1KTsKKworICAgICAgICBwYWdl
ID0gZG9jdW1lbnQtPnBhZ2UoMSk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENH
UmVjdE1ha2UoMCwgMCwgODAwLCAxNDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+
Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwg
MCkpOworCisgICAgICAgIC8vIFRoZSBvbmx5IGNoYXJhY3RlciBvbiB0aGUgc2Vjb25kIHBhZ2Ug
aXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2Ut
PmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVsw
XSwgMzIpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgyKTsKKyAgICAgICAgRVhQ
RUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRv
UmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBDb2xvcjo6Y3Jl
YXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICAvLyBUaGUgb25seSBjaGFyYWN0ZXIg
b24gdGhlIHRoaXJkIHBhZ2UgaXMgYSBmdWxsIHBhZ2UgJ3NwYWNlJyBjaGFyYWN0ZXIKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDF1KTsKKyAgICAgICAgRVhQRUNU
X0VRKHBhZ2UtPnRleHQoKVswXSwgMzIpOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRy
dWU7CisgICAgfV07CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RF
U1QoUERGU25hcHNob3QsIExpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hv
dDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCAxNTAwMCldKTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPVwiLXdlYmtpdC1saW5l
LWJveC1jb250YWluOiBnbHlwaHNcIj48YSBocmVmPVwiaHR0cHM6Ly93ZWJraXQub3JnL1wiPkNs
aWNrIG1lPC9hPjwvZGl2PiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3RE
YXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNu
YXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDJ1
KTsKKworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQ
RUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRv
UmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IENvbG9yOjpj
cmVhdGVVbmNoZWNrZWQoMjU1LCAyNTUsIDI1NSkpOworCisgICAgICAgIGF1dG8gYW5ub3RhdGlv
bnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOworICAgICAgICBFWFBFQ1RfRVEoYW5ub3RhdGlvbnMu
c2l6ZSgpLCAxdSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFubm90YXRpb25zWzBdLmlzTGluaygp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0VxdWFs
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDExdSk7CisgICAgICAgIEVYUEVD
VF9FUShwYWdlLT50ZXh0KClbMV0sICdDJyk7CisKKyAgICAgICAgYXV0byBjUmVjdCA9IHBhZ2Ut
PnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KDEpOworICAgICAgICBhdXRvIGNNaWRwb2ludCA9IENH
UG9pbnRNYWtlKENHUmVjdEdldE1pZFgoY1JlY3QpLCBDR1JlY3RHZXRNaWRZKGNSZWN0KSk7Cisg
ICAgICAgIGF1dG8gYW5ub3RhdGlvbkJvdW5kcyA9IGFubm90YXRpb25zWzBdLmJvdW5kcygpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdENvbnRhaW5zUG9pbnQoYW5ub3RhdGlvbkJvdW5k
cywgY01pZHBvaW50KSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKworVEVTVChQREZTbmFw
c2hvdCwgSW5saW5lTGlua3MpCit7CisgICAgc3RhdGljIGJvb2wgZGlkVGFrZVNuYXBzaG90Owor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8YSBocmVmPVwiaHR0cHM6Ly93ZWJraXQub3JnL1wi
PkNsaWNrIG1lPC9hPiJdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25m
aWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRh
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNuYXBz
aG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1KTsK
KworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNU
X05FKHBhZ2UsIG51bGxwdHIpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUg
YSBsaW5rIGhlcmUsIGJ1dCBkdWUgdG8gdGhlIHdheSB3ZSBnYXRoZXIgbGlua3MgZm9yIGFubm90
YXRpb24gdXNpbmcgdGhlIFJlbmRlcklubGluZSB0cmVlCisgICAgICAgIC8vIGl0IGlzIG1pc3Nl
ZC4KKworLy8gICAgICAgIGF1dG8gYW5ub3RhdGlvbnMgPSBwYWdlLT5hbm5vdGF0aW9ucygpOwor
Ly8gICAgICAgIEVYUEVDVF9FUShhbm5vdGF0aW9ucy5zaXplKCksIDF1KTsKKy8vICAgICAgICBF
WFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisvLyAgICAgICAgRVhQRUNUX1RS
VUUoW2Fubm90YXRpb25zWzBdLmxpbmtVUkwoKSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKK30KKwor
fQorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVu
dC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MjIxMjIzNzZjNzc4OTgzMTI4NzJhODBkOWIxMWFjZmRlMThkNTg0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFBERktp
dC9QREZLaXQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7Cit9CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gQW5ub3RhdGlvbnMgYXJlbid0IHJlZiBjb3VudGVk
LiBUaGV5IHJlbWFpbiB2YWxpZCBhcyBsb25nIGFzIHRoZWlyIGNvbnRhaW5pbmcgVGVzdFBERlBh
Z2UgcmVtYWlucyB2YWxpZAorY2xhc3MgVGVzdFBERkFubm90YXRpb24geworcHVibGljOgorICAg
IFRlc3RQREZBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKik7CisKKyAgICBib29sIGlzTGluaygp
IGNvbnN0OworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBOU1VSTCAqbGlua1VSTCgp
IGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8UERGQW5ub3RhdGlvbj4gbV9h
bm5vdGF0aW9uOworfTsKKworY2xhc3MgVGVzdFBERlBhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXN0UERGUGFnZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERlBhZ2U+IGNyZWF0
ZShQREZQYWdlICopOworCisgICAgY29uc3QgVmVjdG9yPFRlc3RQREZBbm5vdGF0aW9uPiYgYW5u
b3RhdGlvbnMoKTsKKyAgICBzaXplX3QgY2hhcmFjdGVyQ291bnQoKSBjb25zdDsKKyAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0OworICAgIENHUmVjdCByZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleChzaXpl
X3QpIGNvbnN0OworICAgIHNpemVfdCBjaGFyYWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCkgY29u
c3Q7CisgICAgQ0dSZWN0IGJvdW5kcygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6Q29sb3IgY29s
b3JBdFBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIFRlc3RQ
REZQYWdlKFBERlBhZ2UgKik7CisgICAgUmV0YWluUHRyPFBERlBhZ2U+IG1fcGFnZTsKKyAgICBP
cHRpb25hbDxWZWN0b3I8VGVzdFBERkFubm90YXRpb24+PiBtX2Fubm90YXRpb25zOworfTsKKwor
Y2xhc3MgVGVzdFBERkRvY3VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERkRvY3VtZW50
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXN0UERGRG9jdW1lbnQ+IGNyZWF0ZUZyb21E
YXRhKE5TRGF0YSAqKTsKKworICAgIHZvaWQgZHVtcCgpOworCisgICAgc2l6ZV90IHBhZ2VDb3Vu
dCgpIGNvbnN0OworICAgIFRlc3RQREZQYWdlKiBwYWdlKHNpemVfdCBpbmRleCk7CisKK3ByaXZh
dGU6CisgICAgVGVzdFBERkRvY3VtZW50KE5TRGF0YSAqKTsKKworICAgIFJldGFpblB0cjxQREZE
b2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBWZWN0b3I8UmVmUHRyPFRlc3RQREZQYWdlPj4gbV9w
YWdlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE0ZGM3YWI2MzA4
NDA2ODVkOGFlYmRjNDdiZWRiNmJlZWJhZTEyMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCkBAIC0wLDAgKzEsMTY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQu
aCIKKworI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisjaWYgUExB
VEZPUk0oTUFDKQorQ0dSZWN0IHRvQ0dSZWN0KE5TUmVjdCByZWN0KSB7IHJldHVybiBOU1JlY3RU
b0NHUmVjdChyZWN0KTsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9pbnQoQ0dQb2ludCBwb2ludCkg
eyByZXR1cm4gTlNQb2ludEZyb21DR1BvaW50KHBvaW50KTsgfQorI2Vsc2UKK0NHUmVjdCB0b0NH
UmVjdChDR1JlY3QgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorTlNQb2ludCB0b1BsYXRmb3JtUG9p
bnQoQ0dQb2ludCBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KKyNlbmRpZgorCisvLyBBbm5vdGF0
aW9ucworVGVzdFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKFBERkFubm90YXRpb24g
KmFubm90YXRpb24pCisgICAgOiBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKK3sKK30KKworYm9v
bCBUZXN0UERGQW5ub3RhdGlvbjo6aXNMaW5rKCkgY29uc3QKK3sKKyAgICBib29sIGlzTGluayA9
IFttX2Fubm90YXRpb24uZ2V0KCkudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJMaW5rIl07CisgICAg
aWYgKGlzTGluaykKKyAgICAgICAgQVNTRVJUKFttX2Fubm90YXRpb24uZ2V0KCkuYWN0aW9uIGlz
S2luZE9mQ2xhc3M6W1BERkFjdGlvblVSTCBjbGFzc11dKTsKKyAgICByZXR1cm4gaXNMaW5rOwor
fQorCitDR1JlY3QgVGVzdFBERkFubm90YXRpb246OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRvQ0dSZWN0KG1fYW5ub3RhdGlvbi5nZXQoKS5ib3VuZHMpOworfQorCitOU1VSTCAqVGVz
dFBERkFubm90YXRpb246OmxpbmtVUkwoKSBjb25zdAoreworICAgIGlmICghaXNMaW5rKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuICgoUERGQWN0aW9uVVJMICopbV9hbm5vdGF0
aW9uLmdldCgpLmFjdGlvbikuVVJMOworfQorCisvLyBQYWdlcworCitSZWY8VGVzdFBERlBhZ2U+
IFRlc3RQREZQYWdlOjpjcmVhdGUoUERGUGFnZSAqcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUZXN0UERGUGFnZShwYWdlKSk7Cit9CisKK1Rlc3RQREZQYWdlOjpUZXN0UERGUGFn
ZShQREZQYWdlICpwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK2NvbnN0IFZlY3Rv
cjxUZXN0UERGQW5ub3RhdGlvbj4mIFRlc3RQREZQYWdlOjphbm5vdGF0aW9ucygpCit7CisgICAg
aWYgKCFtX2Fubm90YXRpb25zKSB7CisgICAgICAgIG1fYW5ub3RhdGlvbnMgPSBWZWN0b3I8VGVz
dFBERkFubm90YXRpb24+KCk7CisgICAgICAgIGZvciAoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlv
biBpbiBtX3BhZ2UuZ2V0KCkuYW5ub3RhdGlvbnMpCisgICAgICAgICAgICBtX2Fubm90YXRpb25z
LT5hcHBlbmQoeyBhbm5vdGF0aW9uIH0pOworICAgIH0KKworICAgIHJldHVybiAqbV9hbm5vdGF0
aW9uczsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5udW1iZXJPZkNoYXJhY3RlcnM7Cit9CisKK1N0cmlu
ZyBUZXN0UERGUGFnZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5nZXQoKS5z
dHJpbmc7Cit9CisKK0NHUmVjdCBUZXN0UERGUGFnZTo6cmVjdEZvckNoYXJhY3RlckF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiB0b0NHUmVjdChbbV9wYWdlIGNoYXJh
Y3RlckJvdW5kc0F0SW5kZXg6aW5kZXhdKTsKK30KKworc2l6ZV90IFRlc3RQREZQYWdlOjpjaGFy
YWN0ZXJJbmRleEF0UG9pbnQoQ0dQb2ludCBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
cGFnZSBjaGFyYWN0ZXJJbmRleEF0UG9pbnQ6dG9QbGF0Zm9ybVBvaW50KHBvaW50KV07Cit9CisK
K0NHUmVjdCBUZXN0UERGUGFnZTo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1Jl
Y3QoW21fcGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3BsYXlCb3hNZWRpYUJveF0pOworfQorCisK
K1dlYkNvcmU6OkNvbG9yIFRlc3RQREZQYWdlOjpjb2xvckF0UG9pbnQoaW50IHgsIGludCB5KSBj
b25zdAoreworICAgIGF1dG8gYm91bmRzUmVjdCA9IGJvdW5kcygpOworICAgIGF1dG8gY29sb3JT
cGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNS
R0IpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShO
VUxMLCBib3VuZHNSZWN0LnNpemUud2lkdGgsIGJvdW5kc1JlY3Quc2l6ZS5oZWlnaHQsIDgsIDAs
IGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBhdXRvIGNnUGFnZSA9IG1fcGFnZS5nZXQoKS5w
YWdlUmVmOworICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQu
Z2V0KCksIGNnUGFnZSwgbnVsbHB0cik7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwaXhl
bCA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilDR0JpdG1hcENvbnRleHRHZXREYXRhKGNvbnRleHQu
Z2V0KCkpOworICAgIHNpemVfdCBpID0gKHkgKiB4ICogNCkgKyAoeCAqIDQpOworCisgICAgYXV0
byByID0gcGl4ZWxbaV07CisgICAgYXV0byBnID0gcGl4ZWxbaSArIDFdOworICAgIGF1dG8gYiA9
IHBpeGVsW2kgKyAyXTsKKyAgICBhdXRvIGEgPSBwaXhlbFtpICsgM107CisKKyAgICBpZiAoIWEp
CisgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIDAgfTsKKyAgICByZXR1cm4geyByICogMjU1IC8g
YSwgZyAqIDI1NSAvIGEsIGIgKiAyNTUgLyBhLCBhIH07Cit9CisKKy8vIERvY3VtZW50cworCitS
ZWY8VGVzdFBERkRvY3VtZW50PiBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKE5TRGF0
YSAqZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXN0UERGRG9jdW1lbnQoZGF0
YSkpOworfQorCitUZXN0UERGRG9jdW1lbnQ6OlRlc3RQREZEb2N1bWVudChOU0RhdGEgKmRhdGEp
CisgICAgOiBtX2RvY3VtZW50KGFkb3B0TlMoW1tQREZEb2N1bWVudCBhbGxvY10gaW5pdFdpdGhE
YXRhOmRhdGFdKSkKKyAgICAsIG1fcGFnZXMocGFnZUNvdW50KCkpCit7Cit9CisKK3NpemVfdCBU
ZXN0UERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2RvY3Vt
ZW50IHBhZ2VDb3VudF07Cit9CisKK1Rlc3RQREZQYWdlKiBUZXN0UERGRG9jdW1lbnQ6OnBhZ2Uo
c2l6ZV90IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBwYWdlQ291bnQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX3BhZ2VzW2luZGV4XSkKKyAgICAgICAgbV9wYWdl
c1tpbmRleF0gPSBUZXN0UERGUGFnZTo6Y3JlYXRlKFttX2RvY3VtZW50IHBhZ2VBdEluZGV4Omlu
ZGV4XSk7CisgICAgcmV0dXJuIG1fcGFnZXNbaW5kZXhdLmdldCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378476</attachid>
            <date>2019-09-10 12:46:03 -0700</date>
            <delta_ts>2019-09-10 16:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195765-20190910124602.patch</filename>
            <type>text/plain</type>
            <size>59258</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzZjNmMDFkYmJkNWVj
NjhjNmNmZWY4NmZmZDcxNzllM2RkN2Y0MS4uZjgyOGJkNmUzYzJjOWI0NzExYTM1M2FhNzlmYmE2
Mzg4ZmI1ZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTEwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIHNhdmUg
YSBQREYgZnJvbSB0aGUgY29udGVudHMgb2YgYSBXS1dlYlZpZXcuCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODk1NTkwMD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAg
IENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKTogRG9uJ3QgcGFpbnQg
dGhlIGRlYnVnIGNvbG9yIG91dHNpZGUgb2YgdGhlIEZyYW1lUmVjdC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdCk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRQaGFzZS5oOiBBZGQgIkFubm90YXRlTGlua3MiIG9wdGlvbiB0byBhbHdheXMgZ2F0
aGVyIGFuZCBhbm5vdGF0aW9uIGxpbmtzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aGFzT3V0bGluZUFu
bm90YXRpb24gY29uc3QpOiBBbHNvIHJldHVybiB0cnVlIHdoZW4gdGhlIFBhaW50T3B0aW9ucyBp
bmNsdWRlICJBbm5vdGF0ZUxpbmtzIgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZl
cmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNi
NjE5OThjNThlY2VhZDdlY2ZlMDA0NjFjOWJiYTA3ZDg2MDYzMWMuLjE3NWM4ZGY4ZDI0YzI1ZjQy
ODlmNTgwZGU0N2JlNjI4NWVkMmNjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTkt
MDktMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
UEkgdG8gc2F2ZSBhIFBERiBmcm9tIHRoZSBjb250ZW50cyBvZiBhIFdLV2ViVmlldy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTU1OTAwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgVGhpcyBpcyByZWZhY3RvcmluZyBhIGNvbWJpbmF0aW9uIG9mICJzbmFwc2hv
dEZpcnN0UGFnZSIgUERGIHByaW50aW5nIGNvZGUgYW5kIHRoZQorICAgICAgICAidGFrZVNuYXBz
aG90IiBBUEkgY29kZSB0byBjYXB0dXJlIHRoZSBvbi1zY3JlZW4gdmlzaWJsZSBwYWdlIHRvIGEg
UERGIGF0IGZ1bGwgZmlkZWxpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29u
ZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRGb3JQcmludEZv
cm1hdHRlcjpdKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKTogTW92
ZSB0byBjcm9zcyBwbGF0Zm9ybSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZGZTbmFwc2hvdEF0U2l6ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTog
SW5zdGVhZCBvZiBhc3N1bWluZyAxIHBhZ2UgY2FwcGVkIGF0IDIwMCBpbmNoZXMsCisgICAgICAg
ICAgcGFnaW5hdGUgZXZlcnkgMjAwIGluY2hlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZHJhd1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6cGFpbnRTbmFwc2hvdEF0U2l6ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBkZlNuYXBzaG90QXRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV3cml0ZSBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyLXByaXZhdGUtYnJvd3NpbmcuaHR0cHMuaHRt
bCBhcyBhbiBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGEzNTYxNTFm
N2UyY2ZmMWFiZDdhZjY4ZTEyM2Y5YTE3Y2VjMWM3MTEuLmVhZjg5ZTMyODNkNWZiNzViOThkNzY4
MDlkNDdiYzUxODBjYTdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQxMTMs
OSArNDExMywxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgICAgICBmaWxsV2l0aFdh
cm5pbmdDb2xvciA9IGZhbHNlOyAvLyBFbGVtZW50IGltYWdlcyBhcmUgdHJhbnNwYXJlbnQsIGRv
bid0IGZpbGwgd2l0aCByZWQuCiAgICAgZWxzZQogICAgICAgICBmaWxsV2l0aFdhcm5pbmdDb2xv
ciA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGZpbGxXaXRoV2FybmluZ0NvbG9yKQotICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisKKyAgICBp
ZiAoZmlsbFdpdGhXYXJuaW5nQ29sb3IpIHsKKyAgICAgICAgSW50UmVjdCBkZWJ1Z1JlY3QgPSBm
cmFtZVJlY3QoKTsKKyAgICAgICAgZGVidWdSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGRlYnVnUmVjdCwgQ29sb3IoMjU1LCA2NCwgMjU1KSk7Cisg
ICAgfQogI2VuZGlmCiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVy
VmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4
OWFmZGEyNzBiZDhiMjAuLmMwY2JkMWY2ZWI3NzBiMzg4NjRhNTVjNDhhMzFmMmMzN2I2NDg1ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MzUsNiArMTYzNSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0
aGlja25lc3MsCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVS
TCYgbGluaywgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzU0OTAwMTMzPiBQREYgZXhwb3J0aW5nIG9uIGlPUyBzaG91bGQgaW5jbHVk
ZSBVUkwgcmVjdHMKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRQaGFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50UGhh
c2UuaAppbmRleCAyZTNjMDIzZDVhOGI1YzE1YWQ5YzE1ZDlkYTA4Y2ZhNDViODhiNTNiLi43ZmNi
MjhmYjg0NWY4ZmViMjQ0OWViYjJiMTNmZTQ1MjRlNTBjNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmgKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBjbGFzcyBQYWludEJlaGF2
aW9yIDogdWludDE2X3QgewogICAgIEZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyAgICA9IDEgPDwg
OSwgLy8gUGFpbnQgZG9lc24ndCBzdG9wIGF0IGNvbXBvc2l0aW5nIGxheWVyIGJvdW5kYXJpZXMu
CiAgICAgU25hcHNob3R0aW5nICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKICAgICBUaWxlRmly
c3RQYWludCAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIEFubm90YXRlTGlua3MgICAgICAg
ICAgICAgICA9IDEgPDwgMTIsIC8vIENvbGxlY3QgYWxsIHJlbmRlcmVycyB3aXRoIGxpbmtzIHRv
IGFubm90YXRlIHRoZWlyIFVSTHMgKGUuZy4gUERGcykKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAy
ZDA2MmI1ZmJiOWVhNjAwZTBmOGQxYzFjNjIzNTU3MjQwNTMzZGE5Li4wMzU3NDEzYWE4ODY1YTk3
ZDQ0ZTcxYjIxNjg1MTMzODY1MGIxM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6
OnVwZGF0ZU91dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0bykKIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzTGluaygpICYmIGRvY3VtZW50KCkucHJpbnRpbmco
KTsKKyAgICByZXR1cm4gZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNMaW5rKCkgJiYgKGRvY3Vt
ZW50KCkucHJpbnRpbmcoKSB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKSAm
IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3MpKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50
OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4ZmE5Zjg2NDQ5N2NlOGVlZmYwYWI2Nzcz
YTA2ZjRjNzA4YjMwZmM4Li43ZGNhOWViNWMxZjE3MDY5MDRkNGI5MzA2ZWM1ODUwYWQ3OTY5ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTUwMzcsNiArNTAzNywzMiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9X
S1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0IGNvbXBsZXRpbwogICAgIH0pOwog
fQogCistICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQ7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1l
ID0gX3BhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBmcmFtZUlEID0gbWFpbkZyYW1lLT5mcmFt
ZUlEKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHNu
YXBzaG90Q29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHNuYXBzaG90Q29uZmlndXJhdGlv
bi5yZWN0KSkKKyAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHNuYXBzaG90
Q29uZmlndXJhdGlvbi5yZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJl
Y3QsIFtyZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRl
TlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7Cit9CisKICNpZiBQ
TEFURk9STShNQUMpCiAtICh2b2lkKV9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hh
bmdlczooQk9PTClzaG91bGRTdXBwcmVzcwogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQ1ZWI3ZmM1MjYzMDA3
ZjIwMDYzZDY4MWIyMzgxOTNlYjAwYzNiNy4uMmM2YjVjYjQ5NGQ3NjlhNGVjNDA5ZDkyZjMxMDM0
NTliOWZiY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MzIsNiArNDMyLDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0
Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0RWxl
bWVudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24gKilzbmFwc2hvdENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBlbmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUgJiYgIVRBUkdFVF9PU19XQVRDSApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmE3NTg4MWJlNmQyMmY3
M2YyNmUzNjkwMTBjYjNkYzQyZWY3MDczZC4uN2UwZWQ3MDVkMGQ3YWZkMTA1MGQyMGE0N2JhMzE1
ZWExYWFmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03NzUwLDYgKzc3NTAsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKIH0KICNlbmRpZgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBEcmF3
VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxiYWNrKQoreworICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVu
Y2UoKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
VG9QREYoZnJhbWVJRCwgcmVjdCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShwZGZEYXRhKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKQog
ewogICAgIEFTU0VSVChoYXNSdW5uaW5nUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggN2Q1YjU5YzdiYzJlYjc5MmY3YWQwNmI5YzkzN2ZlMjIzODEx
ZmE1Zi4uNmFiZTgyN2Q0OWRjZDBhYTRlNGJiZTQxYmEwZGUwY2E4MTYzNjE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM2MCwxMSArMzYwLDEwIEBAIHN0cnVj
dCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewogICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlczsKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogfTsKLQotdXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgRHJhd1RvUERGQ2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJj47CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmPiBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxib29sLCBib29sLCBTdHJpbmcsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdD4g
Tm93UGxheWluZ0luZm9DYWxsYmFjazsKICNlbmRpZgpAQCAtMTE3Miw5ICsxMTcxLDEwIEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJG
cmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKKyAgICB2b2lkIGRy
YXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHVp
bnQzMl90IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNr
RnVuY3Rpb24mJik7Ci0gICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
M2QzNDE0MmY4NzUyNzEzMDhlNTBmZGY1ZWIxMGZiZDY4NzUyYWRhLi4xMzQ0YTUxNDdiOTI0NDEz
MmY3NWNjZDE2ZmVjNmEwYzZmMTQ4ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xOTYsNyArMTk2LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBE
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1
ZXN0SUQpCiAgICAgSGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRp
YWxUYXAodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
Ym9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSkKLSAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZl
cmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0
aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9u
UmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKQEAgLTIwNiw2ICsyMDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZE
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBNYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBhY3RpdmUsIGJvb2wgcmVnaXN0
ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBTdHJpbmcgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCAzODIyMDU5NDI0MTQ0ZDAwZTIzNzY0OWMwNGQy
MmQ0ZTQyMDFjODFkLi41OTM5YjM5OGYzNmRhYWFkZjg2ODEyM2IyZDdiZWNiNGM3ODBhM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNzIw
LDYgKzcyMCw4IEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVy
OihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvOwogICAgIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciA9IDE7CiAg
ICAgcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlID0gcHJpbnRGb3JtYXR0ZXIuc25hcHNob3RG
aXJzdFBhZ2U7CisKKyAgICAvLyBGSVhNRTogUGFnaW5hdGUgd2hlbiBleHBvcnRpbmcgUERGcyB0
YWxsZXIgdGhhbiAyMDAiCiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhpbXVtUERGSGVpZ2h0ID0gMjAwICogNzI7
IC8vIG1heGltdW0gUERGIGhlaWdodCBmb3IgYSBzaW5nbGUgcGFnZSBpcyAyMDAgaW5jaGVzCiAg
ICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNlbGYuYm91bmRzLnNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwZDhkOGZkYmYx
YTNjY2RiOGU5ZjMwMGRjMGJlZmM2YzE1ODQ5MjA0Li5iYWY4ZDM2MmNjMTAzZjRkNWE5YWMxODZk
OWVkN2VlZmIxZTNiMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwODYsMTMgKzEwODYsNiBAQCB1aW50MzJfdCBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZQogICAgIHJldHVybiBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxE
cmF3VG9QREZDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2spOwotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGRmRGF0
YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb250ZW50
U2l6ZUNhdGVnb3J5KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDg1YTQzYjU0Nzlj
MTU5ZTQwZDhlZmZkOTMyY2IyNWI1NDNkYjI2ZWEuLmJjMTRiZTRhOWZhM2I5Njg1ODMyN2JmMDI3
N2U1NDVhMjI4NjA0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTIzMiw3ICsyMzIsNTggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2Fk
KCkKICAgICBhdXRvKiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIFtt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRIYXNNYWluRnJhbWVQbHVnaW46ZG9jdW1lbnQg
PyBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2VdOwogfQotICAgIAorCitSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBXZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShJbnRSZWN0IHJlY3Qs
IEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisKKyAgICBhdXRvIGRhdGFDb25zdW1lciA9IGFk
b3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBh
dXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1h
cFNpemUuaGVpZ2h0KCkpOworICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0YoQ0dQREZDb250
ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRyKSk7CisKKyAg
ICBpbnQ2NF90IHJlbWFpbmluZ0hlaWdodCA9IGJpdG1hcFNpemUuaGVpZ2h0KCk7CisgICAgaW50
NjRfdCBuZXh0UmVjdFkgPSByZWN0LnkoKTsKKyAgICB3aGlsZSAocmVtYWluaW5nSGVpZ2h0ID4g
MCkgeworICAgICAgICAvLyBQREZzIGhhdmUgYSBwZXItcGFnZSBoZWlnaHQgbGltaXQgb2YgMjAw
IGluY2hlcyBhdCA3MmRwaS4KKyAgICAgICAgLy8gV2UnbGwgZXhwb3J0IG9uZSBQREYgcGFnZSBh
dCBhIHRpbWUsIHVwIHRvIHRoYXQgbWF4aW11bSBoZWlnaHQuCisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQ2NF90IG1heFBhZ2VIZWlnaHQgPSA3MiAqIDIwMDsKKyAgICAgICAgYml0bWFwU2l6ZS5z
ZXRIZWlnaHQoc3RkOjptaW4ocmVtYWluaW5nSGVpZ2h0LCBtYXhQYWdlSGVpZ2h0KSk7CisgICAg
ICAgIHJlY3Quc2V0SGVpZ2h0KGJpdG1hcFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZWN0LnNl
dFkobmV4dFJlY3RZKTsKKworICAgICAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1JlY3RNYWtlKDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1
dG8gbWVkaWFCb3hEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoTlVMTCwgKGNvbnN0IFVJbnQ4
ICopJm1lZGlhQm94LCBzaXplb2YoQ0dSZWN0KSkpOworICAgICAgICBhdXRvIGRpY3Rpb25hcnkg
PSAoQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAgICAgICAgICAoTlNTdHJpbmcgKilrQ0dQREZDb250
ZXh0TWVkaWFCb3ggOiAoTlNEYXRhICopbWVkaWFCb3hEYXRhLmdldCgpCisgICAgICAgIH07CisK
KyAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5QYWdlKHBkZkNvbnRleHQuZ2V0KCksIGRpY3Rpb25h
cnkpOworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQgeyBwZGZDb250
ZXh0LmdldCgpIH07CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIC1iaXRtYXBTaXplLmhlaWdodCgp
KTsKKworICAgICAgICBwYWludFNuYXBzaG90QXRTaXplKHJlY3QsIGJpdG1hcFNpemUsIG9wdGlv
bnMsICpjb3JlRnJhbWUsICpmcmFtZVZpZXcsIGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAg
Q0dQREZDb250ZXh0RW5kUGFnZShwZGZDb250ZXh0LmdldCgpKTsKKworICAgICAgICBuZXh0UmVj
dFkgKz0gYml0bWFwU2l6ZS5oZWlnaHQoKTsKKyAgICAgICAgcmVtYWluaW5nSGVpZ2h0IC09IG1h
eFBhZ2VIZWlnaHQ7CisgICAgfQorCisgICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5n
ZXQoKSk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWVhMGY0NjFmMjE1OTIyNGUyMWJlMTQ4YTRjN2Q2Yjk3
MjY2MTcwNC4uNzg1MzY1MDc3ZGYwZTNlMzFiMjQzNjI5MTIzNzU5NGI4ODRiODU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMDYsNyAr
MjMwNiw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUKICAgICByZXR1cm4gc25hcHNob3RBdFNp
emUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U25h
cHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgYml0bWFwU2l6
ZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMsIEZyYW1lJiBmcmFtZSwgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQordm9pZCBXZWJQYWdlOjpw
YWludFNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJp
dG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBGcmFtZSYgZnJhbWUsIEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKICAgICBJ
bnRSZWN0IHNuYXBzaG90UmVjdCA9IHJlY3Q7CiAgICAgZmxvYXQgaG9yaXpvbnRhbFNjYWxlRmFj
dG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdG1hcFNpemUud2lkdGgoKSkgLyByZWN0LndpZHRo
KCk7CkBAIC0yMzgwLDM5ICsyMzgwLDYgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBiaXQKICAgICBy
ZXR1cm4gc25hcHNob3Q7CiB9CiAKLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBX
ZWJQYWdlOjpwZGZTbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKLXsKLSAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLQotI2lmIFVTRShDRykKLSAgICBhdXRvIGRhdGFDb25z
dW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKLSAgICBhdXRvIG1lZGlhQm94ID0gQ0dSZWN0TWFrZSgwLCAwLCBiaXRtYXBTaXplLndpZHRo
KCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIGF1dG8gcGRmQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dQREZDb250ZXh0Q3JlYXRlKGRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCBudWxscHRy
KSk7Ci0KLSAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UocGRmQ29udGV4dC5nZXQoKSwgbnVsbHB0
cik7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0IHsgcGRmQ29udGV4dC5n
ZXQoKSB9OwotICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwotICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoMCwgLWJpdG1hcFNpemUuaGVpZ2h0KCkpOwotICAgIHBhaW50
U25hcHNob3RBdFNpemUocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgKmNvcmVGcmFtZSwgKmZy
YW1lVmlldywgZ3JhcGhpY3NDb250ZXh0KTsKLQotICAgIENHUERGQ29udGV4dEVuZFBhZ2UocGRm
Q29udGV4dC5nZXQoKSk7Ci0gICAgQ0dQREZDb250ZXh0Q2xvc2UocGRmQ29udGV4dC5nZXQoKSk7
Ci0jZW5kaWYKLQotICAgIHJldHVybiBkYXRhOwotfQotI2VuZGlmCi0KIFJlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0
aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhpbXVtUGl4ZWxDb3VudCkKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwpAQCAtNDc0OSw2ICs0NzE2LDM0
IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKK3Zv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBPcHRp
b25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0
byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIEludFNpemUg
c25hcHNob3RTaXplOworICAgIGlmIChyZWN0KQorICAgICAgICBzbmFwc2hvdFNpemUgPSBJbnRT
aXplKHJlY3QtPnNpemUoKSk7CisgICAgZWxzZQorICAgICAgICBzbmFwc2hvdFNpemUgPSB7IGZy
YW1lVmlldy5jb250ZW50c1NpemUoKSB9OworCisgICAgSW50UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgaWYgKHJlY3QpCisgICAgICAgIHNuYXBzaG90UmVjdCA9IHsgeyhpbnQpcmVjdC0+eCgpLCAo
aW50KXJlY3QtPnkoKX0sIHNuYXBzaG90U2l6ZSB9OworICAgIGVsc2UKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0geyB7MCwgMH0sIHNuYXBzaG90U2l6ZSB9OworCisgICAgYXV0byBvcmlnaW5hbExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KCk7CisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExh
eW91dFJlY3Qoc25hcHNob3RSZWN0KSk7CisgICAgYXV0byBvcmlnaW5hbFBhaW50QmVoYXZpb3Ig
PSBmcmFtZVZpZXcucGFpbnRCZWhhdmlvcigpOworICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2
aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3I6OkFubm90YXRlTGlua3Mp
OworCisgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOworCisgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOworICAgIGZyYW1lVmll
dy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5j
ZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0
YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYxYzgyNTljOGRkZmJkYTExYWEwNThlZDVjYWUx
N2FhMmQxMjU4Ni4uN2YxYjcxM2JmYTNlODFhZTcwYTk2YmQ5MmE0OGUzOWZjYjQ2NjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODgxLDYgKzg4
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJ
RCwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHkmJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENh
bGxiYWNrSUQpOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJp
bnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKQEAgLTE2MDUsOCArMTYwNyw4IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90QXRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlv
bnMpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmLCBT
bmFwc2hvdE9wdGlvbnMsIHVuc2lnbmVkIG1heGltdW1QaXhlbENvdW50ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGJpdG1hcFNpemUsIFNuYXBzaG90T3B0aW9ucyk7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGRmU25hcHNob3RBdFNpemUo
V2ViQ29yZTo6SW50UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9w
dGlvbnMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMTYy
MSw2ICsxNjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCisgICAgdm9pZCBwYWludFNuYXBzaG90
QXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
U25hcHNob3RPcHRpb25zLCBXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkZyYW1lVmlldyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDViOWUxZTA3ZWI3ZDhiNzBiMjU1YWUyYjcyYjY2OTUwNDg5Y2FlMzcu
LmFlZTcwNmZhNTJjOWUxY2QzMDA4MzE0NmY4MDg2NDEzNDBlNWI5OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
Mzg4LDYgKzM4OCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291
bnQpIFN5bmNocm9ub3VzCiAjZW5kaWYKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDBhNjY2NjE5YzBkNmE5ODUwNjJkODM3MDAwNzg4NTI0ZWFjMjViZDUuLmU1NjY5NTdmNmFh
NDM4NTA5M2Q0YjA3MGJkOGFlMzNmMWUyNjMzMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOS0wOS0xMCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBzYXZl
IGEgUERGIGZyb20gdGhlIGNvbnRlbnRzIG9mIGEgV0tXZWJWaWV3LgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg5NTU5MDA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICAtQWRkIGFuICJFeHBvcnQgdG8gUERGLi4uIiBtZW51IG9wdGlvbiB0byBNaW5pQnJvd3Nlci4K
KyAgICAgICAgLUFkZCBBUEkgdGVzdHMgZm9yIHRoZSBBUEkgaXRzZWxmLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGZvcmNlUmVwYWludDpdKToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgc2F2ZUFzUERGOl0pOgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYjoKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzFCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxpZGF0
ZU1lbnVJdGVtOl0pOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB2YWxp
ZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBz
YXZlQXNQREY6XSk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QREZTbmFwc2hvdC5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbTog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0b0NHUmVjdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjp0b1BsYXRmb3JtUG9pbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVz
dFBERkFubm90YXRpb246OlRlc3RQREZBbm5vdGF0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRlc3RQREZBbm5vdGF0aW9uOjppc0xpbmsgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdFBERkFubm90YXRpb246OmJvdW5kcyBjb25zdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0UERGQW5ub3RhdGlvbjo6bGlua1VSTCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRlc3RQREZQYWdlOjpUZXN0UERGUGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
UERGUGFnZTo6YW5ub3RhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdFBERlBh
Z2U6OmNoYXJhY3RlckNvdW50IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQ
REZQYWdlOjp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZQYWdl
OjpyZWN0Rm9yQ2hhcmFjdGVyQXRJbmRleCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50IGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZQYWdlOjpib3VuZHMgY29uc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VGVzdFBERlBhZ2U6OmNvbG9yQXRQb2ludCBjb25zdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6VGVzdFBERkRvY3VtZW50KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RQREZEb2N1bWVudDo6cGFnZSk6CisKIDIwMTktMDktMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXItcHJpdmF0ZS1icm93c2luZy5odHRw
cy5odG1sIGFzIGFuIEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9NaW5p
QnJvd3Nlci5lbnRpdGxlbWVudHMgYi9Ub29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci5lbnRp
dGxlbWVudHMKaW5kZXggYzllYTM3NjQ2OGE2NDk5NzZjOWFlMzhmMjk5YTMyNWRjYjRkYWRiOS4u
ZTRjMmJhMTgwZjM5NWRjYTFkMzQxZGI2NjZkNWMzNGMyZWEzZWMyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL01pbmlCcm93c2VyLmVudGl0bGVtZW50cwpAQCAtMiwyMCArMiwyMCBAQAogPCFET0NU
WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3
dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CiA8cGxpc3QgdmVyc2lvbj0i
MS4wIj4KIDxkaWN0PgorCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmFwcC1zYW5kYm94PC9rZXk+
CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LmRldmljZS51c2I8L2tleT4KIAk8
dHJ1ZS8+Ci0JPGtleT5jb20uYXBwbGUuc2VjdXJpdHkuZmlsZXMudXNlci1zZWxlY3RlZC5yZWFk
LW9ubHk8L2tleT4KKwk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS5maWxlcy51c2VyLXNlbGVjdGVk
LnJlYWQtd3JpdGU8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkubmV0
d29yay5jbGllbnQ8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUuc2VjdXJpdHkudGVt
cG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1wYXRoLnJlYWQtb25seTwva2V5PgorCTxz
dHJpbmc+Lzwvc3RyaW5nPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRlbXBvcmFyeS1leGNl
cHRpb24ubWFjaC1sb29rdXAuZ2xvYmFsLW5hbWU8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJpbmc+
Y29tLmFwcGxlLlNhZmFyaS5TYWZlQnJvd3NpbmcuU2VydmljZTwvc3RyaW5nPgogCQk8c3RyaW5n
PmNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZ0RhZW1vbjwvc3RyaW5nPgogCTwvYXJyYXk+Ci0J
PGtleT5jb20uYXBwbGUuc2VjdXJpdHkuYXBwLXNhbmRib3g8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtl
eT5jb20uYXBwbGUuc2VjdXJpdHkubmV0d29yay5jbGllbnQ8L2tleT4KLQk8dHJ1ZS8+Ci0JPGtl
eT5jb20uYXBwbGUuc2VjdXJpdHkudGVtcG9yYXJ5LWV4Y2VwdGlvbi5maWxlcy5hYnNvbHV0ZS1w
YXRoLnJlYWQtb25seTwva2V5PgotCTxzdHJpbmc+Lzwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlz
dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgK
aW5kZXggYzViOWQ1NGE1MjIwNDI2MzZiNzg4MjU3NTY0NGUzYTAyNGE1ZDk0Ni4uZGZkYjY0MDEz
ZjAxNmJkMGJkYTUyMGE1ZWU4ZDA4YzMyOTViZmRkYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgQGludGVy
ZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CiAKIC0g
KElCQWN0aW9uKW9wZW5Mb2NhdGlvbjooaWQpc2VuZGVyOwogCistIChJQkFjdGlvbilzYXZlQXNQ
REY6KGlkKXNlbmRlcjsKKwogLSAoSUJBY3Rpb24pZmV0Y2g6KGlkKXNlbmRlcjsKIC0gKElCQWN0
aW9uKXNoYXJlOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZWxvYWQ6KGlkKXNlbmRlcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5t
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXgg
NGI5OTA1N2EwM2NlMDY2MDRiMmQzMTUwNzZjMGM0YTE2ZTA0NDgyZi4uNGQ0NTczOTZmMDY1NGUw
ZjllZTgzNGY5MTRkMWRkYTAyOWZlNmY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTkzLDYgKzkzLDExIEBAIC0gKElCQWN0aW9u
KWZvcmNlUmVwYWludDooaWQpc2VuZGVyCiAgICAgW3NlbGYgZG9lc05vdFJlY29nbml6ZVNlbGVj
dG9yOl9jbWRdOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgoreworICAg
IFtzZWxmIGRvZXNOb3RSZWNvZ25pemVTZWxlY3RvcjpfY21kXTsKK30KKwogLSAoSUJBY3Rpb24p
Z29CYWNrOihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBkb2VzTm90UmVjb2duaXplU2VsZWN0b3I6
X2NtZF07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGliIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5NZW51LnhpYgppbmRleCA1NDZhNjBmMDMyZTcyZTQy
YjZhNmMzNmM0OThlMjhmMTMzMjM3NWIzLi4wNzE2MzQ2YzUyOTdjMzYwMGM0OGI3Y2YwNGM0MzEy
OGRlNmJmMjRhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1lbnUueGli
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9NYWluTWVudS54aWIKQEAgLTEsNyArMSw3IEBA
CiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRvY3VtZW50IHR5cGU9
ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9v
bHNWZXJzaW9uPSIxMzc3MSIgdGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFj
Y2Vzc0NvbnRyb2w9Im5vbmUiPgorPGRvY3VtZW50IHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VC
dWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjMuMCIgdG9vbHNWZXJzaW9uPSIxNDQ5MC43MCIg
dGFyZ2V0UnVudGltZT0iTWFjT1NYLkNvY29hIiBwcm9wZXJ0eUFjY2Vzc0NvbnRyb2w9Im5vbmUi
PgogICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFw
cGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW4iIHZlcnNpb249IjEzNzcxIi8+CisgICAg
ICAgIDxwbHVnSW4gaWRlbnRpZmllcj0iY29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQ
bHVnaW4iIHZlcnNpb249IjE0NDkwLjcwIi8+CiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgICAgPG9i
amVjdHM+CiAgICAgICAgIDxjdXN0b21PYmplY3QgaWQ9Ii0yIiB1c2VyTGFiZWw9IkZpbGUncyBP
d25lciIgY3VzdG9tQ2xhc3M9Ik5TQXBwbGljYXRpb24iPgpAQCAtMTMzLDYgKzEzMywxMiBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFjdGlvbiBzZWxlY3Rvcj0ic2F2
ZURvY3VtZW50QXM6IiB0YXJnZXQ9Ii0xIiBpZD0iMzYzIi8+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDwvY29ubmVjdGlvbnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9tZW51SXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9
IlNhdmUgQXMgUERG4oCmIiBrZXlFcXVpdmFsZW50PSJTIiBpZD0iZ21TLTNRLW9McyI+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sga2V5PSJrZXlFcXVpdmFs
ZW50TW9kaWZpZXJNYXNrIiBvcHRpb249IllFUyIgY29tbWFuZD0iWUVTIi8+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxjb25uZWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxhY3Rpb24gc2VsZWN0b3I9InNhdmVBc1BERjoiIHRhcmdldD0iLTEi
IGlkPSIyNVQtSWQtMzM0Ii8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29u
bmVjdGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tZW51SXRlbT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8bWVudUl0ZW0gdGl0bGU9IlJldmVydCB0byBTYXZlZCIg
aWQ9IjExMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtb2RpZmllck1hc2sg
a2V5PSJrZXlFcXVpdmFsZW50TW9kaWZpZXJNYXNrIi8+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxjb25uZWN0aW9ucz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzFCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MUJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggN2VkNmMzZDJmOTA2OTM3Mzc2NTQ3MzFj
NzM0YjgxMzhiMTUyZmU2My4uNmQ2NmJmYjBhNWYzOWM5OGQyOTI3N2E2YzZhY2VkOTM4MGRkMmNi
NiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMUJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KQEAgLTEzNCw2ICsxMzQsOSBAQCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5T
TWVudUl0ZW0gKiltZW51SXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBbbWVudUl0ZW0gYWN0aW9u
XTsKIAorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICBy
ZXR1cm4gTk87CisKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih6b29tSW46KSkKICAgICAg
ICAgcmV0dXJuIFtzZWxmIGNhblpvb21Jbl07CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Io
em9vbU91dDopKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQppbmRleCBmNzhkYmRmZjAyZmVkOTZjMjg1MTkyMWQzNGRjNGEyMmY0M2Ey
ZTVmLi5jZjRkM2FmMTc4MWEyMDRjNGRkOWZiZWMwNmNlODUzZDJmNzIwM2QxIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAt
MjA3LDYgKzIwNyw5IEBAIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1l
bnVJdGVtCiB7CiAgICAgU0VMIGFjdGlvbiA9IG1lbnVJdGVtLmFjdGlvbjsKIAorICAgIGlmIChh
Y3Rpb24gPT0gQHNlbGVjdG9yKHNhdmVBc1BERjopKQorICAgICAgICByZXR1cm4gWUVTOworCiAg
ICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioem9vbUluOikpCiAgICAgICAgIHJldHVybiBbc2Vs
ZiBjYW5ab29tSW5dOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHpvb21PdXQ6KSkKQEAg
LTgxNCw0ICs4MTcsMTcgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBp
bmNsdWRlU2Vuc2l0aXZlTWVkaWFEZXZpY2VEZXRhaWxzOih2b2lkICgKICAgICBkZWNpc2lvbkhh
bmRsZXIoZmFsc2UpOwogfQogCistIChJQkFjdGlvbilzYXZlQXNQREY6KGlkKXNlbmRlcgorewor
ICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5lbCBzYXZlUGFuZWxdOworICAgIHBh
bmVsLmFsbG93ZWRGaWxlVHlwZXMgPSBAWyBAInBkZiIgXTsKKyAgICBbcGFuZWwgYmVnaW5TaGVl
dE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2Vy
IHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKSB7Cisg
ICAgICAgICAgICBbX3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICAgICAgICAgIFtwZGZTbmFwc2hvdERhdGEgd3JpdGVUb1VSTDpbcGFu
ZWwgVVJMXSBvcHRpb25zOjAgZXJyb3I6bmlsXTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9
CisgICAgfV07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCA4OWM2YjFlNWE2OWJkZGQzNTA2NGEyMTUzNmI5ZjY2
YmY2YmI1NDVkLi4zZmEzYmFiYWQ5MjljYmNjZDE0YTc5Y2ZmNzQxOTdkMTE3OWQ5OGRjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBA
IC0xMTMsMyArMTEzLDUgQEAgV0tfQ09DT0FfVE9VQ0hfd2F0Y2hvcyA9IGNvY29hdG91Y2g7CiBX
S19DT0NPQV9UT1VDSF93YXRjaHNpbXVsYXRvciA9IGNvY29hdG91Y2g7CiBXS19DT0NPQV9UT1VD
SF9hcHBsZXR2b3MgPSBjb2NvYXRvdWNoOwogV0tfQ09DT0FfVE9VQ0hfYXBwbGV0dnNpbXVsYXRv
ciA9IGNvY29hdG91Y2g7CisKK1NZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gJChTREtS
T09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyAkKFNES1JPT1QpJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllf
RElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAkKGluaGVyaXRlZCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiMTFkZGU1MjViMmViYjQ2NDgxOWI2MDM2YmIx
NDVjNWEzNDI5ODQuLjQwYjNmOTIxZjQ0ZTY3ZTZhZDIyMDBlMGJjZWEwNWJmOTc2MGM4OGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTYsNiArMjU2LDkgQEAKIAkJNTE0OTU4QkUxRjc0
MjdBQzAwRTg3QkFEIC8qIFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQg
LyogV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbSAqLzsgfTsKIAkJNTE1QkUxNkYxRDQyOEJCMTAw
REQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4
IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi87IH07CiAJCTUxNUJFMTcxMUQ0MjhFNEIw
MEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3Jl
QmxvYlRoZW5EZWxldGUubW0gKi87IH07CisJCTUxNjI4MTI1MjMyNUMxODAwMEJCN0U0MiAvKiBU
ZXN0UERGRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTYyODEyNDIzMjVDMTdCMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tICov
OyB9OworCQk1MTYyODEyNzIzMjVDMTk4MDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYyODEyNjIzMjVDMTkx
MDBCQjdFNDIgLyogUERGU25hcHNob3QubW0gKi87IH07CisJCTUxNjI4MTI5MjMyNUM0NTQwMEJC
N0U0MiAvKiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2MjgxMjgyMzI1QzQ1NDAwQkI3RTQyIC8qIFBERktpdC5mcmFt
ZXdvcmsgKi87IH07CiAJCTUxNjVGRTA0MjAxRUU2MjAwMDlGN0VDMyAvKiBNZXNzYWdlUG9ydFBy
b3ZpZGVycy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNjVGRTAzMjAxRUU2MTcwMDlGN0VDMyAvKiBNZXNzYWdlUG9ydFByb3ZpZGVycy5tbSAqLzsg
fTsKIAkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0xLmh0bWwgKi87IH07CiAJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAtMi5odG1sICovOyB9OwpAQCAtMTc0NCw2ICsxNzQ3LDEwIEBACiAJCTUx
NDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRv
QmVEZWxldGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9yZUJsb2JUb0Jl
RGVsZXRlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVCRTE3MDFENDI4
QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JlQmxvYlRoZW5EZWxldGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9j
dW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFBERkRvY3VtZW50
Lmg7IHBhdGggPSBjb2NvYS9UZXN0UERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE2MjgxMjQyMzI1QzE3QjAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RQREZEb2N1bWVudC5t
bTsgcGF0aCA9IGNvY29hL1Rlc3RQREZEb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE2MjgxMjYyMzI1QzE5MTAwQkI3RTQyIC8qIFBERlNuYXBzaG90Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERGU25hcHNob3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjI4MTI4MjMyNUM0NTQwMEJCN0U0MiAvKiBQREZL
aXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBQREZLaXQuZnJhbWV3b3JrOyBwYXRoID0g
UGxhdGZvcm1zL2lQaG9uZU9TLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL2lQaG9uZU9TLnNkay9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1BERktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBE
RVZFTE9QRVJfRElSOyB9OwogCQk1MTY1RkUwMzIwMUVFNjE3MDA5RjdFQzMgLyogTWVzc2FnZVBv
cnRQcm92aWRlcnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZXNzYWdlUG9ydFByb3ZpZGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjU2OCw2ICsyNTc1LDcgQEAKIAkJCQk1Q0ZBQ0Y2MzIyNkY3
M0M2MDA1NkM3RDAgLyogbGliYm9yaW5nc3NsLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQk3Qzgz
RTAzRjFEMEE2MUEwMDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICov
LAogCQkJCTU3OENCRDY3MjA0RkIyQzgwMDgzQjlGMiAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUxNjI4MTI5MjMyNUM0NTQwMEJCN0U0MiAv
KiBQREZLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJN0EwMTBCQ0QxRDg3N0Mw
RDAwRURFNzJBIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
NTc0RjU1RDIyMDRENDdGMDAwMjk0OEM2IC8qIFNlY3VyaXR5LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAogCQkJKTsKQEAgLTI2NjUsNiArMjY3Myw4IEBACiAJCQkJNUNFNzU5NDcyMkE4ODNB
NTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKIAkJCQkyRDFDMDRBNTFE
NzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMw
NEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAorCQkJ
CTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywKKwkJCQk1
MTYyODEyNDIzMjVDMTdCMDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50Lm1tICovLAogCQkJCUEx
NEZDNThEMUI4QUUzNjUwMEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wuaCAqLywKIAkJCQlBMTRGQzU4
RTFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29sLm1tICovLAogCQkJCTJFRkYwNkQyMUQ4
QUVEQkIwMDA0QkIzMCAvKiBUZXN0V0tXZWJWaWV3LmggKi8sCkBAIC0yODI2LDYgKzI4MzYsNyBA
QAogCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQubW0gKi8sCiAJCQkJ
OUIyMzQ2NDExRjk0M0EyNDAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk1
MUQ4QzE4RjIyNjdCMjY3MDA3OTdFNDAgLyogUERGTGlua1JlZmVycmVyLm1tICovLAorCQkJCTUx
NjI4MTI2MjMyNUMxOTEwMEJCN0U0MiAvKiBQREZTbmFwc2hvdC5tbSAqLywKIAkJCQkzRkNDNEZF
NDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tICovLAogCQkJ
CTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMubW0g
Ki8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLApA
QCAtMzA5NCw2ICszMTA1LDcgQEAKIAkJCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCTdDODNFMDI5MUQwQTVDREYwMEZFQkNG
MyAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzhDQkQ2NjIwNEZCMkM3MDA4M0I5RjIgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJNTE2MjgxMjgyMzI1QzQ1NDAwQkI3RTQy
IC8qIFBERktpdC5mcmFtZXdvcmsgKi8sCiAJCQkJN0EwMTBCQ0MxRDg3N0MwRDAwRURFNzJBIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAogCQkJCTU3NEY1NUQwMjA0RDQ3MUMwMDI5NDhDNiAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgKi8sCiAJCQkpOwpAQCAtNDYyNyw2ICs0NjM5LDcgQEAKIAkJ
CQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRDhDMTkwMjI2N0IyNkQwMDc5N0U0MCAvKiBQREZMaW5rUmVmZXJy
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODEyNzIzMjVDMTk4MDBCQjdFNDIgLyogUERG
U25hcHNob3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJDRjMg
LyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZDQzRGRTUx
RUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGllc01h
Yy5tbSBpbiBTb3VyY2VzICovLApAQCAtNDcyNCw2ICs0NzM3LDcgQEAKIAkJCQlGNEY1QkI1MjIx
NjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjQ1RTE1NzYyMTEyQ0U2MjAwMzA3RTgyIC8qIFRlc3RJbnB1dERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ1RDM4OTEyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTYyODEyNTIzMjVDMTgwMDBCQjdFNDIgLyogVGVzdFBE
RkRvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc3NEFBNjgyMUZCQkY3ODAwQUYyQTFC
IC8qIFRlc3RTT0F1dGhvcml6YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNENENzRDOTIw
RkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNDUxN0I2NzIwNTRDNDk1MDBDMjY3MjEgLyogVGVzdFdLV2ViVmlld0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUERGU25hcHNob3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1BERlNuYXBzaG90Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MjJmMzJjNWY3MDhlZWUxYTNh
ZWM0NjY5NTg4ZDU3MDcwYzkxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCkBAIC0wLDAgKzEsMjM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0UERGRG9jdW1lbnQuaCIKKyNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKK3VzaW5nIFdlYkNvcmU6OkNvbG9yOwor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoUERGU25hcHNob3QsIEZ1bGxDb250
ZW50KQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNl
LXdpZHRoJz48Ym9keSBiZ2NvbG9yPSMwMGZmMDA+SGVsbG88L2JvZHk+Il07CisKKyAgICBbd2Vi
VmlldyBfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNEYXRhICpwZGZTbmFwc2hvdERhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgYXV0byBkb2N1bWVudCA9IFRlc3RQREZEb2N1
bWVudDo6Y3JlYXRlRnJvbURhdGEocGRmU25hcHNob3REYXRhKTsKKyAgICAgICAgRVhQRUNUX0VR
KGRvY3VtZW50LT5wYWdlQ291bnQoKSwgMXUpOworICAgICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgwKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkpKTsKKworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291
bnQoKSwgNXUpOworICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAnSCcpOworICAg
ICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzRdLCAnbycpOworCisgICAgICAgIC8vIFRoZSBl
bnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRv
IGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDAp
ID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisKKyAgICAgICAgZGlkVGFr
ZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBz
aG90KTsKK30KKworVEVTVChQREZTbmFwc2hvdCwgU3VicmVnaW9ucykKK3sKKyAgICBzdGF0aWMg
Ym9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEg
bmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCc+PGJvZHkgYmdjb2xv
cj0jMDBmZjAwPkhlbGxvPC9ib2R5PiJdOworCisgICAgLy8gU25hcHNob3QgYSBzdWJyZWdpb24g
Y29udGFpbmVkIGVudGlyZWx5IHdpdGhpbiB0aGUgdmlldworICAgIGF1dG8gc25hcHNob3RDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLU25hcHNob3RDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRSZWN0Ok5TTWFrZVJlY3QoMjAwLCAx
NTAsIDQwMCwgMzAwKV07CisgICAgW3NuYXBzaG90Q29uZmlndXJhdGlvbiBzZXRTbmFwc2hvdFdp
ZHRoOkA0MDBdOworCisgICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0
aW9uOnNuYXBzaG90Q29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0
YSAqcGRmU25hcHNob3REYXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0
ZUZyb21EYXRhKHBkZlNuYXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+
cGFnZUNvdW50KCksIDF1KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7
CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
Q0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgNDAwLCAz
MDApKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsK
KworICAgICAgICAvLyBUaGUgZW50aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9p
bnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29s
b3JBdFBvaW50KDIwMCwgMTUwKSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkp
OworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAgICBVdGls
OjpydW4oJmRpZFRha2VTbmFwc2hvdCk7CisgICAgZGlkVGFrZVNuYXBzaG90ID0gZmFsc2U7CisK
KyAgICAvLyBTbmFwc2hvdCBhIHJlZ2lvbiBsYXJnZXIgdGhhbiB0aGUgdmlldworICAgIFtzbmFw
c2hvdENvbmZpZ3VyYXRpb24gc2V0UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEyMDAsIDEyMDApXTsK
KyAgICBbc25hcHNob3RDb25maWd1cmF0aW9uIHNldFNuYXBzaG90V2lkdGg6QDEyMDBdOworCisg
ICAgW3dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOnNuYXBzaG90Q29u
ZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRGF0YSAqcGRmU25hcHNob3RE
YXRhLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIGF1dG8gZG9jdW1lbnQgPSBUZXN0UERGRG9jdW1lbnQ6OmNyZWF0ZUZyb21EYXRhKHBkZlNu
YXBzaG90RGF0YSk7CisgICAgICAgIEVYUEVDVF9FUShkb2N1bWVudC0+cGFnZUNvdW50KCksIDF1
KTsKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVD
VF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1Jl
Y3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgMTIwMCwgMTIwMCkpKTsKKworICAg
ICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIGluIHRoZSB2aWV3IHNob3VsZCBiZSBncmVlbi4gUGlj
ayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCisgICAgICAgIEVYUEVDVF9UUlVFKHBh
Z2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAy
NTUsIDApKTsKKworICAgICAgICAvLyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcg
c2hvdWxkIGFsc28gYmUgZ3JlZW4gKHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBp
Y2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgorICAgICAgICBFWFBFQ1RfVFJVRShw
YWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwg
MjU1LCAwKSk7CisKKyAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFV0aWw6OnJ1bigmZGlkVGFrZVNuYXBzaG90KTsKKyAgICBkaWRUYWtlU25hcHNob3QgPSBm
YWxzZTsKKworfQorCitURVNUKFBERlNuYXBzaG90LCBPdmVyMjAwSW5jaGVzKQoreworICAgIHN0
YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCAyOTQwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgnPjxib2R5
IGJnY29sb3I9IzAwZmYwMD5IZWxsbzwvYm9keT4iXTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERG
U25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEg
KnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVG
cm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBh
Z2VDb3VudCgpLCAzdSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7
CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
Q0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCAx
NDQwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAw
KSA9PSBDb2xvcjo6Y3JlYXRlVW5jaGVja2VkKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgNXUpOworCisgICAgICAgIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgxKTsKKyAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOworICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMCwgMjU1LCAwKSk7CisKKyAg
ICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsKKworICAgICAgICBw
YWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRy
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCks
IENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2Ut
PmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgwLCAyNTUs
IDApKTsKKyAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50KCksIDB1KTsKKwor
ICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOworICAgIH1dOworCisgICAgVXRpbDo6cnVu
KCZkaWRUYWtlU25hcHNob3QpOworfQorCitURVNUKFBERlNuYXBzaG90LCBMaW5rcykKK3sKKyAg
ICBzdGF0aWMgYm9vbCBkaWRUYWtlU25hcHNob3Q7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgMTUwMDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCc+PGRp
diBzdHlsZT1cIi13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhzXCI+PGEgaHJlZj1cImh0
dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT48L2Rpdj4iXTsKKworICAgIFt3ZWJWaWV3
IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbkhhbmRsZXI6
XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50ID0gVGVzdFBERkRvY3VtZW50
OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAgICAgICBFWFBFQ1RfRVEoZG9j
dW1lbnQtPnBhZ2VDb3VudCgpLCAydSk7CisKKyAgICAgICAgYXV0byBwYWdlID0gZG9jdW1lbnQt
PnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IENvbG9yOjpjcmVhdGVVbmNoZWNrZWQoMjU1LCAyNTUsIDI1NSkpOwor
CisgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA4dSk7CisgICAgICAg
IEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdDJyk7CisgICAgICAgIEVYUEVDVF9FUShwYWdl
LT50ZXh0KClbN10sICdlJyk7CisKKyAgICAgICAgLy8gRklYTUU6IGlPUyBkb2Vzbid0IGhhdmUg
bGluayBhbm5vdGF0aW9ucyB5ZXQuCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBhdXRvIGFu
bm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKyAgICAgICAgRVhQRUNUX0VRKGFubm90
YXRpb25zLnNpemUoKSwgMXUpOworICAgICAgICBpZiAoYW5ub3RhdGlvbnMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShhbm5vdGF0aW9uc1swXS5pc0xpbmsoKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShbYW5ub3RhdGlvbnNbMF0ubGlua1VSTCgpIGlzRXF1YWw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dKTsKKworICAgICAgICAgICAg
YXV0byBjUmVjdCA9IHBhZ2UtPnJlY3RGb3JDaGFyYWN0ZXJBdEluZGV4KDEpOworICAgICAgICAg
ICAgYXV0byBjTWlkcG9pbnQgPSBDR1BvaW50TWFrZShDR1JlY3RHZXRNaWRYKGNSZWN0KSwgQ0dS
ZWN0R2V0TWlkWShjUmVjdCkpOworICAgICAgICAgICAgYXV0byBhbm5vdGF0aW9uQm91bmRzID0g
YW5ub3RhdGlvbnNbMF0uYm91bmRzKCk7CisKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVj
dENvbnRhaW5zUG9pbnQoYW5ub3RhdGlvbkJvdW5kcywgY01pZHBvaW50KSk7CisgICAgICAgIH0K
KyNlbmRpZgorCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07CisKKyAg
ICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK1RFU1QoUERGU25hcHNob3QsIElu
bGluZUxpbmtzKQoreworICAgIHN0YXRpYyBib29sIGRpZFRha2VTbmFwc2hvdDsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRl
dmljZS13aWR0aCc+PGEgaHJlZj1cImh0dHBzOi8vd2Via2l0Lm9yZy9cIj5DbGljayBtZTwvYT4i
XTsKKworICAgIFt3ZWJWaWV3IF90YWtlUERGU25hcHNob3RXaXRoQ29uZmlndXJhdGlvbjpuaWwg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBhdXRvIGRvY3VtZW50
ID0gVGVzdFBERkRvY3VtZW50OjpjcmVhdGVGcm9tRGF0YShwZGZTbmFwc2hvdERhdGEpOworICAg
ICAgICBFWFBFQ1RfRVEoZG9jdW1lbnQtPnBhZ2VDb3VudCgpLCAxdSk7CisKKyAgICAgICAgYXV0
byBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMCk7CisgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxs
cHRyKTsKKworICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgbGluayBoZXJlLCBi
dXQgZHVlIHRvIHRoZSB3YXkgd2UgZ2F0aGVyIGxpbmtzIGZvciBhbm5vdGF0aW9uIHVzaW5nIHRo
ZSBSZW5kZXJJbmxpbmUgdHJlZQorICAgICAgICAvLyBpdCBpcyBtaXNzZWQuCisKKy8vICAgICAg
ICBhdXRvIGFubm90YXRpb25zID0gcGFnZS0+YW5ub3RhdGlvbnMoKTsKKy8vICAgICAgICBFWFBF
Q1RfRVEoYW5ub3RhdGlvbnMuc2l6ZSgpLCAxdSk7CisvLyAgICAgICAgRVhQRUNUX1RSVUUoYW5u
b3RhdGlvbnNbMF0uaXNMaW5rKCkpOworLy8gICAgICAgIEVYUEVDVF9UUlVFKFthbm5vdGF0aW9u
c1swXS5saW5rVVJMKCkgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Vi
a2l0Lm9yZy8iXV0pOworCisgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CisgICAgfV07
CisKKyAgICBVdGlsOjpydW4oJmRpZFRha2VTbmFwc2hvdCk7Cit9CisKK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRjMWU4OGRh
MzM1NTU0YzU1YTExMWY1N2NlNDdjZmUxNTBiMmYwOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50LmgKQEAgLTAsMCArMSw4OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+Cisj
aW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworfQorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKKy8vIEFubm90YXRpb25zIGFyZW4ndCByZWYgY291bnRlZC4gVGhleSByZW1haW4g
dmFsaWQgYXMgbG9uZyBhcyB0aGVpciBjb250YWluaW5nIFRlc3RQREZQYWdlIHJlbWFpbnMgdmFs
aWQKK2NsYXNzIFRlc3RQREZBbm5vdGF0aW9uIHsKK3B1YmxpYzoKKyAgICBUZXN0UERGQW5ub3Rh
dGlvbihQREZBbm5vdGF0aW9uICopOworCisgICAgYm9vbCBpc0xpbmsoKSBjb25zdDsKKyAgICBD
R1JlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgTlNVUkwgKmxpbmtVUkwoKSBjb25zdDsKKyAgICAK
K3ByaXZhdGU6CisgICAgUmV0YWluUHRyPFBERkFubm90YXRpb24+IG1fYW5ub3RhdGlvbjsKK307
CisKK2NsYXNzIFRlc3RQREZQYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8VGVzdFBERlBhZ2U+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFRlc3RQREZQYWdlPiBjcmVhdGUoUERGUGFnZSAqKTsK
KworICAgIGNvbnN0IFZlY3RvcjxUZXN0UERGQW5ub3RhdGlvbj4mIGFubm90YXRpb25zKCk7Cisg
ICAgc2l6ZV90IGNoYXJhY3RlckNvdW50KCkgY29uc3Q7CisgICAgU3RyaW5nIHRleHQoKSBjb25z
dDsKKyAgICBDR1JlY3QgcmVjdEZvckNoYXJhY3RlckF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAg
ICBzaXplX3QgY2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQpIGNvbnN0OworICAgIENHUmVj
dCBib3VuZHMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yQXRQb2ludChpbnQg
eCwgaW50IHkpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUZXN0UERGUGFnZShQREZQYWdl
ICopOworICAgIFJldGFpblB0cjxQREZQYWdlPiBtX3BhZ2U7CisgICAgT3B0aW9uYWw8VmVjdG9y
PFRlc3RQREZBbm5vdGF0aW9uPj4gbV9hbm5vdGF0aW9uczsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PFN0cmluZz4gbV90ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hpdGVzcGFjZTsKK307CisKK2NsYXNz
IFRlc3RQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFRlc3RQREZEb2N1bWVudD4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8VGVzdFBERkRvY3VtZW50PiBjcmVhdGVGcm9tRGF0YShO
U0RhdGEgKik7CisKKyAgICB2b2lkIGR1bXAoKTsKKworICAgIHNpemVfdCBwYWdlQ291bnQoKSBj
b25zdDsKKyAgICBUZXN0UERGUGFnZSogcGFnZShzaXplX3QgaW5kZXgpOworCitwcml2YXRlOgor
ICAgIFRlc3RQREZEb2N1bWVudChOU0RhdGEgKik7CisKKyAgICBSZXRhaW5QdHI8UERGRG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUZXN0UERGUGFnZT4+IG1fcGFnZXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNTQxNzA5NzM0ZjM5YTMy
M2UzYzYyNmRmMGUxMDdjZGRiZmQxYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdFBERkRvY3VtZW50LmgiCisK
KyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworI2lmIFBMQVRGT1JN
KE1BQykKK0NHUmVjdCB0b0NHUmVjdChOU1JlY3QgcmVjdCkgeyByZXR1cm4gTlNSZWN0VG9DR1Jl
Y3QocmVjdCk7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENHUG9pbnQgcG9pbnQpIHsgcmV0
dXJuIE5TUG9pbnRGcm9tQ0dQb2ludChwb2ludCk7IH0KKyNlbHNlCitDR1JlY3QgdG9DR1JlY3Qo
Q0dSZWN0IHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KK05TUG9pbnQgdG9QbGF0Zm9ybVBvaW50KENH
UG9pbnQgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CisjZW5kaWYKKworLy8gQW5ub3RhdGlvbnMK
K1Rlc3RQREZBbm5vdGF0aW9uOjpUZXN0UERGQW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5v
dGF0aW9uKQorICAgIDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCit7Cit9CisKK2Jvb2wgVGVz
dFBERkFubm90YXRpb246OmlzTGluaygpIGNvbnN0Cit7CisgICAgYm9vbCBpc0xpbmsgPSBbbV9h
bm5vdGF0aW9uLmdldCgpLnR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiTGluayJdOworICAgIGlmIChp
c0xpbmspCisgICAgICAgIEFTU0VSVChbbV9hbm5vdGF0aW9uLmdldCgpLmFjdGlvbiBpc0tpbmRP
ZkNsYXNzOltQREZBY3Rpb25VUkwgY2xhc3NdXSk7CisgICAgcmV0dXJuIGlzTGluazsKK30KKwor
Q0dSZWN0IFRlc3RQREZBbm5vdGF0aW9uOjpib3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiB0
b0NHUmVjdChtX2Fubm90YXRpb24uZ2V0KCkuYm91bmRzKTsKK30KKworTlNVUkwgKlRlc3RQREZB
bm5vdGF0aW9uOjpsaW5rVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzTGluaygpKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIHJldHVybiAoKFBERkFjdGlvblVSTCAqKW1fYW5ub3RhdGlvbi5n
ZXQoKS5hY3Rpb24pLlVSTDsKK30KKworLy8gUGFnZXMKKworUmVmPFRlc3RQREZQYWdlPiBUZXN0
UERGUGFnZTo6Y3JlYXRlKFBERlBhZ2UgKnBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVGVzdFBERlBhZ2UocGFnZSkpOworfQorCitUZXN0UERGUGFnZTo6VGVzdFBERlBhZ2UoUERG
UGFnZSAqcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitjb25zdCBWZWN0b3I8VGVz
dFBERkFubm90YXRpb24+JiBUZXN0UERGUGFnZTo6YW5ub3RhdGlvbnMoKQoreworICAgIGlmICgh
bV9hbm5vdGF0aW9ucykgeworICAgICAgICBtX2Fubm90YXRpb25zID0gVmVjdG9yPFRlc3RQREZB
bm5vdGF0aW9uPigpOworICAgICAgICBmb3IgKFBERkFubm90YXRpb24gKmFubm90YXRpb24gaW4g
bV9wYWdlLmdldCgpLmFubm90YXRpb25zKQorICAgICAgICAgICAgbV9hbm5vdGF0aW9ucy0+YXBw
ZW5kKHsgYW5ub3RhdGlvbiB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gKm1fYW5ub3RhdGlvbnM7
Cit9CisKK3NpemVfdCBUZXN0UERGUGFnZTo6Y2hhcmFjdGVyQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiB0ZXh0KCkubGVuZ3RoKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZFN0cmlwKFVD
aGFyIGNoYXJhY3RlcikKK3sKKyAgICAvLyBUaGlzIGlzIGEgbGlzdCBvZiB0cmFpbGluZyBhbmQg
bGVhZGluZyB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIHdlJ3ZlIHNlZW4gaW4gUERGIGdlbmVyYXRp
b24uCisgICAgLy8gSXQgY2FuIGJlIGV4cGFuZGVkIGlmIHdlIHNlZSBtb3JlIHBvcHVwLgorICAg
IHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXG4nOworfQorCitTdHJp
bmcgVGVzdFBERlBhZ2U6OnRleHQoKSBjb25zdAoreworICAgIGlmICghbV90ZXh0V2l0aG91dFN1
cnJvdW5kaW5nV2hpdGVzcGFjZSkKKyAgICAgICAgbV90ZXh0V2l0aG91dFN1cnJvdW5kaW5nV2hp
dGVzcGFjZSA9IFN0cmluZyhtX3BhZ2UuZ2V0KCkuc3RyaW5nKS5zdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0NoYXJhY3RlcnMoc2hvdWxkU3RyaXApOworCisgICAgcmV0dXJuICptX3RleHRXaXRob3V0
U3Vycm91bmRpbmdXaGl0ZXNwYWNlOworfQorCitDR1JlY3QgVGVzdFBERlBhZ2U6OnJlY3RGb3JD
aGFyYWN0ZXJBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9DR1Jl
Y3QoW21fcGFnZSBjaGFyYWN0ZXJCb3VuZHNBdEluZGV4OmluZGV4XSk7Cit9CisKK3NpemVfdCBU
ZXN0UERGUGFnZTo6Y2hhcmFjdGVySW5kZXhBdFBvaW50KENHUG9pbnQgcG9pbnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFttX3BhZ2UgY2hhcmFjdGVySW5kZXhBdFBvaW50OnRvUGxhdGZvcm1Qb2lu
dChwb2ludCldOworfQorCitDR1JlY3QgVGVzdFBERlBhZ2U6OmJvdW5kcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRvQ0dSZWN0KFttX3BhZ2UgYm91bmRzRm9yQm94OmtQREZEaXNwbGF5Qm94TWVk
aWFCb3hdKTsKK30KKworCitXZWJDb3JlOjpDb2xvciBUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50
KGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICBhdXRvIGJvdW5kc1JlY3QgPSBib3VuZHMoKTsK
KyAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUoTlVMTCwgYm91bmRzUmVjdC5zaXplLndpZHRoLCBib3VuZHNSZWN0LnNp
emUuaGVpZ2h0LCA4LCAwLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAgYXV0byBjZ1BhZ2Ug
PSBtX3BhZ2UuZ2V0KCkucGFnZVJlZjsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5v
dGF0aW9ucyhjb250ZXh0LmdldCgpLCBjZ1BhZ2UsIG51bGxwdHIpOworCisgICAgY29uc3QgdW5z
aWduZWQgY2hhciogcGl4ZWwgPSAoY29uc3QgdW5zaWduZWQgY2hhciopQ0dCaXRtYXBDb250ZXh0
R2V0RGF0YShjb250ZXh0LmdldCgpKTsKKyAgICBzaXplX3QgaSA9ICh5ICogeCAqIDQpICsgKHgg
KiA0KTsKKworICAgIGF1dG8gciA9IHBpeGVsW2ldOworICAgIGF1dG8gZyA9IHBpeGVsW2kgKyAx
XTsKKyAgICBhdXRvIGIgPSBwaXhlbFtpICsgMl07CisgICAgYXV0byBhID0gcGl4ZWxbaSArIDNd
OworCisgICAgaWYgKCFhKQorICAgICAgICByZXR1cm4geyAwLCAwLCAwLCAwIH07CisgICAgcmV0
dXJuIHsgciAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSB9OworfQorCisv
LyBEb2N1bWVudHMKKworUmVmPFRlc3RQREZEb2N1bWVudD4gVGVzdFBERkRvY3VtZW50OjpjcmVh
dGVGcm9tRGF0YShOU0RhdGEgKmRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVz
dFBERkRvY3VtZW50KGRhdGEpKTsKK30KKworVGVzdFBERkRvY3VtZW50OjpUZXN0UERGRG9jdW1l
bnQoTlNEYXRhICpkYXRhKQorICAgIDogbV9kb2N1bWVudChhZG9wdE5TKFtbUERGRG9jdW1lbnQg
YWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhXSkpCisgICAgLCBtX3BhZ2VzKHBhZ2VDb3VudCgpKQor
eworfQorCitzaXplX3QgVGVzdFBERkRvY3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9kb2N1bWVudCBwYWdlQ291bnRdOworfQorCitUZXN0UERGUGFnZSogVGVzdFBE
RkRvY3VtZW50OjpwYWdlKHNpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPj0gcGFnZUNv
dW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9wYWdlc1tpbmRleF0p
CisgICAgICAgIG1fcGFnZXNbaW5kZXhdID0gVGVzdFBERlBhZ2U6OmNyZWF0ZShbbV9kb2N1bWVu
dCBwYWdlQXRJbmRleDppbmRleF0pOworICAgIHJldHVybiBtX3BhZ2VzW2luZGV4XS5nZXQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>