<?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>212489</bug_id>
          
          <creation_ts>2020-05-28 13:55:39 -0700</creation_ts>
          <short_desc>[macOS] Allow selecting HEIF images if the &apos;accept&apos; attribute includes an image MIME type that the platform can transcode the HEIF to</short_desc>
          <delta_ts>2022-10-06 11:44:11 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>212485</dependson>
          <blocked>212482</blocked>
    
    <blocked>213347</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>micah.millereshleman</cc>
    
    <cc>mifenton</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657002</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-05-28 13:55:39 -0700</bug_when>
    <thetext>If a page has an &lt;input&gt; file element which accepts an image like one of these:

&lt;input type=&quot;file&quot; accept=&quot;image/*&quot;&gt;
&lt;input type=&quot;file&quot; accept=&quot;image/png, image/jpeg&quot;&gt;

And the user clicks it, the File Picker will be launched. This File Picker should allow selecting all the image from the formats as specified in the &quot;accept&quot; attribute. In addition to that, it should also allow selecting the other formats which can be converted to any of the &quot;accept&quot; attribute formats. When selecting an image from unaccepted format, we will convert it to an accepted format. The converted image will be stored in a temporary directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657005</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-28 13:56:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/63731679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660782</commentid>
    <comment_count>2</comment_count>
      <attachid>401459</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-09 12:00:23 -0700</bug_when>
    <thetext>Created attachment 401459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660794</commentid>
    <comment_count>3</comment_count>
      <attachid>401462</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-09 12:33:16 -0700</bug_when>
    <thetext>Created attachment 401462
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661027</commentid>
    <comment_count>4</comment_count>
      <attachid>401498</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-09 17:35:56 -0700</bug_when>
    <thetext>Created attachment 401498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661061</commentid>
    <comment_count>5</comment_count>
      <attachid>401507</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-09 20:07:32 -0700</bug_when>
    <thetext>Created attachment 401507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661063</commentid>
    <comment_count>6</comment_count>
      <attachid>401509</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-09 20:14:16 -0700</bug_when>
    <thetext>Created attachment 401509
Patchtch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661105</commentid>
    <comment_count>7</comment_count>
      <attachid>401518</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-10 01:41:57 -0700</bug_when>
    <thetext>Created attachment 401518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661106</commentid>
    <comment_count>8</comment_count>
      <attachid>401519</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-10 01:48:41 -0700</bug_when>
    <thetext>Created attachment 401519
Patchtch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661545</commentid>
    <comment_count>9</comment_count>
      <attachid>401629</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-11 02:06:17 -0700</bug_when>
    <thetext>Created attachment 401629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661703</commentid>
    <comment_count>10</comment_count>
      <attachid>401629</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-11 12:45:36 -0700</bug_when>
    <thetext>Comment on attachment 401629
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm:159
&gt; +- (NSArray&lt;NSString *&gt; *)_allowedFileExtensionsTitles

Confused. How does localization work at all for this set of strings?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm:172
&gt; +                [titles addObject:[NSString stringWithFormat:@&quot;%@ %@&quot;, [subType uppercaseString], type]];

Assuming these should be capitalized (and that appending their top-level type reads correctly) seems pretty bold.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:35
&gt; +@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allImageFileExtensions WK_API_AVAILABLE(macos(10.13.4));

The availability here is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662220</commentid>
    <comment_count>11</comment_count>
      <attachid>401629</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-12 16:30:41 -0700</bug_when>
    <thetext>Comment on attachment 401629
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm:159
&gt;&gt; +- (NSArray&lt;NSString *&gt; *)_allowedFileExtensionsTitles
&gt; 
&gt; Confused. How does localization work at all for this set of strings?

Said told me when I reviewed a previous version of this patch that this is temporarily non-localized and will be localized after a future check-in. Of course, our traditional way to indicate that would be a FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663362</commentid>
    <comment_count>12</comment_count>
      <attachid>402072</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-16 19:44:01 -0700</bug_when>
    <thetext>Created attachment 402072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663364</commentid>
    <comment_count>13</comment_count>
      <attachid>401629</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-16 19:52:31 -0700</bug_when>
    <thetext>Comment on attachment 401629
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm:159
&gt;&gt;&gt; +- (NSArray&lt;NSString *&gt; *)_allowedFileExtensionsTitles
&gt;&gt; 
&gt;&gt; Confused. How does localization work at all for this set of strings?
&gt; 
&gt; Said told me when I reviewed a previous version of this patch that this is temporarily non-localized and will be localized after a future check-in. Of course, our traditional way to indicate that would be a FIXME comment.

I made all strings localizable. Only image, video and audio mime types will be have specific titles in the OpenPanel filter. Other mime types will be shown as &quot;Custom Files&quot;.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm:172
&gt;&gt; +                [titles addObject:[NSString stringWithFormat:@&quot;%@ %@&quot;, [subType uppercaseString], type]];
&gt; 
&gt; Assuming these should be capitalized (and that appending their top-level type reads correctly) seems pretty bold.

The top level type will be localized and the sub-types will be capitalized if the length is four characters or less.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:35
&gt;&gt; +@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allImageFileExtensions WK_API_AVAILABLE(macos(10.13.4));
&gt; 
&gt; The availability here is incorrect.

I removed all the availability macros from all the properties in this file. I think none of them is related to the macOS version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663368</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-16 20:24:59 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #13)
&gt; Comment on attachment 401629 [details]
&gt; Patch
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:35
&gt; &gt;&gt; +@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allImageFileExtensions WK_API_AVAILABLE(macos(10.13.4));
&gt; &gt; 
&gt; &gt; The availability here is incorrect.
&gt; 
&gt; I removed all the availability macros from all the properties in this file.
&gt; I think none of them is related to the macOS version.

You went the wrong way with this :) It should indicate the first time they were available in the SDK. Put the old ones back, and your new one should have WK_MAC_TBA availability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663371</commentid>
    <comment_count>15</comment_count>
      <attachid>402077</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-16 21:04:25 -0700</bug_when>
    <thetext>Created attachment 402077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663372</commentid>
    <comment_count>16</comment_count>
      <attachid>401629</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-16 21:07:06 -0700</bug_when>
    <thetext>Comment on attachment 401629
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:35
&gt;&gt;&gt;&gt; +@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allImageFileExtensions WK_API_AVAILABLE(macos(10.13.4));
&gt;&gt;&gt; 
&gt;&gt;&gt; The availability here is incorrect.
&gt;&gt; 
&gt;&gt; I removed all the availability macros from all the properties in this file. I think none of them is related to the macOS version.
&gt; 
&gt; You went the wrong way with this :) It should indicate the first time they were available in the SDK. Put the old ones back, and your new one should have WK_MAC_TBA availability.

I added the following properties in r262895 so they have to have WK_MAC_TBA also:

@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allowedFileExtensions WK_API_AVAILABLE(macos(10.13.4));
@property (nonatomic, readonly, copy) NSArray&lt;NSString *&gt; *_allowedFileExtensionsTitles WK_API_AVAILABLE(macos(10.13.4));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663374</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-06-16 21:20:26 -0700</bug_when>
    <thetext>Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668151</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-01 22:43:00 -0700</bug_when>
    <thetext>The plan for the UI will change:

The file picker will include a checkbox with the text &quot;Select All Files&quot;. The default state of this checkbox is off. Here is the rule for selecting and deselecting it:

1. Selected: All files are allowed to be selected. Upon selecting a file, no image transcoding will be performed. The File object will be created with the original image.

2. Not selected: Only files with extensions which are specified in the &apos;accept&apos; attribute will be allowed to be selected. If the &apos;accept&apos; attribute includes one of the formats which is allowed for encoding, files with any image extension will be allowed to be selected. Upon selecting an image, we check if mime type of the image is not one of the mime types of &apos;accept&apos; attribute, the image will be transcoded to the first mime type in the &apos;accept&apos; attribute and which is allowed for encoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668160</commentid>
    <comment_count>19</comment_count>
      <attachid>403345</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-01 23:27:10 -0700</bug_when>
    <thetext>Created attachment 403345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668171</commentid>
    <comment_count>20</comment_count>
      <attachid>403348</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 00:17:22 -0700</bug_when>
    <thetext>Created attachment 403348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668195</commentid>
    <comment_count>21</comment_count>
      <attachid>403356</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 02:21:26 -0700</bug_when>
    <thetext>Created attachment 403356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668728</commentid>
    <comment_count>22</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-03 21:53:33 -0700</bug_when>
    <thetext>Then scope of the change will be limited. No UI change will be done. Only allow HEIF/HEIC images to be selected the &apos;accept&apos; attribute include a mime type which is supported for encoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668735</commentid>
    <comment_count>23</comment_count>
      <attachid>403508</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-03 22:03:57 -0700</bug_when>
    <thetext>Created attachment 403508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668736</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 22:15:00 -0700</bug_when>
    <thetext>Retitled to what I *think* you mean, Said. Let me know if it’s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668744</commentid>
    <comment_count>25</comment_count>
      <attachid>403511</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-03 22:31:42 -0700</bug_when>
    <thetext>Created attachment 403511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668745</commentid>
    <comment_count>26</comment_count>
      <attachid>403512</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-03 22:37:05 -0700</bug_when>
    <thetext>Created attachment 403512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668746</commentid>
    <comment_count>27</comment_count>
      <attachid>403511</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 22:38:33 -0700</bug_when>
    <thetext>Comment on attachment 403511
Patch

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

Is there a regression test here? I can’t find it.

&gt; Source/WebCore/platform/FileChooserSettings.h:42
&gt; +enum MediaCaptureType {
&gt; +    MediaCaptureTypeNone,
&gt; +    MediaCaptureTypeUser,
&gt; +    MediaCaptureTypeEnvironment
&gt; +};

Seems like this should be an enum class. Obviously we don’t need to make this change right now.

&gt; Source/WebCore/platform/FileChooserSettings.h:50
&gt; +    WEBCORE_EXPORT Vector&lt;String&gt; allowedMIMETypes() const;
&gt; +    WEBCORE_EXPORT Vector&lt;String&gt; allowedFileExtensions() const;

Not sure these should be member functions. Could they just be free functions that take a const FileChooserSettings&amp;? Or maybe static member functions of some class where this policy belongs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668747</commentid>
    <comment_count>28</comment_count>
      <attachid>403512</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 22:42:29 -0700</bug_when>
    <thetext>Comment on attachment 403512
Patch

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

&gt; Source/WebCore/platform/FileChooserSettings.h:50
&gt; +    WEBCORE_EXPORT Vector&lt;String&gt; allowedMIMETypes() const;
&gt; +    WEBCORE_EXPORT Vector&lt;String&gt; allowedFileExtensions() const;

I think maybe these belong as MIMETypeRegistry functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668750</commentid>
    <comment_count>29</comment_count>
      <attachid>403512</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 22:54:07 -0700</bug_when>
    <thetext>Comment on attachment 403512
Patch

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

&gt; Source/WebCore/platform/FileChooserSettings.cpp:71
&gt; +        acceptMIMETypes.appendVector(Vector&lt;String&gt;({ &quot;image/heif&quot;, &quot;image/heic&quot; }));

Typically we’d want to use _s so we get the ASCIILiteral optimization. Also not sure if appendVector is more efficient than two calls to append.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668760</commentid>
    <comment_count>30</comment_count>
      <attachid>403516</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-04 01:28:24 -0700</bug_when>
    <thetext>Created attachment 403516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668768</commentid>
    <comment_count>31</comment_count>
      <attachid>403518</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-04 02:25:02 -0700</bug_when>
    <thetext>Created attachment 403518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668802</commentid>
    <comment_count>32</comment_count>
      <attachid>403518</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-04 10:36:43 -0700</bug_when>
    <thetext>Comment on attachment 403518
Patch

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

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:796
&gt; +static inline bool shouldAppendNotAcceptedExtensions(const Vector&lt;String&gt;&amp; mimeTypes)

The name here isn’t great. I would not call these &quot;not-accepted extensions&quot;.

I think the question this function answers is containsImageMIMETypeForEncoding.

A name for this could be shouldIncludeImageTypesForTranscoding?

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:828
&gt; +    if (shouldAppendNotAcceptedExtensions(allowedMIMETypes(mimeTypes, extensions))) {
&gt; +        effectiveMIMETypes.append(&quot;image/heif&quot;_s);
&gt; +        effectiveMIMETypes.append(&quot;image/heic&quot;_s);
&gt; +    }

The correctness of this is not obvious without a comment. And, hardwiring this for all platforms seems incorrect; can all platforms with WebKit convert HEIF and HEIC? Also, long term this should add all images that we know how to encode.

Finally, where is the logic that causes the re-encoding?

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:-696
&gt; -        [openPanel setAccessoryView:filterView];

Change log doesn’t explain why we no longer need to set an accessory view. I trust that it’s a thoughtful, intentional change, but it’s not obvious to me why it was valuable before and why it’s no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668848</commentid>
    <comment_count>33</comment_count>
      <attachid>403538</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-04 17:00:10 -0700</bug_when>
    <thetext>Created attachment 403538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668849</commentid>
    <comment_count>34</comment_count>
      <attachid>403518</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-04 17:05:36 -0700</bug_when>
    <thetext>Comment on attachment 403518
Patch

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

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:796
&gt;&gt; +static inline bool shouldAppendNotAcceptedExtensions(const Vector&lt;String&gt;&amp; mimeTypes)
&gt; 
&gt; The name here isn’t great. I would not call these &quot;not-accepted extensions&quot;.
&gt; 
&gt; I think the question this function answers is containsImageMIMETypeForEncoding.
&gt; 
&gt; A name for this could be shouldIncludeImageTypesForTranscoding?

I added two functions to MIMETypeRegistry: (1) preferredImageMIMETypeForEncoding() which returns the first MIME type which CG supports encoding HEIF to. (2) containsImageMIMETypeForEncoding() which returns true if there is such MIME type.

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:828
&gt;&gt; +    }
&gt; 
&gt; The correctness of this is not obvious without a comment. And, hardwiring this for all platforms seems incorrect; can all platforms with WebKit convert HEIF and HEIC? Also, long term this should add all images that we know how to encode.
&gt; 
&gt; Finally, where is the logic that causes the re-encoding?

I moved adding the HEIF/HEIC MIME types to OpenPanelParameters::allowedFileExtensions() and I surrounded the code by #if PLATFORM(MAC).

&gt;&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:-696
&gt;&gt; -        [openPanel setAccessoryView:filterView];
&gt; 
&gt; Change log doesn’t explain why we no longer need to set an accessory view. I trust that it’s a thoughtful, intentional change, but it’s not obvious to me why it was valuable before and why it’s no longer needed.

Changing the UI still valuable. But we decided to scope down the change to just fix the HEIF/HEIC case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668850</commentid>
    <comment_count>35</comment_count>
      <attachid>403518</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-04 17:08:29 -0700</bug_when>
    <thetext>Comment on attachment 403518
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:828
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; The correctness of this is not obvious without a comment. And, hardwiring this for all platforms seems incorrect; can all platforms with WebKit convert HEIF and HEIC? Also, long term this should add all images that we know how to encode.
&gt;&gt; 
&gt;&gt; Finally, where is the logic that causes the re-encoding?
&gt; 
&gt; I moved adding the HEIF/HEIC MIME types to OpenPanelParameters::allowedFileExtensions() and I surrounded the code by #if PLATFORM(MAC).

I will upload this code to bug 213347. It depends on the patch of bug and the patch of bug 213828. So I will add the diff on top of these two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668862</commentid>
    <comment_count>36</comment_count>
      <attachid>403538</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-04 19:18:41 -0700</bug_when>
    <thetext>Comment on attachment 403538
Patch

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

&gt; Source/WebKit/UIProcess/API/APIOpenPanelParameters.cpp:80
&gt; +#if PLATFORM(MAC)
&gt; +    auto acceptMIMETypes = m_settings.acceptMIMETypes;
&gt; +
&gt; +    // On macOS allow selecting HEIF/HEIC images if acceptMIMETypes or acceptFileExtensions include at least
&gt; +    // one MIME type which CG supports encoding to.
&gt; +    if (MIMETypeRegistry::containsImageMIMETypeForEncoding(acceptMIMETypes, m_settings.acceptFileExtensions)) {
&gt; +        acceptMIMETypes.append(&quot;image/heif&quot;_s);
&gt; +        acceptMIMETypes.append(&quot;image/heic&quot;_s);
&gt; +    }
&gt; +    
&gt; +    return API::Array::createStringArray(WebCore::MIMETypeRegistry::allowedFileExtensions(acceptMIMETypes, m_settings.acceptFileExtensions));
&gt; +#else

This is OK for now. Longer term it would be nice if any platform could take advantage of transcoding as part of the upload process, not just macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668871</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-05 01:52:02 -0700</bug_when>
    <thetext>/Volumes/Data/worker/Commit-Queue/build/Source/WebKit/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668873</commentid>
    <comment_count>38</comment_count>
      <attachid>403549</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-05 02:32:41 -0700</bug_when>
    <thetext>Created attachment 403549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668876</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-05 03:02:06 -0700</bug_when>
    <thetext>Committed r263949: &lt;https://trac.webkit.org/changeset/263949&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403549.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903795</commentid>
    <comment_count>40</comment_count>
    <who name="Micah">micah.millereshleman</who>
    <bug_when>2022-10-06 10:18:03 -0700</bug_when>
    <thetext>Would it be possible to also convert these images to JPEG when dragging and dropping? For instance, on the drop event, to have event.dataList.files contain a JPEG instead of an HEIC?

Right now web apps like befunky.com can open an HEIC image via a file input (due to this fix), but if a user drag and drops an HEIC into the page, it isn&apos;t converted to JPEG automatically and thus we can&apos;t render it to a canvas or load it in an ImageElement.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401459</attachid>
            <date>2020-06-09 12:00:23 -0700</date>
            <delta_ts>2020-06-09 17:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200609120022.patch</filename>
            <type>text/plain</type>
            <size>21609</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzZjAwNmI2NjNkMThl
ZjQ4NjRiYmRhZjRjOTJmNTA1YjllMTk5YS4uYWNjOTE5MmZhYmU5NzI2NWEzNGM0Y2FmYmM2ZWFm
ZjBhNWYwZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJl
bmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oOgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFiODAxNDk5NWUwNjlhZDMw
YjkxZGFjODRmZGI0M2IyYWMwNGU4NzAuLjUzMDdjMWYyZmQzYTRlNzY1NmZjYmI5YjVmMDBjZTkw
Y2Y3NzY1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA4
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91
bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGFuIFNQSSBmcm9tIENvcmVTZXJ2Y2llcyB0byBn
ZXQgYWxsIHRoZSBVVElzIGtub3duIGJ5IHRoZSBzeXN0ZW0uCisKKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA2LTA1ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBSZW1vdmUgY29uZGl0aW9uYWxz
IGZvciBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVigzfDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5
MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4NTY2OTIuLmI0N2Y5NjA0NzA1MTVjZDZiMWFkMDI1
MWUyYjYxOWNjMjhkYTAwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDYtMDkg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93
IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhl
ICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZv
cm1hdCwgYWRkIGEgbmV3IGl0ZW0gaW4gdGhlIEZpbGUgUGlja2VyIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VG
aWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93
ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorCisyMDIwLTA2LTA4ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhl
IEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUg
c2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHR3byBwcml2YXRlIGhlbHBlcnMgdG8gV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNp
b25zXSk6CisgICAgICAgIFJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcg
dGhlIGFsbG93ZWQgZXh0ZW5zaW9ucy4KKworICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRl
cnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0aW9uXSk6CisgICAgICAgIFJldHVybnMg
YSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZGVzY3JpcHRpb24gZm9yIHRoZSBhbGxvd2VkIGV4dGVu
c2lvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVyc1ByaXZhdGUuaDoKKwogMjAyMC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJs
eSBzdW1tZXIgMjAyMCBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCmluZGV4IGE0YTRkZGQ1NDUyNjJlYTQ1NDhmNTRiY2Qy
ODE0MTYzMmE2ZmMwNjkuLmNhNGVmZjM3OGMyODI0Mjg4OTY0OGY0MzU3YzYzODU2ZjlhYTI2NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNl
c1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNl
c1NQSS5oCkBAIC0yNiwzICsyNiw1IEBACiAjcHJhZ21hIG9uY2UKIAogZXh0ZXJuICJDIiB2b2lk
IF9DU0NoZWNrRml4RGlzYWJsZSgpOworZXh0ZXJuICJDIiBDRkFycmF5UmVmIF9VVENvcHlEZWNs
YXJlZFR5cGVJZGVudGlmaWVycyh2b2lkKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNi
M2ZhM2YuLjEzZTI1MTZmOTYxMjY1NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VW
aWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0g
ICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAK
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5n
IGxvYWRlZCBhcyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4IDhlMGM4ZWVkMGI5YWFlN2Jl
ZmQ0YTk2MWMwOGQyZTYwYWY2NjZhNzAuLjA1OGNjMjczZjFjOTg2MmRkYTMyNDk2OWNhOGMxOTgw
NWYzMjQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsNjIgQEAKIAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgor
I2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL0NvcmVTZXJ2aWNlc1NQSS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJX
S05TQXJyYXkuaCIKIAorc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlN
RVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+Pj4g
c19taW1lVHlwZVRvRXh0ZW5zaW9uczsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNNdXRh
YmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKj4gKm1p
bWVUeXBlVG9FeHRlbnNpb25zID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07Cisg
ICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFy
ZWRUeXBlSWRlbnRpZmllcnMoKSk7CisKKyAgICAgICAgdm9pZCAoXmFkZEV4dGVuc2lvbkZvck1J
TUVUeXBlKShOU1N0cmluZyAqbWltZVR5cGUsIE5TU3RyaW5nICpleHRlbnNpb24pID0gXihOU1N0
cmluZyAqbWltZVR5cGUsIE5TU3RyaW5nICpleHRlbnNpb24pIHsKKyAgICAgICAgICAgIGlmICgh
bWltZVR5cGVUb0V4dGVuc2lvbnNbbWltZVR5cGVdKQorICAgICAgICAgICAgICAgIG1pbWVUeXBl
VG9FeHRlbnNpb25zW21pbWVUeXBlXSA9IFtOU011dGFibGVTZXQgc2V0XTsKKyAgICAgICAgICAg
IFttaW1lVHlwZVRvRXh0ZW5zaW9uc1ttaW1lVHlwZV0gYWRkT2JqZWN0OmV4dGVuc2lvbl07Cisg
ICAgICAgIH07CisKKyAgICAgICAgdm9pZCAoXmFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSkoTlNT
dHJpbmcgKm1pbWVUeXBlLCBOU0FycmF5PE5TU3RyaW5nICo+ICpleHRlbnNpb25zKSA9IF4oTlNT
dHJpbmcgKm1pbWVUeXBlLCBOU0FycmF5PE5TU3RyaW5nICo+ICpleHRlbnNpb25zKSB7CisgICAg
ICAgICAgICBOU1N0cmluZyAqd2lsZGNhcmRNSU1FVHlwZSA9IFtbbWltZVR5cGUgY29tcG9uZW50
c1NlcGFyYXRlZEJ5U3RyaW5nOkAiLyJdWzBdIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiLyoi
XTsKKworICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnMp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNh
cmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JN
SU1FVHlwZShtaW1lVHlwZSwgZXh0ZW5zaW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBmb3IgKE5TU3RyaW5nICp1dGkgaW4gYWxsVVRJcy5nZXQoKSkgeworICAgICAg
ICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVBy
ZWZlcnJlZFRhZ1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpKHV0aSksIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUpKTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZXh0ZW5zaW9ucyA9
IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3RyaW5nUmVm
KSh1dGkpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBhZGRF
eHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIE5TQXJyYXk8TlNTdHJpbmcgKj4gKj4+IHdoaXRlbGlzdGVkTWltZVR5cGVzID0gYWRv
cHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAg
ICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6IEAid2VicCIgLCBuaWxdLCBAImltYWdl
L3dlYnAiLAorICAgICAgICAgICAgbmlsCisgICAgICAgIF0pOworCisgICAgICAgIFt3aGl0ZWxp
c3RlZE1pbWVUeXBlcy5nZXQoKSBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihO
U1N0cmluZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wg
KikgeworICAgICAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlLCBleHRl
bnNpb25zKTsKKyAgICAgICAgfV07CisKKyAgICAgICAgc19taW1lVHlwZVRvRXh0ZW5zaW9ucy5n
ZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICB9KTsKKworICAgIHJldHVy
biBbc19taW1lVHlwZVRvRXh0ZW5zaW9ucy5nZXQoKSBvYmplY3RGb3JLZXk6bWltZXR5cGVdOwor
fQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTYzLDYgKzExNCwxMDQgQEAKICAgICByZXR1cm4gd3Jh
cHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAK
Ky0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCit7CisgICAg
Ly8gQWdncmVnYXRlIGV4dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCisg
ICAgTlNBcnJheTxOU1N0cmluZyAqPiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0
ZWRNSU1FVHlwZXNdOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFjY2VwdGVkRmlsZUV4dGVu
c2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107CisKKyAgICBOU011dGFibGVT
ZXQ8TlNTdHJpbmcgKj4gKmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFtOU011dGFibGVTZXQgc2V0
XTsKKworICAgIFthY2NlcHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpe
KE5TU3RyaW5nICptaW1lVHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgeworICAg
ICAgICBBU1NFUlQoW21pbWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKKyAgICAgICAgW2Fs
bG93ZWRGaWxlRXh0ZW5zaW9ucyB1bmlvblNldDpleHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5
cGUpXTsKKyAgICB9XTsKKworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphZGRpdGlv
bmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBb
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3Ry
aW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAg
QVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOworICAgICAgICBb
YWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJz
dHJpbmdGcm9tSW5kZXg6MV1dOworICAgIH1dOworICAgIAorICAgIFthbGxvd2VkRmlsZUV4dGVu
c2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25z
XTsKKyAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKK30KKwor
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxJbWFnZUZpbGVFeHRlbnNpb25zCit7CisgICAg
cmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107Cit9
CisKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
Cit7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqICheY29tcG9zZVRpdGxlcykoTlNTdHJpbmcg
KnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkgPSBeKE5TU3RyaW5n
ICp0eXBlLCBOU1N0cmluZyAqc3ViVHlwZSwgTlNTdHJpbmcgKmFsbFR5cGUpIHsKKyAgICAgICAg
TlNNdXRhYmxlQXJyYXkqIHRpdGxlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAg
IAorICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgaWYgKFtzdWJU
eXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5n
XSwgdHlwZV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRk
T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBzdWJUeXBlLCB0eXBl
XV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgbGVuZ3RoXSkKKyAgICAgICAgICAgIFt0aXRs
ZXMgYWRkT2JqZWN0OnR5cGVdOworICAgICAgICAgICAgCisgICAgICAgIGlmIChbYWxsVHlwZSBs
ZW5ndGhdKQorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQCVAIEZpbGVzIiwgW1thbGxUeXBlIHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBw
ZXJjYXNlU3RyaW5nXSwgW2FsbFR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OjFdXV07CisKKyAgICAg
ICAgW3RpdGxlcyBhZGRPYmplY3Q6QCJBbGwgRmlsZXMiXTsKKyAgICAgICAgcmV0dXJuIHRpdGxl
czsKKyAgICB9OworCisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqYWNjZXB0ZWRNSU1FVHlwZXMg
PSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFj
Y2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107CisK
KyAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVthY2NlcHRlZEZpbGVFeHRl
bnNpb25zIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAi
Iik7CisKKyAgICBpZiAoW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICBy
ZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKworICAgIE5T
U3RyaW5nICp0eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJUeXBlID0gbmlsOworICAgIE5T
U3RyaW5nICphbGxUeXBlID0gbmlsOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKm1pbWVUeXBl
IGluIGFjY2VwdGVkTUlNRVR5cGVzKSB7CisgICAgICAgIE5TUmFuZ2UgcmFuZ2UgPSBbbWltZVR5
cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKworICAgICAgICBpZiAoIXJhbmdlLmxlbmd0aCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIE5TU3RyaW5nICptaW1lVHlwZVByZWZpeCA9
IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKKyAgICAgICAgTlNT
dHJpbmcgKm1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5n
ZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHR5cGUg
PSBtaW1lVHlwZVByZWZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzpAIkN1c3RvbSJdICYmICFbdHlwZSBpc0VxdWFsVG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQor
ICAgICAgICAgICAgdHlwZSA9IEAiQ3VzdG9tIjsKKworICAgICAgICBpZiAoW21pbWVUeXBlU3Vm
Zml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlw
ZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIXN1YlR5cGUpCisgICAgICAgICAgICBzdWJUeXBl
ID0gbWltZVR5cGVTdWZmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbc3ViVHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCIqIl0gJiYgIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIkN1c3RvbSJdICYmICFb
c3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6bWltZVR5cGVTdWZmaXhdKQorICAgICAgICAgICAgc3Vi
VHlwZSA9IEAiQ3VzdG9tIjsKKworICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKQorICAgICAg
ICAgICAgYWxsVHlwZSA9IEAiaW1hZ2UiOworICAgIH0KKworICAgIGlmIChbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6QCJDdXN0b20iXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCJDdXN0
b20gRmlsZXMiLCBAIiIsIEAiIik7CisKKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5n
OkAiKiJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgdHlwZSk7CisK
KyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0pCisgICAgICAgIHJl
dHVybiBjb21wb3NlVGl0bGVzKEAiQ3VzdG9tIEZpbGVzIiwgQCIiLCBhbGxUeXBlKTsKKworICAg
IHJldHVybiBjb21wb3NlVGl0bGVzKHR5cGUsIHN1YlR5cGUsIGFsbFR5cGUpOworfQorCiBAZW5k
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMTNiYTdkODNk
NjY2NDdhNDZiMWMzNDEzNzBiNzg5N2UyMzRhYWM4Yi4uMDMzZjI3NDgzZGIzYmViMzU4YmQwYThj
NWM1OGFiODFlNmQxNGRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0z
MSw2ICszMSw5IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhNDIyNzY3YTk4YWM4ODRk
OTIwZmUxMWIzN2M3NzQwN2FhZGE4YjguLjY0MTIwYmYyYzQzMWNiYzlmMTk3MDAxNmY3NjBkMjBk
MjYwMTg4YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0wNi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBv
ZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGlj
aCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1h
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRo
ZSBudW1iZXIgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucyB0aXRsZXMgaXMgdGhyZWUsIHNlbmQgYW4g
YXJyYXkgb2YgCisgICAgICAgIGFsbEltYWdlRmlsZUV4dGVuc2lvbnMgdG8gRmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldC4gQWxzbyBzZXQgdGhlIGluaXRpYWwKKyAgICAgICAgc2VsZWN0aW9uIG9m
IHRoZSBmaWx0ZXIgdG8gdGhlIGl0ZW0gbmFtZWQgIkltYWdlIEZpbGVzIi4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAo
LVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxl
RXh0ZW5zaW9uczphbGxJbWFnZUZpbGVFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtGaWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1l
dGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBh
bmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KworMjAyMC0wNi0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxl
IGVsZW1lbnQgc2hvdWxkIHNob3cgdGhlIHNlbGVjdGlvbiBmaWx0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHZpZXcgd2l0aCBhbiBO
U1BvcHVwQnV0dG9uIGZvciB0aGUgZmlsZSBleHRlbnNpb25zIGZpbHRlci4gU2V0CisgICAgICAg
IHRoaXMgdmlldyBhcyB0aGUgQWNjZXNzb3J5VmlldyBvZiB0aGUgT3BlblBhbmVsLiBDcmVhdGUg
YSBjdXN0b21pemVkIHRhcmdldAorICAgICAgICBmb3IgdGhlIE5TUG9wdXBCdXR0b24gdG8gcmVz
cG9uZCB0byBjaGFuZ2luZyBpdHMgc2VsZWN0aW9uLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0p
OgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgor
ICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorCiAyMDIwLTA2LTA1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQXBwbGUgUGF5XSBSZW1vdmUgY29uZGl0aW9uYWxzIGZvciBFTkFCTEVfQVBQ
TEVfUEFZX1NFU1NJT05fVigzfDQpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDBjYmY5YzQ1YjJiYTY4MTYxMWNiMzg4Y2Rl
YWUyMGJiMWUyYzVmNTYuLjAzNjNkMjRkMjcxNGZkY2JlMDIwN2U2ODFiMjM3NjZhNzE4NjZhMmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGcmFtZUluZm8uaD4K
ICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS09wZW5QYW5l
bFBhcmFtZXRlcnNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VJRGVsZWdhdGVQcml2YXRlLmg+CkBAIC03MSw2ICs3Miw0NiBAQCAtICh2b2lkKXBlcmZvcm1B
Y3Rpb246KE5TVGV4dEZpbmRlckFjdGlvbilvcAogCiBAZW5kCiAKKy8vIFRhcmdldCBmb3IgdGhl
IEZpbGVFeHRlbnNpb25zIE5TUG9wdXBCdXR0b24gaW4gdGhlIE9wZW5QYW5lbCdzIEFjY2Vzc29y
eVZpZXcuCitAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7
CitAcHJpdmF0ZQorICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOworICAgIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBG
aWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CisKKy0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09w
ZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmlsZUV4dGVuc2lvbnMgeworICAgIGlmICgoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpIHsKKyAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5QYW5lbDsKKyAg
ICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29w
eV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbEltYWdlRmlsZUV4dGVu
c2lvbnMgY29weV07CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXBvcHVw
QWN0aW9uOihpZClzZW5kZXIgeworICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1d
ID09IDEgJiYgW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAgW19vcGVu
UGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc107CisgICAg
ZWxzZSBpZiAoW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkKKyAgICAgICAgW19vcGVuUGFu
ZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpuaWxdOworICAgIGVsc2UgaWYgKCFbX2FsbG93ZWRGaWxl
RXh0ZW5zaW9ucyBjb3VudF0pCisgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlw
ZXM6QFtAIiJdXTsKKyAgICBlbHNlCisgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxl
VHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107Cit9CisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOworICAgIFtfYWxsSW1hZ2VGaWxl
RXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKKwog
QGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8TlNUZXh0RmluZGVyQmFy
Q29udGFpbmVyLCBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlLCBfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlPgogQGVuZAogCkBAIC04NSw2ICsxMjYsNyBAQCBAaW1wbGVtZW50YXRpb24g
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgewogICAgIE1pbmlCcm93c2VyTlNUZXh0RmluZGVy
ICpfdGV4dEZpbmRlcjsKICAgICBOU1ZpZXcgKl90ZXh0RmluZEJhclZpZXc7CiAgICAgQk9PTCBf
ZmluZEJhclZpc2libGU7CisgICAgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCAqX2ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQ7CiB9CiAKIC0gKHZvaWQpYXdha2VGcm9tTmliCkBAIC0xNzAsNiAr
MjEyLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKICAgICBbX3dlYlZpZXcgcmVsZWFzZV07CiAgICAg
W19jb25maWd1cmF0aW9uIHJlbGVhc2VdOworICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCByZWxlYXNlXTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTU4Nyw2ICs2MzAsNTQg
QEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QKICAgICB9XTsKIH0KIAorLSAobnVsbGFibGUgTlNW
aWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKK3sKKyAgICBOU1RleHRGaWVsZCog
bGFiZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBh
dXRvcmVsZWFzZV07CisgICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOworICAg
IFtsYWJlbCBzZXRFZGl0YWJsZTpOT107CisgICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwor
ICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpOT107CisgICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xv
cjpbTlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgW2xhYmVsIHNpemVUb0ZpdF07CisKKyAgICBO
U1BvcFVwQnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07CisgICAgW2J1dHRvbiBh
ZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsKKyAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRh
cmdldF07CisgICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwor
ICAgIFtidXR0b24gc2l6ZVRvRml0XTsKKyAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4Olt0
aXRsZXMgY291bnRdID09IDIgPyAwIDogMV07CisgICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9u
OmJ1dHRvbl07CisgICAgCisgICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKKyAgICBbZmlsdGVyVmll
dyBhZGRTdWJ2aWV3OmxhYmVsXTsKKyAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07
CisKKyAgICBjb25zdCBDR0Zsb2F0IG1hcmdpbiA9IDIwOworICAgIGNvbnN0IENHRmxvYXQgc3Bh
Y2luZyA9IDI7CisgICAgY29uc3QgQ0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKKworICAg
IE5TUmVjdCBsYWJlbEZyYW1lID0gW2xhYmVsIGZyYW1lXTsKKyAgICBOU1JlY3QgYnV0dG9uRnJh
bWUgPSBbYnV0dG9uIGZyYW1lXTsKKyAgICBOU1JlY3QgZmlsdGVyVmlld0ZyYW1lID0gW2ZpbHRl
clZpZXcgZnJhbWVdOworCisgICAgLy8gU2V0IGEgbWluaW11bSB3aWR0aCBmb3IgJ2J1dHRvbicu
CisgICAgYnV0dG9uRnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTUFYKE5TV2lkdGgoYnV0dG9uRnJh
bWUpLCBtaW5CdXR0b25XaWR0aCksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSk7CisgICAgCisgICAg
Ly8gRmlsdGVyVmlldyB3aWxsIGxheSBvdXQgJ2xhYmVsJyBhbmQgJ2J1dHRvbicgaG9yaXpvbnRh
bGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFyZ2lucy4KKyAgICBmaWx0ZXJWaWV3RnJhbWUuc2l6
ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChsYWJlbEZyYW1lKSArIE5TV2lkdGgoYnV0dG9uRnJhbWUp
ICsgc3BhY2luZywgTUFYKE5TSGVpZ2h0KGxhYmVsRnJhbWUpLCBOU0hlaWdodChidXR0b25GcmFt
ZSkpICsgbWFyZ2luICogMik7CisgICAgW2ZpbHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0Zy
YW1lXTsKKworICAgIC8vICdsYWJlbCcgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxs
eS4KKyAgICBsYWJlbEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1l
KSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAy
KTsKKyAgICBbbGFiZWwgc2V0RnJhbWU6bGFiZWxGcmFtZV07CisgICAgCisgICAgLy8gJ2J1dHRv
bicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFm
dGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5LgorICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFr
ZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSArIDIsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUp
IC0gTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSAvIDIpOworICAgIFtidXR0b24gc2V0RnJhbWU6YnV0
dG9uRnJhbWVdOworCisgICAgcmV0dXJuIGZpbHRlclZpZXc7Cit9CisKICNpZiBfX2hhc19mZWF0
dXJlKG9iamNfZ2VuZXJpY3MpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFt
ZXRlcnMgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVy
CiAjZWxzZQpAQCAtNTk3LDYgKzY4OCwxNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogCiAg
ICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbjsKIAorICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKKyAgICBOU0Fy
cmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVu
c2lvbnM7CisgICAgTlNBcnJheSAqYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmls
ZUV4dGVuc2lvbnNUaXRsZXMgY291bnRdID09IDIgPyBAW10gOiBwYXJhbWV0ZXJzLl9hbGxJbWFn
ZUZpbGVFeHRlbnNpb25zOworCisgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVh
c2VdOworICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczogYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6
IGFsbEltYWdlRmlsZUV4dGVuc2lvbnNdOworCisgICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3Nl
bGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJn
ZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOworICAgIGlmIChmaWx0ZXJWaWV3KQorICAg
ICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CisKICAgICBbb3Bl
blBhbmVsIGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzp3ZWJWaWV3LndpbmRvdyBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TSW50ZWdlciByZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01v
ZGFsUmVzcG9uc2VPSykKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG9wZW5QYW5lbC5V
UkxzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401462</attachid>
            <date>2020-06-09 12:33:16 -0700</date>
            <delta_ts>2020-06-09 17:35:54 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>Bug_212489.patch</filename>
            <type>text/plain</type>
            <size>12856</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YjNmMDA2YjY2My4uYWNjOTE5MmZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMC0wNi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlu
cHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUg
Y29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCBhIE1JTUVU
eXBlUmVnaXN0cnkgQVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNi0wNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVc2UgQVZB
c3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUuLjEzZTI1
MTZmOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBi
ZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2Uu
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0MWQ3NTAxMTk3Li5i
NDdmOTYwNDcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0wOSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106
IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0
aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2Vw
dCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2UgZm9ybWF0LCBh
ZGQgYSBuZXcgaXRlbSBpbiB0aGUgRmlsZSBQaWNrZXIgZmlsdGVyIG5hbWVkICJJbWFnZSBGaWxl
cyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRl
bnNpb25zXSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVF
eHRlbnNpb25zVGl0bGVzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnNQcml2YXRlLmg6CisKIDIwMjAtMDYtMDggIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQ
aWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBzaG93IHRoZSBzZWxlY3Rp
b24gZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQppbmRleCA2MzZiMjNmNzFmZC4uMDU4Y2MyNzNm
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldLT3BlblBhbmVsUGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1w
b3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
Q29yZVNlcnZpY2VzU1BJLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzYsMzMgKzEzNyw3
OSBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0
cmluZyAqbWltZXR5cGUpCiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2Jq
ZWN0c107CiB9CiAKLS0gKE5TU3RyaW5nICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0
aW9uCistIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsK
KyAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1FVHlwZShAImltYWdlLyoiKSBhbGxPYmplY3Rz
XTsKK30KKworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNU
aXRsZXMKK3sKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICogKF5jb21wb3NlVGl0bGVzKShOU1N0
cmluZyAqdHlwZSwgTlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSA9IF4oTlNT
dHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkgeworICAg
ICAgICBOU011dGFibGVBcnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBpZiAo
W3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbc3ViVHlwZSB1cHBlcmNhc2VT
dHJpbmddLCB0eXBlXV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW3RpdGxl
cyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIHN1YlR5cGUs
IHR5cGVdXTsKKyAgICAgICAgfSBlbHNlIGlmIChbdHlwZSBsZW5ndGhdKQorICAgICAgICAgICAg
W3RpdGxlcyBhZGRPYmplY3Q6dHlwZV07CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKFthbGxU
eXBlIGxlbmd0aF0pCisgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW2FsbFR5cGUgc3Vic3RyaW5nVG9JbmRleDox
XSB1cHBlcmNhc2VTdHJpbmddLCBbYWxsVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dXTsKKwor
ICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpAIkFsbCBGaWxlcyJdOworICAgICAgICByZXR1cm4g
dGl0bGVzOworICAgIH07CisKICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICphY2NlcHRlZE1JTUVU
eXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107CiAgICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
XTsKIAogICAgIGlmICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4g
Y29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgQCIiKTsKIAotICAgIGlmICghKFthY2NlcHRlZE1JTUVU
eXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKSkKLSAg
ICAgICAgcmV0dXJuIEAiQ3VzdG9tIEZpbGVzIjsKKyAgICBpZiAoW2FjY2VwdGVkRmlsZUV4dGVu
c2lvbnMgY291bnRdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxl
cyIsIEAiIiwgQCIiKTsKIAotICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVU
eXBlcyBmaXJzdE9iamVjdF07Ci0gICAgTlNSYW5nZSByYW5nZSA9IFttaW1lVHlwZSByYW5nZU9m
U3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1
cm4gQCJDdXN0b20gRmlsZXMiOwotICAgIAotICAgIE5TU3RyaW5nICptaW1lVHlwZVByZWZpeCA9
IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBOU1N0cmlu
ZyAqbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxv
Y2F0aW9uICsgMV07CisgICAgTlNTdHJpbmcgKnR5cGUgPSBuaWw7CisgICAgTlNTdHJpbmcgKnN1
YlR5cGUgPSBuaWw7CisgICAgTlNTdHJpbmcgKmFsbFR5cGUgPSBuaWw7CiAgICAgCi0gICAgaWYg
KFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVUeXBlUHJlZml4
IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBlUHJlZml4IHN1
YnN0cmluZ0Zyb21JbmRleDoxXV07CisgICAgZm9yIChOU1N0cmluZyAqbWltZVR5cGUgaW4gYWNj
ZXB0ZWRNSU1FVHlwZXMpIHsKKyAgICAgICAgTlNSYW5nZSByYW5nZSA9IFttaW1lVHlwZSByYW5n
ZU9mU3RyaW5nOkAiLyJdOworCisgICAgICAgIGlmICghcmFuZ2UubGVuZ3RoKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlUHJlZml4ID0gW21pbWVU
eXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAgICBOU1N0cmluZyAq
bWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0
aW9uICsgMV07CisKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgdHlwZSA9IG1pbWVU
eXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3Vz
dG9tIl0gJiYgIVt0eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVByZWZpeF0pCisgICAgICAg
ICAgICB0eXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNF
cXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1pbWVUeXBlU3VmZml4
OworICAgICAgICBlbHNlIGlmICghc3ViVHlwZSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1l
VHlwZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpA
IioiXSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0gJiYgIVtzdWJUeXBl
IGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAgICBzdWJUeXBlID0g
QCJDdXN0b20iOworCisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisgICAgICAgICAgICBh
bGxUeXBlID0gQCJpbWFnZSI7CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzpAIkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxl
cyIsIEAiIiwgQCIiKTsKKworICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCIqIl0p
CisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCB0eXBlKTsKIAotICAgIGlm
IChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAgICAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJp
bmddLCBtaW1lVHlwZVByZWZpeF07CisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpA
IkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIs
IEAiIiwgYWxsVHlwZSk7CiAKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF07CisgICAgcmV0dXJuIGNv
bXBvc2VUaXRsZXModHlwZSwgc3ViVHlwZSwgYWxsVHlwZSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCmluZGV4IDQxNGU1YmZhZDZmLi4wMzNmMjc0ODNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0zMiw3ICszMiw4IEBACiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2Nl
cHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2Vw
dGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9h
bGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zRGVzY3JpcHRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiZmU2OTE1OTNhNS4uNjQxMjBiZjJjNDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAyMC0wNi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVs
ZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRv
IGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUg
ZXh0ZW5zaW9ucyB0aXRsZXMgaXMgdGhyZWUsIHNlbmQgYW4gYXJyYXkgb2YgCisgICAgICAgIGFs
bEltYWdlRmlsZUV4dGVuc2lvbnMgdG8gRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldC4gQWxzbyBz
ZXQgdGhlIGluaXRpYWwKKyAgICAgICAgc2VsZWN0aW9uIG9mIHRoZSBmaWx0ZXIgdG8gdGhlIGl0
ZW0gbmFtZWQgIkltYWdlIEZpbGVzIi4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczphbGxJbWFnZUZp
bGVFeHRlbnNpb25zOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmls
dGVyVmlldzpwb3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1l
OmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5p
dGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAyMC0wNi0wOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU106
IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgc2hvdWxkIHNob3cg
dGhlIHNlbGVjdGlvbiBmaWx0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9X
SzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggZWIzYzkyYzRmOTYuLjAzNjNkMjRkMjcxIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubQpAQCAtNzcsMjEgKzc3LDI1IEBAIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRh
cmdldCA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7
CiAgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBO
U0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIH0KIEBlbmQKIAog
QGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAoaWQpaW5pdFdp
dGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25z
OihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWlu
aXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5z
aW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFn
ZUZpbGVFeHRlbnNpb25zOiAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmlsZUV4dGVu
c2lvbnMgewogICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5Q
YW5lbCA9IG9wZW5QYW5lbDsKICAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxv
d2VkRmlsZUV4dGVuc2lvbnMgY29weV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25z
ID0gW2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY29weV07CiAgICAgfQogICAgIHJldHVybiBzZWxm
OwogfQogCiAtICh2b2lkKXBvcHVwQWN0aW9uOihpZClzZW5kZXIgewotICAgIGlmIChbc2VuZGVy
IGluZGV4T2ZTZWxlY3RlZEl0ZW1dKQorICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0
ZW1dID09IDEgJiYgW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAgW19v
cGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc107Cisg
ICAgZWxzZSBpZiAoW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkKICAgICAgICAgW19vcGVu
UGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpuaWxdOwogICAgIGVsc2UgaWYgKCFbX2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucyBjb3VudF0pCiAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxl
VHlwZXM6QFtAIiJdXTsKQEAgLTEwMiw2ICsxMDYsNyBAQCAtICh2b2lkKXBvcHVwQWN0aW9uOihp
ZClzZW5kZXIgewogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW19hbGxvd2VkRmlsZUV4dGVuc2lv
bnMgcmVsZWFzZV07CisgICAgW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOwogICAg
IFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtNjQwLDcgKzY0NSw3IEBAIC0gKG51bGxhYmxlIE5T
VmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZp
bGVFeHRlbnNpCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwogICAgIFtidXR0
b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKICAgICBbYnV0dG9uIHNpemVU
b0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKKyAgICBbYnV0dG9uIHNl
bGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdID09IDIgPyAwIDogMV07CiAgICAgW3BvcHVw
VGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3
ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNl
XTsKQEAgLTY4MywxNiArNjg4LDE0IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAKICAgICBv
cGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRp
cGxlU2VsZWN0aW9uOwogCi0gICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2Vd
OwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0
ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBOU0FycmF5
ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXM7CisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gcGFy
YW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXkgKmFsbEltYWdlRmls
ZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIGNvdW50XSA9PSAyID8g
QFtdIDogcGFyYW1ldGVycy5fYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIAotICAgIE5TQXJyYXkq
IHRpdGxlczsKLSAgICBpZiAocGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zRGVzY3Jp
cHRpb24pCi0gICAgICAgIHRpdGxlcyA9IEBbcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNp
b25zRGVzY3JpcHRpb24sIEAiQWxsIEZpbGVzIl07Ci0gICAgZWxzZQotICAgICAgICB0aXRsZXMg
PSBAW0AiQWxsIEZpbGVzIl07CisgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVh
c2VdOworICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczogYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6
IGFsbEltYWdlRmlsZUV4dGVuc2lvbnNdOwogCi0gICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3Nl
bGYgY3JlYXRlRmlsdGVyVmlldzp0aXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXRdOworICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZp
ZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmlsdGVyVmlldykKICAgICAgICAgW29wZW5QYW5lbCBz
ZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401498</attachid>
            <date>2020-06-09 17:35:56 -0700</date>
            <delta_ts>2020-06-09 20:07:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200609173555.patch</filename>
            <type>text/plain</type>
            <size>22583</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzZjAwNmI2NjNkMThl
ZjQ4NjRiYmRhZjRjOTJmNTA1YjllMTk5YS4uYWNjOTE5MmZhYmU5NzI2NWEzNGM0Y2FmYmM2ZWFm
ZjBhNWYwZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJl
bmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oOgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFiODAxNDk5NWUwNjlhZDMw
YjkxZGFjODRmZGI0M2IyYWMwNGU4NzAuLjUzMDdjMWYyZmQzYTRlNzY1NmZjYmI5YjVmMDBjZTkw
Y2Y3NzY1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA4
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91
bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGFuIFNQSSBmcm9tIENvcmVTZXJ2Y2llcyB0byBn
ZXQgYWxsIHRoZSBVVElzIGtub3duIGJ5IHRoZSBzeXN0ZW0uCisKKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA2LTA1ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBSZW1vdmUgY29uZGl0aW9uYWxz
IGZvciBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVigzfDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5
MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4NTY2OTIuLjk5M2RhMTE0MWVmYTI1MWE1YzA2ZWM5
ZmI3OTI5YWVhMzgzZTNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDYtMDkg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93
IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhl
ICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZv
cm1hdCwgYWRkIGEgbmV3IGl0ZW0gaW4gdGhlIEZpbGUgUGlja2VyIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAg
ICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oOgorCisyMDIwLTA2LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHR3byBwcml2
YXRlIGhlbHBlcnMgdG8gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3Bl
blBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgIFJldHVy
bnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGFsbG93ZWQgZXh0ZW5zaW9u
cy4KKworICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc0Rlc2NyaXB0aW9uXSk6CisgICAgICAgIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgZGVzY3JpcHRpb24gZm9yIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKwogMjAy
MC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJseSBzdW1tZXIgMjAyMCBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db3JlU2Vydmlj
ZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQ
SS5oCmluZGV4IGE0YTRkZGQ1NDUyNjJlYTQ1NDhmNTRiY2QyODE0MTYzMmE2ZmMwNjkuLmNhNGVm
ZjM3OGMyODI0Mjg4OTY0OGY0MzU3YzYzODU2ZjlhYTI2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCkBAIC0yNiwzICsyNiw1
IEBACiAjcHJhZ21hIG9uY2UKIAogZXh0ZXJuICJDIiB2b2lkIF9DU0NoZWNrRml4RGlzYWJsZSgp
OworZXh0ZXJuICJDIiBDRkFycmF5UmVmIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycyh2
b2lkKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4
IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1MTZmOTYxMjY1
NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5
cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9y
RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3Jp
cHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLm1tCmluZGV4IDhlMGM4ZWVkMGI5YWFlN2JlZmQ0YTk2MWMwOGQyZTYwYWY2NjZh
NzAuLjdmZTA4ZTg2MDM2ZThjZmU4MjQ0NTBjMDAwMDVjYjA1OGMyY2E2MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVycy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsNzkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKIAorc3RhdGlj
IE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPj4+IHNfZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU011dGFibGVE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqPiAqbWltZVR5
cGVUb0V4dGVuc2lvbnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5
cGVJZGVudGlmaWVycygpKTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUpKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgPSBeKE5TU3RyaW5n
ICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgeworICAgICAgICAgICAgaWYgKCFtaW1l
VHlwZVRvRXh0ZW5zaW9uc1ttaW1lVHlwZV0pCisgICAgICAgICAgICAgICAgbWltZVR5cGVUb0V4
dGVuc2lvbnNbbWltZVR5cGVdID0gW05TTXV0YWJsZVNldCBzZXRdOworICAgICAgICAgICAgW21p
bWVUeXBlVG9FeHRlbnNpb25zW21pbWVUeXBlXSBhZGRPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICAg
ICAgfTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKShOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpID0gXihOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsKKyAgICAgICAg
ICAgIE5TU3RyaW5nICp3aWxkY2FyZE1JTUVUeXBlID0gW1ttaW1lVHlwZSBjb21wb25lbnRzU2Vw
YXJhdGVkQnlTdHJpbmc6QCIvIl1bMF0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIvKiJdOwor
CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewor
ICAgICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1J
TUVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVU
eXBlKG1pbWVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnV0aSBpbiBhbGxVVElzLmdldCgpKSB7CisgICAgICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVy
cmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZikodXRpKSwga1VUVGFnQ2xhc3NN
SU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBleHRlbnNpb25zID0gYWRv
cHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpKHV0
aSksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAgICAgICAgICAgIGFkZEV4dGVu
c2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZS5nZXQoKSwgZXh0ZW5zaW9ucy5nZXQoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTlNBcnJheTxOU1N0cmluZyAqPiAqPj4gd2hpdGVsaXN0ZWRNaW1lVHlwZXMgPSBhZG9wdE5T
KFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQCJ3ZWJwIiAsIG5pbF0sIEAiaW1hZ2Uvd2Vi
cCIsCisgICAgICAgICAgICBuaWwKKyAgICAgICAgXSk7CisKKyAgICAgICAgW3doaXRlbGlzdGVk
TWltZVR5cGVzLmdldCgpIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3Ry
aW5nICptaW1lVHlwZSwgTlNBcnJheTxOU1N0cmluZyAqPiAqZXh0ZW5zaW9ucywgQk9PTCAqKSB7
CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lv
bnMpOworICAgICAgICB9XTsKKworICAgICAgICBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5n
ZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICB9KTsKKworICAgIHJldHVy
biBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5nZXQoKTsKK30KKworc3RhdGljIE5T
U2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBl
KQoreworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5
Om1pbWV0eXBlXTsKK30KKworc3RhdGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihO
U1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMg
PSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5C
T09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJP
T0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAg
ICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDow
XSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6
W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVu
c2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21p
bWVUeXBlcyBhbnlPYmplY3RdOworfQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTYzLDYgKzEzMSwx
MTAgQEAKICAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0Rmls
ZUV4dGVuc2lvbnMoKSk7CiB9CiAKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZp
bGVFeHRlbnNpb25zCit7CisgICAgLy8gQWdncmVnYXRlIGV4dGVuc2lvbnMgYmFzZWQgb24gc3Bl
Y2lmaWVkIE1JTUUgdHlwZXMuCisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqYWNjZXB0ZWRNSU1F
VHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOworICAgIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKmFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9u
c107CisKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKmFsbG93ZWRGaWxlRXh0ZW5zaW9u
cyA9IFtOU011dGFibGVTZXQgc2V0XTsKKworICAgIFthY2NlcHRlZE1JTUVUeXBlcyBlbnVtZXJh
dGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNVSW50ZWdlciBpbmRl
eCwgQk9PTCogc3RvcCkgeworICAgICAgICBBU1NFUlQoW21pbWVUeXBlIGNvbnRhaW5zU3RyaW5n
OkAiLyJdKTsKKyAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyB1bmlvblNldDpleHRlbnNp
b25zRm9yTUlNRVR5cGUobWltZVR5cGUpXTsKKyAgICB9XTsKKworICAgIE5TTXV0YWJsZUFycmF5
PE5TU3RyaW5nICo+ICphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsKKyAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJhdGVPYmpl
Y3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5kZXgsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDow
XSA9PSAnLicpOworICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRP
YmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOworICAgIH1dOworICAgIAor
ICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFs
QWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBhbGxPYmplY3RzXTsKK30KKworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxJbWFnZUZp
bGVFeHRlbnNpb25zCit7CisgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFn
ZS8qIikgYWxsT2JqZWN0c107Cit9CisKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zVGl0bGVzCit7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqICheY29t
cG9zZVRpdGxlcykoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAq
YWxsVHlwZSkgPSBeKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqc3ViVHlwZSwgTlNTdHJpbmcg
KmFsbFR5cGUpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkqIHRpdGxlcyA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisgICAgICAgIAorICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSkgewor
ICAgICAgICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAgICBb
dGl0bGVzIGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW3N1
YlR5cGUgdXBwZXJjYXNlU3RyaW5nXSwgdHlwZV1dOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAgJUAiLCBzdWJUeXBlLCB0eXBlXV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgbGVuZ3Ro
XSkKKyAgICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OnR5cGVdOworICAgICAgICAgICAgCisg
ICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKQorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmpl
Y3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIEZpbGVzIiwgW1thbGxUeXBlIHN1
YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW2FsbFR5cGUgc3Vic3RyaW5nRnJv
bUluZGV4OjFdXV07CisKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6QCJBbGwgRmlsZXMiXTsK
KyAgICAgICAgcmV0dXJuIHRpdGxlczsKKyAgICB9OworCisgICAgaWYgKCFbW3NlbGYgX2FjY2Vw
dGVkTUlNRVR5cGVzXSBjb3VudF0gJiYgIVtbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10g
Y291bnRdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgQCIiKTsKKwor
ICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbTlNNdXRh
YmxlU2V0IHNldFdpdGhBcnJheTpbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdXTsKKworICAgIGZv
ciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10p
IHsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihbZXh0ZW5zaW9u
IHN1YnN0cmluZ0Zyb21JbmRleDoxXSk7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKwor
ICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsKKyAgICB9CisK
KyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlwZSA9IG5pbDsK
KyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKyAgICAKKyAgICBmb3IgKE5TU3RyaW5nICpt
aW1lVHlwZSBpbiBhY2NlcHRlZE1JTUVUeXBlcykgeworICAgICAgICBOU1JhbmdlIHJhbmdlID0g
W21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07CisgICAgICAgIGlmICghcmFuZ2UubGVuZ3Ro
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlUHJl
Zml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAg
ICBOU1N0cmluZyAqbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4
OnJhbmdlLmxvY2F0aW9uICsgMV07CisKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAg
dHlwZSA9IG1pbWVUeXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiQ3VzdG9tIl0gJiYgIVt0eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVByZWZp
eF0pCisgICAgICAgICAgICB0eXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChbbWltZVR5
cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1p
bWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghc3ViVHlwZSkKKyAgICAgICAgICAgIHN1
YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1
YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0g
JiYgIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAg
ICBzdWJUeXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisg
ICAgICAgICAgICBhbGxUeXBlID0gQCJpbWFnZSI7CisgICAgfQorCisgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzpAIkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhA
IkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKworICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCIqIl0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCB0eXBl
KTsKKworICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSkKKyAgICAg
ICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCJDdXN0b20gRmlsZXMiLCBAIiIsIGFsbFR5cGUpOwor
CisgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXModHlwZSwgc3ViVHlwZSwgYWxsVHlwZSk7Cit9CisK
IEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAppbmRleCAxM2Jh
N2Q4M2Q2NjY0N2E0NmIxYzM0MTM3MGI3ODk3ZTIzNGFhYzhiLi4wMzNmMjc0ODNkYjNiZWIzNThi
ZDBhOGM1YzU4YWI4MWU2ZDE0ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgK
QEAgLTMxLDYgKzMxLDkgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogQGVuZAogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGE0MjI3NjdhOThh
Yzg4NGQ5MjBmZTExYjM3Yzc3NDA3YWFkYThiOC4uNjQxMjBiZjJjNDMxY2JjOWYxOTcwMDE2Zjc2
MGQyMGQyNjAxODhiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA2LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlj
a2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVz
IHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUg
Zm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SWYgdGhlIG51bWJlciBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHRpdGxlcyBpcyB0aHJlZSwgc2Vu
ZCBhbiBhcnJheSBvZiAKKyAgICAgICAgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB0byBGaWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0LiBBbHNvIHNldCB0aGUgaW5pdGlhbAorICAgICAgICBzZWxlY3Rp
b24gb2YgdGhlIGZpbHRlciB0byB0aGUgaXRlbSBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAg
ICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAg
ICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dl
ZEZpbGVFeHRlbnNpb25zOmFsbEltYWdlRmlsZUV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW0Zp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOgorICAgICAg
ICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQ
YXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5P
cGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorCisyMDIwLTA2LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+
IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgdmlldyB3aXRo
IGFuIE5TUG9wdXBCdXR0b24gZm9yIHRoZSBmaWxlIGV4dGVuc2lvbnMgZmlsdGVyLiBTZXQKKyAg
ICAgICAgdGhpcyB2aWV3IGFzIHRoZSBBY2Nlc3NvcnlWaWV3IG9mIHRoZSBPcGVuUGFuZWwuIENy
ZWF0ZSBhIGN1c3RvbWl6ZWQgdGFyZ2V0CisgICAgICAgIGZvciB0aGUgTlNQb3B1cEJ1dHRvbiB0
byByZXNwb25kIHRvIGNoYW5naW5nIGl0cyBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lv
bnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246
XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6
XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3Bl
blBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjp3
ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisKIDIwMjAtMDYtMDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSBjb25kaXRpb25hbHMgZm9yIEVOQUJM
RV9BUFBMRV9QQVlfU0VTU0lPTl9WKDN8NCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggMGNiZjljNDViMmJhNjgxNjExY2Iz
ODhjZGVhZTIwYmIxZTJjNWY1Ni4uMDM2M2QyNGQyNzE0ZmRjYmUwMjA3ZTY4MWIyMzc2NmE3MTg2
NmEyYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0ZyYW1lSW5m
by5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KQEAgLTcxLDYgKzcyLDQ2IEBAIC0gKHZvaWQpcGVy
Zm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9uKW9wCiAKIEBlbmQKIAorLy8gVGFyZ2V0IGZv
ciB0aGUgRmlsZUV4dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3MgQWNj
ZXNzb3J5Vmlldy4KK0BpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2Jq
ZWN0IHsKK0Bwcml2YXRlCisgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7CisgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKK30KK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKKworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6
KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5T
U3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6
IChOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB7CisgICAgaWYg
KChzZWxmID0gW3N1cGVyIGluaXRdKSkgeworICAgICAgICBfb3BlblBhbmVsID0gb3BlblBhbmVs
OworICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBjb3B5XTsKKyAgICAgICAgX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsSW1hZ2VGaWxl
RXh0ZW5zaW9ucyBjb3B5XTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
cG9wdXBBY3Rpb246KGlkKXNlbmRlciB7CisgICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVk
SXRlbV0gPT0gMSAmJiBbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICBb
X29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsK
KyAgICBlbHNlIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dKQorICAgICAgICBbX29w
ZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOm5pbF07CisgICAgZWxzZSBpZiAoIVtfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZp
bGVUeXBlczpAW0AiIl1dOworICAgIGVsc2UKKyAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dl
ZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgW19hbGxvd2VkRmlsZUV4dGVuc2lvbnMgcmVsZWFzZV07CisgICAgW19hbGxJbWFn
ZUZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworQGVu
ZAorCiBAaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5k
ZXJCYXJDb250YWluZXIsIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0lj
b25Mb2FkaW5nRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTg1LDYgKzEyNiw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB7CiAgICAgTWluaUJyb3dzZXJOU1RleHRG
aW5kZXIgKl90ZXh0RmluZGVyOwogICAgIE5TVmlldyAqX3RleHRGaW5kQmFyVmlldzsKICAgICBC
T09MIF9maW5kQmFyVmlzaWJsZTsKKyAgICBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ICpfZmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldDsKIH0KIAogLSAodm9pZClhd2FrZUZyb21OaWIKQEAgLTE3
MCw2ICsyMTIsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIFtfd2ViVmlldyByZWxlYXNlXTsK
ICAgICBbX2NvbmZpZ3VyYXRpb24gcmVsZWFzZV07CisgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0IHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNTg3LDYgKzYz
MCw1NCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlw
dFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwogfQogCistIChudWxsYWJs
ZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0
OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAoreworICAgIE5TVGV4dEZp
ZWxkKiBsYWJlbCA9IFtbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3RdIGF1dG9yZWxlYXNlXTsKKyAgICBbbGFiZWwgc2V0U3RyaW5nVmFsdWU6QCJGb3JtYXQ6Il07
CisgICAgW2xhYmVsIHNldEVkaXRhYmxlOk5PXTsKKyAgICBbbGFiZWwgc2V0U2VsZWN0YWJsZTpO
T107CisgICAgW2xhYmVsIHNldEJvcmRlcmVkOk5PXTsKKyAgICBbbGFiZWwgc2V0QmFja2dyb3Vu
ZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKKyAgICBbbGFiZWwgc2l6ZVRvRml0XTsKKwor
ICAgIE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IFtbW05TUG9wVXBCdXR0b24gYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNaZXJvUmVjdCBwdWxsc0Rvd246Tk9dIGF1dG9yZWxlYXNlXTsKKyAgICBbYnV0
dG9uIGFkZEl0ZW1zV2l0aFRpdGxlczp0aXRsZXNdOworICAgIFtidXR0b24gc2V0VGFyZ2V0OnBv
cHVwVGFyZ2V0XTsKKyAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246
KV07CisgICAgW2J1dHRvbiBzaXplVG9GaXRdOworICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5k
ZXg6W3RpdGxlcyBjb3VudF0gPT0gMiA/IDAgOiAxXTsKKyAgICBbcG9wdXBUYXJnZXQgcG9wdXBB
Y3Rpb246YnV0dG9uXTsKKyAgICAKKyAgICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOworICAgIFtmaWx0
ZXJWaWV3IGFkZFN1YnZpZXc6bGFiZWxdOworICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0
dG9uXTsKKworICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMjA7CisgICAgY29uc3QgQ0dGbG9h
dCBzcGFjaW5nID0gMjsKKyAgICBjb25zdCBDR0Zsb2F0IG1pbkJ1dHRvbldpZHRoID0gMjMwOwor
CisgICAgTlNSZWN0IGxhYmVsRnJhbWUgPSBbbGFiZWwgZnJhbWVdOworICAgIE5TUmVjdCBidXR0
b25GcmFtZSA9IFtidXR0b24gZnJhbWVdOworICAgIE5TUmVjdCBmaWx0ZXJWaWV3RnJhbWUgPSBb
ZmlsdGVyVmlldyBmcmFtZV07CisKKyAgICAvLyBTZXQgYSBtaW5pbXVtIHdpZHRoIGZvciAnYnV0
dG9uJy4KKyAgICBidXR0b25GcmFtZS5zaXplID0gTlNNYWtlU2l6ZShNQVgoTlNXaWR0aChidXR0
b25GcmFtZSksIG1pbkJ1dHRvbldpZHRoKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKTsKKyAgICAK
KyAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnbGFiZWwnIGFuZCAnYnV0dG9uJyBob3Jp
em9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgorICAgIGZpbHRlclZpZXdGcmFt
ZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRoKGxhYmVsRnJhbWUpICsgTlNXaWR0aChidXR0b25G
cmFtZSkgKyBzcGFjaW5nLCBNQVgoTlNIZWlnaHQobGFiZWxGcmFtZSksIE5TSGVpZ2h0KGJ1dHRv
bkZyYW1lKSkgKyBtYXJnaW4gKiAyKTsKKyAgICBbZmlsdGVyVmlldyBzZXRGcmFtZTpmaWx0ZXJW
aWV3RnJhbWVdOworCisgICAgLy8gJ2xhYmVsJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0
aWNhbGx5LgorICAgIGxhYmVsRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGxhYmVs
RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGxhYmVsRnJhbWUp
KSAvIDIpOworICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1lXTsKKyAgICAKKyAgICAvLyAn
YnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5IGFuZCBpdCB3aWxsIGNv
bWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCisgICAgYnV0dG9uRnJhbWUub3JpZ2luID0g
TlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgMiwgKE5TSGVpZ2h0KGZpbHRlclZpZXdG
cmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7CisgICAgW2J1dHRvbiBzZXRGcmFt
ZTpidXR0b25GcmFtZV07CisKKyAgICByZXR1cm4gZmlsdGVyVmlldzsKK30KKwogI2lmIF9faGFz
X2ZlYXR1cmUob2JqY19nZW5lcmljcykKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICop
cGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICogVVJMcykpY29tcGxldGlvbkhh
bmRsZXIKICNlbHNlCkBAIC01OTcsNiArNjg4LDE3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJh
CiAKICAgICBvcGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFs
bG93c011bHRpcGxlU2VsZWN0aW9uOwogCisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOworICAg
IE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxl
RXh0ZW5zaW9uczsKKyAgICBOU0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbG93
ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFtZXRlcnMuX2Fs
bEltYWdlRmlsZUV4dGVuc2lvbnM7CisKKyAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
cmVsZWFzZV07CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zOiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5z
aW9uczogYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc107CisKKyAgICBOU1ZpZXcgKmZpbHRlclZpZXcg
PSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1
cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CisgICAgaWYgKGZpbHRlclZpZXcp
CisgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3XTsKKwogICAg
IFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OndlYlZpZXcud2luZG93IGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgewogICAgICAgICBpZiAocmVzdWx0ID09
IE5TTW9kYWxSZXNwb25zZU9LKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIob3BlblBh
bmVsLlVSTHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401507</attachid>
            <date>2020-06-09 20:07:32 -0700</date>
            <delta_ts>2020-06-10 01:41:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200609200731.patch</filename>
            <type>text/plain</type>
            <size>23824</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzZjAwNmI2NjNkMThl
ZjQ4NjRiYmRhZjRjOTJmNTA1YjllMTk5YS4uYWNjOTE5MmZhYmU5NzI2NWEzNGM0Y2FmYmM2ZWFm
ZjBhNWYwZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJl
bmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oOgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFiODAxNDk5NWUwNjlhZDMw
YjkxZGFjODRmZGI0M2IyYWMwNGU4NzAuLjUzMDdjMWYyZmQzYTRlNzY1NmZjYmI5YjVmMDBjZTkw
Y2Y3NzY1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTA4
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91
bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGFuIFNQSSBmcm9tIENvcmVTZXJ2Y2llcyB0byBn
ZXQgYWxsIHRoZSBVVElzIGtub3duIGJ5IHRoZSBzeXN0ZW0uCisKKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA2LTA1ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBSZW1vdmUgY29uZGl0aW9uYWxz
IGZvciBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVigzfDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5
MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4NTY2OTIuLjk5M2RhMTE0MWVmYTI1MWE1YzA2ZWM5
ZmI3OTI5YWVhMzgzZTNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDYtMDkg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93
IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhl
ICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZv
cm1hdCwgYWRkIGEgbmV3IGl0ZW0gaW4gdGhlIEZpbGUgUGlja2VyIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAg
ICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oOgorCisyMDIwLTA2LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHR3byBwcml2
YXRlIGhlbHBlcnMgdG8gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3Bl
blBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgIFJldHVy
bnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGFsbG93ZWQgZXh0ZW5zaW9u
cy4KKworICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc0Rlc2NyaXB0aW9uXSk6CisgICAgICAgIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgZGVzY3JpcHRpb24gZm9yIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKwogMjAy
MC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJseSBzdW1tZXIgMjAyMCBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db3JlU2Vydmlj
ZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQ
SS5oCmluZGV4IGE0YTRkZGQ1NDUyNjJlYTQ1NDhmNTRiY2QyODE0MTYzMmE2ZmMwNjkuLmNhNGVm
ZjM3OGMyODI0Mjg4OTY0OGY0MzU3YzYzODU2ZjlhYTI2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCkBAIC0yNiwzICsyNiw1
IEBACiAjcHJhZ21hIG9uY2UKIAogZXh0ZXJuICJDIiB2b2lkIF9DU0NoZWNrRml4RGlzYWJsZSgp
OworZXh0ZXJuICJDIiBDRkFycmF5UmVmIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycyh2
b2lkKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4
IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1MTZmOTYxMjY1
NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5
cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9y
RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3Jp
cHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLm1tCmluZGV4IDhlMGM4ZWVkMGI5YWFlN2JlZmQ0YTk2MWMwOGQyZTYwYWY2NjZh
NzAuLmNlYzgzYmM0MmE2ZTUzZTI2MDc5NzdlMDA0ZjdiYWI0YWU1Y2M3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVycy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsODQgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKIAorc3RhdGlj
IE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPj4+IHNfZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU011dGFibGVE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqPiAqbWltZVR5
cGVUb0V4dGVuc2lvbnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5
cGVJZGVudGlmaWVycygpKTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUpKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgPSBeKE5TU3RyaW5n
ICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgeworICAgICAgICAgICAgaWYgKCFtaW1l
VHlwZVRvRXh0ZW5zaW9uc1ttaW1lVHlwZV0pCisgICAgICAgICAgICAgICAgbWltZVR5cGVUb0V4
dGVuc2lvbnNbbWltZVR5cGVdID0gW05TTXV0YWJsZVNldCBzZXRdOworICAgICAgICAgICAgW21p
bWVUeXBlVG9FeHRlbnNpb25zW21pbWVUeXBlXSBhZGRPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICAg
ICAgfTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKShOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpID0gXihOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsKKyAgICAgICAg
ICAgIE5TU3RyaW5nICp3aWxkY2FyZE1JTUVUeXBlID0gW1ttaW1lVHlwZSBjb21wb25lbnRzU2Vw
YXJhdGVkQnlTdHJpbmc6QCIvIl1bMF0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIvKiJdOwor
CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewor
ICAgICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5
cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvKiIKKyAgICAgICAgICAgICAgICBh
ZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOworICAg
ICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFtcGxl
IGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgorICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKG1pbWVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGZvciAoTlNTdHJpbmcgKnV0aSBpbiBhbGxVVElzLmdldCgpKSB7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZikodXRpKSwga1VUVGFn
Q2xhc3NNSU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBleHRlbnNpb25z
ID0gYWRvcHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpKHV0aSksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAgICAgICAgICAgIGlm
ICghW2V4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlLmdldCgpLCBleHRlbnNpb25z
LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvcmNlIGFkZGluZyB0aGUgZXh0ZW5z
aW9ucyBvZiB0aGVzZSB3aGl0ZWxpc3RlZCBtaW1lVHlwZXMuCisgICAgICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNBcnJheTxOU1N0cmluZyAqPiAqPj4gd2hpdGVsaXN0
ZWRNaW1lVHlwZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVj
dHNBbmRLZXlzOgorICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQCJ3ZWJw
IiAsIG5pbF0sIEAiaW1hZ2Uvd2VicCIsCisgICAgICAgICAgICBuaWwKKyAgICAgICAgXSk7CisK
KyAgICAgICAgW3doaXRlbGlzdGVkTWltZVR5cGVzLmdldCgpIGVudW1lcmF0ZUtleXNBbmRPYmpl
Y3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNBcnJheTxOU1N0cmluZyAqPiAq
ZXh0ZW5zaW9ucywgQk9PTCAqKSB7CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5
cGUobWltZVR5cGUsIGV4dGVuc2lvbnMpOworICAgICAgICB9XTsKKworICAgICAgICBzX2V4dGVu
c2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsK
KyAgICB9KTsKKworICAgIHJldHVybiBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5n
ZXQoKTsKK30KKworc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5
cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQoreworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKK30KKworc3RhdGljIE5TU3RyaW5nICpt
aW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5T
U3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09m
RW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJp
bmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1
ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNp
b24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVu
c2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwor
ICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAg
ICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOworfQorCiBAaW1wbGVtZW50
YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24KQEAgLTYzLDYgKzEzNiwxMjIgQEAKICAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVs
UGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAKKy0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCit7CisgICAgLy8gQWdncmVnYXRlIGV4
dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCisgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwor
ICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBf
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107CisKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4g
KmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFtOU011dGFibGVTZXQgc2V0XTsKKworICAgIFthY2Nl
cHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgeworICAgICAgICBBU1NFUlQoW21p
bWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKKyAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyB1bmlvblNldDpleHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpXTsKKyAgICB9XTsK
KworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphZGRpdGlvbmFsQWxsb3dlZEZpbGVF
eHRlbnNpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBbYWNjZXB0ZWRGaWxlRXh0
ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24s
IE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgQVNTRVJUKFtleHRlbnNp
b24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOworICAgICAgICBbYWRkaXRpb25hbEFsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6
MV1dOworICAgIH1dOworICAgIAorICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0
c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4g
W2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKK30KKworLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9hbGxJbWFnZUZpbGVFeHRlbnNpb25zCit7CisgICAgcmV0dXJuIFtleHRlbnNp
b25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107Cit9CisKKy0gKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCit7CisgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqICheY29tcG9zZVRpdGxlcykoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5n
ICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkgPSBeKE5TU3RyaW5nICp0eXBlLCBOU1N0cmlu
ZyAqc3ViVHlwZSwgTlNTdHJpbmcgKmFsbFR5cGUpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkq
IHRpdGxlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAgIAorICAgICAgICBpZiAo
W3N1YlR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9
PSAiaW1hZ2UvcG5nIiB0aGVuIGFkZCAiUE5HIEltYWdlIgorICAgICAgICAgICAgaWYgKFtzdWJU
eXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5n
XSwgdHlwZV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRk
T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBzdWJUeXBlLCB0eXBl
XV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgLy8g
aWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAiQ3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZp
bGVzIgorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6dHlwZV07CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFnZSIgdGhlbiBhZGQgIkltYWdlIEZpbGVzIgor
ICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkKKyAgICAgICAgICAgIFt0aXRsZXMgYWRkT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbYWxsVHlwZSBz
dWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmluZ10sIFthbGxUeXBlIHN1YnN0cmluZ0Zy
b21JbmRleDoxXV1dOworCisgICAgICAgIC8vIEluIGFsbCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIK
KyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6QCJBbGwgRmlsZXMiXTsKKyAgICAgICAgcmV0dXJu
IHRpdGxlczsKKyAgICB9OworCisgICAgLy8gTm8gYWNjZXB0IGF0dHJpYnV0ZTogPGlucHV0IHR5
cGU9ImZpbGUiPgorICAgIGlmICghW1tzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc10gY291bnRdICYm
ICFbW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAiIik7CisKKyAgICBOU011dGFibGVTZXQ8TlNTdHJp
bmcgKj4gKmFjY2VwdGVkTUlNRVR5cGVzID0gW05TTXV0YWJsZVNldCBzZXRXaXRoQXJyYXk6W3Nl
bGYgX2FjY2VwdGVkTUlNRVR5cGVzXV07CisKKyAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24g
aW4gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKSB7CisgICAgICAgIGlmICghZXh0ZW5z
aW9uKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBl
ID0gbWltZVR5cGVGb3JFeHRlbnNpb24oW2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV0p
OworICAgICAgICAKKyAgICAgICAgLy8gVW5rbm93biBmaWxlIGV4dGVuc2lvbjogPGlucHV0IHR5
cGU9ImZpbGUiIGFjY2VwdD0iLnh5eiI+CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKwor
ICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsKKyAgICB9CisK
KyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlwZSA9IG5pbDsK
KyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKyAgICAKKyAgICBmb3IgKE5TU3RyaW5nICpt
aW1lVHlwZSBpbiBhY2NlcHRlZE1JTUVUeXBlcykgeworICAgICAgICBOU1JhbmdlIHJhbmdlID0g
W21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07CisgICAgICAgIGlmICghcmFuZ2UubGVuZ3Ro
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlUHJl
Zml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAg
ICBOU1N0cmluZyAqbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4
OnJhbmdlLmxvY2F0aW9uICsgMV07CisKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAg
dHlwZSA9IG1pbWVUeXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiQ3VzdG9tIl0gJiYgIVt0eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVByZWZp
eF0pCisgICAgICAgICAgICB0eXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChbbWltZVR5
cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1p
bWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghc3ViVHlwZSkKKyAgICAgICAgICAgIHN1
YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1
YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0g
JiYgIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAg
ICBzdWJUeXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisg
ICAgICAgICAgICBhbGxUeXBlID0gQCJpbWFnZSI7CisgICAgfQorCisgICAgLy8gTXV0aXBsZSB0
eXBlczogPGlucHV0IHR5cGU9ImZpbGUiIDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImF1ZGlv
LyosaW1hZ2UvcG5nIj4KKyAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0p
CisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiQ3VzdG9tIEZpbGVzIiwgQCIiLCBAIiIp
OworCisgICAgLy8gU2luZ2xlIHR5cGUgd2l0aCB3aWxkY2FyZCBzdWItdHlwZTogPGlucHV0IHR5
cGU9ImZpbGUiIGFjY2VwdD0iYXVkaW8vKiI+CisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0
cmluZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUp
OworCisgICAgLy8gU2luZ2xlIHR5cGUgd2l0aCBtdXRpcGxlIHN1Yi10eXBlczogPGlucHV0IHR5
cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFnZS9wbmciPgorICAgIGlmIChbc3ViVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRs
ZXMoQCJDdXN0b20gRmlsZXMiLCBAIiIsIGFsbFR5cGUpOworCisgICAgLy8gU2luZ2xlIHR5cGUg
d2l0aCBzaW5nbGUgc3ViLXR5cGU6IDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlL3Bu
ZyI+CisgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXModHlwZSwgc3ViVHlwZSwgYWxsVHlwZSk7Cit9
CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAppbmRleCAx
M2JhN2Q4M2Q2NjY0N2E0NmIxYzM0MTM3MGI3ODk3ZTIzNGFhYzhiLi4wMzNmMjc0ODNkYjNiZWIz
NThiZDBhOGM1YzU4YWI4MWU2ZDE0ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
LmgKQEAgLTMxLDYgKzMxLDkgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
c1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogQGVuZAogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGE0MjI3Njdh
OThhYzg4NGQ5MjBmZTExYjM3Yzc3NDA3YWFkYThiOC4uNjQxMjBiZjJjNDMxY2JjOWYxOTcwMDE2
Zjc2MGQyMGQyNjAxODhiZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA2LTA5ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUg
UGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZp
bGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1
dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgdGhlIG51bWJlciBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHRpdGxlcyBpcyB0aHJlZSwg
c2VuZCBhbiBhcnJheSBvZiAKKyAgICAgICAgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB0byBGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0LiBBbHNvIHNldCB0aGUgaW5pdGlhbAorICAgICAgICBzZWxl
Y3Rpb24gb2YgdGhlIGZpbHRlciB0byB0aGUgaXRlbSBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06Cisg
ICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxs
b3dlZEZpbGVFeHRlbnNpb25zOmFsbEltYWdlRmlsZUV4dGVuc2lvbnM6XSk6CisgICAgICAgICgt
W0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorCisyMDIwLTA2LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5w
dXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgdmlldyB3
aXRoIGFuIE5TUG9wdXBCdXR0b24gZm9yIHRoZSBmaWxlIGV4dGVuc2lvbnMgZmlsdGVyLiBTZXQK
KyAgICAgICAgdGhpcyB2aWV3IGFzIHRoZSBBY2Nlc3NvcnlWaWV3IG9mIHRoZSBPcGVuUGFuZWwu
IENyZWF0ZSBhIGN1c3RvbWl6ZWQgdGFyZ2V0CisgICAgICAgIGZvciB0aGUgTlNQb3B1cEJ1dHRv
biB0byByZXNwb25kIHRvIGNoYW5naW5nIGl0cyBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVu
c2lvbnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9wdXBBY3Rp
b246XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAg
ICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJn
ZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisKIDIwMjAtMDYtMDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSBjb25kaXRpb25hbHMgZm9yIEVO
QUJMRV9BUFBMRV9QQVlfU0VTU0lPTl9WKDN8NCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggMGNiZjljNDViMmJhNjgxNjEx
Y2IzODhjZGVhZTIwYmIxZTJjNWY1Ni4uODg5MDg3Y2I0YmIzYjY1Y2Y2N2VhMTQwZjNkMmY1Njhm
OTYwOWZkNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0ZyYW1l
SW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KQEAgLTcxLDYgKzcyLDU0IEBAIC0gKHZvaWQp
cGVyZm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9uKW9wCiAKIEBlbmQKIAorLy8gVGFyZ2V0
IGZvciB0aGUgRmlsZUV4dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3Mg
QWNjZXNzb3J5Vmlldy4KK0BpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5T
T2JqZWN0IHsKK0Bwcml2YXRlCisgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7CisgICAgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5PE5T
U3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKK30KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKKworLSAoaWQpaW5pdFdpdGhPcGVuUGFu
ZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5
PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lv
bnM6IChOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB7CisgICAg
aWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgeworICAgICAgICBfb3BlblBhbmVsID0gb3BlblBh
bmVsOworICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBjb3B5XTsKKyAgICAgICAgX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsSW1hZ2VG
aWxlRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZv
aWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7CisgICAgLy8gTGFzdCBpdGVtLgorICAgIGlmIChb
c2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIgbnVtYmVyT2ZJdGVtc10gLSAx
KQorICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOm5pbF07CisgICAgZWxz
ZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pIHsKKyAgICAgICAgLy8gRmlyc3Qg
aXRlbS4KKyAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCisgICAg
ICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbG93
ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTWlkZGxlIGl0ZW0u
CisgICAgICAgIGlmICghW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAg
ICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsSW1hZ2VG
aWxlRXh0ZW5zaW9uc107CisgICAgfQorfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAgICBbX2FsbEltYWdlRmlsZUV4dGVuc2lv
bnMgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCitAZW5kCisKIEBpbnRlcmZh
Y2UgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKCkgPE5TVGV4dEZpbmRlckJhckNvbnRhaW5l
ciwgV0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZSwgX1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4KIEBlbmQKIApAQCAtODUsNiArMTM0LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyIHsKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRG
aW5kZXI7CiAgICAgTlNWaWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJW
aXNpYmxlOworICAgIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0OwogfQogCiAtICh2b2lkKWF3YWtlRnJvbU5pYgpAQCAtMTcwLDYgKzIyMCw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogCiAgICAgW193ZWJWaWV3IHJlbGVhc2VdOwogICAgIFtfY29uZmln
dXJhdGlvbiByZWxlYXNlXTsKKyAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFz
ZV07CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC01ODcsNiArNjM4LDU0IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWxXaXRoUHJvbXB0OihOU1N0CiAgICAgfV07CiB9CiAKKy0gKG51bGxhYmxlIE5TVmlldyAqKWNy
ZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQqKXBvcHVwVGFyZ2V0Cit7CisgICAgTlNUZXh0RmllbGQqIGxhYmVsID0g
W1tbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVh
c2VdOworICAgIFtsYWJlbCBzZXRTdHJpbmdWYWx1ZTpAIkZvcm1hdDoiXTsKKyAgICBbbGFiZWwg
c2V0RWRpdGFibGU6Tk9dOworICAgIFtsYWJlbCBzZXRTZWxlY3RhYmxlOk5PXTsKKyAgICBbbGFi
ZWwgc2V0Qm9yZGVyZWQ6Tk9dOworICAgIFtsYWJlbCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29s
b3IgY2xlYXJDb2xvcl1dOworICAgIFtsYWJlbCBzaXplVG9GaXRdOworCisgICAgTlNQb3BVcEJ1
dHRvbiAqYnV0dG9uID0gW1tbTlNQb3BVcEJ1dHRvbiBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0IHB1bGxzRG93bjpOT10gYXV0b3JlbGVhc2VdOworICAgIFtidXR0b24gYWRkSXRlbXNX
aXRoVGl0bGVzOnRpdGxlc107CisgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwor
ICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKKyAgICBbYnV0
dG9uIHNpemVUb0ZpdF07CisgICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDpbdGl0bGVzIGNv
dW50XSA8PSAyID8gMCA6IDFdOworICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25d
OworICAgIAorICAgIE5TVmlldyogZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07CisgICAgW2ZpbHRlclZpZXcgYWRkU3Vi
dmlldzpsYWJlbF07CisgICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpidXR0b25dOworCisgICAg
Y29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAyMDsKKyAgICBjb25zdCBDR0Zsb2F0IHNwYWNpbmcgPSAy
OworICAgIGNvbnN0IENHRmxvYXQgbWluQnV0dG9uV2lkdGggPSAyMzA7CisKKyAgICBOU1JlY3Qg
bGFiZWxGcmFtZSA9IFtsYWJlbCBmcmFtZV07CisgICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1
dHRvbiBmcmFtZV07CisgICAgTlNSZWN0IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZy
YW1lXTsKKworICAgIC8vIFNldCBhIG1pbmltdW0gd2lkdGggZm9yICdidXR0b24nLgorICAgIGJ1
dHRvbkZyYW1lLnNpemUgPSBOU01ha2VTaXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWlu
QnV0dG9uV2lkdGgpLCBOU0hlaWdodChidXR0b25GcmFtZSkpOworICAgIAorICAgIC8vIEZpbHRl
clZpZXcgd2lsbCBsYXkgb3V0ICdsYWJlbCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQg
aGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMuCisgICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01h
a2VTaXplKE5TV2lkdGgobGFiZWxGcmFtZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNp
bmcsIE1BWChOU0hlaWdodChsYWJlbEZyYW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1h
cmdpbiAqIDIpOworICAgIFtmaWx0ZXJWaWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07CisK
KyAgICAvLyAnbGFiZWwnIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCisgICAg
bGFiZWxGcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hl
aWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7CisgICAg
W2xhYmVsIHNldEZyYW1lOmxhYmVsRnJhbWVdOworICAgIAorICAgIC8vICdidXR0b24nIHdpbGwg
YmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFi
ZWwnIGhvcml6b250YWxseS4KKyAgICBidXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChO
U01heFgobGFiZWxGcmFtZSkgKyAyLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVp
Z2h0KGJ1dHRvbkZyYW1lKSkgLyAyKTsKKyAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1l
XTsKKworICAgIHJldHVybiBmaWx0ZXJWaWV3OworfQorCiAjaWYgX19oYXNfZmVhdHVyZShvYmpj
X2dlbmVyaWNzKQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5Q
YW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGlu
aXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TQXJyYXk8TlNVUkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UK
QEAgLTU5Nyw2ICs2OTYsMTcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmEKIAogICAgIG9wZW5Q
YW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb247CiAKKyAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBw
YXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CisgICAgTlNBcnJheSAqYWxs
b3dlZEZpbGVFeHRlbnNpb25zID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zOwor
ICAgIE5TQXJyYXkgKmFsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzIGNvdW50XSA9PSAyID8gQFtdIDogcGFyYW1ldGVycy5fYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uczsKKworICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKKyAg
ICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lv
bnM6IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiBhbGxJbWFn
ZUZpbGVFeHRlbnNpb25zXTsKKworICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0
ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKKyAgICBpZiAoZmlsdGVyVmlldykKKyAgICAgICAgW29w
ZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworCiAgICAgW29wZW5QYW5lbCBi
ZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhhbmRsZXI6
XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJlc3Bv
bnNlT0spCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihvcGVuUGFuZWwuVVJMcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401509</attachid>
            <date>2020-06-09 20:14:16 -0700</date>
            <delta_ts>2020-06-10 01:41:55 -0700</delta_ts>
            <desc>Patchtch for review</desc>
            <filename>Bug_212489.patch</filename>
            <type>text/plain</type>
            <size>17444</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YjNmMDA2YjY2My4uYWNjOTE5MmZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMC0wNi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlu
cHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUg
Y29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCBhIE1JTUVU
eXBlUmVnaXN0cnkgQVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNi0wNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVc2UgQVZB
c3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUuLjEzZTI1
MTZmOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBi
ZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2Uu
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0MWQ3NTAxMTk3Li45
OTNkYTExNDFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNi0wOSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106
IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0
aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2Vw
dCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2UgZm9ybWF0LCBh
ZGQgYSBuZXcgaXRlbSBpbiB0aGUgRmlsZSBQaWNrZXIgZmlsdGVyIG5hbWVkICJJbWFnZSBGaWxl
cyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbToKKyAgICAgICAgKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKC1bV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
Lmg6CisKIDIwMjAtMDYtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4g
ZmlsZSBlbGVtZW50IHNob3VsZCBzaG93IHRoZSBzZWxlY3Rpb24gZmlsdGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVycy5tbQppbmRleCA2MzZiMjNmNzFmZC4uY2VjODNiYzQyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbQpAQCAtMjUsMTUgKzI1LDE2IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAKLXN0YXRpYyBO
U1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlw
ZSkKK3N0YXRpYyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4g
KmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4+
PiBzX21pbWVUeXBlVG9FeHRlbnNpb25zOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+Pj4gc19l
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CkBAIC01Miw3ICs1Myw5
IEBAIHN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3Ry
aW5nICptaW1ldHlwZSkKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBl
eHRlbnNpb25zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8g
d2lsZGNhcmRNSU1FVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8qIgogICAg
ICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHdpbGRjYXJkTUlNRVR5cGUsIGV4
dGVuc2lvbik7CisgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHNtaW1lVHlw
ZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS9wbmciCiAgICAgICAgICAgICAgICAg
YWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH07CkBAIC02Miw5ICs2NSwxMiBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcg
Kj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAgICAgICAgICAg
ICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdz
V2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZikodXRpKSwga1VUVGFnQ2xhc3NGaWxlbmFt
ZUV4dGVuc2lvbikpOworICAgICAgICAgICAgaWYgKCFbZXh0ZW5zaW9ucyBjb3VudF0pCisgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5
cGUobWltZVR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAg
IAorCisgICAgICAgIC8vIEZvcmNlIGFkZGluZyB0aGUgZXh0ZW5zaW9ucyBvZiB0aGVzZSB3aGl0
ZWxpc3RlZCBtaW1lVHlwZXMuCiAgICAgICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNBcnJheTxOU1N0cmluZyAqPiAqPj4gd2hpdGVsaXN0ZWRNaW1lVHlwZXMgPSBhZG9w
dE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAg
ICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQCJ3ZWJwIiAsIG5pbF0sIEAiaW1hZ2Uv
d2VicCIsCiAgICAgICAgICAgICBuaWwKQEAgLTc0LDEwICs4MCwyNyBAQCBzdGF0aWMgTlNTZXQ8
TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAg
ICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbnMp
OwogICAgICAgICB9XTsKIAotICAgICAgICBzX21pbWVUeXBlVG9FeHRlbnNpb25zLmdldCgpID0g
W21pbWVUeXBlVG9FeHRlbnNpb25zIGNvcHldOworICAgICAgICBzX2V4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcC5nZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsKICAgICB9KTsKIAot
ICAgIHJldHVybiBbc19taW1lVHlwZVRvRXh0ZW5zaW9ucy5nZXQoKSBvYmplY3RGb3JLZXk6bWlt
ZXR5cGVdOworICAgIHJldHVybiBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5nZXQo
KTsKK30KKworc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUo
TlNTdHJpbmcgKm1pbWV0eXBlKQoreworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKK30KKworc3RhdGljIE5TU3RyaW5nICptaW1l
VHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5TU3Ry
aW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09mRW50
cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJpbmcg
Kj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1ZmZp
eDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNpb24g
Y2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVuc2lv
bnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOworICAg
ICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICB9
XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOwogfQogCiBAaW1wbGVtZW50YXRp
b24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCkBAIC0xMzYsMzMgKzE1OSw5NyBAQCBzdGF0aWMgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUp
CiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0g
KE5TU3RyaW5nICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0aW9uCistIChOU0FycmF5
PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBOU0FycmF5PE5T
U3RyaW5nICo+ICphY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107
Ci0gICAgTlNBcnJheTxOU1N0cmluZyAqPiAqYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxm
IF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1F
VHlwZShAImltYWdlLyoiKSBhbGxPYmplY3RzXTsKK30KIAotICAgIGlmICghW2FjY2VwdGVkTUlN
RVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAg
ICByZXR1cm4gbmlsOworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMKK3sKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICogKF5jb21wb3NlVGl0bGVz
KShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSA9
IF4oTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkg
eworICAgICAgICBOU011dGFibGVBcnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICAgICAgCisgICAgICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAg
ICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJpbWFnZS9wbmciIHRoZW4gYWRkICJQTkcgSW1h
Z2UiCisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAg
ICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAi
LCBbc3ViVHlwZSB1cHBlcmNhc2VTdHJpbmddLCB0eXBlXV07CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAlQCIsIHN1YlR5cGUsIHR5cGVdXTsKKyAgICAgICAgfSBlbHNlIGlmIChbdHlwZSBs
ZW5ndGhdKSB7CisgICAgICAgICAgICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJDdXN0b20g
RmlsZXMiIHRoZW4gYWRkICJDdXN0b20gRmlsZXMiCisgICAgICAgICAgICBbdGl0bGVzIGFkZE9i
amVjdDp0eXBlXTsKKyAgICAgICAgfQogCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNv
dW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICBy
ZXR1cm4gQCJDdXN0b20gRmlsZXMiOworICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFnZSIg
dGhlbiBhZGQgIkltYWdlIEZpbGVzIgorICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkKKyAg
ICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAlQCBGaWxlcyIsIFtbYWxsVHlwZSBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmlu
Z10sIFthbGxUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDoxXV1dOwogCi0gICAgTlNTdHJpbmcgKm1p
bWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVzIGZpcnN0T2JqZWN0XTsKLSAgICBOU1JhbmdlIHJh
bmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5n
ZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgTlNT
dHJpbmcgKm1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2Uu
bG9jYXRpb25dOwotICAgIE5TU3RyaW5nICptaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJz
dHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVU
eXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3Ry
aW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5n
RnJvbUluZGV4OjFdXTsKKyAgICAgICAgLy8gSW4gYWxsIGNhc2VzIGFkZCAiQWxsIEZpbGVzIgor
ICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpAIkFsbCBGaWxlcyJdOworICAgICAgICByZXR1cm4g
dGl0bGVzOworICAgIH07CiAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0gPD0gNCkK
LSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWlt
ZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdOworICAgIC8vIE5v
IGFjY2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNp
b25zXSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIp
OwogCi0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1l
VHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdOworICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAq
PiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbTlNNdXRhYmxlU2V0IHNldFdpdGhBcnJheTpbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdXTsKKworICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBb
c2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10pIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb24p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBt
aW1lVHlwZUZvckV4dGVuc2lvbihbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0ZW5zaW9uOiA8aW5wdXQgdHlwZT0i
ZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAg
IHJldHVybiBjb21wb3NlVGl0bGVzKEAiQ3VzdG9tIEZpbGVzIiwgQCIiLCBAIiIpOworCisgICAg
ICAgIFthY2NlcHRlZE1JTUVUeXBlcyBhZGRPYmplY3Q6bWltZVR5cGVdOworICAgIH0KKworICAg
IE5TU3RyaW5nICp0eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJUeXBlID0gbmlsOworICAg
IE5TU3RyaW5nICphbGxUeXBlID0gbmlsOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKm1pbWVU
eXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzKSB7CisgICAgICAgIE5TUmFuZ2UgcmFuZ2UgPSBbbWlt
ZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqbWltZVR5cGVQcmVmaXgg
PSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07CisgICAgICAgIE5T
U3RyaW5nICptaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFu
Z2UubG9jYXRpb24gKyAxXTsKKworICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBl
ID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJDdXN0b20iXSAmJiAhW3R5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlUHJlZml4XSkK
KyAgICAgICAgICAgIHR5cGUgPSBAIkN1c3RvbSI7CisKKyAgICAgICAgaWYgKFttaW1lVHlwZVN1
ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgICAgICBzdWJUeXBlID0gbWltZVR5
cGVTdWZmaXg7CisgICAgICAgIGVsc2UgaWYgKCFzdWJUeXBlKQorICAgICAgICAgICAgc3ViVHlw
ZSA9IG1pbWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghW3N1YlR5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiKiJdICYmICFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSAmJiAh
W3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1
YlR5cGUgPSBAIkN1c3RvbSI7CisKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSkKKyAgICAg
ICAgICAgIGFsbFR5cGUgPSBAImltYWdlIjsKKyAgICB9CisKKyAgICAvLyBNdXRpcGxlIHR5cGVz
OiA8aW5wdXQgdHlwZT0iZmlsZSIgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iYXVkaW8vKixp
bWFnZS9wbmciPgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSkKKyAg
ICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCJDdXN0b20gRmlsZXMiLCBAIiIsIEAiIik7CisK
KyAgICAvLyBTaW5nbGUgdHlwZSB3aXRoIHdpbGRjYXJkIHN1Yi10eXBlOiA8aW5wdXQgdHlwZT0i
ZmlsZSIgYWNjZXB0PSJhdWRpby8qIj4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5n
OkAiKiJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgdHlwZSk7CisK
KyAgICAvLyBTaW5nbGUgdHlwZSB3aXRoIG11dGlwbGUgc3ViLXR5cGVzOiA8aW5wdXQgdHlwZT0i
ZmlsZSIgYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyI+CisgICAgaWYgKFtzdWJUeXBlIGlz
RXF1YWxUb1N0cmluZzpAIkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhA
IkN1c3RvbSBGaWxlcyIsIEAiIiwgYWxsVHlwZSk7CisKKyAgICAvLyBTaW5nbGUgdHlwZSB3aXRo
IHNpbmdsZSBzdWItdHlwZTogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2UvcG5nIj4K
KyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggNDE0ZTViZmFkNmYuLjAz
M2YyNzQ4M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKQEAgLTMyLDcgKzMy
LDggQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxO
U1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJp
bmcgKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNEZXNjcmlwdGlvbiBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmZTY5MTU5M2E1Li42NDEyMGJmMmM0
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIwLTA2LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBi
ZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIG51bWJl
ciBvZiB0aGUgZmlsZSBleHRlbnNpb25zIHRpdGxlcyBpcyB0aHJlZSwgc2VuZCBhbiBhcnJheSBv
ZiAKKyAgICAgICAgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyB0byBGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0LiBBbHNvIHNldCB0aGUgaW5pdGlhbAorICAgICAgICBzZWxlY3Rpb24gb2YgdGhlIGZp
bHRlciB0byB0aGUgaXRlbSBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNp
b25zOmFsbEltYWdlRmlsZUV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJv
bGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmlu
aXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDIw
LTA2LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVu
dCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCBlYjNjOTJjNGY5Ni4u
ODg5MDg3Y2I0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCkBAIC03NywzMSArNzcsNDQgQEAgQGludGVyZmFjZSBGaWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBOU09wZW5QYW5l
bCAqX29wZW5QYW5lbDsKICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRl
bnNpb25zOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNpb25z
OwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldAog
Ci0tIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lv
bnMgeworLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxs
b3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRl
bnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IChOU0FycmF5PE5TU3RyaW5nICo+ICopYWxs
SW1hZ2VGaWxlRXh0ZW5zaW9ucyB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewog
ICAgICAgICBfb3BlblBhbmVsID0gb3BlblBhbmVsOwogICAgICAgICBfYWxsb3dlZEZpbGVFeHRl
bnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKKyAgICAgICAgX2FsbEltYWdl
RmlsZUV4dGVuc2lvbnMgPSBbYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKICAgICB9CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7Ci0g
ICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pCisgICAgLy8gTGFzdCBpdGVtLgor
ICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIgbnVtYmVyT2ZJ
dGVtc10gLSAxKQogICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOm5pbF07
Ci0gICAgZWxzZSBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAg
W19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOwotICAgIGVsc2UKLSAgICAg
ICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25z
XTsKKyAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkgeworICAgICAg
ICAvLyBGaXJzdCBpdGVtLgorICAgICAgICBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNv
dW50XSkKKyAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJd
XTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVU
eXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBN
aWRkbGUgaXRlbS4KKyAgICAgICAgaWYgKCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRd
KQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVz
Ol9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewogICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOworICAgIFtfYWxsSW1hZ2VG
aWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTY0
MCw3ICs2NTMsNyBAQCAtIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0Fy
cmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaQogICAgIFtidXR0b24gc2V0VGFy
Z2V0OnBvcHVwVGFyZ2V0XTsKICAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBB
Y3Rpb246KV07CiAgICAgW2J1dHRvbiBzaXplVG9GaXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRl
bUF0SW5kZXg6MF07CisgICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDpbdGl0bGVzIGNvdW50
XSA8PSAyID8gMCA6IDFdOwogICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwog
ICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07CkBAIC02ODMsMTYgKzY5NiwxNCBAQCAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRl
cnM6KFdLT3BlblBhbmVsUGFyYQogCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0
aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAotICAgIFtfZmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRh
cmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFu
ZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRG
aWxlRXh0ZW5zaW9uc107CisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVz
ID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOworICAgIE5TQXJyYXkg
KmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
czsKKyAgICBOU0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFtZXRlcnMuX2FsbEltYWdlRmls
ZUV4dGVuc2lvbnM7CiAKLSAgICBOU0FycmF5KiB0aXRsZXM7Ci0gICAgaWYgKHBhcmFtZXRlcnMu
X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0aW9uKQotICAgICAgICB0aXRsZXMgPSBAW3Bh
cmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0aW9uLCBAIkFsbCBGaWxlcyJd
OwotICAgIGVsc2UKLSAgICAgICAgdGl0bGVzID0gQFtAIkFsbCBGaWxlcyJdOworICAgIFtfZmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKKyAgICBfZmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVu
UGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IGFsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiBhbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsKIAot
ICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6dGl0bGVzIHBv
cHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKKyAgICBOU1ZpZXcgKmZpbHRl
clZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
cyBwb3B1cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAgaWYgKGZpbHRl
clZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3XTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401518</attachid>
            <date>2020-06-10 01:41:57 -0700</date>
            <delta_ts>2020-06-11 02:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200610014156.patch</filename>
            <type>text/plain</type>
            <size>23811</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzZjAwNmI2NjNkMThl
ZjQ4NjRiYmRhZjRjOTJmNTA1YjllMTk5YS4uNWUyODdlNGZhOTMwYjUzYmJhZWMwZGI0NjE4Nzdh
YWM4NjlmMzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJl
bmNlZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oOgorCiAyMDIwLTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVt
ZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDFiODAxNDk5NWUwNjlhZDMw
YjkxZGFjODRmZGI0M2IyYWMwNGU4NzAuLjcyMGI2Y2Q2Yjk2OTU4OTlhYmJhYTA1N2QwMTJjNGUx
OGNkYTBjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTEw
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91
bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGFuIFNQSSBmcm9tIENvcmVTZXJ2Y2llcyB0byBn
ZXQgYWxsIHRoZSBVVElzIGtub3duIGJ5IHRoZSBzeXN0ZW0uCisKKyAgICAgICAgKiBwYWwvc3Bp
L2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oOgorCiAyMDIwLTA2LTA1ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBSZW1vdmUgY29uZGl0aW9uYWxz
IGZvciBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVigzfDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5
MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4NTY2OTIuLjJlMjRkMDhhYTRjMmVhNGI0NWVkMzQx
Zjk4MDI3NTM5NTk5MWJmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDYtMTAg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IGFsbG93
IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkgb2YgdGhl
ICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJZiBvbmUgb2YgdGhlIG1pbWUgdHlwZXMgaW4gdGhlICJhY2Nl
cHQiIGF0dHJpYnV0ZSBpcyBhbiBhbGxvd2VkIGRlc3RlbmF0aW9uCisgICAgICAgIGltYWdlIGZv
cm1hdCwgYWRkIGEgbmV3IGl0ZW0gaW4gdGhlIEZpbGUgUGlja2VyIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAg
ICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oOgorCisyMDIwLTA2LTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHR3byBwcml2
YXRlIGhlbHBlcnMgdG8gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3Bl
blBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgIFJldHVy
bnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGFsbG93ZWQgZXh0ZW5zaW9u
cy4KKworICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc0Rlc2NyaXB0aW9uXSk6CisgICAgICAgIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgZGVzY3JpcHRpb24gZm9yIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKwogMjAy
MC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJseSBzdW1tZXIgMjAyMCBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9Db3JlU2Vydmlj
ZXNTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQ
SS5oCmluZGV4IGE0YTRkZGQ1NDUyNjJlYTQ1NDhmNTRiY2QyODE0MTYzMmE2ZmMwNjkuLmNhNGVm
ZjM3OGMyODI0Mjg4OTY0OGY0MzU3YzYzODU2ZjlhYTI2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oCkBAIC0yNiwzICsyNiw1
IEBACiAjcHJhZ21hIG9uY2UKIAogZXh0ZXJuICJDIiB2b2lkIF9DU0NoZWNrRml4RGlzYWJsZSgp
OworZXh0ZXJuICJDIiBDRkFycmF5UmVmIF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycyh2
b2lkKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4
IDk5NmVlNzg0ZWRlMmFkYjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1MTZmOTYxMjY1
NjdlMTU5ZWFlNWY1NWMyMjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5
cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9y
RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3Jp
cHQgb3IgSlNPTiByZXNvdXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLm1tCmluZGV4IDhlMGM4ZWVkMGI5YWFlN2JlZmQ0YTk2MWMwOGQyZTYwYWY2NjZh
NzAuLjRiZGQzZWNkMDQzMWQ2ODdkMTdhZmVlMjY0Yzk4Y2M5YTg2YzY0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVycy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNSwxMSArMjUsODQgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXS09wZW5QYW5lbFBhcmFtZXRlcnNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKIAorc3RhdGlj
IE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPj4+IHNfZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU011dGFibGVE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqPiAqbWltZVR5
cGVUb0V4dGVuc2lvbnMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TQXJyYXk+IGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5
cGVJZGVudGlmaWVycygpKTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUpKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgPSBeKE5TU3RyaW5n
ICptaW1lVHlwZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgeworICAgICAgICAgICAgaWYgKCFtaW1l
VHlwZVRvRXh0ZW5zaW9uc1ttaW1lVHlwZV0pCisgICAgICAgICAgICAgICAgbWltZVR5cGVUb0V4
dGVuc2lvbnNbbWltZVR5cGVdID0gW05TTXV0YWJsZVNldCBzZXRdOworICAgICAgICAgICAgW21p
bWVUeXBlVG9FeHRlbnNpb25zW21pbWVUeXBlXSBhZGRPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICAg
ICAgfTsKKworICAgICAgICB2b2lkICheYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKShOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpID0gXihOU1N0cmlu
ZyAqbWltZVR5cGUsIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsKKyAgICAgICAg
ICAgIE5TU3RyaW5nICp3aWxkY2FyZE1JTUVUeXBlID0gW1ttaW1lVHlwZSBjb21wb25lbnRzU2Vw
YXJhdGVkQnlTdHJpbmc6QCIvIl1bMF0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIvKiJdOwor
CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewor
ICAgICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5
cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvKiIKKyAgICAgICAgICAgICAgICBh
ZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOworICAg
ICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gaXRzbWltZVR5cGUsIGZvciBleGFtcGxl
IGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgorICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKG1pbWVUeXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGZvciAoTlNTdHJpbmcgKnV0aSBpbiBhbGxVVElzLmdldCgpKSB7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZikodXRpKSwga1VUVGFn
Q2xhc3NNSU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0FycmF5PiBleHRlbnNpb25z
ID0gYWRvcHRDRihVVFR5cGVDb3B5QWxsVGFnc1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpKHV0aSksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKKyAgICAgICAgICAgIGlm
ICghW2V4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlLmdldCgpLCBleHRlbnNpb25z
LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZvcmNlIGFkZGluZyB0aGUgZXh0ZW5z
aW9ucyBvZiB0aGVzZSB3aGl0ZWxpc3RlZCBtaW1lVHlwZXMuCisgICAgICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNBcnJheTxOU1N0cmluZyAqPiAqPj4gd2hpdGVsaXN0
ZWRNaW1lVHlwZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVj
dHNBbmRLZXlzOgorICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQCJ3ZWJw
IiAsIG5pbF0sIEAiaW1hZ2Uvd2VicCIsCisgICAgICAgICAgICBuaWwKKyAgICAgICAgXSk7CisK
KyAgICAgICAgW3doaXRlbGlzdGVkTWltZVR5cGVzLmdldCgpIGVudW1lcmF0ZUtleXNBbmRPYmpl
Y3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNBcnJheTxOU1N0cmluZyAqPiAq
ZXh0ZW5zaW9ucywgQk9PTCAqKSB7CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5
cGUobWltZVR5cGUsIGV4dGVuc2lvbnMpOworICAgICAgICB9XTsKKworICAgICAgICBzX2V4dGVu
c2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsK
KyAgICB9KTsKKworICAgIHJldHVybiBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5n
ZXQoKTsKK30KKworc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5
cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQoreworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKK30KKworc3RhdGljIE5TU3RyaW5nICpt
aW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5T
U3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09m
RW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJp
bmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1
ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNp
b24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVu
c2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwor
ICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAg
ICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOworfQorCiBAaW1wbGVtZW50
YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24KQEAgLTYzLDYgKzEzNiwxMjIgQEAKICAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVs
UGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAKKy0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCit7CisgICAgLy8gQWdncmVnYXRlIGV4
dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCisgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwor
ICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBf
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107CisKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4g
KmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFtOU011dGFibGVTZXQgc2V0XTsKKworICAgIFthY2Nl
cHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1l
VHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgeworICAgICAgICBBU1NFUlQoW21p
bWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKKyAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyB1bmlvblNldDpleHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpXTsKKyAgICB9XTsK
KworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphZGRpdGlvbmFsQWxsb3dlZEZpbGVF
eHRlbnNpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBbYWNjZXB0ZWRGaWxlRXh0
ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24s
IE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKKyAgICAgICAgQVNTRVJUKFtleHRlbnNp
b24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOworICAgICAgICBbYWRkaXRpb25hbEFsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6
MV1dOworICAgIH1dOworICAgIAorICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0
c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4g
W2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKK30KKworLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9hbGxJbWFnZUZpbGVFeHRlbnNpb25zCit7CisgICAgcmV0dXJuIFtleHRlbnNp
b25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107Cit9CisKKy0gKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCit7CisgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqICheY29tcG9zZVRpdGxlcykoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5n
ICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkgPSBeKE5TU3RyaW5nICp0eXBlLCBOU1N0cmlu
ZyAqc3ViVHlwZSwgTlNTdHJpbmcgKmFsbFR5cGUpIHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkq
IHRpdGxlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAgIAorICAgICAgICBpZiAo
W3N1YlR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9
PSAiaW1hZ2UvcG5nIiB0aGVuIGFkZCAiUE5HIEltYWdlIgorICAgICAgICAgICAgaWYgKFtzdWJU
eXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5n
XSwgdHlwZV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFt0aXRsZXMgYWRk
T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBzdWJUeXBlLCB0eXBl
XV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgLy8g
aWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAiQ3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZp
bGVzIgorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6dHlwZV07CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFnZSIgdGhlbiBhZGQgIkltYWdlIEZpbGVzIgor
ICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkKKyAgICAgICAgICAgIFt0aXRsZXMgYWRkT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbYWxsVHlwZSBz
dWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmluZ10sIFthbGxUeXBlIHN1YnN0cmluZ0Zy
b21JbmRleDoxXV1dOworCisgICAgICAgIC8vIEluIGFsbCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIK
KyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6QCJBbGwgRmlsZXMiXTsKKyAgICAgICAgcmV0dXJu
IHRpdGxlczsKKyAgICB9OworCisgICAgLy8gTm8gYWNjZXB0IGF0dHJpYnV0ZTogPGlucHV0IHR5
cGU9ImZpbGUiPgorICAgIGlmICghW1tzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc10gY291bnRdICYm
ICFbW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAiIik7CisKKyAgICBOU011dGFibGVTZXQ8TlNTdHJp
bmcgKj4gKmFjY2VwdGVkTUlNRVR5cGVzID0gW05TTXV0YWJsZVNldCBzZXRXaXRoQXJyYXk6W3Nl
bGYgX2FjY2VwdGVkTUlNRVR5cGVzXV07CisKKyAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24g
aW4gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKSB7CisgICAgICAgIGlmICghZXh0ZW5z
aW9uKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBl
ID0gbWltZVR5cGVGb3JFeHRlbnNpb24oW2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV0p
OworICAgICAgICAKKyAgICAgICAgLy8gVW5rbm93biBmaWxlIGV4dGVuc2lvbjogPGlucHV0IHR5
cGU9ImZpbGUiIGFjY2VwdD0iLnh5eiI+CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKwor
ICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsKKyAgICB9CisK
KyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlwZSA9IG5pbDsK
KyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKyAgICAKKyAgICBmb3IgKE5TU3RyaW5nICpt
aW1lVHlwZSBpbiBhY2NlcHRlZE1JTUVUeXBlcykgeworICAgICAgICBOU1JhbmdlIHJhbmdlID0g
W21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07CisgICAgICAgIGlmICghcmFuZ2UubGVuZ3Ro
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlUHJl
Zml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOworICAgICAg
ICBOU1N0cmluZyAqbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4
OnJhbmdlLmxvY2F0aW9uICsgMV07CisKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAg
dHlwZSA9IG1pbWVUeXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiQ3VzdG9tIl0gJiYgIVt0eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVByZWZp
eF0pCisgICAgICAgICAgICB0eXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChbbWltZVR5
cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1p
bWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghc3ViVHlwZSkKKyAgICAgICAgICAgIHN1
YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxzZSBpZiAoIVtzdWJUeXBlIGlzRXF1
YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3VzdG9tIl0g
JiYgIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAg
ICBzdWJUeXBlID0gQCJDdXN0b20iOworCisgICAgICAgIGlmIChXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpCisg
ICAgICAgICAgICBhbGxUeXBlID0gQCJpbWFnZSI7CisgICAgfQorCisgICAgLy8gTXV0aXBsZSB0
eXBlczogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iYXVkaW8vKixpbWFnZS9wbmciPgorICAg
IGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSkKKyAgICAgICAgcmV0dXJuIGNv
bXBvc2VUaXRsZXMoQCJDdXN0b20gRmlsZXMiLCBAIiIsIEAiIik7CisKKyAgICAvLyBTaW5nbGUg
dHlwZSB3aXRoIHdpbGRjYXJkIHN1Yi10eXBlOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJh
dWRpby8qIj4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQorICAgICAg
ICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIiIsIEAiIiwgdHlwZSk7CisKKyAgICAvLyBTaW5nbGUg
dHlwZSB3aXRoIG11dGlwbGUgc3ViLXR5cGVzOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJp
bWFnZS9qcGVnLGltYWdlL3BuZyI+CisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpA
IkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIs
IEAiIiwgYWxsVHlwZSk7CisKKyAgICAvLyBTaW5nbGUgdHlwZSB3aXRoIHNpbmdsZSBzdWItdHlw
ZTogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2UvcG5nIj4KKyAgICByZXR1cm4gY29t
cG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsKK30KKwogQGVuZAogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCmluZGV4IDEzYmE3ZDgzZDY2NjQ3YTQ2YjFj
MzQxMzcwYjc4OTdlMjM0YWFjOGIuLjAzM2YyNzQ4M2RiM2JlYjM1OGJkMGE4YzVjNThhYjgxZTZk
MTRkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09w
ZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApAQCAtMzEsNiArMzEsOSBA
QAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
My40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMuNCkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYTQyMjc2N2E5OGFjODg0ZDkyMGZlMTFiMzdj
Nzc0MDdhYWRhOGI4Li5jODlhNTVhZTJiMDY5ZTdmZjQxMzkyZTM2ZTBkZGY4NzQzODQ0NTg3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMjAtMDYtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1
dD4gZmlsZSBlbGVtZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNv
bnZlcnRlZCB0byBhbnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgbnVtYmVyIG9m
IHRoZSBmaWxlIGV4dGVuc2lvbnMgdGl0bGVzIGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAor
ICAgICAgICBhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJn
ZXQuIEFsc28gc2V0IHRoZSBpbml0aWFsCisgICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVy
IHRvIHRoZSBpdGVtIG5hbWVkICJJbWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlh
dGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJh
bWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKKzIwMjAtMDYt
MTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IHNo
b3VsZCBzaG93IHRoZSBzZWxlY3Rpb24gZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSB2aWV3IHdpdGggYW4gTlNQb3B1cEJ1dHRv
biBmb3IgdGhlIGZpbGUgZXh0ZW5zaW9ucyBmaWx0ZXIuIFNldAorICAgICAgICB0aGlzIHZpZXcg
YXMgdGhlIEFjY2Vzc29yeVZpZXcgb2YgdGhlIE9wZW5QYW5lbC4gQ3JlYXRlIGEgY3VzdG9taXpl
ZCB0YXJnZXQKKyAgICAgICAgZm9yIHRoZSBOU1BvcHVwQnV0dG9uIHRvIHJlc3BvbmQgdG8gY2hh
bmdpbmcgaXRzIHNlbGVjdGlvbi4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKToKKyAgICAgICAg
KC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToKKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1cFRhcmdldDpdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1l
dGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBh
bmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KwogMjAyMC0wNi0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0FwcGxlIFBheV0gUmVtb3ZlIGNvbmRpdGlvbmFscyBmb3IgRU5BQkxFX0FQUExFX1BBWV9TRVNT
SU9OX1YoM3w0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQppbmRleCAwY2JmOWM0NWIyYmE2ODE2MTFjYjM4OGNkZWFlMjBiYjFlMmM1
ZjU2Li4yM2Y4YjdmMzU1M2Q4YTg5N2FmMzc5YTkwZDdhNTRmYjM2Y2Y1OTg4IDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAt
MzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2
aWdhdGlvbkRlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oPgpAQCAtNzEsNiArNzIsNTQgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1Rl
eHRGaW5kZXJBY3Rpb24pb3AKIAogQGVuZAogCisvLyBUYXJnZXQgZm9yIHRoZSBGaWxlRXh0ZW5z
aW9ucyBOU1BvcHVwQnV0dG9uIGluIHRoZSBPcGVuUGFuZWwncyBBY2Nlc3NvcnlWaWV3LgorQGlu
dGVyZmFjZSBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmplY3QgeworQHByaXZhdGUK
KyAgICBOU09wZW5QYW5lbCAqX29wZW5QYW5lbDsKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpf
YWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxJbWFn
ZUZpbGVFeHRlbnNpb25zOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gRmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldAorCistIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9w
ZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxv
d2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHsKKyAgICBpZiAoKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKSB7CisgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7CisgICAgICAgIF9hbGxv
d2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOworICAgICAg
ICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvcHld
OworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClwb3B1cEFjdGlvbjooaWQp
c2VuZGVyIHsKKyAgICAvLyBMYXN0IGl0ZW0uCisgICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVj
dGVkSXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCisgICAgICAgIFtfb3BlblBh
bmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKKyAgICBlbHNlIGlmICghW3NlbmRlciBpbmRl
eE9mU2VsZWN0ZWRJdGVtXSkgeworICAgICAgICAvLyBGaXJzdCBpdGVtLgorICAgICAgICBpZiAo
IVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKKyAgICAgICAgICAgIFtfb3BlblBhbmVs
IHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
W19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBNaWRkbGUgaXRlbS4KKyAgICAgICAgaWYgKCFbX2Fs
bEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0
QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNlCisgICAgICAgICAgICBbX29w
ZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXTsKKyAg
ICB9Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25z
IHJlbGVhc2VdOworICAgIFtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93
Q29udHJvbGxlciAoKSA8TlNUZXh0RmluZGVyQmFyQ29udGFpbmVyLCBXS05hdmlnYXRpb25EZWxl
Z2F0ZSwgV0tVSURlbGVnYXRlLCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlPgogQGVuZAogCkBAIC04
NSw2ICsxMzQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
ewogICAgIE1pbmlCcm93c2VyTlNUZXh0RmluZGVyICpfdGV4dEZpbmRlcjsKICAgICBOU1ZpZXcg
Kl90ZXh0RmluZEJhclZpZXc7CiAgICAgQk9PTCBfZmluZEJhclZpc2libGU7CisgICAgRmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCAqX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQ7CiB9CiAKIC0g
KHZvaWQpYXdha2VGcm9tTmliCkBAIC0xNzAsNiArMjIwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAK
ICAgICBbX3dlYlZpZXcgcmVsZWFzZV07CiAgICAgW19jb25maWd1cmF0aW9uIHJlbGVhc2VdOwor
ICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKIAogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KQEAgLTU4Nyw2ICs2MzgsNTQgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5TU3QK
ICAgICB9XTsKIH0KIAorLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNB
cnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9w
dXBUYXJnZXQKK3sKKyAgICBOU1RleHRGaWVsZCogbGFiZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07CisgICAgW2xhYmVsIHNl
dFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOworICAgIFtsYWJlbCBzZXRFZGl0YWJsZTpOT107Cisg
ICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOworICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpOT107
CisgICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07Cisg
ICAgW2xhYmVsIHNpemVUb0ZpdF07CisKKyAgICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSBbW1tO
U1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgcHVsbHNEb3duOk5P
XSBhdXRvcmVsZWFzZV07CisgICAgW2J1dHRvbiBhZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsK
KyAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07CisgICAgW2J1dHRvbiBzZXRBY3Rp
b246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOworICAgIFtidXR0b24gc2l6ZVRvRml0XTsKKyAg
ICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAwIDogMV07
CisgICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CisgICAgCisgICAgTlNWaWV3
KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Rd
IGF1dG9yZWxlYXNlXTsKKyAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVsXTsKKyAgICBb
ZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07CisKKyAgICBjb25zdCBDR0Zsb2F0IG1hcmdp
biA9IDIwOworICAgIGNvbnN0IENHRmxvYXQgc3BhY2luZyA9IDI7CisgICAgY29uc3QgQ0dGbG9h
dCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKKworICAgIE5TUmVjdCBsYWJlbEZyYW1lID0gW2xhYmVs
IGZyYW1lXTsKKyAgICBOU1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0dG9uIGZyYW1lXTsKKyAgICBO
U1JlY3QgZmlsdGVyVmlld0ZyYW1lID0gW2ZpbHRlclZpZXcgZnJhbWVdOworCisgICAgLy8gU2V0
IGEgbWluaW11bSB3aWR0aCBmb3IgJ2J1dHRvbicuCisgICAgYnV0dG9uRnJhbWUuc2l6ZSA9IE5T
TWFrZVNpemUoTUFYKE5TV2lkdGgoYnV0dG9uRnJhbWUpLCBtaW5CdXR0b25XaWR0aCksIE5TSGVp
Z2h0KGJ1dHRvbkZyYW1lKSk7CisgICAgCisgICAgLy8gRmlsdGVyVmlldyB3aWxsIGxheSBvdXQg
J2xhYmVsJyBhbmQgJ2J1dHRvbicgaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEgdmVydGljYWwgbWFy
Z2lucy4KKyAgICBmaWx0ZXJWaWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTlNXaWR0aChsYWJl
bEZyYW1lKSArIE5TV2lkdGgoYnV0dG9uRnJhbWUpICsgc3BhY2luZywgTUFYKE5TSGVpZ2h0KGxh
YmVsRnJhbWUpLCBOU0hlaWdodChidXR0b25GcmFtZSkpICsgbWFyZ2luICogMik7CisgICAgW2Zp
bHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0ZyYW1lXTsKKworICAgIC8vICdsYWJlbCcgd2ls
bCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KKyAgICBsYWJlbEZyYW1lLm9yaWdpbiA9
IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFt
ZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAyKTsKKyAgICBbbGFiZWwgc2V0RnJhbWU6bGFi
ZWxGcmFtZV07CisgICAgCisgICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIg
dmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5Lgor
ICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSAr
IHNwYWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQoYnV0dG9uRnJh
bWUpKSAvIDIpOworICAgIFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJhbWVdOworCisgICAgcmV0
dXJuIGZpbHRlclZpZXc7Cit9CisKICNpZiBfX2hhc19mZWF0dXJlKG9iamNfZ2VuZXJpY3MpCiAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFt
ZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgaW5pdGlhdGVkQnlGcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJh
eTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZWxzZQpAQCAtNTk3LDYgKzY5
NiwxNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVs
V2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogCiAgICAgb3BlblBhbmVsLmFsbG93c011
bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAor
ICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKKyAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVu
c2lvbnMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheSAq
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgY291
bnRdID09IDIgPyBAW10gOiBwYXJhbWV0ZXJzLl9hbGxJbWFnZUZpbGVFeHRlbnNpb25zOworCisg
ICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOworICAgIF9maWxlRXh0ZW5z
aW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0
V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogYWxsb3dlZEZp
bGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IGFsbEltYWdlRmlsZUV4dGVuc2lv
bnNdOworCisgICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzph
bGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXRdOworICAgIGlmIChmaWx0ZXJWaWV3KQorICAgICAgICBbb3BlblBhbmVsIHNldEFj
Y2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CisKICAgICBbb3BlblBhbmVsIGJlZ2luU2hlZXRNb2Rh
bEZvcldpbmRvdzp3ZWJWaWV3LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciBy
ZXN1bHQpIHsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOU01vZGFsUmVzcG9uc2VPSykKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG9wZW5QYW5lbC5VUkxzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401519</attachid>
            <date>2020-06-10 01:48:41 -0700</date>
            <delta_ts>2020-06-11 02:06:16 -0700</delta_ts>
            <desc>Patchtch for review</desc>
            <filename>Bug_212489.patch</filename>
            <type>text/plain</type>
            <size>17971</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YjNmMDA2YjY2My4uNWUyODdlNGZhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMC0wNi0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlu
cHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUg
Y29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9ydCBhIE1JTUVU
eXBlUmVnaXN0cnkgQVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNi0wNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVc2UgQVZB
c3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJlY29yZGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXggOTk2ZWU3ODRlZGUuLjEzZTI1
MTZmOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBi
ZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBKYXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2Uu
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyZWJmMzhlOWE5Li4y
ZTI0ZDA4YWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNi0xMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106
IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0
aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2Vw
dCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFjY2VwdCIgYXR0
cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2UgZm9ybWF0LCBh
ZGQgYSBuZXcgaXRlbSBpbiB0aGUgRmlsZSBQaWNrZXIgZmlsdGVyIG5hbWVkICJJbWFnZSBGaWxl
cyIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbToKKyAgICAgICAgKG1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKC1bV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zXSk6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
Lmg6CisKIDIwMjAtMDYtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4g
ZmlsZSBlbGVtZW50IHNob3VsZCBzaG93IHRoZSBzZWxlY3Rpb24gZmlsdGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1l
dGVycy5tbQppbmRleCA2MzZiMjNmNzFmZC4uNGJkZDNlY2QwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbQpAQCAtMjUsMTUgKzI1LDE2IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAKLXN0YXRpYyBO
U1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3RyaW5nICptaW1ldHlw
ZSkKK3N0YXRpYyBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4g
KmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4+
PiBzX21pbWVUeXBlVG9FeHRlbnNpb25zOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5nICo+ICo+Pj4gc19l
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CkBAIC01Miw3ICs1Myw5
IEBAIHN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5TU3Ry
aW5nICptaW1ldHlwZSkKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBl
eHRlbnNpb25zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8g
d2lsZGNhcmRNSU1FVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8qIgogICAg
ICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHdpbGRjYXJkTUlNRVR5cGUsIGV4
dGVuc2lvbik7CisgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHNtaW1lVHlw
ZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS9wbmciCiAgICAgICAgICAgICAgICAg
YWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH07CkBAIC02Miw5ICs2NSwxMiBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcg
Kj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAgICAgICAgICAg
ICBpZiAoIW1pbWVUeXBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlwZUNvcHlBbGxUYWdz
V2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZikodXRpKSwga1VUVGFnQ2xhc3NGaWxlbmFt
ZUV4dGVuc2lvbikpOworICAgICAgICAgICAgaWYgKCFbZXh0ZW5zaW9ucyBjb3VudF0pCisgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5
cGUobWltZVR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAg
IAorCisgICAgICAgIC8vIEZvcmNlIGFkZGluZyB0aGUgZXh0ZW5zaW9ucyBvZiB0aGVzZSB3aGl0
ZWxpc3RlZCBtaW1lVHlwZXMuCiAgICAgICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNBcnJheTxOU1N0cmluZyAqPiAqPj4gd2hpdGVsaXN0ZWRNaW1lVHlwZXMgPSBhZG9w
dE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAg
ICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogQCJ3ZWJwIiAsIG5pbF0sIEAiaW1hZ2Uv
d2VicCIsCiAgICAgICAgICAgICBuaWwKQEAgLTc0LDEwICs4MCwyNyBAQCBzdGF0aWMgTlNTZXQ8
TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAg
ICAgICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbnMp
OwogICAgICAgICB9XTsKIAotICAgICAgICBzX21pbWVUeXBlVG9FeHRlbnNpb25zLmdldCgpID0g
W21pbWVUeXBlVG9FeHRlbnNpb25zIGNvcHldOworICAgICAgICBzX2V4dGVuc2lvbnNGb3JNSU1F
VHlwZU1hcC5nZXQoKSA9IFttaW1lVHlwZVRvRXh0ZW5zaW9ucyBjb3B5XTsKICAgICB9KTsKIAot
ICAgIHJldHVybiBbc19taW1lVHlwZVRvRXh0ZW5zaW9ucy5nZXQoKSBvYmplY3RGb3JLZXk6bWlt
ZXR5cGVdOworICAgIHJldHVybiBzX2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5nZXQo
KTsKK30KKworc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUo
TlNTdHJpbmcgKm1pbWV0eXBlKQoreworICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKK30KKworc3RhdGljIE5TU3RyaW5nICptaW1l
VHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQoreworICAgIE5TU2V0PE5TU3Ry
aW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkga2V5c09mRW50
cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlwZSwgTlNTZXQ8TlNTdHJpbmcg
Kj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAoW21pbWVUeXBlIGhhc1N1ZmZp
eDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgaWYgKFtleHRlbnNpb24g
Y2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAgICByZXR1cm4gW2V4dGVuc2lv
bnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOworICAg
ICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6ZXh0ZW5zaW9uXTsKKyAgICB9
XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOwogfQogCiBAaW1wbGVtZW50YXRp
b24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCkBAIC0xMzYsMzMgKzE1OSw5NyBAQCBzdGF0aWMgTlNT
ZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUp
CiAgICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0g
KE5TU3RyaW5nICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc0Rlc2NyaXB0aW9uCistIChOU0FycmF5
PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBOU0FycmF5PE5T
U3RyaW5nICo+ICphY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107
Ci0gICAgTlNBcnJheTxOU1N0cmluZyAqPiAqYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxm
IF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1F
VHlwZShAImltYWdlLyoiKSBhbGxPYmplY3RzXTsKK30KIAotICAgIGlmICghW2FjY2VwdGVkTUlN
RVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAg
ICByZXR1cm4gbmlsOworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMKK3sKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICogKF5jb21wb3NlVGl0bGVz
KShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSA9
IF4oTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlwZSkg
eworICAgICAgICBOU011dGFibGVBcnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICAgICAgCisgICAgICAgIGlmIChbc3ViVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAg
ICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJpbWFnZS9wbmciIHRoZW4gYWRkICJQTkcgSW1h
Z2UiCisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAg
ICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAi
LCBbc3ViVHlwZSB1cHBlcmNhc2VTdHJpbmddLCB0eXBlXV07CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAlQCIsIHN1YlR5cGUsIHR5cGVdXTsKKyAgICAgICAgfSBlbHNlIGlmIChbdHlwZSBs
ZW5ndGhdKSB7CisgICAgICAgICAgICAvLyBpZiB7IHR5cGUgc3ViVHlwZSB9ID09ICJDdXN0b20g
RmlsZXMiIHRoZW4gYWRkICJDdXN0b20gRmlsZXMiCisgICAgICAgICAgICBbdGl0bGVzIGFkZE9i
amVjdDp0eXBlXTsKKyAgICAgICAgfQogCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNv
dW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICBy
ZXR1cm4gQCJDdXN0b20gRmlsZXMiOworICAgICAgICAvLyBpZiBhbGxUeXBlID09ICJpbWFnZSIg
dGhlbiBhZGQgIkltYWdlIEZpbGVzIgorICAgICAgICBpZiAoW2FsbFR5cGUgbGVuZ3RoXSkKKyAg
ICAgICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAlQCBGaWxlcyIsIFtbYWxsVHlwZSBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmlu
Z10sIFthbGxUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDoxXV1dOwogCi0gICAgTlNTdHJpbmcgKm1p
bWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVzIGZpcnN0T2JqZWN0XTsKLSAgICBOU1JhbmdlIHJh
bmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5n
ZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgTlNT
dHJpbmcgKm1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2Uu
bG9jYXRpb25dOwotICAgIE5TU3RyaW5nICptaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJz
dHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVU
eXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3Ry
aW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5n
RnJvbUluZGV4OjFdXTsKKyAgICAgICAgLy8gSW4gYWxsIGNhc2VzIGFkZCAiQWxsIEZpbGVzIgor
ICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpAIkFsbCBGaWxlcyJdOworICAgICAgICByZXR1cm4g
dGl0bGVzOworICAgIH07CiAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0gPD0gNCkK
LSAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWlt
ZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdOworICAgIC8vIE5v
IGFjY2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNp
b25zXSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIp
OwogCi0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1l
VHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdOworICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAq
PiAqYWNjZXB0ZWRNSU1FVHlwZXMgPSBbTlNNdXRhYmxlU2V0IHNldFdpdGhBcnJheTpbc2VsZiBf
YWNjZXB0ZWRNSU1FVHlwZXNdXTsKKworICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBpbiBb
c2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc10pIHsKKyAgICAgICAgaWYgKCFleHRlbnNpb24p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBt
aW1lVHlwZUZvckV4dGVuc2lvbihbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0ZW5zaW9uOiA8aW5wdXQgdHlwZT0i
ZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAg
IHJldHVybiBjb21wb3NlVGl0bGVzKEAiQ3VzdG9tIEZpbGVzIiwgQCIiLCBAIiIpOworCisgICAg
ICAgIFthY2NlcHRlZE1JTUVUeXBlcyBhZGRPYmplY3Q6bWltZVR5cGVdOworICAgIH0KKworICAg
IE5TU3RyaW5nICp0eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJUeXBlID0gbmlsOworICAg
IE5TU3RyaW5nICphbGxUeXBlID0gbmlsOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKm1pbWVU
eXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzKSB7CisgICAgICAgIE5TUmFuZ2UgcmFuZ2UgPSBbbWlt
ZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYgKCFyYW5nZS5sZW5ndGgpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU1N0cmluZyAqbWltZVR5cGVQcmVmaXgg
PSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07CisgICAgICAgIE5T
U3RyaW5nICptaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFu
Z2UubG9jYXRpb24gKyAxXTsKKworICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBl
ID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJDdXN0b20iXSAmJiAhW3R5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlUHJlZml4XSkK
KyAgICAgICAgICAgIHR5cGUgPSBAIkN1c3RvbSI7CisKKyAgICAgICAgaWYgKFttaW1lVHlwZVN1
ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgICAgICBzdWJUeXBlID0gbWltZVR5
cGVTdWZmaXg7CisgICAgICAgIGVsc2UgaWYgKCFzdWJUeXBlKQorICAgICAgICAgICAgc3ViVHlw
ZSA9IG1pbWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghW3N1YlR5cGUgaXNFcXVhbFRv
U3RyaW5nOkAiKiJdICYmICFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJDdXN0b20iXSAmJiAh
W3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1
YlR5cGUgPSBAIkN1c3RvbSI7CisKKyAgICAgICAgaWYgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSkKKyAgICAg
ICAgICAgIGFsbFR5cGUgPSBAImltYWdlIjsKKyAgICB9CisKKyAgICAvLyBNdXRpcGxlIHR5cGVz
OiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyI+CisgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzpAIkN1c3RvbSJdKQorICAgICAgICByZXR1cm4gY29tcG9z
ZVRpdGxlcyhAIkN1c3RvbSBGaWxlcyIsIEAiIiwgQCIiKTsKKworICAgIC8vIFNpbmdsZSB0eXBl
IHdpdGggd2lsZGNhcmQgc3ViLXR5cGU6IDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImF1ZGlv
LyoiPgorICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgIHJl
dHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCB0eXBlKTsKKworICAgIC8vIFNpbmdsZSB0eXBl
IHdpdGggbXV0aXBsZSBzdWItdHlwZXM6IDxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdl
L2pwZWcsaW1hZ2UvcG5nIj4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiQ3Vz
dG9tIl0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiQ3VzdG9tIEZpbGVzIiwgQCIi
LCBhbGxUeXBlKTsKKworICAgIC8vIFNpbmdsZSB0eXBlIHdpdGggc2luZ2xlIHN1Yi10eXBlOiA8
aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJpbWFnZS9wbmciPgorICAgIHJldHVybiBjb21wb3Nl
VGl0bGVzKHR5cGUsIHN1YlR5cGUsIGFsbFR5cGUpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVyc1ByaXZhdGUuaAppbmRleCA0MTRlNWJmYWQ2Zi4uMDMzZjI3NDgzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaApAQCAtMzIsNyArMzIsOCBAQAogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRN
SU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc0Rlc2NyaXB0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpf
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAq
PiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzLjQpKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMzIwNWRkNzk0MmYuLmM4OWE1NWFlMmIwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAt
MDYtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50
IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbnkg
b2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgbnVtYmVyIG9mIHRoZSBmaWxlIGV4dGVu
c2lvbnMgdGl0bGVzIGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAgICBhbGxJbWFn
ZUZpbGVFeHRlbnNpb25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFsc28gc2V0IHRo
ZSBpbml0aWFsCisgICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRoZSBpdGVtIG5h
bWVkICJJbWFnZSBGaWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uczpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9j
XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZp
ZXc6cG9wdXBUYXJnZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRl
ZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKIDIwMjAtMDYtMTAgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdOiBUaGUg
RmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBzaG93IHRoZSBz
ZWxlY3Rpb24gZmlsdGVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCmluZGV4IGViM2M5MmM0Zjk2Li4yM2Y4YjdmMzU1MyAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0K
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0K
QEAgLTc3LDMxICs3Nyw0NCBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
OiBOU09iamVjdCB7CiBAcHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwogICAg
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3Bl
blBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNB
cnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0
aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxl
RXh0ZW5zaW9uczogKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25z
IHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwg
PSBvcGVuUGFuZWw7CiAgICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZp
bGVFeHRlbnNpb25zIGNvcHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFth
bGxJbWFnZUZpbGVFeHRlbnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0K
IAogLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKLSAgICBpZiAoW3NlbmRlciBpbmRl
eE9mU2VsZWN0ZWRJdGVtXSkKKyAgICAvLyBMYXN0IGl0ZW0uCisgICAgaWYgKFtzZW5kZXIgaW5k
ZXhPZlNlbGVjdGVkSXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCiAgICAgICAg
IFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICghW19h
bGxvd2VkRmlsZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxv
d2VkRmlsZVR5cGVzOkBbQCIiXV07Ci0gICAgZWxzZQotICAgICAgICBbX29wZW5QYW5lbCBzZXRB
bGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgIGVsc2UgaWYgKCFb
c2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dKSB7CisgICAgICAgIC8vIEZpcnN0IGl0ZW0uCisg
ICAgICAgIGlmICghW19hbGxvd2VkRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAg
W19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1pZGRsZSBpdGVtLgorICAgICAg
ICBpZiAoIVtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCisgICAgICAgICAgICBbX29w
ZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbEltYWdlRmlsZUV4dGVu
c2lvbnNdOworICAgIH0KIH0KIAogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW19hbGxvd2VkRmls
ZUV4dGVuc2lvbnMgcmVsZWFzZV07CisgICAgW19hbGxJbWFnZUZpbGVFeHRlbnNpb25zIHJlbGVh
c2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtNjQwLDcgKzY1Myw3IEBAIC0gKG51
bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBU
YXJnZXQ6KEZpbGVFeHRlbnNpCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwog
ICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKICAgICBbYnV0
dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKKyAgICBb
YnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAwIDogMV07CiAg
ICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAgTlNWaWV3KiBm
aWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1
dG9yZWxlYXNlXTsKQEAgLTY2Nyw3ICs2ODAsNyBAQCAtIChudWxsYWJsZSBOU1ZpZXcgKiljcmVh
dGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaQog
ICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1lXTsKICAgICAKICAgICAvLyAnYnV0dG9uJyB3
aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5IGFuZCBpdCB3aWxsIGNvbWUgYWZ0ZXIg
J2xhYmVsJyBob3Jpem9udGFsbHkuCi0gICAgYnV0dG9uRnJhbWUub3JpZ2luID0gTlNNYWtlUG9p
bnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgMiwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBO
U0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7CisgICAgYnV0dG9uRnJhbWUub3JpZ2luID0gTlNN
YWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgc3BhY2luZywgKE5TSGVpZ2h0KGZpbHRlclZp
ZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7CiAgICAgW2J1dHRvbiBzZXRG
cmFtZTpidXR0b25GcmFtZV07CiAKICAgICByZXR1cm4gZmlsdGVyVmlldzsKQEAgLTY4MywxNiAr
Njk2LDE0IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFu
ZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAKICAgICBvcGVuUGFuZWwuYWxsb3dz
TXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uOwog
Ci0gICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwotICAgIF9maWxlRXh0
ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBp
bml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogcGFyYW1l
dGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7
CisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gcGFyYW1ldGVycy5fYWxsb3dl
ZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXkgKmFsbEltYWdlRmlsZUV4dGVuc2lvbnMgPSBb
YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIGNvdW50XSA9PSAyID8gQFtdIDogcGFyYW1ldGVy
cy5fYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIAotICAgIE5TQXJyYXkqIHRpdGxlczsKLSAgICBp
ZiAocGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zRGVzY3JpcHRpb24pCi0gICAgICAg
IHRpdGxlcyA9IEBbcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zRGVzY3JpcHRpb24s
IEAiQWxsIEZpbGVzIl07Ci0gICAgZWxzZQotICAgICAgICB0aXRsZXMgPSBAW0AiQWxsIEZpbGVz
Il07CisgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOworICAgIF9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9j
XSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogYWxs
b3dlZEZpbGVFeHRlbnNpb25zIGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IGFsbEltYWdlRmlsZUV4
dGVuc2lvbnNdOwogCi0gICAgTlNWaWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVy
Vmlldzp0aXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOworICAg
IE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVF
eHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsK
ICAgICBpZiAoZmlsdGVyVmlldykKICAgICAgICAgW29wZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3
OmZpbHRlclZpZXddOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401629</attachid>
            <date>2020-06-11 02:06:17 -0700</date>
            <delta_ts>2020-06-16 19:43:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200611020617.patch</filename>
            <type>text/plain</type>
            <size>14861</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mjg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
VGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3Rp
bmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0
IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRXhwb3J0IGEgTUlNRVR5cGVSZWdpc3RyeSBBUEkgdG8gYmUgcmVmZXJlbmNl
ZCBmcm9tIFdlYktpdCBwcm9qZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5oOgorCiAyMDIwLTA2LTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXBsYWNlIGluc3RhbmNlcyBvZiBibGFja2xpc3QgaW4gV2ViQ29yZSB3aXRoIGJs
b2NrbGlzdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
aAkocmV2aXNpb24gMjYyODk1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlkZW9PclNWR01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEg
TUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBlbmNvZGVkLgotICAgIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSBK
YXZhU2NyaXB0IG9yIEpTT04gcmVzb3VyY2UuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODk1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0xMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IFRo
ZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0aW5n
IGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2VwdCIg
YXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFjY2VwdCIgYXR0cmli
dXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2UgZm9ybWF0LCBhZGQg
YSBuZXcgaXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRlciBuYW1lZCAiSW1hZ2UgRmlsZXMiLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW06
CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgtW1dLT3BlblBhbmVs
UGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5Q
YW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorCiAy
MDIwLTA2LTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxl
bWVudCBzaG91bGQgc2hvdyB0aGUgc2VsZWN0aW9uIGZpbHRlcgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLm1tCShyZXZpc2lvbiAyNjI4OTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTYyLDYgKzYzLDggQEAgc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1Nl
dDxOUwogICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRh
Z3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAg
ICAgICBpZiAoIWV4dGVuc2lvbnMgfHwgIUNGQXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgp
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNG
b3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdl
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKilleHRlbnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCkBA
IC03OSw2ICs4MiwxOCBAQCBzdGF0aWMgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JN
CiAgICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBvYmplY3RGb3JLZXk6bWlt
ZXR5cGVdOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKm1pbWVUeXBlRm9yRXh0ZW5zaW9uKE5TU3Ry
aW5nICpleHRlbnNpb24pCit7CisgICAgTlNTZXQ8TlNTdHJpbmcgKj4gKm1pbWVUeXBlcyA9IFtl
eHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKSBrZXlzT2ZFbnRyaWVzUGFzc2luZ1Rlc3Q6XkJPT0wo
TlNTdHJpbmcgKm1pbWVUeXBlLCBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9ucywgQk9PTCAq
KSB7CisgICAgICAgIGlmIChbbWltZVR5cGUgaGFzU3VmZml4OkAiKiJdKQorICAgICAgICAgICAg
cmV0dXJuIE5POworICAgICAgICBpZiAoW2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09
ICcuJykKKyAgICAgICAgICAgIHJldHVybiBbZXh0ZW5zaW9ucyBjb250YWluc09iamVjdDpbZXh0
ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXV07CisgICAgICAgIHJldHVybiBbZXh0ZW5zaW9u
cyBjb250YWluc09iamVjdDpleHRlbnNpb25dOworICAgIH1dOworICAgIHJldHVybiBbbWltZVR5
cGVzIGFueU9iamVjdF07Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS09wZW5QYW5lbFBhcmFtZXRl
cnMKIAogLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbgpAQCAtMTM2LDM2ICsxNTEsMTAy
IEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHQKICAgICByZXR1cm4g
W2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKIH0KIAotLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKKy0gKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucwogewotICAgIGF1dG8gYWNjZXB0ZWRNSU1F
VHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxl
RXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKKyAgICByZXR1cm4g
W2V4dGVuc2lvbnNGb3JNSU1FVHlwZShAImltYWdlLyoiKSBhbGxPYmplY3RzXTsKK30KIAorLSAo
TlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKK3sKICAg
ICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwogICAgIGNvbnN0
ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7CisgICAgY29uc3Rl
eHByIGF1dG8gQ3VzdG9tVHlwZSA9IEAiQ3VzdG9tIjsKKyAgICBjb25zdGV4cHIgYXV0byBJbWFn
ZVR5cGUgPSBAIkltYWdlIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3Vu
dF0gJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBb
QWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09
IDEgJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBA
W0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOworICAgIGF1dG8gY29tcG9zZVRpdGxl
cyA9IF4oTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICpzdWJUeXBlLCBOU1N0cmluZyAqYWxsVHlw
ZSkgeworICAgICAgICBOU011dGFibGVBcnJheSogdGl0bGVzID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKIAotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmpl
Y3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAg
ICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNU
aXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFtt
aW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVU
eXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiAr
IDFdOwotICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJd
KQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmls
ZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5n
XSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVd
OworICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0
eXBlIHN1YlR5cGUgfSA9PSAiaW1hZ2UvcG5nIiB0aGVuIGFkZCAiUE5HIEltYWdlIgorICAgICAg
ICAgICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0gPD0gNCkKKyAgICAgICAgICAgICAgICBbdGl0bGVz
IGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW3N1YlR5cGUg
dXBwZXJjYXNlU3RyaW5nXSwgdHlwZV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAi
LCBzdWJUeXBlLCB0eXBlXV07CisgICAgICAgIH0gZWxzZSBpZiAoW3R5cGUgbGVuZ3RoXSkgewor
ICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAiQ3VzdG9tIEZpbGVzIiB0aGVu
IGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6dHlwZV07
CisgICAgICAgIH0KIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAg
ICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW21pbWVU
eXBlU3VmZml4IHVwcGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRs
ZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2UgRmls
ZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKQorICAgICAgICAgICAgW3RpdGxlcyBh
ZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIEZpbGVzIiwgW1thbGxU
eXBlIHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW2FsbFR5cGUgc3Vic3Ry
aW5nRnJvbUluZGV4OjFdXV07CisKKyAgICAgICAgLy8gSW4gYWxsIGNhc2VzIGFkZCAiQWxsIEZp
bGVzIgorICAgICAgICBbdGl0bGVzIGFkZE9iamVjdDpBbGxGaWxlc1RpdGxlXTsKKyAgICAgICAg
cmV0dXJuIHRpdGxlczsKKyAgICB9OworCisgICAgLy8gTm8gYWNjZXB0IGF0dHJpYnV0ZTogPGlu
cHV0IHR5cGU9ImZpbGUiPgorICAgIGlmICghW1tzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc10gY291
bnRdICYmICFbW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdIGNvdW50XSkKKyAgICAgICAg
cmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIEAiIik7CisKKyAgICBhdXRvIGFjY2VwdGVk
TUlNRVR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhBcnJheTpb
c2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdXSk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNp
b24gaW4gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKSB7CisgICAgICAgIGlmICghZXh0
ZW5zaW9uKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKm1pbWVU
eXBlID0gbWltZVR5cGVGb3JFeHRlbnNpb24oW2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6
MV0pOworCisgICAgICAgIC8vIFVua25vd24gZmlsZSBleHRlbnNpb246IDxpbnB1dCB0eXBlPSJm
aWxlIiBhY2NlcHQ9Ii54eXoiPgorICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIGNvbXBvc2VUaXRsZXMoQ3VzdG9tRmlsZXNUaXRsZSwgQCIiLCBAIiIpOworCisgICAg
ICAgIFthY2NlcHRlZE1JTUVUeXBlcyBhZGRPYmplY3Q6bWltZVR5cGVdOworICAgIH0KKworICAg
IE5TU3RyaW5nICp0eXBlID0gbmlsOworICAgIE5TU3RyaW5nICpzdWJUeXBlID0gbmlsOworICAg
IE5TU3RyaW5nICphbGxUeXBlID0gbmlsOworCisgICAgZm9yIChOU1N0cmluZyAqbWltZVR5cGUg
aW4gYWNjZXB0ZWRNSU1FVHlwZXMuZ2V0KCkpIHsKKyAgICAgICAgTlNSYW5nZSByYW5nZSA9IFtt
aW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOworICAgICAgICBpZiAoIXJhbmdlLmxlbmd0aCkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gbWltZVR5cGVQcmVmaXggPSBb
bWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07CisgICAgICAgIGF1dG8g
bWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0
aW9uICsgMV07CisKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgdHlwZSA9IG1pbWVU
eXBlUHJlZml4OworICAgICAgICBlbHNlIGlmICghW3R5cGUgaXNFcXVhbFRvU3RyaW5nOkN1c3Rv
bVR5cGVdICYmICFbdHlwZSBpc0VxdWFsVG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAg
ICAgICAgdHlwZSA9IEN1c3RvbVR5cGU7CisKKyAgICAgICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBp
c0VxdWFsVG9TdHJpbmc6QCIqIl0pCisgICAgICAgICAgICBzdWJUeXBlID0gbWltZVR5cGVTdWZm
aXg7CisgICAgICAgIGVsc2UgaWYgKCFzdWJUeXBlKQorICAgICAgICAgICAgc3ViVHlwZSA9IG1p
bWVUeXBlU3VmZml4OworICAgICAgICBlbHNlIGlmICghW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5n
OkAiKiJdICYmICFbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6Q3VzdG9tVHlwZV0gJiYgIVtzdWJU
eXBlIGlzRXF1YWxUb1N0cmluZzptaW1lVHlwZVN1ZmZpeF0pCisgICAgICAgICAgICBzdWJUeXBl
ID0gQ3VzdG9tVHlwZTsKKworICAgICAgICBpZiAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKQorICAgICAgICAg
ICAgYWxsVHlwZSA9IEltYWdlVHlwZTsKKyAgICB9CisKKyAgICAvLyBNdXRpcGxlIHR5cGVzOiA8
aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyI+CisgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzpDdXN0b21UeXBlXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VU
aXRsZXMoQ3VzdG9tRmlsZXNUaXRsZSwgQCIiLCBAIiIpOworCisgICAgLy8gU2luZ2xlIHR5cGUg
d2l0aCB3aWxkY2FyZCBzdWItdHlwZTogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iYXVkaW8v
KiI+CisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSkKKyAgICAgICAgcmV0
dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUpOworCisgICAgLy8gU2luZ2xlIHR5cGUg
d2l0aCBtdXRpcGxlIHN1Yi10eXBlczogPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2Uv
anBlZyxpbWFnZS9wbmciPgorICAgIGlmIChbc3ViVHlwZSBpc0VxdWFsVG9TdHJpbmc6Q3VzdG9t
VHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEN1c3RvbUZpbGVzVGl0bGUsIEAi
IiwgYWxsVHlwZSk7CiAKLSAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVAICVAIiwgbWltZVR5cGVTdWZmaXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07
CisgICAgLy8gU2luZ2xlIHR5cGUgd2l0aCBzaW5nbGUgc3ViLXR5cGU6IDxpbnB1dCB0eXBlPSJm
aWxlIiBhY2NlcHQ9ImltYWdlL3BuZyI+CisgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXModHlwZSwg
c3ViVHlwZSwgYWxsVHlwZSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
c1ByaXZhdGUuaAkocmV2aXNpb24gMjYyODk1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIAogQGVuZApJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODk5
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MjAtMDYtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVt
ZW50IGFsbG93IHNlbGVjdGluZyBhbGwgZmlsZXMgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBh
bnkgb2YgdGhlICJhY2NlcHQiIGF0dHJpYnV0ZSBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB0aGUgbnVtYmVyIG9mIHRoZSBmaWxlIGV4
dGVuc2lvbnMnIHRpdGxlcyBpcyB0aHJlZSwgc2VuZCBhbiBhcnJheSBvZiAKKyAgICAgICAgYWxs
SW1hZ2VGaWxlRXh0ZW5zaW9ucyB0byBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0LiBBbHNvIHNl
dCB0aGUgaW5pdGlhbAorICAgICAgICBzZWxlY3Rpb24gb2YgdGhlIGZpbHRlciB0byB0aGUgaXRl
bSBuYW1lZCAiSW1hZ2UgRmlsZXMiLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOmFsbEltYWdlRmls
ZUV4dGVuc2lvbnM6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9w
dXBBY3Rpb246XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0
ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0ZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNp
b25zOl0pOiBEZWxldGVkLgorCiAyMDIwLTA2LTExICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3Zp
bGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZWQgbGlic291cCBk
ZXBlbmRlbmN5IGluIGpoYnVpbGQuCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNpb24gMjYyODk1KQorKysgVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDE1ICs3NywxNyBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBU
YXJnZXQgOiBOCiBAcHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwogICAgIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBh
bmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJh
eTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9w
ZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uczogKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHsK
ICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBv
cGVuUGFuZWw7CiAgICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVF
eHRlbnNpb25zIGNvcHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxJ
bWFnZUZpbGVFeHRlbnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTEwMCw2ICsxMDIsMTIgQEAgLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKICAgICAg
ICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNaWRkbGUgaXRlbS4K
KyAgICAgICAgaWYgKCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAg
ICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZp
bGVFeHRlbnNpb25zXTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NTIsNyBAQCAtIChudWxsYWJs
ZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOCiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9w
dXBUYXJnZXRdOwogICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjop
XTsKICAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRl
eDowXTsKKyAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIg
PyAwIDogMV07CiAgICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAg
ICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKQEAgLTY4NywxMCArNjk1LDEzIEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW4KIAogICAgIG9wZW5QYW5lbC5hbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb247CiAKKyAg
ICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNp
b25zID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIE5TQXJyYXkgKmFs
bEltYWdlRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIGNvdW50
XSA9PSAyID8gQFtdIDogcGFyYW1ldGVycy5fYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKKyAgICAK
ICAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAgX2ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2NdIGlu
aXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBwYXJhbWV0
ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5l
bDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogYWxsb3dlZEZpbGVFeHRlbnNpb25z
IGFsbEltYWdlRmlsZUV4dGVuc2lvbnM6IGFsbEltYWdlRmlsZUV4dGVuc2lvbnNdOwogCi0gICAg
TlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dl
ZEZpbGVFeHRlbnNpb25zVGl0bGVzOwogICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNy
ZWF0ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9m
aWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKICAgICBpZiAoZmlsdGVyVmlldykKICAgICAgICAg
W29wZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402072</attachid>
            <date>2020-06-16 19:44:01 -0700</date>
            <delta_ts>2020-06-16 21:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200616194400.patch</filename>
            <type>text/plain</type>
            <size>20115</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3ZjViMDc5OGIzZDkz
MWYyNjIyOTg0YWYzMDcxZDQ5ZDlkYTk1OS4uYTBjMWZmOTcxNDAzNWI5MTBjZGQ0MDdkMTQzMDcz
NGQ4MGNkZDUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICBB
ZGQgbG9jYWxpemFibGUgc3RyaW5ncyBmb3IgdGhlIE9wZW5QYW5lbCBmaWx0ZXIuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgIEV4cG9ydCBhIE1JTUVU
eXBlUmVnaXN0cnkgQVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKwor
CiAyMDIwLTA2LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcmVmZXJlbmNlcyB0byAic2xhdmUiIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzE1ZjFl
MjU4OTUyZjIyZTc5ZDlmZmU2OWFjZDI2N2UxNzY3Yzc5Mi4uZWMzZjIyNDRjNGI2OTI3ZmZhYTIy
NmVkMGVmYzlmOTc1Y2QyNjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0x
NiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxs
b3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0
aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFj
Y2VwdCIgYXR0cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2Ug
Zm9ybWF0LCBhZGQgYSBuZXcgaXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAgICAg
ICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJp
dmF0ZS5oOgorCiAyMDIwLTA2LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJLaXQ6IEFkZCBVSUtpdCBTUEkgZm9yIHdhdGNoT1MgYW5kIHR2T1MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDE2NDdk
MjNmZmFhY2ZkMzhkNDUxMmIzZmY0NmI5MDA0ZGQ5OTNmZTUuLmQzNjBhMDM4MDJkODJlZTljNDkx
ZDliNTQ1YWE2M2Y0ZDgyNzMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncwpAQCAtNjEsNiArNjEsMTUgQEAKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24n
cyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlw
dG8gTWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCisvKiBBdWRpbyBm
b3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIGF1ZGlvIiA9ICIlQCBhdWRpbyI7CisK
Ky8qIEltYWdlIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgaW1hZ2UiID0gIiVA
IGltYWdlIjsKKworLyogVmlkZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCB2
aWRlbyIgPSAiJUAgdmlkZW8iOworCiAvKiBMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9m
IGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0
aXBsZSBmaWxlcyAqLwogIiVkIGZpbGVzIiA9ICIlZCBmaWxlcyI7CiAKQEAgLTExNSw2ICsxMjQs
OSBAQAogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIkFsaWduIFJpZ2h0IChVbmRvIGFjdGlvbiBu
YW1lKSIgPSAiQWxpZ24gUmlnaHQiOwogCisvKiBBbGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyICov
CisiQWxsIEZpbGVzIiA9ICJBbGwgRmlsZXMiOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFn
ZSBBY2Nlc3MgQVBJIHByb21wdCAqLwogIkFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vi
c2l0ZSBkYXRhIGFjY2VzcykiID0gIkFsbG93IjsKIApAQCAtMTM2LDYgKzE0OCw5IEBACiAvKiBX
S0Vycm9yQXR0cmlidXRlZFN0cmluZ0NvbnRlbnRGYWlsZWRUb0xvYWQgZGVzY3JpcHRpb24gKi8K
ICJBdHRyaWJ1dGVkIHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2FkIiA9ICJBdHRyaWJ1dGVk
IHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2FkIjsKIAorLyogQXVkaW8gRmlsZXMgaW4gZmls
ZXIgcGlja2VyICovCisiQXVkaW8gRmlsZXMiID0gIkF1ZGlvIEZpbGVzIjsKKwogLyogTWVudSBp
dGVtIGxhYmVsIGZvciBhdXRvbWF0aWMgdHJhY2sgc2VsZWN0aW9uIGJlaGF2aW9yICovCiAiQXV0
byAoUmVjb21tZW5kZWQpIiA9ICJBdXRvIChSZWNvbW1lbmRlZCkiOwogCkBAIC0yNjUsNiArMjgw
LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJDcmVhdGUgTGluayAoVW5kbyBhY3Rpb24g
bmFtZSkiID0gIkNyZWF0ZSBMaW5rIjsKIAorLyogQ3VzdG9tIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciAqLworIkN1c3RvbSBGaWxlcyIgPSAiQ3VzdG9tIEZpbGVzIjsKKwogLyogQ3V0IGNvbnRleHQg
bWVudSBpdGVtICovCiAiQ3V0IiA9ICJDdXQiOwogCkBAIC00MDksNiArNDI3LDkgQEAKIC8qIEln
bm9yZSBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSAqLwogIklnbm9yZSBTcGVsbGluZyIgPSAi
SWdub3JlIFNwZWxsaW5nIjsKIAorLyogSW1hZ2UgRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisi
SW1hZ2UgRmlsZXMiID0gIkltYWdlIEZpbGVzIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwog
IkluZGVudCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkluZGVudCI7CiAKQEAgLTk5MSw2ICsxMDEy
LDkgQEAKIC8qIFZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRo
IHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSAqLwogIlZhbHVlIG11c3QgYmUgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvICVzIiA9ICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAlcyI7CiAKKy8qIFZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIlZpZGVvIEZp
bGVzIiA9ICJWaWRlbyBGaWxlcyI7CisKIC8qIFBoaXNoaW5nIHdhcm5pbmcgZGVzY3JpcHRpb24g
Ki8KICJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9y
dGVkIGFzIGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50
byBiZWxpZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIiA9ICJX
YXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFz
IGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50byBiZWxp
ZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFk
YjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1MTZmOTYxMjY1NjdlMTU5ZWFlNWY1NWMy
MjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUg
Zm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUg
aXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNv
dXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmlu
ZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjg2YTI0NTg4YTcx
ZDMwYzU2MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAt
MjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBhbmVs
UGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYyLDEx
ICs2NCwxMyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5n
ICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFtaW1l
VHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gZXh0ZW5z
aW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFz
c0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwgIUNG
QXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJp
bmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKilleHRl
bnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIG1p
bWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5vdCBy
ZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEAi
d2VicCIpOworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwg
QFtAIndlYnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsK
ICAgICB9KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpl
eHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBbZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKIH0KIAorc3Rh
dGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQor
eworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlw
ZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAo
W21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAg
ICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAg
ICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdG
cm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6
ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOwor
fQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUyLDExOCBAQCBzdGF0aWMgTlNTZXQ8
TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAg
ICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistIChOU0Fy
cmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBhdXRvIGFj
Y2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFj
Y2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Cisg
ICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107
Cit9CiAKLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwot
ICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Cist
IChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworewor
ICAgIE5TU3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQWxsIEZpbGVzIiwg
IkFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsSW1hZ2VGaWxl
c1RpdGxlID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMiLCAiSW1hZ2UgRmlsZXMgaW4gZmls
ZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVvRmlsZXNUaXRsZSA9IFdFQl9VSV9T
VFJJTkcoIlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAg
IE5TU3RyaW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBdWRpbyBGaWxl
cyIsICJBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqY3VzdG9t
RmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBGaWxlcyIsICJDdXN0b20gRmlsZXMg
aW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmltYWdlVGl0bGUgPSBXRUJfVUlfU1RS
SU5HKCIlQCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOworICAg
IE5TU3RyaW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgdmlkZW8iLCAiVmlkZW8g
Zm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYXVkaW9UaXRsZSA9
IFdFQl9VSV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlj
a2VyIik7CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1hZ2VUeXBlID0gQCJpbWFnZSI7Cisg
ICAgY29uc3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRlbyI7CisgICAgY29uc3RleHByIGF1
dG8gYXVkaW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3RleHByIGF1dG8gY3VzdG9tVHlwZSA9
IEAiY3VzdG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYg
IVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmls
ZXNUaXRsZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0gXihOU1N0cmluZyAqdHlwZSwgTlNT
dHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7CisgICAgICAgIE5TTXV0YWJsZUFy
cmF5KiB0aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgICAgIC8vIGlmIHsg
dHlwZSBzdWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBhZGQgIlBORyBJbWFnZSIKKyAgICAg
ICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlVGl0
bGUgPSBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGltYWdlVGl0bGUgOiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRlb1RpdGxlIDogYXVkaW9UaXRsZSk7
CisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAgICAg
IFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRsZSwg
W3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVU
aXRsZSwgc3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzpjdXN0b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAi
Q3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3RpdGxl
cyBhZGRPYmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAgICAgIH0KIAotICAgIGlmICghKFth
Y2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRs
ZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2UgRmls
ZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqYWxsVHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0gPyBh
bGxJbWFnZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0g
PyBhbGxWaWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVzVGl0bGUpOworICAgICAgICAgICAg
W3RpdGxlcyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAgICAgICAgfQogCi0gICAgYXV0byBt
aW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5n
ZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2Uu
bGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxl
XTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1Rv
SW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5
cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYg
KFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBA
W1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVm
aXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXgg
c3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIEluIGFs
bCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsRmls
ZXNUaXRsZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7CisgICAgfTsKKworICAgIC8vIE5vIGFj
Y2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBfYWNj
ZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
XSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIpOwor
CisgICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxs
b2NdIGluaXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXV0pOworCisgICAgZm9y
IChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXSkg
eworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKFtleHRlbnNpb24g
c3Vic3RyaW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0ZW5z
aW9uOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFtaW1l
VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwg
QCIiKTsKKworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsK
KyAgICB9CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlw
ZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKworICAgIGZvciAoTlNTdHJp
bmcgKm1pbWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdldCgpKSB7CisgICAgICAgIE5TUmFu
Z2UgcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYgKCFy
YW5nZS5sZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG1pbWVU
eXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwor
ICAgICAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRl
eDpyYW5nZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8vIE9ubHkgaW1hZ2UsIHZpZGVvIGFu
ZCBhdWRpbyBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlwdGl2ZSB0aXRsZXMuIE90aGVyIHR5
cGVzIHdpbGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1c3RvbSBGaWxlcyIuICJDdXN0b20g
RmlsZXMiIHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRoYW4gYSBtaW1lIHR5cGUgaXMgc3Bl
Y2lmaWVkLgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6aW1h
Z2VUeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVdICYm
ICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1ZGlvVHlwZV0pCisgICAgICAgICAg
ICB0eXBlID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBpZiAoIXR5cGUpCisgICAgICAgICAg
ICB0eXBlID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5cGU7
CisKKyAgICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3aWxsIGJlIHNob3duIGlmIG1vcmUg
dGhhbiBvbmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVzcyAiKiIgaXMgc3BlY2lmaWVkLgor
ICAgICAgICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpA
IioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxz
ZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVh
bFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBjdXN0b21U
eXBlOworCisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMiIHRpdGxlIGlmIG1pbWVUeXBlIGlz
IGFsbG93ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0LgorICAgICAgICBpZiAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdlVHlwZTsKKyAgICB9CisKKyAgICAv
LyBDdXN0b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyIgb3Ig
YWNjZXB0PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6
Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAi
IiwgQCIiKTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdl
LyoiIG9yIGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmlu
ZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUpOwog
Ci0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBA
W1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBw
ZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAvLyBD
dXN0b20gRmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL2pwZWcs
aW1hZ2UvcG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5cGVd
KQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIGFsbFR5cGUp
OwogCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIG1p
bWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8vICdT
dWItdHlwZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvcG5n
Ii4KKyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBlNGFm
MWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uMzRkNGQ2MGU0MjkxOTg5YTI2NjM1NWM4Y2U3
MDAyYjVkNGFmNWY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0yOSwx
MCArMjksMTEgQEAKIAogQGludGVyZmFjZSBXS09wZW5QYW5lbFBhcmFtZXRlcnMgKFdLUHJpdmF0
ZSkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40
KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5T
U3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsSW1hZ2VGaWxl
RXh0ZW5zaW9uczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKIAogQGVuZAogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjVlYTJk
MzEzYjUzZGRlMGMyZWVkNDhiMTFmNzI1NDI3NzM3MGZkMC4uYTliZGUyMWQ2NDFjMmQ4NjI3ZGI3
ZTMwODgyZmY2M2EwYjY5ZDgzNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA2LTE2ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZp
bGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxlY3RpbmcgYWxs
IGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNjZXB0IiBhdHRy
aWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgdGhlIG51bWJlciBvZiB0aGUgZmlsZSBleHRlbnNpb25zJyB0aXRsZXMgaXMgdGhy
ZWUsIHNlbmQgYW4gYXJyYXkgb2YgCisgICAgICAgIGFsbEltYWdlRmlsZUV4dGVuc2lvbnMgdG8g
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldC4gQWxzbyBzZXQgdGhlIGluaXRpYWwKKyAgICAgICAg
c2VsZWN0aW9uIG9mIHRoZSBmaWx0ZXIgdG8gdGhlIGl0ZW0gbmFtZWQgIkltYWdlIEZpbGVzIi4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
OgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVs
OmFsbG93ZWRGaWxlRXh0ZW5zaW9uczphbGxJbWFnZUZpbGVFeHRlbnNpb25zOl0pOgorICAgICAg
ICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgorICAgICAgICAo
LVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0
Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGlu
aXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKwogMjAy
MC0wNi0xMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCB1cGRhdGVkIGxpYnNvdXAgZGVwZW5kZW5jeSBpbiBqaGJ1aWxkLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bQppbmRleCA1NzBhYWE1NGRiOTcwZTQ3NDI0ODk0ZjdiZDg3MWE3M2YyYzdkZDBlLi5kYmY5ZDJh
NjA0NDJjY2MyZDYyYjg3ODg2ZWIwY2FlMWZjMWE1ZmJjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNzcsMTUgKzc3LDE3
IEBAIEBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKIEBw
cml2YXRlCiAgICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7CiAgICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpf
YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczsKIH0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQKIAotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBh
bmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+
ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09w
ZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKWFsbEltYWdlRmlsZUV4dGVuc2lvbnMgewogICAgIGlmICgoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9IG9wZW5QYW5lbDsKICAg
ICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29w
eV07CisgICAgICAgIF9hbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbEltYWdlRmlsZUV4dGVu
c2lvbnMgY29weV07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTAwLDYgKzEwMiwx
MiBAQCAtICh2b2lkKXBvcHVwQWN0aW9uOihpZClzZW5kZXIgewogICAgICAgICAgICAgW19vcGVu
UGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNdOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1pZGRsZSBpdGVtLgorICAgICAgICBpZiAo
IVtfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCisgICAgICAgICAgICBbX29wZW5QYW5l
bCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbEltYWdlRmlsZUV4dGVuc2lvbnNd
OwogICAgIH0KIH0KIApAQCAtNjQ0LDcgKzY1Miw3IEBAIC0gKG51bGxhYmxlIE5TVmlldyAqKWNy
ZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNp
CiAgICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwogICAgIFtidXR0b24gc2V0QWN0
aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKICAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0g
ICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKKyAgICBbYnV0dG9uIHNlbGVjdEl0ZW1B
dEluZGV4Olt0aXRsZXMgY291bnRdIDw9IDIgPyAwIDogMV07CiAgICAgW3BvcHVwVGFyZ2V0IHBv
cHVwQWN0aW9uOmJ1dHRvbl07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKQEAgLTY4
NywxMCArNjk1LDEzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5P
cGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhCiAKICAgICBvcGVuUGFuZWwu
YWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxlU2VsZWN0
aW9uOwogCisgICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1l
dGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOworICAgIE5TQXJyYXkgKmFsbG93ZWRG
aWxlRXh0ZW5zaW9ucyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKyAgICBO
U0FycmF5ICphbGxJbWFnZUZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyBjb3VudF0gPT0gMiA/IEBbXSA6IHBhcmFtZXRlcnMuX2FsbEltYWdlRmlsZUV4dGVuc2lv
bnM7CisgICAgCiAgICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwotICAg
IF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0
IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9u
czogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKKyAgICBfZmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdp
dGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IGFsbG93ZWRGaWxl
RXh0ZW5zaW9ucyBhbGxJbWFnZUZpbGVFeHRlbnNpb25zOiBhbGxJbWFnZUZpbGVFeHRlbnNpb25z
XTsKIAotICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRl
cnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKICAgICBOU1ZpZXcgKmZpbHRlclZpZXcg
PSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1
cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07CiAgICAgaWYgKGZpbHRlclZpZXcp
CiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402077</attachid>
            <date>2020-06-16 21:04:25 -0700</date>
            <delta_ts>2020-07-01 23:27:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200616210424.patch</filename>
            <type>text/plain</type>
            <size>20008</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3ZjViMDc5OGIzZDkz
MWYyNjIyOTg0YWYzMDcxZDQ5ZDlkYTk1OS4uYTBjMWZmOTcxNDAzNWI5MTBjZGQ0MDdkMTQzMDcz
NGQ4MGNkZDUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTE2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBhbGxvdyBzZWxl
Y3RpbmcgYWxsIGZpbGVzIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW55IG9mIHRoZSAiYWNj
ZXB0IiBhdHRyaWJ1dGUgZm9ybWF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICBB
ZGQgbG9jYWxpemFibGUgc3RyaW5ncyBmb3IgdGhlIE9wZW5QYW5lbCBmaWx0ZXIuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5Lmg6CisgICAgICAgIEV4cG9ydCBhIE1JTUVU
eXBlUmVnaXN0cnkgQVBJIHRvIGJlIHJlZmVyZW5jZWQgZnJvbSBXZWJLaXQgcHJvamVjdC4KKwor
CiAyMDIwLTA2LTExICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcmVmZXJlbmNlcyB0byAic2xhdmUiIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzE1ZjFl
MjU4OTUyZjIyZTc5ZDlmZmU2OWFjZDI2N2UxNzY3Yzc5Mi4uZWMzZjIyNDRjNGI2OTI3ZmZhYTIy
NmVkMGVmYzlmOTc1Y2QyNjhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0x
NiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IFttYWNPU106IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxs
b3cgc2VsZWN0aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0
aGUgImFjY2VwdCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIG9uZSBvZiB0aGUgbWltZSB0eXBlcyBpbiB0aGUgImFj
Y2VwdCIgYXR0cmlidXRlIGlzIGFuIGFsbG93ZWQgZGVzdGVuYXRpb24KKyAgICAgICAgaW1hZ2Ug
Zm9ybWF0LCBhZGQgYSBuZXcgaXRlbSBpbiB0aGUgT3BlblBhbmVsIGZpbHRlciBuYW1lZCAiSW1h
Z2UgRmlsZXMiLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBh
cmFtZXRlcnMubW06CisgICAgICAgIChtaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICgt
W1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uc10pOgorICAgICAg
ICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJp
dmF0ZS5oOgorCiAyMDIwLTA2LTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJLaXQ6IEFkZCBVSUtpdCBTUEkgZm9yIHdhdGNoT1MgYW5kIHR2T1MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCmluZGV4IDE2NDdk
MjNmZmFhY2ZkMzhkNDUxMmIzZmY0NmI5MDA0ZGQ5OTNmZTUuLmQzNjBhMDM4MDJkODJlZTljNDkx
ZDliNTQ1YWE2M2Y0ZDgyNzMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncwpAQCAtNjEsNiArNjEsMTUgQEAKIC8qIE5hbWUgb2YgYXBwbGljYXRpb24n
cyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4gKi8KICIlQCBXZWJDcnlw
dG8gTWFzdGVyIEtleSIgPSAiJUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiOwogCisvKiBBdWRpbyBm
b3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciAqLworIiVAIGF1ZGlvIiA9ICIlQCBhdWRpbyI7CisK
Ky8qIEltYWdlIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlja2VyICovCisiJUAgaW1hZ2UiID0gIiVA
IGltYWdlIjsKKworLyogVmlkZW8gZm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIgKi8KKyIlQCB2
aWRlbyIgPSAiJUAgdmlkZW8iOworCiAvKiBMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9m
IGZpbGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0
aXBsZSBmaWxlcyAqLwogIiVkIGZpbGVzIiA9ICIlZCBmaWxlcyI7CiAKQEAgLTExNSw2ICsxMjQs
OSBAQAogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIkFsaWduIFJpZ2h0IChVbmRvIGFjdGlvbiBu
YW1lKSIgPSAiQWxpZ24gUmlnaHQiOwogCisvKiBBbGwgRmlsZXMgaW4gZmlsZXIgcGlja2VyICov
CisiQWxsIEZpbGVzIiA9ICJBbGwgRmlsZXMiOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFn
ZSBBY2Nlc3MgQVBJIHByb21wdCAqLwogIkFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vi
c2l0ZSBkYXRhIGFjY2VzcykiID0gIkFsbG93IjsKIApAQCAtMTM2LDYgKzE0OCw5IEBACiAvKiBX
S0Vycm9yQXR0cmlidXRlZFN0cmluZ0NvbnRlbnRGYWlsZWRUb0xvYWQgZGVzY3JpcHRpb24gKi8K
ICJBdHRyaWJ1dGVkIHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2FkIiA9ICJBdHRyaWJ1dGVk
IHN0cmluZyBjb250ZW50IGZhaWxlZCB0byBsb2FkIjsKIAorLyogQXVkaW8gRmlsZXMgaW4gZmls
ZXIgcGlja2VyICovCisiQXVkaW8gRmlsZXMiID0gIkF1ZGlvIEZpbGVzIjsKKwogLyogTWVudSBp
dGVtIGxhYmVsIGZvciBhdXRvbWF0aWMgdHJhY2sgc2VsZWN0aW9uIGJlaGF2aW9yICovCiAiQXV0
byAoUmVjb21tZW5kZWQpIiA9ICJBdXRvIChSZWNvbW1lbmRlZCkiOwogCkBAIC0yNjUsNiArMjgw
LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJDcmVhdGUgTGluayAoVW5kbyBhY3Rpb24g
bmFtZSkiID0gIkNyZWF0ZSBMaW5rIjsKIAorLyogQ3VzdG9tIEZpbGVzIGluIGZpbGVyIHBpY2tl
ciAqLworIkN1c3RvbSBGaWxlcyIgPSAiQ3VzdG9tIEZpbGVzIjsKKwogLyogQ3V0IGNvbnRleHQg
bWVudSBpdGVtICovCiAiQ3V0IiA9ICJDdXQiOwogCkBAIC00MDksNiArNDI3LDkgQEAKIC8qIEln
bm9yZSBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSAqLwogIklnbm9yZSBTcGVsbGluZyIgPSAi
SWdub3JlIFNwZWxsaW5nIjsKIAorLyogSW1hZ2UgRmlsZXMgaW4gZmlsZXIgcGlja2VyICovCisi
SW1hZ2UgRmlsZXMiID0gIkltYWdlIEZpbGVzIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwog
IkluZGVudCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkluZGVudCI7CiAKQEAgLTk5MSw2ICsxMDEy
LDkgQEAKIC8qIFZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRo
IHZhbHVlIGhpZ2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSAqLwogIlZhbHVlIG11c3QgYmUgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvICVzIiA9ICJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAlcyI7CiAKKy8qIFZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciAqLworIlZpZGVvIEZp
bGVzIiA9ICJWaWRlbyBGaWxlcyI7CisKIC8qIFBoaXNoaW5nIHdhcm5pbmcgZGVzY3JpcHRpb24g
Ki8KICJXYXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9y
dGVkIGFzIGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50
byBiZWxpZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIiA9ICJX
YXJuaW5ncyBhcmUgc2hvd24gZm9yIHdlYnNpdGVzIHRoYXQgaGF2ZSBiZWVuIHJlcG9ydGVkIGFz
IGRlY2VwdGl2ZS4gRGVjZXB0aXZlIHdlYnNpdGVzIHRyeSB0byB0cmljayB5b3UgaW50byBiZWxp
ZXZpbmcgdGhleSBhcmUgbGVnaXRpbWF0ZSB3ZWJzaXRlcyB5b3UgdHJ1c3QuIjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCmluZGV4IDk5NmVlNzg0ZWRlMmFk
YjAxYTE1NTBlMmZlNTBkNTA2NDNiM2ZhM2YuLjEzZTI1MTZmOTYxMjY1NjdlMTU5ZWFlNWY1NWMy
MjRiMDkwZWQ4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUg
Zm9yIGJlaW5nIGVuY29kZWQuCi0gICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUg
aXMgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIEphdmFTY3JpcHQgb3IgSlNPTiByZXNv
dXJjZS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmlu
ZGV4IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjg2YTI0NTg4YTcx
ZDMwYzU2MTViMzM2ZWZkYjBkNjY3YjdiNjk3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAt
MjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLT3BlblBhbmVs
UGFyYW1ldGVyc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9Db3JlU2VydmljZXNTUEkuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTYyLDEx
ICs2NCwxMyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU2V0PE5TU3RyaW5n
ICo+ICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQogICAgICAgICAgICAgaWYgKCFtaW1l
VHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8gZXh0ZW5z
aW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3ModXRpLCBrVVRUYWdDbGFz
c0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMgfHwgIUNG
QXJyYXlHZXRDb3VudChleHRlbnNpb25zLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJp
bmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKilleHRl
bnNpb25zLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIG1p
bWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5vdCBy
ZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEAi
d2VicCIpOworICAgICAgICBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwg
QFtAIndlYnAiXSk7CiAKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsK
ICAgICB9KCkpOwpAQCAtNzksNiArODMsMTggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpl
eHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogICAgIHJldHVybiBbZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkgb2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKIH0KIAorc3Rh
dGljIE5TU3RyaW5nICptaW1lVHlwZUZvckV4dGVuc2lvbihOU1N0cmluZyAqZXh0ZW5zaW9uKQor
eworICAgIE5TU2V0PE5TU3RyaW5nICo+ICptaW1lVHlwZXMgPSBbZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlTWFwKCkga2V5c09mRW50cmllc1Bhc3NpbmdUZXN0Ol5CT09MKE5TU3RyaW5nICptaW1lVHlw
ZSwgTlNTZXQ8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMsIEJPT0wgKikgeworICAgICAgICBpZiAo
W21pbWVUeXBlIGhhc1N1ZmZpeDpAIioiXSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAg
ICAgaWYgKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpCisgICAgICAgICAg
ICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdG
cm9tSW5kZXg6MV1dOworICAgICAgICByZXR1cm4gW2V4dGVuc2lvbnMgY29udGFpbnNPYmplY3Q6
ZXh0ZW5zaW9uXTsKKyAgICB9XTsKKyAgICByZXR1cm4gW21pbWVUeXBlcyBhbnlPYmplY3RdOwor
fQorCiBAaW1wbGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24KQEAgLTEzNiwzNiArMTUyLDExOCBAQCBzdGF0aWMgTlNTZXQ8
TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZShOU1N0cmluZyAqbWltZXR5cGUpCiAg
ICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107CiB9CiAKLS0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCistIChOU0Fy
cmF5PE5TU3RyaW5nICo+ICopX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMKIHsKLSAgICBhdXRvIGFj
Y2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFj
Y2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Cisg
ICAgcmV0dXJuIFtleHRlbnNpb25zRm9yTUlNRVR5cGUoQCJpbWFnZS8qIikgYWxsT2JqZWN0c107
Cit9CiAKLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwot
ICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Cist
IChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcworewor
ICAgIE5TU3RyaW5nICphbGxGaWxlc1RpdGxlID0gV0VCX1VJX1NUUklORygiQWxsIEZpbGVzIiwg
IkFsbCBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYWxsSW1hZ2VGaWxl
c1RpdGxlID0gV0VCX1VJX1NUUklORygiSW1hZ2UgRmlsZXMiLCAiSW1hZ2UgRmlsZXMgaW4gZmls
ZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmFsbFZpZGVvRmlsZXNUaXRsZSA9IFdFQl9VSV9T
VFJJTkcoIlZpZGVvIEZpbGVzIiwgIlZpZGVvIEZpbGVzIGluIGZpbGVyIHBpY2tlciIpOworICAg
IE5TU3RyaW5nICphbGxBdWRpb0ZpbGVzVGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJBdWRpbyBGaWxl
cyIsICJBdWRpbyBGaWxlcyBpbiBmaWxlciBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqY3VzdG9t
RmlsZXNUaXRsZSA9IFdFQl9VSV9TVFJJTkcoIkN1c3RvbSBGaWxlcyIsICJDdXN0b20gRmlsZXMg
aW4gZmlsZXIgcGlja2VyIik7CisgICAgTlNTdHJpbmcgKmltYWdlVGl0bGUgPSBXRUJfVUlfU1RS
SU5HKCIlQCBpbWFnZSIsICJJbWFnZSBmb3JtYXQgdHlwZSBpbiBmaWxlIHBpY2tlciIpOworICAg
IE5TU3RyaW5nICp2aWRlb1RpdGxlID0gV0VCX1VJX1NUUklORygiJUAgdmlkZW8iLCAiVmlkZW8g
Zm9ybWF0IHR5cGUgaW4gZmlsZSBwaWNrZXIiKTsKKyAgICBOU1N0cmluZyAqYXVkaW9UaXRsZSA9
IFdFQl9VSV9TVFJJTkcoIiVAIGF1ZGlvIiwgIkF1ZGlvIGZvcm1hdCB0eXBlIGluIGZpbGUgcGlj
a2VyIik7CisgICAgCisgICAgY29uc3RleHByIGF1dG8gaW1hZ2VUeXBlID0gQCJpbWFnZSI7Cisg
ICAgY29uc3RleHByIGF1dG8gdmlkZW9UeXBlID0gQCJ2aWRlbyI7CisgICAgY29uc3RleHByIGF1
dG8gYXVkaW9UeXBlID0gQCJhdWRpbyI7CisgICAgY29uc3RleHByIGF1dG8gY3VzdG9tVHlwZSA9
IEAiY3VzdG9tIjsKICAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYg
IVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmls
ZXNUaXRsZV07CisgICAgYXV0byBjb21wb3NlVGl0bGVzID0gXihOU1N0cmluZyAqdHlwZSwgTlNT
dHJpbmcgKnN1YlR5cGUsIE5TU3RyaW5nICphbGxUeXBlKSB7CisgICAgICAgIE5TTXV0YWJsZUFy
cmF5KiB0aXRsZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgICAgIC8vIGlmIHsg
dHlwZSBzdWJUeXBlIH0gPT0gImltYWdlL3BuZyIgdGhlbiBhZGQgIlBORyBJbWFnZSIKKyAgICAg
ICAgaWYgKFtzdWJUeXBlIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlVGl0
bGUgPSBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6aW1hZ2VUeXBlXSA/IGltYWdlVGl0bGUgOiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0gPyB2aWRlb1RpdGxlIDogYXVkaW9UaXRsZSk7
CisgICAgICAgICAgICBpZiAoW3N1YlR5cGUgbGVuZ3RoXSA8PSA0KQorICAgICAgICAgICAgICAg
IFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVUaXRsZSwg
W3N1YlR5cGUgdXBwZXJjYXNlU3RyaW5nXV1dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFt0aXRsZXMgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OnR5cGVU
aXRsZSwgc3ViVHlwZV1dOworICAgICAgICB9IGVsc2UgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzpjdXN0b21UeXBlXSkgeworICAgICAgICAgICAgLy8gaWYgeyB0eXBlIHN1YlR5cGUgfSA9PSAi
Q3VzdG9tIEZpbGVzIiB0aGVuIGFkZCAiQ3VzdG9tIEZpbGVzIgorICAgICAgICAgICAgW3RpdGxl
cyBhZGRPYmplY3Q6Y3VzdG9tRmlsZXNUaXRsZV07CisgICAgICAgIH0KIAotICAgIGlmICghKFth
Y2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRs
ZV07CisgICAgICAgIC8vIGlmIGFsbFR5cGUgPT0gImltYWdlIiB0aGVuIGFkZCAiSW1hZ2UgRmls
ZXMiCisgICAgICAgIGlmIChbYWxsVHlwZSBsZW5ndGhdKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqYWxsVHlwZVRpdGxlID0gW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOmltYWdlVHlwZV0gPyBh
bGxJbWFnZUZpbGVzVGl0bGUgOiAoW2FsbFR5cGUgaXNFcXVhbFRvU3RyaW5nOnZpZGVvVHlwZV0g
PyBhbGxWaWRlb0ZpbGVzVGl0bGUgOiBhbGxBdWRpb0ZpbGVzVGl0bGUpOworICAgICAgICAgICAg
W3RpdGxlcyBhZGRPYmplY3Q6YWxsVHlwZVRpdGxlXTsKKyAgICAgICAgfQogCi0gICAgYXV0byBt
aW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5n
ZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2Uu
bGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxl
XTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1Rv
SW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5
cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYg
KFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBA
W1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVm
aXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXgg
c3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07CisgICAgICAgIC8vIEluIGFs
bCBjYXNlcyBhZGQgIkFsbCBGaWxlcyIKKyAgICAgICAgW3RpdGxlcyBhZGRPYmplY3Q6YWxsRmls
ZXNUaXRsZV07CisgICAgICAgIHJldHVybiB0aXRsZXM7CisgICAgfTsKKworICAgIC8vIE5vIGFj
Y2VwdCBhdHRyaWJ1dGU6IDxpbnB1dCB0eXBlPSJmaWxlIj4KKyAgICBpZiAoIVtbc2VsZiBfYWNj
ZXB0ZWRNSU1FVHlwZXNdIGNvdW50XSAmJiAhW1tzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25z
XSBjb3VudF0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKEAiIiwgQCIiLCBAIiIpOwor
CisgICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxs
b2NdIGluaXRXaXRoQXJyYXk6W3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXV0pOworCisgICAgZm9y
IChOU1N0cmluZyAqZXh0ZW5zaW9uIGluIFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXSkg
eworICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKFtleHRlbnNpb24g
c3Vic3RyaW5nRnJvbUluZGV4OjFdKTsKKworICAgICAgICAvLyBVbmtub3duIGZpbGUgZXh0ZW5z
aW9uOiA8aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSIueHl6Ij4KKyAgICAgICAgaWYgKCFtaW1l
VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAiIiwg
QCIiKTsKKworICAgICAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsK
KyAgICB9CisKKyAgICBOU1N0cmluZyAqdHlwZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqc3ViVHlw
ZSA9IG5pbDsKKyAgICBOU1N0cmluZyAqYWxsVHlwZSA9IG5pbDsKKworICAgIGZvciAoTlNTdHJp
bmcgKm1pbWVUeXBlIGluIGFjY2VwdGVkTUlNRVR5cGVzLmdldCgpKSB7CisgICAgICAgIE5TUmFu
Z2UgcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKKyAgICAgICAgaWYgKCFy
YW5nZS5sZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG1pbWVU
eXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwor
ICAgICAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRl
eDpyYW5nZS5sb2NhdGlvbiArIDFdOworCisgICAgICAgIC8vIE9ubHkgaW1hZ2UsIHZpZGVvIGFu
ZCBhdWRpbyBtaW1lIHR5cGVzIHdpbGwgaGF2ZSBkZXNjcmlwdGl2ZSB0aXRsZXMuIE90aGVyIHR5
cGVzIHdpbGwgYmUgc2hvd24KKyAgICAgICAgLy8gYXMgIkN1c3RvbSBGaWxlcyIuICJDdXN0b20g
RmlsZXMiIHdpbGwgYmUgc2hvd24gYWxzbyBpZiBtb3JlIHRoYW4gYSBtaW1lIHR5cGUgaXMgc3Bl
Y2lmaWVkLgorICAgICAgICBpZiAoIVttaW1lVHlwZVByZWZpeCBpc0VxdWFsVG9TdHJpbmc6aW1h
Z2VUeXBlXSAmJiAhW21pbWVUeXBlUHJlZml4IGlzRXF1YWxUb1N0cmluZzp2aWRlb1R5cGVdICYm
ICFbbWltZVR5cGVQcmVmaXggaXNFcXVhbFRvU3RyaW5nOmF1ZGlvVHlwZV0pCisgICAgICAgICAg
ICB0eXBlID0gY3VzdG9tVHlwZTsKKyAgICAgICAgZWxzZSBpZiAoIXR5cGUpCisgICAgICAgICAg
ICB0eXBlID0gbWltZVR5cGVQcmVmaXg7CisgICAgICAgIGVsc2UgaWYgKCFbdHlwZSBpc0VxdWFs
VG9TdHJpbmc6bWltZVR5cGVQcmVmaXhdKQorICAgICAgICAgICAgdHlwZSA9IGN1c3RvbVR5cGU7
CisKKyAgICAgICAgLy8gIkN1c3RvbSBGaWxlcyIgYWxzbyB3aWxsIGJlIHNob3duIGlmIG1vcmUg
dGhhbiBvbmUgc3ViLXR5cGUgaXMgc3BlY2lmaWVkIHVubGVzcyAiKiIgaXMgc3BlY2lmaWVkLgor
ICAgICAgICBpZiAoIXN1YlR5cGUgfHwgW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpA
IioiXSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBtaW1lVHlwZVN1ZmZpeDsKKyAgICAgICAgZWxz
ZSBpZiAoIVtzdWJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIioiXSAmJiAhW3N1YlR5cGUgaXNFcXVh
bFRvU3RyaW5nOm1pbWVUeXBlU3VmZml4XSkKKyAgICAgICAgICAgIHN1YlR5cGUgPSBjdXN0b21U
eXBlOworCisgICAgICAgIC8vIEFkZCAiSW1hZ2UgRmlsZXMiIHRpdGxlIGlmIG1pbWVUeXBlIGlz
IGFsbG93ZWQgZGVzdGVuYXRpb24gaW1hZ2UgZm9ybWF0LgorICAgICAgICBpZiAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKQorICAgICAgICAgICAgYWxsVHlwZSA9IGltYWdlVHlwZTsKKyAgICB9CisKKyAgICAv
LyBDdXN0b20gRmlsZXMsIEFsbCBGaWxlczogYWNjZXB0PSJhdWRpby8qLGltYWdlL3BuZyIgb3Ig
YWNjZXB0PSJhcHBsaWNhdGlvbi9wZGYiLgorICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6
Y3VzdG9tVHlwZV0pCisgICAgICAgIHJldHVybiBjb21wb3NlVGl0bGVzKGN1c3RvbVR5cGUsIEAi
IiwgQCIiKTsKKworICAgIC8vICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdl
LyoiIG9yIGFjY2VwdD0iYXVkaW8vKiIuCisgICAgaWYgKFtzdWJUeXBlIGlzRXF1YWxUb1N0cmlu
ZzpAIioiXSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2VUaXRsZXMoQCIiLCBAIiIsIHR5cGUpOwog
Ci0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBA
W1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBw
ZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICAvLyBD
dXN0b20gRmlsZXMsICdUeXBlJyBGaWxlcywgQWxsIEZpbGVzOiBhY2NlcHQ9ImltYWdlL2pwZWcs
aW1hZ2UvcG5nIi4KKyAgICBpZiAoW3N1YlR5cGUgaXNFcXVhbFRvU3RyaW5nOmN1c3RvbVR5cGVd
KQorICAgICAgICByZXR1cm4gY29tcG9zZVRpdGxlcyhjdXN0b21UeXBlLCBAIiIsIGFsbFR5cGUp
OwogCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIG1p
bWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIC8vICdT
dWItdHlwZSBUeXBlJywgJ1R5cGUnIEZpbGVzLCBBbGwgRmlsZXM6IGFjY2VwdD0iaW1hZ2UvcG5n
Ii4KKyAgICByZXR1cm4gY29tcG9zZVRpdGxlcyh0eXBlLCBzdWJUeXBlLCBhbGxUeXBlKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgxMjBlNGFm
MWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2MxZmNkMWIyYTcxZWE1NWFlNmE1Yzc0OTc2
NDJlYjUxOGM4ODc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBAIC0zMSw4
ICszMSw5IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lv
bnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGY1ZWEyZDMxM2I1M2RkZTBjMmVlZDQ4YjExZjcyNTQyNzczNzBmZDAuLmE5YmRlMjFkNjQxYzJk
ODYyN2RiN2UzMDg4MmZmNjNhMGI2OWQ4MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0xNiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106
IFRoZSBGaWxlIFBpY2tlciBvZiB0aGUgPGlucHV0PiBmaWxlIGVsZW1lbnQgYWxsb3cgc2VsZWN0
aW5nIGFsbCBmaWxlcyB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIGFueSBvZiB0aGUgImFjY2Vw
dCIgYXR0cmlidXRlIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIElmIHRoZSBudW1iZXIgb2YgdGhlIGZpbGUgZXh0ZW5zaW9ucycgdGl0bGVz
IGlzIHRocmVlLCBzZW5kIGFuIGFycmF5IG9mIAorICAgICAgICBhbGxJbWFnZUZpbGVFeHRlbnNp
b25zIHRvIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQuIEFsc28gc2V0IHRoZSBpbml0aWFsCisg
ICAgICAgIHNlbGVjdGlvbiBvZiB0aGUgZmlsdGVyIHRvIHRoZSBpdGVtIG5hbWVkICJJbWFnZSBG
aWxlcyIuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9w
ZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6YWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczpdKToK
KyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1
cFRhcmdldDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRh
cmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQu
CisKIDIwMjAtMDYtMTEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRlZCBsaWJzb3VwIGRlcGVuZGVuY3kgaW4gamhi
dWlsZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5NGY3YmQ4NzFhNzNmMmM3ZGQwZS4u
ZGJmOWQyYTYwNDQyY2NjMmQ2MmI4Nzg4NmViMGNhZTFmYzFhNWZiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTc3LDE1
ICs3NywxNyBAQCBAaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVj
dCB7CiBAcHJpdmF0ZQogICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwogICAgIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7CisgICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FsbEltYWdlRmlsZUV4dGVuc2lvbnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihO
U09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9wZW5QYW5l
bDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6KE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilhbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9u
czogKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhbGxJbWFnZUZpbGVFeHRlbnNpb25zIHsKICAgICBp
ZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFu
ZWw7CiAgICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNp
b25zIGNvcHldOworICAgICAgICBfYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxJbWFnZUZp
bGVFeHRlbnNpb25zIGNvcHldOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTEwMCw2
ICsxMDIsMTIgQEAgLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKICAgICAgICAgICAg
IFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVF
eHRlbnNpb25zXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNaWRkbGUgaXRlbS4KKyAgICAg
ICAgaWYgKCFbX2FsbEltYWdlRmlsZUV4dGVuc2lvbnMgY291bnRdKQorICAgICAgICAgICAgW19v
cGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpAW0AiIl1dOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9hbGxJbWFnZUZpbGVFeHRl
bnNpb25zXTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NTIsNyBAQCAtIChudWxsYWJsZSBOU1Zp
ZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxl
RXh0ZW5zaQogICAgIFtidXR0b24gc2V0VGFyZ2V0OnBvcHVwVGFyZ2V0XTsKICAgICBbYnV0dG9u
IHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rpb246KV07CiAgICAgW2J1dHRvbiBzaXplVG9G
aXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0SW5kZXg6MF07CisgICAgW2J1dHRvbiBzZWxl
Y3RJdGVtQXRJbmRleDpbdGl0bGVzIGNvdW50XSA8PSAyID8gMCA6IDFdOwogICAgIFtwb3B1cFRh
cmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwogICAgIAogICAgIE5TVmlldyogZmlsdGVyVmlldyA9
IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVsZWFzZV07
CkBAIC02ODcsMTAgKzY5NSwxMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogCiAgICAgb3Bl
blBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBs
ZVNlbGVjdGlvbjsKIAorICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9
IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKKyAgICBOU0FycmF5ICph
bGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7
CisgICAgTlNBcnJheSAqYWxsSW1hZ2VGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMgY291bnRdID09IDIgPyBAW10gOiBwYXJhbWV0ZXJzLl9hbGxJbWFnZUZpbGVF
eHRlbnNpb25zOworICAgIAogICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNl
XTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4
dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgX2ZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxsb2Nd
IGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBhbGxv
d2VkRmlsZUV4dGVuc2lvbnMgYWxsSW1hZ2VGaWxlRXh0ZW5zaW9uczogYWxsSW1hZ2VGaWxlRXh0
ZW5zaW9uc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBw
YXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7CiAgICAgTlNWaWV3ICpmaWx0
ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRs
ZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0
ZXJWaWV3KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403345</attachid>
            <date>2020-07-01 23:27:10 -0700</date>
            <delta_ts>2020-07-02 00:17:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200701232709.patch</filename>
            <type>text/plain</type>
            <size>35487</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA3LTAxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
VGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgYWxsb3cg
c2VsZWN0aW5nIGFsbCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVDaG9vc2VyU2V0dGluZ3MgdG8gYSBz
ZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlci4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFVuaXF1ZVN0cmluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjphcHBl
bmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFwcGVu
ZEFsbEltYWdlc0V4dGVuc2lvbnMpOgorCisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAgICAgICAgUmV0dXJucyB0aGUgbGlz
dCBvZiB0aGUgYWxsb3dlZCBtaW1lIHR5cGVzIGZyb20gdGhlICdhY2NlcHQnIGF0dHJpYnV0ZS4K
KyAgICAgICAgSWYgdGhlIGZsYWcgJ2FsbG93SW1hZ2VUcmFuc2NvZGluZycgaXMgdHJ1ZSwgYWxs
IHRoZSBpbWFnZXMgbWltZSB0eXBlcyAKKyAgICAgICAgd2lsbCBiZSBhZGRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNv
bnN0KToKKyAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYWxsb3dlZCBleHRlbnNpb25z
IGZyb20gdGhlICdhY2NlcHQnIGF0dHJpYnV0ZS4KKyAgICAgICAgSWYgb25lIG9mIHRoZSBhbGxv
d2VkIG1pbWUgdHlwZXMgaXMgc3VwcG9ydGVkIGZvciBlbmNvZGluZywgYWxsIHRoZQorICAgICAg
ICBleHRlbnNpb25zIHdpbGwgYmUgYWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hv
b3NlclNldHRpbmdzLmg6IEFkZGVkLgorCiAyMDIwLTA3LTAxICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8gaGFuZGxlIHdpbGRjYXJkIE1JTUUgdHlw
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTc5Nyw2ICsxNzk3LDcgQEAgcGxhdGZv
cm0vRHJhZ0RhdGEuY3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiBwbGF0Zm9ybS9FdmVudFRy
YWNraW5nUmVnaW9ucy5jcHAKIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorcGxhdGZvcm0vRmls
ZUNob29zZXJTZXR0aW5ncy5jcHAKIHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9G
aWxlTW9uaXRvci5jcHAKIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NDQsNiArMTc0NCw3IEBACiAJCTU1NkM3QzRCMjIxMjM5
OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NkM3QzQ3MjIxMjM5NDIwMDlCMDZDQSAv
KiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTc2QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3
NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTg0NzY1QTI0NTNGMzM0MDA5RjU1MEMg
LyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJl
c29sdXRpb25TZWNvbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTU5Qjc2RDcyNEFEOTAzODAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUI3
NkQzMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAw
MjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNr
aW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5Rjcy
M0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFEMDk0MDI0MDg5NjQwMDBE
RTREMkYgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODc1OSw2ICs4NzYwLDggQEAKIAkJNTU3NkE1NjMxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTg0NzY1ODI0
NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTk3RkNDQjIwNzZDMDY4MDBEMzVCQjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCNzZEMjI0QUQ4OEI3MDBGOTI0MjMg
LyogRmlsZUNob29zZXJTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQ2hvb3Nl
clNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5Qjc2RDMyNEFE
ODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZUNob29zZXJTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZG
NjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1QUYxNEUzMUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3Ry
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVElSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjQ1MCw2ICsyNjQ1Myw4IEBACiAJCQkJMjYyRUM0MTkxRDA3OEYz
RDAwQkE3OEZDIC8qIEV2ZW50VHJhY2tpbmdSZWdpb25zLmggKi8sCiAJCQkJOTM0RkU5RTQwQjVD
QTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLywKIAkJCQkwNjZDNzcyQTBBQjYwM0I3
MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCAqLywKKwkJCQk1NTlCNzZEMjI0QUQ4OEI3MDBGOTI0
MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5jcHAgKi8sCisJCQkJNTU5Qjc2RDMyNEFEODhCNzAw
RjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLywKIAkJCQk1MzUxRDRBRTFERjkxNkFD
MDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTM1MUQ0QUYxREY5MTZBQzAwODAx
MENEIC8qIEZpbGVIYW5kbGUuaCAqLywKIAkJCQk3QTA5Q0VFQjFGMDFDQzkzMDBFOTNCREIgLyog
RmlsZU1vbml0b3IuY3BwICovLApAQCAtMzA2ODEsNiArMzA2ODYsNyBAQAogCQkJCTk3NkQ2Qzgx
MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzhGODZEQTFG
NTA5RTc0MDBFOENGQzUgLyogRmlsZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjZD
NzcyQjBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1OUI3NkQ3MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MzUxRDRCMTFERjkxNkI0MDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE4OEE5MDUxNzU1M0NENzAwMEM3NEY5IC8qIEZpbGVJY29uTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmls
ZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmgJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVDaG9vc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE5ICsyOSwxMiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSAiRmlsZUNo
b29zZXJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNZWRpYUNhcHR1
cmVUeXBlIHsKLSAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICBNZWRpYUNhcHR1cmVUeXBl
VXNlciwKLSAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLX07Ci0KIGNsYXNzIEZpbGVD
aG9vc2VyOwogY2xhc3MgSWNvbjsKIApAQCAtNTYsMTcgKzQ5LDYgQEAgc3RydWN0IEZpbGVDaG9v
c2VyRmlsZUluZm8gewogICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKLXN0cnVj
dCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFs
c2UgfTsKLSAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAgIFZlY3Rv
cjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxl
RXh0ZW5zaW9uczsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lmIEVOQUJM
RShNRURJQV9DQVBUVVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7
IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2Vy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVm
YXVsdDsKQEAgLTEwMiwxNiArODQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSwKLSAgICAgICAgV2ViQ29y
ZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgICAgIFdlYkNv
cmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVVc2VyLAotICAgICAgICBXZWJD
b3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLSAgICA+
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5n
cy5oIgorCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCit7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykgPyBleHRlbnNpb24ucmlnaHQoZXh0
ZW5zaW9uLmxlbmd0aCgpIC0gMSkgOiBleHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCBhcHBl
bmRVbmlxdWVTdHJpbmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzLCBWZWN0b3I8U3Ry
aW5nPiYgYWxsU3RyaW5ncykKK3sKKyAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCisg
ICAgICAgIGFsbFN0cmluZ3MuYXBwZW5kSWZOb3RDb250YWlucyhzdHJpbmcpOworfQorCitzdGF0
aWMgdm9pZCBhcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBleHRlbnNpb25zLCBWZWN0b3I8U3RyaW5nPiYgYWxsTUlNRVR5cGVzKQoreworICAgIGZvciAo
YXV0byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykgeworICAgICAgICBhdXRvIG1pbWVUeXBlID0g
bWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQobWltZVR5cGUu
Y29udGFpbnMoJy8nKSk7CisgICAgICAgIGFsbE1JTUVUeXBlcy5hcHBlbmRJZk5vdENvbnRhaW5z
KG1pbWVUeXBlKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEV4dGVuc2lvbnNGb3JN
SU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgVmVjdG9yPFN0cmluZz4m
IGFsbEV4dGVuc2lvbnMpCit7CisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IG1pbWVUeXBlcykg
eworICAgICAgICBBU1NFUlQobWltZVR5cGUuY29udGFpbnMoJy8nKSk7CisgICAgICAgIGFwcGVu
ZFVuaXF1ZVN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBl
KG1pbWVUeXBlKSwgYWxsRXh0ZW5zaW9ucyk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBzaG91
bGRBcHBlbmRBbGxJbWFnZXNFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+JiBhbGxFeHRlbnNpb25z
KQoreworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogYWxsRXh0ZW5zaW9ucykgeworICAgICAg
ICBhdXRvIG1pbWVUeXBlID0gbWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAg
ICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93
ZWRNSU1FVHlwZXMoKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlw
ZXM7CisKKyAgICBhcHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxs
b3dlZE1JTUVUeXBlcyk7CisgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyh0aGlzLT5h
Y2NlcHRGaWxlRXh0ZW5zaW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisKKyAgICBpZiAoIXRoaXMt
PmFsbG93SW1hZ2VUcmFuc2NvZGluZykgeworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAg
ICAgICBhcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25zKGV4dGVuc2lvbnMsIGFsbG93ZWRNSU1F
VHlwZXMpOworICAgIH0KKworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5cGVzOworfQorCitWZWN0
b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBj
b25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKworICAg
IGFwcGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXModGhpcy0+YWNjZXB0TUlNRVR5cGVzLCBhbGxv
d2VkRmlsZUV4dGVuc2lvbnMpOworICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3ModGhpcy0+YWNjZXB0
RmlsZUV4dGVuc2lvbnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisKKyAgICBpZiAoc2hvdWxk
QXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyhhbGxvd2VkRmlsZUV4dGVuc2lvbnMpKSB7CisgICAg
ICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JN
SU1FVHlwZSgiaW1hZ2UvKiJfcyk7CisgICAgICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3MoZXh0ZW5z
aW9ucywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dl
ZEZpbGVFeHRlbnNpb25zOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3NlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gTWVkaWFDYXB0dXJlVHlwZSB7CisgICAgTWVkaWFDYXB0dXJl
VHlwZU5vbmUsCisgICAgTWVkaWFDYXB0dXJlVHlwZVVzZXIsCisgICAgTWVkaWFDYXB0dXJlVHlw
ZUVudmlyb25tZW50Cit9OworCitzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7CisgICAgYm9v
bCBhbGxvd3NEaXJlY3RvcmllcyB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZp
bGVzIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93SW1hZ2VUcmFuc2NvZGluZyB7IGZhbHNlIH07
CisgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+
IGFjY2VwdEZpbGVFeHRlbnNpb25zOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3Ry
aW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBz
ZWxlY3RlZEZpbGVzOworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVy
ZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVy
ZVR5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5
cGVOb25lLAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVU
eXBlVXNlciwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJl
VHlwZUVudmlyb25tZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQ
aWNrZXIgb2YgdGhlIDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBhbGxvdyBzZWxlY3Rpbmcg
YWxsIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIFdLT3BlblBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygp
IGFuZCBhbGxvd2VkTUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29zZXJTZXR0aW5ncyB2
aWEgT3BlblBhbmVsUGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRlIHdpbGwgZ2V0IGFs
bG93ZWRNSU1FVHlwZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5CisgICAgICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdlUHJveHkuIEluIGEg
Zm9sbG93aW5nIHBhdGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1c2UgYWxsb3dlZE1J
TUVUeXBlcyB0byB0cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZvcmUgc2VuZGluZwor
ICAgICAgICB0aGVtIHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9w
ZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
OjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1l
dGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93SW1hZ2VUcmFuc2NvZGluZyBjb25zdCk6CisgICAg
ICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OnNldEFsbG93SW1hZ2VUcmFuc2NvZGluZyk6
CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
Lm1tOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93SW1hZ2VUcmFuc2Nv
ZGluZ10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX3NldEFsbG93SW1hZ2VU
cmFuc2NvZGluZzpdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisKIDIwMjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KIAogICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlN
RVR5cGUoKSBuZWVkcyB0byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBlcwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojpj
aAogfQogI2VuZGlmCiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hv
b3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3ZvaWQgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+ZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGZpbGVuYW1lcywgYWxsb3dlZE1JTUVUeXBlcyk7CiB9CiAKIHZvaWQgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmgJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNob29zZUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsKICNlbmRpZgotICAgIHZv
aWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgdm9p
ZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBjYW5jZWwoKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjkwLDcgKzY2OTAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
NjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0
cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBk
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKICAgICB2b2lkIGRpZENh
bmNlbEZvck9wZW5QYW5lbCgpOwogCiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVh
dGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0
cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMiArNTgsMTUgQEAgUmVm
PEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjYwogICAgIHJldHVybiBBUEk6OkFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKTsK
IH0KIAotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlw
ZSBPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKK1JlZjxBUEk6
OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOworICAgIHJldHVybiBBUEk6
OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRNSU1FVHlwZXMoKSk7
Cit9CisKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4
dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdB
cnJheShtX3NldHRpbmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KLSNlbmRpZgogCiBS
ZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFtZXMoKSBj
b25zdAogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
T3BlblBhbmVsUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMSArNDAsMTUgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd0RpcmVjdG9yaWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NEaXJlY3RvcmllczsgfQogICAgIGJvb2wg
YWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0
aXBsZUZpbGVzOyB9CisgICAgYm9vbCBhbGxvd0ltYWdlVHJhbnNjb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3NldHRpbmdzLmFsbG93SW1hZ2VUcmFuc2NvZGluZzsgfQorICAgIHZvaWQgc2V0QWxs
b3dJbWFnZVRyYW5zY29kaW5nKGJvb2wgZmxhZykgeyBtX3NldHRpbmdzLmFsbG93SW1hZ2VUcmFu
c2NvZGluZyA9IGZsYWc7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkg
Y29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7
CisgICAgUmVmPEFQSTo6QXJyYXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8
QVBJOjpBcnJheT4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6
QXJyYXk+IHNlbGVjdGVkRmlsZU5hbWVzKCkgY29uc3Q7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCi0gICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29u
c3Q7CisgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTYgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKIAogQGltcGxlbWVudGF0aW9uIFdLT3BlblBhbmVsUGFyYW1ldGVycyAoV0tQcml2YXRlKQog
CistIChCT09MKV9hbGxvd0ltYWdlVHJhbnNjb2RpbmcKK3sKKyAgICByZXR1cm4gX29wZW5QYW5l
bFBhcmFtZXRlcnMtPmFsbG93SW1hZ2VUcmFuc2NvZGluZygpOworfQorCistICh2b2lkKV9zZXRB
bGxvd0ltYWdlVHJhbnNjb2Rpbmc6KEJPT0wpZmxhZworeworICAgIF9vcGVuUGFuZWxQYXJhbWV0
ZXJzLT5zZXRBbGxvd0ltYWdlVHJhbnNjb2RpbmcoZmxhZyk7Cit9CisKIC0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilfYWNjZXB0ZWRNSU1FVHlwZXMKIHsKICAgICByZXR1cm4gd3JhcHBlcihfb3Bl
blBhbmVsUGFyYW1ldGVycy0+YWNjZXB0TUlNRVR5cGVzKCkpOwpAQCAtNjYsNTkgKzc2LDcgQEAg
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hY2NlcHRlZEZpbGVFeAogCiAtIChOU0FycmF5PE5T
U3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucwogewotICAgIC8vIEFnZ3JlZ2F0ZSBl
eHRlbnNpb25zIGJhc2VkIG9uIHNwZWNpZmllZCBNSU1FIHR5cGVzLgotICAgIGF1dG8gYWNjZXB0
ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0
ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAg
IGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxv
Y10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkTUlNRVR5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2lu
Z0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9w
KSB7Ci0gICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29udGFpbnNTdHJpbmc6QCIvIl0pOwotICAg
ICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUp
KTsKLSAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5Ondy
YXBwZXIoZXh0ZW5zaW9ucyldOwotICAgIH1dOwotCi0gICAgYXV0byBhZGRpdGlvbmFsQWxsb3dl
ZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9j
azpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsK
LSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOwot
ICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVu
c2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwotICAgIH1dOwotICAgIAotICAgIFthbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVF
eHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxP
YmplY3RzXTsKLX0KLQotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMKLXsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2Vw
dGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBf
YWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1Rp
dGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUg
PSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgaWYgKCFbYWNjZXB0ZWRNSU1FVHlwZXMgY291
bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgIHJldHVybiBA
W0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9
PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICByZXR1cm4g
QFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIGF1dG8gbWltZVR5cGUg
PSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWlt
ZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAg
Ci0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJh
bmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0
cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAgIAotICAgIGlmIChbbWltZVR5
cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAgICByZXR1cm4gQFtbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0
cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmlu
Z0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZp
eCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQ
cmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxG
aWxlc1RpdGxlXTsKKyAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWxs
b3dlZEZpbGVFeHRlbnNpb25zKCkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnNQcml2YXRlLmgJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDggKzMxLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRl
bnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVyPV9zZXRBbGxvd0ltYWdlVHJhbnNjb2Rpbmc6KSBC
T09MIF9hbGxvd0ltYWdlVHJhbnNjb2RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSk7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJ
QXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJl
c3VsdC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2
LDcgKzgyNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRl
cnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAgIFtkZWxlZ2F0
ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRl
cnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVy
KGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykg
bXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMgPSBt
YWtlUmVmKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVy
KV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcgKzg0MSw3IEBA
IGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKICAgICAgICAgZm9yIChO
U1VSTCAqdXJsIGluIFVSTHMpCiAgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKHVybC5wYXRo
KTsKIAotICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKKyAgICAgICAg
bGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcywgb3BlblBhbmVsUGFyYW1ldGVycy0+YWxs
b3dlZE1JTUVUeXBlcygpLT50b1N0cmluZ1ZlY3RvcigpKTsKICAgICB9KS5nZXQoKV07CiAKICAg
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA3LTAxICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlj
a2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgYWxsb3cgc2VsZWN0aW5nIGFs
bCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIE9wZW5QYW5lbCBvZiB0aGUgTWluaUJyb3dzZXIgd2lsbCBpbmNsdWRlIGEgY2hlY2tib3gg
d2l0aCB0aGUgdGl0bGUKKyAgICAgICAgIlNlbGVjdCBBbGwgRmlsZXMiLiBDaGFuZ2luZyB0aGUg
c3RhdGUgb2YgdGhpcyBjaGVja2JveCB3aWxsIHNldCB0aGUKKyAgICAgICAgYWxsb3dJbWFnZVRy
YW5zY29kaW5nIG1lbWJlciBvZiBGaWxlQ2hvb3NlclNldHRpbmdzIHZpYSBXS09wZW5QYW5lbFBh
cmFtZXRlcnMKKyAgICAgICAgYW5kIE9wZW5QYW5lbFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0ZXJzOl0p
OgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgor
ICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpdKToKKyAgICAg
ICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRo
UGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5Q
YW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6IERl
bGV0ZWQuCisKIDIwMjAtMDctMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBXZWJLaXQgYnVpbGQgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVt
LzY0Mjg4MTkxPgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDI2MzgzMikKKysrIFRvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC03
NiwzNiArNzYsMzMgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3Rpbwog
QGludGVyZmFjZSBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmplY3QgewogQHByaXZh
dGUKICAgICBOU09wZW5QYW5lbCAqX29wZW5QYW5lbDsKLSAgICBOU0FycmF5PE5TU3RyaW5nICo+
ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIFdLT3BlblBhbmVsUGFyYW1ldGVycyAqX3Bh
cmFtZXRlcnM7CiB9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0CiAKLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVs
IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxl
RXh0ZW5zaW9ucyB7CistIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5Q
YW5lbCBwYXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIHsKICAg
ICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVu
UGFuZWw7Ci0gICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRl
bnNpb25zIGNvcHldOworICAgICAgICBfcGFyYW1ldGVycyA9IFtwYXJhbWV0ZXJzIHJldGFpbl07
CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXBvcHVwQWN0aW9uOihpZClz
ZW5kZXIgewotICAgIC8vIExhc3QgaXRlbS4KLSAgICBpZiAoW3NlbmRlciBpbmRleE9mU2VsZWN0
ZWRJdGVtXSA9PSBbc2VuZGVyIG51bWJlck9mSXRlbXNdIC0gMSkKKy0gKHZvaWQpcG9wdXBBY3Rp
b246KE5TQnV0dG9uICopc2VuZGVyIHsKKyAgICBpZiAoc2VuZGVyLnN0YXRlID09IE5TQ29udHJv
bFN0YXRlVmFsdWVPbikgewogICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVz
Om5pbF07Ci0gICAgZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pIHsKLSAg
ICAgICAgLy8gRmlyc3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBjb3VudF0pCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBb
QCIiXV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRG
aWxlVHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJhbWV0ZXJzLl9h
bGxvd0ltYWdlVHJhbnNjb2RpbmcgPSBOTzsKKyAgICB9IGVsc2UgeworICAgICAgICBbX29wZW5Q
YW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9wYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNdOworICAgICAgICBfcGFyYW1ldGVycy5fYWxsb3dJbWFnZVRyYW5zY29kaW5nID0gWUVTOwog
ICAgIH0KIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19hbGxvd2VkRmlsZUV4dGVuc2lv
bnMgcmVsZWFzZV07CisgICAgW19wYXJhbWV0ZXJzIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFs
bG9jXTsKIH0KIApAQCAtNjI5LDUwICs2MjYsMjYgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJ1bgogICAgIH1dOwogfQogCi0tIChudWxsYWJsZSBOU1ZpZXcgKiljcmVh
dGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAorLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmls
dGVyVmlldzooRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKIHsKLSAgICBO
U1RleHRGaWVsZCogbGFiZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U1plcm9SZWN0XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9y
bWF0OiJdOwotICAgIFtsYWJlbCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVj
dGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJh
Y2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0Zp
dF07Ci0KLSAgICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0g
ICAgW2J1dHRvbiBhZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRh
cmdldDpwb3B1cFRhcmdldF07Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVw
QWN0aW9uOildOwotICAgIFtidXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0
ZW1BdEluZGV4OjBdOwotICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOworICAg
IE5TQnV0dG9uICpjaGVja2JveCA9IFtOU0J1dHRvbiBjaGVja2JveFdpdGhUaXRsZTpAIlNlbGVj
dCBBbGwgRmlsZXMiIHRhcmdldDpwb3B1cFRhcmdldCBhY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0
aW9uOildOworICAgIFtjaGVja2JveCBzaXplVG9GaXRdOworICAgIFtwb3B1cFRhcmdldCBwb3B1
cEFjdGlvbjpjaGVja2JveF07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBb
ZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVsXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3
OmJ1dHRvbl07CisgICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpjaGVja2JveF07CiAKLSAgICBj
b25zdCBDR0Zsb2F0IG1hcmdpbiA9IDIwOwotICAgIGNvbnN0IENHRmxvYXQgc3BhY2luZyA9IDI7
Ci0gICAgY29uc3QgQ0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKLQotICAgIE5TUmVjdCBs
YWJlbEZyYW1lID0gW2xhYmVsIGZyYW1lXTsKLSAgICBOU1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0
dG9uIGZyYW1lXTsKKyAgICBOU1JlY3QgY2hlY2tib3hGcmFtZSA9IFtjaGVja2JveCBmcmFtZV07
CiAgICAgTlNSZWN0IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKIAotICAg
IC8vIFNldCBhIG1pbmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNp
emUgPSBOU01ha2VTaXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgp
LCBOU0hlaWdodChidXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBs
YXkgb3V0ICdsYWJlbCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRp
Y2FsIG1hcmdpbnMuCi0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lk
dGgobGFiZWxGcmFtZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hl
aWdodChsYWJlbEZyYW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOwor
ICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdjaGVja2JveCdob3Jpem9udGFsbHkgYW5k
IGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgorICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMTA7
CisgICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgoY2hlY2tib3hG
cmFtZSksIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpICsgbWFyZ2luICogMik7CiAgICAgW2ZpbHRl
clZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0ZyYW1lXTsKIAotICAgIC8vICdsYWJlbCcgd2lsbCBi
ZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KLSAgICBsYWJlbEZyYW1lLm9yaWdpbiA9IE5T
TWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkg
LSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAyKTsKLSAgICBbbGFiZWwgc2V0RnJhbWU6bGFiZWxG
cmFtZV07Ci0gICAgCi0gICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVy
dGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5LgotICAg
IGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSArIHNw
YWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQoYnV0dG9uRnJhbWUp
KSAvIDIpOwotICAgIFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJhbWVdOworICAgIC8vICdjaGVj
a2JveEZyYW1lJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5LgorICAgIGNoZWNr
Ym94RnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGNoZWNrYm94RnJhbWUpLCAoTlNI
ZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpKSAvIDIpOwor
ICAgIFtjaGVja2JveCBzZXRGcmFtZTpjaGVja2JveEZyYW1lXTsKIAogICAgIHJldHVybiBmaWx0
ZXJWaWV3OwogfQpAQCAtNjg4LDEwICs2NjEsOSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcnVuCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0g
cGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAogICAgIFtfZmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9
IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9w
ZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc107CisgICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgcGFyYW1l
dGVyczogcGFyYW1ldGVyc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNU
aXRsZXMgPSBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7Ci0gICAgTlNW
aWV3ICpmaWx0ZXJWaWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXMgcG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOworICAg
IE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6X2ZpbGVFeHRlbnNp
b25zUG9wdXBUYXJnZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3KQogICAgICAgICBbb3BlblBhbmVs
IHNldEFjY2Vzc29yeVZpZXc6ZmlsdGVyVmlld107CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403348</attachid>
            <date>2020-07-02 00:17:22 -0700</date>
            <delta_ts>2020-07-02 02:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200702001721.patch</filename>
            <type>text/plain</type>
            <size>35988</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA3LTAxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
VGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgYWxsb3cg
c2VsZWN0aW5nIGFsbCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVDaG9vc2VyU2V0dGluZ3MgdG8gYSBz
ZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6bWltZVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kVW5pcXVl
U3RyaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyk6CisKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3Qp
OgorICAgICAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIHRoZSBhbGxvd2VkIG1pbWUgdHlwZXMgZnJv
bSB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlLgorICAgICAgICBJZiB0aGUgZmxhZyAnYWxsb3dJbWFn
ZVRyYW5zY29kaW5nJyBpcyB0cnVlLCBhbGwgdGhlIGltYWdlcyBtaW1lIHR5cGVzIAorICAgICAg
ICB3aWxsIGJlIGFkZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
OjphbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAgICBSZXR1cm5zIHRoZSBsaXN0
IG9mIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnMgZnJvbSB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlLgor
ICAgICAgICBJZiBvbmUgb2YgdGhlIGFsbG93ZWQgbWltZSB0eXBlcyBpcyBzdXBwb3J0ZWQgZm9y
IGVuY29kaW5nLCBhbGwgdGhlCisgICAgICAgIGV4dGVuc2lvbnMgd2lsbCBiZSBhZGRlZC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaDogQWRkZWQuCisKIDIwMjAt
MDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKSBuZWVkcyB0
byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBlcwpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZp
c2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC05NDUsNiArOTQ1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL0RyYWdJdGVtLmgKICAgICBwbGF0Zm9ybS9FdmVudFRyYWNraW5n
UmVnaW9ucy5oCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuaAorICAgIHBsYXRmb3JtL0ZpbGVD
aG9vc2VyU2V0dGluZ3MuaAogICAgIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaAogICAgIHBsYXRmb3Jt
L0ZpbGVNb25pdG9yLmgKICAgICBwbGF0Zm9ybS9GaWxlU3RyZWFtQ2xpZW50LmgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTc5Nyw2ICsxNzk3LDcgQEAgcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiBwbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9u
cy5jcHAKIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0
aW5ncy5jcHAKIHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5j
cHAKIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjM4MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NDQsNiArMTc0NCw3IEBACiAJCTU1NkM3QzRCMjIxMjM5OTcwMDlCMDZDQSAv
KiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NkM3QzQ3MjIxMjM5NDIwMDlCMDZDQSAvKiBSZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1NTc2QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3NkE1NjMxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NTg0NzY1QTI0NTNGMzM0MDA5RjU1MEMgLyogUmVkdWNlZFJl
c29sdXRpb25TZWNvbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTg0NzY1ODI0NTNBQkMyMDA5RjU1MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNv
bmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NTU5Qjc2RDcyNEFEOTAzODAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUI3NkQzMjRBRDg4Qjcw
MEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIElt
YWdlQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFEMDkz
RTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFQTA5RjcyM0ZDQ0IzRDAwODUw
NEE1IC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODc1OSw2ICs4NzYwLDggQEAKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8q
IEltYWdlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTg0NzY1ODI0NTNBQkMyMDA5RjU1
MEMgLyogUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RkND
QjIwNzZDMDY4MDBEMzVCQjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NTlCNzZEMjI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNob29z
ZXJTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQ2hvb3NlclNldHRpbmdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5Qjc2RDMyNEFEODhCNzAwRjkyNDIz
IC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZUNob29zZXJTZXR0
aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGNjFEODIwOUY0MDAy
MkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF0aXZlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjgxRDgy
MUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1QUYxNEUzMUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVElSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjQ1MCw2ICsyNjQ1Myw4IEBACiAJCQkJMjYyRUM0MTkxRDA3OEYzRDAwQkE3OEZDIC8q
IEV2ZW50VHJhY2tpbmdSZWdpb25zLmggKi8sCiAJCQkJOTM0RkU5RTQwQjVDQTUzOTAwM0U0QTcz
IC8qIEZpbGVDaG9vc2VyLmNwcCAqLywKIAkJCQkwNjZDNzcyQTBBQjYwM0I3MDAyMzhDQzQgLyog
RmlsZUNob29zZXIuaCAqLywKKwkJCQk1NTlCNzZEMjI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNo
b29zZXJTZXR0aW5ncy5jcHAgKi8sCisJCQkJNTU5Qjc2RDMyNEFEODhCNzAwRjkyNDIzIC8qIEZp
bGVDaG9vc2VyU2V0dGluZ3MuaCAqLywKIAkJCQk1MzUxRDRBRTFERjkxNkFDMDA4MDEwQ0QgLyog
RmlsZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTM1MUQ0QUYxREY5MTZBQzAwODAxMENEIC8qIEZpbGVI
YW5kbGUuaCAqLywKIAkJCQk3QTA5Q0VFQjFGMDFDQzkzMDBFOTNCREIgLyogRmlsZU1vbml0b3Iu
Y3BwICovLApAQCAtMzA2ODEsNiArMzA2ODYsNyBAQAogCQkJCTk3NkQ2QzgxMTIyQjhBM0QwMDFG
RDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzhGODZEQTFGNTA5RTc0MDBFOENG
QzUgLyogRmlsZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzcyQjBBQjYwM0I3
MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OUI3NkQ3MjRB
RDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MzUxRDRCMTFERjkxNkI0MDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE4OEE5MDUxNzU1M0NENzAwMEM3NEY5IC8qIEZpbGVJY29uTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgJ
KHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE5ICsyOSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNZWRpYUNhcHR1cmVUeXBlIHsKLSAg
ICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICBNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICBN
ZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xh
c3MgSWNvbjsKIApAQCAtNTYsMTcgKzQ5LDYgQEAgc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm8g
ewogICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxlQ2hvb3Nl
clNldHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsKLSAgICBi
b29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGFj
Y2VwdE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsK
LSAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJQV9DQVBU
VVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVy
ZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTEw
MiwxNiArODQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpN
ZWRpYUNhcHR1cmVUeXBlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAg
ICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0
dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2Fw
dHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVVc2VyLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNh
cHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLSAgICA+OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
clNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5ncy5oIgorCisjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTdHJpbmcgbWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7
CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4
dGVuc2lvbi5zdGFydHNXaXRoKCcuJykgPyBleHRlbnNpb24ucmlnaHQoZXh0ZW5zaW9uLmxlbmd0
aCgpIC0gMSkgOiBleHRlbnNpb24pOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRVbmlxdWVTdHJp
bmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzLCBWZWN0b3I8U3RyaW5nPiYgYWxsU3Ry
aW5ncykKK3sKKyAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCisgICAgICAgIGFsbFN0
cmluZ3MuYXBwZW5kSWZOb3RDb250YWlucyhzdHJpbmcpOworfQorCitzdGF0aWMgdm9pZCBhcHBl
bmRNSU1FVHlwZXNGb3JFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25z
LCBWZWN0b3I8U3RyaW5nPiYgYWxsTUlNRVR5cGVzKQoreworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uIDogZXh0ZW5zaW9ucykgeworICAgICAgICBhdXRvIG1pbWVUeXBlID0gbWltZVR5cGVGb3JF
eHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQobWltZVR5cGUuY29udGFpbnMoJy8n
KSk7CisgICAgICAgIGFsbE1JTUVUeXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgVmVjdG9yPFN0cmluZz4mIGFsbEV4dGVuc2lv
bnMpCit7CisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IG1pbWVUeXBlcykgeworICAgICAgICBB
U1NFUlQobWltZVR5cGUuY29udGFpbnMoJy8nKSk7CisgICAgICAgIGFwcGVuZFVuaXF1ZVN0cmlu
Z3MoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKSwg
YWxsRXh0ZW5zaW9ucyk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBzaG91bGRBcHBlbmRBbGxJ
bWFnZXNFeHRlbnNpb25zKFZlY3RvcjxTdHJpbmc+JiBhbGxFeHRlbnNpb25zKQoreworICAgIGZv
ciAoYXV0byYgZXh0ZW5zaW9uIDogYWxsRXh0ZW5zaW9ucykgeworICAgICAgICBhdXRvIG1pbWVU
eXBlID0gbWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBl
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRNSU1FVHlwZXMo
KSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXM7CisKKyAgICBh
cHBlbmRVbmlxdWVTdHJpbmdzKHRoaXMtPmFjY2VwdE1JTUVUeXBlcywgYWxsb3dlZE1JTUVUeXBl
cyk7CisgICAgYXBwZW5kTUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyh0aGlzLT5hY2NlcHRGaWxlRXh0
ZW5zaW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisKKyAgICBpZiAoIXRoaXMtPmFsbG93SW1hZ2VU
cmFuc2NvZGluZykgeworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoImltYWdlLyoiX3MpOworICAgICAgICBhcHBlbmRN
SU1FVHlwZXNGb3JFeHRlbnNpb25zKGV4dGVuc2lvbnMsIGFsbG93ZWRNSU1FVHlwZXMpOworICAg
IH0KKworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5cGVzOworfQorCitWZWN0b3I8U3RyaW5nPiBG
aWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAg
IFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKworICAgIGFwcGVuZEV4dGVu
c2lvbnNGb3JNSU1FVHlwZXModGhpcy0+YWNjZXB0TUlNRVR5cGVzLCBhbGxvd2VkRmlsZUV4dGVu
c2lvbnMpOworICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3ModGhpcy0+YWNjZXB0RmlsZUV4dGVuc2lv
bnMsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk7CisKKyAgICBpZiAoc2hvdWxkQXBwZW5kQWxsSW1h
Z2VzRXh0ZW5zaW9ucyhhbGxvd2VkRmlsZUV4dGVuc2lvbnMpKSB7CisgICAgICAgIGF1dG8gZXh0
ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgiaW1h
Z2UvKiJfcyk7CisgICAgICAgIGFwcGVuZFVuaXF1ZVN0cmluZ3MoZXh0ZW5zaW9ucywgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZEZpbGVFeHRlbnNp
b25zOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNl
dHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXJTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gTWVkaWFDYXB0dXJlVHlwZSB7CisgICAgTWVkaWFDYXB0dXJlVHlwZU5vbmUsCisg
ICAgTWVkaWFDYXB0dXJlVHlwZVVzZXIsCisgICAgTWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50
Cit9OworCitzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5ncyB7CisgICAgYm9vbCBhbGxvd3NEaXJl
Y3RvcmllcyB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd3NNdWx0aXBsZUZpbGVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIGFsbG93SW1hZ2VUcmFuc2NvZGluZyB7IGZhbHNlIH07CisgICAgVmVjdG9y
PFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVF
eHRlbnNpb25zOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1F
VHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVz
OworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFD
YXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25t
ZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhl
IDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdLT3Bl
blBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGFuZCBhbGxvd2Vk
TUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29zZXJTZXR0aW5ncyB2aWEgT3BlblBhbmVs
UGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRlIHdpbGwgZ2V0IGFsbG93ZWRNSU1FVHlw
ZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5CisgICAg
ICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdlUHJveHkuIEluIGEgZm9sbG93aW5nIHBh
dGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1c2UgYWxsb3dlZE1JTUVUeXBlcyB0byB0
cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZvcmUgc2VuZGluZworICAgICAgICB0aGVt
IHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlN
RVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVy
czo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnM6OmFsbG93SW1hZ2VUcmFuc2NvZGluZyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9w
ZW5QYW5lbFBhcmFtZXRlcnM6OnNldEFsbG93SW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgIChB
UEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAg
ICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93SW1hZ2VUcmFuc2NvZGluZ10pOgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX3NldEFsbG93SW1hZ2VUcmFuc2NvZGluZzpd
KToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIw
MjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKSBuZWVk
cyB0byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQs
MTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaAogfQogI2VuZGlm
CiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoZmlsZW5hbWVzKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGZpbGVuYW1lcywgYWxsb3dlZE1JTUVUeXBlcyk7CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29u
c3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsKICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgdm9pZCBjaG9vc2VGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjkwLDcgKzY2OTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3Qg
QVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5Q
YW5lbCgpOwogCiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRl
cnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYz
ODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+
IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjYwogICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVT
dHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKTsKIH0KIAotI2lmIEVO
QUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBPcGVuUGFuZWxQ
YXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKK1JlZjxBUEk6OkFycmF5PiBPcGVu
UGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRNSU1FVHlwZXMoKSk7Cit9CisKK1JlZjxB
UEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBj
b25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRp
bmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KLSNlbmRpZgogCiBSZWY8QVBJOjpBcnJh
eT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdAogewpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAs
MTUgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd0RpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5hbGxvd3NEaXJlY3RvcmllczsgfQogICAgIGJvb2wgYWxsb3dNdWx0aXBs
ZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOyB9
CisgICAgYm9vbCBhbGxvd0ltYWdlVHJhbnNjb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3NldHRp
bmdzLmFsbG93SW1hZ2VUcmFuc2NvZGluZzsgfQorICAgIHZvaWQgc2V0QWxsb3dJbWFnZVRyYW5z
Y29kaW5nKGJvb2wgZmxhZykgeyBtX3NldHRpbmdzLmFsbG93SW1hZ2VUcmFuc2NvZGluZyA9IGZs
YWc7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAgICAg
UmVmPEFQSTo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVmPEFQ
STo6QXJyYXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4g
YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVj
dGVkRmlsZU5hbWVzKCkgY29uc3Q7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgV2Vi
Q29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAgV2Vi
Q29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsMTYgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIAogQGltcGxl
bWVudGF0aW9uIFdLT3BlblBhbmVsUGFyYW1ldGVycyAoV0tQcml2YXRlKQogCistIChCT09MKV9h
bGxvd0ltYWdlVHJhbnNjb2RpbmcKK3sKKyAgICByZXR1cm4gX29wZW5QYW5lbFBhcmFtZXRlcnMt
PmFsbG93SW1hZ2VUcmFuc2NvZGluZygpOworfQorCistICh2b2lkKV9zZXRBbGxvd0ltYWdlVHJh
bnNjb2Rpbmc6KEJPT0wpZmxhZworeworICAgIF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5zZXRBbGxv
d0ltYWdlVHJhbnNjb2RpbmcoZmxhZyk7Cit9CisKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilf
YWNjZXB0ZWRNSU1FVHlwZXMKIHsKICAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVsUGFyYW1l
dGVycy0+YWNjZXB0TUlNRVR5cGVzKCkpOwpAQCAtNjYsNTkgKzc2LDcgQEAgLSAoTlNBcnJheTxO
U1N0cmluZyAqPiAqKV9hY2NlcHRlZEZpbGVFeAogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICop
X2FsbG93ZWRGaWxlRXh0ZW5zaW9ucwogewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJh
c2VkIG9uIHNwZWNpZmllZCBNSU1FIHR5cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMg
PSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5z
aW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dl
ZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwot
Ci0gICAgW2FjY2VwdGVkTUlNRVR5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNT
dHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAg
IEFTU0VSVChbbWltZVR5cGUgY29udGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBhdXRvIGV4
dGVuc2lvbnMgPSBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpKTsKLSAgICAgICAg
W2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OndyYXBwZXIoZXh0ZW5z
aW9ucyldOwotICAgIH1dOwotCi0gICAgYXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNj
ZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNT
RVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRk
aXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJp
bmdGcm9tSW5kZXg6MV1dOwotICAgIH1dOwotICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lv
bnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdl
dCgpXTsKLSAgICByZXR1cm4gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLX0K
LQotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMK
LXsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVz
XTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxl
RXh0ZW5zaW9uc107Ci0KLSAgICBjb25zdGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwg
RmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBG
aWxlcyI7Ci0gICAgCi0gICAgaWYgKCFbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNj
ZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0
bGVdOwotCi0gICAgaWYgKCEoW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNj
ZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxl
c1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRN
SU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VP
ZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBt
aW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9u
XTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRl
eDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNF
cXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6
MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDox
XV0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9
IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAi
LCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxG
aWxlc1RpdGxlXTsKLQotICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
JUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsK
KyAgICByZXR1cm4gd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRl
bnNpb25zKCkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
LmgJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDgg
KzMxLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5
PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWR3cml0ZSwgc2V0dGVyPV9zZXRBbGxvd0ltYWdlVHJhbnNjb2Rpbmc6KSBCT09MIF9hbGxvd0lt
YWdlVHJhbnNjb2RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBl
bmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNp
bXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2lt
cG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2LDcgKzgyNyw3IEBA
IGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKIAogICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVk
QnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigq
b3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBs
aXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7Cisg
ICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRCeUZy
YW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tl
ciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMgPSBtYWtlUmVmKCpvcGVu
UGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkg
KlVSTHMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcgKzg0MSw3IEBAIGJvb2wgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKICAgICAgICAgZm9yIChOU1VSTCAqdXJsIGlu
IFVSTHMpCiAgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKHVybC5wYXRoKTsKIAotICAgICAg
ICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKKyAgICAgICAgbGlzdGVuZXItPmNo
b29zZUZpbGVzKGZpbGVuYW1lcywgb3BlblBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZE1JTUVUeXBl
cygpLT50b1N0cmluZ1ZlY3RvcigpKTsKICAgICB9KS5nZXQoKV07CiAKICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2MzgzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI0IEBACisyMDIwLTA3LTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogVGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8
aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgYWxsb3cgc2VsZWN0aW5nIGFsbCBmaWxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIE9wZW5QYW5l
bCBvZiB0aGUgTWluaUJyb3dzZXIgd2lsbCBpbmNsdWRlIGEgY2hlY2tib3ggd2l0aCB0aGUgdGl0
bGUKKyAgICAgICAgIlNlbGVjdCBBbGwgRmlsZXMiLiBDaGFuZ2luZyB0aGUgc3RhdGUgb2YgdGhp
cyBjaGVja2JveCB3aWxsIHNldCB0aGUKKyAgICAgICAgYWxsb3dJbWFnZVRyYW5zY29kaW5nIG1l
bWJlciBvZiBGaWxlQ2hvb3NlclNldHRpbmdzIHZpYSBXS09wZW5QYW5lbFBhcmFtZXRlcnMKKyAg
ICAgICAgYW5kIE9wZW5QYW5lbFBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lv
bnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0ZXJzOl0pOgorICAgICAgICAo
LVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOgorICAgICAgICAoLVtG
aWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpdKToKKyAgICAgICAgKC1bV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczpp
bml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0
aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2Vk
RmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIw
MjAtMDctMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBXZWJLaXQgYnVpbGQgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzY0Mjg4MTkxPgpJ
bmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0JKHJldmlzaW9uIDI2MzgzMikKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC03NiwzNiArNzYsMzMg
QEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3RpbwogQGludGVyZmFjZSBG
aWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBOU09w
ZW5QYW5lbCAqX29wZW5QYW5lbDsKLSAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zOworICAgIFdLT3BlblBhbmVsUGFyYW1ldGVycyAqX3BhcmFtZXRlcnM7CiB9
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CiAKLS0g
KGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7
CistIChpZClpbml0V2l0aE9wZW5QYW5lbDooTlNPcGVuUGFuZWwqKW9wZW5QYW5lbCBwYXJhbWV0
ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIHsKICAgICBpZiAoKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKSB7CiAgICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAg
ICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHld
OworICAgICAgICBfcGFyYW1ldGVycyA9IFtwYXJhbWV0ZXJzIHJldGFpbl07CiAgICAgfQogICAg
IHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXBvcHVwQWN0aW9uOihpZClzZW5kZXIgewotICAg
IC8vIExhc3QgaXRlbS4KLSAgICBpZiAoW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSA9PSBb
c2VuZGVyIG51bWJlck9mSXRlbXNdIC0gMSkKKy0gKHZvaWQpcG9wdXBBY3Rpb246KE5TQnV0dG9u
ICopc2VuZGVyIHsKKyAgICBpZiAoc2VuZGVyLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVP
bikgewogICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOm5pbF07Ci0gICAg
ZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pIHsKLSAgICAgICAgLy8gRmly
c3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0g
ICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2Fs
bG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJhbWV0ZXJzLl9hbGxvd0ltYWdlVHJh
bnNjb2RpbmcgPSBOTzsKKyAgICB9IGVsc2UgeworICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxv
d2VkRmlsZVR5cGVzOl9wYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOworICAgICAg
ICBfcGFyYW1ldGVycy5fYWxsb3dJbWFnZVRyYW5zY29kaW5nID0gWUVTOwogICAgIH0KIH0KIAog
LSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19hbGxvd2VkRmlsZUV4dGVuc2lvbnMgcmVsZWFzZV07
CisgICAgW19wYXJhbWV0ZXJzIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApA
QCAtNjI5LDUwICs2MjYsMjYgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJ1bgogICAgIH1dOwogfQogCi0tIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3
OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0
Kilwb3B1cFRhcmdldAorLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooRmls
ZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKIHsKLSAgICBOU1RleHRGaWVsZCog
bGFiZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBh
dXRvcmVsZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAg
IFtsYWJlbCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwot
ICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xv
cjpbTlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBO
U1BvcFVwQnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBh
ZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRh
cmdldF07Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwot
ICAgIFtidXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBd
OwotICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOworICAgIE5TQnV0dG9uICpj
aGVja2JveCA9IFtOU0J1dHRvbiBjaGVja2JveFdpdGhUaXRsZTpAIlNlbGVjdCBBbGwgRmlsZXMi
IHRhcmdldDpwb3B1cFRhcmdldCBhY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOworICAg
IFtjaGVja2JveCBzaXplVG9GaXRdOworICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpjaGVj
a2JveF07CiAgICAgCiAgICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbZmlsdGVyVmlldyBh
ZGRTdWJ2aWV3OmxhYmVsXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07Cisg
ICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpjaGVja2JveF07CiAKLSAgICBjb25zdCBDR0Zsb2F0
IG1hcmdpbiA9IDIwOwotICAgIGNvbnN0IENHRmxvYXQgc3BhY2luZyA9IDI7Ci0gICAgY29uc3Qg
Q0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKLQotICAgIE5TUmVjdCBsYWJlbEZyYW1lID0g
W2xhYmVsIGZyYW1lXTsKLSAgICBOU1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0dG9uIGZyYW1lXTsK
KyAgICBOU1JlY3QgY2hlY2tib3hGcmFtZSA9IFtjaGVja2JveCBmcmFtZV07CiAgICAgTlNSZWN0
IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKIAotICAgIC8vIFNldCBhIG1p
bmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VT
aXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChi
dXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJl
bCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMu
Ci0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFt
ZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZy
YW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOworICAgIC8vIEZpbHRl
clZpZXcgd2lsbCBsYXkgb3V0ICdjaGVja2JveCdob3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0
aWNhbCBtYXJnaW5zLgorICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMTA7CisgICAgZmlsdGVy
Vmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgoY2hlY2tib3hGcmFtZSksIE5TSGVp
Z2h0KGNoZWNrYm94RnJhbWUpICsgbWFyZ2luICogMik7CiAgICAgW2ZpbHRlclZpZXcgc2V0RnJh
bWU6ZmlsdGVyVmlld0ZyYW1lXTsKIAotICAgIC8vICdsYWJlbCcgd2lsbCBiZSBsYWlkIG91dCBj
ZW50ZXIgdmVydGljYWxseS4KLSAgICBsYWJlbEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5T
TWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChs
YWJlbEZyYW1lKSkgLyAyKTsKLSAgICBbbGFiZWwgc2V0RnJhbWU6bGFiZWxGcmFtZV07Ci0gICAg
Ci0gICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseSBhbmQg
aXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcgaG9yaXpvbnRhbGx5LgotICAgIGJ1dHRvbkZyYW1l
Lm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4WChsYWJlbEZyYW1lKSArIHNwYWNpbmcsIChOU0hl
aWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSAvIDIpOwotICAg
IFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJhbWVdOworICAgIC8vICdjaGVja2JveEZyYW1lJyB3
aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5LgorICAgIGNoZWNrYm94RnJhbWUub3Jp
Z2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGNoZWNrYm94RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVy
Vmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpKSAvIDIpOworICAgIFtjaGVja2Jv
eCBzZXRGcmFtZTpjaGVja2JveEZyYW1lXTsKIAogICAgIHJldHVybiBmaWx0ZXJWaWV3OwogfQpA
QCAtNjg4LDEwICs2NjEsOSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuCiAgICAgb3BlblBhbmVsLmFsbG93c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5h
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsKIAogICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdl
dCByZWxlYXNlXTsKLSAgICBfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCBhbGxvY10gaW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxv
d2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107Cisg
ICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJn
ZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgcGFyYW1ldGVyczogcGFyYW1l
dGVyc107CiAKLSAgICBOU0FycmF5ICphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgPSBwYXJh
bWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXM7Ci0gICAgTlNWaWV3ICpmaWx0ZXJW
aWV3ID0gW3NlbGYgY3JlYXRlRmlsdGVyVmlldzphbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMg
cG9wdXBUYXJnZXQ6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXRdOworICAgIE5TVmlldyAqZmls
dGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJn
ZXRdOwogICAgIGlmIChmaWx0ZXJWaWV3KQogICAgICAgICBbb3BlblBhbmVsIHNldEFjY2Vzc29y
eVZpZXc6ZmlsdGVyVmlld107CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403356</attachid>
            <date>2020-07-02 02:21:26 -0700</date>
            <delta_ts>2020-07-03 22:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200702022125.patch</filename>
            <type>text/plain</type>
            <size>36956</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA3LTAyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
VGhlIEZpbGUgUGlja2VyIG9mIHRoZSA8aW5wdXQ+IGZpbGUgZWxlbWVudCBzaG91bGQgYWxsb3cg
c2VsZWN0aW5nIGFsbCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVDaG9vc2VyU2V0dGluZ3MgdG8gYSBz
ZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgICog
cGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6bWltZVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kVW5pcXVl
U3RyaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRNSU1FVHlwZXNGb3JFeHRlbnNpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEV4dGVuc2lvbnNGb3JNSU1FVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwZW5kQWxsSW1hZ2VzRXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToK
KyAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYWxsb3dlZCBtaW1lIHR5cGVzIGZyb20g
dGhlICdhY2NlcHQnIGF0dHJpYnV0ZS4KKyAgICAgICAgSWYgdGhlIGZsYWcgJ2FsbG93SW1hZ2VU
cmFuc2NvZGluZycgaXMgdHJ1ZSwgYWxsIHRoZSBpbWFnZXMgbWltZSB0eXBlcyAKKyAgICAgICAg
d2lsbCBiZSBhZGRlZC4KKworICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6
YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBv
ZiB0aGUgYWxsb3dlZCBleHRlbnNpb25zIGZyb20gdGhlICdhY2NlcHQnIGF0dHJpYnV0ZS4KKyAg
ICAgICAgSWYgb25lIG9mIHRoZSBhbGxvd2VkIG1pbWUgdHlwZXMgaXMgc3VwcG9ydGVkIGZvciBl
bmNvZGluZywgYWxsIHRoZQorICAgICAgICBleHRlbnNpb25zIHdpbGwgYmUgYWRkZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IEFkZGVkLgorCiAyMDIwLTA3
LTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8g
aGFuZGxlIHdpbGRjYXJkIE1JTUUgdHlwZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNp
b24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtOTQ1LDYgKzk0NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9EcmFnSXRlbS5oCiAgICAgcGxhdGZvcm0vRXZlbnRUcmFja2luZ1Jl
Z2lvbnMuaAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKyAgICBwbGF0Zm9ybS9GaWxlQ2hv
b3NlclNldHRpbmdzLmgKICAgICBwbGF0Zm9ybS9GaWxlSGFuZGxlLmgKICAgICBwbGF0Zm9ybS9G
aWxlTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbUNsaWVudC5oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OTcsNiArMTc5Nyw3IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNw
cAogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMu
Y3BwCiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3Bw
CiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzODMyKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzQ0LDYgKzE3NDQsNyBAQAogCQk1NTZDN0M0QjIyMTIzOTk3MDA5QjA2Q0EgLyog
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTZDN0M0NzIyMTIzOTQyMDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgw
MENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTU4NDc2NUEyNDUzRjMzNDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNv
bHV0aW9uU2Vjb25kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1
OUI3NkQ3MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTlCNzZEMzI0QUQ4OEI3MDBG
OTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFn
ZUJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5M0Uy
NDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRB
NSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg3NTksNiArODc2MCw4IEBACiAJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJ
bWFnZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBD
IC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWR1Y2VkUmVz
b2x1dGlvblNlY29uZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0ZDQ0Iy
MDc2QzA2ODAwRDM1QkIwIC8qIEdseXBoRGlzcGxheUxpc3RDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTU5Qjc2RDIyNEFEODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9vc2Vy
U2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUNob29zZXJTZXR0aW5ncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1OUI3NkQzMjRBRDg4QjcwMEY5MjQyMyAv
KiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGlu
Z3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjYxRDgyMDlGNDAwMjJD
NEM3IC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
dGl2ZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY4MUQ4MjFF
M0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUFGMTRFMzFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVVRJUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjY0NTAsNiArMjY0NTMsOCBAQAogCQkJCTI2MkVDNDE5MUQwNzhGM0QwMEJBNzhGQyAvKiBF
dmVudFRyYWNraW5nUmVnaW9ucy5oICovLAogCQkJCTkzNEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAv
KiBGaWxlQ2hvb3Nlci5jcHAgKi8sCiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZp
bGVDaG9vc2VyLmggKi8sCisJCQkJNTU5Qjc2RDIyNEFEODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9v
c2VyU2V0dGluZ3MuY3BwICovLAorCQkJCTU1OUI3NkQzMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxl
Q2hvb3NlclNldHRpbmdzLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZp
bGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFu
ZGxlLmggKi8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNw
cCAqLywKQEAgLTMwNjgxLDYgKzMwNjg2LDcgQEAKIAkJCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4Rjg2REExRjUwOUU3NDAwRThDRkM1
IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIwQUI2MDNCNzAw
MjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCNzZENzI0QUQ5
MDM4MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTM1MUQ0QjExREY5MTZCNDAwODAxMENEIC8qIEZpbGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBODhBOTA1MTc1NTNDRDcwMDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCShy
ZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxOSArMjksMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTWVkaWFDYXB0dXJlVHlwZSB7Ci0gICAg
TWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgTWVkaWFDYXB0dXJlVHlwZVVzZXIsCi0gICAgTWVk
aWFDYXB0dXJlVHlwZUVudmlyb25tZW50Ci19OwotCiBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNz
IEljb247CiAKQEAgLTU2LDE3ICs0OSw2IEBAIHN0cnVjdCBGaWxlQ2hvb3NlckZpbGVJbmZvIHsK
ICAgICBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWU7CiB9OwogCi1zdHJ1Y3QgRmlsZUNob29zZXJT
ZXR0aW5ncyB7Ci0gICAgYm9vbCBhbGxvd3NEaXJlY3RvcmllcyB7IGZhbHNlIH07Ci0gICAgYm9v
bCBhbGxvd3NNdWx0aXBsZUZpbGVzIHsgZmFsc2UgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2Nl
cHRNSU1FVHlwZXM7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0RmlsZUV4dGVuc2lvbnM7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRGaWxlczsKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVS
RSkKLSAgICBNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUgeyBNZWRpYUNhcHR1cmVU
eXBlTm9uZSB9OwotI2VuZGlmCi19OwotCiBjbGFzcyBGaWxlQ2hvb3NlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RmlsZUNob29zZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC0xMDIs
MTYgKzg0LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVk
aWFDYXB0dXJlVHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAg
IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVy
ZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1
cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0
dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50Ci0gICAgPjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJT
ZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXJTZXR0aW5ncy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKworI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
U3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQorewor
ICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgo
KSAtIDEpIDogZXh0ZW5zaW9uKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kVW5pcXVlU3RyaW5n
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncywgVmVjdG9yPFN0cmluZz4mIGFsbFN0cmlu
Z3MpCit7CisgICAgZm9yIChhdXRvJiBzdHJpbmcgOiBzdHJpbmdzKQorICAgICAgICBhbGxTdHJp
bmdzLmFwcGVuZElmTm90Q29udGFpbnMoc3RyaW5nKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5k
TUlNRVR5cGVzRm9yRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucywg
VmVjdG9yPFN0cmluZz4mIGFsbE1JTUVUeXBlcykKK3sKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lv
biA6IGV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IG1pbWVUeXBlRm9yRXh0
ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcvJykp
OworICAgICAgICBhbGxNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBlbmRFeHRlbnNpb25zRm9yTUlNRVR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIFZlY3RvcjxTdHJpbmc+JiBhbGxFeHRlbnNpb25z
KQoreworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMpIHsKKyAgICAgICAgQVNT
RVJUKG1pbWVUeXBlLmNvbnRhaW5zKCcvJykpOworICAgICAgICBhcHBlbmRVbmlxdWVTdHJpbmdz
KE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSksIGFs
bEV4dGVuc2lvbnMpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgc2hvdWxkQXBwZW5kQWxsSW1h
Z2VzRXh0ZW5zaW9ucyhWZWN0b3I8U3RyaW5nPiYgYWxsRXh0ZW5zaW9ucykKK3sKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGFsbEV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlw
ZSA9IG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIGlmIChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzKCkg
Y29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAgYXBw
ZW5kVW5pcXVlU3RyaW5ncyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMsIGFsbG93ZWRNSU1FVHlwZXMp
OworICAgIGFwcGVuZE1JTUVUeXBlc0ZvckV4dGVuc2lvbnModGhpcy0+YWNjZXB0RmlsZUV4dGVu
c2lvbnMsIGFsbG93ZWRNSU1FVHlwZXMpOworCisgICAgaWYgKCF0aGlzLT5hbGxvd3NJbWFnZVRy
YW5zY29kaW5nKSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgiaW1hZ2UvKiJfcyk7CisgICAgICAgIGFwcGVuZE1J
TUVUeXBlc0ZvckV4dGVuc2lvbnMoZXh0ZW5zaW9ucywgYWxsb3dlZE1JTUVUeXBlcyk7CisgICAg
fQorCisgICAgcmV0dXJuIGFsbG93ZWRNSU1FVHlwZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEZp
bGVDaG9vc2VyU2V0dGluZ3M6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAg
VmVjdG9yPFN0cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworCisgICAgYXBwZW5kRXh0ZW5z
aW9uc0Zvck1JTUVUeXBlcyh0aGlzLT5hY2NlcHRNSU1FVHlwZXMsIGFsbG93ZWRGaWxlRXh0ZW5z
aW9ucyk7CisgICAgYXBwZW5kVW5pcXVlU3RyaW5ncyh0aGlzLT5hY2NlcHRGaWxlRXh0ZW5zaW9u
cywgYWxsb3dlZEZpbGVFeHRlbnNpb25zKTsKKworICAgIGlmIChzaG91bGRBcHBlbmRBbGxJbWFn
ZXNFeHRlbnNpb25zKGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykpIHsKKyAgICAgICAgYXV0byBleHRl
bnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCJpbWFn
ZS8qIl9zKTsKKyAgICAgICAgYXBwZW5kVW5pcXVlU3RyaW5ncyhleHRlbnNpb25zLCBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMpOworICAgIH0KKworICAgIHJldHVybiBhbGxvd2VkRmlsZUV4dGVuc2lv
bnM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0
dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
clNldHRpbmdzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBNZWRpYUNhcHR1cmVUeXBlIHsKKyAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAg
ICBNZWRpYUNhcHR1cmVUeXBlVXNlciwKKyAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQK
K307CisKK3N0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKKyAgICBib29sIGFsbG93c0RpcmVj
dG9yaWVzIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9
OworICAgIGJvb2wgYWxsb3dzSW1hZ2VUcmFuc2NvZGluZyB7IGZhbHNlIH07CisgICAgVmVjdG9y
PFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVF
eHRlbnNpb25zOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1F
VHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVz
OworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFD
YXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAg
ICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKKyAg
ICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25t
ZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMjAtMDctMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhl
IDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdLT3Bl
blBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGFuZCBhbGxvd2Vk
TUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29zZXJTZXR0aW5ncyB2aWEgT3BlblBhbmVs
UGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRlIHdpbGwgZ2V0IGFsbG93ZWRNSU1FVHlw
ZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5CisgICAg
ICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdlUHJveHkuIEluIGEgZm9sbG93aW5nIHBh
dGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1c2UgYWxsb3dlZE1JTUVUeXBlcyB0byB0
cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZvcmUgc2VuZGluZworICAgICAgICB0aGVt
IHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlN
RVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVy
czo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnM6OmFsbG93SW1hZ2VUcmFuc2NvZGluZyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9w
ZW5QYW5lbFBhcmFtZXRlcnM6OnNldEFsbG93SW1hZ2VUcmFuc2NvZGluZyk6CisgICAgICAgIChB
UEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAg
ICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93SW1hZ2VUcmFuc2NvZGluZ10pOgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX3NldEFsbG93SW1hZ2VUcmFuc2NvZGluZzpd
KToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lv
bnNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVu
c2lvbnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1
bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIw
MjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKSBuZWVk
cyB0byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBlcwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQs
MTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaAogfQogI2VuZGlm
CiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoZmlsZW5hbWVzKTsKKyAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVs
KGZpbGVuYW1lcywgYWxsb3dlZE1JTUVUeXBlcyk7CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29u
c3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsKICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgdm9pZCBjaG9vc2VGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjkwLDcgKzY2OTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3Qg
QVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5Q
YW5lbCgpOwogCiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRl
cnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYz
ODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+
IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjYwogICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVT
dHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKTsKIH0KIAotI2lmIEVO
QUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBPcGVuUGFuZWxQ
YXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKK1JlZjxBUEk6OkFycmF5PiBPcGVu
UGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRNSU1FVHlwZXMoKSk7Cit9CisKK1JlZjxB
UEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBj
b25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRp
bmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KLSNlbmRpZgogCiBSZWY8QVBJOjpBcnJh
eT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdAogewpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAs
MTUgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd0RpcmVjdG9yaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5hbGxvd3NEaXJlY3RvcmllczsgfQogICAgIGJvb2wgYWxsb3dNdWx0aXBs
ZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOyB9
CisgICAgYm9vbCBhbGxvd0ltYWdlVHJhbnNjb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3NldHRp
bmdzLmFsbG93c0ltYWdlVHJhbnNjb2Rpbmc7IH0KKyAgICB2b2lkIHNldEFsbG93SW1hZ2VUcmFu
c2NvZGluZyhib29sIGZsYWcpIHsgbV9zZXR0aW5ncy5hbGxvd3NJbWFnZVRyYW5zY29kaW5nID0g
ZmxhZzsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRNSU1FVHlwZXMoKSBjb25zdDsKICAg
ICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0RmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBSZWY8
QVBJOjpBcnJheT4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0OworICAgIFJlZjxBUEk6OkFycmF5
PiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gc2Vs
ZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBX
ZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdDsKKyAgICBX
ZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3NldHRpbmdzLm1lZGlhQ2FwdHVyZVR5cGU7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLm1tCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCwxNiBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogCiBAaW1w
bGVtZW50YXRpb24gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIChXS1ByaXZhdGUpCiAKKy0gKEJPT0wp
X2FsbG93SW1hZ2VUcmFuc2NvZGluZworeworICAgIHJldHVybiBfb3BlblBhbmVsUGFyYW1ldGVy
cy0+YWxsb3dJbWFnZVRyYW5zY29kaW5nKCk7Cit9CisKKy0gKHZvaWQpX3NldEFsbG93SW1hZ2VU
cmFuc2NvZGluZzooQk9PTClmbGFnCit7CisgICAgX29wZW5QYW5lbFBhcmFtZXRlcnMtPnNldEFs
bG93SW1hZ2VUcmFuc2NvZGluZyhmbGFnKTsKK30KKwogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAq
KV9hY2NlcHRlZE1JTUVUeXBlcwogewogICAgIHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJh
bWV0ZXJzLT5hY2NlcHRNSU1FVHlwZXMoKSk7CkBAIC02Niw1OSArNzYsNyBAQCAtIChOU0FycmF5
PE5TU3RyaW5nICo+ICopX2FjY2VwdGVkRmlsZUV4CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilfYWxsb3dlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgLy8gQWdncmVnYXRlIGV4dGVuc2lvbnMg
YmFzZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCi0gICAgYXV0byBhY2NlcHRlZE1JTUVUeXBl
cyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBhY2NlcHRlZEZpbGVFeHRl
bnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgYXV0byBhbGxv
d2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7
Ci0KLSAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihO
U1N0cmluZyAqbWltZVR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsKLSAgICAg
ICAgQVNTRVJUKFttaW1lVHlwZSBjb250YWluc1N0cmluZzpAIi8iXSk7Ci0gICAgICAgIGF1dG8g
ZXh0ZW5zaW9ucyA9IEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSkpOwotICAgICAg
ICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6d3JhcHBlcihleHRl
bnNpb25zKV07Ci0gICAgfV07Ci0KLSAgICBhdXRvIGFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVu
c2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIFth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJp
bmcgKmV4dGVuc2lvbiwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqc3RvcCkgewotICAgICAgICBB
U1NFUlQoW2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcuJyk7Ci0gICAgICAgIFth
ZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdDpbZXh0ZW5zaW9uIHN1YnN0
cmluZ0Zyb21JbmRleDoxXV07Ci0gICAgfV07Ci0gICAgCi0gICAgW2FsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMu
Z2V0KCldOwotICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbE9iamVjdHNdOwot
fQotCi0tIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxl
cwotewotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlw
ZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zXTsKLQotICAgIGNvbnN0ZXhwciBhdXRvIEFsbEZpbGVzVGl0bGUgPSBAIkFs
bCBGaWxlcyI7Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9tRmlsZXNUaXRsZSA9IEAiQ3VzdG9t
IEZpbGVzIjsKLSAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmlsZXNU
aXRsZV07Ci0KLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVth
Y2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZp
bGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgYXV0byBtaW1lVHlwZSA9IFthY2NlcHRl
ZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5nZSA9IFttaW1lVHlwZSByYW5n
ZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAgICAKLSAgICBhdXRv
IG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRp
b25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUlu
ZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBp
c0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nVG9JbmRl
eDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nRnJvbUluZGV4
OjFdXSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0g
PD0gNCkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAl
QCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVByZWZpeF0sIEFs
bEZpbGVzVGl0bGVdOwotCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVd
OworICAgIHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkRmlsZUV4
dGVuc2lvbnMoKSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZh
dGUuaAkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsOCBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJh
eTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
QXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZHdyaXRlLCBzZXR0ZXI9X3NldEFsbG93SW1hZ2VUcmFuc2NvZGluZzopIEJPT0wgX2FsbG93
SW1hZ2VUcmFuc2NvZGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAog
QGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0JKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJBUElBcnJheS5oIgog
I2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAj
aW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCkBAIC04MjYsNyArODI3LDcg
QEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKAogCiAgICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdl
dCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVy
KCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciks
IGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsK
KyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5
RnJhbWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKSwgb3BlblBhbmVsUGFyYW1ldGVycyA9IG1ha2VSZWYoKm9w
ZW5QYW5lbFBhcmFtZXRlcnMpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJh
eSAqVVJMcykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NDAsNyArODQxLDcgQEAgYm9vbCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKAogICAgICAgICBmb3IgKE5TVVJMICp1cmwg
aW4gVVJMcykKICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJsLnBhdGgpOwogCi0gICAg
ICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBsaXN0ZW5lci0+
Y2hvb3NlRmlsZXMoZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkTUlNRVR5
cGVzKCktPnRvU3RyaW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsKIAogICAgIHJldHVybiB0
cnVlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYzODM3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMjAtMDctMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBUaGUgRmlsZSBQaWNrZXIgb2YgdGhl
IDxpbnB1dD4gZmlsZSBlbGVtZW50IHNob3VsZCBhbGxvdyBzZWxlY3RpbmcgYWxsIGZpbGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgT3BlblBh
bmVsIG9mIHRoZSBNaW5pQnJvd3NlciB3aWxsIGluY2x1ZGUgYSBjaGVja2JveCB3aXRoIHRoZSB0
aXRsZQorICAgICAgICAiU2VsZWN0IEFsbCBGaWxlcyIuIENoYW5naW5nIHRoZSBzdGF0ZSBvZiB0
aGlzIGNoZWNrYm94IHdpbGwgc2V0IHRoZQorICAgICAgICBhbGxvd0ltYWdlVHJhbnNjb2Rpbmcg
bWVtYmVyIG9mIEZpbGVDaG9vc2VyU2V0dGluZ3MgdmlhIFdLT3BlblBhbmVsUGFyYW1ldGVycwor
ICAgICAgICBhbmQgT3BlblBhbmVsUGFyYW1ldGVycy4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtTZWxlY3RBbGxG
aWxlc1RhcmdldCBpbml0V2l0aE9wZW5QYW5lbDpwYXJhbWV0ZXJzOl0pOgorICAgICAgICAoLVtT
ZWxlY3RBbGxGaWxlc1RhcmdldCBzZWxlY3RBY3Rpb246XSk6CisgICAgICAgICgtW1NlbGVjdEFs
bEZpbGVzVGFyZ2V0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBj
cmVhdGVGaWx0ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFs
bG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNy
ZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDctMDEgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBX
ZWJLaXQgYnVpbGQgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVtLzY0Mjg4MTkxPgpJbmRleDogVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJl
dmlzaW9uIDI2MzgzMikKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw0MCArNzIsMzcgQEAgLSAodm9pZClw
ZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3RpbwogCiBAZW5kCiAKLS8vIFRhcmdldCBmb3Ig
dGhlIEZpbGVFeHRlbnNpb25zIE5TUG9wdXBCdXR0b24gaW4gdGhlIE9wZW5QYW5lbCdzIEFjY2Vz
c29yeVZpZXcuCi1AaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVj
dCB7CisvLyBUYXJnZXQgZm9yIHRoZSAnU2VsZWN0IEFsbCBGaWxlcycgY2hlY2tib3ggaW4gdGhl
IE9wZW5QYW5lbCdzIEFjY2Vzc29yeVZpZXcuCitAaW50ZXJmYWNlIFNlbGVjdEFsbEZpbGVzVGFy
Z2V0IDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBOU09wZW5QYW5lbCAqX29wZW5QYW5lbDsK
LSAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zOworICAgIFdL
T3BlblBhbmVsUGFyYW1ldGVycyAqX3BhcmFtZXRlcnM7CiB9CiBAZW5kCiAKLUBpbXBsZW1lbnRh
dGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0CitAaW1wbGVtZW50YXRpb24gU2VsZWN0QWxs
RmlsZXNUYXJnZXQKIAotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVu
UGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIHsKKy0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCop
b3BlblBhbmVsIHBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMg
ewogICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0XSkpIHsKICAgICAgICAgX29wZW5QYW5lbCA9
IG9wZW5QYW5lbDsKLSAgICAgICAgX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IFthbGxvd2VkRmls
ZUV4dGVuc2lvbnMgY29weV07CisgICAgICAgIF9wYXJhbWV0ZXJzID0gW3BhcmFtZXRlcnMgcmV0
YWluXTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpcG9wdXBBY3Rpb246
KGlkKXNlbmRlciB7Ci0gICAgLy8gTGFzdCBpdGVtLgotICAgIGlmIChbc2VuZGVyIGluZGV4T2ZT
ZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIgbnVtYmVyT2ZJdGVtc10gLSAxKQorLSAodm9pZClzZWxl
Y3RBY3Rpb246KE5TQnV0dG9uICopc2VuZGVyIHsKKyAgICBpZiAoc2VuZGVyLnN0YXRlID09IE5T
Q29udHJvbFN0YXRlVmFsdWVPbikgewogICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmls
ZVR5cGVzOm5pbF07Ci0gICAgZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0p
IHsKLSAgICAgICAgLy8gRmlyc3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0
ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5
cGVzOkBbQCIiXV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFs
bG93ZWRGaWxlVHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgICAgIF9wYXJhbWV0
ZXJzLl9hbGxvd0ltYWdlVHJhbnNjb2RpbmcgPSBOTzsKKyAgICB9IGVsc2UgeworICAgICAgICBb
X29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOl9wYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4
dGVuc2lvbnNdOworICAgICAgICBfcGFyYW1ldGVycy5fYWxsb3dJbWFnZVRyYW5zY29kaW5nID0g
WUVTOwogICAgIH0KIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW19hbGxvd2VkRmlsZUV4
dGVuc2lvbnMgcmVsZWFzZV07CisgICAgW19wYXJhbWV0ZXJzIHJlbGVhc2VdOwogICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KIApAQCAtMTI1LDcgKzEyMiw3IEBAIEBpbnRlcmZhY2UgV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgKCkKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRG
aW5kZXI7CiAgICAgTlNWaWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJW
aXNpYmxlOwotICAgIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0OworICAgIFNlbGVjdEFsbEZpbGVzVGFyZ2V0ICpfc2VsZWN0QWxsRmlsZXNUYXJn
ZXQ7CiB9CiAKIC0gKHZvaWQpYXdha2VGcm9tTmliCkBAIC0yMTEsNyArMjA4LDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAKICAgICBbX3dlYlZpZXcgcmVsZWFzZV07CiAgICAgW19jb25maWd1cmF0aW9u
IHJlbGVhc2VdOwotICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKKyAg
ICBbX3NlbGVjdEFsbEZpbGVzVGFyZ2V0IHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQpAQCAtNjI5LDUwICs2MjYsMjYgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJ1bgogICAgIH1dOwogfQogCi0tIChudWxsYWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0
ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFyZ2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0Kilwb3B1cFRhcmdldAorLSAobnVsbGFibGUgTlNWaWV3ICopY3JlYXRlRmlsdGVyVmll
dzooU2VsZWN0QWxsRmlsZXNUYXJnZXQqKXNlbGVjdEFsbEZpbGVzVGFyZ2V0CiB7Ci0gICAgTlNU
ZXh0RmllbGQqIGxhYmVsID0gW1tbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtsYWJlbCBzZXRTdHJpbmdWYWx1ZTpAIkZvcm1h
dDoiXTsKLSAgICBbbGFiZWwgc2V0RWRpdGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRTZWxlY3Rh
YmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFtsYWJlbCBzZXRCYWNr
Z3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtsYWJlbCBzaXplVG9GaXRd
OwotCi0gICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW1tbTlNQb3BVcEJ1dHRvbiBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IHB1bGxzRG93bjpOT10gYXV0b3JlbGVhc2VdOwotICAg
IFtidXR0b24gYWRkSXRlbXNXaXRoVGl0bGVzOnRpdGxlc107Ci0gICAgW2J1dHRvbiBzZXRUYXJn
ZXQ6cG9wdXBUYXJnZXRdOwotICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFj
dGlvbjopXTsKLSAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVt
QXRJbmRleDowXTsKLSAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246YnV0dG9uXTsKKyAgICBO
U0J1dHRvbiAqY2hlY2tib3ggPSBbTlNCdXR0b24gY2hlY2tib3hXaXRoVGl0bGU6QCJTZWxlY3Qg
QWxsIEZpbGVzIiB0YXJnZXQ6c2VsZWN0QWxsRmlsZXNUYXJnZXQgYWN0aW9uOkBzZWxlY3Rvcihz
ZWxlY3RBY3Rpb246KV07CisgICAgW2NoZWNrYm94IHNpemVUb0ZpdF07CisgICAgW3NlbGVjdEFs
bEZpbGVzVGFyZ2V0IHNlbGVjdEFjdGlvbjpjaGVja2JveF07CiAgICAgCiAgICAgTlNWaWV3KiBm
aWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdIGF1
dG9yZWxlYXNlXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVsXTsKLSAgICBbZmls
dGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07CisgICAgW2ZpbHRlclZpZXcgYWRkU3Vidmlldzpj
aGVja2JveF07CiAKLSAgICBjb25zdCBDR0Zsb2F0IG1hcmdpbiA9IDIwOwotICAgIGNvbnN0IENH
RmxvYXQgc3BhY2luZyA9IDI7Ci0gICAgY29uc3QgQ0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIz
MDsKLQotICAgIE5TUmVjdCBsYWJlbEZyYW1lID0gW2xhYmVsIGZyYW1lXTsKLSAgICBOU1JlY3Qg
YnV0dG9uRnJhbWUgPSBbYnV0dG9uIGZyYW1lXTsKKyAgICBOU1JlY3QgY2hlY2tib3hGcmFtZSA9
IFtjaGVja2JveCBmcmFtZV07CiAgICAgTlNSZWN0IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJW
aWV3IGZyYW1lXTsKIAotICAgIC8vIFNldCBhIG1pbmltdW0gd2lkdGggZm9yICdidXR0b24nLgot
ICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VTaXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1l
KSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChidXR0b25GcmFtZSkpOwotICAgIAotICAgIC8v
IEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJlbCcgYW5kICdidXR0b24nIGhvcml6b250YWxs
eSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMuCi0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUg
PSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFtZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSAr
IHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZyYW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUp
KSArIG1hcmdpbiAqIDIpOworICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdjaGVja2Jv
eCdob3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgorICAgIGNvbnN0IENH
RmxvYXQgbWFyZ2luID0gMTA7CisgICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXpl
KE5TV2lkdGgoY2hlY2tib3hGcmFtZSksIE5TSGVpZ2h0KGNoZWNrYm94RnJhbWUpICsgbWFyZ2lu
ICogMik7CiAgICAgW2ZpbHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0ZyYW1lXTsKIAotICAg
IC8vICdsYWJlbCcgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KLSAgICBsYWJl
bEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0
KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAyKTsKLSAgICBbbGFi
ZWwgc2V0RnJhbWU6bGFiZWxGcmFtZV07Ci0gICAgCi0gICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBs
YWlkIG91dCBjZW50ZXIgdmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcg
aG9yaXpvbnRhbGx5LgotICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4
WChsYWJlbEZyYW1lKSArIHNwYWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNI
ZWlnaHQoYnV0dG9uRnJhbWUpKSAvIDIpOwotICAgIFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJh
bWVdOworICAgIC8vICdjaGVja2JveEZyYW1lJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0
aWNhbGx5LgorICAgIGNoZWNrYm94RnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGNo
ZWNrYm94RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGNoZWNr
Ym94RnJhbWUpKSAvIDIpOworICAgIFtjaGVja2JveCBzZXRGcmFtZTpjaGVja2JveEZyYW1lXTsK
IAogICAgIHJldHVybiBmaWx0ZXJWaWV3OwogfQpAQCAtNjg3LDExICs2NjAsMTAgQEAgLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bgogCiAgICAgb3BlblBhbmVsLmFsbG93
c011bHRpcGxlU2VsZWN0aW9uID0gcGFyYW1ldGVycy5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjsK
IAotICAgIFtfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCByZWxlYXNlXTsKLSAgICBfZmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCA9IFtbRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBhbGxvY10g
aW5pdFdpdGhPcGVuUGFuZWw6IG9wZW5QYW5lbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnM6IHBhcmFt
ZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107CisgICAgW19zZWxlY3RBbGxGaWxlc1Rhcmdl
dCByZWxlYXNlXTsKKyAgICBfc2VsZWN0QWxsRmlsZXNUYXJnZXQgPSBbW1NlbGVjdEFsbEZpbGVz
VGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIHBhcmFtZXRlcnM6IHBh
cmFtZXRlcnNdOwogCi0gICAgTlNBcnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0g
cGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzOwotICAgIE5TVmlldyAqZmls
dGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKKyAgICBOU1ZpZXcg
KmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3Ol9zZWxlY3RBbGxGaWxlc1Rhcmdl
dF07CiAgICAgaWYgKGZpbHRlclZpZXcpCiAgICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5
VmlldzpmaWx0ZXJWaWV3XTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403508</attachid>
            <date>2020-07-03 22:03:57 -0700</date>
            <delta_ts>2020-07-03 22:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200703220356.patch</filename>
            <type>text/plain</type>
            <size>34612</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA3LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
QWxsb3cgc2VsZWN0aW5nIEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUgaW5j
bHVkZXMgYSBzdXBwb3J0ZWQgZm9yIGVuY29kaW5nIG1pbWUgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVD
aG9vc2VyU2V0dGluZ3MgdG8gYSBzZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVD
aG9vc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6dHJpbW1lZEV4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBcHBlbmROb3RBY2NlcHRlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAg
IEl0IHJldHVybnMgdGhlIHNldCBvZiBtaW1lIHR5cGVzIHdoaWNoIGlzIHN0YXRlZCBpbiB0aGUg
YWNjZXB0IGF0dHJpYnV0ZQorICAgICAgICBvZiB0aGUgPGlucHV0PiBlbGVtZW50LgorCisgICAg
ICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMg
Y29uc3QpOgorICAgICAgICBJdCByZXR1cm5zIHRoZSBzZXQgb2YgZXh0ZW5zaW9ucyB3aGljaCBp
cyBzdGF0ZWQgaW4gdGhlIGFjY2VwdCBhdHRyaWJ1dGUKKyAgICAgICAgb2YgdGhlIDxpbnB1dD4g
ZWxlbWVudC4gVGhlIGV4dGVuc2lvbnMgb2YgdGhlIEhFSUYvSEVJQyB3aWxsIGJlIGluY2x1ZGVk
CisgICAgICAgIGFzIHdlbGwgaWYgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGUgYSBtaW1lIHR5
cGUgd2hpY2ggaXMgc3VwcG9ydGVkIGZvcgorICAgICAgICBlbmNvZGluZy4KKworICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaDogQWRkZWQuCisKIDIwMjAtMDctMDMgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFu
Z2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVnaXN0cnkgbWV0aG9kcyB0byBjb21wbHkgd2l0aCB3
ZWJraXQgbmFtaW5nIHN0eWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2Mzg5
MCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk0
NSw2ICs5NDUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vRHJhZ0l0ZW0uaAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmgK
ICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCisgICAgcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0
aW5ncy5oCiAgICAgcGxhdGZvcm0vRmlsZUhhbmRsZS5oCiAgICAgcGxhdGZvcm0vRmlsZU1vbml0
b3IuaAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW1DbGllbnQuaApJbmRleDogU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHJldmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNzk3LDYgKzE3OTcsNyBAQCBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKIHBsYXRm
b3JtL0RyYWdJbWFnZS5jcHAKIHBsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmNwcAogcGxh
dGZvcm0vRmlsZUNob29zZXIuY3BwCitwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAog
cGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTc0NSw2ICsxNzQ1LDcgQEAKIAkJNTU2QzdDNEIyMjEyMzk5NzAwOUIwNkNBIC8qIFJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU2QzdDNDcyMjEyMzk0MjAwOUIwNkNBIC8qIFJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMg
LyogSW1hZ2VGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU1ODQ3NjVBMjQ1M0YzMzQwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
ODQ3NjU4MjQ1M0FCQzIwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTlCNzZENzI0
QUQ5MDM4MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5Qjc2RDMyNEFEODhCNzAwRjkyNDIzIC8q
IEZpbGVDaG9vc2VyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NUEzMzZGOTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QUQwOTNFMjQwODk2MzUw
MERFNEQyRiAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04
NzYzLDYgKzg3NjQsOCBAQAogCQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1ODQ3NjU4MjQ1M0FCQzIwMDlGNTUwQyAvKiBSZWR1
Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGQ0NCMjA3NkMwNjgw
MEQzNUJCMCAvKiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU1OUI3NkQyMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNo
b29zZXJTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlQ2hvb3NlclNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBO
YXRpdmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGODFEODIxRTNDMDAyMkM0
QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVB
RjE0RTMxRUFBQzU5QjAwMjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVUSVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDU3
LDYgKzI2NDYwLDggQEAKIAkJCQkyNjJFQzQxOTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFj
a2luZ1JlZ2lvbnMuaCAqLywKIAkJCQk5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNo
b29zZXIuY3BwICovLAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nl
ci5oICovLAorCQkJCTU1OUI3NkQyMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRp
bmdzLmNwcCAqLywKKwkJCQk1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNob29zZXJT
ZXR0aW5ncy5oICovLAogCQkJCTUzNTFENEFFMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxl
LmNwcCAqLywKIAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oICov
LAogCQkJCTdBMDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCkBA
IC0zMDY4OCw2ICszMDY5Myw3IEBACiAJCQkJOTc2RDZDODExMjJCOEEzRDAwMUZEMUY3IC8qIEZp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOEY4NkRBMUY1MDlFNzQwMEU4Q0ZDNSAvKiBGaWxl
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA2NkM3NzJCMEFCNjAzQjcwMDIzOENDNCAv
KiBGaWxlQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU5Qjc2RDcyNEFEOTAzODAwRjky
NDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNTFENEIx
MURGOTE2QjQwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg4
QTkwNTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzREJFMTI1MUYxMkQwMDNFRjI2OSAvKiBGaWxlSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM0NDQyLDYgKzM0NDQ4LDcgQEAKIAkJCQk1MTVCRTE4RjFENTRGNUZCMDBERDdD
NjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1
NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdhbWVDb250cm9s
bGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRENjE2MDBGQTVD
MkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThGNEZGNjE5NENBNEU2MDA4
MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTZDNjIyMDE5
NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzQ5
MjIsNyArMzQ5MjksNiBAQAogCQkJCURFNUY4NDMyMUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVk
U291cmNlMzI5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDMzMUZBMTg2RTkwMDZEQjYz
QSAvKiBVbmlmaWVkU291cmNlMzMwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDM0MUZB
MTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzMxLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTUxMzBGMkY2MjRBRUE2MEEwMEUxRDBBMCAvKiBHYW1lQ29udHJvbGxlclNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0MzUxRkExODZFOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3Vy
Y2UzMzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0MzYxRkExODZFOTAwNkRCNjNBIC8q
IFVuaWZpZWRTb3VyY2UzMzMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0MzcxRkExODZF
OTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMzQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgJKHJldmlzaW9uIDI2Mzg5MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE5ICsyOSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CisjaW5jbHVkZSAiRmlsZUNob29zZXJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZW51bSBNZWRpYUNhcHR1cmVUeXBlIHsKLSAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwK
LSAgICBNZWRpYUNhcHR1cmVUeXBlVXNlciwKLSAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1l
bnQKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xhc3MgSWNvbjsKIApAQCAtNTYsMTcgKzQ5
LDYgQEAgc3RydWN0IEZpbGVDaG9vc2VyRmlsZUluZm8gewogICAgIGNvbnN0IFN0cmluZyBkaXNw
bGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzIHsKLSAgICBib29sIGFs
bG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMg
eyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKLSAgICBWZWN0
b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5zaW9uczsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWxl
Y3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5
cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07
Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxl
Q2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTEwMiwxNiArODQsMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlPiB7Ci0gICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJl
VHlwZSwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlw
ZU5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5
cGVVc2VyLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVU
eXBlRW52aXJvbm1lbnQKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBTdHJpbmcgdHJpbW1lZEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICByZXR1cm4gZXh0ZW5zaW9u
LnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lvbi5yaWdodChleHRlbnNpb24ubGVuZ3RoKCkgLSAx
KSA6IGV4dGVuc2lvbjsKK30KKworc3RhdGljIGlubGluZSBib29sIHNob3VsZEFwcGVuZE5vdEFj
Y2VwdGVkRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykK
K3sKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlcy5maW5kTWF0Y2hpbmcoW10oY29uc3QgYXV0
byYgbWltZVR5cGUpIHsKKyAgICAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKTsKKyAgICB9KSAhPSBub3RGb3Vu
ZDsKK30KKworVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZE1JTUVU
eXBlcygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dlZE1JTUVUeXBlczsKKwor
ICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiB0aGlzLT5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAg
IGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisKKyAgICBm
b3IgKGF1dG8mIGV4dGVuc2lvbiA6IHRoaXMtPmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAg
ICAgIGF1dG8gbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lv
bih0cmltbWVkRXh0ZW5zaW9uKGV4dGVuc2lvbikpOworICAgICAgICBpZiAobWltZVR5cGUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMu
YXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbG93
ZWRNSU1FVHlwZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFs
bG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0
TUlNRVR5cGVzID0gdGhpcy0+YWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFs
bG93ZWRGaWxlRXh0ZW5zaW9uczsKKworICAgIGlmIChzaG91bGRBcHBlbmROb3RBY2NlcHRlZEV4
dGVuc2lvbnMoYWxsb3dlZE1JTUVUeXBlcygpKSkKKyAgICAgICAgYWNjZXB0TUlNRVR5cGVzLmFw
cGVuZFZlY3RvcihWZWN0b3I8U3RyaW5nPih7ICJpbWFnZS9oZWlmIiwgImltYWdlL2hlaWMiIH0p
KTsKKworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBhY2NlcHRNSU1FVHlwZXMpIHsKKyAgICAg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9y
TUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICAgICAgYWxsb3dlZEZpbGVFeHRlbnNpb25zLmFw
cGVuZElmTm90Q29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICB9CisgICAgCisgICAgZm9yIChhdXRv
JiBleHRlbnNpb24gOiB0aGlzLT5hY2NlcHRGaWxlRXh0ZW5zaW9ucykKKyAgICAgICAgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zLmFwcGVuZElmTm90Q29udGFpbnModHJpbW1lZEV4dGVuc2lvbihleHRl
bnNpb24pKTsKKworICAgIHJldHVybiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBNZWRpYUNh
cHR1cmVUeXBlIHsKKyAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAgICBNZWRpYUNhcHR1cmVU
eXBlVXNlciwKKyAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKK307CisKK3N0cnVjdCBG
aWxlQ2hvb3NlclNldHRpbmdzIHsKKyAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFsc2Ug
fTsKKyAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OworICAgIFZlY3RvcjxT
dHJpbmc+IGFjY2VwdE1JTUVUeXBlczsKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0
ZW5zaW9uczsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5
cGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsb3dlZEZp
bGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRGaWxlczsK
KyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2Fw
dHVyZVR5cGUgeyBNZWRpYUNhcHR1cmVUeXBlTm9uZSB9OworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlLAorICAgICAg
ICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVzZXIsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVu
dAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjM4OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM4IEBACisyMDIwLTA3LTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTogQWxsb3cgc2VsZWN0aW5nIEhFSUYgaW1h
Z2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUgaW5jbHVkZXMgYSBzdXBwb3J0ZWQgZm9yIGVu
Y29kaW5nIG1pbWUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBXS09wZW5QYW5lbFBhcmFtZXRlcnMgY2FsbCBhbGxvd2VkRmlsZUV4dGVu
c2lvbnMoKSBhbmQgYWxsb3dlZE1JTUVUeXBlcygpCisgICAgICAgIG9mIEZpbGVDaG9vc2VyU2V0
dGluZ3MgdmlhIE9wZW5QYW5lbFBhcmFtZXRlcnMuCisKKyAgICAgICAgVUlEZWxlZ2F0ZSB3aWxs
IGdldCBhbGxvd2VkTUlNRVR5cGVzKCkgYW5kIHBhc3MgaXQgdG8gV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eQorICAgICAgICB3aGljaCB3aWxsIHBhc3MgaXQgdG8gV2ViUGFnZVByb3h5
LiBJbiBhIGZvbGxvd2luZyBwYXRjaCwgV2ViUGFnZVByb3h5CisgICAgICAgIHdpbGwgdXNlIGFs
bG93ZWRNSU1FVHlwZXMgdG8gdHJhbnNjb2RlIHRoZSBzZWxlY3RlZCBpbWFnZXMgYmVmb3JlIHNl
bmRpbmcKKyAgICAgICAgdGhlbSB0byBXZWJQYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFy
YW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5l
bFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAgIChBUEk6
Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oOgorICAgICAg
ICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbToKKyAg
ICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdKToK
KyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnNU
aXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBh
bmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5Q
YW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMjAtMDct
MDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVnaXN0cnkgbWV0aG9kcyB0byBjb21wbHkg
d2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAkocmV2
aXNpb24gMjYzODkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwxMiBAQCB2
b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNoCiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChm
aWxlbmFtZXMpOworICAgIG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5h
bWVzLCBhbGxvd2VkTUlNRVR5cGVzKTsKIH0KIAogdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5OjpjYW5jZWwoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjYz
ODkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6
OkRhdGEqIGljb25JbWFnZURhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBjaG9vc2VGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2Vk
TUlNRVR5cGVzID0geyB9KTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY2OTAsNyArNjY5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW4KIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxz
KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU3LDcg
KzEyNTcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRh
dGEqIGljb25EYXRhKTsKICNlbmRpZgotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsbG93ZWRNSU1FVHlwZXMpOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7
CiAKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGlj
aWVzPiYmID0gbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
T3BlblBhbmVsUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjM4OTApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDEyICs1OCwxNSBAQCBSZWY8QVBJOjpBcnJheT4gT3BlblBh
bmVsUGFyYW1ldGVyczo6YWNjCiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0Fy
cmF5KG1fc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpOwogfQogCi0jaWYgRU5BQkxFKE1F
RElBX0NBUFRVUkUpCi1XZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIE9wZW5QYW5lbFBhcmFtZXRl
cnM6Om1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdAorUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBh
cmFtZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdAogewotICAgIHJldHVybiBtX3NldHRp
bmdzLm1lZGlhQ2FwdHVyZVR5cGU7CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmlu
Z0FycmF5KG1fc2V0dGluZ3MuYWxsb3dlZE1JTUVUeXBlcygpKTsKK30KKworUmVmPEFQSTo6QXJy
YXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3MuYWxs
b3dlZEZpbGVFeHRlbnNpb25zKCkpOwogfQotI2VuZGlmCiAKIFJlZjxBUEk6OkFycmF5PiBPcGVu
UGFuZWxQYXJhbWV0ZXJzOjpzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0CiB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDI2Mzg5MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElP
cGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDExIEBAIHB1
YmxpYzoKICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
dGluZ3MuYWxsb3dzTXVsdGlwbGVGaWxlczsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRN
SU1FVHlwZXMoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0RmlsZUV4dGVuc2lv
bnMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0
OworICAgIFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKICAg
ICBSZWY8QVBJOjpBcnJheT4gc2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKICNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKLSAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVy
ZVR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVy
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLm1lZGlhQ2FwdHVyZVR5cGU7IH0KICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCShyZXZpc2lvbiAyNjM4
OTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw1OSArNjYsNyBAQCAtIChOU0FycmF5PE5T
U3RyaW5nICo+ICopX2FjY2VwdGVkRmlsZUV4CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilf
YWxsb3dlZEZpbGVFeHRlbnNpb25zCiB7Ci0gICAgLy8gQWdncmVnYXRlIGV4dGVuc2lvbnMgYmFz
ZWQgb24gc3BlY2lmaWVkIE1JTUUgdHlwZXMuCi0gICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9
IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBhY2NlcHRlZEZpbGVFeHRlbnNp
b25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgYXV0byBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7Ci0K
LSAgICBbYWNjZXB0ZWRNSU1FVHlwZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0
cmluZyAqbWltZVR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsKLSAgICAgICAg
QVNTRVJUKFttaW1lVHlwZSBjb250YWluc1N0cmluZzpAIi8iXSk7Ci0gICAgICAgIGF1dG8gZXh0
ZW5zaW9ucyA9IEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSkpOwotICAgICAgICBbYWxs
b3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6d3JhcHBlcihleHRlbnNpb25z
KV07Ci0gICAgfV07Ci0KLSAgICBhdXRvIGFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIFthY2NlcHRl
ZEZpbGVFeHRlbnNpb25zIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmV4
dGVuc2lvbiwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqc3RvcCkgewotICAgICAgICBBU1NFUlQo
W2V4dGVuc2lvbiBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcuJyk7Ci0gICAgICAgIFthZGRpdGlv
bmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdDpbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zy
b21JbmRleDoxXV07Ci0gICAgfV07Ci0gICAgCi0gICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBh
ZGRPYmplY3RzRnJvbUFycmF5OmFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMuZ2V0KCld
OwotICAgIHJldHVybiBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFsbE9iamVjdHNdOwotfQotCi0t
IChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcwotewot
ICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwot
ICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRl
bnNpb25zXTsKLQotICAgIGNvbnN0ZXhwciBhdXRvIEFsbEZpbGVzVGl0bGUgPSBAIkFsbCBGaWxl
cyI7Ci0gICAgY29uc3RleHByIGF1dG8gQ3VzdG9tRmlsZXNUaXRsZSA9IEAiQ3VzdG9tIEZpbGVz
IjsKLSAgICAKLSAgICBpZiAoIVthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVthY2NlcHRl
ZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmlsZXNUaXRsZV07
Ci0KLSAgICBpZiAoIShbYWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVthY2NlcHRl
ZEZpbGVFeHRlbnNpb25zIGNvdW50XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZpbGVzVGl0
bGUsIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgYXV0byBtaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVU
eXBlcyBmaXJzdE9iamVjdF07Ci0gICAgYXV0byByYW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3Ry
aW5nOkAiLyJdOwotICAgIAotICAgIGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4g
QFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLSAgICAKLSAgICBhdXRvIG1pbWVU
eXBlUHJlZml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwot
ICAgIGF1dG8gbWltZVR5cGVTdWZmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJh
bmdlLmxvY2F0aW9uICsgMV07Ci0gICAgCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFs
VG9TdHJpbmc6QCIqIl0pCi0gICAgICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJUAlQCBGaWxlcyIsIFtbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nVG9JbmRleDoxXSB1
cHBlcmNhc2VTdHJpbmddLCBbbWltZVR5cGVQcmVmaXggc3Vic3RyaW5nRnJvbUluZGV4OjFdXSwg
QWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0gPD0gNCkK
LSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIFtt
aW1lVHlwZVN1ZmZpeCB1cHBlcmNhc2VTdHJpbmddLCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVz
VGl0bGVdOwotCi0gICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAl
QCIsIG1pbWVUeXBlU3VmZml4LCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAg
IHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkRmlsZUV4dGVuc2lv
bnMoKSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAko
cmV2aXNpb24gMjYzODkwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEs
NyBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNT
dHJpbmcgKj4gKl9hY2NlcHRlZE1JTUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNv
cHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjM4OTApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJRGVsZWdh
dGUuaCIKIAorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgog
I2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlci5oIgpAQCAtODI2LDcgKzgyNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bk9wZW5QYW5lbCgKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5p
dGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVu
ZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpv
cGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9w
ZW5QYW5lbFBhcmFtZXRlcnMgPSBtYWtlUmVmKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVu
ZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgewogICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigp
OwpAQCAtODQwLDcgKzg0MSw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5Q
YW5lbCgKICAgICAgICAgZm9yIChOU1VSTCAqdXJsIGluIFVSTHMpCiAgICAgICAgICAgICBmaWxl
bmFtZXMuYXBwZW5kKHVybC5wYXRoKTsKIAotICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMo
ZmlsZW5hbWVzKTsKKyAgICAgICAgbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcywgb3Bl
blBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZE1JTUVUeXBlcygpLT50b1N0cmluZ1ZlY3RvcigpKTsK
ICAgICB9KS5nZXQoKV07CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyNikKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTAz
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXTogQWxsb3cgc2VsZWN0aW5nIEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRy
aWJ1dGUgaW5jbHVkZXMgYSBzdXBwb3J0ZWQgZm9yIGVuY29kaW5nIG1pbWUgdHlwZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlbiBzY29wZSBvZiB0
aGUgY2hhbmdlIHdpbGwgYmUgbGltaXRlZC4gTm8gVUkgY2hhbmdlIHdpbGwgYmUgZG9uZS4KKyAg
ICAgICAgT25seSBhbGxvdyBIRUlGL0hFSUMgaW1hZ2VzIHRvIGJlIHNlbGVjdGVkIHRoZSAnYWNj
ZXB0JyBhdHRyaWJ1dGUgaW5jbHVkZQorICAgICAgICBhIG1pbWUgdHlwZSB3aGljaCBpcyBzdXBw
b3J0ZWQgZm9yIGVuY29kaW5nLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlG
cmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxvd2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10p
OiBEZWxldGVkLgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVG
aWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOiBEZWxldGVkLgorCiAyMDIwLTA3LTAzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURQpJbmRleDogVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDI2
Mzg5MCkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ci5tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw0NSArNzIsNiBAQCAtICh2b2lkKXBlcmZvcm1BY3Rp
b246KE5TVGV4dEZpbmRlckFjdGlvCiAKIEBlbmQKIAotLy8gVGFyZ2V0IGZvciB0aGUgRmlsZUV4
dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3MgQWNjZXNzb3J5Vmlldy4K
LUBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKLX0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKLQotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3Bl
blBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5n
ICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKLSAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKSB7Ci0gICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAgICAgIF9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOwotICAgIH0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKLSAg
ICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0gPT0g
W3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCi0gICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93
ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJ
dGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVtLgotICAgICAgICBpZiAoIVtfYWxsb3dlZEZp
bGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRG
aWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW19vcGVuUGFuZWwg
c2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKLSAgICB9Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNlIFdLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIsIFdLTmF2aWdh
dGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+CiBAZW5k
CiAKQEAgLTEyNSw3ICs4Niw2IEBAIEBpbnRlcmZhY2UgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgKCkKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRGaW5kZXI7CiAgICAgTlNW
aWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJWaXNpYmxlOwotICAgIEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0OwogfQog
CiAtICh2b2lkKWF3YWtlRnJvbU5pYgpAQCAtMjExLDcgKzE3MSw2IEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAgICAgW193ZWJWaWV3IHJlbGVhc2VdOwogICAgIFtfY29uZmlndXJhdGlvbiByZWxlYXNl
XTsKLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07CiAKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CkBAIC02MjksNTQgKzU4OCw2IEBAIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBydW4KICAgICB9XTsKIH0KIAotLSAobnVsbGFibGUgTlNWaWV3ICop
Y3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKLXsKLSAgICBOU1RleHRGaWVsZCogbGFiZWwg
PSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFtsYWJl
bCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAgIFts
YWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlND
b2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1BvcFVw
QnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJdGVt
c1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07
Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAgIFti
dXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwotICAg
IFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAotICAgIE5TVmlldyogZmls
dGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRv
cmVsZWFzZV07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpsYWJlbF07Ci0gICAgW2ZpbHRl
clZpZXcgYWRkU3VidmlldzpidXR0b25dOwotCi0gICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAy
MDsKLSAgICBjb25zdCBDR0Zsb2F0IHNwYWNpbmcgPSAyOwotICAgIGNvbnN0IENHRmxvYXQgbWlu
QnV0dG9uV2lkdGggPSAyMzA7Ci0KLSAgICBOU1JlY3QgbGFiZWxGcmFtZSA9IFtsYWJlbCBmcmFt
ZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1dHRvbiBmcmFtZV07Ci0gICAgTlNSZWN0
IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKLQotICAgIC8vIFNldCBhIG1p
bmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VT
aXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChi
dXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJl
bCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMu
Ci0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFt
ZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZy
YW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOwotICAgIFtmaWx0ZXJW
aWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07Ci0KLSAgICAvLyAnbGFiZWwnIHdpbGwgYmUg
bGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5vcmlnaW4gPSBOU01h
a2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0g
TlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZyYW1lOmxhYmVsRnJh
bWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRp
Y2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250YWxseS4KLSAgICBi
dXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxGcmFtZSkgKyBzcGFj
aW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSkg
LyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKLQotICAgIHJldHVybiBm
aWx0ZXJWaWV3OwotfQotCiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVyaWNzKQogLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdL
RnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNV
UkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKQEAgLTY4NiwxNCArNTk3LDcg
QEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bgogICAgIE5TT3BlblBh
bmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKIAogICAgIG9wZW5QYW5l
bC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb247Ci0KLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAg
X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
YWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25z
OiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgTlNBcnJheSAqYWxs
b3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZp
ZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0XTsKLSAgICBpZiAoZmlsdGVyVmlldykKLSAgICAgICAgW29wZW5QYW5lbCBz
ZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dlZEZp
bGVUeXBlczpwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwogCiAgICAgW29wZW5Q
YW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhh
bmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2Rh
bFJlc3BvbnNlT0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403511</attachid>
            <date>2020-07-03 22:31:42 -0700</date>
            <delta_ts>2020-07-04 01:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200703223140.patch</filename>
            <type>text/plain</type>
            <size>34535</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA3LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXTog
QWxsb3cgc2VsZWN0aW5nIEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUgaW5j
bHVkZXMgYSBzdXBwb3J0ZWQgZm9yIGVuY29kaW5nIG1pbWUgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVD
aG9vc2VyU2V0dGluZ3MgdG8gYSBzZXBhcmF0ZSBzb3VyY2UgYW5kIGhlYWRlci4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVD
aG9vc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6dHJpbW1lZEV4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBcHBlbmROb3RBY2NlcHRlZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAg
IEl0IHJldHVybnMgdGhlIHNldCBvZiBtaW1lIHR5cGVzIHdoaWNoIGlzIHN0YXRlZCBpbiB0aGUg
YWNjZXB0IGF0dHJpYnV0ZQorICAgICAgICBvZiB0aGUgPGlucHV0PiBlbGVtZW50LgorCisgICAg
ICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMg
Y29uc3QpOgorICAgICAgICBJdCByZXR1cm5zIHRoZSBzZXQgb2YgZXh0ZW5zaW9ucyB3aGljaCBp
cyBzdGF0ZWQgaW4gdGhlIGFjY2VwdCBhdHRyaWJ1dGUKKyAgICAgICAgb2YgdGhlIDxpbnB1dD4g
ZWxlbWVudC4gVGhlIGV4dGVuc2lvbnMgb2YgdGhlIEhFSUYvSEVJQyB3aWxsIGJlIGluY2x1ZGVk
CisgICAgICAgIGFzIHdlbGwgaWYgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGUgYSBtaW1lIHR5
cGUgd2hpY2ggaXMgc3VwcG9ydGVkIGZvcgorICAgICAgICBlbmNvZGluZy4KKworICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaDogQWRkZWQuCisKIDIwMjAtMDctMDMgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIg
c2hvdWxkIHN1cHBvcnQgcGVlciBjb25uZWN0aW9uIHJlbW90ZSB2aWRlbyB0cmFja3MKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDYgKzk0NSw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9EcmFnSXRlbS5oCiAgICAg
cGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuaAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmgKKyAgICBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKICAgICBwbGF0Zm9ybS9GaWxl
SGFuZGxlLmgKICAgICBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vRmlsZVN0
cmVhbUNsaWVudC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjYzOTI4KQorKysgU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MTEsNiArMTcxMSw3
IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNwcAogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZv
cm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuY3BwCiBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAog
cGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ1LDYgKzE3NDUsNyBAQAogCQk1NTZD
N0M0QjIyMTIzOTk3MDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTZDN0M0NzIyMTIzOTQy
MDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRD
IC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU4NDc2NUEyNDUzRjMz
NDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8q
IFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1OUI3NkQ3MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hv
b3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QTMzNkY5
MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8q
IEltYWdlQmFja2luZ1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5NDAy
NDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRUEwOUY5MjNGQ0NDNkEwMDg1
MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg3NjMsNiArODc2NCw4IEBACiAJCTU1NzZB
NTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU5N0ZDQ0IyMDc2QzA2ODAwRDM1QkIwIC8qIEdseXBoRGlzcGxheUxp
c3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbHlwaERpc3BsYXlM
aXN0Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU5Qjc2RDIyNEFEODhC
NzAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmlsZUNob29zZXJTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1
OUI3NkQzMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJhY2tpbmdTdG9yZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUFGMTRFMzFFQUFDNTlCMDAyNkVFQUEgLyog
VVRJUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRJUmVnaXN0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0NTksNiArMjY0NjIsOCBAQAogCQkJCTI2MkVD
NDE5MUQwNzhGM0QwMEJBNzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5oICovLAogCQkJCTkz
NEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8sCiAJCQkJMDY2Qzc3
MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCisJCQkJNTU5Qjc2RDIyNEFE
ODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwICovLAorCQkJCTU1OUI3NkQz
MjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggKi8sCiAJCQkJNTM1MUQ0
QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5kbGUuY3BwICovLAogCQkJCTUzNTFENEFGMURG
OTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmggKi8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAw
RTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywKQEAgLTMwMDg4LDYgKzMwMDkzLDcgQEAKIAkJ
CQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdGNDExMDAwRTYxRDU5IC8qIENvbG9yQ29tcG9u
ZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENv
bG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJC
ODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAw
M0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTUxNjlFNzIx
RjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzA2ODksNiAr
MzA2OTUsNyBAQAogCQkJCTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MzhGODZEQTFGNTA5RTc0MDBFOENGQzUgLyogRmlsZUNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzcyQjBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29z
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OUI3NkQ3MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxl
Q2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzUxRDRCMTFERjkxNkI0MDA4
MDEwQ0QgLyogRmlsZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4OEE5MDUxNzU1M0NE
NzAwMEM3NEY5IC8qIEZpbGVJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RC
RTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzkxMyw3ICszMzkyMCw2IEBACiAJCQkJOTEyNzhENjIyMURFREFGMDAwQjU3MTg0IC8qIFdvcmtl
ckF1ZGl0QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhE
RSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUI4MUNDRDFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk3QzUxNEUwMzI0QUY4MDVFMDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlEMTFDNkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29u
c29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQ0UxRkFBNDRERTAwMzdEMUU2
IC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MkIzNDlFMUZB
NDE3MDMwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkocmV2aXNpb24gMjYzOTI4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTkgKzI5LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKyNpbmNsdWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1lbnVtIE1lZGlhQ2FwdHVyZVR5cGUgewotICAgIE1lZGlhQ2FwdHVyZVR5cGVO
b25lLAotICAgIE1lZGlhQ2FwdHVyZVR5cGVVc2VyLAotICAgIE1lZGlhQ2FwdHVyZVR5cGVFbnZp
cm9ubWVudAotfTsKLQogY2xhc3MgRmlsZUNob29zZXI7CiBjbGFzcyBJY29uOwogCkBAIC01Niwx
NyArNDksNiBAQCBzdHJ1Y3QgRmlsZUNob29zZXJGaWxlSW5mbyB7CiAgICAgY29uc3QgU3RyaW5n
IGRpc3BsYXlOYW1lOwogfTsKIAotc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgewotICAgIGJv
b2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVG
aWxlcyB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOwotICAg
IFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRlbnNpb25zOwotICAgIFZlY3RvcjxTdHJpbmc+
IHNlbGVjdGVkRmlsZXM7Ci0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgTWVkaWFDYXB0
dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlIHsgTWVkaWFDYXB0dXJlVHlwZU5vbmUgfTsKLSNlbmRp
ZgotfTsKLQogY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
fkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtMTAyLDE2ICs4NCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsK
LSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNh
cHR1cmVUeXBlLAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1
cmVUeXBlTm9uZSwKLSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0
dXJlVHlwZVVzZXIsCi0gICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2Fw
dHVyZVR5cGVFbnZpcm9ubWVudAotICAgID47Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmlt
bWVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBleHRl
bnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgo
KSAtIDEpIDogZXh0ZW5zaW9uOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQXBwZW5k
Tm90QWNjZXB0ZWRFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5
cGVzKQoreworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25z
dCBhdXRvJiBtaW1lVHlwZSkgeworICAgICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpOworICAgIH0pICE9IG5v
dEZvdW5kOworfQorCitWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2Vk
TUlNRVR5cGVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVz
OworCisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IHRoaXMtPmFjY2VwdE1JTUVUeXBlcykKKyAg
ICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKwor
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogdGhpcy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMpIHsK
KyAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0
ZW5zaW9uKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5zaW9uKSk7CisgICAgICAgIGlmIChtaW1lVHlw
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYWxsb3dlZE1JTUVU
eXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
YWxsb3dlZE1JTUVUeXBlczsKK30KKworVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5n
czo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBh
Y2NlcHRNSU1FVHlwZXMgPSB0aGlzLT5hY2NlcHRNSU1FVHlwZXM7CisgICAgVmVjdG9yPFN0cmlu
Zz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworCisgICAgaWYgKHNob3VsZEFwcGVuZE5vdEFjY2Vw
dGVkRXh0ZW5zaW9ucyhhbGxvd2VkTUlNRVR5cGVzKCkpKQorICAgICAgICBhY2NlcHRNSU1FVHlw
ZXMuYXBwZW5kVmVjdG9yKFZlY3RvcjxTdHJpbmc+KHsgImltYWdlL2hlaWYiLCAiaW1hZ2UvaGVp
YyIgfSkpOworCisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFjY2VwdE1JTUVUeXBlcykgewor
ICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IE1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lv
bnNGb3JNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgICAgICBhbGxvd2VkRmlsZUV4dGVuc2lv
bnMuYXBwZW5kSWZOb3RDb250YWlucyhleHRlbnNpb24pOworICAgIH0KKyAgICAKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IHRoaXMtPmFjY2VwdEZpbGVFeHRlbnNpb25zKQorICAgICAgICBh
bGxvd2VkRmlsZUV4dGVuc2lvbnMuYXBwZW5kSWZOb3RDb250YWlucyh0cmltbWVkRXh0ZW5zaW9u
KGV4dGVuc2lvbikpOworCisgICAgcmV0dXJuIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3Mu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIE1l
ZGlhQ2FwdHVyZVR5cGUgeworICAgIE1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAgIE1lZGlhQ2Fw
dHVyZVR5cGVVc2VyLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAorfTsKKworc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAgIGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBm
YWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7IGZhbHNlIH07CisgICAgVmVj
dG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZp
bGVFeHRlbnNpb25zOworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRN
SU1FVHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxv
d2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZp
bGVzOworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVk
aWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5cGVOb25lIH07CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisg
ICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAor
ICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwK
KyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmly
b25tZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDctMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdOiBBbGxvdyBzZWxlY3RpbmcgSEVJ
RiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNsdWRlcyBhIHN1cHBvcnRlZCBm
b3IgZW5jb2RpbmcgbWltZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNYWtlIFdLT3BlblBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxl
RXh0ZW5zaW9ucygpIGFuZCBhbGxvd2VkTUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29z
ZXJTZXR0aW5ncyB2aWEgT3BlblBhbmVsUGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRl
IHdpbGwgZ2V0IGFsbG93ZWRNSU1FVHlwZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5CisgICAgICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdl
UHJveHkuIEluIGEgZm9sbG93aW5nIHBhdGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1
c2UgYWxsb3dlZE1JTUVUeXBlcyB0byB0cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZv
cmUgc2VuZGluZworICAgICAgICB0aGVtIHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3Bl
blBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6Cisg
ICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1t
OgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
c10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5z
aW9uc1RpdGxlc10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVu
T3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAy
MC0wNy0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVk
aWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRy
YWNrcwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5OjpjaAogfQogI2VuZGlmCiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cykKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93
ZWRNSU1FVHlwZXMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzKTsKKyAgICBtX3Bh
Z2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcywgYWxsb3dlZE1JTUVUeXBl
cyk7CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNv
bnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRh
KTsKICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcyk7CisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAg
ICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjM5MjgpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NjkwLDcgKzY2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVS
THMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5k
aWYKLSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVz
KTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCiAgICAgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2lu
Z0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OCwxMiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjYwog
ICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2Vw
dEZpbGVFeHRlbnNpb25zKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29y
ZTo6TWVkaWFDYXB0dXJlVHlwZSBPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBl
KCkgY29uc3QKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlN
RVR5cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBl
OworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFs
bG93ZWRNSU1FVHlwZXMoKSk7Cit9CisKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0
ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygp
KTsKIH0KLSNlbmRpZgogCiBSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2Vs
ZWN0ZWRGaWxlTmFtZXMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjM5Mjgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxv
d011bHRpcGxlRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmFsbG93c011bHRpcGxl
RmlsZXM7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAg
ICAgUmVmPEFQSTo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVm
PEFQSTo6QXJyYXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJh
eT4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNl
bGVjdGVkRmlsZU5hbWVzKCkgY29uc3Q7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAg
V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
T3BlblBhbmVsUGFyYW1ldGVycy5tbQkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjYsNTkgKzY2LDcgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hY2NlcHRl
ZEZpbGVFeAogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cwogewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJhc2VkIG9uIHNwZWNpZmllZCBNSU1F
IHR5cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1F
VHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRl
ZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkTUlNRVR5
cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJ
bnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29u
dGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6OkFycmF5
OjpjcmVhdGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25z
Rm9yTUlNRVR5cGUobWltZVR5cGUpKTsKLSAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBh
ZGRPYmplY3RzRnJvbUFycmF5OndyYXBwZXIoZXh0ZW5zaW9ucyldOwotICAgIH1dOwotCi0gICAg
YXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVt
ZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIg
aW5kZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVy
QXRJbmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5z
aW9ucyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwotICAgIH1d
OwotICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTph
ZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1cm4gW2FsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLX0KLQotLSAoTlNBcnJheTxOU1N0cmluZyAq
PiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKLXsKLSAgICBhdXRvIGFjY2VwdGVkTUlN
RVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBjb25z
dGV4cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBh
dXRvIEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgaWYgKCFb
YWNjZXB0ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3Vu
dF0pCi0gICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEoW2FjY2Vw
dGVkTUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3Vu
dF0pKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsK
LQotICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwot
ICAgIGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAg
ICBpZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwg
QWxsRmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlw
ZSBzdWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3Vm
Zml4ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwot
ICAgIAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAg
ICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBb
W21pbWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21p
bWVUeXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOwotCi0g
ICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJj
YXNlU3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIHJldHVy
biBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwg
bWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICByZXR1cm4gd3JhcHBlcihfb3Bl
blBhbmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkpOwogfQogCiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgJKHJldmlzaW9uIDI2MzkyOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDcgQEAKIAogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRN
SU1FVHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxs
b3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5n
ICo+ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSkpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkFQ
SUFycmF5LmgiCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBvcnQgIkFQSUhpdFRlc3RS
ZXN1bHQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKQEAgLTgy
Niw3ICs4MjcsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAK
ICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
ZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICBbZGVsZWdh
dGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBl
cihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMp
IG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykg
aW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBvcGVuUGFuZWxQYXJhbWV0ZXJzID0g
bWFrZVJlZigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5l
cildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBs
ZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg0MCw3ICs4NDEsNyBA
QCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAgICAgICAgIGZvciAo
TlNVUkwgKnVybCBpbiBVUkxzKQogICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZCh1cmwucGF0
aCk7CiAKLSAgICAgICAgbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcyk7CisgICAgICAg
IGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMsIG9wZW5QYW5lbFBhcmFtZXRlcnMtPmFs
bG93ZWRNSU1FVHlwZXMoKS0+dG9TdHJpbmdWZWN0b3IoKSk7CiAgICAgfSkuZ2V0KCldOwogCiAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM5MjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNy0wMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU106IEFsbG93IHNlbGVj
dGluZyBIRUlGIGltYWdlcyBpZiB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGVzIGEgc3Vw
cG9ydGVkIGZvciBlbmNvZGluZyBtaW1lIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZW4gc2NvcGUgb2YgdGhlIGNoYW5nZSB3aWxsIGJlIGxp
bWl0ZWQuIE5vIFVJIGNoYW5nZSB3aWxsIGJlIGRvbmUuCisgICAgICAgIE9ubHkgYWxsb3cgSEVJ
Ri9IRUlDIGltYWdlcyB0byBiZSBzZWxlY3RlZCB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1
ZGUKKyAgICAgICAgYSBtaW1lIHR5cGUgd2hpY2ggaXMgc3VwcG9ydGVkIGZvciBlbmNvZGluZy4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5t
OgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkZWFsbG9jXSk6CisgICAg
ICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0
aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVu
UGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtGaWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3JlYXRlRmlsdGVyVmlldzpwb3B1cFRhcmdl
dDpdKTogRGVsZXRlZC4KKwogMjAyMC0wNy0wMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiAyNjM5MjgpCisrKyBUb29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpA
QCAtNzIsNDUgKzcyLDYgQEAgLSAodm9pZClwZXJmb3JtQWN0aW9uOihOU1RleHRGaW5kZXJBY3Rp
bwogCiBAZW5kCiAKLS8vIFRhcmdldCBmb3IgdGhlIEZpbGVFeHRlbnNpb25zIE5TUG9wdXBCdXR0
b24gaW4gdGhlIE9wZW5QYW5lbCdzIEFjY2Vzc29yeVZpZXcuCi1AaW50ZXJmYWNlIEZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7Ci1AcHJpdmF0ZQotICAgIE5TT3BlblBhbmVs
ICpfb3BlblBhbmVsOwotICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVu
c2lvbnM7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0Ci0KLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihOU09wZW5QYW5lbCopb3BlblBhbmVsIGFs
bG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0
ZW5zaW9ucyB7Ci0gICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkgewotICAgICAgICBfb3Bl
blBhbmVsID0gb3BlblBhbmVsOwotICAgICAgICBfYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gW2Fs
bG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0K
LS0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7Ci0gICAgLy8gTGFzdCBpdGVtLgotICAg
IGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1dID09IFtzZW5kZXIgbnVtYmVyT2ZJdGVt
c10gLSAxKQotICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOm5pbF07Ci0g
ICAgZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0pIHsKLSAgICAgICAgLy8g
Rmlyc3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0p
Ci0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxvd2VkRmlsZVR5cGVzOkBbQCIiXV07Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6
X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107Ci0gICAgfQotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsK
LSAgICBbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxv
Y107Ci19Ci0KLUBlbmQKLQogQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAo
KSA8TlNUZXh0RmluZGVyQmFyQ29udGFpbmVyLCBXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURl
bGVnYXRlLCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlPgogQGVuZAogCkBAIC0xMjUsNyArODYsNiBA
QCBAaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpCiAgICAgTWluaUJyb3dz
ZXJOU1RleHRGaW5kZXIgKl90ZXh0RmluZGVyOwogICAgIE5TVmlldyAqX3RleHRGaW5kQmFyVmll
dzsKICAgICBCT09MIF9maW5kQmFyVmlzaWJsZTsKLSAgICBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0ICpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldDsKIH0KIAogLSAodm9pZClhd2FrZUZyb21O
aWIKQEAgLTIxMSw3ICsxNzEsNiBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIFtfd2ViVmlldyBy
ZWxlYXNlXTsKICAgICBbX2NvbmZpZ3VyYXRpb24gcmVsZWFzZV07Ci0gICAgW19maWxlRXh0ZW5z
aW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAt
NjI5LDU0ICs1ODgsNiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
CiAgICAgfV07CiB9CiAKLS0gKG51bGxhYmxlIE5TVmlldyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5T
QXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQqKXBv
cHVwVGFyZ2V0Ci17Ci0gICAgTlNUZXh0RmllbGQqIGxhYmVsID0gW1tbTlNUZXh0RmllbGQgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtsYWJlbCBz
ZXRTdHJpbmdWYWx1ZTpAIkZvcm1hdDoiXTsKLSAgICBbbGFiZWwgc2V0RWRpdGFibGU6Tk9dOwot
ICAgIFtsYWJlbCBzZXRTZWxlY3RhYmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0Qm9yZGVyZWQ6Tk9d
OwotICAgIFtsYWJlbCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwot
ICAgIFtsYWJlbCBzaXplVG9GaXRdOwotCi0gICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gW1tb
TlNQb3BVcEJ1dHRvbiBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IHB1bGxzRG93bjpO
T10gYXV0b3JlbGVhc2VdOwotICAgIFtidXR0b24gYWRkSXRlbXNXaXRoVGl0bGVzOnRpdGxlc107
Ci0gICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJnZXRdOwotICAgIFtidXR0b24gc2V0QWN0
aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKLSAgICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0g
ICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsKLSAgICBbcG9wdXBUYXJnZXQgcG9wdXBB
Y3Rpb246YnV0dG9uXTsKLSAgICAKLSAgICBOU1ZpZXcqIGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0b3JlbGVhc2VdOwotICAgIFtmaWx0
ZXJWaWV3IGFkZFN1YnZpZXc6bGFiZWxdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0
dG9uXTsKLQotICAgIGNvbnN0IENHRmxvYXQgbWFyZ2luID0gMjA7Ci0gICAgY29uc3QgQ0dGbG9h
dCBzcGFjaW5nID0gMjsKLSAgICBjb25zdCBDR0Zsb2F0IG1pbkJ1dHRvbldpZHRoID0gMjMwOwot
Ci0gICAgTlNSZWN0IGxhYmVsRnJhbWUgPSBbbGFiZWwgZnJhbWVdOwotICAgIE5TUmVjdCBidXR0
b25GcmFtZSA9IFtidXR0b24gZnJhbWVdOwotICAgIE5TUmVjdCBmaWx0ZXJWaWV3RnJhbWUgPSBb
ZmlsdGVyVmlldyBmcmFtZV07Ci0KLSAgICAvLyBTZXQgYSBtaW5pbXVtIHdpZHRoIGZvciAnYnV0
dG9uJy4KLSAgICBidXR0b25GcmFtZS5zaXplID0gTlNNYWtlU2l6ZShNQVgoTlNXaWR0aChidXR0
b25GcmFtZSksIG1pbkJ1dHRvbldpZHRoKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKTsKLSAgICAK
LSAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAnbGFiZWwnIGFuZCAnYnV0dG9uJyBob3Jp
em9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJnaW5zLgotICAgIGZpbHRlclZpZXdGcmFt
ZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRoKGxhYmVsRnJhbWUpICsgTlNXaWR0aChidXR0b25G
cmFtZSkgKyBzcGFjaW5nLCBNQVgoTlNIZWlnaHQobGFiZWxGcmFtZSksIE5TSGVpZ2h0KGJ1dHRv
bkZyYW1lKSkgKyBtYXJnaW4gKiAyKTsKLSAgICBbZmlsdGVyVmlldyBzZXRGcmFtZTpmaWx0ZXJW
aWV3RnJhbWVdOwotCi0gICAgLy8gJ2xhYmVsJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0
aWNhbGx5LgotICAgIGxhYmVsRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNaW5YKGxhYmVs
RnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGxhYmVsRnJhbWUp
KSAvIDIpOwotICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJlbEZyYW1lXTsKLSAgICAKLSAgICAvLyAn
YnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5IGFuZCBpdCB3aWxsIGNv
bWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCi0gICAgYnV0dG9uRnJhbWUub3JpZ2luID0g
TlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsgc3BhY2luZywgKE5TSGVpZ2h0KGZpbHRl
clZpZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFtZSkpIC8gMik7Ci0gICAgW2J1dHRvbiBz
ZXRGcmFtZTpidXR0b25GcmFtZV07Ci0KLSAgICByZXR1cm4gZmlsdGVyVmlldzsKLX0KLQogI2lm
IF9faGFzX2ZlYXR1cmUob2JqY19nZW5lcmljcykKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczooV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TVVJMICo+ICogVVJMcykpY29tcGxl
dGlvbkhhbmRsZXIKICNlbHNlCkBAIC02ODYsMTQgKzU5Nyw3IEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW4KICAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0gW05T
T3BlblBhbmVsIG9wZW5QYW5lbF07CiAKICAgICBvcGVuUGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxlU2VsZWN0aW9uOwotCi0gICAgW19maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwotICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVw
VGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGFsbG9jXSBpbml0V2l0aE9wZW5Q
YW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogcGFyYW1ldGVycy5fYWxsb3dl
ZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIE5TQXJyYXkgKmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1Rp
dGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlczsKLSAgICBOU1Zp
ZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5z
aW9uc1RpdGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldF07Ci0gICAg
aWYgKGZpbHRlclZpZXcpCi0gICAgICAgIFtvcGVuUGFuZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0
ZXJWaWV3XTsKKyAgICBbb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6cGFyYW1ldGVycy5f
YWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKIAogICAgIFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFs
Rm9yV2luZG93OndlYlZpZXcud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJl
c3VsdCkgewogICAgICAgICBpZiAocmVzdWx0ID09IE5TTW9kYWxSZXNwb25zZU9LKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403512</attachid>
            <date>2020-07-03 22:37:05 -0700</date>
            <delta_ts>2020-07-04 01:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200703223703.patch</filename>
            <type>text/plain</type>
            <size>34616</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA3LTAzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBB
bGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNs
dWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0
aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVDaG9vc2VyU2V0dGluZ3MgdG8gYSBzZXBhcmF0ZSBz
b3VyY2UgYW5kIGhlYWRlci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
RmlsZUNob29zZXJTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dHJpbW1l
ZEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBlbmROb3RBY2NlcHRlZEV4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dl
ZE1JTUVUeXBlcyBjb25zdCk6CisgICAgICAgIEl0IHJldHVybnMgdGhlIHNldCBvZiBtaW1lIHR5
cGVzIHdoaWNoIGlzIHN0YXRlZCBpbiB0aGUgYWNjZXB0IGF0dHJpYnV0ZQorICAgICAgICBvZiB0
aGUgPGlucHV0PiBlbGVtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRp
bmdzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAgICBJdCByZXR1cm5zIHRo
ZSBzZXQgb2YgZXh0ZW5zaW9ucyB3aGljaCBpcyBzdGF0ZWQgaW4gdGhlIGFjY2VwdCBhdHRyaWJ1
dGUKKyAgICAgICAgb2YgdGhlIDxpbnB1dD4gZWxlbWVudC4gVGhlIGV4dGVuc2lvbnMgb2YgdGhl
IEhFSUYvSEVJQyB3aWxsIGJlIGluY2x1ZGVkCisgICAgICAgIGFzIHdlbGwgaWYgJ2FjY2VwdCcg
YXR0cmlidXRlIGluY2x1ZGUgYSBtaW1lIHR5cGUgd2hpY2ggaXMgc3VwcG9ydGVkIGZvcgorICAg
ICAgICBlbmNvZGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3Mu
aDogQWRkZWQuCisKIDIwMjAtMDctMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIHN1cHBvcnQgcGVlciBjb25uZWN0aW9u
IHJlbW90ZSB2aWRlbyB0cmFja3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjYz
OTI4KQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
OTQ1LDYgKzk0NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9EcmFnSXRlbS5oCiAgICAgcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMu
aAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKyAgICBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNl
dHRpbmdzLmgKICAgICBwbGF0Zm9ybS9GaWxlSGFuZGxlLmgKICAgICBwbGF0Zm9ybS9GaWxlTW9u
aXRvci5oCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbUNsaWVudC5oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTE3MTEsNiArMTcxMSw3IEBAIHBsYXRmb3JtL0RyYWdEYXRhLmNwcAogcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcAogcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuY3BwCiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKK3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3Bw
CiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcAogcGxhdGZvcm0vRmlsZU1vbml0b3IuY3BwCiBwbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQ1LDYgKzE3NDUsNyBAQAogCQk1NTZDN0M0QjIyMTIzOTk3MDA5QjA2Q0EgLyogUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NTZDN0M0NzIyMTIzOTQyMDA5QjA2Q0EgLyogUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0
QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTU4NDc2NUEyNDUzRjMzNDAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1OUI3NkQ3
MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMg
LyogRmlsZUNob29zZXJTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5M0UyNDA4OTYz
NTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBE
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8qIERpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTg3NjMsNiArODc2NCw4IEBACiAJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU4NDc2NTgyNDUzQUJDMjAwOUY1NTBDIC8qIFJl
ZHVjZWRSZXNvbHV0aW9uU2Vjb25kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWR1Y2VkUmVzb2x1dGlv
blNlY29uZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU5N0ZDQ0IyMDc2QzA2
ODAwRDM1QkIwIC8qIEdseXBoRGlzcGxheUxpc3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTU5Qjc2RDIyNEFEODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZUNob29zZXJTZXR0aW5ncy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1OUI3NkQzMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxl
Q2hvb3NlclNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8q
IE5hdGl2ZUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUlt
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY4MUQ4MjFFM0MwMDIy
QzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NUFGMTRFMzFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVVRJUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0
NTksNiArMjY0NjIsOCBAQAogCQkJCTI2MkVDNDE5MUQwNzhGM0QwMEJBNzhGQyAvKiBFdmVudFRy
YWNraW5nUmVnaW9ucy5oICovLAogCQkJCTkzNEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxl
Q2hvb3Nlci5jcHAgKi8sCiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9v
c2VyLmggKi8sCisJCQkJNTU5Qjc2RDIyNEFEODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9vc2VyU2V0
dGluZ3MuY3BwICovLAorCQkJCTU1OUI3NkQzMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3Nl
clNldHRpbmdzLmggKi8sCiAJCQkJNTM1MUQ0QUUxREY5MTZBQzAwODAxMENEIC8qIEZpbGVIYW5k
bGUuY3BwICovLAogCQkJCTUzNTFENEFGMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmgg
Ki8sCiAJCQkJN0EwOUNFRUIxRjAxQ0M5MzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yLmNwcCAqLywK
QEAgLTMwMDg4LDYgKzMwMDkzLDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyog
Q29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBE
MDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdG
NDExMDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M1
MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBp
biBIZWFkZXJzICovLApAQCAtMzA2ODksNiArMzA2OTUsNyBAQAogCQkJCTk3NkQ2QzgxMTIyQjhB
M0QwMDFGRDFGNyAvKiBGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzhGODZEQTFGNTA5RTc0
MDBFOENGQzUgLyogRmlsZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzcyQjBB
QjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OUI3
NkQ3MjRBRDkwMzgwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MzUxRDRCMTFERjkxNkI0MDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE4OEE5MDUxNzU1M0NENzAwMEM3NEY5IC8qIEZpbGVJY29uTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCRTEyNTFGMTJEMDAzRUYyNjkgLyogRmlsZUlucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzkxMyw3ICszMzkyMCw2IEBACiAJCQkJOTEyNzhE
NjIyMURFREFGMDAwQjU3MTg0IC8qIFdvcmtlckF1ZGl0QWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNDRDFGQUE0NERFMDAzN0QxRTYgLyogV29y
a2VyQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzUxNEUwMzI0QUY4MDVFMDA1
MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlEMTFD
NkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVCODFDQ0UxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MkIzNDlFMUZBNDE3MDMwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dl
clByb3h5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuaAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTkgKzI5LDEyIEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlICJGaWxlQ2hvb3Nl
clNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIE1lZGlhQ2FwdHVyZVR5
cGUgewotICAgIE1lZGlhQ2FwdHVyZVR5cGVOb25lLAotICAgIE1lZGlhQ2FwdHVyZVR5cGVVc2Vy
LAotICAgIE1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAotfTsKLQogY2xhc3MgRmlsZUNob29z
ZXI7CiBjbGFzcyBJY29uOwogCkBAIC01NiwxNyArNDksNiBAQCBzdHJ1Y3QgRmlsZUNob29zZXJG
aWxlSW5mbyB7CiAgICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lOwogfTsKIAotc3RydWN0IEZp
bGVDaG9vc2VyU2V0dGluZ3MgewotICAgIGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9
OwotICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPFN0
cmluZz4gYWNjZXB0TUlNRVR5cGVzOwotICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRl
bnNpb25zOwotICAgIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGVkRmlsZXM7Ci0jaWYgRU5BQkxFKE1F
RElBX0NBUFRVUkUpCi0gICAgTWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlIHsgTWVk
aWFDYXB0dXJlVHlwZU5vbmUgfTsKLSNlbmRpZgotfTsKLQogY2xhc3MgRmlsZUNob29zZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCkgPSBkZWZhdWx0
OwpAQCAtMTAyLDE2ICs4NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAotICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlLAotICAgICAgICBXZWJDb3JlOjpN
ZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICAgICAgV2ViQ29yZTo6
TWVkaWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZVVzZXIsCi0gICAgICAgIFdlYkNvcmU6
Ok1lZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVFbnZpcm9ubWVudAotICAgID47Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVDaG9vc2VyU2V0dGluZ3MuaCIK
KworI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmltbWVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uKQoreworICAgIHJldHVybiBleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5z
aW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uOworfQorCitzdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkQXBwZW5kTm90QWNjZXB0ZWRFeHRlbnNpb25zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQoreworICAgIHJldHVybiBhbGxvd2VkTUlN
RVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBhdXRvJiBtaW1lVHlwZSkgeworICAgICAgICBy
ZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rp
bmcobWltZVR5cGUpOworICAgIH0pICE9IG5vdEZvdW5kOworfQorCitWZWN0b3I8U3RyaW5nPiBG
aWxlQ2hvb3NlclNldHRpbmdzOjphbGxvd2VkTUlNRVR5cGVzKCkgY29uc3QKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6
IHRoaXMtPmFjY2VwdE1JTUVUeXBlcykKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJ
Zk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogdGhp
cy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVU
eXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5z
aW9uKSk7CisgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVU
eXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKK30KKworVmVjdG9y
PFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29u
c3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRNSU1FVHlwZXMgPSB0aGlzLT5hY2NlcHRN
SU1FVHlwZXM7CisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworCisg
ICAgaWYgKHNob3VsZEFwcGVuZE5vdEFjY2VwdGVkRXh0ZW5zaW9ucyhhbGxvd2VkTUlNRVR5cGVz
KCkpKQorICAgICAgICBhY2NlcHRNSU1FVHlwZXMuYXBwZW5kVmVjdG9yKFZlY3RvcjxTdHJpbmc+
KHsgImltYWdlL2hlaWYiLCAiaW1hZ2UvaGVpYyIgfSkpOworCisgICAgZm9yIChhdXRvJiBtaW1l
VHlwZSA6IGFjY2VwdE1JTUVUeXBlcykgeworICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6
IE1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSkpCisgICAg
ICAgICAgICBhbGxvd2VkRmlsZUV4dGVuc2lvbnMuYXBwZW5kSWZOb3RDb250YWlucyhleHRlbnNp
b24pOworICAgIH0KKyAgICAKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHRoaXMtPmFjY2Vw
dEZpbGVFeHRlbnNpb25zKQorICAgICAgICBhbGxvd2VkRmlsZUV4dGVuc2lvbnMuYXBwZW5kSWZO
b3RDb250YWlucyh0cmltbWVkRXh0ZW5zaW9uKGV4dGVuc2lvbikpOworCisgICAgcmV0dXJuIGFs
bG93ZWRGaWxlRXh0ZW5zaW9uczsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIE1lZGlhQ2FwdHVyZVR5cGUgeworICAgIE1lZGlhQ2Fw
dHVyZVR5cGVOb25lLAorICAgIE1lZGlhQ2FwdHVyZVR5cGVVc2VyLAorICAgIE1lZGlhQ2FwdHVy
ZVR5cGVFbnZpcm9ubWVudAorfTsKKworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAg
IGJvb2wgYWxsb3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlw
bGVGaWxlcyB7IGZhbHNlIH07CisgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRlbnNpb25zOworICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJF
KQorICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlhQ2FwdHVyZVR5
cGVOb25lIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFD
YXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5
cGU6Ok1lZGlhQ2FwdHVyZVR5cGVOb25lLAorICAgICAgICBXZWJDb3JlOjpNZWRpYUNhcHR1cmVU
eXBlOjpNZWRpYUNhcHR1cmVUeXBlVXNlciwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJl
VHlwZTo6TWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50CisgICAgPjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDctMDMg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdIEFsbG93IHNlbGVjdGluZyBIRUlGIGltYWdlcyBpZiB0aGUgJ2FjY2VwdCcgYXR0cmli
dXRlIGluY2x1ZGVzIGFuIGltYWdlIE1JTUUgdHlwZSB0aGF0IHRoZSBwbGF0Zm9ybSBjYW4gdHJh
bnNjb2RlIHRoZSBIRUlGIHRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYWtlIFdLT3BlblBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0
ZW5zaW9ucygpIGFuZCBhbGxvd2VkTUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29zZXJT
ZXR0aW5ncyB2aWEgT3BlblBhbmVsUGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRlIHdp
bGwgZ2V0IGFsbG93ZWRNSU1FVHlwZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5CisgICAgICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdlUHJv
eHkuIEluIGEgZm9sbG93aW5nIHBhdGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1c2Ug
YWxsb3dlZE1JTUVUeXBlcyB0byB0cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZvcmUg
c2VuZGluZworICAgICAgICB0aGVtIHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQ
YXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBh
bmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAg
ICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgor
ICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10p
OgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
c1RpdGxlc10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3Bl
blBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAyMC0w
Ny0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFS
ZWNvcmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNr
cwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5OjpjaAogfQogI2VuZGlmCiAKLXZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykK
K3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRN
SU1FVHlwZXMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzKTsKKyAgICBtX3BhZ2Ut
PmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcywgYWxsb3dlZE1JTUVUeXBlcyk7
CiB9CiAKIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2FuY2VsKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0
IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VEYXRhKTsK
ICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcyk7CisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7CiAgICAg
dm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NjkwLDcgKzY2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uRGF0YSk7CiAjZW5kaWYK
LSAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKTsK
ICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwogCiAgICAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0Fy
ZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwx
MiArNTgsMTUgQEAgUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjYwogICAg
IHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFjY2VwdEZp
bGVFeHRlbnNpb25zKTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQotV2ViQ29yZTo6
TWVkaWFDYXB0dXJlVHlwZSBPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlKCkg
Y29uc3QKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5
cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOwor
ICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93
ZWRNSU1FVHlwZXMoKSk7Cit9CisKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJz
OjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5
OjpjcmVhdGVTdHJpbmdBcnJheShtX3NldHRpbmdzLmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsK
IH0KLSNlbmRpZgogCiBSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0
ZWRGaWxlTmFtZXMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjM5MjgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd011
bHRpcGxlRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmFsbG93c011bHRpcGxlRmls
ZXM7IH0KICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAgICAg
UmVmPEFQSTo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVmPEFQ
STo6QXJyYXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4g
YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVj
dGVkRmlsZU5hbWVzKCkgY29uc3Q7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgV2Vi
Q29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAgV2Vi
Q29yZTo6TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXR0aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjYsNTkgKzY2LDcgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hY2NlcHRlZEZp
bGVFeAogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucwog
ewotICAgIC8vIEFnZ3JlZ2F0ZSBleHRlbnNpb25zIGJhc2VkIG9uIHNwZWNpZmllZCBNSU1FIHR5
cGVzLgotICAgIGF1dG8gYWNjZXB0ZWRNSU1FVHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlw
ZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZp
bGVFeHRlbnNpb25zXTsKLQotICAgIGF1dG8gYWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHRO
UyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkTUlNRVR5cGVz
IGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRl
Z2VyIGluZGV4LCBCT09MKiBzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29udGFp
bnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6OkFycmF5Ojpj
cmVhdGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9y
TUlNRVR5cGUobWltZVR5cGUpKTsKLSAgICAgICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRP
YmplY3RzRnJvbUFycmF5OndyYXBwZXIoZXh0ZW5zaW9ucyldOwotICAgIH1dOwotCi0gICAgYXV0
byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBlbnVtZXJh
dGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICpleHRlbnNpb24sIE5TVUludGVnZXIgaW5k
ZXgsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFtleHRlbnNpb24gY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnLicpOwotICAgICAgICBbYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBhZGRPYmplY3Q6W2V4dGVuc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dOwotICAgIH1dOwot
ICAgIAotICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTphZGRp
dGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zLmdldCgpXTsKLSAgICByZXR1cm4gW2FsbG93ZWRG
aWxlRXh0ZW5zaW9ucyBhbGxPYmplY3RzXTsKLX0KLQotLSAoTlNBcnJheTxOU1N0cmluZyAqPiAq
KV9hbGxvd2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMKLXsKLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5
cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4
dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBjb25zdGV4
cHIgYXV0byBBbGxGaWxlc1RpdGxlID0gQCJBbGwgRmlsZXMiOwotICAgIGNvbnN0ZXhwciBhdXRv
IEN1c3RvbUZpbGVzVGl0bGUgPSBAIkN1c3RvbSBGaWxlcyI7Ci0gICAgCi0gICAgaWYgKCFbYWNj
ZXB0ZWRNSU1FVHlwZXMgY291bnRdICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0p
Ci0gICAgICAgIHJldHVybiBAW0FsbEZpbGVzVGl0bGVdOwotCi0gICAgaWYgKCEoW2FjY2VwdGVk
TUlNRVR5cGVzIGNvdW50XSA9PSAxICYmICFbYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0p
KQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBBbGxGaWxlc1RpdGxlXTsKLQot
ICAgIGF1dG8gbWltZVR5cGUgPSBbYWNjZXB0ZWRNSU1FVHlwZXMgZmlyc3RPYmplY3RdOwotICAg
IGF1dG8gcmFuZ2UgPSBbbWltZVR5cGUgcmFuZ2VPZlN0cmluZzpAIi8iXTsKLSAgICAKLSAgICBp
ZiAoIXJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxs
RmlsZXNUaXRsZV07Ci0gICAgCi0gICAgYXV0byBtaW1lVHlwZVByZWZpeCA9IFttaW1lVHlwZSBz
dWJzdHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXTsKLSAgICBhdXRvIG1pbWVUeXBlU3VmZml4
ID0gW21pbWVUeXBlIHN1YnN0cmluZ0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbiArIDFdOwotICAg
IAotICAgIGlmIChbbWltZVR5cGVTdWZmaXggaXNFcXVhbFRvU3RyaW5nOkAiKiJdKQotICAgICAg
ICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAJUAgRmlsZXMiLCBbW21p
bWVUeXBlUHJlZml4IHN1YnN0cmluZ1RvSW5kZXg6MV0gdXBwZXJjYXNlU3RyaW5nXSwgW21pbWVU
eXBlUHJlZml4IHN1YnN0cmluZ0Zyb21JbmRleDoxXV0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAg
aWYgKFttaW1lVHlwZVN1ZmZpeCBsZW5ndGhdIDw9IDQpCi0gICAgICAgIHJldHVybiBAW1tOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBbbWltZVR5cGVTdWZmaXggdXBwZXJjYXNl
U3RyaW5nXSwgbWltZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIHJldHVybiBA
W1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUAiLCBtaW1lVHlwZVN1ZmZpeCwgbWlt
ZVR5cGVQcmVmaXhdLCBBbGxGaWxlc1RpdGxlXTsKKyAgICByZXR1cm4gd3JhcHBlcihfb3BlblBh
bmVsUGFyYW1ldGVycy0+YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkpOwogfQogCiBAZW5kCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDcgQEAKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRNSU1F
VHlwZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZEZpbGVF
eHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zVGl0bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+
ICpfYWxsb3dlZEZpbGVFeHRlbnNpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSkpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAKKyNpbXBvcnQgIkFQSUFy
cmF5LmgiCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1
bHQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKQEAgLTgyNiw3
ICs4MjcsNyBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAKICAg
ICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVs
ZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKLSAgICBbZGVsZWdhdGUg
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihm
cmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShj
aGVja2VyKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11
dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5p
dGlhdGVkQnlGcmFtZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCBvcGVuUGFuZWxQYXJhbWV0ZXJzID0gbWFr
ZVJlZigqb3BlblBhbmVsUGFyYW1ldGVycyksIGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcild
IChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
aGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg0MCw3ICs4NDEsNyBAQCBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoCiAgICAgICAgIGZvciAoTlNV
UkwgKnVybCBpbiBVUkxzKQogICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZCh1cmwucGF0aCk7
CiAKLSAgICAgICAgbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcyk7CisgICAgICAgIGxp
c3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMsIG9wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93
ZWRNSU1FVHlwZXMoKS0+dG9TdHJpbmdWZWN0b3IoKSk7CiAgICAgfSkuZ2V0KCldOwogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjM5MjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNy0wMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWxsb3cgc2VsZWN0aW5n
IEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUgaW5jbHVkZXMgYW4gaW1hZ2Ug
TUlNRSB0eXBlIHRoYXQgdGhlIHBsYXRmb3JtIGNhbiB0cmFuc2NvZGUgdGhlIEhFSUYgdG8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjQ4OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZW4gc2NvcGUg
b2YgdGhlIGNoYW5nZSB3aWxsIGJlIGxpbWl0ZWQuIE5vIFVJIGNoYW5nZSB3aWxsIGJlIGRvbmUu
CisgICAgICAgIE9ubHkgYWxsb3cgSEVJRi9IRUlDIGltYWdlcyB0byBiZSBzZWxlY3RlZCB0aGUg
J2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGUKKyAgICAgICAgYSBtaW1lIHR5cGUgd2hpY2ggaXMg
c3VwcG9ydGVkIGZvciBlbmNvZGluZy4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjp3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRl
ZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgaW5pdFdpdGhPcGVuUGFuZWw6YWxsb3dlZEZpbGVFeHRlbnNpb25zOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9u
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGRlYWxs
b2NdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3Jl
YXRlRmlsdGVyVmlldzpwb3B1cFRhcmdldDpdKTogRGVsZXRlZC4KKwogMjAyMC0wNy0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9y
IEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUKSW5kZXg6IFRvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lv
biAyNjM5MjgpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNzIsNDUgKzcyLDYgQEAgLSAodm9pZClwZXJmb3Jt
QWN0aW9uOihOU1RleHRGaW5kZXJBY3RpbwogCiBAZW5kCiAKLS8vIFRhcmdldCBmb3IgdGhlIEZp
bGVFeHRlbnNpb25zIE5TUG9wdXBCdXR0b24gaW4gdGhlIE9wZW5QYW5lbCdzIEFjY2Vzc29yeVZp
ZXcuCi1AaW50ZXJmYWNlIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgOiBOU09iamVjdCB7Ci1A
cHJpdmF0ZQotICAgIE5TT3BlblBhbmVsICpfb3BlblBhbmVsOwotICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnM7Ci19Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Ci0KLS0gKGlkKWluaXRXaXRoT3BlblBhbmVsOihO
U09wZW5QYW5lbCopb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5zaW9uczooTlNBcnJheTxOU1N0
cmluZyAqPiAqKWFsbG93ZWRGaWxlRXh0ZW5zaW9ucyB7Ci0gICAgaWYgKChzZWxmID0gW3N1cGVy
IGluaXRdKSkgewotICAgICAgICBfb3BlblBhbmVsID0gb3BlblBhbmVsOwotICAgICAgICBfYWxs
b3dlZEZpbGVFeHRlbnNpb25zID0gW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb3B5XTsKLSAgICB9
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpcG9wdXBBY3Rpb246KGlkKXNlbmRlciB7
Ci0gICAgLy8gTGFzdCBpdGVtLgotICAgIGlmIChbc2VuZGVyIGluZGV4T2ZTZWxlY3RlZEl0ZW1d
ID09IFtzZW5kZXIgbnVtYmVyT2ZJdGVtc10gLSAxKQotICAgICAgICBbX29wZW5QYW5lbCBzZXRB
bGxvd2VkRmlsZVR5cGVzOm5pbF07Ci0gICAgZWxzZSBpZiAoIVtzZW5kZXIgaW5kZXhPZlNlbGVj
dGVkSXRlbV0pIHsKLSAgICAgICAgLy8gRmlyc3QgaXRlbS4KLSAgICAgICAgaWYgKCFbX2FsbG93
ZWRGaWxlRXh0ZW5zaW9ucyBjb3VudF0pCi0gICAgICAgICAgICBbX29wZW5QYW5lbCBzZXRBbGxv
d2VkRmlsZVR5cGVzOkBbQCIiXV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFtfb3BlblBh
bmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc107Ci0gICAgfQot
fQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyByZWxl
YXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLUBlbmQKLQogQGludGVyZmFjZSBXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8TlNUZXh0RmluZGVyQmFyQ29udGFpbmVyLCBXS05h
dmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlLCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlPgog
QGVuZAogCkBAIC0xMjUsNyArODYsNiBAQCBAaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyICgpCiAgICAgTWluaUJyb3dzZXJOU1RleHRGaW5kZXIgKl90ZXh0RmluZGVyOwogICAg
IE5TVmlldyAqX3RleHRGaW5kQmFyVmlldzsKICAgICBCT09MIF9maW5kQmFyVmlzaWJsZTsKLSAg
ICBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ICpfZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldDsK
IH0KIAogLSAodm9pZClhd2FrZUZyb21OaWIKQEAgLTIxMSw3ICsxNzEsNiBAQCAtICh2b2lkKWRl
YWxsb2MKIAogICAgIFtfd2ViVmlldyByZWxlYXNlXTsKICAgICBbX2NvbmZpZ3VyYXRpb24gcmVs
ZWFzZV07Ci0gICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwogCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNjI5LDU0ICs1ODgsNiBAQCAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuCiAgICAgfV07CiB9CiAKLS0gKG51bGxhYmxlIE5TVmll
dyAqKWNyZWF0ZUZpbHRlclZpZXc6KE5TQXJyYXkgKil0aXRsZXMgcG9wdXBUYXJnZXQ6KEZpbGVF
eHRlbnNpb25zUG9wdXBUYXJnZXQqKXBvcHVwVGFyZ2V0Ci17Ci0gICAgTlNUZXh0RmllbGQqIGxh
YmVsID0gW1tbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0gYXV0
b3JlbGVhc2VdOwotICAgIFtsYWJlbCBzZXRTdHJpbmdWYWx1ZTpAIkZvcm1hdDoiXTsKLSAgICBb
bGFiZWwgc2V0RWRpdGFibGU6Tk9dOwotICAgIFtsYWJlbCBzZXRTZWxlY3RhYmxlOk5PXTsKLSAg
ICBbbGFiZWwgc2V0Qm9yZGVyZWQ6Tk9dOwotICAgIFtsYWJlbCBzZXRCYWNrZ3JvdW5kQ29sb3I6
W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtsYWJlbCBzaXplVG9GaXRdOwotCi0gICAgTlNQ
b3BVcEJ1dHRvbiAqYnV0dG9uID0gW1tbTlNQb3BVcEJ1dHRvbiBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0IHB1bGxzRG93bjpOT10gYXV0b3JlbGVhc2VdOwotICAgIFtidXR0b24gYWRk
SXRlbXNXaXRoVGl0bGVzOnRpdGxlc107Ci0gICAgW2J1dHRvbiBzZXRUYXJnZXQ6cG9wdXBUYXJn
ZXRdOwotICAgIFtidXR0b24gc2V0QWN0aW9uOkBzZWxlY3Rvcihwb3B1cEFjdGlvbjopXTsKLSAg
ICBbYnV0dG9uIHNpemVUb0ZpdF07Ci0gICAgW2J1dHRvbiBzZWxlY3RJdGVtQXRJbmRleDowXTsK
LSAgICBbcG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246YnV0dG9uXTsKLSAgICAKLSAgICBOU1ZpZXcq
IGZpbHRlclZpZXcgPSBbW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0g
YXV0b3JlbGVhc2VdOwotICAgIFtmaWx0ZXJWaWV3IGFkZFN1YnZpZXc6bGFiZWxdOwotICAgIFtm
aWx0ZXJWaWV3IGFkZFN1YnZpZXc6YnV0dG9uXTsKLQotICAgIGNvbnN0IENHRmxvYXQgbWFyZ2lu
ID0gMjA7Ci0gICAgY29uc3QgQ0dGbG9hdCBzcGFjaW5nID0gMjsKLSAgICBjb25zdCBDR0Zsb2F0
IG1pbkJ1dHRvbldpZHRoID0gMjMwOwotCi0gICAgTlNSZWN0IGxhYmVsRnJhbWUgPSBbbGFiZWwg
ZnJhbWVdOwotICAgIE5TUmVjdCBidXR0b25GcmFtZSA9IFtidXR0b24gZnJhbWVdOwotICAgIE5T
UmVjdCBmaWx0ZXJWaWV3RnJhbWUgPSBbZmlsdGVyVmlldyBmcmFtZV07Ci0KLSAgICAvLyBTZXQg
YSBtaW5pbXVtIHdpZHRoIGZvciAnYnV0dG9uJy4KLSAgICBidXR0b25GcmFtZS5zaXplID0gTlNN
YWtlU2l6ZShNQVgoTlNXaWR0aChidXR0b25GcmFtZSksIG1pbkJ1dHRvbldpZHRoKSwgTlNIZWln
aHQoYnV0dG9uRnJhbWUpKTsKLSAgICAKLSAgICAvLyBGaWx0ZXJWaWV3IHdpbGwgbGF5IG91dCAn
bGFiZWwnIGFuZCAnYnV0dG9uJyBob3Jpem9udGFsbHkgYW5kIGhhdmUgYSB2ZXJ0aWNhbCBtYXJn
aW5zLgotICAgIGZpbHRlclZpZXdGcmFtZS5zaXplID0gTlNNYWtlU2l6ZShOU1dpZHRoKGxhYmVs
RnJhbWUpICsgTlNXaWR0aChidXR0b25GcmFtZSkgKyBzcGFjaW5nLCBNQVgoTlNIZWlnaHQobGFi
ZWxGcmFtZSksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSkgKyBtYXJnaW4gKiAyKTsKLSAgICBbZmls
dGVyVmlldyBzZXRGcmFtZTpmaWx0ZXJWaWV3RnJhbWVdOwotCi0gICAgLy8gJ2xhYmVsJyB3aWxs
IGJlIGxhaWQgb3V0IGNlbnRlciB2ZXJ0aWNhbGx5LgotICAgIGxhYmVsRnJhbWUub3JpZ2luID0g
TlNNYWtlUG9pbnQoTlNNaW5YKGxhYmVsRnJhbWUpLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1l
KSAtIE5TSGVpZ2h0KGxhYmVsRnJhbWUpKSAvIDIpOwotICAgIFtsYWJlbCBzZXRGcmFtZTpsYWJl
bEZyYW1lXTsKLSAgICAKLSAgICAvLyAnYnV0dG9uJyB3aWxsIGJlIGxhaWQgb3V0IGNlbnRlciB2
ZXJ0aWNhbGx5IGFuZCBpdCB3aWxsIGNvbWUgYWZ0ZXIgJ2xhYmVsJyBob3Jpem9udGFsbHkuCi0g
ICAgYnV0dG9uRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoTlNNYXhYKGxhYmVsRnJhbWUpICsg
c3BhY2luZywgKE5TSGVpZ2h0KGZpbHRlclZpZXdGcmFtZSkgLSBOU0hlaWdodChidXR0b25GcmFt
ZSkpIC8gMik7Ci0gICAgW2J1dHRvbiBzZXRGcmFtZTpidXR0b25GcmFtZV07Ci0KLSAgICByZXR1
cm4gZmlsdGVyVmlldzsKLX0KLQogI2lmIF9faGFzX2ZlYXR1cmUob2JqY19nZW5lcmljcykKIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1l
dGVyczooV0tPcGVuUGFuZWxQYXJhbWV0ZXJzICopcGFyYW1ldGVycyBpbml0aWF0ZWRCeUZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
PE5TVVJMICo+ICogVVJMcykpY29tcGxldGlvbkhhbmRsZXIKICNlbHNlCkBAIC02ODYsMTQgKzU5
Nyw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW4KICAgICBOU09w
ZW5QYW5lbCAqb3BlblBhbmVsID0gW05TT3BlblBhbmVsIG9wZW5QYW5lbF07CiAKICAgICBvcGVu
UGFuZWwuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSBwYXJhbWV0ZXJzLmFsbG93c011bHRpcGxl
U2VsZWN0aW9uOwotCi0gICAgW19maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IHJlbGVhc2VdOwot
ICAgIF9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ID0gW1tGaWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0IGFsbG9jXSBpbml0V2l0aE9wZW5QYW5lbDogb3BlblBhbmVsIGFsbG93ZWRGaWxlRXh0ZW5z
aW9uczogcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIE5TQXJyYXkg
KmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyA9IHBhcmFtZXRlcnMuX2FsbG93ZWRGaWxlRXh0
ZW5zaW9uc1RpdGxlczsKLSAgICBOU1ZpZXcgKmZpbHRlclZpZXcgPSBbc2VsZiBjcmVhdGVGaWx0
ZXJWaWV3OmFsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBwb3B1cFRhcmdldDpfZmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldF07Ci0gICAgaWYgKGZpbHRlclZpZXcpCi0gICAgICAgIFtvcGVuUGFu
ZWwgc2V0QWNjZXNzb3J5VmlldzpmaWx0ZXJWaWV3XTsKKyAgICBbb3BlblBhbmVsIHNldEFsbG93
ZWRGaWxlVHlwZXM6cGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKIAogICAgIFtv
cGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OndlYlZpZXcud2luZG93IGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgewogICAgICAgICBpZiAocmVzdWx0ID09IE5T
TW9kYWxSZXNwb25zZU9LKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403516</attachid>
            <date>2020-07-04 01:28:24 -0700</date>
            <delta_ts>2020-07-04 02:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200704012823.patch</filename>
            <type>text/plain</type>
            <size>40435</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA3LTA0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBB
bGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNs
dWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0
aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSB0aGUgc3RydWN0dXJlIEZpbGVDaG9vc2VyU2V0dGluZ3MgdG8gYSBzZXBhcmF0ZSBz
b3VyY2UgYW5kIGhlYWRlci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptZWRpYUNhcHR1cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0
dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRyaW1tZWRFeHRlbnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwZW5kTm90QWNjZXB0ZWRFeHRlbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFsbG93ZWRNSU1FVHlwZXMpOgorICAgICAgICBJdCByZXR1cm5zIHRo
ZSBzZXQgb2YgbWltZSB0eXBlcyB3aGljaCBpcyBzdGF0ZWQgaW4gdGhlIGFjY2VwdCBhdHRyaWJ1
dGUKKyAgICAgICAgb2YgdGhlIDxpbnB1dD4gZWxlbWVudC4KKworICAgICAgICAoV2ViQ29yZTo6
YWxsb3dlZEZpbGVFeHRlbnNpb25zKToKKyAgICAgICAgSXQgcmV0dXJucyB0aGUgc2V0IG9mIGV4
dGVuc2lvbnMgd2hpY2ggaXMgc3RhdGVkIGluIHRoZSBhY2NlcHQgYXR0cmlidXRlCisgICAgICAg
IG9mIHRoZSA8aW5wdXQ+IGVsZW1lbnQuIFRoZSBleHRlbnNpb25zIG9mIHRoZSBIRUlGL0hFSUMg
d2lsbCBiZSBpbmNsdWRlZAorICAgICAgICBhcyB3ZWxsIGlmICdhY2NlcHQnIGF0dHJpYnV0ZSBp
bmNsdWRlIGEgbWltZSB0eXBlIHdoaWNoIGlzIHN1cHBvcnRlZCBmb3IKKyAgICAgICAgZW5jb2Rp
bmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmg6IEFkZGVkLgor
CiAyMDIwLTA3LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNZWRpYVJlY29yZGVyIHNob3VsZCBzdXBwb3J0IHBlZXIgY29ubmVjdGlvbiByZW1vdGUgdmlk
ZW8gdHJhY2tzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw2ICs5NDUs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0v
RHJhZ0l0ZW0uaAogICAgIHBsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmgKICAgICBwbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5oCisgICAgcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCiAg
ICAgcGxhdGZvcm0vRmlsZUhhbmRsZS5oCiAgICAgcGxhdGZvcm0vRmlsZU1vbml0b3IuaAogICAg
IHBsYXRmb3JtL0ZpbGVTdHJlYW1DbGllbnQuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9u
IDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xNzExLDYgKzE3MTEsNyBAQCBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAKIHBsYXRmb3JtL0RyYWdJ
bWFnZS5jcHAKIHBsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmNwcAogcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwCitwbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAogcGxhdGZvcm0v
RmlsZUhhbmRsZS5jcHAKIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZvcm0vRmlsZVN0
cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc0NSw2ICsx
NzQ1LDcgQEAKIAkJNTU2QzdDNEIyMjEyMzk5NzAwOUIwNkNBIC8qIFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU2QzdDNDcyMjEyMzk0MjAwOUIwNkNBIC8qIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1NzZBNTY1
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VG
cmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU1ODQ3NjVBMjQ1M0YzMzQwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1ODQ3NjU4MjQ1
M0FCQzIwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NTlCNzZENzI0QUQ5MDM4MDBG
OTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5Qjc2RDMyNEFEODhCNzAwRjkyNDIzIC8qIEZpbGVDaG9v
c2VyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NUEzMzZGOTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY4MUQ4
MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1QUQwOTNFMjQwODk2MzUwMERFNEQyRiAv
KiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkVB
MDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NzYzLDYgKzg3
NjQsOCBAQAogCQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1ODQ3NjU4MjQ1M0FCQzIwMDlGNTUwQyAvKiBSZWR1Y2VkUmVzb2x1
dGlvblNlY29uZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1OTdGQ0NCMjA3NkMwNjgwMEQzNUJCMCAv
KiBHbHlwaERpc3BsYXlMaXN0Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU1OUI3NkQyMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0
aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlQ2hvb3NlclNldHRpbmdzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1h
Z2VCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VC
YWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRjE0RTMxRUFB
QzU5QjAwMjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUSVJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NDU5LDYgKzI2NDYy
LDggQEAKIAkJCQkyNjJFQzQxOTFEMDc4RjNEMDBCQTc4RkMgLyogRXZlbnRUcmFja2luZ1JlZ2lv
bnMuaCAqLywKIAkJCQk5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3Bw
ICovLAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAor
CQkJCTU1OUI3NkQyMjRBRDg4QjcwMEY5MjQyMyAvKiBGaWxlQ2hvb3NlclNldHRpbmdzLmNwcCAq
LywKKwkJCQk1NTlCNzZEMzI0QUQ4OEI3MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5o
ICovLAogCQkJCTUzNTFENEFFMURGOTE2QUMwMDgwMTBDRCAvKiBGaWxlSGFuZGxlLmNwcCAqLywK
IAkJCQk1MzUxRDRBRjFERjkxNkFDMDA4MDEwQ0QgLyogRmlsZUhhbmRsZS5oICovLAogCQkJCTdB
MDlDRUVCMUYwMUNDOTMwMEU5M0JEQiAvKiBGaWxlTW9uaXRvci5jcHAgKi8sCkBAIC0zMDA4OCw2
ICszMDA5Myw3IEBACiAJCQkJQzM3Q0RFQkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3Nl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4RDJBQTUyMTU5NzQwRDAwQzY3NTJCIC8q
IENvbG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQUM2QUYwMjQ3RjQxMTAwMEU2MUQ1
OSAvKiBDb2xvckNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDNTE0RTAzMjRBRjgw
NUUwMDUwNzEwRiAvKiBDb2xvckNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDNC
N0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUY1
NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmggaW4gSGVhZGVycyAq
LywKQEAgLTMwNjg5LDYgKzMwNjk1LDcgQEAKIAkJCQk5NzZENkM4MTEyMkI4QTNEMDAxRkQxRjcg
LyogRmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4Rjg2REExRjUwOUU3NDAwRThDRkM1IC8q
IEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIwQUI2MDNCNzAwMjM4
Q0M0IC8qIEZpbGVDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCNzZENzI0QUQ5MDM4
MDBGOTI0MjMgLyogRmlsZUNob29zZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1
MUQ0QjExREY5MTZCNDAwODAxMENEIC8qIEZpbGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBODhBOTA1MTc1NTNDRDcwMDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjU1QjNEQkUxMjUxRjEyRDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM5MTMsNyArMzM5MjAsNiBAQAogCQkJCTkxMjc4RDYyMjFERURBRjAw
MEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUE3RDM1
MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNvbnNvbGVB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENv
bG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlFMzAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NF
MUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzksMTYgKzE4NzksMTYgQEAgYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpzaG91bGRBcHBlYXJJbmRldAogTWVkaWFDYXB0dXJlVHlwZSBIVE1MSW5w
dXRFbGVtZW50OjptZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QKIHsKICAgICBpZiAoIWlzRmlsZVVw
bG9hZCgpKQotICAgICAgICByZXR1cm4gTWVkaWFDYXB0dXJlVHlwZU5vbmU7CisgICAgICAgIHJl
dHVybiBNZWRpYUNhcHR1cmVUeXBlOjpOb25lOwogICAgIAogICAgIGF1dG8mIGNhcHR1cmVBdHRy
aWJ1dGUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNhcHR1cmVBdHRyKTsKICAg
ICBpZiAoY2FwdHVyZUF0dHJpYnV0ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhQ2Fw
dHVyZVR5cGVOb25lOworICAgICAgICByZXR1cm4gTWVkaWFDYXB0dXJlVHlwZTo6Tm9uZTsKICAg
ICAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY2FwdHVyZUF0dHJpYnV0
ZSwgInVzZXIiKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhQ2FwdHVyZVR5cGVVc2VyOworICAgICAg
ICByZXR1cm4gTWVkaWFDYXB0dXJlVHlwZTo6VXNlcjsKICAgICAKLSAgICByZXR1cm4gTWVkaWFD
YXB0dXJlVHlwZUVudmlyb25tZW50OworICAgIHJldHVybiBNZWRpYUNhcHR1cmVUeXBlOjpFbnZp
cm9ubWVudDsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
Q2hvb3Nlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmgJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVD
aG9vc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE5ICsyOSwxMiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSAiRmlsZUNob29zZXJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNZWRpYUNhcHR1cmVUeXBl
IHsKLSAgICBNZWRpYUNhcHR1cmVUeXBlTm9uZSwKLSAgICBNZWRpYUNhcHR1cmVUeXBlVXNlciwK
LSAgICBNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2Vy
OwogY2xhc3MgSWNvbjsKIApAQCAtNTYsMTcgKzQ5LDYgQEAgc3RydWN0IEZpbGVDaG9vc2VyRmls
ZUluZm8gewogICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZTsKIH07CiAKLXN0cnVjdCBGaWxl
Q2hvb3NlclNldHRpbmdzIHsKLSAgICBib29sIGFsbG93c0RpcmVjdG9yaWVzIHsgZmFsc2UgfTsK
LSAgICBib29sIGFsbG93c011bHRpcGxlRmlsZXMgeyBmYWxzZSB9OwotICAgIFZlY3RvcjxTdHJp
bmc+IGFjY2VwdE1JTUVUeXBlczsKLSAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRGaWxlRXh0ZW5z
aW9uczsKLSAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZEZpbGVzOwotI2lmIEVOQUJMRShNRURJ
QV9DQVBUVVJFKQotICAgIE1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSB7IE1lZGlh
Q2FwdHVyZVR5cGVOb25lIH07Ci0jZW5kaWYKLX07Ci0KIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpID0gZGVmYXVsdDsK
QEAgLTEwMiwxNiArODQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNZWRpYUNhcHR1cmVUeXBlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZSwKLSAgICAgICAgV2ViQ29yZTo6TWVk
aWFDYXB0dXJlVHlwZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmUsCi0gICAgICAgIFdlYkNvcmU6Ok1l
ZGlhQ2FwdHVyZVR5cGU6Ok1lZGlhQ2FwdHVyZVR5cGVVc2VyLAotICAgICAgICBXZWJDb3JlOjpN
ZWRpYUNhcHR1cmVUeXBlOjpNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQKLSAgICA+OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
Q2hvb3NlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3NlclNldHRpbmdzLmgiCisK
KyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIGlubGluZSBTdHJpbmcgdHJpbW1lZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKK3sKKyAgICByZXR1cm4gZXh0ZW5zaW9uLnN0YXJ0c1dpdGgoJy4nKSA/IGV4dGVuc2lv
bi5yaWdodChleHRlbnNpb24ubGVuZ3RoKCkgLSAxKSA6IGV4dGVuc2lvbjsKK30KKworc3RhdGlj
IGlubGluZSBib29sIHNob3VsZEFwcGVuZE5vdEFjY2VwdGVkRXh0ZW5zaW9ucyhjb25zdCBGaWxl
Q2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBl
cyhzZXR0aW5ncykuZmluZE1hdGNoaW5nKFtdKGNvbnN0IGF1dG8mIG1pbWVUeXBlKSB7CisgICAg
ICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JF
bmNvZGluZyhtaW1lVHlwZSk7CisgICAgfSkgIT0gbm90Rm91bmQ7Cit9CisKK1ZlY3RvcjxTdHJp
bmc+IGFsbG93ZWRNSU1FVHlwZXMoY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3Mp
Cit7CisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dlZE1JTUVUeXBlczsKKworICAgIGZvciAoYXV0
byYgbWltZVR5cGUgOiBzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpCisgICAgICAgIGFsbG93ZWRN
SU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisKKyAgICBmb3IgKGF1dG8m
IGV4dGVuc2lvbiA6IHNldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKSB7CisgICAgICAgIGF1
dG8gbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0cmlt
bWVkRXh0ZW5zaW9uKGV4dGVuc2lvbikpOworICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5k
SWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbG93ZWRNSU1F
VHlwZXM7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyhjb25zdCBG
aWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhY2Nl
cHRNSU1FVHlwZXMgPSBzZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXM7CisgICAgVmVjdG9yPFN0cmlu
Zz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworCisgICAgaWYgKHNob3VsZEFwcGVuZE5vdEFjY2Vw
dGVkRXh0ZW5zaW9ucyhzZXR0aW5ncykpCisgICAgICAgIGFjY2VwdE1JTUVUeXBlcy5hcHBlbmRW
ZWN0b3IoVmVjdG9yPFN0cmluZz4oeyAiaW1hZ2UvaGVpZiIsICJpbWFnZS9oZWljIiB9KSk7CisK
KyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogYWNjZXB0TUlNRVR5cGVzKSB7CisgICAgICAgIGZv
ciAoYXV0byYgZXh0ZW5zaW9uIDogTUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zvck1JTUVU
eXBlKG1pbWVUeXBlKSkKKyAgICAgICAgICAgIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5hcHBlbmRJ
Zk5vdENvbnRhaW5zKGV4dGVuc2lvbik7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byYgZXh0
ZW5zaW9uIDogc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpCisgICAgICAgIGFsbG93ZWRG
aWxlRXh0ZW5zaW9ucy5hcHBlbmRJZk5vdENvbnRhaW5zKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5z
aW9uKSk7CisKKyAgICByZXR1cm4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3NlclNldHRpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXJTZXR0aW5ncy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyU2V0dGluZ3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgTWVk
aWFDYXB0dXJlVHlwZSA6IHVpbnQ4X3QgeworICAgIE5vbmUsCisgICAgVXNlciwKKyAgICBFbnZp
cm9ubWVudAorfTsKKworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3MgeworICAgIGJvb2wgYWxs
b3dzRGlyZWN0b3JpZXMgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTXVsdGlwbGVGaWxlcyB7
IGZhbHNlIH07CisgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0TUlNRVR5cGVzOworICAgIFZlY3Rv
cjxTdHJpbmc+IGFjY2VwdEZpbGVFeHRlbnNpb25zOworICAgIFZlY3RvcjxTdHJpbmc+IHNlbGVj
dGVkRmlsZXM7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgTWVkaWFDYXB0dXJlVHlw
ZSBtZWRpYUNhcHR1cmVUeXBlIHsgTWVkaWFDYXB0dXJlVHlwZTo6Tm9uZSB9OworI2VuZGlmCit9
OworCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzKGNvbnN0
IEZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFs
bG93ZWRGaWxlRXh0ZW5zaW9ucyhjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUsCisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6Ok1l
ZGlhQ2FwdHVyZVR5cGU6OlVzZXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6
OkVudmlyb25tZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjAtMDctMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFsbG93IHNlbGVjdGlu
ZyBIRUlGIGltYWdlcyBpZiB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGVzIGFuIGltYWdl
IE1JTUUgdHlwZSB0aGF0IHRoZSBwbGF0Zm9ybSBjYW4gdHJhbnNjb2RlIHRoZSBIRUlGIHRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdLT3Bl
blBhbmVsUGFyYW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGFuZCBhbGxvd2Vk
TUlNRVR5cGVzKCkKKyAgICAgICAgb2YgRmlsZUNob29zZXJTZXR0aW5ncyB2aWEgT3BlblBhbmVs
UGFyYW1ldGVycy4KKworICAgICAgICBVSURlbGVnYXRlIHdpbGwgZ2V0IGFsbG93ZWRNSU1FVHlw
ZXMoKSBhbmQgcGFzcyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5CisgICAg
ICAgIHdoaWNoIHdpbGwgcGFzcyBpdCB0byBXZWJQYWdlUHJveHkuIEluIGEgZm9sbG93aW5nIHBh
dGNoLCBXZWJQYWdlUHJveHkKKyAgICAgICAgd2lsbCB1c2UgYWxsb3dlZE1JTUVUeXBlcyB0byB0
cmFuc2NvZGUgdGhlIHNlbGVjdGVkIGltYWdlcyBiZWZvcmUgc2VuZGluZworICAgICAgICB0aGVt
IHRvIFdlYlBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlN
RVR5cGVzIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVy
czo6bWVkaWFDYXB0dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBh
cmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09wZW5QYW5l
bFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5Q
YW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxl
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAoY2FtZXJhRGV2aWNlRm9yTWVkaWFDYXB0
dXJlVHlwZSk6CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIHByZXNlbnRXaXRoUGFyYW1l
dGVyczpyZXN1bHRMaXN0ZW5lcjpdKToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgX2Fk
anVzdE1lZGlhQ2FwdHVyZVR5cGVdKToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgX3No
b3VsZE1lZGlhQ2FwdHVyZU9wZW5NZWRpYURldmljZV0pOgorICAgICAgICAoLVtXS0ZpbGVVcGxv
YWRQYW5lbCBfY29uZmlndXJlSW1hZ2VQaWNrZXI6XSk6CisKIDIwMjAtMDctMDMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxk
IHN1cHBvcnQgcGVlciBjb25uZWN0aW9uIHJlbW90ZSB2aWRlbyB0cmFja3MKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6
Y2gKIH0KICNlbmRpZgogCi12b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNo
b29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit2b2lkIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQogewog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPmRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcyk7CisgICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChmaWxlbmFtZXMsIGFsbG93ZWRNSU1FVHlwZXMpOwogfQogCiB2b2lkIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCgpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5oCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKLSAgICB2
b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIHZv
aWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsKCk7
CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5MCw3ICs2NjkwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlbgogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZVVSTHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0
cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlT
dHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNvbkRhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQg
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyk7CiAgICAgdm9pZCBkaWRD
YW5jZWxGb3JPcGVuUGFuZWwoKTsKIAogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3Jl
YXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAJ
KHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVu
UGFuZWxQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTIgKzU4LDE1IEBAIFJl
ZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2MKICAgICByZXR1cm4gQVBJOjpB
cnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucyk7
CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLVdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5
cGUgT3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0CitSZWY8QVBJ
OjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsKKyAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6YWxsb3dlZE1JTUVUeXBlcyhtX3Nl
dHRpbmdzKSk7Cit9CisKK1JlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxv
d2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShXZWJDb3JlOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMobV9zZXR0aW5ncykp
OwogfQotI2VuZGlmCiAKIFJlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjpzZWxl
Y3RlZEZpbGVOYW1lcygpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MzkyOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDExIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93
TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuYWxsb3dzTXVsdGlwbGVG
aWxlczsgfQogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRNSU1FVHlwZXMoKSBjb25zdDsKICAg
ICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0RmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKKyAgICBSZWY8
QVBJOjpBcnJheT4gYWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0OworICAgIFJlZjxBUEk6OkFycmF5
PiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gc2Vs
ZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLSAgICBX
ZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdDsKKyAgICBX
ZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlIG1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3NldHRpbmdzLm1lZGlhQ2FwdHVyZVR5cGU7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLm1tCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw1OSArNjYsNyBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FjY2VwdGVk
RmlsZUV4CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25z
CiB7Ci0gICAgLy8gQWdncmVnYXRlIGV4dGVuc2lvbnMgYmFzZWQgb24gc3BlY2lmaWVkIE1JTUUg
dHlwZXMuCi0gICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVU
eXBlc107Ci0gICAgYXV0byBhY2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVk
RmlsZUV4dGVuc2lvbnNdOwotCi0gICAgYXV0byBhbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBbYWNjZXB0ZWRNSU1FVHlw
ZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqbWltZVR5cGUsIE5TVUlu
dGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsKLSAgICAgICAgQVNTRVJUKFttaW1lVHlwZSBjb250
YWluc1N0cmluZzpAIi8iXSk7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IEFQSTo6QXJyYXk6
OmNyZWF0ZVN0cmluZ0FycmF5KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNG
b3JNSU1FVHlwZShtaW1lVHlwZSkpOwotICAgICAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFk
ZE9iamVjdHNGcm9tQXJyYXk6d3JhcHBlcihleHRlbnNpb25zKV07Ci0gICAgfV07Ci0KLSAgICBh
dXRvIGFkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIFthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGVudW1l
cmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNVSW50ZWdlciBp
bmRleCwgQk9PTCAqc3RvcCkgewotICAgICAgICBBU1NFUlQoW2V4dGVuc2lvbiBjaGFyYWN0ZXJB
dEluZGV4OjBdID09ICcuJyk7Ci0gICAgICAgIFthZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNp
b25zIGFkZE9iamVjdDpbZXh0ZW5zaW9uIHN1YnN0cmluZ0Zyb21JbmRleDoxXV07Ci0gICAgfV07
Ci0gICAgCi0gICAgW2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OmFk
ZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMuZ2V0KCldOwotICAgIHJldHVybiBbYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGFsbE9iamVjdHNdOwotfQotCi0tIChOU0FycmF5PE5TU3RyaW5nICo+
ICopX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcwotewotICAgIGF1dG8gYWNjZXB0ZWRNSU1F
VHlwZXMgPSBbc2VsZiBfYWNjZXB0ZWRNSU1FVHlwZXNdOwotICAgIGF1dG8gYWNjZXB0ZWRGaWxl
RXh0ZW5zaW9ucyA9IFtzZWxmIF9hY2NlcHRlZEZpbGVFeHRlbnNpb25zXTsKLQotICAgIGNvbnN0
ZXhwciBhdXRvIEFsbEZpbGVzVGl0bGUgPSBAIkFsbCBGaWxlcyI7Ci0gICAgY29uc3RleHByIGF1
dG8gQ3VzdG9tRmlsZXNUaXRsZSA9IEAiQ3VzdG9tIEZpbGVzIjsKLSAgICAKLSAgICBpZiAoIVth
Y2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50
XSkKLSAgICAgICAgcmV0dXJuIEBbQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBpZiAoIShbYWNjZXB0
ZWRNSU1FVHlwZXMgY291bnRdID09IDEgJiYgIVthY2NlcHRlZEZpbGVFeHRlbnNpb25zIGNvdW50
XSkpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwot
Ci0gICAgYXV0byBtaW1lVHlwZSA9IFthY2NlcHRlZE1JTUVUeXBlcyBmaXJzdE9iamVjdF07Ci0g
ICAgYXV0byByYW5nZSA9IFttaW1lVHlwZSByYW5nZU9mU3RyaW5nOkAiLyJdOwotICAgIAotICAg
IGlmICghcmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gQFtDdXN0b21GaWxlc1RpdGxlLCBB
bGxGaWxlc1RpdGxlXTsKLSAgICAKLSAgICBhdXRvIG1pbWVUeXBlUHJlZml4ID0gW21pbWVUeXBl
IHN1YnN0cmluZ1RvSW5kZXg6cmFuZ2UubG9jYXRpb25dOwotICAgIGF1dG8gbWltZVR5cGVTdWZm
aXggPSBbbWltZVR5cGUgc3Vic3RyaW5nRnJvbUluZGV4OnJhbmdlLmxvY2F0aW9uICsgMV07Ci0g
ICAgCi0gICAgaWYgKFttaW1lVHlwZVN1ZmZpeCBpc0VxdWFsVG9TdHJpbmc6QCIqIl0pCi0gICAg
ICAgIHJldHVybiBAW1tOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAlQCBGaWxlcyIsIFtb
bWltZVR5cGVQcmVmaXggc3Vic3RyaW5nVG9JbmRleDoxXSB1cHBlcmNhc2VTdHJpbmddLCBbbWlt
ZVR5cGVQcmVmaXggc3Vic3RyaW5nRnJvbUluZGV4OjFdXSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAg
ICBpZiAoW21pbWVUeXBlU3VmZml4IGxlbmd0aF0gPD0gNCkKLSAgICAgICAgcmV0dXJuIEBbW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIFttaW1lVHlwZVN1ZmZpeCB1cHBlcmNh
c2VTdHJpbmddLCBtaW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOwotCi0gICAgcmV0dXJu
IEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIG1pbWVUeXBlU3VmZml4LCBt
aW1lVHlwZVByZWZpeF0sIEFsbEZpbGVzVGl0bGVdOworICAgIHJldHVybiB3cmFwcGVyKF9vcGVu
UGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRl
cnNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAkocmV2aXNpb24gMjYzOTI4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1By
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsNyBAQAogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hY2NlcHRlZE1J
TUVUeXBlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKl9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSk7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiQVBJ
QXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVzdFJl
c3VsdC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgpAQCAtODI2
LDcgKzgyNyw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKIAog
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRl
cnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAgIFtkZWxlZ2F0
ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0aFBhcmFtZXRl
cnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVy
KGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBXVEZNb3Zl
KGNoZWNrZXIpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykg
bXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBy
dW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBp
bml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMgPSBt
YWtlUmVmKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVy
KV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcgKzg0MSw3IEBA
IGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCgKICAgICAgICAgZm9yIChO
U1VSTCAqdXJsIGluIFVSTHMpCiAgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKHVybC5wYXRo
KTsKIAotICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzKTsKKyAgICAgICAg
bGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcywgb3BlblBhbmVsUGFyYW1ldGVycy0+YWxs
b3dlZE1JTUVUeXBlcygpLT50b1N0cmluZ1ZlY3RvcigpKTsKICAgICB9KS5nZXQoKV07CiAKICAg
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0ZpbGVVcGxvYWRQYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0JKHJldmlzaW9uIDI2MzkyOCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogCiBzdGF0aWMgaW5saW5lIFVJSW1hZ2VQaWNrZXJDb250cm9sbGVyQ2FtZXJhRGV2
aWNlIGNhbWVyYURldmljZUZvck1lZGlhQ2FwdHVyZVR5cGUoV2ViQ29yZTo6TWVkaWFDYXB0dXJl
VHlwZSBtZWRpYUNhcHR1cmVUeXBlKQogewotICAgIHJldHVybiBtZWRpYUNhcHR1cmVUeXBlID09
IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGVVc2VyID8gVUlJbWFnZVBpY2tlckNvbnRyb2xsZXJD
YW1lcmFEZXZpY2VGcm9udCA6IFVJSW1hZ2VQaWNrZXJDb250cm9sbGVyQ2FtZXJhRGV2aWNlUmVh
cjsKKyAgICByZXR1cm4gbWVkaWFDYXB0dXJlVHlwZSA9PSBXZWJDb3JlOjpNZWRpYUNhcHR1cmVU
eXBlOjpVc2VyID8gVUlJbWFnZVBpY2tlckNvbnRyb2xsZXJDYW1lcmFEZXZpY2VGcm9udCA6IFVJ
SW1hZ2VQaWNrZXJDb250cm9sbGVyQ2FtZXJhRGV2aWNlUmVhcjsKIH0KIAogc3RhdGljIGJvb2wg
YXJyYXlDb250YWluc1VUSVRoYXRDb25mb3Jtc1RvKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnR5cGVJ
ZGVudGlmaWVycywgQ0ZTdHJpbmdSZWYgY29uZm9ybVRvVVRJKQpAQCAtMjU3LDcgKzI1Nyw3IEBA
IC0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihBUEk6Ok9wZW4KIAogICAgIF9taW1lVHlw
ZXMgPSBhZG9wdE5TKFttaW1lVHlwZXMgY29weV0pOwogCi0gICAgX21lZGlhQ2FwdHVyZVR5cGUg
PSBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlTm9uZTsKKyAgICBfbWVkaWFDYXB0dXJlVHlwZSA9
IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok5vbmU7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCiAgICAgX21lZGlhQ2FwdHVyZVR5cGUgPSBwYXJhbWV0ZXJzLT5tZWRpYUNhcHR1cmVUeXBl
KCk7CiAjZW5kaWYKQEAgLTUyOSwyMCArNTI5LDIwIEBAIC0gKHZvaWQpX2FkanVzdE1lZGlhQ2Fw
dHVyZVR5cGUKIHsKICAgICBpZiAoW1VJSW1hZ2VQaWNrZXJDb250cm9sbGVyIGlzQ2FtZXJhRGV2
aWNlQXZhaWxhYmxlOlVJSW1hZ2VQaWNrZXJDb250cm9sbGVyQ2FtZXJhRGV2aWNlRnJvbnRdIHx8
IFtVSUltYWdlUGlja2VyQ29udHJvbGxlciBpc0NhbWVyYURldmljZUF2YWlsYWJsZTpVSUltYWdl
UGlja2VyQ29udHJvbGxlckNhbWVyYURldmljZVJlYXJdKSB7CiAgICAgICAgIGlmICghW1VJSW1h
Z2VQaWNrZXJDb250cm9sbGVyIGlzQ2FtZXJhRGV2aWNlQXZhaWxhYmxlOlVJSW1hZ2VQaWNrZXJD
b250cm9sbGVyQ2FtZXJhRGV2aWNlRnJvbnRdKQotICAgICAgICAgICAgX21lZGlhQ2FwdHVyZVR5
cGUgPSBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlRW52aXJvbm1lbnQ7CisgICAgICAgICAgICBf
bWVkaWFDYXB0dXJlVHlwZSA9IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6OkVudmlyb25tZW50
OwogICAgICAgICAKICAgICAgICAgaWYgKCFbVUlJbWFnZVBpY2tlckNvbnRyb2xsZXIgaXNDYW1l
cmFEZXZpY2VBdmFpbGFibGU6VUlJbWFnZVBpY2tlckNvbnRyb2xsZXJDYW1lcmFEZXZpY2VSZWFy
XSkKLSAgICAgICAgICAgIF9tZWRpYUNhcHR1cmVUeXBlID0gV2ViQ29yZTo6TWVkaWFDYXB0dXJl
VHlwZVVzZXI7CisgICAgICAgICAgICBfbWVkaWFDYXB0dXJlVHlwZSA9IFdlYkNvcmU6Ok1lZGlh
Q2FwdHVyZVR5cGU6OlVzZXI7CiAgICAgICAgIAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIF9tZWRpYUNhcHR1cmVUeXBlID0gV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmU7
CisgICAgX21lZGlhQ2FwdHVyZVR5cGUgPSBXZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBlOjpOb25l
OwogfQogCiAtIChCT09MKV9zaG91bGRNZWRpYUNhcHR1cmVPcGVuTWVkaWFEZXZpY2UKIHsKLSAg
ICBpZiAoX21lZGlhQ2FwdHVyZVR5cGUgPT0gV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmUg
fHwgIVtVSUltYWdlUGlja2VyQ29udHJvbGxlciBpc1NvdXJjZVR5cGVBdmFpbGFibGU6VUlJbWFn
ZVBpY2tlckNvbnRyb2xsZXJTb3VyY2VUeXBlQ2FtZXJhXSkKKyAgICBpZiAoX21lZGlhQ2FwdHVy
ZVR5cGUgPT0gV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZTo6Tm9uZSB8fCAhW1VJSW1hZ2VQaWNr
ZXJDb250cm9sbGVyIGlzU291cmNlVHlwZUF2YWlsYWJsZTpVSUltYWdlUGlja2VyQ29udHJvbGxl
clNvdXJjZVR5cGVDYW1lcmFdKQogICAgICAgICByZXR1cm4gTk87CiAgICAgCiAgICAgcmV0dXJu
IFlFUzsKQEAgLTU3Myw3ICs1NzMsNyBAQCAtICh2b2lkKV9jb25maWd1cmVJbWFnZVBpY2tlcjoo
VUlJbWFnZVBpCiAgICAgW2ltYWdlUGlja2VyIHNldE1vZGFsUHJlc2VudGF0aW9uU3R5bGU6VUlN
b2RhbFByZXNlbnRhdGlvbkZ1bGxTY3JlZW5dOwogICAgIFtpbWFnZVBpY2tlciBfc2V0QWxsb3dz
TXVsdGlwbGVTZWxlY3Rpb246X2FsbG93TXVsdGlwbGVGaWxlc107CiAKLSAgICBpZiAoX21lZGlh
Q2FwdHVyZVR5cGUgIT0gV2ViQ29yZTo6TWVkaWFDYXB0dXJlVHlwZU5vbmUpCisgICAgaWYgKF9t
ZWRpYUNhcHR1cmVUeXBlICE9IFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGU6Ok5vbmUpCiAgICAg
ICAgIFtpbWFnZVBpY2tlciBzZXRDYW1lcmFEZXZpY2U6Y2FtZXJhRGV2aWNlRm9yTWVkaWFDYXB0
dXJlVHlwZShfbWVkaWFDYXB0dXJlVHlwZSldOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNy0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U10gQWxsb3cgc2VsZWN0aW5nIEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUg
aW5jbHVkZXMgYW4gaW1hZ2UgTUlNRSB0eXBlIHRoYXQgdGhlIHBsYXRmb3JtIGNhbiB0cmFuc2Nv
ZGUgdGhlIEhFSUYgdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjQ4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAo
d2ViTWVkaWFDYXB0dXJlVHlwZSk6CisKIDIwMjAtMDctMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1J
TUVUeXBlUmVnaXN0cnkgbWV0aG9kcyB0byBjb21wbHkgd2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxl
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTc2LDExICs3NiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHN0YXRpYyBXZWJNZWRpYUNhcHR1cmVUeXBlIHdlYk1lZGlhQ2FwdHVyZVR5cGUoTWVkaWFD
YXB0dXJlVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTWVkaWFD
YXB0dXJlVHlwZU5vbmU6CisgICAgY2FzZSBNZWRpYUNhcHR1cmVUeXBlOjpOb25lOgogICAgICAg
ICByZXR1cm4gV2ViTWVkaWFDYXB0dXJlVHlwZU5vbmU7Ci0gICAgY2FzZSBNZWRpYUNhcHR1cmVU
eXBlVXNlcjoKKyAgICBjYXNlIE1lZGlhQ2FwdHVyZVR5cGU6OlVzZXI6CiAgICAgICAgIHJldHVy
biBXZWJNZWRpYUNhcHR1cmVUeXBlVXNlcjsKLSAgICBjYXNlIE1lZGlhQ2FwdHVyZVR5cGVFbnZp
cm9ubWVudDoKKyAgICBjYXNlIE1lZGlhQ2FwdHVyZVR5cGU6OkVudmlyb25tZW50OgogICAgICAg
ICByZXR1cm4gV2ViTWVkaWFDYXB0dXJlVHlwZUVudmlyb25tZW50OwogICAgIH0KIApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjYzOTMwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMjAtMDctMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbbWFjT1NdIEFsbG93IHNlbGVjdGluZyBIRUlGIGltYWdlcyBpZiB0aGUg
J2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGVzIGFuIGltYWdlIE1JTUUgdHlwZSB0aGF0IHRoZSBw
bGF0Zm9ybSBjYW4gdHJhbnNjb2RlIHRoZSBIRUlGIHRvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVuIHNjb3BlIG9mIHRoZSBjaGFuZ2Ugd2lsbCBi
ZSBsaW1pdGVkLiBObyBVSSBjaGFuZ2Ugd2lsbCBiZSBkb25lLgorICAgICAgICBPbmx5IGFsbG93
IEhFSUYvSEVJQyBpbWFnZXMgdG8gYmUgc2VsZWN0ZWQgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBp
bmNsdWRlCisgICAgICAgIGEgbWltZSB0eXBlIHdoaWNoIGlzIHN1cHBvcnRlZCBmb3IgZW5jb2Rp
bmcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmll
dzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRo
T3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBU
YXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDctMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUZXN0cyB0aGF0IHNob3cgc3lzdGVt
IG1lbnUgcG9wdXBzIG1heSBmYWlsIHdoZW4gcnVuIGNvbmN1cnJlbnRseQpJbmRleDogVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJl
dmlzaW9uIDI2MzkyOCkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw0NSArNzIsNiBAQCAtICh2b2lkKXBl
cmZvcm1BY3Rpb246KE5TVGV4dEZpbmRlckFjdGlvCiAKIEBlbmQKIAotLy8gVGFyZ2V0IGZvciB0
aGUgRmlsZUV4dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3MgQWNjZXNz
b3J5Vmlldy4KLUBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0
IHsKLUBwcml2YXRlCi0gICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxO
U1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKLX0KLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKLQotLSAoaWQpaW5pdFdpdGhPcGVuUGFu
ZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5
PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKLSAgICBpZiAoKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKSB7Ci0gICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAgICAg
IF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOwot
ICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2Vu
ZGVyIHsKLSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVk
SXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCi0gICAgICAgIFtfb3BlblBhbmVs
IHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9m
U2VsZWN0ZWRJdGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVtLgotICAgICAgICBpZiAoIVtf
YWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNl
dEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW19v
cGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKLSAg
ICB9Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25z
IHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNl
IFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGU+CiBAZW5kCiAKQEAgLTEyNSw3ICs4Niw2IEBAIEBpbnRlcmZhY2UgV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgKCkKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRGaW5kZXI7
CiAgICAgTlNWaWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJWaXNpYmxl
OwotICAgIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1BvcHVwVGFy
Z2V0OwogfQogCiAtICh2b2lkKWF3YWtlRnJvbU5pYgpAQCAtMjExLDcgKzE3MSw2IEBAIC0gKHZv
aWQpZGVhbGxvYwogCiAgICAgW193ZWJWaWV3IHJlbGVhc2VdOwogICAgIFtfY29uZmlndXJhdGlv
biByZWxlYXNlXTsKLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07CiAK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC02MjksNTQgKzU4OCw2IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW4KICAgICB9XTsKIH0KIAotLSAobnVsbGFibGUg
TlNWaWV3ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDoo
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKLXsKLSAgICBOU1RleHRGaWVs
ZCogbGFiZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwot
ICAgIFtsYWJlbCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9d
OwotICAgIFtsYWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRD
b2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAg
ICBOU1BvcFVwQnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRv
biBhZGRJdGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1
cFRhcmdldF07Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOild
OwotICAgIFtidXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4
OjBdOwotICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAotICAgIE5T
VmlldyogZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9S
ZWN0XSBhdXRvcmVsZWFzZV07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpsYWJlbF07Ci0g
ICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpidXR0b25dOwotCi0gICAgY29uc3QgQ0dGbG9hdCBt
YXJnaW4gPSAyMDsKLSAgICBjb25zdCBDR0Zsb2F0IHNwYWNpbmcgPSAyOwotICAgIGNvbnN0IENH
RmxvYXQgbWluQnV0dG9uV2lkdGggPSAyMzA7Ci0KLSAgICBOU1JlY3QgbGFiZWxGcmFtZSA9IFts
YWJlbCBmcmFtZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1dHRvbiBmcmFtZV07Ci0g
ICAgTlNSZWN0IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKLQotICAgIC8v
IFNldCBhIG1pbmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUg
PSBOU01ha2VTaXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBO
U0hlaWdodChidXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkg
b3V0ICdsYWJlbCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2Fs
IG1hcmdpbnMuCi0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgo
bGFiZWxGcmFtZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdo
dChsYWJlbEZyYW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOwotICAg
IFtmaWx0ZXJWaWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07Ci0KLSAgICAvLyAnbGFiZWwn
IHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5vcmln
aW4gPSBOU01ha2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3
RnJhbWUpIC0gTlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZyYW1l
OmxhYmVsRnJhbWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQgY2Vu
dGVyIHZlcnRpY2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250YWxs
eS4KLSAgICBidXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxGcmFt
ZSkgKyBzcGFjaW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1dHRv
bkZyYW1lKSkgLyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKLQotICAg
IHJldHVybiBmaWx0ZXJWaWV3OwotfQotCiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVyaWNz
KQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQ
YXJhbWV0ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5
RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNVUkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKQEAgLTY4Niwx
NCArNTk3LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bgogICAg
IE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKIAogICAg
IG9wZW5QYW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVs
dGlwbGVTZWxlY3Rpb247Ci0KLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFz
ZV07Ci0gICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9w
dXBUYXJnZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVF
eHRlbnNpb25zOiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgTlNB
cnJheSAqYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZp
bGVFeHRlbnNpb25zVGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0
ZUZpbHRlclZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxl
RXh0ZW5zaW9uc1BvcHVwVGFyZ2V0XTsKLSAgICBpZiAoZmlsdGVyVmlldykKLSAgICAgICAgW29w
ZW5QYW5lbCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworICAgIFtvcGVuUGFuZWwgc2V0
QWxsb3dlZEZpbGVUeXBlczpwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwogCiAg
ICAgW29wZW5QYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29t
cGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQg
PT0gTlNNb2RhbFJlc3BvbnNlT0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403518</attachid>
            <date>2020-07-04 02:25:02 -0700</date>
            <delta_ts>2020-07-04 17:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200704022501.patch</filename>
            <type>text/plain</type>
            <size>23671</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA3LTA0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBB
bGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNs
dWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0
aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWxsb3cgSEVJRiBpbWFnZXMgdG8gYmUgc2VsZWN0ZWQgaWYgQ0cgY2FuIGNvbnZlcnQgdGhl
bSB0byBvbmUgb2YgdGhlCisgICAgICAgIGFjY2VwdGVkIE1JTUUgdHlwZXMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1t
ZWRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwZW5kTm90QWNjZXB0ZWRF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRN
SU1FVHlwZXMpOgorICAgICAgICBJdCByZXR1cm5zIHRoZSBzZXQgb2YgbWltZSB0eXBlcyB3aGlj
aCBpcyBzdGF0ZWQgYnkgYSBsaXN0IG9mIG1pbWUgdHlwZXMKKyAgICAgICAgYW5kIGEgbGlzdCBv
ZiBmaWxlIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEl0IHJldHVybnMgdGhlIHNldCBvZiBl
eHRlbnNpb25zIHdoaWNoIGlzIHN0YXRlZCBieSBhIGxpc3Qgb2YgbWltZSB0eXBlcworICAgICAg
ICBhbmQgYSBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucy4gVGhlIGV4dGVuc2lvbnMgb2YgdGhlIEhF
SUYvSEVJQyB3aWxsIGJlCisgICAgICAgIGFkZGVkIGFsc28gaWYgYSBNSU1FIHR5cGUgdGhhdCB0
aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0aGUgSEVJRiB0byBpcworICAgICAgICBpbmNsdWRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNy0w
MyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNv
cmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5lY3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHJl
dmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODgsNCArNzg4LDU0IEBAIFN0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW4KICAgICByZXR1cm4gbWFrZVN0cmluZyhmaWxlbmFt
ZSwgJy4nLCBwcmVmZXJyZWRFeHRlbnNpb24pOwogfQogCitzdGF0aWMgaW5saW5lIFN0cmluZyB0
cmltbWVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBl
eHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5n
dGgoKSAtIDEpIDogZXh0ZW5zaW9uOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQXBw
ZW5kTm90QWNjZXB0ZWRFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMp
Cit7CisgICAgcmV0dXJuIG1pbWVUeXBlcy5maW5kTWF0Y2hpbmcoW10oY29uc3QgYXV0byYgbWlt
ZVR5cGUpIHsKKyAgICAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKTsKKyAgICB9KSAhPSBub3RGb3VuZDsKK30K
KworVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5z
aW9ucykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzOworCisgICAgZm9y
IChhdXRvJiBtaW1lVHlwZSA6IG1pbWVUeXBlcykKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5h
cHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9u
IDogZXh0ZW5zaW9ucykgeworICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JFeHRlbnNpb24odHJpbW1lZEV4dGVuc2lvbihleHRlbnNpb24pKTsKKyAg
ICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBhbGxvd2VkTUlNRVR5cGVzLmFwcGVuZElmTm90Q29udGFpbnMobWltZVR5cGUpOworICAg
IH0KKworICAgIHJldHVybiBhbGxvd2VkTUlNRVR5cGVzOworfQorCitWZWN0b3I8U3RyaW5nPiBN
SU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkRmlsZUV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG1pbWVUeXBlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gZWZmZWN0aXZlTUlNRVR5cGVzID0gbWltZVR5cGVzOworICAgIFZlY3Rv
cjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsKKworICAgIGlmIChzaG91bGRBcHBlbmRO
b3RBY2NlcHRlZEV4dGVuc2lvbnMoYWxsb3dlZE1JTUVUeXBlcyhtaW1lVHlwZXMsIGV4dGVuc2lv
bnMpKSkgeworICAgICAgICBlZmZlY3RpdmVNSU1FVHlwZXMuYXBwZW5kKCJpbWFnZS9oZWlmIl9z
KTsKKyAgICAgICAgZWZmZWN0aXZlTUlNRVR5cGVzLmFwcGVuZCgiaW1hZ2UvaGVpYyJfcyk7Cisg
ICAgfQorCisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGVmZmVjdGl2ZU1JTUVUeXBlcykgewor
ICAgICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IE1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lv
bnNGb3JNSU1FVHlwZShtaW1lVHlwZSkpCisgICAgICAgICAgICBhbGxvd2VkRmlsZUV4dGVuc2lv
bnMuYXBwZW5kSWZOb3RDb250YWlucyhleHRlbnNpb24pOworICAgIH0KKworICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogZXh0ZW5zaW9ucykKKyAgICAgICAgYWxsb3dlZEZpbGVFeHRlbnNpb25z
LmFwcGVuZElmTm90Q29udGFpbnModHJpbW1lZEV4dGVuc2lvbihleHRlbnNpb24pKTsKKworICAg
IHJldHVybiBhbGxvd2VkRmlsZUV4dGVuc2lvbnM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgJKHJl
dmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw5IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgYXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVu
c2lvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBhbGxvd2Vk
RmlsZUV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGV4dGVuc2lvbnMpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIE1JTUUgdHlwZSBpcyBub3Qgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBh
cyBhIHRleHQKICAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLiBPbmx5IHZhbGlkIGZvciBNSU1F
IHR5cGVzIGJlZ2luaW5nIHdpdGggInRleHQvIi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM5
MjgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDM4IEBACisyMDIwLTA3LTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW21hY09TXSBBbGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYg
dGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNsdWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0
aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXS09wZW5QYW5lbFBhcmFtZXRlcnMg
Y2FsbCBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoKSBhbmQgYWxsb3dlZE1JTUVUeXBlcygpCisgICAg
ICAgIG9mIE1JTUVUeXBlUmVnaXN0cnkgdmlhIE9wZW5QYW5lbFBhcmFtZXRlcnMuCisKKyAgICAg
ICAgVUlEZWxlZ2F0ZSB3aWxsIGdldCBhbGxvd2VkTUlNRVR5cGVzKCkgYW5kIHBhc3MgaXQgdG8g
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eQorICAgICAgICB3aGljaCB3aWxsIHBhc3Mg
aXQgdG8gV2ViUGFnZVByb3h5LiBJbiBhIGZvbGxvd2luZyBwYXRjaCwgV2ViUGFnZVByb3h5Cisg
ICAgICAgIHdpbGwgdXNlIGFsbG93ZWRNSU1FVHlwZXMgdG8gdHJhbnNjb2RlIHRoZSBzZWxlY3Rl
ZCBpbWFnZXMgYmVmb3JlIHNlbmRpbmcKKyAgICAgICAgdGhlbSB0byBXZWJQYWdlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcyBjb25zdCk6CisgICAg
ICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucyBjb25z
dCk6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFy
YW1ldGVycy5oOgorICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1
cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5tbToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnNdKToKKyAgICAgICAgKC1bV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIF9hbGxv
d2VkRmlsZUV4dGVuc2lvbnNUaXRsZXNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisKIDIwMjAtMDctMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIHN1cHBvcnQgcGVlciBjb25uZWN0aW9uIHJl
bW90ZSB2aWRlbyB0cmFja3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAy
NjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDEyIEBAIHZvaWQgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2gKIH0KICNlbmRpZgogCi12b2lkIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMpCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNo
b29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1l
cyk7CisgICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMsIGFs
bG93ZWRNSU1FVHlwZXMpOwogfQogCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHk6OmNhbmNlbCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyNjM5MjgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSog
aWNvbkltYWdlRGF0YSk7CiAjZW5kaWYKLSAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlw
ZXMgPSB7IH0pOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
MjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjY5MCw3ICs2NjkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlbgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9v
c2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNTcsNyArMTI1Nyw3
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIGNvbnN0IEFQSTo6RGF0YSogaWNv
bkRhdGEpOwogI2VuZGlmCi0gICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxs
b3dlZE1JTUVUeXBlcyk7CiAgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKIAogICAg
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQ
cm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYg
PSBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJBUElTdHJpbmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtNTgsMTIgKzU5
LDE1IEBAIFJlZjxBUEk6OkFycmF5PiBPcGVuUGFuZWxQYXJhbWV0ZXJzOjphY2MKICAgICByZXR1
cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0
ZW5zaW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKLVdlYkNvcmU6Ok1lZGlh
Q2FwdHVyZVR5cGUgT3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0
CitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsKKyAgICBy
ZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhtX3NldHRpbmdzLmFjY2VwdE1JTUVUeXBlcywgbV9zZXR0
aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucykpOworfQorCitSZWY8QVBJOjpBcnJheT4gT3BlblBh
bmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6YWxsb3dlZEZpbGVFeHRlbnNpb25zKG1fc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzLCBtX3Nl
dHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKSk7CiB9Ci0jZW5kaWYKIAogUmVmPEFQSTo6QXJy
YXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OnNlbGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuaAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIs
MTEgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOyB9CiAgICAgUmVmPEFQSTo6QXJyYXk+
IGFjY2VwdE1JTUVUeXBlcygpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRGaWxl
RXh0ZW5zaW9ucygpIGNvbnN0OworICAgIFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkTUlNRVR5cGVz
KCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJyYXk+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNv
bnN0OwogICAgIFJlZjxBUEk6OkFycmF5PiBzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0OwogI2lm
IEVOQUJMRShNRURJQV9DQVBUVVJFKQotICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVk
aWFDYXB0dXJlVHlwZSgpIGNvbnN0OworICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVk
aWFDYXB0dXJlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlw
ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0JKHJldmlz
aW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2LDU5ICs2Niw3IEBAIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWNjZXB0ZWRGaWxlRXgKIAogLSAoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVuc2lvbnMKIHsKLSAgICAvLyBBZ2dyZWdhdGUgZXh0ZW5z
aW9ucyBiYXNlZCBvbiBzcGVjaWZpZWQgTUlNRSB0eXBlcy4KLSAgICBhdXRvIGFjY2VwdGVkTUlN
RVR5cGVzID0gW3NlbGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBhdXRv
IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGlu
aXRdKTsKLQotICAgIFthY2NlcHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9j
azpeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgewot
ICAgICAgICBBU1NFUlQoW21pbWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKLSAgICAgICAg
YXV0byBleHRlbnNpb25zID0gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKSk7Ci0gICAg
ICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTp3cmFwcGVyKGV4
dGVuc2lvbnMpXTsKLSAgICB9XTsKLQotICAgIGF1dG8gYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0
ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAg
W2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0
cmluZyAqZXh0ZW5zaW9uLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICpzdG9wKSB7Ci0gICAgICAg
IEFTU0VSVChbZXh0ZW5zaW9uIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJy4nKTsKLSAgICAgICAg
W2FkZGl0aW9uYWxBbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0OltleHRlbnNpb24gc3Vi
c3RyaW5nRnJvbUluZGV4OjFdXTsKLSAgICB9XTsKLSAgICAKLSAgICBbYWxsb3dlZEZpbGVFeHRl
bnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9u
cy5nZXQoKV07Ci0gICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107
Ci19Ci0KLS0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0
bGVzCi17Ci0gICAgYXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVU
eXBlc107Ci0gICAgYXV0byBhY2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVk
RmlsZUV4dGVuc2lvbnNdOwotCi0gICAgY29uc3RleHByIGF1dG8gQWxsRmlsZXNUaXRsZSA9IEAi
QWxsIEZpbGVzIjsKLSAgICBjb25zdGV4cHIgYXV0byBDdXN0b21GaWxlc1RpdGxlID0gQCJDdXN0
b20gRmlsZXMiOwotICAgIAotICAgIGlmICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAh
W2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxGaWxl
c1RpdGxlXTsKLQotICAgIGlmICghKFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAh
W2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9t
RmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBhdXRvIG1pbWVUeXBlID0gW2FjY2Vw
dGVkTUlNRVR5cGVzIGZpcnN0T2JqZWN0XTsKLSAgICBhdXRvIHJhbmdlID0gW21pbWVUeXBlIHJh
bmdlT2ZTdHJpbmc6QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5nZS5sZW5ndGgpCi0gICAgICAg
IHJldHVybiBAW0N1c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotICAgIAotICAgIGF1
dG8gbWltZVR5cGVQcmVmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2Nh
dGlvbl07Ci0gICAgYXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9t
SW5kZXg6cmFuZ2UubG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4
IGlzRXF1YWxUb1N0cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQCVAIEZpbGVzIiwgW1ttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdUb0lu
ZGV4OjFdIHVwcGVyY2FzZVN0cmluZ10sIFttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdGcm9tSW5k
ZXg6MV1dLCBBbGxGaWxlc1RpdGxlXTsKLQotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3Ro
XSA8PSA0KQotICAgICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
ICVAIiwgW21pbWVUeXBlU3VmZml4IHVwcGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwg
QWxsRmlsZXNUaXRsZV07Ci0KLSAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVAICVAIiwgbWltZVR5cGVTdWZmaXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRs
ZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRGaWxl
RXh0ZW5zaW9ucygpKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJp
dmF0ZS5oCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw4ICszMSw3IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAogQGVuZAogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2Mzky
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
VUlEZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiQVBJRnJhbWVJ
bmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCkBAIC04MjYsNyArODI3LDcgQEAgYm9vbCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKAogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2Vi
VmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOikpOwogCi0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0
ZXJzKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGxpc3RlbmVyID0gV1RGTW92
ZShsaXN0ZW5lcildIChOU0FycmF5ICpVUkxzKSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2Vi
VmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndy
YXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFt
ZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVj
a2VyKSwgb3BlblBhbmVsUGFyYW1ldGVycyA9IG1ha2VSZWYoKm9wZW5QYW5lbFBhcmFtZXRlcnMp
LCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CkBAIC04NDAsNyArODQxLDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuT3BlblBhbmVsKAogICAgICAgICBmb3IgKE5TVVJMICp1cmwgaW4gVVJMcykKICAgICAgICAg
ICAgIGZpbGVuYW1lcy5hcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAgIGxpc3RlbmVyLT5jaG9v
c2VGaWxlcyhmaWxlbmFtZXMpOworICAgICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5h
bWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJzLT5hbGxvd2VkTUlNRVR5cGVzKCktPnRvU3RyaW5nVmVj
dG9yKCkpOwogICAgIH0pLmdldCgpXTsKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzOTMw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMDctMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbbWFjT1NdIEFsbG93IHNlbGVjdGluZyBIRUlGIGltYWdlcyBpZiB0aGUgJ2FjY2Vw
dCcgYXR0cmlidXRlIGluY2x1ZGVzIGFuIGltYWdlIE1JTUUgdHlwZSB0aGF0IHRoZSBwbGF0Zm9y
bSBjYW4gdHJhbnNjb2RlIHRoZSBIRUlGIHRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVuIHNjb3BlIG9mIHRoZSBjaGFuZ2Ugd2lsbCBiZSBsaW1p
dGVkLiBObyBVSSBjaGFuZ2Ugd2lsbCBiZSBkb25lLgorICAgICAgICBPbmx5IGFsbG93IEhFSUYv
SEVJQyBpbWFnZXMgdG8gYmUgc2VsZWN0ZWQgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNsdWRl
CisgICAgICAgIGEgbWltZSB0eXBlIHdoaWNoIGlzIHN1cHBvcnRlZCBmb3IgZW5jb2RpbmcuCisK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToK
KyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAg
ICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQ
YXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5P
cGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBh
bmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
RmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNyZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6
XSk6IERlbGV0ZWQuCisKIDIwMjAtMDctMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBUZXN0cyB0aGF0IHNob3cgc3lzdGVtIG1lbnUg
cG9wdXBzIG1heSBmYWlsIHdoZW4gcnVuIGNvbmN1cnJlbnRseQpJbmRleDogVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9u
IDI2MzkyOCkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw0NSArNzIsNiBAQCAtICh2b2lkKXBlcmZvcm1B
Y3Rpb246KE5TVGV4dEZpbmRlckFjdGlvCiAKIEBlbmQKIAotLy8gVGFyZ2V0IGZvciB0aGUgRmls
ZUV4dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3MgQWNjZXNzb3J5Vmll
dy4KLUBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKLUBw
cml2YXRlCi0gICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxOU1N0cmlu
ZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKLX0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKLQotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5T
T3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3Ry
aW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKLSAgICBpZiAoKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKSB7Ci0gICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAgICAgIF9hbGxv
d2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOwotICAgIH0K
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsK
LSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0g
PT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCi0gICAgICAgIFtfb3BlblBhbmVsIHNldEFs
bG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9mU2VsZWN0
ZWRJdGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVtLgotICAgICAgICBpZiAoIVtfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93
ZWRGaWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW19vcGVuUGFu
ZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKLSAgICB9Ci19
Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVh
c2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNlIFdLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIsIFdLTmF2
aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+CiBA
ZW5kCiAKQEAgLTEyNSw3ICs4Niw2IEBAIEBpbnRlcmZhY2UgV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgKCkKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRGaW5kZXI7CiAgICAg
TlNWaWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJWaXNpYmxlOwotICAg
IEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Owog
fQogCiAtICh2b2lkKWF3YWtlRnJvbU5pYgpAQCAtMjExLDcgKzE3MSw2IEBAIC0gKHZvaWQpZGVh
bGxvYwogCiAgICAgW193ZWJWaWV3IHJlbGVhc2VdOwogICAgIFtfY29uZmlndXJhdGlvbiByZWxl
YXNlXTsKLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07CiAKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CkBAIC02MjksNTQgKzU4OCw2IEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW4KICAgICB9XTsKIH0KIAotLSAobnVsbGFibGUgTlNWaWV3
ICopY3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4
dGVuc2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKLXsKLSAgICBOU1RleHRGaWVsZCogbGFi
ZWwgPSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRv
cmVsZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFts
YWJlbCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAg
IFtsYWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpb
TlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1Bv
cFVwQnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TWmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJ
dGVtc1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdl
dF07Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAg
IFtidXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwot
ICAgIFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAotICAgIE5TVmlldyog
ZmlsdGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBh
dXRvcmVsZWFzZV07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpsYWJlbF07Ci0gICAgW2Zp
bHRlclZpZXcgYWRkU3VidmlldzpidXR0b25dOwotCi0gICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4g
PSAyMDsKLSAgICBjb25zdCBDR0Zsb2F0IHNwYWNpbmcgPSAyOwotICAgIGNvbnN0IENHRmxvYXQg
bWluQnV0dG9uV2lkdGggPSAyMzA7Ci0KLSAgICBOU1JlY3QgbGFiZWxGcmFtZSA9IFtsYWJlbCBm
cmFtZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1dHRvbiBmcmFtZV07Ci0gICAgTlNS
ZWN0IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKLQotICAgIC8vIFNldCBh
IG1pbmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01h
a2VTaXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdo
dChidXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICds
YWJlbCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdp
bnMuCi0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxG
cmFtZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJl
bEZyYW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOwotICAgIFtmaWx0
ZXJWaWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07Ci0KLSAgICAvLyAnbGFiZWwnIHdpbGwg
YmUgbGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5vcmlnaW4gPSBO
U01ha2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUp
IC0gTlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZyYW1lOmxhYmVs
RnJhbWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZl
cnRpY2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250YWxseS4KLSAg
ICBidXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxGcmFtZSkgKyBz
cGFjaW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1dHRvbkZyYW1l
KSkgLyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKLQotICAgIHJldHVy
biBmaWx0ZXJWaWV3OwotfQotCiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVyaWNzKQogLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0
ZXJzOihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8
TlNVUkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKQEAgLTY4NiwxNCArNTk3
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bgogICAgIE5TT3Bl
blBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKIAogICAgIG9wZW5Q
YW5lbC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb247Ci0KLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0g
ICAgX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJn
ZXQgYWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNp
b25zOiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgTlNBcnJheSAq
YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRl
clZpZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5z
aW9uc1BvcHVwVGFyZ2V0XTsKLSAgICBpZiAoZmlsdGVyVmlldykKLSAgICAgICAgW29wZW5QYW5l
bCBzZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dl
ZEZpbGVUeXBlczpwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwogCiAgICAgW29w
ZW5QYW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29tcGxldGlv
bkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNN
b2RhbFJlc3BvbnNlT0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403538</attachid>
            <date>2020-07-04 17:00:10 -0700</date>
            <delta_ts>2020-07-05 02:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200704170009.patch</filename>
            <type>text/plain</type>
            <size>24922</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA3LTA0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBB
bGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBpbmNs
dWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29kZSB0
aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdG8gTUlNRVR5cGVSZWdpc3RyeS4gVGhlc2Ug
bmV3IGZ1bmN0aW9ucyB3aWxsCisgICAgICAgIGRlYWwgd2l0aCBhIGxpc3Qgb2YgTUlNRSB0eXBl
cyBjb21iaW5lZCB3aXRoIGEgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMuCisgICAgICAgIFRoZXkg
YXJlIGdvaW5nIHRvIGJlIHVzZWQgdGhlIEZpbGVDaG9vc2VyU2V0dGluZ3Mgd2hpY2ggcmVmbGVj
dHMgdGhlIAorICAgICAgICAnYWNjZXB0JyBhdHRyaWJ1dGUgb2YgdGhlIDxpbnB1dD4gZmlsZSBl
bGVtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0cmltbWVkRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OnByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpjb250YWluc0ltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyk6CisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRNSU1F
VHlwZXMpOgorICAgICAgICBJdCByZXR1cm5zIHRoZSBzZXQgb2YgbWltZSB0eXBlcyB3aGljaCBp
cyBzdGF0ZWQgYnkgYSBsaXN0IG9mIG1pbWUgdHlwZXMKKyAgICAgICAgYW5kIGEgbGlzdCBvZiBm
aWxlIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFs
bG93ZWRGaWxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEl0IHJldHVybnMgdGhlIHNldCBvZiBleHRl
bnNpb25zIHdoaWNoIGlzIHN0YXRlZCBieSBhIGxpc3Qgb2YgbWltZSB0eXBlcworICAgICAgICBh
bmQgYSBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNy0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWVkaWFSZWNvcmRlciBzaG91bGQgc3VwcG9ydCBwZWVyIGNvbm5l
Y3Rpb24gcmVtb3RlIHZpZGVvIHRyYWNrcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODgs
NCArNzg4LDU3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW4KICAg
ICByZXR1cm4gbWFrZVN0cmluZyhmaWxlbmFtZSwgJy4nLCBwcmVmZXJyZWRFeHRlbnNpb24pOwog
fQogCitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmltbWVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBleHRlbnNpb24uc3RhcnRzV2l0aCgnLicpID8gZXh0
ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDogZXh0ZW5zaW9uOworfQorCitT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5n
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBl
eHRlbnNpb25zKQoreworICAgIGF1dG8gYWxsb3dlZE1JTUVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0
cnk6OmFsbG93ZWRNSU1FVHlwZXMobWltZVR5cGVzLCBleHRlbnNpb25zKTsKKworICAgIGF1dG8g
cG9zaXRpb24gPSBhbGxvd2VkTUlNRVR5cGVzLmZpbmRNYXRjaGluZyhbXShjb25zdCBhdXRvJiBt
aW1lVHlwZSkgeworICAgICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpOworICAgIH0pOworICAgIAorICAgIHJl
dHVybiBwb3NpdGlvbiAhPSBub3RGb3VuZCA/IGFsbG93ZWRNSU1FVHlwZXNbcG9zaXRpb25dIDog
bnVsbFN0cmluZygpOworfQorCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmNvbnRhaW5zSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKQoreworICAgIHJldHVybiAhTUlNRVR5cGVSZWdp
c3RyeTo6cHJlZmVycmVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlcywgZXh0ZW5z
aW9ucykuaXNOdWxsKCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmFs
bG93ZWRNSU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGV4dGVuc2lvbnMpCit7CisgICAgVmVjdG9yPFN0cmluZz4gYWxsb3dlZE1J
TUVUeXBlczsKKworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMpCisgICAgICAg
IGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyhtaW1lVHlwZSk7CisKKyAgICBm
b3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnMpIHsKKyAgICAgICAgYXV0byBtaW1lVHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKHRyaW1tZWRFeHRlbnNp
b24oZXh0ZW5zaW9uKSk7CisgICAgICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBlcy5hcHBlbmRJZk5vdENvbnRh
aW5zKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsb3dlZE1JTUVUeXBlczsKK30K
KworVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZEZpbGVFeHRlbnNpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBl
eHRlbnNpb25zKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRGaWxlRXh0ZW5zaW9uczsK
KworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBleHRlbnNpb24gOiBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9yTUlNRVR5cGUo
bWltZVR5cGUpKQorICAgICAgICAgICAgYWxsb3dlZEZpbGVFeHRlbnNpb25zLmFwcGVuZElmTm90
Q29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6
IGV4dGVuc2lvbnMpCisgICAgICAgIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5hcHBlbmRJZk5vdENv
bnRhaW5zKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5zaW9uKSk7CisKKyAgICByZXR1cm4gYWxsb3dl
ZEZpbGVFeHRlbnNpb25zOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCShyZXZpc2lvbiAyNjM5Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Miw2ICsxNDIsMTEgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFN0cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIHByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9u
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29udGFpbnNJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGV4dGVuc2lvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8
U3RyaW5nPiBhbGxvd2VkTUlNRVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gYWxsb3dlZEZpbGVFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKTsKKyAg
ICAKIHByaXZhdGU6CiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNSU1FIHR5cGUgaXMgbm90
IHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYSB0ZXh0CiAgICAgLy8gZG9jdW1lbnQgaW4g
YSBmcmFtZS4gT25seSB2YWxpZCBmb3IgTUlNRSB0eXBlcyBiZWdpbmluZyB3aXRoICJ0ZXh0LyIu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wNy0wNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWxs
b3cgc2VsZWN0aW5nIEhFSUYgaW1hZ2VzIGlmIHRoZSAnYWNjZXB0JyBhdHRyaWJ1dGUgaW5jbHVk
ZXMgYW4gaW1hZ2UgTUlNRSB0eXBlIHRoYXQgdGhlIHBsYXRmb3JtIGNhbiB0cmFuc2NvZGUgdGhl
IEhFSUYgdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMjQ4OQorCisgICAgICAgIE1ha2UgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzIGNhbGwgYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKCkgYW5kIGFsbG93ZWRNSU1FVHlwZXMoKQorICAgICAgICBvZiBNSU1F
VHlwZVJlZ2lzdHJ5IHZpYSBPcGVuUGFuZWxQYXJhbWV0ZXJzLgorCisgICAgICAgIFVJRGVsZWdh
dGUgd2lsbCBnZXQgYWxsb3dlZE1JTUVUeXBlcygpIGFuZCBwYXNzIGl0IHRvIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkKKyAgICAgICAgd2hpY2ggd2lsbCBwYXNzIGl0IHRvIFdlYlBh
Z2VQcm94eS4gSW4gYSBmb2xsb3dpbmcgcGF0Y2gsIFdlYlBhZ2VQcm94eQorICAgICAgICB3aWxs
IHVzZSBhbGxvd2VkTUlNRVR5cGVzIHRvIHRyYW5zY29kZSB0aGUgc2VsZWN0ZWQgaW1hZ2VzIGJl
Zm9yZSBzZW5kaW5nCisgICAgICAgIHRoZW0gdG8gV2ViUGFnZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChBUEk6Ok9wZW5Q
YW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMgY29uc3QpOgorICAgICAgICAoQVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkRmlsZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAg
ICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjptZWRpYUNhcHR1cmVUeXBlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0dXJlVHlwZSBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRlbnNp
b25zXSk6CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dlZEZpbGVFeHRl
bnNpb25zVGl0bGVzXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5PcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAy
MDIwLTA3LTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
ZWRpYVJlY29yZGVyIHNob3VsZCBzdXBwb3J0IHBlZXIgY29ubmVjdGlvbiByZW1vdGUgdmlkZW8g
dHJhY2tzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjYzOTI4KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwxMiBAQCB2b2lkIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHk6OmNoCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzKQordm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxs
b3dlZE1JTUVUeXBlcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLT5kaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMpOworICAgIG1f
cGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZW5hbWVzLCBhbGxvd2VkTUlNRVR5
cGVzKTsKIH0KIAogdm9pZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwo
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjYzOTI4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25JbWFnZURh
dGEpOwogI2VuZGlmCi0gICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKTsKKyAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzID0geyB9KTsK
ICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MzkyOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2OTAsNyArNjY5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW4KIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
VVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBwdWJsaWM6
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3Bl
blBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6OkRhdGEqIGljb25EYXRhKTsKICNl
bmRpZgotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsbG93ZWRNSU1FVHlw
ZXMpOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CiAKICAgICBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3
aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjM5MjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJU3Ry
aW5nLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTU4LDEyICs1OSwyOCBAQCBSZWY8
QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWNjCiAgICAgcmV0dXJuIEFQSTo6QXJy
YXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpOwog
fQogCi0jaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi1XZWJDb3JlOjpNZWRpYUNhcHR1cmVUeXBl
IE9wZW5QYW5lbFBhcmFtZXRlcnM6Om1lZGlhQ2FwdHVyZVR5cGUoKSBjb25zdAorUmVmPEFQSTo6
QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3NldHRpbmdzLm1lZGlhQ2FwdHVyZVR5cGU7CisgICAgcmV0dXJuIEFQSTo6
QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFsbG93
ZWRNSU1FVHlwZXMobV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMsIG1fc2V0dGluZ3MuYWNjZXB0
RmlsZUV4dGVuc2lvbnMpKTsKIH0KKworUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRl
cnM6OmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGF1dG8gYWNjZXB0TUlNRVR5cGVzID0gbV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXM7CisK
KyAgICAvLyBPbiBtYWNPUyBhbGxvdyBzZWxlY3RpbmcgSEVJRi9IRUlDIGltYWdlcyBpZiBhY2Nl
cHRNSU1FVHlwZXMgb3IgYWNjZXB0RmlsZUV4dGVuc2lvbnMgaW5jbHVkZSBhdCBsZWFzdAorICAg
IC8vIG9uZSBNSU1FIHR5cGUgd2hpY2ggQ0cgc3VwcG9ydHMgZW5jb2RpbmcgdG8uCisgICAgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmNvbnRhaW5zSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGFjY2Vw
dE1JTUVUeXBlcywgbV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucykpIHsKKyAgICAgICAg
YWNjZXB0TUlNRVR5cGVzLmFwcGVuZCgiaW1hZ2UvaGVpZiJfcyk7CisgICAgICAgIGFjY2VwdE1J
TUVUeXBlcy5hcHBlbmQoImltYWdlL2hlaWMiX3MpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
QVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
YWxsb3dlZEZpbGVFeHRlbnNpb25zKGFjY2VwdE1JTUVUeXBlcywgbV9zZXR0aW5ncy5hY2NlcHRG
aWxlRXh0ZW5zaW9ucykpOworI2Vsc2UKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3Ry
aW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZEZpbGVFeHRlbnNpb25z
KG1fc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzLCBtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNp
b25zKSk7CiAjZW5kaWYKK30KIAogUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6
OnNlbGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjYz
OTI4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
YWxsb3dNdWx0aXBsZUZpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5hbGxvd3NNdWx0
aXBsZUZpbGVzOyB9CiAgICAgUmVmPEFQSTo6QXJyYXk+IGFjY2VwdE1JTUVUeXBlcygpIGNvbnN0
OwogICAgIFJlZjxBUEk6OkFycmF5PiBhY2NlcHRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OworICAg
IFJlZjxBUEk6OkFycmF5PiBhbGxvd2VkTUlNRVR5cGVzKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6
QXJyYXk+IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIFJlZjxBUEk6OkFycmF5
PiBzZWxlY3RlZEZpbGVOYW1lcygpIGNvbnN0OwogI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQot
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0Owor
ICAgIFdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgbWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0JKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTY2LDU5ICs2Niw3IEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWNj
ZXB0ZWRGaWxlRXgKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dGVu
c2lvbnMKIHsKLSAgICAvLyBBZ2dyZWdhdGUgZXh0ZW5zaW9ucyBiYXNlZCBvbiBzcGVjaWZpZWQg
TUlNRSB0eXBlcy4KLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3NlbGYgX2FjY2VwdGVk
TUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMgPSBbc2VsZiBfYWNj
ZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBhdXRvIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9
IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKLQotICAgIFthY2NlcHRlZE1J
TUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICptaW1lVHlwZSwg
TlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgewotICAgICAgICBBU1NFUlQoW21pbWVUeXBl
IGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKLSAgICAgICAgYXV0byBleHRlbnNpb25zID0gQVBJOjpB
cnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKSk7Ci0gICAgICAgIFthbGxvd2VkRmlsZUV4dGVuc2lv
bnMgYWRkT2JqZWN0c0Zyb21BcnJheTp3cmFwcGVyKGV4dGVuc2lvbnMpXTsKLSAgICB9XTsKLQot
ICAgIGF1dG8gYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
ZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1VJbnRl
Z2VyIGluZGV4LCBCT09MICpzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbZXh0ZW5zaW9uIGNoYXJh
Y3RlckF0SW5kZXg6MF0gPT0gJy4nKTsKLSAgICAgICAgW2FkZGl0aW9uYWxBbGxvd2VkRmlsZUV4
dGVuc2lvbnMgYWRkT2JqZWN0OltleHRlbnNpb24gc3Vic3RyaW5nRnJvbUluZGV4OjFdXTsKLSAg
ICB9XTsKLSAgICAKLSAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJy
YXk6YWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5nZXQoKV07Ci0gICAgcmV0dXJuIFth
bGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107Ci19Ci0KLS0gKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCi17Ci0gICAgYXV0byBhY2NlcHRl
ZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAgYXV0byBhY2NlcHRl
ZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAg
Y29uc3RleHByIGF1dG8gQWxsRmlsZXNUaXRsZSA9IEAiQWxsIEZpbGVzIjsKLSAgICBjb25zdGV4
cHIgYXV0byBDdXN0b21GaWxlc1RpdGxlID0gQCJDdXN0b20gRmlsZXMiOwotICAgIAotICAgIGlm
ICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxGaWxlc1RpdGxlXTsKLQotICAgIGlmICghKFth
Y2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
Y291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwgQWxsRmlsZXNUaXRs
ZV07Ci0KLSAgICBhdXRvIG1pbWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVzIGZpcnN0T2JqZWN0
XTsKLSAgICBhdXRvIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6QCIvIl07Ci0gICAg
Ci0gICAgaWYgKCFyYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAW0N1c3RvbUZpbGVzVGl0
bGUsIEFsbEZpbGVzVGl0bGVdOwotICAgIAotICAgIGF1dG8gbWltZVR5cGVQcmVmaXggPSBbbWlt
ZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07Ci0gICAgYXV0byBtaW1lVHlw
ZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2UubG9jYXRpb24gKyAx
XTsKLSAgICAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0cmluZzpAIioiXSkK
LSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCVAIEZpbGVz
IiwgW1ttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVyY2FzZVN0cmluZ10s
IFttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dLCBBbGxGaWxlc1RpdGxlXTsK
LQotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAgICAgICByZXR1cm4g
QFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW21pbWVUeXBlU3VmZml4IHVw
cGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07Ci0KLSAgICBy
ZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgbWltZVR5cGVTdWZm
aXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgcmV0dXJuIHdyYXBwZXIo
X29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpKTsKIH0KIAogQGVu
ZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFy
YW1ldGVyc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjM5Mjgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw3IEBACiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2Vw
dGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0
ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2Fs
bG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAq
X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEz
LjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpKTsKIAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2MzkyOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogCisjaW1wb3J0
ICJBUElBcnJheS5oIgogI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRU
ZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCkBA
IC04MjYsNyArODI3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVs
KAogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFy
YW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwogCi0gICAgW2Rl
bGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFy
YW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSBpbml0aWF0ZWRCeUZyYW1lOndy
YXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdU
Rk1vdmUoY2hlY2tlciksIGxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcildIChOU0FycmF5ICpV
UkxzKSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRl
cnMpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgb3BlblBhbmVsUGFyYW1ldGVy
cyA9IG1ha2VSZWYoKm9wZW5QYW5lbFBhcmFtZXRlcnMpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlz
dGVuZXIpXSAoTlNBcnJheSAqVVJMcykgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5j
b21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NDAsNyArODQx
LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKAogICAgICAgICBm
b3IgKE5TVVJMICp1cmwgaW4gVVJMcykKICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQodXJs
LnBhdGgpOwogCi0gICAgICAgIGxpc3RlbmVyLT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMpOworICAg
ICAgICBsaXN0ZW5lci0+Y2hvb3NlRmlsZXMoZmlsZW5hbWVzLCBvcGVuUGFuZWxQYXJhbWV0ZXJz
LT5hbGxvd2VkTUlNRVR5cGVzKCktPnRvU3RyaW5nVmVjdG9yKCkpOwogICAgIH0pLmdldCgpXTsK
IAogICAgIHJldHVybiB0cnVlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzOTQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDctMDQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFsbG93IHNl
bGVjdGluZyBIRUlGIGltYWdlcyBpZiB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGVzIGFu
IGltYWdlIE1JTUUgdHlwZSB0aGF0IHRoZSBwbGF0Zm9ybSBjYW4gdHJhbnNjb2RlIHRoZSBIRUlG
IHRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
c2NvcGUgb2YgdGhpcyBlbmhhbmNlbWVudCB3aWxsIGJlIHNjYWxlZCBkb3duLiBObyBVSSBjaGFu
Z2Ugd2lsbCBiZQorICAgICAgICBkb25lIGZvciBub3cuIE9ubHkgYWxsb3cgSEVJRi9IRUlDIGlt
YWdlcyB0byBiZSBzZWxlY3RlZCBpZiB0aGUgJ2FjY2VwdCcKKyAgICAgICAgYXR0cmlidXRlIGlu
Y2x1ZGUgYSBtaW1lIHR5cGUgd2hpY2ggQ0cgc3VwcG9ydHMgdHJhbnNjb2RpbmcgdGhlIEhFSUYv
SEVJQworICAgICAgICBpbWFnZXMgdG8uCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ciB3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6d2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0
ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtGaWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0IGluaXRXaXRoT3BlblBhbmVsOmFsbG93ZWRGaWxlRXh0ZW5zaW9uczpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBwb3B1cEFjdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBkZWFs
bG9jXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNy
ZWF0ZUZpbHRlclZpZXc6cG9wdXBUYXJnZXQ6XSk6IERlbGV0ZWQuCisKIDIwMjAtMDctMDQgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIGFs
bCBmZWF0dXJlcyBmcm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGFscmVhZHkg
bWVudGlvbmVkIGluIFBsYXRmb3JtRW5hYmxlQ29jb2EuaApJbmRleDogVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
TWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDI2
MzkyOCkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ci5tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw0NSArNzIsNiBAQCAtICh2b2lkKXBlcmZvcm1BY3Rp
b246KE5TVGV4dEZpbmRlckFjdGlvCiAKIEBlbmQKIAotLy8gVGFyZ2V0IGZvciB0aGUgRmlsZUV4
dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUgT3BlblBhbmVsJ3MgQWNjZXNzb3J5Vmlldy4K
LUBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCA6IE5TT2JqZWN0IHsKLUBwcml2
YXRlCi0gICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFuZWw7Ci0gICAgTlNBcnJheTxOU1N0cmluZyAq
PiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKLX0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKLQotLSAoaWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3Bl
blBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5n
ICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsKLSAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKSB7Ci0gICAgICAgIF9vcGVuUGFuZWwgPSBvcGVuUGFuZWw7Ci0gICAgICAgIF9hbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvcHldOwotICAgIH0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClwb3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKLSAg
ICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5kZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0gPT0g
W3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCi0gICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93
ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlmICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJ
dGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVtLgotICAgICAgICBpZiAoIVtfYWxsb3dlZEZp
bGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRG
aWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgW19vcGVuUGFuZWwg
c2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZpbGVFeHRlbnNpb25zXTsKLSAgICB9Ci19Ci0K
LS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotQGVuZAotCiBAaW50ZXJmYWNlIFdLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRGaW5kZXJCYXJDb250YWluZXIsIFdLTmF2aWdh
dGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+CiBAZW5k
CiAKQEAgLTEyNSw3ICs4Niw2IEBAIEBpbnRlcmZhY2UgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgKCkKICAgICBNaW5pQnJvd3Nlck5TVGV4dEZpbmRlciAqX3RleHRGaW5kZXI7CiAgICAgTlNW
aWV3ICpfdGV4dEZpbmRCYXJWaWV3OwogICAgIEJPT0wgX2ZpbmRCYXJWaXNpYmxlOwotICAgIEZp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgKl9maWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0OwogfQog
CiAtICh2b2lkKWF3YWtlRnJvbU5pYgpAQCAtMjExLDcgKzE3MSw2IEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAgICAgW193ZWJWaWV3IHJlbGVhc2VdOwogICAgIFtfY29uZmlndXJhdGlvbiByZWxlYXNl
XTsKLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07CiAKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CkBAIC02MjksNTQgKzU4OCw2IEBAIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBydW4KICAgICB9XTsKIH0KIAotLSAobnVsbGFibGUgTlNWaWV3ICop
Y3JlYXRlRmlsdGVyVmlldzooTlNBcnJheSAqKXRpdGxlcyBwb3B1cFRhcmdldDooRmlsZUV4dGVu
c2lvbnNQb3B1cFRhcmdldCopcG9wdXBUYXJnZXQKLXsKLSAgICBOU1RleHRGaWVsZCogbGFiZWwg
PSBbW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRvcmVs
ZWFzZV07Ci0gICAgW2xhYmVsIHNldFN0cmluZ1ZhbHVlOkAiRm9ybWF0OiJdOwotICAgIFtsYWJl
bCBzZXRFZGl0YWJsZTpOT107Ci0gICAgW2xhYmVsIHNldFNlbGVjdGFibGU6Tk9dOwotICAgIFts
YWJlbCBzZXRCb3JkZXJlZDpOT107Ci0gICAgW2xhYmVsIHNldEJhY2tncm91bmRDb2xvcjpbTlND
b2xvciBjbGVhckNvbG9yXV07Ci0gICAgW2xhYmVsIHNpemVUb0ZpdF07Ci0KLSAgICBOU1BvcFVw
QnV0dG9uICpidXR0b24gPSBbW1tOU1BvcFVwQnV0dG9uIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3QgcHVsbHNEb3duOk5PXSBhdXRvcmVsZWFzZV07Ci0gICAgW2J1dHRvbiBhZGRJdGVt
c1dpdGhUaXRsZXM6dGl0bGVzXTsKLSAgICBbYnV0dG9uIHNldFRhcmdldDpwb3B1cFRhcmdldF07
Ci0gICAgW2J1dHRvbiBzZXRBY3Rpb246QHNlbGVjdG9yKHBvcHVwQWN0aW9uOildOwotICAgIFti
dXR0b24gc2l6ZVRvRml0XTsKLSAgICBbYnV0dG9uIHNlbGVjdEl0ZW1BdEluZGV4OjBdOwotICAg
IFtwb3B1cFRhcmdldCBwb3B1cEFjdGlvbjpidXR0b25dOwotICAgIAotICAgIE5TVmlldyogZmls
dGVyVmlldyA9IFtbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSBhdXRv
cmVsZWFzZV07Ci0gICAgW2ZpbHRlclZpZXcgYWRkU3VidmlldzpsYWJlbF07Ci0gICAgW2ZpbHRl
clZpZXcgYWRkU3VidmlldzpidXR0b25dOwotCi0gICAgY29uc3QgQ0dGbG9hdCBtYXJnaW4gPSAy
MDsKLSAgICBjb25zdCBDR0Zsb2F0IHNwYWNpbmcgPSAyOwotICAgIGNvbnN0IENHRmxvYXQgbWlu
QnV0dG9uV2lkdGggPSAyMzA7Ci0KLSAgICBOU1JlY3QgbGFiZWxGcmFtZSA9IFtsYWJlbCBmcmFt
ZV07Ci0gICAgTlNSZWN0IGJ1dHRvbkZyYW1lID0gW2J1dHRvbiBmcmFtZV07Ci0gICAgTlNSZWN0
IGZpbHRlclZpZXdGcmFtZSA9IFtmaWx0ZXJWaWV3IGZyYW1lXTsKLQotICAgIC8vIFNldCBhIG1p
bmltdW0gd2lkdGggZm9yICdidXR0b24nLgotICAgIGJ1dHRvbkZyYW1lLnNpemUgPSBOU01ha2VT
aXplKE1BWChOU1dpZHRoKGJ1dHRvbkZyYW1lKSwgbWluQnV0dG9uV2lkdGgpLCBOU0hlaWdodChi
dXR0b25GcmFtZSkpOwotICAgIAotICAgIC8vIEZpbHRlclZpZXcgd2lsbCBsYXkgb3V0ICdsYWJl
bCcgYW5kICdidXR0b24nIGhvcml6b250YWxseSBhbmQgaGF2ZSBhIHZlcnRpY2FsIG1hcmdpbnMu
Ci0gICAgZmlsdGVyVmlld0ZyYW1lLnNpemUgPSBOU01ha2VTaXplKE5TV2lkdGgobGFiZWxGcmFt
ZSkgKyBOU1dpZHRoKGJ1dHRvbkZyYW1lKSArIHNwYWNpbmcsIE1BWChOU0hlaWdodChsYWJlbEZy
YW1lKSwgTlNIZWlnaHQoYnV0dG9uRnJhbWUpKSArIG1hcmdpbiAqIDIpOwotICAgIFtmaWx0ZXJW
aWV3IHNldEZyYW1lOmZpbHRlclZpZXdGcmFtZV07Ci0KLSAgICAvLyAnbGFiZWwnIHdpbGwgYmUg
bGFpZCBvdXQgY2VudGVyIHZlcnRpY2FsbHkuCi0gICAgbGFiZWxGcmFtZS5vcmlnaW4gPSBOU01h
a2VQb2ludChOU01pblgobGFiZWxGcmFtZSksIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0g
TlNIZWlnaHQobGFiZWxGcmFtZSkpIC8gMik7Ci0gICAgW2xhYmVsIHNldEZyYW1lOmxhYmVsRnJh
bWVdOwotICAgIAotICAgIC8vICdidXR0b24nIHdpbGwgYmUgbGFpZCBvdXQgY2VudGVyIHZlcnRp
Y2FsbHkgYW5kIGl0IHdpbGwgY29tZSBhZnRlciAnbGFiZWwnIGhvcml6b250YWxseS4KLSAgICBi
dXR0b25GcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludChOU01heFgobGFiZWxGcmFtZSkgKyBzcGFj
aW5nLCAoTlNIZWlnaHQoZmlsdGVyVmlld0ZyYW1lKSAtIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSkg
LyAyKTsKLSAgICBbYnV0dG9uIHNldEZyYW1lOmJ1dHRvbkZyYW1lXTsKLQotICAgIHJldHVybiBm
aWx0ZXJWaWV3OwotfQotCiAjaWYgX19oYXNfZmVhdHVyZShvYmpjX2dlbmVyaWNzKQogLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
OihXS09wZW5QYW5lbFBhcmFtZXRlcnMgKilwYXJhbWV0ZXJzIGluaXRpYXRlZEJ5RnJhbWU6KFdL
RnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNV
UkwgKj4gKiBVUkxzKSljb21wbGV0aW9uSGFuZGxlcgogI2Vsc2UKQEAgLTY4NiwxNCArNTk3LDcg
QEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bgogICAgIE5TT3BlblBh
bmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKIAogICAgIG9wZW5QYW5l
bC5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxl
Y3Rpb247Ci0KLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAg
X2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQg
YWxsb2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25z
OiBwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgTlNBcnJheSAqYWxs
b3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNp
b25zVGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZp
ZXc6YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9u
c1BvcHVwVGFyZ2V0XTsKLSAgICBpZiAoZmlsdGVyVmlldykKLSAgICAgICAgW29wZW5QYW5lbCBz
ZXRBY2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dlZEZp
bGVUeXBlczpwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwogCiAgICAgW29wZW5Q
YW5lbCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhh
bmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2Rh
bFJlc3BvbnNlT0spCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403549</attachid>
            <date>2020-07-05 02:32:41 -0700</date>
            <delta_ts>2020-07-05 03:02:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212489-20200705023240.patch</filename>
            <type>text/plain</type>
            <size>26116</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEwOWJlMmYyZTE2ZmFi
MTIwY2JmNGUyOTIwZDA4NzQ0OGQ3Nzc4Ny4uM2Q1OTU3YzVhNThlYzM5YWEzYTY4MWM3MGRiZjU1
YzhkMzc2OWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA3LTA1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09T
XSBBbGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2NlcHQnIGF0dHJpYnV0ZSBp
bmNsdWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZvcm0gY2FuIHRyYW5zY29k
ZSB0aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgQWRkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdG8gTUlNRVR5cGVSZWdpc3RyeS4gVGhlc2Ug
bmV3IGZ1bmN0aW9ucyB3aWxsCisgICAgICAgIGRlYWwgd2l0aCBhIGxpc3Qgb2YgTUlNRSB0eXBl
cyBjb21iaW5lZCB3aXRoIGEgbGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMuCisgICAgICAgIFRoZXkg
YXJlIGdvaW5nIHRvIGJlIHVzZWQgdGhlIEZpbGVDaG9vc2VyU2V0dGluZ3Mgd2hpY2ggcmVmbGVj
dHMgdGhlIAorICAgICAgICAnYWNjZXB0JyBhdHRyaWJ1dGUgb2YgdGhlIDxpbnB1dD4gZmlsZSBl
bGVtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0cmltbWVkRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OnByZWZlcnJlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpjb250YWluc0ltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyk6CisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRNSU1F
VHlwZXMpOgorICAgICAgICBJdCByZXR1cm5zIHRoZSBzZXQgb2YgbWltZSB0eXBlcyB3aGljaCBp
cyBzdGF0ZWQgYnkgYSBsaXN0IG9mIG1pbWUgdHlwZXMKKyAgICAgICAgYW5kIGEgbGlzdCBvZiBm
aWxlIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFs
bG93ZWRGaWxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEl0IHJldHVybnMgdGhlIHNldCBvZiBleHRl
bnNpb25zIHdoaWNoIGlzIHN0YXRlZCBieSBhIGxpc3Qgb2YgbWltZSB0eXBlcworICAgICAgICBh
bmQgYSBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuaDoKKwogMjAyMC0wNy0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBSZW1vdmUgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURl
ZmluZXMueGNjb25maWcgdGhhdCBhcmUgYWxyZWFkeSBtZW50aW9uZWQgaW4gUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwMjI2YTEyMmJhMTAwMTA4ZDU3ZWM3MDhjMTA2Nzg5ZjU3
YmVkMWEuLmE1ODI3NjJhYTc2MGYyNDgzMGMzYmE1MjU4OTlhYTA1NGU1ZTc4ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDctMDUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFsbG93IHNlbGVjdGluZyBIRUlG
IGltYWdlcyBpZiB0aGUgJ2FjY2VwdCcgYXR0cmlidXRlIGluY2x1ZGVzIGFuIGltYWdlIE1JTUUg
dHlwZSB0aGF0IHRoZSBwbGF0Zm9ybSBjYW4gdHJhbnNjb2RlIHRoZSBIRUlGIHRvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI0ODkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBNYWtlIFdLT3BlblBhbmVsUGFy
YW1ldGVycyBjYWxsIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucygpIGFuZCBhbGxvd2VkTUlNRVR5cGVz
KCkKKyAgICAgICAgb2YgTUlNRVR5cGVSZWdpc3RyeSB2aWEgT3BlblBhbmVsUGFyYW1ldGVycy4K
KworICAgICAgICBVSURlbGVnYXRlIHdpbGwgZ2V0IGFsbG93ZWRNSU1FVHlwZXMoKSBhbmQgcGFz
cyBpdCB0byBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5CisgICAgICAgIHdoaWNoIHdp
bGwgcGFzcyBpdCB0byBXZWJQYWdlUHJveHkuIEluIGEgZm9sbG93aW5nIHBhdGNoLCBXZWJQYWdl
UHJveHkKKyAgICAgICAgd2lsbCB1c2UgYWxsb3dlZE1JTUVUeXBlcyB0byB0cmFuc2NvZGUgdGhl
IHNlbGVjdGVkIGltYWdlcyBiZWZvcmUgc2VuZGluZworICAgICAgICB0aGVtIHRvIFdlYlBhZ2Uu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd2VkTUlNRVR5cGVzIGNvbnN0
KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVFeHRlbnNp
b25zIGNvbnN0KToKKyAgICAgICAgKEFQSTo6T3BlblBhbmVsUGFyYW1ldGVyczo6bWVkaWFDYXB0
dXJlVHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElPcGVu
UGFuZWxQYXJhbWV0ZXJzLmg6CisgICAgICAgIChBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnM6Om1l
ZGlhQ2FwdHVyZVR5cGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMg
X2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRl
cnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlc10pOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKwogMjAyMC0wNy0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBSZW1vdmUgYWxsIGZlYXR1cmVzIGZyb20gRmVhdHVyZURl
ZmluZXMueGNjb25maWcgdGhhdCBhcmUgYWxyZWFkeSBtZW50aW9uZWQgaW4gUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
CmluZGV4IGQ5MWQyZmRmM2UwNWM4MzhiMzYxNDM5NzI2MWVlNjg3MmQ1YzBhODcuLjllMGUxNmQx
YWU0MjUwN2QxMWFiM2Y0MjBlZDEyYjE0NGMxY2IxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC03ODgsNCArNzg4LDU3IEBAIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwKICAgICByZXR1cm4gbWFrZVN0cmluZyhmaWxlbmFtZSwgJy4nLCBwcmVm
ZXJyZWRFeHRlbnNpb24pOwogfQogCitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmltbWVkRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQoreworICAgIHJldHVybiBleHRlbnNpb24uc3Rh
cnRzV2l0aCgnLicpID8gZXh0ZW5zaW9uLnJpZ2h0KGV4dGVuc2lvbi5sZW5ndGgoKSAtIDEpIDog
ZXh0ZW5zaW9uOworfQorCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKQoreworICAgIGF1dG8gYWxsb3dlZE1JTUVUeXBl
cyA9IE1JTUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRNSU1FVHlwZXMobWltZVR5cGVzLCBleHRlbnNp
b25zKTsKKworICAgIGF1dG8gcG9zaXRpb24gPSBhbGxvd2VkTUlNRVR5cGVzLmZpbmRNYXRjaGlu
ZyhbXShjb25zdCBhdXRvJiBtaW1lVHlwZSkgeworICAgICAgICByZXR1cm4gTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpOworICAg
IH0pOworICAgIAorICAgIHJldHVybiBwb3NpdGlvbiAhPSBub3RGb3VuZCA/IGFsbG93ZWRNSU1F
VHlwZXNbcG9zaXRpb25dIDogbnVsbFN0cmluZygpOworfQorCitib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmNvbnRhaW5zSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBtaW1lVHlwZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKQoreworICAgIHJl
dHVybiAhTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5n
KG1pbWVUeXBlcywgZXh0ZW5zaW9ucykuaXNOdWxsKCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IE1J
TUVUeXBlUmVnaXN0cnk6OmFsbG93ZWRNSU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG1p
bWVUeXBlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMpCit7CisgICAgVmVjdG9y
PFN0cmluZz4gYWxsb3dlZE1JTUVUeXBlczsKKworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBt
aW1lVHlwZXMpCisgICAgICAgIGFsbG93ZWRNSU1FVHlwZXMuYXBwZW5kSWZOb3RDb250YWlucyht
aW1lVHlwZSk7CisKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnMpIHsKKyAg
ICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5z
aW9uKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5zaW9uKSk7CisgICAgICAgIGlmIChtaW1lVHlwZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYWxsb3dlZE1JTUVUeXBl
cy5hcHBlbmRJZk5vdENvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxs
b3dlZE1JTUVUeXBlczsKK30KKworVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6YWxs
b3dlZEZpbGVFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGFsbG93
ZWRGaWxlRXh0ZW5zaW9uczsKKworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtaW1lVHlwZXMp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRl
bnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpKQorICAgICAgICAgICAgYWxsb3dlZEZpbGVFeHRl
bnNpb25zLmFwcGVuZElmTm90Q29udGFpbnMoZXh0ZW5zaW9uKTsKKyAgICB9CisKKyAgICBmb3Ig
KGF1dG8mIGV4dGVuc2lvbiA6IGV4dGVuc2lvbnMpCisgICAgICAgIGFsbG93ZWRGaWxlRXh0ZW5z
aW9ucy5hcHBlbmRJZk5vdENvbnRhaW5zKHRyaW1tZWRFeHRlbnNpb24oZXh0ZW5zaW9uKSk7CisK
KyAgICByZXR1cm4gYWxsb3dlZEZpbGVFeHRlbnNpb25zOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKaW5kZXgg
NWIyOWNmMjQyMzNhOGUwYTE0OWM4YzhiZWQ2OTIzOTc0MmY5OWJiNi4uMjE5ZWUxOTU5NzEzNDIx
ZWNkMGNkMjllMjJkNWIxN2E1NTVmMTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaApAQCAtMTQyLDYgKzE0MiwxMSBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcHJlZmVycmVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtaW1lVHlwZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBleHRlbnNpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb250YWluc0lt
YWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWltZVR5cGVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGFsbG93ZWRNSU1FVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG1pbWVUeXBlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbnMpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1pbWVUeXBlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVu
c2lvbnMpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1JTUUg
dHlwZSBpcyBub3Qgc3VpdGFibGUgZm9yIGJlaW5nIGxvYWRlZCBhcyBhIHRleHQKICAgICAvLyBk
b2N1bWVudCBpbiBhIGZyYW1lLiBPbmx5IHZhbGlkIGZvciBNSU1FIHR5cGVzIGJlZ2luaW5nIHdp
dGggInRleHQvIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElP
cGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElP
cGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAppbmRleCA4NTFlYmY1YzAzOWU3YjI4OTE5YWY5MTBiMDJm
ZWEwMGNlZWVkZjQ3Li40MzViNWRmZjJlZDhjYzUwYzM5YjYzMTBiMGYzOGQ1M2MxNGQyMWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBh
cmFtZXRlcnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgog
I2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3Ry
eS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01OCwx
MiArNTksMjggQEAgUmVmPEFQSTo6QXJyYXk+IE9wZW5QYW5lbFBhcmFtZXRlcnM6OmFjY2VwdEZp
bGVFeHRlbnNpb25zKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5n
QXJyYXkobV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucyk7CiB9CiAKLSNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKLVdlYkNvcmU6Ok1lZGlhQ2FwdHVyZVR5cGUgT3BlblBhbmVsUGFyYW1l
dGVyczo6bWVkaWFDYXB0dXJlVHlwZSgpIGNvbnN0CitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVs
UGFyYW1ldGVyczo6YWxsb3dlZE1JTUVUeXBlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2V0
dGluZ3MubWVkaWFDYXB0dXJlVHlwZTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlU3Ry
aW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6YWxsb3dlZE1JTUVUeXBlcyhtX3Nl
dHRpbmdzLmFjY2VwdE1JTUVUeXBlcywgbV9zZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9ucykp
OwogfQorCitSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dlZEZpbGVF
eHRlbnNpb25zKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgYXV0byBhY2NlcHRN
SU1FVHlwZXMgPSBtX3NldHRpbmdzLmFjY2VwdE1JTUVUeXBlczsKKworICAgIC8vIE9uIG1hY09T
IGFsbG93IHNlbGVjdGluZyBIRUlGL0hFSUMgaW1hZ2VzIGlmIGFjY2VwdE1JTUVUeXBlcyBvciBh
Y2NlcHRGaWxlRXh0ZW5zaW9ucyBpbmNsdWRlIGF0IGxlYXN0CisgICAgLy8gb25lIE1JTUUgdHlw
ZSB3aGljaCBDRyBzdXBwb3J0cyBlbmNvZGluZyB0by4KKyAgICBpZiAoTUlNRVR5cGVSZWdpc3Ry
eTo6Y29udGFpbnNJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoYWNjZXB0TUlNRVR5cGVzLCBtX3Nl
dHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKSkgeworICAgICAgICBhY2NlcHRNSU1FVHlwZXMu
YXBwZW5kKCJpbWFnZS9oZWlmIl9zKTsKKyAgICAgICAgYWNjZXB0TUlNRVR5cGVzLmFwcGVuZCgi
aW1hZ2UvaGVpYyJfcyk7CisgICAgfQorICAgIAorICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkRmlsZUV4dGVu
c2lvbnMoYWNjZXB0TUlNRVR5cGVzLCBtX3NldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zKSk7
CisjZWxzZQorICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjphbGxvd2VkRmlsZUV4dGVuc2lvbnMobV9zZXR0aW5ncy5hY2Nl
cHRNSU1FVHlwZXMsIG1fc2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMpKTsKICNlbmRpZgor
fQogCiBSZWY8QVBJOjpBcnJheT4gT3BlblBhbmVsUGFyYW1ldGVyczo6c2VsZWN0ZWRGaWxlTmFt
ZXMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU9wZW5QYW5lbFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElP
cGVuUGFuZWxQYXJhbWV0ZXJzLmgKaW5kZXggNzMwZTVkNWVlZmYyYmEwYmU0ODk0N2IwZDc5N2U2
MzE1YzMyNmI5MS4uODBlMTFiMDZkZDczMzJhYmQ4ZjcyMTU5NjNkMjdmMThkZDIyNzNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJT3BlblBhbmVsUGFyYW1l
dGVycy5oCkBAIC00Miw5ICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd011bHRpcGxl
RmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmFsbG93c011bHRpcGxlRmlsZXM7IH0K
ICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7CiAgICAgUmVmPEFQ
STo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6QXJy
YXk+IGFsbG93ZWRNSU1FVHlwZXMoKSBjb25zdDsKKyAgICBSZWY8QVBJOjpBcnJheT4gYWxsb3dl
ZEZpbGVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IHNlbGVjdGVkRmls
ZU5hbWVzKCkgY29uc3Q7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgV2ViQ29yZTo6
TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6
TWVkaWFDYXB0dXJlVHlwZSBtZWRpYUNhcHR1cmVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0
aW5ncy5tZWRpYUNhcHR1cmVUeXBlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLm1tCmluZGV4IGFiZmY1MzNmZjYzZWE4NmJmZmMwZTM4ODVhYWM4MWYxYzcyMTYxYWEuLjk0
NzYxNWU0MjlmMWQ4OWIxODNmZDUzZjE0Mjk3ZDAzMGJhOGRmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5tbQpAQCAtNjYsNTkgKzY2LDcgQEAKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9hbGxv
d2VkRmlsZUV4dGVuc2lvbnMKIHsKLSAgICAvLyBBZ2dyZWdhdGUgZXh0ZW5zaW9ucyBiYXNlZCBv
biBzcGVjaWZpZWQgTUlNRSB0eXBlcy4KLSAgICBhdXRvIGFjY2VwdGVkTUlNRVR5cGVzID0gW3Nl
bGYgX2FjY2VwdGVkTUlNRVR5cGVzXTsKLSAgICBhdXRvIGFjY2VwdGVkRmlsZUV4dGVuc2lvbnMg
PSBbc2VsZiBfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9uc107Ci0KLSAgICBhdXRvIGFsbG93ZWRGaWxl
RXh0ZW5zaW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKLQotICAg
IFthY2NlcHRlZE1JTUVUeXBlcyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5n
ICptaW1lVHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCogc3RvcCkgewotICAgICAgICBBU1NF
UlQoW21pbWVUeXBlIGNvbnRhaW5zU3RyaW5nOkAiLyJdKTsKLSAgICAgICAgYXV0byBleHRlbnNp
b25zID0gQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKSk7Ci0gICAgICAgIFthbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTp3cmFwcGVyKGV4dGVuc2lvbnMpXTsK
LSAgICB9XTsKLQotICAgIGF1dG8gYWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgW2FjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqZXh0ZW5z
aW9uLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICpzdG9wKSB7Ci0gICAgICAgIEFTU0VSVChbZXh0
ZW5zaW9uIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJy4nKTsKLSAgICAgICAgW2FkZGl0aW9uYWxB
bGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRkT2JqZWN0OltleHRlbnNpb24gc3Vic3RyaW5nRnJvbUlu
ZGV4OjFdXTsKLSAgICB9XTsKLSAgICAKLSAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9i
amVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbEFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5nZXQoKV07Ci0g
ICAgcmV0dXJuIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWxsT2JqZWN0c107Ci19Ci0KLS0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilfYWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzCi17Ci0gICAg
YXV0byBhY2NlcHRlZE1JTUVUeXBlcyA9IFtzZWxmIF9hY2NlcHRlZE1JTUVUeXBlc107Ci0gICAg
YXV0byBhY2NlcHRlZEZpbGVFeHRlbnNpb25zID0gW3NlbGYgX2FjY2VwdGVkRmlsZUV4dGVuc2lv
bnNdOwotCi0gICAgY29uc3RleHByIGF1dG8gQWxsRmlsZXNUaXRsZSA9IEAiQWxsIEZpbGVzIjsK
LSAgICBjb25zdGV4cHIgYXV0byBDdXN0b21GaWxlc1RpdGxlID0gQCJDdXN0b20gRmlsZXMiOwot
ICAgIAotICAgIGlmICghW2FjY2VwdGVkTUlNRVR5cGVzIGNvdW50XSAmJiAhW2FjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgY291bnRdKQotICAgICAgICByZXR1cm4gQFtBbGxGaWxlc1RpdGxlXTsKLQot
ICAgIGlmICghKFthY2NlcHRlZE1JTUVUeXBlcyBjb3VudF0gPT0gMSAmJiAhW2FjY2VwdGVkRmls
ZUV4dGVuc2lvbnMgY291bnRdKSkKLSAgICAgICAgcmV0dXJuIEBbQ3VzdG9tRmlsZXNUaXRsZSwg
QWxsRmlsZXNUaXRsZV07Ci0KLSAgICBhdXRvIG1pbWVUeXBlID0gW2FjY2VwdGVkTUlNRVR5cGVz
IGZpcnN0T2JqZWN0XTsKLSAgICBhdXRvIHJhbmdlID0gW21pbWVUeXBlIHJhbmdlT2ZTdHJpbmc6
QCIvIl07Ci0gICAgCi0gICAgaWYgKCFyYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBAW0N1
c3RvbUZpbGVzVGl0bGUsIEFsbEZpbGVzVGl0bGVdOwotICAgIAotICAgIGF1dG8gbWltZVR5cGVQ
cmVmaXggPSBbbWltZVR5cGUgc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl07Ci0gICAg
YXV0byBtaW1lVHlwZVN1ZmZpeCA9IFttaW1lVHlwZSBzdWJzdHJpbmdGcm9tSW5kZXg6cmFuZ2Uu
bG9jYXRpb24gKyAxXTsKLSAgICAKLSAgICBpZiAoW21pbWVUeXBlU3VmZml4IGlzRXF1YWxUb1N0
cmluZzpAIioiXSkKLSAgICAgICAgcmV0dXJuIEBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQCVAIEZpbGVzIiwgW1ttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdUb0luZGV4OjFdIHVwcGVy
Y2FzZVN0cmluZ10sIFttaW1lVHlwZVByZWZpeCBzdWJzdHJpbmdGcm9tSW5kZXg6MV1dLCBBbGxG
aWxlc1RpdGxlXTsKLQotICAgIGlmIChbbWltZVR5cGVTdWZmaXggbGVuZ3RoXSA8PSA0KQotICAg
ICAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgW21pbWVU
eXBlU3VmZml4IHVwcGVyY2FzZVN0cmluZ10sIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRs
ZV07Ci0KLSAgICByZXR1cm4gQFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwg
bWltZVR5cGVTdWZmaXgsIG1pbWVUeXBlUHJlZml4XSwgQWxsRmlsZXNUaXRsZV07CisgICAgcmV0
dXJuIHdyYXBwZXIoX29wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRGaWxlRXh0ZW5zaW9ucygp
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmgKaW5kZXggMjllZTgx
MjBlNGFmMWJhZWEyMmMwNjI0YWMyZTIzYjRlMWJkNGFkNi4uN2NkNDQxYzJjZTJlNTgwNmNmMzRk
OGMwMTI5YjExZTkxNTAxNGFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oCkBA
IC0zMSw4ICszMSw3IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqX2FjY2VwdGVkTUlNRVR5cGVzIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U0FycmF5PE5TU3RyaW5nICo+ICpfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9ucyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
Y29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc1RpdGxlcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9u
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKIAogQGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCA0OWM3MTQyNzg1ZWMy
OWI0NDZmZDk1Njk3ODE5NWExOTdkMzliOTNmLi4wYTAxYmQxZTcxMDRiNmZmYjgzYmZmZTM1ZjM0
NGYxNzliZmE5YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVUlE
ZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiQVBJRnJhbWVJbmZv
LmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyLmgiCkBAIC04MjYsNyArODI3LDcgQEAgYm9vbCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSog
d2ViRnIKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0
aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKIAotICAg
IFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuT3BlblBhbmVsV2l0
aFBhcmFtZXRlcnM6d3JhcHBlcigqb3BlblBhbmVsUGFyYW1ldGVycykgaW5pdGlhdGVkQnlGcmFt
ZTp3cmFwcGVyKGZyYW1lKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpLCBsaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpXSAoTlNBcnJh
eSAqVVJMcykgbXV0YWJsZSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1f
d2ViVmlldyBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJh
bWV0ZXJzKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFt
ZXRlcnMgPSBtYWtlUmVmKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBXVEZNb3Zl
KGxpc3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODQwLDcg
Kzg0MSw3IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyCiAgICAgICAgIGZvciAoTlNVUkwgKnVy
bCBpbiBVUkxzKQogICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZCh1cmwucGF0aCk7CiAKLSAg
ICAgICAgbGlzdGVuZXItPmNob29zZUZpbGVzKGZpbGVuYW1lcyk7CisgICAgICAgIGxpc3RlbmVy
LT5jaG9vc2VGaWxlcyhmaWxlbmFtZXMsIG9wZW5QYW5lbFBhcmFtZXRlcnMtPmFsbG93ZWRNSU1F
VHlwZXMoKS0+dG9TdHJpbmdWZWN0b3IoKSk7CiAgICAgfSkuZ2V0KCldOwogCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDg1NzQ2NTE1ZGE2N2QxNDJhZjdkZmFk
ODhkZThhNDhhODNmNjFjMTAuLmQxNWZlZTJmZDkxYjM3ZTA3MzE5NDVkNTRlM2E0MzMzNTdmMTBi
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgdm9pZCBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBmaWwKIH0KICNlbmRpZgogCi12b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit2
b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbGxvd2VkTUlN
RVR5cGVzKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVuYW1lcyk7CisgICAgbV9wYWdlLT5k
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlbmFtZXMsIGFsbG93ZWRNSU1FVHlwZXMpOwog
fQogCiB2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmgKaW5kZXggMWVlY2RjYTE3ZGMzOGRhZTk1ZTI4OWNhYWY3MDg2MWNkMGI3NmM1
Zi4uM2E5OGE0NDYzNGQ2OWQ1NThlODI2YzBlY2EzYzc2NWQ5Yzg1MjJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2b2lkIGNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMs
IGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgY29uc3QgQVBJOjpEYXRhKiBpY29uSW1hZ2VE
YXRhKTsKICNlbmRpZgotICAgIHZvaWQgY2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcyk7CisgICAgdm9pZCBjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcyA9IHsgfSk7
CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWRiY2M3NWEyY2VmZDhjY2RlYjJm
NTZmYTNmNjI2NjcyNGM2MzY3OS4uMWQxMmE1ODBlNWEwNDk1ZWY2YWVhNWFkMzI3N2I4NzViZTdi
ZTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02Njkw
LDcgKzY2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdAogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZVVSTHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY4Y2U1MDhlYTE3NzhiZDVk
NTQ4ODEyYTYwMzA1ZDE4OWUxMjgzZTEuLjVhNzZlZDdmMDk3NDY2NTAxMzVjOWE4NTAzNjczNGU4
MThkMGZhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjU3
LDcgKzEyNTcsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lk
IGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBjb25zdCBBUEk6
OkRhdGEqIGljb25EYXRhKTsKICNlbmRpZgotICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMpOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVs
KCk7CiAKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggM2IxZWRhNzYxNjg4MWVkMzg5YzM1YmMxMjUzN2RiOWUxNzA4YjA3
Zi4uZTFlOTQ1MjMxZTE3NWZlYWFlMDUwOWE1Yzk4MzQ1NmNjNWI0NzdmNyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDIwLTA3LTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY09TXSBBbGxvdyBzZWxlY3RpbmcgSEVJRiBpbWFnZXMgaWYgdGhlICdhY2Nl
cHQnIGF0dHJpYnV0ZSBpbmNsdWRlcyBhbiBpbWFnZSBNSU1FIHR5cGUgdGhhdCB0aGUgcGxhdGZv
cm0gY2FuIHRyYW5zY29kZSB0aGUgSEVJRiB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgVGhlIHNjb3BlIG9mIHRoaXMgZW5oYW5jZW1lbnQgd2lsbCBiZSBz
Y2FsZWQgZG93bi4gTm8gVUkgY2hhbmdlIHdpbGwgYmUKKyAgICAgICAgZG9uZSBmb3Igbm93LiBP
bmx5IGFsbG93IEhFSUYvSEVJQyBpbWFnZXMgdG8gYmUgc2VsZWN0ZWQgaWYgdGhlICdhY2NlcHQn
CisgICAgICAgIGF0dHJpYnV0ZSBpbmNsdWRlIGEgbWltZSB0eXBlIHdoaWNoIENHIHN1cHBvcnRz
IHRyYW5zY29kaW5nIHRoZSBIRUlGL0hFSUMKKyAgICAgICAgaW1hZ2VzIHRvLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAg
ICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVy
czppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOndlYlZpZXc6cnVuT3BlblBhbmVs
V2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bRmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldCBpbml0V2l0aE9wZW5QYW5lbDphbGxv
d2VkRmlsZUV4dGVuc2lvbnM6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0ZpbGVFeHRlbnNpb25z
UG9wdXBUYXJnZXQgcG9wdXBBY3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0ZpbGVFeHRl
bnNpb25zUG9wdXBUYXJnZXQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciBjcmVhdGVGaWx0ZXJWaWV3OnBvcHVwVGFyZ2V0Ol0pOiBEZWxl
dGVkLgorCiAyMDIwLTA3LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFJlbW92ZSBhbGwgZmVhdHVyZXMgZnJvbSBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyB0aGF0IGFyZSBhbHJlYWR5IG1lbnRpb25lZCBpbiBQbGF0Zm9ybUVuYWJsZUNvY29hLmgK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0KaW5kZXggNTcwYWFhNTRkYjk3MGU0NzQyNDg5NGY3YmQ4NzFhNzNmMmM3ZGQwZS4uM2RmOTlk
NTM3MjdlNDg5NGI3NDU2ZjcyZGZkZjdiMmQ2YTA3N2I3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTcyLDQ1ICs3Miw2
IEBAIC0gKHZvaWQpcGVyZm9ybUFjdGlvbjooTlNUZXh0RmluZGVyQWN0aW9uKW9wCiAKIEBlbmQK
IAotLy8gVGFyZ2V0IGZvciB0aGUgRmlsZUV4dGVuc2lvbnMgTlNQb3B1cEJ1dHRvbiBpbiB0aGUg
T3BlblBhbmVsJ3MgQWNjZXNzb3J5Vmlldy4KLUBpbnRlcmZhY2UgRmlsZUV4dGVuc2lvbnNQb3B1
cFRhcmdldCA6IE5TT2JqZWN0IHsKLUBwcml2YXRlCi0gICAgTlNPcGVuUGFuZWwgKl9vcGVuUGFu
ZWw7Ci0gICAgTlNBcnJheTxOU1N0cmluZyAqPiAqX2FsbG93ZWRGaWxlRXh0ZW5zaW9uczsKLX0K
LUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQKLQotLSAo
aWQpaW5pdFdpdGhPcGVuUGFuZWw6KE5TT3BlblBhbmVsKilvcGVuUGFuZWwgYWxsb3dlZEZpbGVF
eHRlbnNpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZEZpbGVFeHRlbnNpb25zIHsK
LSAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKSB7Ci0gICAgICAgIF9vcGVuUGFuZWwgPSBv
cGVuUGFuZWw7Ci0gICAgICAgIF9hbGxvd2VkRmlsZUV4dGVuc2lvbnMgPSBbYWxsb3dlZEZpbGVF
eHRlbnNpb25zIGNvcHldOwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClw
b3B1cEFjdGlvbjooaWQpc2VuZGVyIHsKLSAgICAvLyBMYXN0IGl0ZW0uCi0gICAgaWYgKFtzZW5k
ZXIgaW5kZXhPZlNlbGVjdGVkSXRlbV0gPT0gW3NlbmRlciBudW1iZXJPZkl0ZW1zXSAtIDEpCi0g
ICAgICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6bmlsXTsKLSAgICBlbHNlIGlm
ICghW3NlbmRlciBpbmRleE9mU2VsZWN0ZWRJdGVtXSkgewotICAgICAgICAvLyBGaXJzdCBpdGVt
LgotICAgICAgICBpZiAoIVtfYWxsb3dlZEZpbGVFeHRlbnNpb25zIGNvdW50XSkKLSAgICAgICAg
ICAgIFtfb3BlblBhbmVsIHNldEFsbG93ZWRGaWxlVHlwZXM6QFtAIiJdXTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgW19vcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVUeXBlczpfYWxsb3dlZEZp
bGVFeHRlbnNpb25zXTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfYWxs
b3dlZEZpbGVFeHRlbnNpb25zIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQot
QGVuZAotCiBAaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICgpIDxOU1RleHRG
aW5kZXJCYXJDb250YWluZXIsIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGUsIF9X
S0ljb25Mb2FkaW5nRGVsZWdhdGU+CiBAZW5kCiAKQEAgLTEyNSw3ICs4Niw2IEBAIEBpbXBsZW1l
bnRhdGlvbiBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB7CiAgICAgTWluaUJyb3dzZXJOU1Rl
eHRGaW5kZXIgKl90ZXh0RmluZGVyOwogICAgIE5TVmlldyAqX3RleHRGaW5kQmFyVmlldzsKICAg
ICBCT09MIF9maW5kQmFyVmlzaWJsZTsKLSAgICBGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0ICpf
ZmlsZUV4dGVuc2lvbnNQb3B1cFRhcmdldDsKIH0KIAogLSAodm9pZClhd2FrZUZyb21OaWIKQEAg
LTIxMSw3ICsxNzEsNiBAQCAtICh2b2lkKWRlYWxsb2MKIAogICAgIFtfd2ViVmlldyByZWxlYXNl
XTsKICAgICBbX2NvbmZpZ3VyYXRpb24gcmVsZWFzZV07Ci0gICAgW19maWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0IHJlbGVhc2VdOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtNjI5LDU0
ICs1ODgsNiBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdDooTlNTdAogICAgIH1dOwogfQogCi0tIChudWxs
YWJsZSBOU1ZpZXcgKiljcmVhdGVGaWx0ZXJWaWV3OihOU0FycmF5ICopdGl0bGVzIHBvcHVwVGFy
Z2V0OihGaWxlRXh0ZW5zaW9uc1BvcHVwVGFyZ2V0Kilwb3B1cFRhcmdldAotewotICAgIE5TVGV4
dEZpZWxkKiBsYWJlbCA9IFtbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbbGFiZWwgc2V0U3RyaW5nVmFsdWU6QCJGb3JtYXQ6
Il07Ci0gICAgW2xhYmVsIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbbGFiZWwgc2V0U2VsZWN0YWJs
ZTpOT107Ci0gICAgW2xhYmVsIHNldEJvcmRlcmVkOk5PXTsKLSAgICBbbGFiZWwgc2V0QmFja2dy
b3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3JdXTsKLSAgICBbbGFiZWwgc2l6ZVRvRml0XTsK
LQotICAgIE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IFtbW05TUG9wVXBCdXR0b24gYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBwdWxsc0Rvd246Tk9dIGF1dG9yZWxlYXNlXTsKLSAgICBb
YnV0dG9uIGFkZEl0ZW1zV2l0aFRpdGxlczp0aXRsZXNdOwotICAgIFtidXR0b24gc2V0VGFyZ2V0
OnBvcHVwVGFyZ2V0XTsKLSAgICBbYnV0dG9uIHNldEFjdGlvbjpAc2VsZWN0b3IocG9wdXBBY3Rp
b246KV07Ci0gICAgW2J1dHRvbiBzaXplVG9GaXRdOwotICAgIFtidXR0b24gc2VsZWN0SXRlbUF0
SW5kZXg6MF07Ci0gICAgW3BvcHVwVGFyZ2V0IHBvcHVwQWN0aW9uOmJ1dHRvbl07Ci0gICAgCi0g
ICAgTlNWaWV3KiBmaWx0ZXJWaWV3ID0gW1tbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
WmVyb1JlY3RdIGF1dG9yZWxlYXNlXTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmxhYmVs
XTsKLSAgICBbZmlsdGVyVmlldyBhZGRTdWJ2aWV3OmJ1dHRvbl07Ci0KLSAgICBjb25zdCBDR0Zs
b2F0IG1hcmdpbiA9IDIwOwotICAgIGNvbnN0IENHRmxvYXQgc3BhY2luZyA9IDI7Ci0gICAgY29u
c3QgQ0dGbG9hdCBtaW5CdXR0b25XaWR0aCA9IDIzMDsKLQotICAgIE5TUmVjdCBsYWJlbEZyYW1l
ID0gW2xhYmVsIGZyYW1lXTsKLSAgICBOU1JlY3QgYnV0dG9uRnJhbWUgPSBbYnV0dG9uIGZyYW1l
XTsKLSAgICBOU1JlY3QgZmlsdGVyVmlld0ZyYW1lID0gW2ZpbHRlclZpZXcgZnJhbWVdOwotCi0g
ICAgLy8gU2V0IGEgbWluaW11bSB3aWR0aCBmb3IgJ2J1dHRvbicuCi0gICAgYnV0dG9uRnJhbWUu
c2l6ZSA9IE5TTWFrZVNpemUoTUFYKE5TV2lkdGgoYnV0dG9uRnJhbWUpLCBtaW5CdXR0b25XaWR0
aCksIE5TSGVpZ2h0KGJ1dHRvbkZyYW1lKSk7Ci0gICAgCi0gICAgLy8gRmlsdGVyVmlldyB3aWxs
IGxheSBvdXQgJ2xhYmVsJyBhbmQgJ2J1dHRvbicgaG9yaXpvbnRhbGx5IGFuZCBoYXZlIGEgdmVy
dGljYWwgbWFyZ2lucy4KLSAgICBmaWx0ZXJWaWV3RnJhbWUuc2l6ZSA9IE5TTWFrZVNpemUoTlNX
aWR0aChsYWJlbEZyYW1lKSArIE5TV2lkdGgoYnV0dG9uRnJhbWUpICsgc3BhY2luZywgTUFYKE5T
SGVpZ2h0KGxhYmVsRnJhbWUpLCBOU0hlaWdodChidXR0b25GcmFtZSkpICsgbWFyZ2luICogMik7
Ci0gICAgW2ZpbHRlclZpZXcgc2V0RnJhbWU6ZmlsdGVyVmlld0ZyYW1lXTsKLQotICAgIC8vICds
YWJlbCcgd2lsbCBiZSBsYWlkIG91dCBjZW50ZXIgdmVydGljYWxseS4KLSAgICBsYWJlbEZyYW1l
Lm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWluWChsYWJlbEZyYW1lKSwgKE5TSGVpZ2h0KGZpbHRl
clZpZXdGcmFtZSkgLSBOU0hlaWdodChsYWJlbEZyYW1lKSkgLyAyKTsKLSAgICBbbGFiZWwgc2V0
RnJhbWU6bGFiZWxGcmFtZV07Ci0gICAgCi0gICAgLy8gJ2J1dHRvbicgd2lsbCBiZSBsYWlkIG91
dCBjZW50ZXIgdmVydGljYWxseSBhbmQgaXQgd2lsbCBjb21lIGFmdGVyICdsYWJlbCcgaG9yaXpv
bnRhbGx5LgotICAgIGJ1dHRvbkZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KE5TTWF4WChsYWJl
bEZyYW1lKSArIHNwYWNpbmcsIChOU0hlaWdodChmaWx0ZXJWaWV3RnJhbWUpIC0gTlNIZWlnaHQo
YnV0dG9uRnJhbWUpKSAvIDIpOwotICAgIFtidXR0b24gc2V0RnJhbWU6YnV0dG9uRnJhbWVdOwot
Ci0gICAgcmV0dXJuIGZpbHRlclZpZXc7Ci19Ci0KICNpZiBfX2hhc19mZWF0dXJlKG9iamNfZ2Vu
ZXJpY3MpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuT3BlblBhbmVs
V2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYW1ldGVycyAqKXBhcmFtZXRlcnMgaW5pdGlh
dGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNBcnJheTxOU1VSTCAqPiAqIFVSTHMpKWNvbXBsZXRpb25IYW5kbGVyCiAjZWxzZQpAQCAt
Njg2LDE0ICs1OTcsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogICAgIE5TT3BlblBhbmVs
ICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBhbmVsXTsKIAogICAgIG9wZW5QYW5lbC5h
bGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHBhcmFtZXRlcnMuYWxsb3dzTXVsdGlwbGVTZWxlY3Rp
b247Ci0KLSAgICBbX2ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgcmVsZWFzZV07Ci0gICAgX2Zp
bGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgPSBbW0ZpbGVFeHRlbnNpb25zUG9wdXBUYXJnZXQgYWxs
b2NdIGluaXRXaXRoT3BlblBhbmVsOiBvcGVuUGFuZWwgYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBw
YXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwotCi0gICAgTlNBcnJheSAqYWxsb3dl
ZEZpbGVFeHRlbnNpb25zVGl0bGVzID0gcGFyYW1ldGVycy5fYWxsb3dlZEZpbGVFeHRlbnNpb25z
VGl0bGVzOwotICAgIE5TVmlldyAqZmlsdGVyVmlldyA9IFtzZWxmIGNyZWF0ZUZpbHRlclZpZXc6
YWxsb3dlZEZpbGVFeHRlbnNpb25zVGl0bGVzIHBvcHVwVGFyZ2V0Ol9maWxlRXh0ZW5zaW9uc1Bv
cHVwVGFyZ2V0XTsKLSAgICBpZiAoZmlsdGVyVmlldykKLSAgICAgICAgW29wZW5QYW5lbCBzZXRB
Y2Nlc3NvcnlWaWV3OmZpbHRlclZpZXddOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dlZEZpbGVU
eXBlczpwYXJhbWV0ZXJzLl9hbGxvd2VkRmlsZUV4dGVuc2lvbnNdOwogCiAgICAgW29wZW5QYW5l
bCBiZWdpblNoZWV0TW9kYWxGb3JXaW5kb3c6d2ViVmlldy53aW5kb3cgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlNNb2RhbFJl
c3BvbnNlT0spCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>