<?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>95397</bug_id>
          
          <creation_ts>2012-08-29 16:24:56 -0700</creation_ts>
          <short_desc>Need to merge didFirstVisuallyNonEmptyLayout and didNewFirstVisuallyNonEmptyLayout</short_desc>
          <delta_ts>2012-11-21 12:34:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708020</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-29 16:24:56 -0700</bug_when>
    <thetext>The name didNewFirstVisuallyNonEmptyLayout is an abomination. We should merge didFirstLayout, didFirstVisuallyNonEmptyLayout, and didNewFirstVisuallyNonEmptyLayout. They will all be part of the same callback api, but there will be an enum representing the three stages of these states. The callback will fire three times -- once for each state. 

&lt;rdar://problem/10791680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708097</commentid>
    <comment_count>1</comment_count>
      <attachid>161368</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-29 17:32:04 -0700</bug_when>
    <thetext>Created attachment 161368
Patch

The API that I added has a sort of silly name: didUnlockLayoutAchievement. I do have some less-silly ideas for alternatives, such as:

didReachLayoutMilestone
didCompleteLayoutPhase
didAchieveLayoutState

I thought we could have a discussion now during review about the best name.

I plan to remove the old API in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708118</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 17:52:05 -0700</bug_when>
    <thetext>didUnlockLayoutAchievement is cute.  Perhaps didChangeLayoutState to be analogous with document.readyState ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708123</commentid>
    <comment_count>3</comment_count>
      <attachid>161368</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-29 18:01:52 -0700</bug_when>
    <thetext>Comment on attachment 161368
Patch

Attachment 161368 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13680484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708135</commentid>
    <comment_count>4</comment_count>
      <attachid>161375</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-29 18:07:16 -0700</bug_when>
    <thetext>Created attachment 161375
Patch, trying to fix QT build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708202</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-29 18:59:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; didUnlockLayoutAchievement is cute.  Perhaps didChangeLayoutState to be analogous with document.readyState ?

That&apos;s a good option too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708231</commentid>
    <comment_count>6</comment_count>
      <attachid>161375</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-29 19:46:14 -0700</bug_when>
    <thetext>Comment on attachment 161375
Patch, trying to fix QT build

Attachment 161375 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13686470</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708888</commentid>
    <comment_count>7</comment_count>
      <attachid>161527</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-30 12:08:05 -0700</bug_when>
    <thetext>Created attachment 161527
Patch, with more build fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708952</commentid>
    <comment_count>8</comment_count>
      <attachid>161527</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 13:19:11 -0700</bug_when>
    <thetext>Comment on attachment 161527
Patch, with more build fixing

Attachment 161527 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13682834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709053</commentid>
    <comment_count>9</comment_count>
      <attachid>161565</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-08-30 14:54:38 -0700</bug_when>
    <thetext>Created attachment 161565
Patch for EFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711726</commentid>
    <comment_count>10</comment_count>
      <attachid>162159</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-04 22:31:01 -0700</bug_when>
    <thetext>Created attachment 162159
Patch with different design

I talked more with Dan and Sam, and we decided to go with an API with a slightly different design. In this design, didFirstLayout, didFirstVisuallyNonEmptyLayout, and didNewFirstVisuallyNonEmptyLayout are even more merged than before, and clients need to opt into which layout milestones they are interested in hearing about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711729</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 22:33:41 -0700</bug_when>
    <thetext>Attachment 162159 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/WebPage.cpp:411:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebKit/mac/WebView/WebViewInternal.h:69:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/WebView/WebViewInternal.h:70:  The parameter name &quot;options&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/WebPageProxy.cpp:296:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/loader/FrameLoaderClient.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711735</commentid>
    <comment_count>12</comment_count>
      <attachid>162159</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 22:48:39 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13757461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711736</commentid>
    <comment_count>13</comment_count>
      <attachid>162159</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-04 22:48:59 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13761396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711738</commentid>
    <comment_count>14</comment_count>
      <attachid>162159</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-04 22:49:46 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13753658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711742</commentid>
    <comment_count>15</comment_count>
      <attachid>162159</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-04 22:58:34 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13761398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711744</commentid>
    <comment_count>16</comment_count>
      <attachid>162159</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-04 23:04:08 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13743768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711755</commentid>
    <comment_count>17</comment_count>
      <attachid>162159</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-04 23:30:05 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

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

Lovin&apos; it!

&gt; Source/WebCore/page/LayoutMilestoneOptions.h:37
&gt; +typedef unsigned LayoutMilestoneOptions;

I am not sure the word Options adds anything here.

&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:122
&gt;      WKPageDidNewFirstVisuallyNonEmptyLayoutCallback                     didNewFirstVisuallyNonEmptyLayout;
&gt; +    WKPageDidLayoutCallback                                             didLayout;

This new function needs to be added at the bottom of the struct.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:259
&gt; +void InjectedBundlePageLoaderClient::didLayout(WebPage* page, LayoutMilestoneOptions options, WTF::RefPtr&lt;APIObject&gt;&amp; userData)

The WTF:: should not be necessary here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:86
&gt; +    void didLayout(WebPage*, WebCore::LayoutMilestoneOptions, WTF::RefPtr&lt;APIObject&gt;&amp; userData);

The WTF:: should not be needed here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:143
&gt; +    WKBundlePageDidLayoutCallback                                           didLayout;

Function needs to be at the bottom of the struct.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:-62
&gt; -// FIXME: This is temporary. Ultimately WebKit should choose the threshold itself.
&gt; -WK_EXPORT void WKBundlePageSetPaintedObjectsCounterThreshold(WKBundlePageRef page, uint64_t threshold);

Were sure this has no callers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711760</commentid>
    <comment_count>18</comment_count>
      <attachid>162159</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-04 23:35:24 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13754680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711771</commentid>
    <comment_count>19</comment_count>
      <attachid>162159</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-04 23:52:39 -0700</bug_when>
    <thetext>Comment on attachment 162159
Patch with different design

Attachment 162159 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13742785</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712434</commentid>
    <comment_count>20</comment_count>
      <attachid>162307</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-05 12:47:15 -0700</bug_when>
    <thetext>Created attachment 162307
Patch

Thanks, Sam! Here is a patch that addresses all of your comments and attempts to get the other ports building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712440</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 12:52:35 -0700</bug_when>
    <thetext>Attachment 162307 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/page/Page.h:319:  The parameter name &quot;milestones&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712468</commentid>
    <comment_count>22</comment_count>
      <attachid>162307</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-05 13:22:01 -0700</bug_when>
    <thetext>Comment on attachment 162307
Patch

Attachment 162307 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13770043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712477</commentid>
    <comment_count>23</comment_count>
      <attachid>162319</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-05 13:34:15 -0700</bug_when>
    <thetext>Created attachment 162319
Patch

More build fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727893</commentid>
    <comment_count>24</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-25 13:01:29 -0700</bug_when>
    <thetext>Thanks, Sam! Committed http://trac.webkit.org/changeset/129545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728063</commentid>
    <comment_count>25</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-09-25 16:08:44 -0700</bug_when>
    <thetext>This change caused a layout test to fail. I filed https://bugs.webkit.org/show_bug.cgi?id=97615 and committed a fix: http://trac.webkit.org/changeset/129569</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773184</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-11-21 12:34:06 -0800</bug_when>
    <thetext>This seems to have caused bug 102970.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161368</attachid>
            <date>2012-08-29 17:32:04 -0700</date>
            <delta_ts>2012-08-29 18:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>unlock-for-review.txt</filename>
            <type>text/plain</type>
            <size>54618</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTI5ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgZmFyIGFzIFdlYkNvcmUgaXMgY29uY2VybmVkLCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgCisgICAgICAgIG5vdyBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKwogMjAxMi0wOC0yOSAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBIVUQgbGF5
ZXIgd2hlbiByb290TGF5ZXIgaXMgc2V0IHRvIG51bGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKCkgeyB9CiAKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hTaG93KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTcsOSArMjI1Nyw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKQogewotICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEwICsxNzcs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7CiAKLSAgICAvLyBGSVhN
RTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgYW5kIGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpIHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVh
c29uIGZvciBib3RoIHRvIGV4aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1
cmlzdGljcyBmb3IgdGhlIHRpbWUgYmVpbmcuCiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKTsKLSAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpOworICAgIHZvaWQgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCgpOwogCiAgICAgdm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNv
dXJjZSopOwogICAgIHZvaWQgdGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biAxMjY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIHsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBQYWdlOjph
ZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZQogICAgICAgICBtX2lzQ291bnRpbmdSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRP
YmplY3RDb3VudGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkK
LSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEyNzA2NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTI5ICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAg
ICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2
ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG5ldyBjbGllbnQgQVBJIGlzIGNhbGxlZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCgpLiBJ
dCBoYXMgYW4gCisgICAgICAgIGVudW1lcmF0aW9uIHBhcmFtZXRlciBjYWxsZWQgV0tMYXlvdXRB
Y2hpZXZlbWVudFR5cGUgd2hpY2ggcmVwcmVzZW50cyAKKyAgICAgICAgdGhlIHRocmVlIGRpZmZl
cmVudCBsYXlvdXQgYWNoaWV2ZW1lbnRzIHRoYXQgY2FuIGJlIHVubG9ja2VkLgorCisgICAgICAg
IE5ldyBlbnVtZXJhdGlvbnMuCisgICAgICAgICogTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9h
ZFR5cGVzLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAg
ICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgIChXZWJLaXQpOgorCisgICAgICAgIE5ldyBB
UEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGll
bnQ6OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorCisgICAgICAgIENhbGwgZGlkVW5sb2NrQWNoaWV2
ZW1lbnQoKSBmb3IgdGhlIGFjaGlldmVtZW50cyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wOC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjog
Tm90IHNlbmRpbmcgTlBQX1NldFdpbmRvdyBpcyBjYXVzaW5nIEZsYXNoIHRvIG5vdCB0aHJvdHRs
ZSBpdHNlbGYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheW91dEFjaGll
dmVtZW50VHlwZV9oCisjZGVmaW5lIExheW91dEFjaGlldmVtZW50VHlwZV9oCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIExheW91dEFjaGlldmVtZW50VHlwZSB7CisgICAgRGlkRmlyc3RM
YXlvdXQsCisgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LAorICAgIERpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gTGF5b3V0QWNoaWV2ZW1lbnRUeXBlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJldmlzaW9uIDEy
Njg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50
MzJfdCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlOwogCitlbnVtIHsKKyAgICBrV0tEaWRG
aXJzdExheW91dCwKKyAgICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsCisgICAg
a1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZAorfTsKK3R5cGVk
ZWYgdWludDMyX3QgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGU7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRB
UElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hh
cmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgor
I2luY2x1ZGUgIkxheW91dEFjaGlldmVtZW50VHlwZS5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tDb250
ZXh0TWVudUl0ZW1UeXBlcy5oIgpAQCAtNzQ4LDYgKzc0OSwyNSBAQCBpbmxpbmUgV0tTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZSB0b0FQCiAgICAgcmV0dXJuIHdrVHlwZTsKIH0KIAoraW5saW5l
IFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHRvQVBJKExheW91dEFjaGlldmVtZW50VHlwZSB0eXBl
KQoreworICAgIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHdrVHlwZSA9IGtXS0RpZEZpcnN0TGF5
b3V0OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEaWRGaXJzdExheW91dDoKKyAg
ICAgICAgd2tUeXBlID0ga1dLRGlkRmlyc3RMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAgICB3a1R5cGUgPSBrV0tE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAgd2tU
eXBlID0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB3a1R5cGU7Cit9CisKIGlubGlu
ZSBJbWFnZU9wdGlvbnMgdG9JbWFnZU9wdGlvbnMoV0tJbWFnZU9wdGlvbnMgd2tJbWFnZU9wdGlv
bnMpCiB7CiAgICAgdW5zaWduZWQgaW1hZ2VPcHRpb25zID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTmV3Rmly
c3RWaXN1YWxsCiAgICAgbV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KHRvQVBJKHBhZ2UpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQog
Cit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFn
ZVByb3h5KiBwYWdlLCBMYXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgQVBJT2JqZWN0KiB1c2Vy
RGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCh0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJM
b2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0
QWNoaWV2ZW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUu
aCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODAs
OSArODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJh
bWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwg
QVBJT2JqZWN0Kik7CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRvIGV4
aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhlIHRp
bWUgYmVpbmcuCisgICAgLy8gRklYTUU6IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCBzaG91bGQgYmUgcmVtb3ZlZC4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgLy8gYXMgd2VsbC4gVGhleSBhcmUg
Ym90aCBiZWluZyByZXBsYWNlZCBieSBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudC4KICAgICB2
b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXZWJQYWdlUHJveHkqLCBBUElP
YmplY3QqKTsKKyAgICB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdlYlBhZ2VQcm94
eSosIExheW91dEFjaGlldmVtZW50VHlwZSwgQVBJT2JqZWN0Kik7CiAgICAgCiAgICAgYm9vbCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNDIsNiArMjE0MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KHRoaXMsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZFVubG9j
a0xheW91dEFjaGlldmVtZW50KHVpbnQzMl90IGxheW91dEFjaGlldmVtZW50VHlwZSwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXJDbGllbnQu
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0QWNoaWV2
ZW1lbnRUeXBlPihsYXlvdXRBY2hpZXZlbWVudFR5cGUpLCB1c2VyRGF0YS5nZXQoKSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3Qg
ZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgUmVm
UHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1NCw2ICs3NTQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQodWludDMyX3QgbGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAx
MjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh1
aW50MzJfdCB0eXBlLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVz
ZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRSZW1vdmVGcmFtZUZy
b21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV1RGOjpTdHJpbmcgdW5yZWFj
aGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRh
dGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lv
biAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVj
ZWl2ZUF1dGhlbnRpYwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRk
ZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0
QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVt
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tQYWdlUGx1Z2luRGlkRmFpbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tFcnJv
ckNvZGUgZXJyb3JDb2RlLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgV0tTdHJpbmdSZWYgcGx1Z2lu
SWRlbnRpZmllciwgV0tTdHJpbmdSZWYgcGx1Z2luVmVyc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLSW50ZW50RGF0YVJlZiBp
bnRlbnQsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0x
MTUsOCArMTE2LDEwIEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZlcnNp
b24gMQogICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAKLSAgICAvLyBGSVhN
RTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgYW5kIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgbWVyZ2VkLgorICAgIC8vIEZJWE1FOiBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIHJlbW92ZWQuIFdlIHNo
b3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZQorICAgIC8vIGFzIHdlbGwuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgcmVwbGFjZWQgYnkg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQuCiAgICAgV0tQYWdlRGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgV0tQYWdlRGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hp
ZXZlbWVudDsKIAogICAgIFdLUGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1Nyw2ICs0NTcsNyBAQAog
CQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFODEyQkMyNDhC
MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi87IH07CiAJCTkwOTg1NEVEMTJCQzRF
MTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVt
b3J5U2FtcGxlci5oICovOyB9OwogCQk5MDk4NTRFRTEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVt
b3J5U2FtcGxlci5tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMu
bW0gKi87IH07CisJCTkzMTg3NzM5MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVu
dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaCAqLzsgfTsK
IAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVC
OTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlFMTI3
NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NTEyNzc2MTZEMDAzMzIy
QjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OwogCQk5MzVFRUI5RjEyNzc2
MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNTIyLDYgKzE1MjMsNyBAQAogCQk5MDU2MjBFNTEyQkMy
NDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIu
bWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVtb3J5U2FtcGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlC
NiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk1lbW9yeVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxODc3
MzgxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaDsgcGF0aCA9IC4u
L0xheW91dEFjaGlldmVtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5
MDEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTExMjc3NjE1RDAwMzMy
MkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5OCw2ICsyNDAwLDcgQEAK
IAkJCQlCQ0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAg
Ki8sCiAJCQkJQkNCQ0IwQ0ExMjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnku
aCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5o
ICovLAorCQkJCTkzMTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5
cGUuaCAqLywKIAkJCQlCQ0M4MDQ5RDEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5LmNw
cCAqLywKIAkJCQlCQ0M4MDQ5RTEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5LmggKi8s
CiAJCQkJQkNCMEFFRTgxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmNwcCAq
LywKQEAgLTQyMzksNiArNDI0Miw3IEBACiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8q
IFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAw
OTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU5
NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMx
ODc3MzkxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1NCw3ICsyNTQsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CiAgICAgbV9j
bGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2UpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Ci19ICAgIAorfQorCit2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFnZSog
cGFnZSwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdURjo6UmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7
CisgICAgbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodG9BUEkocGFnZSksIHRv
QVBJKHR5cGUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVz
ZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CiAKIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnRf
aAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0QWNoaWV2ZW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KQEAg
LTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKICAgICB2b2lkIGRpZExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSop
OwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYlBhZ2UqLCBX
VEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRVbmxvY2tMYXlv
dXRBY2hpZXZlbWVudChXZWJQYWdlKiwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBXVEY6OlJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0
Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7
CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxMjY4OTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZURpZERldGVjdFhTU0YKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYqIHVzZXJE
YXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZURpZFVubG9ja0xheW91dEFjaGlldmVtZW50Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91
dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZURpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29y
bGQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBA
IC0xMzksNiArMTQwLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAg
Ly8gVmVyc2lvbiAxLgogICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOwogICAg
IFdLQnVuZGxlUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBX
S0J1bmRsZVBhZ2VEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKICAgICBXS0J1bmRsZVBh
Z2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBXS0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2YWls
YWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgsOCAr
NTU4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICAv
LyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIAotICAgIGlm
IChtX2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdlYlBhZ2Ut
PmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZygp
KQotICAgICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJv
emVuKGZhbHNlKTsKKyAgICBpZiAobV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJG
cmFtZSgpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+
c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCisgICAgICAgICAgICB3ZWJQYWdlLT5k
cmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgICAg
ICAvLyBEaXNwYXRjaGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFj
aGlldmVtZW50cywgc28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2Vs
bC4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRGaXJzdExheW91dCwgdXNlckRhdGEpOwor
ICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50KERpZEZpcnN0TGF5b3V0LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGllcyBhcmUgZGlzcGF0
Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3QgbGF5b3V0IGhhcHBl
bnMuCkBAIC01ODAsOSArNTg2LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmkKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKworICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUtPnBh
Z2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0Y2gg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQ
YWdlLCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIHVzZXJEYXRhKTsKKyAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tMYXlvdXRBY2hp
ZXZlbWVudChEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0KIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTU5MCwxMSArNjAyLDE2IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmUKIAogICAgIFJlZlB0cjxB
UElPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50Lgor
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHdpbGwgYmUgcmVtb3ZlZC4gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgcmVw
bGFjZXMKKyAgICAvLyBpdHMgZnVuY3Rpb25hbGl0eS4KICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh3ZWJQ
YWdlLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQo
KS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLCB1c2VyRGF0YSk7CiAgICAgCi0gICAgLy8gTm90aWZ5
IHRoZSBVSVByb2Nlc3MuCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCB3aWxsIGJlIHJlbW92ZWQuIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50IHJlcGxhY2VzCisgICAgLy8gaXRzIGZ1bmN0aW9uYWxpdHkuCiAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
KwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZExheW91dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpG
cmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzA2NSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTA4LTI5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVl
ZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25k
aW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBjbGllbnQgQVBJIGlzIGNh
bGxlZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCgpLiBJdCBoYXMgYW4gCisgICAgICAgIE5T
TnVtYmVyIHBhcmFtZXRlciBjYWxsZWQgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGUgd2hpY2ggcmVw
cmVzZW50cyAKKyAgICAgICAgdGhlIHRocmVlIGRpZmZlcmVudCBsYXlvdXQgYWNoaWV2ZW1lbnRz
IHRoYXQgY2FuIGJlIHVubG9ja2VkLgorCisgICAgICAgIENhbGwgZGlkVW5sb2NrQWNoaWV2ZW1l
bnQoKSBmb3IgdGhlIGFjaGlldmVtZW50cyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudCk6CisKKyAgICAgICAgTmV3IEFQSS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpcnN0TGF5b3V0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmg6CisgICAgICAgIChXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0wOC0yOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY10gQWRkIGljb25VUkwgdG8gV2ViTm90aWZpY2F0aW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMCw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExh
eW91dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoU2hvdygpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEyNjg5
MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDEwIEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5k
aWRGaXJzdExheW91dEluRnJhbWVGdW5jKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7
CisKKyAgICAvLyBEaXNwYXRjaGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5
b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQg
YXMgd2VsbC4KKyAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZl
bWVudEZ1bmMpCisgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMt
PmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQ6KSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
MV0pOwogICAgIAogICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxM
b2FkU3RhcnRlZC4KICAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBb
bV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CkBAIC02ODUs
NiArNjg5LDE4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAg
ICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9u
cyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsK
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJ
bkZyYW1lRnVuYykKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMsIHdlYlZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6KSwg
bV93ZWJGcmFtZS5nZXQoKSk7CisKKyAgICAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgaXMgb25lIG9mIHRoZSBsYXlvdXQgYWNoaWV2ZW1lbnRzLCBzbyBkaXNwYXRjaCBkaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudCBhcyB3ZWxsLgorICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZFVubG9ja0xheW91dEFjaGlldmVtZW50RnVuYykKKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVn
YXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jLCB3ZWJW
aWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDopLCBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDoyXSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpCit7
CisgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Cisg
ICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlv
bnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7
CisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5j
KQorICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFVu
bG9ja0xheW91dEFjaGlldmVtZW50OiksIFtOU051bWJlciBudW1iZXJXaXRoSW50OjNdKTsKIH0K
IAogRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lv
biAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgc3RydWN0
IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaXJzdExheW91dEluRnJhbWVGdW5jOwogICAgIElN
UCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKKyAgICBJTVAgZGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jOwogICAgIElNUCBkaWRSZWNlaXZlSWNvbkZvckZy
YW1lRnVuYzsKICAgICBJTVAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVGdW5jOwogICAg
IElNUCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYxMyw2ICsxNjEzLDcgQEAg
LSAodm9pZClfY2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT5kaWRG
aW5pc2hMb2FkRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZEZpcnN0TGF5b3V0
SW5GcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZp
cnN0TGF5b3V0SW5GcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0SW5GcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6KSk7CisgICAgY2FjaGUtPmRp
ZFVubG9ja0xheW91dEFjaGlldmVtZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVj
dG9yKHdlYlZpZXc6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQ6KSk7CiAgICAgY2FjaGUtPmRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSk7CiAgICAgY2Fj
aGUtPmRpZFJlY2VpdmVJY29uRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTopKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzU4
LDYgKzc1OCwxMSBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWaWV3RnJhbWVMb2FkRGVsCiAK
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRJbkZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogCisvLyBBY2hpZXZlbWVudCAxIGNv
cnJlc3BvbmRzIGluZGljYXRlcyB0aGF0IHRoZSBmaXJzdCBsYXlvdXQgaGFzIGhhcHBlbmVkLiBB
Y2hpZXZlbWVudCAyIGluZGljYXRlcyB0aGF0CisvLyB0aGUgZmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0IGhhcyBoYXBwZW5lZC4gQWNoaWV2ZW1lbnQgMyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVs
ZXZhbnQgcmVwYWludGVkCisvLyBvYmplY3RzIHRocmVzaG9sZCBpbiBXZWJDb3JlOjpQYWdlIGhh
cyBiZWVuIGhpdC4KKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudDooTlNOdW1iZXIgKilhY2hpZXZlbWVudDsKKwogLy8gRm9yIGltcGxl
bWVudGluZyB0aGUgV2ViSW5zcGVjdG9yJ3MgdGVzdCBoYXJuZXNzCiAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0OihXZWJTY3Jp
cHRPYmplY3QgKil3aW5kb3dPYmplY3QgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyNzA2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDQ4IEBACisyMDEyLTA4LTI5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAg
ICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAg
ICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3Jy
ZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3VudCBmb3IgdGhlIG5l
dyBtZW1iZXIgb2YgdGhlIFBhZ2VMb2FkQ2xpZW50LgorICAgICAgICAqIE1pbmlCcm93c2VyL21h
Yy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29u
dHJvbGxlciBhd2FrZUZyb21OaWJdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemUpOgorCisgICAgICAgIFRoZSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXMgaGFzIGV4aXN0ZWQgZm9yIGEgd2hpbGUsIAorICAgICAgICBidXQgaXQgZGlkIG5v
dCBoYXZlIHRoZSByaWdodCB0YXJnZXQgbWVtYmVyc2hpcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBV
c2UgbmV3IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50IEFQSSBpbnN0ZWFkIG9mIG9sZCAKKyAg
ICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IEFQSS4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0RmFpbHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hp
ZXZlbWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEyLTA4LTI5ICBBbGV4IFNha2hh
cnRjaG91ayAgPGFsZXhzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTdXBw
b3J0IGhpZ2ggRElQIHBpeGVsIHRlc3RzIHdpdGggRHVtcFJlbmRlclRyZWUKSW5kZXg6IFRvb2xz
L01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lv
biAxMjY4OTEpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubQkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYzMCw3IEBAIC0gKHZvaWQpYXdha2VGcm9t
TmliCiAgICAgICAgIDAsIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4KICAgICAgICAgZGlk
RGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAg
ICAgICAwLCAvLyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gaW50
ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZQogICAgICAgICAwLCAvLyBw
bHVnaW5EaWRGYWlsCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI2ODkx
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIAkJNzZFMTgyREYxNTQ3
NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAw
RjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CiAJCTgxQjUwMTkzMTQw
RjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQjUwMTkyMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJp
bmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxvdHMt
b2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAq
LzsgfTsKKwkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCAqLzsgfTsKIAkJOTM2MTAwMjkxNERDOTVBNzAw
NjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjEwMDI4MTREQzk1N0IwMDYxMzc5RCAvKiBs
b3RzLW9mLWlmcmFtZXMuaHRtbCAqLzsgfTsKIAkJOTM5QkE5MTcxNDEwMzQxMjAwMUEwMUJEIC8q
IERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxl
RmFjdG9yT25CYWNrLm1tICovOyB9OwogCQk5M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDRDE1MDZGMDY0MDA3
RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5j
cHAgKi87IH07CkBAIC05ODEsNiArOTgyLDcgQEAKIAkJCQlCQzkwOTk1RTEyNTY3QkMxMDAwODM3
NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MDk5OTQxMjU2QUNGMTAw
MDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY1QUY1
NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5
MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dC5jcHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjkgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVk
Oworc3RhdGljIGJvb2wgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkOworc3RhdGljIGJvb2wgZGlkSGl0UmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkOworc3RhdGljIGJvb2wg
ZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzOwogCi1zdGF0aWMgdm9pZCBkaWROZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQg
KikKK3N0YXRpYyB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdLUGFnZVJlZiwgV0tM
YXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0g
ICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCA9IHRydWU7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBrV0tEaWRGaXJzdExheW91dDoKKyAgICAgICAgZGlk
Rmlyc3RMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dL
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAgICBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
a1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAg
ZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIAorICAgIGlmIChkaWRGaXJzdExheW91dEFjaGlldmVkICYmIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEFjaGlldmVkICYmIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGRBY2hpZXZlZCkKKyAgICAgICAgZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1l
bnRzID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VS
ZWYgcGFnZSkKQEAgLTQyLDExICs2MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKICAgICBt
ZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRl
ckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAg
IGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbG9hZGVyQ2xpZW50LmRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQ7CiAKICAgICBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOwogfQogCisvLyBGSVhN
RTogVGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1c2UKKy8vIHRoZSBmcmFtZSBsb2Fk
IGlzIGNvbXBsZXRpbmcgYmVmb3JlIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KCkgbWFuYWdl
cyB0byB1bmxvY2sgdGhlCisvLyBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkIGFjaGlldmVtZW50LiBXZSBwcm9iYWJseSBuZWVkIHRvIGZpeCB0aGlzIGJ5IG1h
a2luZworLy8gdGhpcyB0ZXN0IGhhdmUgYSBsb25nLXJ1bm5pbmcgcmVzb3VyY2UuCiBURVNUKFdl
YktpdDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKIHsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
VGVzdCIpKTsKQEAgLTU4LDggKzgwLDggQEAgVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdGaXJz
dFZpc3VhbGx5TgogICAgIC8vIG9iamVjdHMgdGFrZSB1cCBtb3JlIHRoYW4gMTAlIG9mIHRoZSB2
aWV3LgogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3Jl
YXRlVVJMRm9yUmVzb3VyY2UoImxvdHMtb2YtdGV4dCIsICJodG1sIikpLmdldCgpKTsKIAotICAg
IFV0aWw6OnJ1bigmZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7Ci0g
ICAgRVhQRUNUX1RSVUUoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7
CisgICAgVXRpbDo6cnVuKCZkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVudHMpOworICAgIEVY
UEVDVF9UUlVFKGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50cyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZhaWxzLmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1
Y2NlZWQ7CitzdGF0aWMgYm9vbCBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkQWNoaWV2ZWQ7CiBzdGF0aWMgYm9vbCB0ZXN0MURvbmU7CiBzdGF0aWMgYm9vbCB0ZXN0
MkRvbmU7CiAgICAgCkBAIC00OCw5ICs0OCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIDAsIGRpZEZvcmNl
UmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQorc3RhdGljIHZvaWQgZGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVmLCBXS0xheW91dEFjaGlldmVtZW50VHlw
ZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICBkaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAgICBpZiAodHlwZSA9PSBrV0tEaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKQorICAgICAgICBkaWRIaXRS
ZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQgPSB0cnVlOwogfQog
CiBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNTks
NyArNjAsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAg
bWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2Fk
ZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKICAg
ICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZy
YW1lOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQg
PSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbG9hZGVyQ2xpZW50LmRp
ZFVubG9ja0xheW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQ7CiAK
ICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOwogfQpA
QCAtODAsNyArODEsNyBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
CiAKICAgICAvLyBCeSB0aGUgdGltZSB0aGUgZm9yY2VkIHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0
aGUgY291bnRlciB3b3VsZCBoYXZlIGJlZW4gaGl0IAogICAgIC8vIGlmIGl0IHdhcyBzaXplZCBy
ZWFzb25hYmx5IGZvciB0aGUgcGFnZS4KLSAgICBFWFBFQ1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDI5IEBACiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0U3VjY2VlZDsKK3N0YXRpYyBib29sIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQ7
CitzdGF0aWMgYm9vbCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZDsKK3N0
YXRpYyBib29sIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hp
ZXZlZDsKK3N0YXRpYyBib29sIGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50czsKIAotc3Rh
dGljIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdLUGFnZVJlZiwgV0tU
eXBlUmVmLCBjb25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZl
bWVudChXS1BhZ2VSZWYsIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCAqKQogewotICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1
Y2NlZWQgPSB0cnVlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLRGlkRmlyc3RM
YXlvdXQ6CisgICAgICAgIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDoKKyAgICAg
ICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQgPSB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFU
aHJlc2hvbGQ6CisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJl
c2hvbGRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCAm
JiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCAmJiBkaWRIaXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQpCisgICAgICAgIGRpZFVubG9j
a0FsbExheW91dEFjaGlldmVtZW50cyA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC00MiwxMiArNjAsMTYgQEAgc3RhdGljIHZv
aWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIFdLUGFnZUxvYWRlckNsaWVudCBs
b2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJD
bGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRD
dXJyZW50VmVyc2lvbjsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRl
ckNsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9IGRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xp
ZW50KTsKIH0KIAotVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXMpCisvLyBGSVhNRTogVGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1c2UK
Ky8vIHRoZSBmcmFtZSBsb2FkIGlzIGNvbXBsZXRpbmcgYmVmb3JlIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhlCisvLyBrV0tEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGlldmVtZW50LiBXZSBwcm9iYWJseSBuZWVk
IHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0ZXN0IGhhdmUgYSBsb25nLXJ1bm5pbmcg
cmVzb3VyY2UuCitURVNUKFdlYktpdDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckltYWdlcykKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzVGVzdCIpKTsKIApAQCAtNTgsOCAr
ODAsOCBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAgICAgLy8g
b2JqZWN0cyB0YWtlIHVwIG1vcmUgdGhhbiAxMCUgb2YgdGhlIHZpZXcuCiAgICAgV0tQYWdlTG9h
ZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
bG90cy1vZi1pbWFnZXMiLCAiaHRtbCIpKS5nZXQoKSk7CiAKLSAgICBVdGlsOjpydW4oJmRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOwotICAgIEVYUEVDVF9UUlVFKGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOworICAgIFV0aWw6OnJ1bigm
ZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzKTsKKyAgICBFWFBFQ1RfVFJVRShkaWRVbmxv
Y2tBbGxMYXlvdXRBY2hpZXZlbWVudHMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVz
LmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0
aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGaXJlTW9yZVRoYW5PbmNl
Owotc3RhdGljIHVuc2lnbmVkIG5ld1Zpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyOworc3Rh
dGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZE1vcmVU
aGFuT25jZTsKK3N0YXRpYyB1bnNpZ25lZCBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNB
cmVhVGhyZXNob2xkQ291bnRlcjsKIHN0YXRpYyBib29sIHRlc3QxRG9uZTsKIHN0YXRpYyBib29s
IHRlc3QyRG9uZTsKICAgICAKQEAgLTQ5LDExICs0OSwxNCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIDAsIGRp
ZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQorc3RhdGljIHZv
aWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVmLCBXS0xheW91dEFjaGlldmVt
ZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICArK25ld1Zpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyOwotICAgIGlmIChuZXdWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Q291bnRlciA+IDEpCi0gICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZpcmVNb3JlVGhhbk9uY2UgPSB0cnVlOworICAgIGlmICh0eXBlICE9IGtXS0RpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpCisgICAgICAgIHJldHVybjsKKworICAg
ICsrZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZENvdW50ZXI7Cisg
ICAgaWYgKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRDb3VudGVy
ID4gMSkKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZE1vcmVUaGFuT25jZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGll
bnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC02MiwxNCArNjUsMTQgQEAgc3RhdGljIHZvaWQgc2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9h
ZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRG
b3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9IGRp
ZFVubG9ja0xheW91dEFjaGlldmVtZW50OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAogVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMpCiB7Ci0gICAgbmV3VmlzdWFsbHlOb25FbXB0eUxheW91
dENvdW50ZXIgPSAwOworICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJl
c2hvbGRDb3VudGVyID0gMDsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQo
QWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVzdCIpKTsKIAogICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpAQCAtODIsNyArODUsNyBAQCBURVNUKFdlYktp
dDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAvLyBCeSB0aGUgdGltZSB0aGUg
Zm9yY2VkIHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRlciB3b3VsZCBoYXZlIGJlZW4g
aGl0IAogICAgIC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5IGZvciB0aGUgcGFnZS4KLSAg
ICBFWFBFQ1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmlyZU1vcmVU
aGFuT25jZSk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0FyZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTI2ODkxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw2ICs0MTcsNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAgICAg
IDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBk
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAgICAgICAwLCAvLyB3aWxsR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gaW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vz
c1VucmVzcG9uc2l2ZQogICAgICAgICAwLCAvLyBwbHVnaW5EaWRGYWlsCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5NSw2ICsyOTUsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFn
ZShXCiAgICAgICAgIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lLAogICAgICAgICAwLCAv
LyBkaWRMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRVbmxvY2tMYXlvdXRBY2hpZXZl
bWVudAogICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gc2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gZGlkQ3JlYXRlR2xvYmFsT2Jq
ZWN0Rm9yRnJhbWUK
</data>
<flag name="commit-queue"
          id="172158"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161375</attachid>
            <date>2012-08-29 18:07:16 -0700</date>
            <delta_ts>2012-08-30 12:08:05 -0700</delta_ts>
            <desc>Patch, trying to fix QT build</desc>
            <filename>unlock-for-review-2.txt</filename>
            <type>text/plain</type>
            <size>55255</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzA2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTI5ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgZmFyIGFzIFdlYkNvcmUgaXMgY29uY2VybmVkLCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgCisgICAgICAgIG5vdyBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKwogMjAxMi0wOC0yOSAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBIVUQgbGF5
ZXIgd2hlbiByb290TGF5ZXIgaXMgc2V0IHRvIG51bGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKCkgeyB9CiAKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hTaG93KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTcsOSArMjI1Nyw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKQogewotICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEwICsxNzcs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7CiAKLSAgICAvLyBGSVhN
RTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgYW5kIGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpIHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVh
c29uIGZvciBib3RoIHRvIGV4aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1
cmlzdGljcyBmb3IgdGhlIHRpbWUgYmVpbmcuCiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKTsKLSAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpOworICAgIHZvaWQgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCgpOwogCiAgICAgdm9pZCBsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNv
dXJjZSopOwogICAgIHZvaWQgdGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biAxMjY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIHsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBQYWdlOjph
ZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZQogICAgICAgICBtX2lzQ291bnRpbmdSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRP
YmplY3RDb3VudGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkK
LSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEyNzA2NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTI5ICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAg
ICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2
ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG5ldyBjbGllbnQgQVBJIGlzIGNhbGxlZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCgpLiBJ
dCBoYXMgYW4gCisgICAgICAgIGVudW1lcmF0aW9uIHBhcmFtZXRlciBjYWxsZWQgV0tMYXlvdXRB
Y2hpZXZlbWVudFR5cGUgd2hpY2ggcmVwcmVzZW50cyAKKyAgICAgICAgdGhlIHRocmVlIGRpZmZl
cmVudCBsYXlvdXQgYWNoaWV2ZW1lbnRzIHRoYXQgY2FuIGJlIHVubG9ja2VkLgorCisgICAgICAg
IE5ldyBlbnVtZXJhdGlvbnMuCisgICAgICAgICogTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9h
ZFR5cGVzLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAg
ICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgIChXZWJLaXQpOgorCisgICAgICAgIE5ldyBB
UEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGll
bnQ6OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorCisgICAgICAgIENhbGwgZGlkVW5sb2NrQWNoaWV2
ZW1lbnQoKSBmb3IgdGhlIGFjaGlldmVtZW50cyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wOC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjog
Tm90IHNlbmRpbmcgTlBQX1NldFdpbmRvdyBpcyBjYXVzaW5nIEZsYXNoIHRvIG5vdCB0aHJvdHRs
ZSBpdHNlbGYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheW91dEFjaGll
dmVtZW50VHlwZV9oCisjZGVmaW5lIExheW91dEFjaGlldmVtZW50VHlwZV9oCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIExheW91dEFjaGlldmVtZW50VHlwZSB7CisgICAgRGlkRmlyc3RM
YXlvdXQsCisgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LAorICAgIERpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gTGF5b3V0QWNoaWV2ZW1lbnRUeXBlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJldmlzaW9uIDEy
Njg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50
MzJfdCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlOwogCitlbnVtIHsKKyAgICBrV0tEaWRG
aXJzdExheW91dCwKKyAgICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsCisgICAg
a1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZAorfTsKK3R5cGVk
ZWYgdWludDMyX3QgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGU7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRB
UElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hh
cmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgor
I2luY2x1ZGUgIkxheW91dEFjaGlldmVtZW50VHlwZS5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tDb250
ZXh0TWVudUl0ZW1UeXBlcy5oIgpAQCAtNzQ4LDYgKzc0OSwyNSBAQCBpbmxpbmUgV0tTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZSB0b0FQCiAgICAgcmV0dXJuIHdrVHlwZTsKIH0KIAoraW5saW5l
IFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHRvQVBJKExheW91dEFjaGlldmVtZW50VHlwZSB0eXBl
KQoreworICAgIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHdrVHlwZSA9IGtXS0RpZEZpcnN0TGF5
b3V0OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEaWRGaXJzdExheW91dDoKKyAg
ICAgICAgd2tUeXBlID0ga1dLRGlkRmlyc3RMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAgICB3a1R5cGUgPSBrV0tE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAgd2tU
eXBlID0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB3a1R5cGU7Cit9CisKIGlubGlu
ZSBJbWFnZU9wdGlvbnMgdG9JbWFnZU9wdGlvbnMoV0tJbWFnZU9wdGlvbnMgd2tJbWFnZU9wdGlv
bnMpCiB7CiAgICAgdW5zaWduZWQgaW1hZ2VPcHRpb25zID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTmV3Rmly
c3RWaXN1YWxsCiAgICAgbV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KHRvQVBJKHBhZ2UpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQog
Cit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFn
ZVByb3h5KiBwYWdlLCBMYXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgQVBJT2JqZWN0KiB1c2Vy
RGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCh0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJM
b2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0
QWNoaWV2ZW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUu
aCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODAs
OSArODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJh
bWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwg
QVBJT2JqZWN0Kik7CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRvIGV4
aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhlIHRp
bWUgYmVpbmcuCisgICAgLy8gRklYTUU6IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCBzaG91bGQgYmUgcmVtb3ZlZC4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgLy8gYXMgd2VsbC4gVGhleSBhcmUg
Ym90aCBiZWluZyByZXBsYWNlZCBieSBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudC4KICAgICB2
b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXZWJQYWdlUHJveHkqLCBBUElP
YmplY3QqKTsKKyAgICB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdlYlBhZ2VQcm94
eSosIExheW91dEFjaGlldmVtZW50VHlwZSwgQVBJT2JqZWN0Kik7CiAgICAgCiAgICAgYm9vbCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNDIsNiArMjE0MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KHRoaXMsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZFVubG9j
a0xheW91dEFjaGlldmVtZW50KHVpbnQzMl90IGxheW91dEFjaGlldmVtZW50VHlwZSwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXJDbGllbnQu
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0QWNoaWV2
ZW1lbnRUeXBlPihsYXlvdXRBY2hpZXZlbWVudFR5cGUpLCB1c2VyRGF0YS5nZXQoKSk7Cit9CisK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3Qg
ZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgUmVm
UHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1NCw2ICs3NTQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQodWludDMyX3QgbGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAx
MjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh1
aW50MzJfdCB0eXBlLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVz
ZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRSZW1vdmVGcmFtZUZy
b21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV1RGOjpTdHJpbmcgdW5yZWFj
aGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRh
dGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lv
biAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVj
ZWl2ZUF1dGhlbnRpYwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRk
ZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
VW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0
QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVt
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tQYWdlUGx1Z2luRGlkRmFpbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tFcnJv
ckNvZGUgZXJyb3JDb2RlLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgV0tTdHJpbmdSZWYgcGx1Z2lu
SWRlbnRpZmllciwgV0tTdHJpbmdSZWYgcGx1Z2luVmVyc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLSW50ZW50RGF0YVJlZiBp
bnRlbnQsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0x
MTUsOCArMTE2LDEwIEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZlcnNp
b24gMQogICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAKLSAgICAvLyBGSVhN
RTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgYW5kIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgbWVyZ2VkLgorICAgIC8vIEZJWE1FOiBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIHJlbW92ZWQuIFdlIHNo
b3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZQorICAgIC8vIGFzIHdlbGwuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgcmVwbGFjZWQgYnkg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQuCiAgICAgV0tQYWdlRGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgV0tQYWdlRGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hp
ZXZlbWVudDsKIAogICAgIFdLUGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1Nyw2ICs0NTcsNyBAQAog
CQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFODEyQkMyNDhC
MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi87IH07CiAJCTkwOTg1NEVEMTJCQzRF
MTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVt
b3J5U2FtcGxlci5oICovOyB9OwogCQk5MDk4NTRFRTEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVt
b3J5U2FtcGxlci5tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMu
bW0gKi87IH07CisJCTkzMTg3NzM5MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVu
dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaCAqLzsgfTsK
IAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVC
OTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlFMTI3
NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NTEyNzc2MTZEMDAzMzIy
QjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OwogCQk5MzVFRUI5RjEyNzc2
MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNTIyLDYgKzE1MjMsNyBAQAogCQk5MDU2MjBFNTEyQkMy
NDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIu
bWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVtb3J5U2FtcGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlC
NiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYk1lbW9yeVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxODc3
MzgxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaDsgcGF0aCA9IC4u
L0xheW91dEFjaGlldmVtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5
MDEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTExMjc3NjE1RDAwMzMy
MkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5OCw2ICsyNDAwLDcgQEAK
IAkJCQlCQ0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAg
Ki8sCiAJCQkJQkNCQ0IwQ0ExMjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnku
aCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5o
ICovLAorCQkJCTkzMTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5
cGUuaCAqLywKIAkJCQlCQ0M4MDQ5RDEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5LmNw
cCAqLywKIAkJCQlCQ0M4MDQ5RTEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5LmggKi8s
CiAJCQkJQkNCMEFFRTgxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmNwcCAq
LywKQEAgLTQyMzksNiArNDI0Miw3IEBACiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8q
IFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAw
OTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU5
NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMx
ODc3MzkxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1NCw3ICsyNTQsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CiAgICAgbV9j
bGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2UpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Ci19ICAgIAorfQorCit2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFnZSog
cGFnZSwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdURjo6UmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7
CisgICAgbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodG9BUEkocGFnZSksIHRv
QVBJKHR5cGUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVz
ZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CiAKIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnRf
aAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0QWNoaWV2ZW1lbnRU
eXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KQEAg
LTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKICAgICB2b2lkIGRpZExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSop
OwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYlBhZ2UqLCBX
VEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRVbmxvY2tMYXlv
dXRBY2hpZXZlbWVudChXZWJQYWdlKiwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBXVEY6OlJlZlB0
cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0
Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7
CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxMjY4OTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZURpZERldGVjdFhTU0YKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYqIHVzZXJE
YXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZURpZFVubG9ja0xheW91dEFjaGlldmVtZW50Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91
dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZURpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29y
bGQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBA
IC0xMzksNiArMTQwLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAg
Ly8gVmVyc2lvbiAxLgogICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOwogICAg
IFdLQnVuZGxlUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBX
S0J1bmRsZVBhZ2VEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKICAgICBXS0J1bmRsZVBh
Z2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VTaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBXS0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2YWls
YWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDEyNjg5MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgsOCAr
NTU4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICAv
LyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIAotICAgIGlm
IChtX2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdlYlBhZ2Ut
PmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZygp
KQotICAgICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJv
emVuKGZhbHNlKTsKKyAgICBpZiAobV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJG
cmFtZSgpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+
c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCisgICAgICAgICAgICB3ZWJQYWdlLT5k
cmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAgICAg
ICAvLyBEaXNwYXRjaGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFj
aGlldmVtZW50cywgc28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2Vs
bC4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRGaXJzdExheW91dCwgdXNlckRhdGEpOwor
ICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50KERpZEZpcnN0TGF5b3V0LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkKICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGllcyBhcmUgZGlzcGF0
Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3QgbGF5b3V0IGhhcHBl
bnMuCkBAIC01ODAsOSArNTg2LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmkKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKworICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUtPnBh
Z2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0Y2gg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQ
YWdlLCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIHVzZXJEYXRhKTsKKyAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tMYXlvdXRBY2hp
ZXZlbWVudChEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0KIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTU5MCwxMSArNjAyLDE2IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmUKIAogICAgIFJlZlB0cjxB
UElPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50Lgor
ICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHdpbGwgYmUgcmVtb3ZlZC4gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgcmVw
bGFjZXMKKyAgICAvLyBpdHMgZnVuY3Rpb25hbGl0eS4KICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh3ZWJQ
YWdlLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQo
KS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLCB1c2VyRGF0YSk7CiAgICAgCi0gICAgLy8gTm90aWZ5
IHRoZSBVSVByb2Nlc3MuCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCB3aWxsIGJlIHJlbW92ZWQuIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50IHJlcGxhY2VzCisgICAgLy8gaXRzIGZ1bmN0aW9uYWxpdHkuCiAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
KwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZExheW91dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpG
cmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGlu
QnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9x
dC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsNyBAQCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpRdEJ1aWx0aW5CdW5kbGVQ
YWdlCiAgICAgICAgIDAsIC8vIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiAgICAgICAg
IDAsIC8vIGRpZExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50CiAgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAgICAgIDAs
IC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGRpZENyZWF0
ZUdsb2JhbE9iamVjdEZvckZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjcw
NjUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMiBAQAorMjAxMi0wOC0yOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3Cisg
ICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAK
KyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQg
Y29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY2xpZW50
IEFQSSBpcyBjYWxsZWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoKS4gSXQgaGFzIGFuIAor
ICAgICAgICBOU051bWJlciBwYXJhbWV0ZXIgY2FsbGVkIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBl
IHdoaWNoIHJlcHJlc2VudHMgCisgICAgICAgIHRoZSB0aHJlZSBkaWZmZXJlbnQgbGF5b3V0IGFj
aGlldmVtZW50cyB0aGF0IGNhbiBiZSB1bmxvY2tlZC4KKworICAgICAgICBDYWxsIGRpZFVubG9j
a0FjaGlldmVtZW50KCkgZm9yIHRoZSBhY2hpZXZlbWVudHMgYXMgdGhleSBvY2N1ci4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGluZy5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1l
bnRhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDgtMjkgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkZCBpY29uVVJMIHRvIFdlYk5vdGlm
aWNhdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZp
c2lvbiAxMjY4OTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjY4LDYgKzY2OCwxMCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpCiAgICAgV2ViRnJhbWVMb2FkRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJh
bWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYykKICAgICAgICAgQ2FsbEZyYW1lTG9h
ZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYywgd2Vi
VmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1lOiksIG1fd2ViRnJh
bWUuZ2V0KCkpOworCisgICAgLy8gRGlzcGF0Y2hpbmcgdGhlIGZpcnN0IGxheW91dCBpcyBvbmUg
b2YgdGhlIGxheW91dCBhY2hpZXZlbWVudHMsIHNvIGRpc3BhdGNoIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50IGFzIHdlbGwuCisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkVW5sb2NrTGF5
b3V0QWNoaWV2ZW1lbnRGdW5jKQorICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMsIHdlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50OiksIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjFdKTsKICAgICAKICAgICAvLyBTZWUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQuCiAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3Jv
bGxWaWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZpZXdd
OwpAQCAtNjg1LDYgKzY4OSwxOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZpCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBs
ZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMo
d2ViVmlldyk7CiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0SW5GcmFtZUZ1bmMpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBs
ZW1lbnRhdGlvbnMtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJ
bkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOworCisgICAgLy8gZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0
Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICBpZiAoaW1wbGVtZW50
YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMpCisgICAgICAgIENhbGxGcmFt
ZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50
RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQ6KSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml0pOworfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJl
c2hvbGQoKQoreworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUu
Z2V0KCkpOworICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1w
bGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25z
KHdlYlZpZXcpOworICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50RnVuYykKKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDopLCBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDozXSk7CiB9CiAKIEZyYW1lKiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQ
YWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcu
aAkocmV2aXNpb24gMTI2ODkxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3
IEBAIHN0cnVjdCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW8KICAgICBJTVAgZGlk
RmluaXNoTG9hZEZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVu
YzsKICAgICBJTVAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmM7Cisg
ICAgSU1QIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50RnVuYzsKICAgICBJTVAgZGlkUmVjZWl2
ZUljb25Gb3JGcmFtZUZ1bmM7CiAgICAgSU1QIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
RnVuYzsKICAgICBJTVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxMjY4OTEpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MTMsNiAr
MTYxMyw3IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnQKICAgICBj
YWNoZS0+ZGlkRmluaXNoTG9hZEZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOikpOwogICAgIGNhY2hlLT5kaWRG
aXJzdExheW91dEluRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0
b3Iod2ViVmlldzpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOikpOworICAg
IGNhY2hlLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdh
dGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50OikpOwogICAg
IGNhY2hlLT5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVs
ZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOikp
OwogICAgIGNhY2hlLT5kaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxl
Z2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6KSk7CiAgICAg
Y2FjaGUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxMjY4OTEpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1OCw2ICs3NTgsMTEgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0ZyYW1l
TG9hZERlbAogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIAorLy8gQWNoaWV2
ZW1lbnQgMSBjb3JyZXNwb25kcyBpbmRpY2F0ZXMgdGhhdCB0aGUgZmlyc3QgbGF5b3V0IGhhcyBo
YXBwZW5lZC4gQWNoaWV2ZW1lbnQgMiBpbmRpY2F0ZXMgdGhhdAorLy8gdGhlIGZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCBoYXMgaGFwcGVuZWQuIEFjaGlldmVtZW50IDMgaW5kaWNhdGVzIHRo
YXQgdGhlIHJlbGV2YW50IHJlcGFpbnRlZAorLy8gb2JqZWN0cyB0aHJlc2hvbGQgaW4gV2ViQ29y
ZTo6UGFnZSBoYXMgYmVlbiBoaXQuCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQ6KE5TTnVtYmVyICopYWNoaWV2ZW1lbnQ7CisKIC8v
IEZvciBpbXBsZW1lbnRpbmcgdGhlIFdlYkluc3BlY3RvcidzIHRlc3QgaGFybmVzcwogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGVhckluc3BlY3RvcldpbmRvd09iamVj
dDooV2ViU2NyaXB0T2JqZWN0ICopd2luZG93T2JqZWN0IGZvckZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjcwNjUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0OCBAQAorMjAxMi0wOC0yOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAg
IC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY291bnQg
Zm9yIHRoZSBuZXcgbWVtYmVyIG9mIHRoZSBQYWdlTG9hZENsaWVudC4KKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKToKKworICAgICAgICBUaGUgTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9ySW1hZ2VzIGhhcyBleGlzdGVkIGZvciBhIHdoaWxlLCAKKyAgICAgICAgYnV0
IGl0IGRpZCBub3QgaGF2ZSB0aGUgcmlnaHQgdGFyZ2V0IG1lbWJlcnNoaXAuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgVXNlIG5ldyBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCBBUEkgaW5zdGVhZCBv
ZiBvbGQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBBUEkuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZhaWxzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkVW5sb2Nr
TGF5b3V0QWNoaWV2ZW1lbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRl
ckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxMi0wOC0yOSAg
QWxleCBTYWtoYXJ0Y2hvdWsgIDxhbGV4c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gU3VwcG9ydCBoaWdoIERJUCBwaXhlbCB0ZXN0cyB3aXRoIER1bXBSZW5kZXJUcmVlCklu
ZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bQkocmV2aXNpb24gMTI2ODkxKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTYzMCw2ICs2MzAsNyBAQCAtICh2b2lk
KWF3YWtlRnJvbU5pYgogICAgICAgICAwLCAvLyBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luCiAg
ICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lLAogICAgICAgICAwLCAvLyBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgMCwgLy8gZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQKICAgICAgICAgMCwgLy8gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAg
IDAsIC8vIGludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKICAgICAg
ICAgMCwgLy8gcGx1Z2luRGlkRmFpbApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDEyNjg5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAJCTc2
RTE4MkRGMTU0NzY3RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRF
MTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwogCQk4
MUI1MDE5MzE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUI1MDE5MjE0MEYyMzIzMDBEOUVC
NTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi87IH07CiAJCTkzMEFENDAyMTUwNjk4RDAwMDY3OTcw
RiAvKiBsb3RzLW9mLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10
ZXh0Lmh0bWwgKi87IH07CisJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5Q0NFMyAvKiBOZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0ExNTA2RjAzNTAwN0ZENTdFIC8qIE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgKi87IH07CiAJCTkzNjEwMDI5
MTREQzk1QTcwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYxMDAyODE0REM5NTdCMDA2
MTM3OUQgLyogbG90cy1vZi1pZnJhbWVzLmh0bWwgKi87IH07CiAJCTkzOUJBOTE3MTQxMDM0MTIw
MDFBMDFCRCAvKiBEZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOUJBOTE2MTQxMDM0MTIwMDFBMDFCRCAvKiBE
ZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSAqLzsgfTsKIAkJOTNBRjRFQ0UxNTA2RjA2NDAwN0ZE
NTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0Qx
NTA2RjA2NDAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdl
c19CdW5kbGUuY3BwICovOyB9OwpAQCAtOTgxLDYgKzk4Miw3IEBACiAJCQkJQkM5MDk5NUUxMjU2
N0JDMTAwMDgzNzU2IC8qIFdLU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTA5OTk0
MTI1NkFDRjEwMDA4Mzc1NiAvKiBXS1N0cmluZ0pTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI2NUFGNTUwMTVEMUU0OEEwMEIwQ0I0QSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwCShyZXZpc2lvbiAxMjY4OTEpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDI5IEBACiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0U3VjY2VlZDsKK3N0YXRpYyBib29sIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMg
Ym9vbCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29s
IGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKK3N0
YXRpYyBib29sIGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50czsKIAotc3RhdGljIHZvaWQg
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdLUGFnZVJlZiwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudChXS1Bh
Z2VSZWYsIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCAqKQogewotICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQgPSB0
cnVlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLRGlkRmlyc3RMYXlvdXQ6Cisg
ICAgICAgIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDoKKyAgICAgICAgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ6
CisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hp
ZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAKKyAgICBpZiAoZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCAmJiBkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCAmJiBkaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQpCisgICAgICAgIGRpZFVubG9ja0FsbExheW91
dEFjaGlldmVtZW50cyA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGll
bnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC00MiwxMSArNjAsMTUgQEAgc3RhdGljIHZvaWQgc2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGll
bnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
ICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVy
c2lvbjsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5k
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50Owog
CiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0K
IAorLy8gRklYTUU6IFRoaXMgdGVzdCBoYXMgYmVlbiBicm9rZW4gc2luY2UgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE1NzUyIEl0J3MgZmFpbGluZyBiZWNhdXNlCisvLyB0aGUg
ZnJhbWUgbG9hZCBpcyBjb21wbGV0aW5nIGJlZm9yZSBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCgpIG1hbmFnZXMgdG8gdW5sb2NrIHRoZQorLy8ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZCBhY2hpZXZlbWVudC4gV2UgcHJvYmFibHkgbmVlZCB0byBmaXgg
dGhpcyBieSBtYWtpbmcKKy8vIHRoaXMgdGVzdCBoYXZlIGEgbG9uZy1ydW5uaW5nIHJlc291cmNl
LgogVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dFRlc3QiKSk7CkBAIC01OCw4ICs4MCw4IEBAIFRFU1QoV2ViS2l0MiwgRElTQUJM
RURfTmV3Rmlyc3RWaXN1YWxseU4KICAgICAvLyBvYmplY3RzIHRha2UgdXAgbW9yZSB0aGFuIDEw
JSBvZiB0aGUgdmlldy4KICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJsb3RzLW9mLXRleHQiLCAiaHRtbCIpKS5nZXQo
KSk7CiAKLSAgICBVdGlsOjpydW4oJmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1
Y2NlZWQpOwotICAgIEVYUEVDVF9UUlVFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dFN1Y2NlZWQpOworICAgIFV0aWw6OnJ1bigmZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRz
KTsKKyAgICBFWFBFQ1RfVFJVRShkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVudHMpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGYWlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRTdWNjZWVkOworc3RhdGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZEFjaGlldmVkOwogc3RhdGljIGJvb2wgdGVzdDFEb25lOwogc3RhdGlj
IGJvb2wgdGVzdDJEb25lOwogICAgIApAQCAtNDgsOSArNDgsMTAgQEAgc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCAw
LCBkaWRGb3JjZVJlcGFpbnQpOwogfQogCi1zdGF0aWMgdm9pZCBkaWROZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKK3N0YXRp
YyB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdLUGFnZVJlZiwgV0tMYXlvdXRBY2hp
ZXZlbWVudFR5cGUgdHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0gICAgZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCA9IHRydWU7CisgICAgaWYgKHR5cGUg
PT0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkKKyAgICAg
ICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkID0g
dHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFn
ZSkKQEAgLTU5LDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZQogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7
CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZl
cnNpb247CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlz
aExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRl
ckNsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9IGRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xp
ZW50KTsKIH0KQEAgLTgwLDcgKzgxLDcgQEAgVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYQogCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIGZvcmNlZCByZXBhaW50IGhhcyBm
aW5pc2hlZCwgdGhlIGNvdW50ZXIgd291bGQgaGF2ZSBiZWVuIGhpdCAKICAgICAvLyBpZiBpdCB3
YXMgc2l6ZWQgcmVhc29uYWJseSBmb3IgdGhlIHBhZ2UuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOworICAgIEVYUEVDVF9GQUxTRShk
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcAkocmV2aXNpb24gMTI2ODkxKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckltYWdlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwyOSBA
QAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQ7CitzdGF0aWMgYm9vbCBkaWRGaXJzdExheW91
dEFjaGlldmVkOworc3RhdGljIGJvb2wgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNo
aWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkQWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVu
dHM7CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1Bh
Z2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQorc3RhdGljIHZvaWQgZGlkVW5sb2NrTGF5
b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVmLCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIGtX
S0RpZEZpcnN0TGF5b3V0OgorICAgICAgICBkaWRGaXJzdExheW91dEFjaGlldmVkID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQ6CisgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNBcmVhVGhyZXNob2xkOgorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVj
dHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGRpZEZpcnN0TGF5b3V0
QWNoaWV2ZWQgJiYgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQgJiYgZGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkKQorICAgICAg
ICBkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVudHMgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9p
ZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNDIsMTIgKzYwLDE2IEBA
IHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmUKICAgICBXS1BhZ2VMb2Fk
ZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9h
ZGVyQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCA9IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsK
KyAgICBsb2FkZXJDbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgPSBkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudDsKIAogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwg
JmxvYWRlckNsaWVudCk7CiB9CiAKLVRFU1QoV2ViS2l0MiwgTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9ySW1hZ2VzKQorLy8gRklYTUU6IFRoaXMgdGVzdCBoYXMgYmVlbiBicm9rZW4g
c2luY2UgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE1NzUyIEl0J3MgZmFpbGlu
ZyBiZWNhdXNlCisvLyB0aGUgZnJhbWUgbG9hZCBpcyBjb21wbGV0aW5nIGJlZm9yZSBkaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudCgpIG1hbmFnZXMgdG8gdW5sb2NrIHRoZQorLy8ga1dLRGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCBhY2hpZXZlbWVudC4gV2UgcHJv
YmFibHkgbmVlZCB0byBmaXggdGhpcyBieSBtYWtpbmcKKy8vIHRoaXMgdGVzdCBoYXZlIGEgbG9u
Zy1ydW5uaW5nIHJlc291cmNlLgorVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc1Rlc3QiKSk7CiAK
QEAgLTU4LDggKzgwLDggQEAgVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YQogICAgIC8vIG9iamVjdHMgdGFrZSB1cCBtb3JlIHRoYW4gMTAlIG9mIHRoZSB2aWV3LgogICAg
IFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoImxvdHMtb2YtaW1hZ2VzIiwgImh0bWwiKSkuZ2V0KCkpOwogCi0gICAgVXRpbDo6
cnVuKCZkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkKTsKLSAgICBFWFBF
Q1RfVFJVRShkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkKTsKKyAgICBV
dGlsOjpydW4oJmRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50cyk7CisgICAgRVhQRUNUX1RS
VUUoZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZyYW1lcy5jcHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmlyZU1v
cmVUaGFuT25jZTsKLXN0YXRpYyB1bnNpZ25lZCBuZXdWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q291
bnRlcjsKK3N0YXRpYyBib29sIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJl
c2hvbGRNb3JlVGhhbk9uY2U7CitzdGF0aWMgdW5zaWduZWQgZGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZENvdW50ZXI7CiBzdGF0aWMgYm9vbCB0ZXN0MURvbmU7CiBz
dGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCkBAIC00OSwxMSArNDksMTQgQEAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogICAgIFdLUGFnZUZvcmNlUmVwYWludChw
YWdlLCAwLCBkaWRGb3JjZVJlcGFpbnQpOwogfQogCi1zdGF0aWMgdm9pZCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikK
K3N0YXRpYyB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdLUGFnZVJlZiwgV0tMYXlv
dXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0gICAg
KytuZXdWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q291bnRlcjsKLSAgICBpZiAobmV3VmlzdWFsbHlO
b25FbXB0eUxheW91dENvdW50ZXIgPiAxKQotICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGaXJlTW9yZVRoYW5PbmNlID0gdHJ1ZTsKKyAgICBpZiAodHlwZSAhPSBrV0tE
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKQorICAgICAgICByZXR1
cm47CisKKyAgICArK2RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRD
b3VudGVyOworICAgIGlmIChkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkQ291bnRlciA+IDEpCisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2UgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNjIsMTQgKzY1LDE0IEBAIHN0YXRpYyB2
b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmUKICAgICBtZW1zZXQoJmxvYWRlckNsaWVu
dCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0g
a1dLUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwogICAgIGxvYWRlckNsaWVudC5kaWRG
aW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xp
ZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dDsKKyAgICBsb2FkZXJDbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQgPSBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKIAogICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7CiB9CiAKIFRFU1QoV2ViS2l0MiwgTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzKQogewotICAgIG5ld1Zpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRDb3VudGVyID0gMDsKKyAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVj
dHNBcmVhVGhyZXNob2xkQ291bnRlciA9IDA7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVm
PiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRl
c3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc1Rlc3QiKSk7CiAKICAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKQEAgLTgyLDcgKzg1LDcgQEAg
VEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYQogCiAgICAgLy8gQnkgdGhl
IHRpbWUgdGhlIGZvcmNlZCByZXBhaW50IGhhcyBmaW5pc2hlZCwgdGhlIGNvdW50ZXIgd291bGQg
aGF2ZSBiZWVuIGhpdCAKICAgICAvLyBpZiBpdCB3YXMgc2l6ZWQgcmVhc29uYWJseSBmb3IgdGhl
IHBhZ2UuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZpcmVNb3JlVGhhbk9uY2UpOworICAgIEVYUEVDVF9GQUxTRShkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkTW9yZVRoYW5PbmNlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDEyNjg5MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNiArNDE3LDcgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogICAgICAgICAwLCAvLyBkaWRSdW5J
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWREZXRlY3RYU1NGb3JGcmFt
ZQogICAgICAgICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAg
ICAgMCwgLy8gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQKICAgICAgICAgMCwgLy8gd2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGludGVyYWN0aW9uT2NjdXJyZWRX
aGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKICAgICAgICAgMCwgLy8gcGx1Z2luRGlkRmFpbApJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI2ODkxKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UoVwogICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSwKICAg
ICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkVW5sb2NrTGF5
b3V0QWNoaWV2ZW1lbnQKICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAs
IC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGRpZENyZWF0
ZUdsb2JhbE9iamVjdEZvckZyYW1lCg==
</data>
<flag name="commit-queue"
          id="172183"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161527</attachid>
            <date>2012-08-30 12:08:05 -0700</date>
            <delta_ts>2012-08-30 14:54:38 -0700</delta_ts>
            <desc>Patch, with more build fixing</desc>
            <filename>unlock-for-review-3.txt</filename>
            <type>text/plain</type>
            <size>56289</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgZmFyIGFzIFdlYkNvcmUgaXMgY29uY2VybmVkLCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgCisgICAgICAgIG5vdyBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKwogMjAxMi0wOC0zMCAgVmljdG9yIENhcmJ1bmUg
IDx2aWN0b3JAcm9zZWR1Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFRoZSBDQyBidXR0b24g
aXMgbm90IHBhaW50ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgeyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEyNzE2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyOTEsOSArMjI5MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEZpcnN0VmlzdWFs
bHlOb25FbXAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZEhpdFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0c0FyZWFUaHJlc2hvbGQoKQogewotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEwICsxNzcsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7CiAKLSAgICAvLyBGSVhNRTogZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRvIGV4
aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhlIHRp
bWUgYmVpbmcuCiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKLSAg
ICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZvaWQgZGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpOwogCiAgICAgdm9pZCBs
b2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQg
dGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
YXlvdXQoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdChSZQogICAgICAgICBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMg
PSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAg
ICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFU
aHJlc2hvbGQoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1
IEBACisyMDEyLTA4LTMwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAg
TmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBjbGllbnQgQVBJIGlz
IGNhbGxlZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCgpLiBJdCBoYXMgYW4gCisgICAgICAg
IGVudW1lcmF0aW9uIHBhcmFtZXRlciBjYWxsZWQgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGUgd2hp
Y2ggcmVwcmVzZW50cyAKKyAgICAgICAgdGhlIHRocmVlIGRpZmZlcmVudCBsYXlvdXQgYWNoaWV2
ZW1lbnRzIHRoYXQgY2FuIGJlIHVubG9ja2VkLgorCisgICAgICAgIE5ldyBlbnVtZXJhdGlvbnMu
CisgICAgICAgICogTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQ
SSk6CisgICAgICAgIChXZWJLaXQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQpOgorCisgICAgICAgIENhbGwgZGlkVW5sb2NrQWNoaWV2ZW1lbnQoKSBmb3IgdGhlIGFj
aGlldmVtZW50cyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wOC0yOSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTTlBPYmplY3QgZG9lc24ndCBhbHdh
eXMgcHJvdGVjdCBpdHMgZGF0YSB3aGVuIGNhbGxpbmcgaW50byBwbHVnaW4gY29kZQpJbmRleDog
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNiArMzg0
LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50
U2VydmljZUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50U2VydmljZUlu
Zm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBcCisgICAg
U291cmNlL1dlYktpdDIvU2hhcmVkL0xheW91dEFjaGlldmVtZW50VHlwZS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L011dGFibGVBcnJheS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25h
cnkuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0xheW91dEFjaGlldmVtZW50VHlwZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheW91dEFjaGll
dmVtZW50VHlwZV9oCisjZGVmaW5lIExheW91dEFjaGlldmVtZW50VHlwZV9oCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIExheW91dEFjaGlldmVtZW50VHlwZSB7CisgICAgRGlkRmlyc3RM
YXlvdXQsCisgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LAorICAgIERpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gTGF5b3V0QWNoaWV2ZW1lbnRUeXBlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvSW50
ZW50RGF0YS5oIFwKICAgICBTaGFyZWQvSW50ZW50U2VydmljZUluZm8uaCBcCiAgICAgU2hhcmVk
L0xheWVyVHJlZUNvbnRleHQuaCBcCisgICAgU2hhcmVkL0xheW91dEFjaGlldmVtZW50VHlwZS5o
IFwKICAgICBTaGFyZWQvTXV0YWJsZUFycmF5LmggXAogICAgIFNoYXJlZC9NdXRhYmxlRGljdGlv
bmFyeS5oIFwKICAgICBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIFwKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJldmlzaW9u
IDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1
aW50MzJfdCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlOwogCitlbnVtIHsKKyAgICBrV0tE
aWRGaXJzdExheW91dCwKKyAgICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsCisg
ICAga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZAorfTsKK3R5
cGVkZWYgdWludDMyX3QgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGU7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFy
ZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5o
IgorI2luY2x1ZGUgIkxheW91dEFjaGlldmVtZW50VHlwZS5oIgogI2luY2x1ZGUgIlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0TWVudUl0ZW1UeXBlcy5oIgpAQCAtNzQ4LDYgKzc0OSwyNSBAQCBpbmxpbmUgV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0b0FQCiAgICAgcmV0dXJuIHdrVHlwZTsKIH0KIAoraW5s
aW5lIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHRvQVBJKExheW91dEFjaGlldmVtZW50VHlwZSB0
eXBlKQoreworICAgIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHdrVHlwZSA9IGtXS0RpZEZpcnN0
TGF5b3V0OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEaWRGaXJzdExheW91dDoK
KyAgICAgICAgd2tUeXBlID0ga1dLRGlkRmlyc3RMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAgICB3a1R5cGUgPSBr
V0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAg
d2tUeXBlID0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiB3a1R5cGU7Cit9CisKIGlu
bGluZSBJbWFnZU9wdGlvbnMgdG9JbWFnZU9wdGlvbnMoV0tJbWFnZU9wdGlvbnMgd2tJbWFnZU9w
dGlvbnMpCiB7CiAgICAgdW5zaWduZWQgaW1hZ2VPcHRpb25zID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjcxNjgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTmV3
Rmlyc3RWaXN1YWxsCiAgICAgbV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KHRvQVBJKHBhZ2UpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwog
fQogCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBMYXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgQVBJT2JqZWN0KiB1
c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZl
bWVudCh0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7Cit9CisKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZy
b21IaWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJ
T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBX
ZWJMb2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5
b3V0QWNoaWV2ZW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
ODAsOSArODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYkludGVudFNlcnZpY2VJbmZv
KiwgQVBJT2JqZWN0Kik7CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRv
IGV4aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhl
IHRpbWUgYmVpbmcuCisgICAgLy8gRklYTUU6IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCBzaG91bGQgYmUgcmVtb3ZlZC4gV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgLy8gYXMgd2VsbC4gVGhleSBh
cmUgYm90aCBiZWluZyByZXBsYWNlZCBieSBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudC4KICAg
ICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXZWJQYWdlUHJveHkqLCBB
UElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KFdlYlBhZ2VQ
cm94eSosIExheW91dEFjaGlldmVtZW50VHlwZSwgQVBJT2JqZWN0Kik7CiAgICAgCiAgICAgYm9v
bCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNDIsNiArMjE0MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmV3Rmlyc3RWaXN1
YWxseU5vCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KHRoaXMsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZFVu
bG9ja0xheW91dEFjaGlldmVtZW50KHVpbnQzMl90IGxheW91dEFjaGlldmVtZW50VHlwZSwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9iamVj
dD4gdXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVj
b2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVj
b2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXJDbGll
bnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0QWNo
aWV2ZW1lbnRUeXBlPihsYXlvdXRBY2hpZXZlbWVudFR5cGUpLCB1c2VyRGF0YS5nZXQoKSk7Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0
X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAg
UmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1NCw2ICs3NTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQodWludDMyX3QgbGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAg
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBE
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCh1aW50MzJfdCB0eXBlLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
IHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIHVybCwgV1RGOjpTdHJpbmcgdW5y
ZWFjaGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNl
ckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZp
c2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
UmVjZWl2ZUF1dGhlbnRpYwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYg
YWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTGF5
b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VXaWxsR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBp
dGVtLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tQYWdlUGx1Z2luRGlkRmFpbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tF
cnJvckNvZGUgZXJyb3JDb2RlLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgV0tTdHJpbmdSZWYgcGx1
Z2luSWRlbnRpZmllciwgV0tTdHJpbmdSZWYgcGx1Z2luVmVyc2lvbiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVD
YWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLSW50ZW50RGF0YVJl
ZiBpbnRlbnQsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBA
IC0xMTUsOCArMTE2LDEwIEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZl
cnNpb24gMQogICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAKLSAgICAvLyBG
SVhNRTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgYW5kIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgbWVyZ2VkLgorICAgIC8vIEZJWE1F
OiBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIHJlbW92ZWQuIFdl
IHNob3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZQorICAgIC8vIGFzIHdlbGwuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgcmVwbGFjZWQg
YnkgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQuCiAgICAgV0tQYWdlRGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBkaWROZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgV0tQYWdlRGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRB
Y2hpZXZlbWVudDsKIAogICAgIFdLUGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1Nyw2ICs0NTcsNyBA
QAogCQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFODEyQkMy
NDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi87IH07CiAJCTkwOTg1NEVEMTJC
QzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2Vi
TWVtb3J5U2FtcGxlci5oICovOyB9OwogCQk5MDk4NTRFRTEyQkM0RTE4MDAwQUQwODAgLyogV2Vi
TWVtb3J5U2FtcGxlci5tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5t
YWMubW0gKi87IH07CisJCTkzMTg3NzM5MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZl
bWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaCAqLzsg
fTsKIAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1
RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlF
MTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NTEyNzc2MTZEMDAz
MzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OwogCQk5MzVFRUI5RjEy
Nzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQwMDMzMjJC
OCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTIyLDYgKzE1MjMsNyBAQAogCQk5MDU2MjBFNTEy
QkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBs
ZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVtb3J5U2FtcGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkwNTYyMEU5MTJCQzI0OEIwMDA3
OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYk1lbW9yeVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMx
ODc3MzgxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaDsgcGF0aCA9
IC4uL0xheW91dEFjaGlldmVtZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVF
RUI5MDEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTExMjc3NjE1RDAw
MzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5OCw2ICsyNDAwLDcg
QEAKIAkJCQlCQ0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRhYmxlRGljdGlvbmFyeS5j
cHAgKi8sCiAJCQkJQkNCQ0IwQ0ExMjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25h
cnkuaCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4
dC5oICovLAorCQkJCTkzMTg3NzM4MTVFRDkwNjUwMEE5Q0NFMyAvKiBMYXlvdXRBY2hpZXZlbWVu
dFR5cGUuaCAqLywKIAkJCQlCQ0M4MDQ5RDEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5
LmNwcCAqLywKIAkJCQlCQ0M4MDQ5RTEyMkYwRDZCMDAxMDM1MjkgLyogTXV0YWJsZUFycmF5Lmgg
Ki8sCiAJCQkJQkNCMEFFRTgxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmNw
cCAqLywKQEAgLTQyMzksNiArNDI0Miw3IEBACiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBGRjYy
IC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QzAxNTg5NDBE
ODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzU5NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTMxODc3MzkxNUVEOTA2NTAwQTlDQ0UzIC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CiAgICAg
bV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2UpLCAm
dXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRv
cHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Ci19ICAgIAorfQorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFn
ZSogcGFnZSwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdURjo6UmVmUHRyPEFQSU9iamVj
dD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7CisgICAgbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodG9BUEkocGFnZSks
IHRvQVBJKHR5cGUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAg
IHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZy
YW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0QWNoaWV2ZW1l
bnRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNs
dWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4K
QEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFt
ZSopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYlBhZ2Uq
LCBXVEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudChXZWJQYWdlKiwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBXVEY6OlJl
ZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
Kik7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBX
ZWJGcmFtZSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxMjcx
NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHR5cGVkZWYgdm9p
ZCAoKldLQnVuZGxlUGFnZURpZERldGVjdFhTU0YKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYqIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZURpZFVubG9ja0xheW91dEFjaGlldmVtZW50Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExh
eW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlUGFnZURpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYg
d29ybGQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CkBAIC0xMzksNiArMTQwLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAg
ICAgLy8gVmVyc2lvbiAxLgogICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1lOwog
ICAgIFdLQnVuZGxlUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAg
ICBXS0J1bmRsZVBhZ2VEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKICAgICBXS0J1bmRs
ZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VTaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBXS0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZUZvckZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgs
OCArNTU4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAg
ICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIAotICAg
IGlmIChtX2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdlYlBh
Z2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmlu
ZygpKQotICAgICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlz
RnJvemVuKGZhbHNlKTsKKyAgICBpZiAobV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1haW5X
ZWJGcmFtZSgpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3Mo
KS0+c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCisgICAgICAgICAgICB3ZWJQYWdl
LT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKworICAg
ICAgICAvLyBEaXNwYXRjaGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0
IGFjaGlldmVtZW50cywgc28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMg
d2VsbC4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRV
bmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRGaXJzdExheW91dCwgdXNlckRhdGEp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVubG9j
a0xheW91dEFjaGlldmVtZW50KERpZEZpcnN0TGF5b3V0LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB9CiAKICNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGllcyBhcmUgZGlz
cGF0Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3QgbGF5b3V0IGhh
cHBlbnMuCkBAIC01ODAsOSArNTg2LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmkKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKworICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUt
PnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgLy8gZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0
Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3
ZWJQYWdlLCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIHVzZXJEYXRhKTsKKyAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tMYXlvdXRB
Y2hpZXZlbWVudChEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0KIH0KIAotdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIaXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTU5MCwxMSArNjAyLDE2
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmUKIAogICAgIFJlZlB0
cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50
LgorICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4gZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IHdpbGwgYmUgcmVtb3ZlZC4gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQg
cmVwbGFjZXMKKyAgICAvLyBpdHMgZnVuY3Rpb25hbGl0eS4KICAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh3
ZWJQYWdlLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGll
bnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLCB1c2VyRGF0YSk7CiAgICAgCi0gICAgLy8gTm90
aWZ5IHRoZSBVSVByb2Nlc3MuCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB3aWxsIGJlIHJlbW92ZWQuIGRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50IHJlcGxhY2VzCisgICAgLy8gaXRzIGZ1bmN0aW9uYWxpdHkuCiAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkp
KTsKKwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dCgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjcxNjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZExheW91dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rp
b24mKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWls
dGluQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsNyBAQCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpRdEJ1aWx0aW5CdW5k
bGVQYWdlCiAgICAgICAgIDAsIC8vIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiAgICAg
ICAgIDAsIC8vIGRpZExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50CiAgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAgICAg
IDAsIC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGRpZENy
ZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzMiBAQAorMjAxMi0wOC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3
CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFu
ZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1h
bmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgY2xp
ZW50IEFQSSBpcyBjYWxsZWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoKS4gSXQgaGFzIGFu
IAorICAgICAgICBOU051bWJlciBwYXJhbWV0ZXIgY2FsbGVkIFdLTGF5b3V0QWNoaWV2ZW1lbnRU
eXBlIHdoaWNoIHJlcHJlc2VudHMgCisgICAgICAgIHRoZSB0aHJlZSBkaWZmZXJlbnQgbGF5b3V0
IGFjaGlldmVtZW50cyB0aGF0IGNhbiBiZSB1bmxvY2tlZC4KKworICAgICAgICBDYWxsIGRpZFVu
bG9ja0FjaGlldmVtZW50KCkgZm9yIHRoZSBhY2hpZXZlbWVudHMgYXMgdGhleSBvY2N1ci4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dlYlZpZXcgX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDgtMzAgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlZ2lzdGVyaW5nIHdlYiB2aWV3
cyBmb3Igbm90aWZpY2F0aW9ucyBpcyB1bmJhbGFuY2VkCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWludGVk
T2JqZWN0c0FyZWFUaHJlc2hvbGQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02NjgsNiArNjY4LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmkKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxl
bWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJhbWVG
dW5jKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRG
aXJzdExheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJz
dExheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CisKKyAgICAvLyBEaXNwYXRjaGlu
ZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28g
ZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICBpZiAoaW1w
bGVtZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMpCisgICAgICAgIENh
bGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkVW5sb2NrTGF5b3V0QWNo
aWV2ZW1lbnQ6KSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0pOwogICAgIAogICAgIC8vIFNl
ZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4KICAgICBXZWJE
eW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CkBAIC02ODUsNiArNjg5LDE4IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxv
YWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50YXRp
b25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYykKICAgICAgICAg
Q2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CisK
KyAgICAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgb25lIG9mIHRoZSBsYXlv
dXQgYWNoaWV2ZW1lbnRzLCBzbyBkaXNwYXRjaCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCBh
cyB3ZWxsLgorICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFjaGlldmVt
ZW50RnVuYykKKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmll
dzpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDopLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoy
XSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpCit7CisgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViRnJhbWVMb2FkRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgaWYgKGltcGxlbWVudGF0
aW9ucy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jKQorICAgICAgICBDYWxsRnJhbWVM
b2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50
OiksIFtOU051bWJlciBudW1iZXJXaXRoSW50OjNdKTsKIH0KIAogRnJhbWUqIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVGdW5jOwogICAgIElN
UCBkaWRGaXJzdExheW91dEluRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKKyAgICBJTVAgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnRGdW5jOwogICAgIElNUCBkaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50RnVuYzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJl
dmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTYxOCw2ICsxNjE4LDcgQEAgLSAodm9pZClfY2FjaGVGcmFtZUxv
YWREZWxlZ2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT5kaWRGaW5pc2hMb2FkRm9yRnJhbWVGdW5j
ID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaW5pc2hMb2FkRm9y
RnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMgPSBnZXRNZXRo
b2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0TGF5b3V0SW5GcmFtZTopKTsK
ICAgICBjYWNoZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMgPSBn
ZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEluRnJhbWU6KSk7CisgICAgY2FjaGUtPmRpZFVubG9ja0xheW91dEFjaGlldmVt
ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkVW5sb2Nr
TGF5b3V0QWNoaWV2ZW1lbnQ6KSk7CiAgICAgY2FjaGUtPmRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZFJlY2VpdmVJY29uRm9y
RnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZTopKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzU5LDYgKzc1OSwxMSBAQCBAaW50ZXJm
YWNlIE5TT2JqZWN0IChXZWJWaWV3RnJhbWVMb2FkRGVsCiAKIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lOwogCisvLyBBY2hpZXZlbWVudCAxIGNvcnJlc3BvbmRzIGluZGljYXRlcyB0
aGF0IHRoZSBmaXJzdCBsYXlvdXQgaGFzIGhhcHBlbmVkLiBBY2hpZXZlbWVudCAyIGluZGljYXRl
cyB0aGF0CisvLyB0aGUgZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGhhcyBoYXBwZW5lZC4g
QWNoaWV2ZW1lbnQgMyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsZXZhbnQgcmVwYWludGVkCisvLyBv
YmplY3RzIHRocmVzaG9sZCBpbiBXZWJDb3JlOjpQYWdlIGhhcyBiZWVuIGhpdC4KKy0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDooTlNO
dW1iZXIgKilhY2hpZXZlbWVudDsKKwogLy8gRm9yIGltcGxlbWVudGluZyB0aGUgV2ViSW5zcGVj
dG9yJ3MgdGVzdCBoYXJuZXNzCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRp
ZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0OihXZWJTY3JpcHRPYmplY3QgKil3aW5kb3dPYmpl
Y3QgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OSkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA4LTMwICBC
ZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWNjb3VudCBmb3IgdGhlIG5ldyBtZW1iZXIgb2YgdGhlIFBhZ2VM
b2FkQ2xpZW50LgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJd
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRC
dW5kbGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorCisgICAgICAg
IFRoZSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMgaGFzIGV4aXN0ZWQg
Zm9yIGEgd2hpbGUsIAorICAgICAgICBidXQgaXQgZGlkIG5vdCBoYXZlIHRoZSByaWdodCB0YXJn
ZXQgbWVtYmVyc2hpcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBVc2UgbmV3IGRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50IEFQSSBpbnN0ZWFkIG9mIG9sZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0IEFQSS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVy
Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJ
bWFnZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGcmFtZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29n
bGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29uc3Ry
YWludHMKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxl
ci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5tCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYzMCw3IEBA
IC0gKHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIDAsIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4KICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWRVbmxvY2tMYXlv
dXRBY2hpZXZlbWVudAogICAgICAgICAwLCAvLyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0K
ICAgICAgICAgMCwgLy8gaW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2
ZQogICAgICAgICAwLCAvLyBwbHVnaW5EaWRGYWlsCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcg
QEAKIAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87
IH07CiAJCTgxQjUwMTkzMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQjUwMTkyMTQwRjIz
MjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThE
MDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBs
b3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKKwkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8qIE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0Ug
LyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCAqLzsgfTsKIAkJ
OTM2MTAwMjkxNERDOTVBNzAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjEwMDI4MTRE
Qzk1N0IwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCAqLzsgfTsKIAkJOTM5QkE5MTcx
NDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QkE5MTYxNDEwMzQxMjAwMUEw
MUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovOyB9OwogCQk5M0FGNEVDRTE1MDZG
MDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi87IH07CkBAIC05ODUsNiArOTg2LDcgQEAKIAkJCQlCQzkw
OTk1RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM5MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjkgQEAKIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRTdWNjZWVkOworc3RhdGljIGJvb2wgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZDsK
K3N0YXRpYyBib29sIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkOworc3Rh
dGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGll
dmVkOworc3RhdGljIGJvb2wgZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzOwogCi1zdGF0
aWMgdm9pZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5
cGVSZWYsIGNvbnN0IHZvaWQgKikKK3N0YXRpYyB2b2lkIGRpZFVubG9ja0xheW91dEFjaGlldmVt
ZW50KFdLUGFnZVJlZiwgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkICopCiB7Ci0gICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3Vj
Y2VlZCA9IHRydWU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBrV0tEaWRGaXJzdExh
eW91dDoKKyAgICAgICAgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2Uga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAg
ICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Uga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZDoKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVz
aG9sZEFjaGlldmVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChkaWRGaXJzdExheW91dEFjaGlldmVkICYm
IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkICYmIGRpZEhpdFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCkKKyAgICAgICAgZGlkVW5sb2Nr
QWxsTGF5b3V0QWNoaWV2ZW1lbnRzID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZUxv
YWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTQyLDExICs2MCwxNSBAQCBzdGF0aWMgdm9p
ZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxv
YWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNs
aWVudCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1
cnJlbnRWZXJzaW9uOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbG9hZGVy
Q2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGll
bnQpOwogfQogCisvLyBGSVhNRTogVGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1c2UK
Ky8vIHRoZSBmcmFtZSBsb2FkIGlzIGNvbXBsZXRpbmcgYmVmb3JlIGRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhlCisvLyBrV0tEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGlldmVtZW50LiBXZSBwcm9iYWJseSBuZWVk
IHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0ZXN0IGhhdmUgYSBsb25nLXJ1bm5pbmcg
cmVzb3VyY2UuCiBURVNUKFdlYktpdDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRX
SywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0VGVzdCIpKTsKQEAgLTU4LDggKzgwLDggQEAgVEVTVChXZWJLaXQy
LCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5TgogICAgIC8vIG9iamVjdHMgdGFrZSB1cCBtb3Jl
IHRoYW4gMTAlIG9mIHRoZSB2aWV3LgogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCks
IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImxvdHMtb2YtdGV4dCIsICJodG1s
IikpLmdldCgpKTsKIAotICAgIFV0aWw6OnJ1bigmZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0U3VjY2VlZCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0U3VjY2VlZCk7CisgICAgVXRpbDo6cnVuKCZkaWRVbmxvY2tBbGxMYXlvdXRBY2hp
ZXZlbWVudHMpOworICAgIEVYUEVDVF9UUlVFKGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWls
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNwcAkocmV2aXNpb24gMTI3MTY4KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZhaWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dFN1Y2NlZWQ7CitzdGF0aWMgYm9vbCBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQ7CiBzdGF0aWMgYm9vbCB0ZXN0MURvbmU7
CiBzdGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCkBAIC00OCw5ICs0OCwxMCBAQCBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9yY2VSZXBhaW50
KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAq
KQorc3RhdGljIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVmLCBXS0xh
eW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAgICBp
ZiAodHlwZSA9PSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xk
KQorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNo
aWV2ZWQgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlKQpAQCAtNTksNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlCiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJD
bGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRD
dXJyZW50VmVyc2lvbjsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0g
ZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7Cisg
ICAgbG9hZGVyQ2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2NrTGF5
b3V0QWNoaWV2ZW1lbnQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZs
b2FkZXJDbGllbnQpOwogfQpAQCAtODAsNyArODEsNyBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAvLyBCeSB0aGUgdGltZSB0aGUgZm9yY2VkIHJlcGFp
bnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRlciB3b3VsZCBoYXZlIGJlZW4gaGl0IAogICAgIC8v
IGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5IGZvciB0aGUgcGFnZS4KLSAgICBFWFBFQ1RfRkFM
U0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7CisgICAgRVhQRUNU
X0ZBTFNFKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZl
ZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJ
bWFnZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwCShyZXZpc2lvbiAx
MjcxNjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEg
KzMwLDI5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGJvb2wgZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZDsKK3N0YXRpYyBib29sIGRpZEZp
cnN0TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZFVubG9ja0FsbExheW91dEFj
aGlldmVtZW50czsKIAotc3RhdGljIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KFdLUGFnZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRV
bmxvY2tMYXlvdXRBY2hpZXZlbWVudChXS1BhZ2VSZWYsIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBl
IHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgIGRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dFN1Y2NlZWQgPSB0cnVlOworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2Uga1dLRGlkRmlyc3RMYXlvdXQ6CisgICAgICAgIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQg
PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dDoKKyAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2
ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ6CisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoZGlkRmly
c3RMYXlvdXRBY2hpZXZlZCAmJiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZl
ZCAmJiBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQp
CisgICAgICAgIGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50cyA9IHRydWU7CiB9CiAKIHN0
YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC00MiwxMiAr
NjAsMTYgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIFdL
UGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQs
IDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtX
S1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9IGRp
ZFVubG9ja0xheW91dEFjaGlldmVtZW50OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAotVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMpCisvLyBGSVhNRTogVGhpcyB0ZXN0IGhhcyBiZWVu
IGJyb2tlbiBzaW5jZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTU3NTIgSXQn
cyBmYWlsaW5nIGJlY2F1c2UKKy8vIHRoZSBmcmFtZSBsb2FkIGlzIGNvbXBsZXRpbmcgYmVmb3Jl
IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhlCisvLyBr
V0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGlldmVtZW50
LiBXZSBwcm9iYWJseSBuZWVkIHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0ZXN0IGhh
dmUgYSBsb25nLXJ1bm5pbmcgcmVzb3VyY2UuCitURVNUKFdlYktpdDIsIERJU0FCTEVEX05ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcykKIHsKICAgICBXS1JldGFpblB0cjxX
S0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVj
dGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzVGVz
dCIpKTsKIApAQCAtNTgsOCArODAsOCBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxhCiAgICAgLy8gb2JqZWN0cyB0YWtlIHVwIG1vcmUgdGhhbiAxMCUgb2YgdGhlIHZp
ZXcuCiAgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVh
dGVVUkxGb3JSZXNvdXJjZSgibG90cy1vZi1pbWFnZXMiLCAiaHRtbCIpKS5nZXQoKSk7CiAKLSAg
ICBVdGlsOjpydW4oJmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOwot
ICAgIEVYUEVDVF9UUlVFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQp
OworICAgIFV0aWw6OnJ1bigmZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzKTsKKyAgICBF
WFBFQ1RfVFJVRShkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVudHMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RnJhbWVzLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1l
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGaXJlTW9yZVRoYW5PbmNlOwotc3RhdGljIHVuc2lnbmVkIG5ld1Zpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRDb3VudGVyOworc3RhdGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZTsKK3N0YXRpYyB1bnNpZ25lZCBkaWRIaXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlcjsKIHN0YXRpYyBib29sIHRlc3Qx
RG9uZTsKIHN0YXRpYyBib29sIHRlc3QyRG9uZTsKICAgICAKQEAgLTQ5LDExICs0OSwxNCBAQCBz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9yY2VS
ZXBhaW50KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCAqKQorc3RhdGljIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVm
LCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikK
IHsKLSAgICArK25ld1Zpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyOwotICAgIGlmIChuZXdW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Q291bnRlciA+IDEpCi0gICAgICAgIGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZpcmVNb3JlVGhhbk9uY2UgPSB0cnVlOworICAgIGlmICh0eXBl
ICE9IGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpCisgICAg
ICAgIHJldHVybjsKKworICAgICsrZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZENvdW50ZXI7CisgICAgaWYgKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGRDb3VudGVyID4gMSkKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lk
IHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC02MiwxNCArNjUsMTQgQEAg
c3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIG1lbXNldCgmbG9h
ZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZl
cnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgbG9hZGVyQ2xp
ZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBs
b2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRVbmxvY2tMYXlv
dXRBY2hpZXZlbWVudCA9IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50OwogCiAgICAgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAogVEVTVChXZWJL
aXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMpCiB7Ci0gICAgbmV3Vmlz
dWFsbHlOb25FbXB0eUxheW91dENvdW50ZXIgPSAwOworICAgIGRpZEhpdFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRDb3VudGVyID0gMDsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVk
QnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVzdCIpKTsK
IAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpAQCAtODIsNyAr
ODUsNyBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAv
LyBCeSB0aGUgdGltZSB0aGUgZm9yY2VkIHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRl
ciB3b3VsZCBoYXZlIGJlZW4gaGl0IAogICAgIC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5
IGZvciB0aGUgcGFnZS4KLSAgICBFWFBFQ1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RmlyZU1vcmVUaGFuT25jZSk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2UpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIDAsIC8v
IGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZERldGVjdFhT
U0ZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dAorICAgICAgICAwLCAvLyBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAgICAgICAwLCAv
LyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gaW50ZXJhY3Rpb25P
Y2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZQogICAgICAgICAwLCAvLyBwbHVnaW5EaWRG
YWlsCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OkluamVjdGVkQnVuZGxlUGFnZShXCiAgICAgICAgIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lLAogICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRV
bmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZSwKICAg
ICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8g
ZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUK
</data>
<flag name="commit-queue"
          id="172381"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161565</attachid>
            <date>2012-08-30 14:54:38 -0700</date>
            <delta_ts>2012-09-04 22:31:01 -0700</delta_ts>
            <desc>Patch for EFL</desc>
            <filename>unlock-for-review-4.txt</filename>
            <type>text/plain</type>
            <size>56292</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXMgZmFyIGFzIFdlYkNvcmUgaXMgY29uY2VybmVkLCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgCisgICAgICAgIG5vdyBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoRnJhbWVMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KToKKwogMjAxMi0wOC0zMCAgVmljdG9yIENhcmJ1bmUg
IDx2aWN0b3JAcm9zZWR1Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFRoZSBDQyBidXR0b24g
aXMgbm90IHBhaW50ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgeyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEyNzE2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyOTEsOSArMjI5MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEZpcnN0VmlzdWFs
bHlOb25FbXAKICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZEhpdFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0c0FyZWFUaHJlc2hvbGQoKQogewotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEwICsxNzcsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7CiAKLSAgICAvLyBGSVhNRTogZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRvIGV4
aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhlIHRp
bWUgYmVpbmcuCiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKLSAg
ICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZvaWQgZGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpOwogCiAgICAgdm9pZCBs
b2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQg
dGVsbENsaWVudEFib3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY0LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgPSAwOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
YXlvdXQoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdChSZQogICAgICAgICBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMg
PSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAg
ICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFU
aHJlc2hvbGQoKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1
IEBACisyMDEyLTA4LTMwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAg
TmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBjbGllbnQgQVBJIGlz
IGNhbGxlZCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCgpLiBJdCBoYXMgYW4gCisgICAgICAg
IGVudW1lcmF0aW9uIHBhcmFtZXRlciBjYWxsZWQgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGUgd2hp
Y2ggcmVwcmVzZW50cyAKKyAgICAgICAgdGhlIHRocmVlIGRpZmZlcmVudCBsYXlvdXQgYWNoaWV2
ZW1lbnRzIHRoYXQgY2FuIGJlIHVubG9ja2VkLgorCisgICAgICAgIE5ldyBlbnVtZXJhdGlvbnMu
CisgICAgICAgICogTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQ
SSk6CisgICAgICAgIChXZWJLaXQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQpOgorCisgICAgICAgIENhbGwgZGlkVW5sb2NrQWNoaWV2ZW1lbnQoKSBmb3IgdGhlIGFj
aGlldmVtZW50cyBhcyB0aGV5IG9jY3VyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50KToKKwogMjAxMi0wOC0yOSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTTlBPYmplY3QgZG9lc24ndCBhbHdh
eXMgcHJvdGVjdCBpdHMgZGF0YSB3aGVuIGNhbGxpbmcgaW50byBwbHVnaW4gY29kZQpJbmRleDog
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNiArMzg0
LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50
U2VydmljZUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50U2VydmljZUlu
Zm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBcCisgICAg
U291cmNlL1dlYktpdDIvU2hhcmVkL0xheW91dEFjaGlldmVtZW50VHlwZS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L011dGFibGVBcnJheS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25h
cnkuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBTaGFyZWQvSW50ZW50RGF0YS5oIFwKICAgICBTaGFyZWQvSW50ZW50U2Vydmlj
ZUluZm8uaCBcCiAgICAgU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBcCisgICAgU2hhcmVkL0xh
eW91dEFjaGlldmVtZW50VHlwZS5oIFwKICAgICBTaGFyZWQvTXV0YWJsZUFycmF5LmggXAogICAg
IFNoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5oIFwKICAgICBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9MYXlvdXRBY2hpZXZlbWVu
dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTGF5b3V0QWNoaWV2
ZW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTGF5b3V0
QWNoaWV2ZW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExheW91dEFjaGlldmVtZW50VHlwZV9oCisjZGVmaW5lIExheW91dEFjaGll
dmVtZW50VHlwZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIExheW91dEFjaGlldmVt
ZW50VHlwZSB7CisgICAgRGlkRmlyc3RMYXlvdXQsCisgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0LAorICAgIERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gTGF5b3V0QWNoaWV2
ZW1lbnRUeXBlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2Fk
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdl
TG9hZFR5cGVzLmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAg
ZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
OwogCitlbnVtIHsKKyAgICBrV0tEaWRGaXJzdExheW91dCwKKyAgICBrV0tEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQsCisgICAga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tMYXlvdXRBY2hpZXZlbWVudFR5
cGU7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAxMjcxNjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAogI2lu
Y2x1ZGUgIkltYWdlT3B0aW9ucy5oIgorI2luY2x1ZGUgIkxheW91dEFjaGlldmVtZW50VHlwZS5o
IgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV0tC
YXNlLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIgpAQCAtNzQ4LDYgKzc0
OSwyNSBAQCBpbmxpbmUgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0b0FQCiAgICAgcmV0
dXJuIHdrVHlwZTsKIH0KIAoraW5saW5lIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHRvQVBJKExh
eW91dEFjaGlldmVtZW50VHlwZSB0eXBlKQoreworICAgIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBl
IHdrVHlwZSA9IGtXS0RpZEZpcnN0TGF5b3V0OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBEaWRGaXJzdExheW91dDoKKyAgICAgICAgd2tUeXBlID0ga1dLRGlkRmlyc3RMYXlvdXQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
OgorICAgICAgICB3a1R5cGUgPSBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZDoKKyAgICAgICAgd2tUeXBlID0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJl
dHVybiB3a1R5cGU7Cit9CisKIGlubGluZSBJbWFnZU9wdGlvbnMgdG9JbWFnZU9wdGlvbnMoV0tJ
bWFnZU9wdGlvbnMgd2tJbWFnZU9wdGlvbnMpCiB7CiAgICAgdW5zaWduZWQgaW1hZ2VPcHRpb25z
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCB2b2lkIFdl
YkxvYWRlckNsaWVudDo6ZGlkTmV3Rmlyc3RWaXN1YWxsCiAgICAgbV9jbGllbnQuZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2UpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkVW5sb2Nr
TGF5b3V0QWNoaWV2ZW1lbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBMYXlvdXRBY2hpZXZlbWVudFR5
cGUgdHlwZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFVu
bG9ja0xheW91dEFjaGlldmVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5k
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJ
KHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIHZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXZWJMb2FkZXJDbGllbnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xp
ZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtODAsOSArODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IFdlYkludGVudFNlcnZpY2VJbmZvKiwgQVBJT2JqZWN0Kik7CiAjZW5kaWYKIAotICAgIC8vIEZJ
WE1FOiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBhbmQgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9u
bHkgcmVhc29uIGZvciBib3RoIHRvIGV4aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJl
bnQgaGV1cmlzdGljcyBmb3IgdGhlIHRpbWUgYmVpbmcuCisgICAgLy8gRklYTUU6IGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgcmVtb3ZlZC4gV2Ugc2hvdWxkIGNv
bnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisg
ICAgLy8gYXMgd2VsbC4gVGhleSBhcmUgYm90aCBiZWluZyByZXBsYWNlZCBieSBkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudC4KICAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dChXZWJQYWdlUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50KFdlYlBhZ2VQcm94eSosIExheW91dEFjaGlldmVtZW50VHlwZSwgQVBJT2Jq
ZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNw
YWNlKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNDIsNiArMjE0MiwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRoaXMsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KHVpbnQzMl90IGxheW91
dEFjaGlldmVtZW50VHlwZSwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7
CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNz
YWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9sb2FkZXJDbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodGhpcywg
c3RhdGljX2Nhc3Q8TGF5b3V0QWNoaWV2ZW1lbnRUeXBlPihsYXlvdXRBY2hpZXZlbWVudFR5cGUp
LCB1c2VyRGF0YS5nZXQoKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjcxNjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTc1NCw2ICs3NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2
b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQg
ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodWludDMyX3QgbGF5b3V0QWNoaWV2ZW1lbnRUeXBl
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
ICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciopOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaXJzdExheW91dEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIgdXNlckRhdGEpCiAgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2RlciB1c2VyRGF0YSkKICAgICBEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRV
bmxvY2tMYXlvdXRBY2hpZXZlbWVudCh1aW50MzJfdCB0eXBlLCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3Ry
aW5nIHVybCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0
YSkKICAgICBEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5n
IHVybCwgV1RGOjpTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZUF1dGhlbnRpYwogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmIGl0ZW0sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VX
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUGx1Z2luRGlkRmFpbENhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgV0tFcnJvckNvZGUgZXJyb3JDb2RlLCBXS1N0cmluZ1JlZiBtaW1l
VHlwZSwgV0tTdHJpbmdSZWYgcGx1Z2luSWRlbnRpZmllciwgV0tTdHJpbmdSZWYgcGx1Z2luVmVy
c2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnQsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMTUsOCArMTE2LDEwIEBAIHN0cnVjdCBXS1BhZ2VMb2Fk
ZXJDbGllbnQgewogICAgIC8vIFZlcnNpb24gMQogICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNT
Rm9yRnJhbWU7CiAKLSAgICAvLyBGSVhNRTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUg
bWVyZ2VkLgorICAgIC8vIEZJWE1FOiBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQg
c2hvdWxkIGJlIHJlbW92ZWQuIFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgIC8vIGFzIHdlbGwuIFRoZWlyIGZ1bmN0
aW9uYWxpdHkgaXMgcmVwbGFjZWQgYnkgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQuCiAgICAg
V0tQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgV0tQYWdl
RGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKIAogICAgIFdLUGFnZVdpbGxHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1Nyw2ICs0NTcsNyBAQAogCQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQwODAgLyogV2Vi
TWVtb3J5U2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAg
Ki87IH07CiAJCTkwOTg1NEVEMTJCQzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFOTEy
QkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5oICovOyB9OwogCQk5MDk4NTRFRTEy
QkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYg
LyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gKi87IH07CisJCTkzMzM2OUJBMTVGMDE3RDQwMEQ4
Nzc2NyAvKiBMYXlvdXRBY2hpZXZlbWVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzM2OUI5MTVGMDE3RDQwMEQ4Nzc2NyAvKiBMYXlvdXRB
Y2hpZXZlbWVudFR5cGUuaCAqLzsgfTsKIAkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzNUVFQjlFMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzVFRUI5NTEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3Bw
ICovOyB9OwogCQk5MzVFRUI5RjEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTIyLDYgKzE1
MjMsNyBAQAogCQk5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5t
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2
IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWVtb3J5U2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMzY5QjkxNUYwMTdENDAwRDg3NzY3IC8qIExheW91dEFjaGll
dmVtZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXlvdXRBY2hp
ZXZlbWVudFR5cGUuaDsgcGF0aCA9IFNoYXJlZC9MYXlvdXRBY2hpZXZlbWVudFR5cGUuaDsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk5MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyog
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5MDEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM1RUVCOTExMjc3NjE1RDAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzU4MCw2ICszNTgyLDcgQEAKIAkJCQlCQzQwNzVFNTEyNEZGMDI3MDA2OEYy
MEEgLyogV0tOdW1iZXIuY3BwICovLAogCQkJCUJDNDA3NUU2MTI0RkYwMjcwMDY4RjIwQSAvKiBX
S051bWJlci5oICovLAogCQkJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2Fk
VHlwZXMuaCAqLywKKwkJCQk5MzMzNjlCOTE1RjAxN0Q0MDBEODc3NjcgLyogTGF5b3V0QWNoaWV2
ZW1lbnRUeXBlLmggKi8sCiAJCQkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVy
TGF5ZXIuY3BwICovLAogCQkJCTM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxh
eWVyLmggKi8sCiAJCQkJMzc2MDg4MjAxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0
LmNwcCAqLywKQEAgLTQyMzksNiArNDI0Miw3IEBACiAJCQkJM0Y4N0I5QkUxNTg5NDAxOTAwOTBG
RjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4N0I5QzAxNTg5
NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzU5NTQ4OTE1Qzc4Njg1MDBGRDFFM0UgLyogV2ViS2l0Mi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTMzMzY5QkExNUYwMTdENDAwRDg3NzY3IC8qIExheW91dEFjaGlldmVtZW50VHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OmRpZAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CiAg
ICAgbV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2Up
LCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0g
YWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Ci19ICAgIAorfQorCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV2Vi
UGFnZSogcGFnZSwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlIHR5cGUsIFdURjo6UmVmUHRyPEFQSU9i
amVjdD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNo
aWV2ZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFz
cyA9IDA7CisgICAgbV9jbGllbnQuZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQodG9BUEkocGFn
ZSksIHRvQVBJKHR5cGUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZv
ckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnRfaAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiTGF5b3V0QWNoaWV2
ZW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNp
bmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVj
dD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYlBh
Z2UqLCBXVEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudChXZWJQYWdlKiwgTGF5b3V0QWNoaWV2ZW1lbnRUeXBlLCBXVEY6
OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93
T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkKik7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2Uq
LCBXZWJGcmFtZSopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAx
MjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHR5cGVkZWYg
dm9pZCAoKldLQnVuZGxlUGFnZURpZERldGVjdFhTU0YKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYq
IHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlUGFnZURpZFVubG9ja0xheW91dEFjaGlldmVtZW50Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYqIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURp
ZExheW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
QnVuZGxlUGFnZURpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWYgd29ybGQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CkBAIC0xMzksNiArMTQwLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7
CiAgICAgLy8gVmVyc2lvbiAxLgogICAgIFdLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZyYW1l
OwogICAgIFdLQnVuZGxlUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxi
YWNrICAgICAgICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsK
KyAgICBXS0J1bmRsZVBhZ2VEaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDsKICAgICBXS0J1
bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VTaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBXS0J1bmRsZVBhZ2VHbG9iYWxPYmplY3RJ
c0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmpl
Y3RJc0F2YWlsYWJsZUZvckZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NTgsOCArNTU4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIAot
ICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdl
YlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRl
cmluZygpKQotICAgICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0
ZUlzRnJvemVuKGZhbHNlKTsKKyAgICBpZiAobV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1h
aW5XZWJGcmFtZSgpKSB7CisgICAgICAgIGlmICghd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGlu
Z3MoKS0+c3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKCkpCisgICAgICAgICAgICB3ZWJQ
YWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKwor
ICAgICAgICAvLyBEaXNwYXRjaGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5
b3V0IGFjaGlldmVtZW50cywgc28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQg
YXMgd2VsbC4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5k
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRGaXJzdExheW91dCwgdXNlckRh
dGEpOworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVu
bG9ja0xheW91dEFjaGlldmVtZW50KERpZEZpcnN0TGF5b3V0LCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB9CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGllcyBhcmUg
ZGlzcGF0Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3QgbGF5b3V0
IGhhcHBlbnMuCkBAIC01ODAsOSArNTg2LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmkKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKworICAgIGlmIChtX2ZyYW1lID09IG1fZnJh
bWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgLy8gZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywgc28gZGlz
cGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICAgICAgd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCh3ZWJQYWdlLCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIHVzZXJEYXRhKTsKKyAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVbmxvY2tMYXlv
dXRBY2hpZXZlbWVudChEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0KIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTU5MCwxMSArNjAy
LDE2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmUKIAogICAgIFJl
ZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xp
ZW50LgorICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4gZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0IHdpbGwgYmUgcmVtb3ZlZC4gZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1l
bnQgcmVwbGFjZXMKKyAgICAvLyBpdHMgZnVuY3Rpb25hbGl0eS4KICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCh3ZWJQYWdlLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCh3ZWJQYWdlLCBEaWRIaXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkLCB1c2VyRGF0YSk7CiAgICAgCi0gICAgLy8g
Tm90aWZ5IHRoZSBVSVByb2Nlc3MuCisgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB3aWxsIGJlIHJlbW92ZWQuIGRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50IHJlcGxhY2VzCisgICAgLy8gaXRzIGZ1bmN0aW9uYWxpdHkuCiAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRV
bmxvY2tMYXlvdXRBY2hpZXZlbWVudChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQo
KSkpKTsKKwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91
dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjcxNjgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGl0UmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZExheW91dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRC
dWlsdGluQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpRdEJ1aWx0aW5C
dW5kbGVQYWdlCiAgICAgICAgIDAsIC8vIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiAg
ICAgICAgIDAsIC8vIGRpZExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50CiAgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAg
ICAgIDAsIC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGRp
ZENyZWF0ZUdsb2JhbE9iamVjdEZvckZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMiBAQAorMjAxMi0wOC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAg
IC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcg
Y2xpZW50IEFQSSBpcyBjYWxsZWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoKS4gSXQgaGFz
IGFuIAorICAgICAgICBOU051bWJlciBwYXJhbWV0ZXIgY2FsbGVkIFdLTGF5b3V0QWNoaWV2ZW1l
bnRUeXBlIHdoaWNoIHJlcHJlc2VudHMgCisgICAgICAgIHRoZSB0aHJlZSBkaWZmZXJlbnQgbGF5
b3V0IGFjaGlldmVtZW50cyB0aGF0IGNhbiBiZSB1bmxvY2tlZC4KKworICAgICAgICBDYWxsIGRp
ZFVubG9ja0FjaGlldmVtZW50KCkgZm9yIHRoZSBhY2hpZXZlbWVudHMgYXMgdGhleSBvY2N1ci4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDgtMzAgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFJlZ2lzdGVyaW5nIHdlYiB2
aWV3cyBmb3Igbm90aWZpY2F0aW9ucyBpcyB1bmJhbGFuY2VkCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhpdFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC02NjgsNiArNjY4LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmkKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGlt
cGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9u
cyh3ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJh
bWVGdW5jKQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5k
aWRGaXJzdExheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRG
aXJzdExheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CisKKyAgICAvLyBEaXNwYXRj
aGluZyB0aGUgZmlyc3QgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbGF5b3V0IGFjaGlldmVtZW50cywg
c28gZGlzcGF0Y2ggZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQgYXMgd2VsbC4KKyAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudEZ1bmMpCisgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFj
aGlldmVtZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkVW5sb2NrTGF5b3V0
QWNoaWV2ZW1lbnQ6KSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0pOwogICAgIAogICAgIC8v
IFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4KICAgICBX
ZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZh
dGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CkBAIC02ODUsNiArNjg5LDE4IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICBXZWJGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKICAgICBpZiAoaW1wbGVtZW50
YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYykKICAgICAg
ICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7
CisKKyAgICAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgaXMgb25lIG9mIHRoZSBs
YXlvdXQgYWNoaWV2ZW1lbnRzLCBzbyBkaXNwYXRjaCBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dCBhcyB3ZWxsLgorICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50RnVuYykKKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDopLCBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDoyXSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkSGl0UmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCgpCit7CisgICAgV2ViVmlldyAqd2Vi
VmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViRnJhbWVMb2FkRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJh
bWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+ZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnRGdW5jKQorICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVu
dEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFVubG9ja0xheW91dEFjaGlldmVt
ZW50OiksIFtOU051bWJlciBudW1iZXJXaXRoSW50OjNdKTsKIH0KIAogRnJhbWUqIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRp
b25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVGdW5jOwogICAg
IElNUCBkaWRGaXJzdExheW91dEluRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKKyAgICBJTVAgZGlkVW5sb2NrTGF5b3V0QWNoaWV2
ZW1lbnRGdW5jOwogICAgIElNUCBkaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYzsKICAgICBJTVAg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50RnVuYzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTYxOCw2ICsxNjE4LDcgQEAgLSAodm9pZClfY2FjaGVGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT5kaWRGaW5pc2hMb2FkRm9yRnJhbWVG
dW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMgPSBnZXRN
ZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0TGF5b3V0SW5GcmFtZTop
KTsKICAgICBjYWNoZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMg
PSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEluRnJhbWU6KSk7CisgICAgY2FjaGUtPmRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkVW5s
b2NrTGF5b3V0QWNoaWV2ZW1lbnQ6KSk7CiAgICAgY2FjaGUtPmRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
SGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZFJlY2VpdmVJY29u
Rm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRS
ZWNlaXZlSWNvbjpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBA
c2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZTopKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzU5LDYgKzc1OSwxMSBAQCBAaW50
ZXJmYWNlIE5TT2JqZWN0IChXZWJWaWV3RnJhbWVMb2FkRGVsCiAKIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lOwogCisvLyBBY2hpZXZlbWVudCAxIGNvcnJlc3BvbmRzIGluZGljYXRl
cyB0aGF0IHRoZSBmaXJzdCBsYXlvdXQgaGFzIGhhcHBlbmVkLiBBY2hpZXZlbWVudCAyIGluZGlj
YXRlcyB0aGF0CisvLyB0aGUgZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGhhcyBoYXBwZW5l
ZC4gQWNoaWV2ZW1lbnQgMyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsZXZhbnQgcmVwYWludGVkCisv
LyBvYmplY3RzIHRocmVzaG9sZCBpbiBXZWJDb3JlOjpQYWdlIGhhcyBiZWVuIGhpdC4KKy0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudDoo
TlNOdW1iZXIgKilhY2hpZXZlbWVudDsKKwogLy8gRm9yIGltcGxlbWVudGluZyB0aGUgV2ViSW5z
cGVjdG9yJ3MgdGVzdCBoYXJuZXNzCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
IGRpZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0OihXZWJTY3JpcHRPYmplY3QgKil3aW5kb3dP
YmplY3QgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE2OSkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA4LTMw
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWNjb3VudCBmb3IgdGhlIG5ldyBtZW1iZXIgb2YgdGhlIFBh
Z2VMb2FkQ2xpZW50LgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21O
aWJdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0
ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorCisgICAg
ICAgIFRoZSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMgaGFzIGV4aXN0
ZWQgZm9yIGEgd2hpbGUsIAorICAgICAgICBidXQgaXQgZGlkIG5vdCBoYXZlIHRoZSByaWdodCB0
YXJnZXQgbWVtYmVyc2hpcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBVc2UgbmV3IGRpZFVubG9ja0xh
eW91dEFjaGlldmVtZW50IEFQSSBpbnN0ZWFkIG9mIG9sZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0IEFQSS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkVW5sb2NrTGF5b3V0QWNo
aWV2ZW1lbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRVbmxv
Y2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93
Q29udHJvbGxlci5tCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMv
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYzMCw3
IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIDAsIC8vIGRpZEZhaWxUb0luaXRpYWxp
emVQbHVnaW4KICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudAogICAgICAgICAwLCAvLyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0KICAgICAgICAgMCwgLy8gaW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9u
c2l2ZQogICAgICAgICAwLCAvLyBwbHVnaW5EaWRGYWlsCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcy
LDcgQEAKIAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3Jt
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwg
Ki87IH07CiAJCTgxQjUwMTkzMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQjUwMTkyMTQw
RjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2
OThEMDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAv
KiBsb3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKKwkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1
N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCAqLzsgfTsK
IAkJOTM2MTAwMjkxNERDOTVBNzAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjEwMDI4
MTREQzk1N0IwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCAqLzsgfTsKIAkJOTM5QkE5
MTcxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QkE5MTYxNDEwMzQxMjAw
MUEwMUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovOyB9OwogCQk5M0FGNEVDRTE1
MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2Vz
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi87IH07CkBAIC05ODUsNiArOTg2LDcgQEAKIAkJCQlC
QzkwOTk1RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM5MDk5OTQxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjY1QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAJKHJldmlzaW9uIDEyNzE2OCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjkgQEAKIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRTdWNjZWVkOworc3RhdGljIGJvb2wgZGlkRmlyc3RMYXlvdXRBY2hpZXZl
ZDsKK3N0YXRpYyBib29sIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkOwor
c3RhdGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFj
aGlldmVkOworc3RhdGljIGJvb2wgZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzOwogCi1z
dGF0aWMgdm9pZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKK3N0YXRpYyB2b2lkIGRpZFVubG9ja0xheW91dEFjaGll
dmVtZW50KFdLUGFnZVJlZiwgV0tMYXlvdXRBY2hpZXZlbWVudFR5cGUgdHlwZSwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkICopCiB7Ci0gICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
U3VjY2VlZCA9IHRydWU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBrV0tEaWRGaXJz
dExheW91dDoKKyAgICAgICAgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Uga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAg
ICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Uga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZDoKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZEFjaGlldmVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChkaWRGaXJzdExheW91dEFjaGlldmVk
ICYmIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkICYmIGRpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCkKKyAgICAgICAgZGlkVW5s
b2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTQyLDExICs2MCwxNSBAQCBzdGF0aWMg
dm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50
IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVu
dEN1cnJlbnRWZXJzaW9uOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbG9h
ZGVyQ2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2NrTGF5b3V0QWNo
aWV2ZW1lbnQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJD
bGllbnQpOwogfQogCisvLyBGSVhNRTogVGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1
c2UKKy8vIHRoZSBmcmFtZSBsb2FkIGlzIGNvbXBsZXRpbmcgYmVmb3JlIGRpZFVubG9ja0xheW91
dEFjaGlldmVtZW50KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhlCisvLyBrV0tEaWRIaXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGlldmVtZW50LiBXZSBwcm9iYWJseSBu
ZWVkIHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0ZXN0IGhhdmUgYSBsb25nLXJ1bm5p
bmcgcmVzb3VyY2UuCiBURVNUKFdlYktpdDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0VGVzdCIpKTsKQEAgLTU4LDggKzgwLDggQEAgVEVTVChXZWJL
aXQyLCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5TgogICAgIC8vIG9iamVjdHMgdGFrZSB1cCBt
b3JlIHRoYW4gMTAlIG9mIHRoZSB2aWV3LgogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdl
KCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImxvdHMtb2YtdGV4dCIsICJo
dG1sIikpLmdldCgpKTsKIAotICAgIFV0aWw6OnJ1bigmZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0U3VjY2VlZCk7Ci0gICAgRVhQRUNUX1RSVUUoZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0U3VjY2VlZCk7CisgICAgVXRpbDo6cnVuKCZkaWRVbmxvY2tBbGxMYXlvdXRB
Y2hpZXZlbWVudHMpOworICAgIEVYUEVDVF9UUlVFKGRpZFVubG9ja0FsbExheW91dEFjaGlldmVt
ZW50cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
YWlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNwcAkocmV2aXNpb24gMTI3MTY4
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZhaWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQ7CitzdGF0aWMgYm9vbCBkaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQ7CiBzdGF0aWMgYm9vbCB0ZXN0MURv
bmU7CiBzdGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCkBAIC00OCw5ICs0OCwxMCBAQCBzdGF0
aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9yY2VSZXBh
aW50KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCAqKQorc3RhdGljIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdlUmVmLCBX
S0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsK
LSAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAg
ICBpZiAodHlwZSA9PSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkKQorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xk
QWNoaWV2ZWQgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlKQpAQCAtNTksNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlCiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2Fk
ZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGll
bnRDdXJyZW50VmVyc2lvbjsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1l
ID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7
CisgICAgbG9hZGVyQ2xpZW50LmRpZFVubG9ja0xheW91dEFjaGlldmVtZW50ID0gZGlkVW5sb2Nr
TGF5b3V0QWNoaWV2ZW1lbnQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2Us
ICZsb2FkZXJDbGllbnQpOwogfQpAQCAtODAsNyArODEsNyBAQCBURVNUKFdlYktpdDIsIE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAvLyBCeSB0aGUgdGltZSB0aGUgZm9yY2VkIHJl
cGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRlciB3b3VsZCBoYXZlIGJlZW4gaGl0IAogICAg
IC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5IGZvciB0aGUgcGFnZS4KLSAgICBFWFBFQ1Rf
RkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hp
ZXZlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwCShyZXZpc2lv
biAxMjcxNjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTEgKzMwLDI5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGJvb2wg
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZDsKK3N0YXRpYyBib29sIGRp
ZEZpcnN0TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZFVubG9ja0FsbExheW91
dEFjaGlldmVtZW50czsKIAotc3RhdGljIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KFdLUGFnZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBk
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudChXS1BhZ2VSZWYsIFdLTGF5b3V0QWNoaWV2ZW1lbnRU
eXBlIHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgIGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQgPSB0cnVlOworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2Uga1dLRGlkRmlyc3RMYXlvdXQ6CisgICAgICAgIGRpZEZpcnN0TGF5b3V0QWNoaWV2
ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dDoKKyAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNo
aWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ6CisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoZGlk
Rmlyc3RMYXlvdXRBY2hpZXZlZCAmJiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hp
ZXZlZCAmJiBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2
ZWQpCisgICAgICAgIGRpZFVubG9ja0FsbExheW91dEFjaGlldmVtZW50cyA9IHRydWU7CiB9CiAK
IHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC00Miwx
MiArNjAsMTYgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAg
IFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGll
bnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9
IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICBsb2FkZXJDbGllbnQuZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudCA9
IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAotVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMpCisvLyBGSVhNRTogVGhpcyB0ZXN0IGhhcyBi
ZWVuIGJyb2tlbiBzaW5jZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTU3NTIg
SXQncyBmYWlsaW5nIGJlY2F1c2UKKy8vIHRoZSBmcmFtZSBsb2FkIGlzIGNvbXBsZXRpbmcgYmVm
b3JlIGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhlCisv
LyBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGlldmVt
ZW50LiBXZSBwcm9iYWJseSBuZWVkIHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0ZXN0
IGhhdmUgYSBsb25nLXJ1bm5pbmcgcmVzb3VyY2UuCitURVNUKFdlYktpdDIsIERJU0FCTEVEX05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcykKIHsKICAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2Vz
VGVzdCIpKTsKIApAQCAtNTgsOCArODAsOCBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxhCiAgICAgLy8gb2JqZWN0cyB0YWtlIHVwIG1vcmUgdGhhbiAxMCUgb2YgdGhl
IHZpZXcuCiAgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpj
cmVhdGVVUkxGb3JSZXNvdXJjZSgibG90cy1vZi1pbWFnZXMiLCAiaHRtbCIpKS5nZXQoKSk7CiAK
LSAgICBVdGlsOjpydW4oJmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQp
OwotICAgIEVYUEVDVF9UUlVFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2Nl
ZWQpOworICAgIFV0aWw6OnJ1bigmZGlkVW5sb2NrQWxsTGF5b3V0QWNoaWV2ZW1lbnRzKTsKKyAg
ICBFWFBFQ1RfVFJVRShkaWRVbmxvY2tBbGxMYXlvdXRBY2hpZXZlbWVudHMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZy
YW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGaXJlTW9yZVRoYW5PbmNlOwotc3RhdGljIHVuc2lnbmVkIG5ld1Zpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRDb3VudGVyOworc3RhdGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZTsKK3N0YXRpYyB1bnNpZ25lZCBkaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlcjsKIHN0YXRpYyBib29sIHRl
c3QxRG9uZTsKIHN0YXRpYyBib29sIHRlc3QyRG9uZTsKICAgICAKQEAgLTQ5LDExICs0OSwxNCBA
QCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQYWdlRm9y
Y2VSZXBhaW50KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCAqKQorc3RhdGljIHZvaWQgZGlkVW5sb2NrTGF5b3V0QWNoaWV2ZW1lbnQoV0tQYWdl
UmVmLCBXS0xheW91dEFjaGlldmVtZW50VHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQg
KikKIHsKLSAgICArK25ld1Zpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyOwotICAgIGlmIChu
ZXdWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q291bnRlciA+IDEpCi0gICAgICAgIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZpcmVNb3JlVGhhbk9uY2UgPSB0cnVlOworICAgIGlmICh0
eXBlICE9IGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpCisg
ICAgICAgIHJldHVybjsKKworICAgICsrZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZENvdW50ZXI7CisgICAgaWYgKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0FyZWFUaHJlc2hvbGRDb3VudGVyID4gMSkKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2
b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC02MiwxNCArNjUsMTQg
QEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50
LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgbG9hZGVy
Q2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAg
ICBsb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRVbmxvY2tM
YXlvdXRBY2hpZXZlbWVudCA9IGRpZFVubG9ja0xheW91dEFjaGlldmVtZW50OwogCiAgICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAogVEVTVChX
ZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMpCiB7Ci0gICAgbmV3
VmlzdWFsbHlOb25FbXB0eUxheW91dENvdW50ZXIgPSAwOworICAgIGRpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRDb3VudGVyID0gMDsKICAgICBXS1JldGFpblB0cjxX
S0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVj
dGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVzdCIp
KTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpAQCAtODIs
NyArODUsNyBAQCBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAg
ICAvLyBCeSB0aGUgdGltZSB0aGUgZm9yY2VkIHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291
bnRlciB3b3VsZCBoYXZlIGJlZW4gaGl0IAogICAgIC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25h
Ymx5IGZvciB0aGUgcGFnZS4KLSAgICBFWFBFQ1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RmlyZU1vcmVUaGFuT25jZSk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2UpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMs
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjCiAgICAgICAgIDAs
IC8vIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZERldGVj
dFhTU0ZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dAorICAgICAgICAwLCAvLyBkaWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAgICAgICAw
LCAvLyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gaW50ZXJhY3Rp
b25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZQogICAgICAgICAwLCAvLyBwbHVnaW5E
aWRGYWlsCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUsNyBAQCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OkluamVjdGVkQnVuZGxlUGFnZShXCiAgICAgICAgIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lLAogICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAvLyBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAvLyBk
aWRVbmxvY2tMYXlvdXRBY2hpZXZlbWVudAogICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZSwK
ICAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwg
Ly8gZGlkQ3JlYXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162159</attachid>
            <date>2012-09-04 22:31:01 -0700</date>
            <delta_ts>2012-09-05 12:47:15 -0700</delta_ts>
            <desc>Patch with different design</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>122795</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzU1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA5LTA0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtZXJnZXMgZGlkRmlyc3RMYXlvdXQsIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCwgCisgICAgICAgIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQuIFBhZ2Uga2VlcHMgdHJhY2sgb2Ygd2hpY2ggCisgICAgICAgIGxheW91dCBt
aWxlc3RvbmVzIHdlIGFyZSBpbnRlcmVzdGVkIGluIHdpdGggYSBiaXQgbWFzaywgc28gdGhhdCAK
KyAgICAgICAgZGlmZmVyZW50IHBvcnRzL2NsaWVudHMgY2FuIG9wdC1pbnRvIGRpZmZlcmVudCBt
aWxlc3RvbmVzLiBUaGlzIAorICAgICAgICB3aWxsIGFsbG93IHVzIHRvIHNhZmVseSBhZGQgbW9y
ZSBsYXlvdXQgbWlsZXN0b25lcyBpbiB0aGUgZnV0dXJlIAorICAgICAgICBpZiB0aGF0IHNlZW1z
IHdvcnRod2hpbGUuCisKKyAgICAgICAgSW5jbHVkZSBuZXcgZmlsZSBMYXlvdXRNaWxlc3RvbmVP
cHRpb25zLmgKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGV5IGFyZSBub3cgcmVwbGFjZWQgCisgICAgICAg
IGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkTGF5b3V0KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExh
eW91dCk6CisgICAgICAgICogcGFnZS9MYXlvdXRNaWxlc3RvbmVPcHRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgQ2hlY2sgd2l0aCBQYWdlIHRvIGZpbmQgb3V0
IHdoaWNoIGxheW91dCBtaWxlc3RvbmVzIHRoZSBjbGllbnQgaXMgCisgICAgICAgIGludGVyZXN0
ZWQgaW4sIGFuZCB0aGVuIGRpc3BhdGNoIHRoZSBub3RpZmljYXRpb25zIHdoZW4gCisgICAgICAg
IGFwcHJvcHJpYXRlLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CisKKyAgICAgICAgUmVt
b3ZlIHNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoKS4gSW5zdGVh
ZCBrZWVwIAorICAgICAgICB0cmFjayBvZiB0aGUgbGF5b3V0IG1pbGVzdG9uZXMgYml0IG1hc2su
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJl
cGFpbnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXlvdXRNaWxlc3RvbmVzKToKKwogMjAxMi0wOS0wNCAg
S2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIxMjYxMzIpOiBNZWRpYVNsaWRlciBhbmQgTWVkaWFWb2x1bWVTbGlkZXIgdGh1bWJzIGRvbid0
IG1hdGNoIG1vdXNlIHdoZW4gZHJhZ2dlZApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTY5LDYgKzM5NjksNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvR3JvdXBTZXR0aW5ncy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaCBc
CisgICAgU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmVPcHRpb25zLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDYW5TdGFydExpc3RlbmVyLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xOTg0LDYgKzE5ODQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5oXAogICAgIHBhZ2UvR3JvdXBTZXR0
aW5ncy5oIFwKICAgICBwYWdlL0hpc3RvcnkuaCBcCisgICAgcGFnZS9MYXlvdXRNaWxlc3RvbmVP
cHRpb25zLmggXAogICAgIHBhZ2UvTG9jYXRpb24uaCBcCiAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmggXAogICAgIHBhZ2UvTmF2aWdhdG9yQmFzZS5oIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNjcwLDYgKzY3MCw3IEBAIF9fWk43V2ViQ29y
ZTRQYWdlMTZzZXREZWZlcnNMb2FkaW5nRWIKIF9fWk43V2ViQ29yZTRQYWdlMTd3aWxsTW92ZU9m
ZnNjcmVlbkV2CiBfX1pON1dlYkNvcmU0UGFnZTE4cmVtb3ZlU2NoZWR1bGVQYWlyRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEyU2NoZWR1bGVQYWlyRUVFCiBfX1pON1dlYkNvcmU0UGFnZTE4c2V0UGFn
ZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEUKK19fWk43V2ViQ29yZTRQYWdlMTlhZGRMYXlv
dXRNaWxlc3RvbmVzRWoKIF9fWk43V2ViQ29yZTRQYWdlMTl2aXNpdGVkU3RhdGVDaGFuZ2VkRVBO
U185UGFnZUdyb3VwRXkKIF9fWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVm
CiBfX1pON1dlYkNvcmU0UGFnZTIwdW5tYXJrQWxsVGV4dE1hdGNoZXNFdgpAQCAtNjg1LDcgKzY4
Niw2IEBAIF9fWk43V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNoZUNsaWVudEMKIF9fWk43V2Vi
Q29yZTRQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0V2CiBfX1pON1dl
YkNvcmU0UGFnZTM2c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9fWk43
V2ViQ29yZTRQYWdlMzdzZXRJbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25Nb2RlRWIKLV9f
Wk43V2ViQ29yZTRQYWdlNDNzZXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNo
b2xkRXkKIF9fWk43V2ViQ29yZTRQYWdlNmdvQmFja0V2CiBfX1pON1dlYkNvcmU0UGFnZThnb1Rv
SXRlbUVQTlNfMTFIaXN0b3J5SXRlbUVOU18xM0ZyYW1lTG9hZFR5cGVFCiBfX1pON1dlYkNvcmU0
UGFnZTlnb0ZvcndhcmRFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTI3MTY4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEwLDYg
KzMxMTAsNyBAQAogICAgICAgICAgICAgJ3BhZ2UvR3JvdXBTZXR0aW5ncy5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvSGlzdG9yeS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvSGlzdG9yeS5oJywK
KyAgICAgICAgICAgICdwYWdlL0xheW91dE1pbGVzdG9uZU9wdGlvbnMuaCcsCiAgICAgICAgICAg
ICAncGFnZS9Mb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvTG9jYXRpb24uaCcsCiAg
ICAgICAgICAgICAncGFnZS9NZW1vcnlJbmZvLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjcxNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTMyMDksNiArMzIwOSw3IEBACiAJCTkzMzA5RUEyMDk5RUI3OEMwMDU2
RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1h
Yy5tbSAqLzsgfTsKIAkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUVBMDA5
OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCAqLzsgfTsKIAkJOTMzMDlFQTQwOTlFQjc4
QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi87IH07
CisJCTkzMzM2OUNEMTVGMTc0RjYwMEQ4Nzc2NyAvKiBMYXlvdXRNaWxlc3RvbmVPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMzNjlDQzE1
RjE3NEY2MDBEODc3NjcgLyogTGF5b3V0TWlsZXN0b25lT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMzU0QTNDMEIyNEY4QzkwMDNG
NkRFQSAvKiBVSUV2ZW50V2l0aEtleVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzU0QTNCMEIyNEY4QzkwMDNGNkRFQSAvKiBVSUV2ZW50
V2l0aEtleVN0YXRlLmNwcCAqLzsgfTsKIAkJOTMzQTE0MkUwQjdEMTg4NjAwQTUzRkZEIC8qIFRl
eHRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzNBMTQyQjBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCAqLzsgfTsKIAkJOTMz
QTE0MzAwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzQTE0MkQwQjdEMTg4NjAwQTUzRkZEIC8qIFRl
eHRFdmVudC5oICovOyB9OwpAQCAtMTAzNzIsNiArMTAzNzMsNyBAQAogCQk5MzMwOUU5RjA5OUVC
NzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTaGFyZWRUaW1lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFRpbWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzMzM2OUNDMTVGMTc0RjYwMEQ4Nzc2NyAvKiBMYXlvdXRNaWxl
c3RvbmVPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExheW91dE1p
bGVzdG9uZU9wdGlvbnMuaDsgcGF0aCA9IHBhZ2UvTGF5b3V0TWlsZXN0b25lT3B0aW9ucy5oOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTkzMzU0QTNCMEIyNEY4QzkwMDNGNkRFQSAv
KiBVSUV2ZW50V2l0aEtleVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzNBMTQyQjBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzM0ExNDJDMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTc4NSw2ICsxNTc4Nyw3IEBACiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAw
NkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAv
KiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3Rvcnku
aWRsICovLAorCQkJCTkzMzM2OUNDMTVGMTc0RjYwMEQ4Nzc2NyAvKiBMYXlvdXRNaWxlc3RvbmVP
cHRpb25zLmggKi8sCiAJCQkJQkNFMUM0MUEwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmNw
cCAqLywKIAkJCQlCQ0UxQzQxOTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCAqLywKIAkJ
CQlCQ0UxQzQyMjBEOTgyOUYyMDAzQjAyRjIgLyogTG9jYXRpb24uaWRsICovLApAQCAtMjU0ODcs
NiArMjU0OTAsNyBAQAogCQkJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NCYXNpY1No
YXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEExNUVGMjVERjAwOEI3MTEwIC8qIEJh
c2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhDMTVFRjI2MDQw
MDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMzMzY5Q0QxNUYx
NzRGNjAwRDg3NzY3IC8qIExheW91dE1pbGVzdG9uZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTI3MTY4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTUsOSArMjU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlv
dXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlv
dXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykgeyB9CiAKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNw
YXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzUsMjUgKzIyNzUsMTcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubAogICAgIH0KIH0KIAot
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmlyc3RMYXlvdXQoKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlk
TGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBpZiAobV9mcmFt
ZS0+cGFnZSgpICYmIGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKLSAgICAgICAg
aGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKKyAgICBpZiAo
b3B0aW9ucyAmIERpZEZpcnN0TGF5b3V0KSB7CisgICAgICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkg
JiYgaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQorICAgICAgICAgICAgaGlzdG9y
eSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKIAotICAgIGlmIChtX3N0
YXRlTWFjaGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiAhbV9zdGF0ZU1h
Y2hpbmUuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiAhbV9zdGF0ZU1hY2hp
bmUuZmlyc3RMYXlvdXREb25lKCkpCi0gICAgICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhG
cmFtZUxvYWRlclN0YXRlTWFjaGluZTo6Rmlyc3RMYXlvdXREb25lKTsKLQotICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXI6OmRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCi17Ci0gICAgbV9jbGllbnQtPmRpc3BhdGNoRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7Ci19CisgICAgICAgIGlmIChtX3N0YXRlTWFj
aGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSAmJiAhbV9zdGF0ZU1hY2hpbmUu
aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiAhbV9zdGF0ZU1hY2hpbmUuZmly
c3RMYXlvdXREb25lKCkpCisgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkZpcnN0TGF5b3V0RG9uZSk7ICAgIAorICAgIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsK
KyAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRMYXlvdXQob3B0aW9ucyk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmZyYW1lTG9hZENvbXBsZXRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJI
aXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkljb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSWNvblVSTC5oIgorI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZU9wdGlvbnMuaCIKICNpbmNs
dWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgpAQCAtMTc1LDEyICsxNzYsNyBAQCBwdWJsaWM6
CiAKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7Ci0KLSAgICAvLyBGSVhNRTogZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IHNob3VsZCBiZSBtZXJnZWQuCi0gICAgLy8gVGhlIG9ubHkgcmVhc29uIGZvciBib3RoIHRvIGV4
aXN0IGlzIHRvIGV4cGVyaW1lbnQgd2l0aCBkaWZmZXJlbnQgaGV1cmlzdGljcyBmb3IgdGhlIHRp
bWUgYmVpbmcuCi0gICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKLSAg
ICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZvaWQgZGlk
TGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpOwogCiAgICAgdm9pZCBsb2FkZWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgdGVsbENsaWVudEFi
b3V0UGFzdE1lbW9yeUNhY2hlTG9hZHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2lmbmRlZiBGcmFtZUxvYWRlckNsaWVudF9oCiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xpZW50
X2gKIAorI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZU9wdGlvbnMuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC0xNjIsMTAgKzE2Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlv
bnMpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hT
aG93KCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTI3
MTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDE0LDExICsyNDE0LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91
dFRhc2tzKCkKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRSZWN0TmVlZHNVcGRh
dGUoKTsKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dXBkYXRlQXBwZWFyYW5jZSgpOwogCisg
ICAgTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBtaWxlc3RvbmVzT2ZJbnRlcmVzdDsKKyAgICBMYXlv
dXRNaWxlc3RvbmVPcHRpb25zIG1pbGVzdG9uZXNBY2hpZXZlZCA9IDA7CisgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgbWlsZXN0b25lc09m
SW50ZXJlc3QgPSBwYWdlLT5sYXlvdXRNaWxlc3RvbmVzKCk7CisKICAgICBpZiAobV9uZXN0ZWRM
YXlvdXRDb3VudCA8PSAxKSB7CiAgICAgICAgIGlmIChtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQZW5k
aW5nKSB7CiAgICAgICAgICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7
Ci0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkRmlyc3RMYXlvdXQoKTsKLSAgICAg
ICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBp
ZiAobWlsZXN0b25lc09mSW50ZXJlc3QgJiBEaWRGaXJzdExheW91dCkKKyAgICAgICAgICAgICAg
ICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlkRmlyc3RMYXlvdXQ7CisgICAgICAgICAgICBpZiAo
cGFnZSkgewogICAgICAgICAgICAgICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKSA9PSBtX2ZyYW1l
KQogICAgICAgICAgICAgICAgICAgICBwYWdlLT5zdGFydENvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzKCk7CiAgICAgICAgICAgICB9CkBAIC0yNDMxLDEwICsyNDM4LDE1IEBAIHZvaWQg
RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKICAgICAgICAgLy8gSWYgdGhlIGxh
eW91dCB3YXMgZG9uZSB3aXRoIHBlbmRpbmcgc2hlZXRzLCB3ZSBhcmUgbm90IGluIGZhY3Qgdmlz
dWFsbHkgbm9uLWVtcHR5IHlldC4KICAgICAgICAgaWYgKG1faXNWaXN1YWxseU5vbkVtcHR5ICYm
ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5kaWRMYXlvdXRXaXRoUGVuZGluZ1N0eWxlc2hlZXRzKCkg
JiYgbV9maXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRpbmcpIHsKICAgICAg
ICAgICAgIG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFs
c2U7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCk7CisgICAgICAgICAgICBpZiAobWlsZXN0b25lc09mSW50ZXJlc3QgJiBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCisgICAgICAgICAgICAgICAgbWlsZXN0b25lc0Fj
aGlldmVkIHw9IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKICAgICAgICAgfQogICAg
IH0KIAorICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kaWRMYXlvdXQobWlsZXN0b25lc0FjaGlldmVk
KTsKKyAgICAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIGFkZGluZyBEaWRMYXlv
dXQgYXMgYSBMYXlvdXRNaWxlc3RvbmVPcHRpb24uIFRoYXQgd291bGQgbGV0IHVzIG1lcmdlIHRo
aXMKKyAgICAvLyB3aXRoIGRpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKS4KICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkTGF5b3V0KCk7CiAKICAgICBS
ZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpOwpAQCAtMjQ0Niw3ICsyNDU4LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsK
KyAgICBpZiAocGFnZSkgewogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdMYXlvdXRVcGRhdGVkKHRoaXMpOwog
ICAgIH0KQEAgLTI0NzUsNyArMjQ4Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExh
eW91dFRhc2tzKCkKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgICAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkgewotICAgICAgICAgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KHBhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpID09IG1f
ZnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckNsaWVudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdG9yQ2xp
ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdG9yQ2xpZW50LT5kaWRS
ZXNpemVNYWluRnJhbWUobV9mcmFtZS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0xheW91dE1pbGVzdG9uZU9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xheW91dE1pbGVzdG9uZU9wdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lT3B0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMYXlvdXRNaWxlc3RvbmVPcHRpb25zX2gKKyNk
ZWZpbmUgTGF5b3V0TWlsZXN0b25lT3B0aW9uc19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ZW51bSBMYXlvdXRNaWxlc3RvbmVGbGFnIHsKKyAgICBEaWRGaXJzdExheW91dCA9IDEgPDwgMCwK
KyAgICBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSAxIDw8IDEsCisgICAgRGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCA9IDEgPDwgMgorfTsKKwordHlw
ZWRlZiB1bnNpZ25lZCBMYXlvdXRNaWxlc3RvbmVPcHRpb25zOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBMYXlvdXRNaWxlc3RvbmVPcHRpb25zX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNs
aWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxp
dHlTdGF0ZVZpc2libGUpCiAjZW5kaWYKICAgICAsIG1fZGlzcGxheUlEKDApCisgICAgLCBtX2xh
eW91dE1pbGVzdG9uZXMoMCkKICAgICAsIG1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2Jq
ZWN0cyhmYWxzZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzUGFpbnRpbmcoZmFsc2UpCkBA
IC0xMDU0LDI1ICsxMDU1LDE5IEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUgUGFnZTo6dmlzaWJpbGl0
eVN0YXQKIH0KICNlbmRpZgogCi0vLyBGSVhNRTogZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNo
b2xkIGlzIG5vIGxvbmdlciB1c2VkIGZvciBjYWxjdWxhdGluZyByZWxldmFudCByZXBhaW50ZWQg
YXJlYXMsCi0vLyBhbmQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuIEZvciB0aGUgdGltZSBiZWluZywg
aXQgaXMgdXNlZnVsIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIGF2b2lkIGRvaW5nCi0vLyBhbnkg
b2YgdGhpcyB3b3JrIGZvciBwb3J0cyB0aGF0IGRvbid0IG1ha2Ugc3VyZSBvZiBkaWROZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFdlIHNob3VsZAotLy8gcmVtb3ZlIHRoaXMgd2hlbiB3
ZSByZXNvbHZlIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4gTmVlZCB0byBtZXJnZSBkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgCi0vLyBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Ci1zdGF0aWMgdWludDY0X3QgZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xk
ID0gMDsKK3ZvaWQgUGFnZTo6YWRkTGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVPcHRp
b25zIG1pbGVzdG9uZXMpCit7CisgICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgYSBm
dW5jdGlvbiB0aGF0IHJlcGxhY2VzIG1fbGF5b3V0TWlsZXN0b25lcyBpbnN0ZWFkIG9mIGp1c3Qg
YWRkaW5nIHRvIGl0LgorICAgIG1fbGF5b3V0TWlsZXN0b25lcyB8PSBtaWxlc3RvbmVzOworfQog
CiAvLyBUaGVzZSBhcmUgbWFnaWNhbCBjb25zdGFudHMgdGhhdCBtaWdodCBiZSB0d2Vha2VkIG92
ZXIgdGltZS4KIHN0YXRpYyBkb3VibGUgZ01pbmltdW1QYWludGVkQXJlYVJhdGlvID0gMC4xOwog
c3RhdGljIGRvdWJsZSBnTWF4aW11bVVucGFpbnRlZEFyZWFSYXRpbyA9IDAuMDQ7CiAKLXZvaWQg
UGFnZTo6c2V0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZCh1aW50NjRf
dCB0aHJlc2hvbGQpCi17Ci0gICAgZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xkID0gdGhy
ZXNob2xkOwotfQotCiBib29sIFBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVj
dHMoKSBjb25zdAogewotICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMgJiYgZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xkID4gMDsKKyAgICByZXR1cm4g
bV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzICYmIChtX2xheW91dE1pbGVzdG9u
ZXMgJiBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKTsKIH0KIAog
dm9pZCBQYWdlOjpzdGFydENvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkKQEAgLTEx
MjYsNyArMTEyMSw3IEBAIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmUK
ICAgICAgICAgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzID0gZmFsc2U7CiAg
ICAgICAgIHJlc2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkt
PmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5kaWRMYXlvdXQoRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTI3MTY4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYg
KzIzLDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGaW5k
T3B0aW9ucy5oIgorI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZU9wdGlvbnMuaCIKICNpbmNsdWRl
ICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNs
dWRlICJQYWdpbmF0aW9uLmgiCkBAIC0zMTUsOCArMzE2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc3BsYXlJRDsgfQogCisgICAgICAgIHZvaWQgYWRkTGF5b3V0TWlsZXN0b25lcyhMYXlv
dXRNaWxlc3RvbmVPcHRpb25zIG1pbGVzdG9uZXMpOworICAgICAgICBMYXlvdXRNaWxlc3RvbmVP
cHRpb25zIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiBtX2xheW91dE1pbGVzdG9u
ZXM7IH0KKwogICAgICAgICBib29sIGlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNDb3VudGVy
VGhyZXNob2xkKHVpbnQ2NF90KTsKICAgICAgICAgdm9pZCBzdGFydENvdW50aW5nUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgcmVzZXRSZWxldmFudFBhaW50ZWRPYmpl
Y3RDb3VudGVyKCk7CiAgICAgICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKQEAgLTQyOSw2
ICs0MzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAKKyAgICAgICAgTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBt
X2xheW91dE1pbGVzdG9uZXM7CisKICAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX3Jl
bGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0czsKICAgICAgICAgUmVnaW9uIG1fcmVsZXZhbnRQ
YWludGVkUmVnaW9uOwogICAgICAgICBSZWdpb24gbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzU1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0wNCAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBuZXcgQVBJIGhhcyB0d28gcGFydHMuIEZpcnN0LCB0aGUgY2xpZW50
IGhhcyB0byBvcHQgaW50byB3aGljaCAKKyAgICAgICAgbGF5b3V0IG1pbGVzdG9uZXMgdGhleSBh
cmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIGFib3V0IHVzaW5nIAorICAgICAgICBXS1BhZ2VMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzIG9yIAorICAgICAgICBXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JM
YXlvdXRNaWxlc3RvbmVzKCkuIFRoZW4sIFdlYktpdCB3aWxsIGNhbGwgCisgICAgICAgIHRoZSBk
aWRMYXlvdXQoV0tMYXlvdXRNaWxlc3RvbmVzKSBjYWxsYmFjayBvbiB0aGUgYXBwcm9wcmlhdGUg
CisgICAgICAgIGNsaWVudHMgd2hlbiB0aGUgc3BlY2lmaWVkIGxheW91dCBtaWxlc3RvbmVzIGhh
dmUgZmlyZWQuIGRpZExheW91dCAKKyAgICAgICAgdGFrZXMgdGhlIFdLTGF5b3V0TWlsZXN0b25l
cyBiaXQgbWFzaywgd2hpY2ggd2lsbCBpbmRpY2F0ZSB3aGljaCAKKyAgICAgICAgbWlsZXN0b25l
cyBoYXZlIGZpcmVkIHNpbmNlIGl0IGlzIHBvc3NpYmxlIGZvciB0d28gdG8gZmlyZSBhdCB0aGUg
CisgICAgICAgIHNhbWUgdGltZS4KKworICAgICAgICBEZWZpbmUgV0tMYXlvdXRNaWxlc3RvbmVP
cHRpb25zLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaDoKKworICAg
ICAgICBEZWZpbmUgY29udmVyc2lvbnMgYmV0d2VlbiBXS0xheW91dE1pbGVzdG9uZU9wdGlvbnMg
YW5kIAorICAgICAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zCisgICAgICAgICog
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dLTGF5
b3V0TWlsZXN0b25lT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
Ojp0b0xheW91dE1pbGVzdG9uZU9wdGlvbnMpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VMaXN0ZW5Gb3JM
YXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkxvYWRlckNsaWVudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVyQ2xpZW50
KToKKworICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lLCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZSwgCisgICAgICAgIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQgYXJlIG5vdyBpbXBsZW1lbnRlZCB3aXRoIAorICAgICAgICBkaWRMYXlvdXQg
dW5kZXIgdGhlIGhvb2QuIFNvIGlmIHRob3NlIG9sZCBjYWxsYmFja3MgaGF2ZSBiZWVuIAorICAg
ICAgICBkZWZpbmVkLCBiZSBzdXJlIHRvIGFkZCB0aGUgYXBwcm9wcmlhdGUgbGF5b3V0IG1pbGVz
dG9uZXMgaGVyZSBmb3IgCisgICAgICAgIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmluaXRpYWxpemVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIE5ldyBBUEkuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZExheW91
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFn
ZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
CisgICAgICAgIE5ldyBBUEkuIEFuZCByZW1vdmUgdGhlIG5vdy11bm5lY2Vzc2FyeSAKKyAgICAg
ICAgV0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkLiAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5o
OgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisKKyAgICAgICAgUmVtb3ZlIGRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dC4gVGhleSBhcmUgbm93IHJlcGxhY2VkIAorICAgICAgICBieSBkaXNwYXRjaERp
ZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50KToKKworICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lLCBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSwgCisgICAgICAgIGFuZCBkaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYXJlIG5vdyBpbXBsZW1lbnRlZCB3aXRoIAor
ICAgICAgICBkaWRMYXlvdXQgdW5kZXIgdGhlIGhvb2QuIFNvIGlmIHRob3NlIG9sZCBjYWxsYmFj
a3MgaGF2ZSBiZWVuIAorICAgICAgICBkZWZpbmVkLCBiZSBzdXJlIHRvIGFkZCB0aGUgYXBwcm9w
cmlhdGUgbGF5b3V0IG1pbGVzdG9uZXMgaGVyZSBmb3IgCisgICAgICAgIGJhY2t3YXJkcy1jb21w
YXRpYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisKKyAgICAgICAgQ2FsbCBpbnRvIFdlYkNvcmUgdG8g
c2V0IHRoZSBsYXlvdXQgbWlsZXN0b25lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFjY291bnQgZm9yIHRoZSBuZXcgbWVt
YmVyIG9mIFBhZ2VMb2FkQ2xpZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvUXRCdWlsdGlu
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlF0
QnVpbHRpbkJ1bmRsZVBhZ2UpOgorCiAyMDEyLTA5LTA0ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhh
bkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBVc2UgZXhwbGljaXQgY29uc3RydWN0b3Ig
aW4gSW5qZWN0ZWRCdW5kbGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQ
YWdlTG9hZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLUGFnZUxvYWRUeXBlcy5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZTsKIAorZW51bSB7CisgICAga1dLRGlkRmlyc3RMYXlvdXQgPSAxIDw8IDAsCisgICAg
a1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gMSA8PCAxLAorICAgIGtXS0RpZEhp
dFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQgPSAxIDw8IDIKK307Cit0eXBl
ZGVmIHVpbnQzMl90IFdLTGF5b3V0TWlsZXN0b25lT3B0aW9uczsKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJl
ZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
aGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVPcHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFp
dHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NDgsNiArNzQ5LDM0IEBAIGlubGluZSBX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHRvQVAKICAgICByZXR1cm4gd2tUeXBlOwogfQog
CitpbmxpbmUgV0tMYXlvdXRNaWxlc3RvbmVPcHRpb25zIHRvV0tMYXlvdXRNaWxlc3RvbmVPcHRp
b25zKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZU9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICB1bnNp
Z25lZCB3a09wdGlvbnMgPSAwOworCisgICAgaWYgKG9wdGlvbnMgJiBXZWJDb3JlOjpEaWRGaXJz
dExheW91dCkKKyAgICAgICAgd2tPcHRpb25zIHw9IGtXS0RpZEZpcnN0TGF5b3V0OworICAgIGlm
IChvcHRpb25zICYgV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQorICAg
ICAgICB3a09wdGlvbnMgfD0ga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAg
IGlmIChvcHRpb25zICYgV2ViQ29yZTo6RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZCkKKyAgICAgICAgd2tPcHRpb25zIHw9IGtXS0RpZEhpdFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ7CisgICAgCisgICAgcmV0dXJuIHdrT3B0aW9uczsKK30K
KworaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZU9wdGlvbnMgdG9MYXlvdXRNaWxlc3Rv
bmVPcHRpb25zKFdLTGF5b3V0TWlsZXN0b25lT3B0aW9ucyB3a09wdGlvbnMpCit7CisgICAgV2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lT3B0aW9ucyBvcHRpb25zID0gMDsKKworICAgIGlmICh3a09w
dGlvbnMgJiBrV0tEaWRGaXJzdExheW91dCkKKyAgICAgICAgb3B0aW9ucyB8PSBXZWJDb3JlOjpE
aWRGaXJzdExheW91dDsKKyAgICBpZiAod2tPcHRpb25zICYga1dLRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0KQorICAgICAgICBvcHRpb25zIHw9IFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dDsKKyAgICBpZiAod2tPcHRpb25zICYga1dLRGlkSGl0UmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkKKyAgICAgICAgb3B0aW9ucyB8PSBXZWJDb3Jl
OjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOworICAgIAorICAg
IHJldHVybiBvcHRpb25zOworfQorCiBpbmxpbmUgSW1hZ2VPcHRpb25zIHRvSW1hZ2VPcHRpb25z
KFdLSW1hZ2VPcHRpb25zIHdrSW1hZ2VPcHRpb25zKQogewogICAgIHVuc2lnbmVkIGltYWdlT3B0
aW9ucyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTQgQEAgdm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZE5ld0ZpcnN0VmlzdWFsbAogICAgIG1fY2xpZW50LmRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh0b0FQSShwYWdlKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZExh
eW91dChXZWJQYWdlUHJveHkqIHBhZ2UsIExheW91dE1pbGVzdG9uZU9wdGlvbnMgb3B0aW9ucywg
QVBJT2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZExheW91dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkTGF5b3V0KHRvQVBJKHBhZ2UpLCB0b1dL
TGF5b3V0TWlsZXN0b25lT3B0aW9ucyhvcHRpb25zKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJlbW92ZUZyYW1l
RnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
UElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkUmVtb3ZlRnJhbWVG
cm9tSGllcmFyY2h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJD
bGllbnQuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIK
ICNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZU9w
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04MCw5ICs4MSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5KiwgV2ViSW50ZW50U2VydmljZUluZm8qLCBBUElPYmplY3QqKTsKICNlbmRpZgog
Ci0gICAgLy8gRklYTUU6IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIGFu
ZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4KLSAg
ICAvLyBUaGUgb25seSByZWFzb24gZm9yIGJvdGggdG8gZXhpc3QgaXMgdG8gZXhwZXJpbWVudCB3
aXRoIGRpZmZlcmVudCBoZXVyaXN0aWNzIGZvciB0aGUgdGltZSBiZWluZy4KKyAgICAvLyBGSVhN
RTogZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHNob3VsZCBiZSByZW1vdmVkLiBX
ZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUKKyAgICAvLyBhcyB3ZWxsLiBUaGV5IGFyZSBib3RoIGJlaW5nIHJlcGxhY2VkIGJ5
IGRpZExheW91dC4KICAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChX
ZWJQYWdlUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZExheW91dChXZWJQYWdlUHJv
eHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zLCBBUElPYmplY3QqKTsKICAgICAK
ICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdl
YlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJQcm90ZWN0aW9uU3BhY2UqKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMjcx
NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgyLDYgKzI4MiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZUxvYWRlckNsaWVuCiAgICAgaWYgKCFsb2FkQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyAg
ICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2YgdGhpcyBjb2RlIGFuZCB0cmFuc2l0
aW9uIGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBpbnN0ZWFkIG9mCisgICAgLy8gZGlk
Rmlyc3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZy
YW1lLiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWlyZWQKKyAgICAvLyBmb3IgYmFja3dh
cmRzIGNvbXBhdGliaWxpdHkuCisgICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lT3B0aW9ucyBt
aWxlc3RvbmVzID0gMDsKKyAgICBpZiAobG9hZENsaWVudC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFt
ZSkKKyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dDsKKyAgICBp
ZiAobG9hZENsaWVudC0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCisg
ICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0OworICAgIGlmIChsb2FkQ2xpZW50LT5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQpCisgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKKworICAgIGlmIChtaWxlc3RvbmVzICE9IDApCisgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWls
ZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdlSUQpOworCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRXaWxsR29Ub0JhY2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxl
ZChsb2FkQ2xpZW50LT52ZXJzaW9uID4gMCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTUwMiw2ICsx
NTE2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY28KICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXpl
KSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWls
ZXN0b25lcyhXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG1pbGVzdG9uZXMpCit7Cisg
ICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUo
V2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IG1fcGFn
aW5hdGlvbk1vZGUpCkBAIC0yMTQyLDYgKzIxNjQsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZE5ld0ZpcnN0VmlzdWFsbHlObwogICAgIG1fbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCh0aGlzLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25lT3B0aW9ucywgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXJDbGllbnQu
ZGlkTGF5b3V0KHRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZU9wdGlvbnM+KGxheW91
dE1pbGVzdG9uZU9wdGlvbnMpLCB1c2VyRGF0YS5nZXQoKSk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgUmVmUHRyPEFQSU9iamVjdD4g
dXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw2ICs0ODIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1
c2VGaXhlZExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CiAgICAg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9maXhlZExheW91dFNpemU7IH07CiAKKyAgICB2b2lkIGxpc3RlbkZvckxheW91dE1pbGVzdG9u
ZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lT3B0aW9ucyk7CisKICAgICBib29sIGhhc0hvcml6
b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUhhc0hvcml6b250YWxT
Y3JvbGxiYXI7IH0KICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhcjsgfQogCkBAIC03NTQsNiArNzU2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dChDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpZExheW91dCh1aW50MzJf
dCBsYXlvdXRNaWxlc3RvbmVPcHRpb25zLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAg
ICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
ICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMjcxNjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2RlciB1c2VyRGF0YSkKKyAgICBEaWRMYXlvdXQodWludDMyX3QgdHlwZSwgV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBX
VEY6OlN0cmluZyB1cmwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIg
dXNlckRhdGEpCiAgICAgRGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHVpbnQ2NF90IGZyYW1l
SUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAg
ICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXVEY6
OlN0cmluZyB1cmwsIFdURjo6U3RyaW5nIHVucmVhY2hhYmxlVVJMLCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAs
NiArMzMwLDExIEBAIFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUoV0tQYWdlUmVmIHAKICAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5maXhlZExheW91dFNpemUoKSk7CiB9CiAK
K3ZvaWQgV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCit7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5saXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHRvTGF5b3V0TWlsZXN0b25lT3B0aW9ucyhvcHRp
b25zKSk7Cit9CisKIGJvb2wgV0tQYWdlSGFzSG9yaXpvbnRhbFNjcm9sbGJhcihXS1BhZ2VSZWYg
cGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNIb3Jpem9udGFsU2Ny
b2xsYmFyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShy
ZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVjZWl2ZUF1dGhlbnRpYwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0s
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkTGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZU9w
dGlvbnMgb3B0aW9ucywgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0sIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VQbHVnaW5EaWRGYWlsQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Vycm9yQ29kZSBl
cnJvckNvZGUsIFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBXS1N0cmluZ1JlZiBwbHVnaW5JZGVudGlm
aWVyLCBXS1N0cmluZ1JlZiBwbHVnaW5WZXJzaW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTExNSw4ICsx
MTYsMTAgQEAgc3RydWN0IFdLUGFnZUxvYWRlckNsaWVudCB7CiAgICAgLy8gVmVyc2lvbiAxCiAg
ICAgV0tQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKIAotICAgIC8vIEZJWE1FOiBkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0IHNob3VsZCBiZSBtZXJnZWQuCisgICAgLy8gRklYTUU6IGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgcmVtb3ZlZC4gV2Ugc2hvdWxkIGNv
bnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisg
ICAgLy8gYXMgd2VsbC4gVGhlaXIgZnVuY3Rpb25hbGl0eSBpcyByZXBsYWNlZCBieSBkaWRMYXlv
dXQuCiAgICAgV0tQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7Cisg
ICAgV0tQYWdlRGlkTGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRMYXlvdXQ7CiAKICAgICBXS1BhZ2VXaWxsR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxHb1RvQmFja0Zv
cndhcmRMaXN0SXRlbTsKIApAQCAtNDE5LDYgKzQyMiw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFn
ZVNldEZpeGVkTGF5b3V0U2l6ZSgKIFdLX0VYUE9SVCBib29sIFdLUGFnZVVzZUZpeGVkTGF5b3V0
KFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXpl
KFdLUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tQYWdlTGlzdGVuRm9yTGF5b3V0
TWlsZXN0b25lcyhXS1BhZ2VSZWYgcGFnZSwgV0tMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlv
bnMpOworCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKFdLUGFn
ZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBib29sIFdLUGFnZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyKFdL
UGFnZVJlZiBwYWdlKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNyArMjU0LDE3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWQKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAw
OwogICAgIG1fY2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh0b0FQSShw
YWdlKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0
YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwotfSAgICAKK30KKwordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQYWdlKiBwYWdlLCBM
YXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMsIFdURjo6UmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkTGF5b3V0KQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZExh
eW91dCh0b0FQSShwYWdlKSwgdG9XS0xheW91dE1pbGVzdG9uZU9wdGlvbnMob3B0aW9ucyksICZ1
c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9w
dFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKK30KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGFn
ZSwgV2ViRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAx
MjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0xheW91dE1pbGVzdG9uZU9wdGlvbnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC04Miw2ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBh
Z2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBk
aWRMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKICAgICB2b2lkIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXZWJQYWdlKiwgV1RGOjpSZWZQdHI8QVBJT2JqZWN0
PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2UqLCBXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmVPcHRpb25zLCBXVEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAK
ICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1l
KiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTgsNiArMzE4LDExIEBAIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2Nh
bGVGYWN0b3IKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogfQogCit2b2lkIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBvcHRpb25zKQorewor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh0b0xheW91dE1p
bGVzdG9uZU9wdGlvbnMob3B0aW9ucykpOworfQorCiB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQpAQCAtMzY3LDExICszNzIsNiBAQCBXS1JlbmRlckxheWVyUmVmIFdLQnVuZGxlUGFn
ZUNvcHlSZW5kZXJMCiAgICAgcmV0dXJuIHRvQVBJKFdlYlJlbmRlckxheWVyOjpjcmVhdGUodG9J
bXBsKHBhZ2VSZWYpKS5sZWFrUmVmKCkpOwogfQogCi12b2lkIFdLQnVuZGxlUGFnZVNldFBhaW50
ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgdWludDY0X3Qg
dGhyZXNob2xkKQotewotICAgIHRvSW1wbChwYWdlKS0+c2V0UGFpbnRlZE9iamVjdHNDb3VudGVy
VGhyZXNob2xkKHRocmVzaG9sZCk7Ci19Ci0KIHZvaWQgV0tCdW5kbGVQYWdlU2V0VHJhY2tzUmVw
YWludHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgdHJhY2tSZXBhaW50cykKIHsKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFRyYWNrc1JlcGFpbnRzKHRyYWNrUmVwYWludHMpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZURpZERldGVjdFhTU0YKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0TGF5b3V0
Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2Fs
bGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91dENh
bGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9w
dGlvbnMsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkTGF5b3V0Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkQ2xlYXJXaW5kb3dPYmplY3RG
b3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTEzOSw2ICsxNDAsNyBAQCBzdHJ1Y3Qg
V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDEuCiAgICAgV0tCdW5k
bGVQYWdlRGlkTGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkTGF5b3V0Rm9yRnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlRGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIFdLQnVuZGxlUGFnZURpZExheW91dENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dDsK
ICAgICBXS0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBh
Z2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbTsKICAgICBXS0J1bmRsZVBhZ2VHbG9i
YWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBn
bG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOwpAQCAtNDEwLDYgKzQxMiw4IEBAIFdLX0VY
UE9SVCBXS0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVMKIAogV0tfRVhQT1JUIGRvdWJsZSBX
S0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwog
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZU9wdGlvbnMgb3B0aW9ucyk7CisK
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUludGVudFJlZiBp
bnRlbnQpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFCTEVfSU5TUEVD
VE9SCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkocmV2aXNp
b24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDYg
QEAgV0tfRVhQT1JUIHVpbnQ2NF90IFdLQnVuZGxlUGFnZUdldFJlbmRlcgogV0tfRVhQT1JUIFdL
UmVuZGVyT2JqZWN0UmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJUcmVlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKIFdLX0VYUE9SVCBXS1JlbmRlckxheWVyUmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5k
ZXJMYXllclRyZWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi0vLyBGSVhNRTogVGhpcyBpcyB0
ZW1wb3JhcnkuIFVsdGltYXRlbHkgV2ViS2l0IHNob3VsZCBjaG9vc2UgdGhlIHRocmVzaG9sZCBp
dHNlbGYuCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50
ZXJUaHJlc2hvbGQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIHVpbnQ2NF90IHRocmVzaG9sZCk7Ci0K
IFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFRyYWNrc1JlcGFpbnRzKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBib29sIHRyYWNrUmVwYWludHMpOwogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQ
YWdlSXNUcmFja2luZ1JlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUGFnZVJlc2V0VHJhY2tlZFJlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjcx
NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICAgICAgbG9hZExpc3RlbmVy
LT5kaWRGaW5pc2hMb2FkKG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTU1Miw0OSArNTUyLDM4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmkKIAogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7Ci0K
LSAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKLQot
ICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdl
YlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRl
cmluZygpKQotICAgICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0
ZUlzRnJvemVuKGZhbHNlKTsKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZExheW91dCh3ZWJQYWdlLCBvcHRpb25zLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRMYXlvdXQob3B0aW9ucywgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAKKyAgICBpZiAob3B0
aW9ucyAmIERpZEZpcnN0TGF5b3V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29u
c2lkZXIgcmVtb3ZpbmcgdGhlIG9sZCBkaWRGaXJzdExheW91dCBBUEkgc2luY2UgdGhpcyBpcyBk
b2luZyBkb3VibGUgZHV0eSB3aXRoIHRoZQorICAgICAgICAvLyBuZXcgZGlkTGF5b3V0IEFQSS4K
KyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJzdExh
eW91dEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaXJzdExheW91dEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CisKKyAgICAgICAgaWYgKG1fZnJhbWUgPT0gbV9mcmFtZS0+cGFnZSgpLT5t
YWluV2ViRnJhbWUoKSkgeworICAgICAgICAgICAgaWYgKCF3ZWJQYWdlLT5jb3JlUGFnZSgpLT5z
ZXR0aW5ncygpLT5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSkKKyAgICAgICAgICAg
ICAgICB3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZh
bHNlKTsKKyAgICAgICAgfQorICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAg
IC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRoZSBt
YWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KLSAgICBBU1NF
UlQoIXdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkgfHwgbV9mcmFtZSAhPSBtX2ZyYW1lLT5wYWdl
KCktPm1haW5XZWJGcmFtZSgpIHx8IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5k
aWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5nZWQoKSk7CisgICAgICAgIC8vIE1ha2Ug
c3VyZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIGZyYW1l
IGJ5IHRoZSB0aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KKyAgICAgICAgQVNTRVJUKCF3
ZWJQYWdlLT51c2VGaXhlZExheW91dCgpIHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5t
YWluV2ViRnJhbWUoKSB8fCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGlkRGlz
cGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkKCkpOwogI2VuZGlmCi19Ci0KLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KCkKLXsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICgh
d2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRh
dGE7Ci0KLSAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7Ci0KLSAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7Ci19Ci0K
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0KCkKLXsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJlZlB0
cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIGlmIChvcHRpb25zICYgRGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
cmVtb3ZpbmcgdGhlIG9sZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBB
UEkgc2luY2UgdGhpcyBpcyBkb2luZworICAgICAgICAvLyBkb3VibGUgZHV0eSB3aXRoIHRoZSBu
ZXcgZGlkTGF5b3V0IEFQSS4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBt
X2ZyYW1lLCB1c2VyRGF0YSk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQo
KSkpKTsKKyAgICB9CiAKLSAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2Vi
UGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQod2ViUGFnZSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIGlmIChvcHRpb25zICYgRGlkSGl0UmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkgeworICAgICAgICAvLyBGSVhNRTogVGhp
cyBjYW4gZ28gYXdheSB3aGVuIHdlIHJlbW92ZSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQuCisgICAgICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHdlYlBhZ2UsIHVzZXJEYXRhKTsKKyAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CisgICAgfQogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZExheW91dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDkgKzk3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
Nyw2ICszOTcsMjAgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGbwog
CiB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudChXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKKyAgICAvLyBJdCB3b3VsZCBiZSBuaWNl
IHRvIGdldCByaWQgb2YgdGhpcyBjb2RlIGFuZCB0cmFuc2l0aW9uIGFsbCBjbGllbnRzIHRvIHVz
aW5nIGRpZExheW91dCBpbnN0ZWFkIG9mCisgICAgLy8gZGlkRmlyc3RMYXlvdXRJbkZyYW1lIGFu
ZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lLiBJbiB0aGUgbWVhbnRpbWUs
IHRoaXMgaXMgcmVxdWlyZWQKKyAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisg
ICAgTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBtaWxlc3RvbmVzID0gMDsKKyAgICBpZiAoY2xpZW50
LT5kaWRGaXJzdExheW91dEZvckZyYW1lKQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6
OkRpZEZpcnN0TGF5b3V0OworICAgIGlmIChjbGllbnQtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lKQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBpZiAoY2xpZW50LT5kaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQpCisgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKKworICAgIGlmIChtaWxlc3Rv
bmVzICE9IDApCisgICAgICAgIGxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyk7
CisKICAgICBtX2xvYWRlckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTU2MSwx
MyArNTc1LDYgQEAgdWludDY0X3QgV2ViUGFnZTo6cmVuZGVyVHJlZVNpemUoKSBjb25zdAogICAg
IHJldHVybiBtX3BhZ2UtPnJlbmRlclRyZWVTaXplKCkudHJlZVNpemU7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6c2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKHVpbnQ2NF90IHRocmVzaG9s
ZCkKLXsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZS0+c2V0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZCh0aHJlc2hvbGQpOwotfQot
CiB2b2lkIFdlYlBhZ2U6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tSZXBhaW50cykKIHsK
ICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldygpKQpAQCAtMTEyNCw2ICsx
MTMxLDE0IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEkKICAgICAg
ICAgdmlldy0+Zm9yY2VMYXlvdXQoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpsaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKHVpbnQzMl90IG1pbGVzdG9uZXMpCit7CisgICAgaWYgKCFtX3BhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNf
Y2FzdDxMYXlvdXRNaWxlc3RvbmVPcHRpb25zPihtaWxlc3RvbmVzKSk7Cit9CisKIHZvaWQgV2Vi
UGFnZTo6c2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3QgbW9kZSkKIHsKICAgICBQYWdpbmF0aW9u
IHBhZ2luYXRpb24gPSBtX3BhZ2UtPnBhZ2luYXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgzLDcgKzI4Myw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyByZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQodWludDY0
X3QpOwogCiAgICAgdm9pZCBzZXRUcmFja3NSZXBhaW50cyhib29sKTsKICAgICBib29sIGlzVHJh
Y2tpbmdSZXBhaW50cygpIGNvbnN0OwpAQCAtMzA5LDYgKzMwOCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHVzZUZpeGVkTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV91c2VGaXhlZExheW91dDsgfQog
ICAgIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAor
ICAgIHZvaWQgbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh1aW50MzJfdCAvKiBMYXlvdXRNaWxl
c3RvbmVPcHRpb25zICovKTsKKwogICAgIHZvaWQgc2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3Qg
LyogV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSAqLyk7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9u
QmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wpOwogICAgIHZvaWQgc2V0UGFnZUxlbmd0aChkb3VibGUp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNiArMTQwLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0VXNlRml4ZWRMYXlv
dXQoYm9vbCBmaXhlZCkKICAgICBTZXRGaXhlZExheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBz
aXplKQogCisgICAgTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh1aW50MzJfdCBtaWxlc3RvbmVz
KQorCiAgICAgU2V0UGFnaW5hdGlvbk1vZGUodWludDMyX3QgbW9kZSk7CiAgICAgU2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiAgICAgU2V0
UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDEy
NzE2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgUXRCdWlsdGluQnVuZGxlUGFn
ZTo6UXRCdWlsdGluQnVuZGxlUGFnZQogICAgICAgICAwLCAvLyBkaWRIYW5kbGVPbmxvYWRFdmVu
dHNGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAv
LyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAv
LyBkaWRMYXlvdXQKICAgICAgICAgMCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUKICAgICAgICAg
MCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICAgICAgMCwgLy8gZGlkQ3Jl
YXRlR2xvYmFsT2JqZWN0Rm9yRnJhbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwkocmV2aXNpb24gMTI3NTUzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA0ICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRj
aERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAg
ICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9u
ZU9wdGlvbnMpCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5KToKKworICAgICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRpbmcg
YW55IG9mIHRoZSAKKyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6aW5pdCk6CisKIDIwMTItMDktMDQgIFJvYiBCdWlzICA8cmJ1aXNAcmlt
LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRmF0RmluZ2Vyczo6Y2FjaGluZ1N0cmF0ZWd5
IHVzZXMgaW5jb3JyZWN0IGVudW0gdmFsdWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDYgKzU0Niw4IEBA
IHZvaWQgV2ViUGFnZVByaXZhdGU6OmluaXQoY29uc3QgV2ViU3RyaW4KICAgICBtX3dlYlNldHRp
bmdzLT5zZXRVc2VyQWdlbnRTdHJpbmcoZGVmYXVsdFVzZXJBZ2VudCgpKTsKICAgICBtX3BhZ2Ut
PnNldERldmljZVNjYWxlRmFjdG9yKG1fd2ViU2V0dGluZ3MtPmRldmljZVBpeGVsUmF0aW8oKSk7
CiAKKyAgICBtX3BhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KTsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBtX3Rh
cEhpZ2hsaWdodCA9IERlZmF1bHRUYXBIaWdobGlnaHQ6OmNyZWF0ZSh0aGlzKTsKICAgICBtX3Nl
bGVjdGlvbk92ZXJsYXkgPSBTZWxlY3Rpb25PdmVybGF5OjpjcmVhdGUodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTI3
MTY4KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0OCwzNSArODQ4LDM3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Ojpwb3N0UHIKICAgICBtX3dlYlBh
Z2VQcml2YXRlLT5tX2NsaWVudC0+bm90aWZ5TG9hZFByb2dyZXNzKG1fZnJhbWUtPnBhZ2UoKS0+
cHJvZ3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKSAqIDEwMCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRMYXlv
dXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBvcHRpb25zKQogewogICAgIGlmICghaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiZGlzcGF0Y2hEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQiKTsKKyAgICBpZiAob3B0aW9ucyAmIERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCIpOwogCi0gICAgcmVhZHlUb1JlbmRlcih0cnVlKTsKKyAgICAgICAgcmVh
ZHlUb1JlbmRlcih0cnVlKTsKIAotICAgIC8vIEZvciBGcmFtZUxvYWRUeXBlU2FtZSBvciBGcmFt
ZUxvYWRUeXBlU3RhbmRhcmQgbG9hZCwgdGhlIGxheW91dCB0aW1lciBjYW4gYmUgZmlyZWQgd2hp
Y2ggY2FuIGNhbGwKLSAgICAvLyBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCgpIGFmdGVyIHRoZSBsb2FkIEZpbmlzaGVkIHN0YXRlLCBpbiB3aGljaCBjYXNlIHRoZSB3ZWIg
cGFnZQotICAgIC8vIHdpbGwgaGF2ZSBubyBjaGFuY2UgdG8gem9vbSB0byBpbml0aWFsIHNjYWxl
LiBTbyB3ZSBzaG91bGQgZ2l2ZSBpdCBhIGNoYW5jZSwgb3RoZXJ3aXNlIHRoZSBzY2FsZSBvZgot
ICAgIC8vIHRoZSB3ZWIgcGFnZSBjYW4gYmUgaW5jb3JyZWN0LgotICAgIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSA9IG1fZnJhbWUtPmxvYWRlcigpLT5sb2FkVHlwZSgpOwotICAgIGlmICht
X3dlYlBhZ2VQcml2YXRlLT5sb2FkU3RhdGUoKSA9PSBXZWJQYWdlUHJpdmF0ZTo6RmluaXNoZWQg
JiYgKGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVNhbWUgfHwgZnJhbWVMb2FkVHlwZSA9
PSBGcmFtZUxvYWRUeXBlU3RhbmRhcmQpKQotICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5zZXRT
aG91bGRab29tVG9Jbml0aWFsU2NhbGVBZnRlckxvYWRGaW5pc2hlZCh0cnVlKTsKLQotICAgIGlm
IChtX3dlYlBhZ2VQcml2YXRlLT5zaG91bGRab29tVG9Jbml0aWFsU2NhbGVPbkxvYWQoKSkgewot
ICAgICAgICBCYWNraW5nU3RvcmVQcml2YXRlKiBiYWNraW5nU3RvcmVQcml2YXRlID0gbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9iYWNraW5nU3RvcmUtPmQ7Ci0gICAgICAgIG1fd2ViUGFnZVByaXZhdGUt
Pnpvb21Ub0luaXRpYWxTY2FsZU9uTG9hZCgpOyAvLyBTZXQgdGhlIHByb3BlciB6b29tIGxldmVs
IGZpcnN0LgotICAgICAgICBiYWNraW5nU3RvcmVQcml2YXRlLT5jbGVhclZpc2libGVab29tKCk7
IC8vIENsZWFyIHRoZSB2aXNpYmxlIHpvb20gc2luY2Ugd2UncmUgZXhwbGljaXRseSByZW5kZXJp
bmcrYmxpdHRpbmcgYmVsb3cuCi0gICAgICAgIGlmIChiYWNraW5nU3RvcmVQcml2YXRlLT5yZW5k
ZXJWaXNpYmxlQ29udGVudHMoKSkgewotICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVQcml2
YXRlLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQotICAgICAgICAgICAgICAgIGJh
Y2tpbmdTdG9yZVByaXZhdGUtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKLSAgICAgICAgICAgIG1f
d2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlDb250ZW50UmVuZGVyZWQoYmFja2luZ1N0
b3JlUHJpdmF0ZS0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKKyAgICAgICAgLy8gRm9yIEZyYW1l
TG9hZFR5cGVTYW1lIG9yIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCBsb2FkLCB0aGUgbGF5b3V0IHRp
bWVyIGNhbiBiZSBmaXJlZCB3aGljaCBjYW4gY2FsbAorICAgICAgICAvLyBkaXNwYXRjaERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpIGFmdGVyIHRoZSBsb2FkIEZpbmlzaGVkIHN0YXRl
LCBpbiB3aGljaCBjYXNlIHRoZSB3ZWIgcGFnZQorICAgICAgICAvLyB3aWxsIGhhdmUgbm8gY2hh
bmNlIHRvIHpvb20gdG8gaW5pdGlhbCBzY2FsZS4gU28gd2Ugc2hvdWxkIGdpdmUgaXQgYSBjaGFu
Y2UsIG90aGVyd2lzZSB0aGUgc2NhbGUgb2YKKyAgICAgICAgLy8gdGhlIHdlYiBwYWdlIGNhbiBi
ZSBpbmNvcnJlY3QuCisgICAgICAgIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSA9IG1fZnJh
bWUtPmxvYWRlcigpLT5sb2FkVHlwZSgpOworICAgICAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+
bG9hZFN0YXRlKCkgPT0gV2ViUGFnZVByaXZhdGU6OkZpbmlzaGVkICYmIChmcmFtZUxvYWRUeXBl
ID09IEZyYW1lTG9hZFR5cGVTYW1lIHx8IGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVN0
YW5kYXJkKSkKKyAgICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPnNldFNob3VsZFpvb21Ub0lu
aXRpYWxTY2FsZUFmdGVyTG9hZEZpbmlzaGVkKHRydWUpOworCisgICAgICAgIGlmIChtX3dlYlBh
Z2VQcml2YXRlLT5zaG91bGRab29tVG9Jbml0aWFsU2NhbGVPbkxvYWQoKSkgeworICAgICAgICAg
ICAgQmFja2luZ1N0b3JlUHJpdmF0ZSogYmFja2luZ1N0b3JlUHJpdmF0ZSA9IG1fd2ViUGFnZVBy
aXZhdGUtPm1fYmFja2luZ1N0b3JlLT5kOworICAgICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+
em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkKCk7IC8vIFNldCB0aGUgcHJvcGVyIHpvb20gbGV2ZWwg
Zmlyc3QuCisgICAgICAgICAgICBiYWNraW5nU3RvcmVQcml2YXRlLT5jbGVhclZpc2libGVab29t
KCk7IC8vIENsZWFyIHRoZSB2aXNpYmxlIHpvb20gc2luY2Ugd2UncmUgZXhwbGljaXRseSByZW5k
ZXJpbmcrYmxpdHRpbmcgYmVsb3cuCisgICAgICAgICAgICBpZiAoYmFja2luZ1N0b3JlUHJpdmF0
ZS0+cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWJhY2tp
bmdTdG9yZVByaXZhdGUtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAgICAg
ICAgICAgICAgICAgIGJhY2tpbmdTdG9yZVByaXZhdGUtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsK
KyAgICAgICAgICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+bm90aWZ5Q29udGVu
dFJlbmRlcmVkKGJhY2tpbmdTdG9yZVByaXZhdGUtPnZpc2libGVDb250ZW50c1JlY3QoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBtX3dlYlBhZ2VQcml2YXRlLT5t
X2NsaWVudC0+bm90aWZ5Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgIG1f
d2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKTsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Ojpwb3N0
UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmly
c3RMYXlvdXQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucyk7CiAgICAgdmlydHVhbCBGcmFt
ZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc1NTMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEy
LTA5LTA0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBt
ZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQs
IAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAor
ICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhlaXIg
ZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3BhdGNoRGlkTGF5
b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50SW1wbCk6CisKKyAgICAgICAgSXQgaXMgbm93IG5l
Y2Vzc2FyeSB0byBvcHQgaW50byBnZXR0aW5nIGFueSBvZiB0aGUgCisgICAgICAgICJsYXlvdXQg
bWlsZXN0b25lIiBub3RpZmljYXRpb25zLgorICAgICAgICAqIHNyYy9XZWJIZWxwZXJQbHVnaW5J
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGVscGVyUGx1Z2luSW1wbDo6aW5pdFBhZ2Up
OgorICAgICAgICAqIHNyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisKIDIwMTIt
MDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2Ug
Y2hyb21pdW0tbGludXggYnVpbGQgd2l0aG91dCBXVEZfREVQUkVDQVRFRF9TVFJJTkdfT1BFUkFU
T1JTCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
MSwxNSArODYxLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEYK
ICAgICAvLyBwcm92aXNpb25hbCBsb2FkIHN1Y2NlZWRzIG9yIGZhaWxzLCBub3QgdGhlICJyZWFs
IiBvbmUuCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZEZpcnN0
TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZExheW91dChM
YXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQotICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRmlyc3RMYXlvdXQobV93
ZWJGcmFtZSk7Ci19CisgICAgaWYgKCFtX3dlYkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgcmV0
dXJuOwogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQoKQotewotICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKKyAg
ICBpZiAob3B0aW9ucyAmIERpZEZpcnN0TGF5b3V0KQorICAgICAgICBtX3dlYkZyYW1lLT5jbGll
bnQoKS0+ZGlkRmlyc3RMYXlvdXQobV93ZWJGcmFtZSk7CisgICAgaWYgKG9wdGlvbnMgJiBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgp
LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQobV93ZWJGcmFtZSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDggKzEwNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9j
dW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZU9wdGlvbnMp
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hv
dygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhlbHBlclBsdWdpbkltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhlbHBlclBsdWdpbkltcGwuY3Bw
CShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIZWxw
ZXJQbHVnaW5JbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw5IEBAIGJvb2wg
V2ViSGVscGVyUGx1Z2luSW1wbDo6aW5pdFBhZ2UoV2ViS2kKICAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQ
bHVnaW5zRW5hYmxlZCh0cnVlKTsKIAorICAgIHVuc2lnbmVkIGxheW91dE1pbGVzdG9uZXMgPSBE
aWRGaXJzdExheW91dCB8IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBtX3Bh
Z2UtPmFkZExheW91dE1pbGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lT3B0aW9u
cz4obGF5b3V0TWlsZXN0b25lcykpOworCiAgICAgd2ViVmlldy0+Y2xpZW50KCktPmluaXRpYWxp
emVIZWxwZXJQbHVnaW5XZWJGcmFtZSh0aGlzKTsKIAogICAgIC8vIFRoZSBwYWdlJ3MgbWFpbiBm
cmFtZSB3YXMgc2V0IGluIGluaXRpYWxpemVGcmFtZSgpIGFzIGEgcmVzdWx0IG9mIHRoZSBhYm92
ZSBjYWxsLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBv
cHVwSW1wbC5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDkg
QEAgYm9vbCBXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSgpCiAgICAgbV9wYWdlLT5zZXREZXZp
Y2VTY2FsZUZhY3RvcihtX3dlYlZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIG1fcGFn
ZS0+c2V0dGluZ3MoKS0+c2V0RGV2aWNlU3VwcG9ydHNUb3VjaChtX3dlYlZpZXctPnBhZ2UoKS0+
c2V0dGluZ3MoKS0+ZGV2aWNlU3VwcG9ydHNUb3VjaCgpKTsKIAorICAgIHVuc2lnbmVkIGxheW91
dE1pbGVzdG9uZXMgPSBEaWRGaXJzdExheW91dCB8IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dDsKKyAgICBtX3BhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0
TWlsZXN0b25lT3B0aW9ucz4obGF5b3V0TWlsZXN0b25lcykpOworCiAgICAgc3RhdGljIENvbnRl
eHRGZWF0dXJlc0NsaWVudCogcGFnZVBvcHVwRmVhdHVyZXNDbGllbnQgPSAgbmV3IFBhZ2VQb3B1
cEZlYXR1cmVzQ2xpZW50KCk7CiAgICAgcHJvdmlkZUNvbnRleHRGZWF0dXJlc1RvKG1fcGFnZS5n
ZXQoKSwgcGFnZVBvcHVwRmVhdHVyZXNDbGllbnQpOwogICAgIHN0YXRpYyBGcmFtZUxvYWRlckNs
aWVudCogZW1wdHlGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dCgpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODAsNiArNDgwLDkgQEAgV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIAogCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUocGFn
ZUdyb3VwTmFtZSk7CiAKKyAgICB1bnNpZ25lZCBsYXlvdXRNaWxlc3RvbmVzID0gRGlkRmlyc3RM
YXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbV9wYWdlLT5hZGRM
YXlvdXRNaWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZU9wdGlvbnM+KGxheW91
dE1pbGVzdG9uZXMpKTsKKwogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgc2V0VmlzaWJpbGl0eVN0YXRlKG1fY2xpZW50LT52aXNpYmls
aXR5U3RhdGUoKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc1NTMp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAxMi0wOS0wNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAg
ICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAg
ICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBkaXNwYXRjaERp
ZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCisgICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBk
aXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExheW91dCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50RWZsKToKKworICAgICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRp
bmcgYW55IG9mIHRoZSAKKyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMu
CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25l
dyk6CisKIDIwMTItMDktMDQgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDb250ZXh0IG1lbnUgcmVzdG9yZS4gCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3OCwxNCArNjc4LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmkKICAgICBld2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChtX2ZyYW1lKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3Rv
bmVPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmlu
aXNoZWQobV9mcmFtZSk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9m
aXJzdGxheW91dF9ub25lbXB0eV9maW5pc2hlZChtX2ZyYW1lKTsKKyAgICBpZiAob3B0aW9ucyAm
IERpZEZpcnN0TGF5b3V0KQorICAgICAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5p
c2hlZChtX2ZyYW1lKTsKKyAgICBpZiAob3B0aW9ucyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCkKKyAgICAgICAgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmlu
aXNoZWQobV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNo
U2hvdygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNiw4ICsxMDYsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1
YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKTsKIAogICAgIHZpcnR1
YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNiArNzczLDkgQEAgc3Rh
dGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogCiAgICAgcHJpdi0+cGFnZVNl
dHRpbmdzID0gcHJpdi0+cGFnZS0+c2V0dGluZ3MoKTsKIAorICAgIHVuc2lnbmVkIGxheW91dE1p
bGVzdG9uZXMgPSBEaWRGaXJzdExheW91dCB8IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dDsKKyAgICBwcml2LT5wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91
dE1pbGVzdG9uZU9wdGlvbnM+KGxheW91dE1pbGVzdG9uZXMpKTsKKwogICAgIHByaXYtPnZpZXdw
b3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0
bzsKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50czo6VmFsdWVBdXRvOwogICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLmluaXRp
YWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc1NTMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOS0wNCAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0
Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkg
CisgICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxl
c3RvbmVPcHRpb25zKQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TGF5b3V0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
OgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNl
c3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1p
bGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisKIDIwMTItMDktMDQgIEpvYW5t
YXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIENyYXNoIGlu
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUxLDE3ICs4NTEsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiZG9jdW1l
bnQtbG9hZC1maW5pc2hlZCIsIG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCgpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dChMYXlv
dXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90aWZ5U3RhdHVzKG1fZnJhbWUsIFdFQktJVF9M
T0FEX0ZJUlNUX1ZJU1VBTExZX05PTl9FTVBUWV9MQVlPVVQpOworICAgIGlmIChvcHRpb25zICYg
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQorICAgICAgICBub3RpZnlTdGF0dXMobV9m
cmFtZSwgV0VCS0lUX0xPQURfRklSU1RfVklTVUFMTFlfTk9OX0VNUFRZX0xBWU9VVCk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Rmlyc3RMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExh
eW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zKTsKIAogICAgICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAx
MjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2MTQsNiArMzYxNCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19pbml0KFdlYktpdFcKIAogICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UocGFnZUNs
aWVudHMpOwogCisgICAgcHJpdi0+Y29yZVBhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KTsKKwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAg
ICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVk
KCkpIHsKICAgICAgICAgcHJpdi0+Z2VvbG9jYXRpb25DbGllbnRNb2NrID0gYWRvcHRQdHIobmV3
IEdlb2xvY2F0aW9uQ2xpZW50TW9jayk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
Mjc1NTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1NSBAQAorMjAxMi0wOS0wNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3
CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFu
ZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1h
bmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgQVBJ
IGhhcyB0d28gcGFydHMuIEZpcnN0LCB0aGUgY2xpZW50IGhhcyB0byBvcHQgaW50byB3aGljaCAK
KyAgICAgICAgbGF5b3V0IG1pbGVzdG9uZXMgdGhleSBhcmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5n
IGFib3V0IHVzaW5nIAorICAgICAgICBbV2ViVmlldyBfbGF5b3V0TWlsZXN0b25lc10uIFRoZW4s
IFdlYktpdCB3aWxsIGNhbGwgCisgICAgICAgIHRoZSBXZWJGcmFtZUxvYWRlciBkZWxlZ2F0ZSdz
IGRpZExheW91dChXZWJMYXlvdXRNaWxlc3RvbmVzKSAKKyAgICAgICAgY2FsbGJhY2sgd2hlbiB0
aGUgc3BlY2lmaWVkIGxheW91dCBtaWxlc3RvbmVzIGhhdmUgZmlyZWQuIAorICAgICAgICBkaWRM
YXlvdXQgdGFrZXMgdGhlIFdlYkxheW91dE1pbGVzdG9uZXMgYml0IG1hc2ssIHdoaWNoIHdpbGwg
CisgICAgICAgIGluZGljYXRlIHdoaWNoIG1pbGVzdG9uZXMgaGF2ZSBmaXJlZCBzaW5jZSBpdCBp
cyBwb3NzaWJsZSBmb3IgdHdvIAorICAgICAgICB0byBmaXJlIGF0IHRoZSBzYW1lIHRpbWUuCisK
KyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRj
aERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhleSBhcmUgbm93IHJlcGxhY2VkIAor
ICAgICAgICBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRMYXlvdXQpOgorCisgICAgICAgIEFkZCBuZXcgZnVuY3Rpb24gdG8gdGhlIGRlbGVnYXRlIGZv
ciBkaWRMYXlvdXQuCisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNh
Y2hlKToKKworICAgICAgICBXZSBuZWVkIGEgZGVsZWdhdGUgdGVtcGxhdGUgdGhhdCB0YWtlcyBh
biBOU1VJbnRlZ2VyLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hpbmcubW06CisgICAgICAgIChDYWxsRGVsZWdhdGUpOgorICAgICAgICAoQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKToKKworICAgICAgICBDb252ZXJ0IGJldHdlZW4gV2ViQ29yZSBhbmQgV2Vi
S2l0IHZlcnNpb25zIG9mIHRoZSBiaXQgbWFzay4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgIChjb3JlTGF5b3V0TWlsZXN0b25lT3B0aW9ucyk6CisgICAgICAgIChraXRM
YXlvdXRNaWxlc3RvbmVPcHRpb25zKToKKworICAgICAgICBBZGQgbmV3IGRlbGVnYXRlLCBhbmQg
c2V0IHRoZSBhcHByb3ByaWF0ZSBsYXlvdXQgbWlsZXN0b25lcyBpbiAKKyAgICAgICAgV2ViQ29y
ZSBiYXNlZCBvbiBvbGQgZGVsZWdhdGVzIGhhdmluZyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAg
ICgtW1dlYlZpZXcgX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwor
ICAgICAgICBDYWxsIGludG8gV2ViQ29yZS4KKyAgICAgICAgKC1bV2ViVmlldyBfbGlzdGVuRm9y
TGF5b3V0TWlsZXN0b25lczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbGF5b3V0TWlsZXN0b25l
c10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDEyLTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRl
bnRpZmllci5oPi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDggKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmVPcHRpb25zKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02NjIsMjkgKzY2MiwzNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZpCiAgICAgW21fd2ViRnJhbWUtPl9wcml2YXRlLT5pbnRlcm5hbExvYWREZWxlZ2F0ZSB3
ZWJGcmFtZTptX3dlYkZyYW1lLmdldCgpIGRpZEZpbmlzaExvYWRXaXRoRXJyb3I6bmlsXTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3Rv
bmVPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbnMod2ViVmlldyk7Ci0gICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RM
YXlvdXRJbkZyYW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVu
dGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwotICAgIAot
ICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4K
LSAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+
X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107Ci0gICAgaWYgKFtnZXRXZWJWaWV3
KG1fd2ViRnJhbWUuZ2V0KCkpIGRyYXdzQmFja2dyb3VuZF0pCi0gICAgICAgIFtzY3JvbGxWaWV3
IHNldERyYXdzQmFja2dyb3VuZDpZRVNdOworCisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlk
TGF5b3V0RnVuYykKKyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkTGF5b3V0RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkTGF5b3V0Oiks
IGtpdExheW91dE1pbGVzdG9uZU9wdGlvbnMob3B0aW9ucykpOworCisgICAgaWYgKG9wdGlvbnMg
JiBEaWRGaXJzdExheW91dCkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVy
IHJlbW92aW5nIHRoZSBvbGQgZGlkRmlyc3RMYXlvdXQgQVBJIHNpbmNlIHRoaXMgaXMgZG9pbmcg
ZG91YmxlIGR1dHkgd2l0aCB0aGUKKyAgICAgICAgLy8gbmV3IGRpZExheW91dCBBUEkuCisgICAg
ICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMpCisgICAg
ICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExh
eW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdExheW91
dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CisKKyAgICAgICAgLy8gU2VlIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkLgorICAgICAgICBXZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZy
YW1lVmlldyBfc2Nyb2xsVmlld107CisgICAgICAgIGlmIChbZ2V0V2ViVmlldyhtX3dlYkZyYW1l
LmdldCgpKSBkcmF3c0JhY2tncm91bmRdKQorICAgICAgICAgICAgW3Njcm9sbFZpZXcgc2V0RHJh
d3NCYWNrZ3JvdW5kOllFU107CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDcwCi0gICAgW3Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Ny
b2xsRWxhc3RpY2l0eUF1dG9tYXRpY107Ci0gICAgW3Njcm9sbFZpZXcgc2V0SG9yaXpvbnRhbFNj
cm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFzdGljaXR5QXV0b21hdGljXTsKKyAgICAgICAgW3Nj
cm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1
dG9tYXRpY107CisgICAgICAgIFtzY3JvbGxWaWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpY107CiAjZW5kaWYKLX0KKyAgICB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCkKLXsKLSAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1l
LmdldCgpKTsKLSAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGlt
cGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9u
cyh3ZWJWaWV3KTsKLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRJbkZyYW1lRnVuYykKLSAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGlt
cGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMs
IHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CisgICAgaWYgKG9wdGlvbnMgJiBEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
b25zaWRlciByZW1vdmluZyB0aGUgb2xkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZv
ckZyYW1lIEFQSSBzaW5jZSB0aGlzIGlzIGRvaW5nCisgICAgICAgIC8vIGRvdWJsZSBkdXR5IHdp
dGggdGhlIG5ldyBkaWRMYXlvdXQgQVBJLgorICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5k
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYykKKyAgICAgICAgICAgIENh
bGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOworICAg
IH0KIH0KIAogRnJhbWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShy
ZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAg
c3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaXJzdExheW91dEluRnJhbWVGdW5jOwog
ICAgIElNUCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKKyAgICBJ
TVAgZGlkTGF5b3V0RnVuYzsKICAgICBJTVAgZGlkUmVjZWl2ZUljb25Gb3JGcmFtZUZ1bmM7CiAg
ICAgSU1QIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZ1bmM7CkBAIC0xMjMsNiArMTI0LDcgQEAgQk9PTCBDYWxsVUlE
ZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmlu
Z0Jvb2xlYW4oQk9PTCwgV2ViVmlldyAqLCBTRUwsIGlkLCBCT09MLCBpZCk7CiAKIGlkIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMKTsKK2lkIENhbGxGcmFtZUxvYWRE
ZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBOU1VJbnRlZ2VyKTsKIGlkIENhbGxGcmFtZUxv
YWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCk7CiBpZCBDYWxsRnJhbWVMb2FkRGVs
ZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsKIGlkIENhbGxGcmFtZUxvYWREZWxl
Z2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGluZy5tbQkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjQ3LDYgKzI0NywxOCBAQCBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1w
bGVtCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUo
SU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVj
dG9yLCBOU1VJbnRlZ2VyIGludGVnZXIpCit7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICBAdHJ5IHsKKyAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRl
bGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgaW50ZWdlcik7CisgICAgfSBAY2F0Y2goaWQgZXhjZXB0
aW9uKSB7CisgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9y
LCBleGNlcHRpb24pOworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCiBzdGF0aWMgaW5saW5l
IGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRl
bGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKICAgICBpZiAoIWRlbGVnYXRlKQpA
QCAtNDQ5LDYgKzQ2MSwxMSBAQCBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVu
dGF0CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+
X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvcik7CiB9CiAKK2lkIENhbGxGcmFt
ZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxl
Y3RvciwgTlNVSW50ZWdlciBpbnRlZ2VyKQoreworICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1w
bGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZSwgc2Vs
ZWN0b3IsIGludGVnZXIpOworfQorCiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxl
bWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKICAg
ICByZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0
ZS0+ZnJhbWVMb2FkRGVsZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QpOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTIsNiArMzkyLDIw
IEBAIEZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG8KICAgICAgICAgfCAo
b3B0aW9ucyAmIFdlYkZpbmRPcHRpb25zU3RhcnRJblNlbGVjdGlvbiA/IFN0YXJ0SW5TZWxlY3Rp
b24gOiAwKTsKIH0KIAorTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBjb3JlTGF5b3V0TWlsZXN0b25l
T3B0aW9ucyhXZWJMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJu
IChvcHRpb25zICYgV2ViRGlkRmlyc3RMYXlvdXQgPyBEaWRGaXJzdExheW91dCA6IDApCisgICAg
ICAgIHwgKG9wdGlvbnMgJiBXZWJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPyBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgOiAwKQorICAgICAgICB8IChvcHRpb25zICYgV2Vi
RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCA/IERpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQgOiAwKTsKK30KKworV2ViTGF5b3V0TWls
ZXN0b25lT3B0aW9ucyBraXRMYXlvdXRNaWxlc3RvbmVPcHRpb25zKExheW91dE1pbGVzdG9uZU9w
dGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gKG9wdGlvbnMgJiBEaWRGaXJzdExheW91dCA/
IFdlYkRpZEZpcnN0TGF5b3V0IDogMCkKKyAgICAgICAgfCAob3B0aW9ucyAmIERpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCA/IFdlYkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA6
IDApCisgICAgICAgIHwgKG9wdGlvbnMgJiBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNB
cmVhVGhyZXNob2xkID8gV2ViRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVz
aG9sZCA6IDApOworfQorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYkZpbGVJbnRlcm5hbCkKIC0g
KGZsb2F0KV9kZXZpY2VTY2FsZUZhY3RvcjsKIC0gKEJPT0wpX2lzTG9hZGluZzsKQEAgLTE2MTgs
NiArMTYzMiw3IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnQKICAg
ICBjYWNoZS0+ZGlkRmluaXNoTG9hZEZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOikpOwogICAgIGNhY2hlLT5k
aWRGaXJzdExheW91dEluRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Io
d2ViVmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOikpOwor
ICAgIGNhY2hlLT5kaWRMYXlvdXRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Io
d2ViVmlldzpkaWRMYXlvdXQ6KSk7CiAgICAgY2FjaGUtPmRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZFJlY2VpdmVJY29uRm9y
RnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZTopKTsKQEAgLTE2MjksNiArMTY0NCwxOSBAQCAtICh2b2lkKV9jYWNoZUZyYW1lTG9h
ZERlbGVnYXRlSW1wbGVtZW50CiAgICAgY2FjaGUtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRG
dW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlld0RpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQ6KSk7CiAgICAgY2FjaGUtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMgPSBn
ZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJ1bkluc2VjdXJlQ29udGVu
dDopKTsKICAgICBjYWNoZS0+ZGlkRGV0ZWN0WFNTRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOikpOworCisgICAgLy8gSXQgd291bGQgYmUg
bmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0
byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgorICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFt
ZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50
aW1lLCB0aGlzIGlzIHJlcXVpcmVkCisgICAgLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5
LgorICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOworICAgIGlmIChwYWdlKSB7CisgICAgICAg
IHVuc2lnbmVkIG1pbGVzdG9uZU9wdGlvbnMgPSAwOworICAgICAgICBpZiAoY2FjaGUtPmRpZEZp
cnN0TGF5b3V0SW5GcmFtZUZ1bmMpCisgICAgICAgICAgICBtaWxlc3RvbmVPcHRpb25zIHw9IERp
ZEZpcnN0TGF5b3V0OworICAgICAgICBpZiAoY2FjaGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEluRnJhbWVGdW5jKQorICAgICAgICAgICAgbWlsZXN0b25lT3B0aW9ucyB8PSBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgICAgIHBhZ2UtPmFkZExheW91dE1pbGVz
dG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lT3B0aW9ucz4obWlsZXN0b25lT3B0aW9u
cykpOworICAgIH0KIH0KIAogLSAodm9pZClfY2FjaGVTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVt
ZW50YXRpb25zCkBAIC0yODU4LDYgKzI4ODYsMjQgQEAgLSAoV2ViUGFnaW5hdGlvbk1vZGUpX3Bh
Z2luYXRpb25Nb2RlCiAgICAgcmV0dXJuIFdlYlBhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7CiB9
CiAKKy0gKHZvaWQpX2xpc3RlbkZvckxheW91dE1pbGVzdG9uZXM6KFdlYkxheW91dE1pbGVzdG9u
ZU9wdGlvbnMpbGF5b3V0TWlsZXN0b25lcworeworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+YWRkTGF5b3V0
TWlsZXN0b25lcyhjb3JlTGF5b3V0TWlsZXN0b25lT3B0aW9ucyhsYXlvdXRNaWxlc3RvbmVzKSk7
Cit9CisKKy0gKFdlYkxheW91dE1pbGVzdG9uZU9wdGlvbnMpX2xheW91dE1pbGVzdG9uZXMKK3sK
KyAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGtpdExheW91dE1pbGVzdG9uZU9wdGlvbnMocGFnZS0+bGF5
b3V0TWlsZXN0b25lcygpKTsKK30KKwogLSAodm9pZClfc2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtl
Q29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMKIHsKICAgICBQYWdlKiBwYWdlID0gY29y
ZShzZWxmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9w
dGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0xheW91dE1pbGVzdG9uZU9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVLZXlib2FyZFVJTW9kZS5o
PgogCkBAIC02NSw2ICs2Niw5IEBAIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIAogV2Vi
Q29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CiAK
K1dlYkNvcmU6OkxheW91dE1pbGVzdG9uZU9wdGlvbnMgY29yZUxheW91dE1pbGVzdG9uZU9wdGlv
bnMoV2ViTGF5b3V0TWlsZXN0b25lT3B0aW9ucyBvcHRpb25zKTsKK1dlYkxheW91dE1pbGVzdG9u
ZU9wdGlvbnMga2l0TGF5b3V0TWlsZXN0b25lT3B0aW9ucyhXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmVPcHRpb25zIG9wdGlvbnMpOworCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCiBP
QkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNiArMTA4LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV2ViUGFnaW5hdGlvbk1vZGVC
b3R0b21Ub1RvcCwKIH0gV2ViUGFnaW5hdGlvbk1vZGU7CiAKK2VudW0geworICAgIFdlYkRpZEZp
cnN0TGF5b3V0ID0gMSA8PCAwLAorICAgIFdlYkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCA9IDEgPDwgMSwKKyAgICBXZWJEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkID0gMSA8PCAyCit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIFdlYkxheW91dE1pbGVzdG9u
ZU9wdGlvbnM7CisKIC8vIFRoaXMgbmVlZHMgdG8gYmUgaW4gc3luYyB3aXRoIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbgogdHlwZWRlZiBlbnVtIHsKICAgICBXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCwKQEAgLTU2Niw2ICs1NzMsOSBAQCBDb3VsZCBiZSB3
b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2RlOihXZWJQ
YWdpbmF0aW9uTW9kZSlwYWdpbmF0aW9uTW9kZTsKIC0gKFdlYlBhZ2luYXRpb25Nb2RlKV9wYWdp
bmF0aW9uTW9kZTsKIAorLSAodm9pZClfbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lczooV2ViTGF5
b3V0TWlsZXN0b25lT3B0aW9ucylsYXlvdXRNaWxlc3RvbmVzOworLSAoV2ViTGF5b3V0TWlsZXN0
b25lT3B0aW9ucylfbGF5b3V0TWlsZXN0b25lczsKKwogLy8gV2hldGhlciB0aGUgY29sdW1uLWJy
ZWFrLXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIHRo
ZQogLy8gcGFnZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzLgogLSAodm9pZClfc2V0
UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnM7CkBA
IC03NTksNiArNzY5LDggQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0ZyYW1lTG9hZERl
bAogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0SW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIAorLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGRpZExheW91dDooV2ViTGF5b3V0TWlsZXN0b25lT3B0aW9ucylt
aWxlc3RvbmVzOworCiAvLyBGb3IgaW1wbGVtZW50aW5nIHRoZSBXZWJJbnNwZWN0b3IncyB0ZXN0
IGhhcm5lc3MKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xlYXJJbnNw
ZWN0b3JXaW5kb3dPYmplY3Q6KFdlYlNjcmlwdE9iamVjdCAqKXdpbmRvd09iamVjdCBmb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZTsKIApJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzU1
MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTItMDktMDQgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAg
ICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisg
ICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNv
cnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hE
aWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkg
ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVu
dFF0KToKKworICAgICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRpbmcg
YW55IG9mIHRoZSAKKyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdl
YlBhZ2VQcml2YXRlKToKKwogMjAxMi0wOS0wNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjczMjEpOiBJdCBtYWRlIDMgbm90aWZpY2F0
aW9uIHRlc3QgdGltZW91dApJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNp
b24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTYsNiArMzU2LDggQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZh
dGUoUVdlYlBhZwogICAgIC8vIGFzIGV4cGVjdGVkIG91dCBvZiB0aGUgYm94LCB3ZSB1c2UgYSBk
ZWZhdWx0IGdyb3VwIHNpbWlsYXIgdG8gd2hhdCBvdGhlciBwb3J0cyBhcmUgZG9pbmcuCiAgICAg
cGFnZS0+c2V0R3JvdXBOYW1lKCJEZWZhdWx0IEdyb3VwIik7CiAKKyAgICBwYWdlLT5hZGRMYXlv
dXRNaWxlc3RvbmVzKERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CisKICAgICBzZXR0
aW5ncyA9IG5ldyBRV2ViU2V0dGluZ3MocGFnZS0+c2V0dGluZ3MoKSk7CiAKICAgICBoaXN0b3J5
LmQgPSBuZXcgUVdlYkhpc3RvcnlQcml2YXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdEltcGwqPihwYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjcsMTQgKzUyNywx
MiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluCiAgICAgZW1pdExv
YWRGaW5pc2hlZCh0cnVlKTsKIH0KIAotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCiB7Ci19CisgICAgaWYgKCFt
X3dlYkZyYW1lKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQotewotICAgIGlmIChtX3dl
YkZyYW1lKQorICAgIGlmIChvcHRpb25zICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPmluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDEyNzE2OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsOCArMTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lT3B0aW9ucyk7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRj
aENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
NzU1MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI3IEBACisyMDEyLTA5LTA0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcK
KyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5k
IAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFu
ZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxhY2Vk
IGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBh
bnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgor
CiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2ODAsNiArMjY4MCw5IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICAgICBtX3BhZ2UgPSBuZXcgUGFnZShwYWdlQ2xp
ZW50cyk7CiAgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCBuZXcgV2ViR2VvbG9jYXRp
b25DbGllbnQodGhpcykpOwogCisgICAgdW5zaWduZWQgbGF5b3V0TWlsZXN0b25lcyA9IERpZEZp
cnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIG1fcGFnZS0+
YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVPcHRpb25zPihs
YXlvdXRNaWxlc3RvbmVzKSk7CisKICAgICBCU1RSIGxvY2FsU3RvcmFnZVBhdGg7CiAgICAgaWYg
KFNVQ0NFRURFRChtX3ByZWZlcmVuY2VzLT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoJmxvY2Fs
U3RvcmFnZVBhdGgpKSkgewogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldExvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aChTdHJpbmcobG9jYWxTdG9yYWdlUGF0aCwgU3lzU3RyaW5nTGVuKGxv
Y2FsU3RvcmFnZVBhdGgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjcx
NjgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiwyMCArNDE2LDIwIEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUt
PmRpZEZpbmlzaExvYWRGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCi17Ci0gICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKLSAgICBDT01QdHI8SVdlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OwotICAgIGlmIChT
VUNDRUVERUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxl
Z2F0ZVByaXYpKSAmJiBmcmFtZUxvYWREZWxlZ2F0ZVByaXYpCi0gICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlUHJpdi0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwot
fQotCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExh
eW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgV2ViVmlldyogd2Vi
VmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlOwotICAgIGlmIChTVUNDRUVE
RUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVBy
aXZhdGUpKSAmJiBmcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCi0gICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZSh3ZWJW
aWV3LCBtX3dlYkZyYW1lKTsKKworICAgIGlmIChvcHRpb25zICYgRGlkRmlyc3RMYXlvdXQpIHsK
KyAgICAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUo
JmZyYW1lTG9hZERlbGVnYXRlUHJpdikpICYmIGZyYW1lTG9hZERlbGVnYXRlUHJpdikKKyAgICAg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdi0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lKHdlYlZp
ZXcsIG1fd2ViRnJhbWUpOworICAgIH0KKworICAgIGlmIChvcHRpb25zICYgRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KSB7CisgICAgICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+ZnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpKSAmJiBmcmFt
ZUxvYWREZWxlZ2F0ZVByaXZhdGUpCisgICAgICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUod2ViVmlldywgbV93ZWJG
cmFtZSk7CisgICAgfQogfQogCiBGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
Q3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
aXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJD
b3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJh
bWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyNzU1MykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDktMDQgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAg
ICBpcyBub3cgcmVwbGFjZWQgYnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0
aW9ucykKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRM
YXlvdXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UpOgorCiAyMDEyLTA4LTI4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
CShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsMTIgKzM3
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWQKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZExheW91dChMYXlv
dXRNaWxlc3RvbmVPcHRpb25zKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gMTI3MTY4KQorKysgU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDggKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RM
YXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lT3B0aW9ucyk7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMjc1NTMpCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTA0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUz
OTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQg
YW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAg
LWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRp
c3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxh
Y2VkIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKyAgICAgICAgKEZyYW1lTG9hZGVy
Q2xpZW50V3gpOgorCiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
NCwxMyArMzU0LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbgog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5
b3V0TWlsZXN0b25lT3B0aW9ucykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDog
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oCShyZXZpc2lvbiAxMjcxNjgpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3Vt
ZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lT3B0aW9ucyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKFdlYkNvcmU6Okljb25UeXBlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hT
aG93KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjcxNjkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0OCBAQAorMjAxMi0wOS0wNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAg
IC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY291bnQg
Zm9yIHRoZSBuZXcgbWVtYmVyIG9mIHRoZSBQYWdlTG9hZENsaWVudC4KKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjppbml0aWFsaXplKToKKworICAgICAgICBUaGUgTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9ySW1hZ2VzIGhhcyBleGlzdGVkIGZvciBhIHdoaWxlLCAKKyAgICAgICAgYnV0
IGl0IGRpZCBub3QgaGF2ZSB0aGUgcmlnaHQgdGFyZ2V0IG1lbWJlcnNoaXAuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgVXNlIG5ldyBkaWRMYXlvdXQgQVBJIGluc3RlYWQgb2Ygb2xkIAorICAgICAgICBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgQVBJLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRMYXlv
dXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRMYXlvdXQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTGF5b3V0KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZExheW91dCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93
Q29udHJvbGxlci5tCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMv
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYzMCw3
IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIDAsIC8vIGRpZEZhaWxUb0luaXRpYWxp
emVQbHVnaW4KICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWUsCiAgICAgICAgIDAsIC8vIGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWRMYXlvdXQK
ICAgICAgICAgMCwgLy8gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8v
IGludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKICAgICAgICAgMCwg
Ly8gcGx1Z2luRGlkRmFpbApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEy
NzE2OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAJCTc2RTE4MkRG
MTU0NzY3RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVB
ODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OwogCQk4MUI1MDE5
MzE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyog
U3RyaW5nQnVpbGRlci5jcHAgKi87IH07CiAJCTkzMEFENDAyMTUwNjk4RDAwMDY3OTcwRiAvKiBs
b3RzLW9mLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0
bWwgKi87IH07CisJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5Q0NFMyAvKiBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0ExNTA2RjAzNTAwN0ZENTdFIC8qIE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgKi87IH07CiAJCTkzNjEwMDI5MTREQzk1
QTcwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYxMDAyODE0REM5NTdCMDA2MTM3OUQg
LyogbG90cy1vZi1pZnJhbWVzLmh0bWwgKi87IH07CiAJCTkzOUJBOTE3MTQxMDM0MTIwMDFBMDFC
RCAvKiBEZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOUJBOTE2MTQxMDM0MTIwMDFBMDFCRCAvKiBEZXZpY2VT
Y2FsZUZhY3Rvck9uQmFjay5tbSAqLzsgfTsKIAkJOTNBRjRFQ0UxNTA2RjA2NDAwN0ZENTdFIC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0QxNTA2RjA2
NDAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5k
bGUuY3BwICovOyB9OwpAQCAtOTg1LDYgKzk4Niw3IEBACiAJCQkJQkM5MDk5NUUxMjU2N0JDMTAw
MDgzNzU2IC8qIFdLU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTA5OTk0MTI1NkFD
RjEwMDA4Mzc1NiAvKiBXS1N0cmluZ0pTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2
NUFGNTUwMTVEMUU0OEEwMEIwQ0I0QSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDI5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3Vj
Y2VlZDsKK3N0YXRpYyBib29sIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZEhp
dFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKK3N0YXRpYyBi
b29sIGRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXM7CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCAqKQorc3RhdGljIHZvaWQgZGlkTGF5b3V0KFdLUGFnZVJlZiwgV0tMYXlvdXRNaWxlc3RvbmVP
cHRpb25zIHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQgPSB0cnVlOworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2Uga1dLRGlkRmlyc3RMYXlvdXQ6CisgICAgICAgIGRpZEZpcnN0TGF5b3V0QWNo
aWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dDoKKyAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
QWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ6CisgICAgICAgIGRpZEhpdFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAo
ZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCAmJiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRB
Y2hpZXZlZCAmJiBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNo
aWV2ZWQpCisgICAgICAgIGRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMgPSB0cnVlOwogfQog
CiBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNDIs
MTEgKzYwLDE1IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmUKICAg
ICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xp
ZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24g
PSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgbG9hZGVyQ2xpZW50LmRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dDsKKyAgICBsb2FkZXJDbGllbnQuZGlkTGF5b3V0ID0gZGlkTGF5b3V0OwogCiAg
ICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAor
Ly8gRklYTUU6IFRoaXMgdGVzdCBoYXMgYmVlbiBicm9rZW4gc2luY2UgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTE1NzUyIEl0J3MgZmFpbGluZyBiZWNhdXNlCisvLyB0aGUgZnJh
bWUgbG9hZCBpcyBjb21wbGV0aW5nIGJlZm9yZSBkaWRMYXlvdXQoKSBtYW5hZ2VzIHRvIHVubG9j
ayB0aGUKKy8vIGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQg
YWNoaWV2ZW1lbnQuIFdlIHByb2JhYmx5IG5lZWQgdG8gZml4IHRoaXMgYnkgbWFraW5nCisvLyB0
aGlzIHRlc3QgaGF2ZSBhIGxvbmctcnVubmluZyByZXNvdXJjZS4KIFRFU1QoV2ViS2l0MiwgRElT
QUJMRURfTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQogewogICAgIFdLUmV0YWluUHRy
PFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRUZXN0IikpOwpA
QCAtNTgsOCArODAsOCBAQCBURVNUKFdlYktpdDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlO
CiAgICAgLy8gb2JqZWN0cyB0YWtlIHVwIG1vcmUgdGhhbiAxMCUgb2YgdGhlIHZpZXcuCiAgICAg
V0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JS
ZXNvdXJjZSgibG90cy1vZi10ZXh0IiwgImh0bWwiKSkuZ2V0KCkpOwogCi0gICAgVXRpbDo6cnVu
KCZkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkKTsKLSAgICBFWFBFQ1Rf
VFJVRShkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkKTsKKyAgICBVdGls
OjpydW4oJmRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMpOworICAgIEVYUEVDVF9UUlVFKGRp
ZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWls
cy5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0
aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkOworc3RhdGlj
IGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVk
Owogc3RhdGljIGJvb2wgdGVzdDFEb25lOwogc3RhdGljIGJvb2wgdGVzdDJEb25lOwogICAgIApA
QCAtNDgsOSArNDgsMTAgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFn
ZQogICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCAwLCBkaWRGb3JjZVJlcGFpbnQpOwogfQog
Ci1zdGF0aWMgdm9pZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKK3N0YXRpYyB2b2lkIGRpZExheW91dChXS1BhZ2VS
ZWYsIFdLTGF5b3V0TWlsZXN0b25lT3B0aW9ucyB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQg
KikKIHsKLSAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1
ZTsKKyAgICBpZiAodHlwZSA9PSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKQorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkQWNoaWV2ZWQgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNTksNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVv
Zihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2Fk
ZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZv
ckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQ7CisgICAgbG9hZGVyQ2xpZW50LmRpZExheW91dCA9IGRpZExheW91dDsKIAogICAgIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7CiB9CkBAIC04MCw3
ICs4MSw3IEBAIFRFU1QoV2ViS2l0MiwgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGEKIAogICAg
IC8vIEJ5IHRoZSB0aW1lIHRoZSBmb3JjZWQgcmVwYWludCBoYXMgZmluaXNoZWQsIHRoZSBjb3Vu
dGVyIHdvdWxkIGhhdmUgYmVlbiBoaXQgCiAgICAgLy8gaWYgaXQgd2FzIHNpemVkIHJlYXNvbmFi
bHkgZm9yIHRoZSBwYWdlLgotICAgIEVYUEVDVF9GQUxTRShkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRTdWNjZWVkKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkSGl0UmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzX0J1bmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZhaWxzX0J1bmRsZS5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
YWlsc19CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAgICAvLyBTZXR0aW5nIHRoZSBwYWludGVk
IG9iamVjdHMgY291bnRlciBpcyBuZWNlc3NhcnkgYXQgdGhpcyB0aW1lIHRvIG9wdCBpbnRvCi0g
ICAgICAgIC8vIHRoZSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgaGV1cmlzdGlj
LgotICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQo
cGFnZSwgMSk7CisgICAgICAgIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMo
cGFnZSwga1dLRGlkRmlyc3RMYXlvdXQgfCBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgfCBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKTsKICAg
ICB9CiAgICAgCiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckltYWdlcy5jcHAJKHJldmlzaW9uIDEyNzE2OCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFn
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjkgQEAKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRTdWNjZWVkOworc3RhdGljIGJvb2wgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZDsKK3N0YXRp
YyBib29sIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkOworc3RhdGljIGJv
b2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkOwor
c3RhdGljIGJvb2wgZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lczsKIAotc3RhdGljIHZvaWQg
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdLUGFnZVJlZiwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRMYXlvdXQoV0tQYWdlUmVmLCBXS0xheW91dE1p
bGVzdG9uZU9wdGlvbnMgdHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0gICAgZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCA9IHRydWU7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBrV0tEaWRGaXJzdExheW91dDoKKyAgICAgICAgZGlkRmlyc3RM
YXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OgorICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAgZGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkID0gdHJ1ZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAor
ICAgIGlmIChkaWRGaXJzdExheW91dEFjaGlldmVkICYmIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEFjaGlldmVkICYmIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJl
c2hvbGRBY2hpZXZlZCkKKyAgICAgICAgZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lcyA9IHRy
dWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2Up
CkBAIC00MiwxMiArNjAsMTYgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1Bh
Z2VSZQogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZs
b2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQu
dmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICBsb2FkZXJD
bGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRMYXlvdXQgPSBkaWRMYXlv
dXQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQp
OwogfQogCi1URVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvcklt
YWdlcykKKy8vIEZJWE1FOiBUaGlzIHRlc3QgaGFzIGJlZW4gYnJva2VuIHNpbmNlIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExNTc1MiBJdCdzIGZhaWxpbmcgYmVjYXVzZQorLy8g
dGhlIGZyYW1lIGxvYWQgaXMgY29tcGxldGluZyBiZWZvcmUgZGlkTGF5b3V0KCkgbWFuYWdlcyB0
byB1bmxvY2sgdGhlCisvLyBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkIGFjaGlldmVtZW50LiBXZSBwcm9iYWJseSBuZWVkIHRvIGZpeCB0aGlzIGJ5IG1ha2lu
ZworLy8gdGhpcyB0ZXN0IGhhdmUgYSBsb25nLXJ1bm5pbmcgcmVzb3VyY2UuCitURVNUKFdlYktp
dDIsIERJU0FCTEVEX05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcykKIHsK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9ySW1hZ2VzVGVzdCIpKTsKIApAQCAtNTgsOCArODAsOCBAQCBURVNUKFdlYktpdDIs
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAgICAgLy8gb2JqZWN0cyB0YWtlIHVwIG1vcmUg
dGhhbiAxMCUgb2YgdGhlIHZpZXcuCiAgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwg
YWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgibG90cy1vZi1pbWFnZXMiLCAiaHRt
bCIpKS5nZXQoKSk7CiAKLSAgICBVdGlsOjpydW4oJmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dFN1Y2NlZWQpOwotICAgIEVYUEVDVF9UUlVFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dFN1Y2NlZWQpOworICAgIFV0aWw6OnJ1bigmZGlkVW5sb2NrQWxsTGF5b3V0TWls
ZXN0b25lcyk7CisgICAgRVhQRUNUX1RSVUUoZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFn
ZXNfQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAJ
KHJldmlzaW9uIDEyNzE2OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9O
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsOSArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAg
IHsKLSAgICAgICAgLy8gU2V0dGluZyB0aGUgcGFpbnRlZCBvYmplY3RzIGNvdW50ZXIgaXMgbmVj
ZXNzYXJ5IGF0IHRoaXMgdGltZSB0byBvcHQgaW50bwotICAgICAgICAvLyB0aGUgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGhldXJpc3RpYy4KLSAgICAgICAgV0tCdW5kbGVQYWdl
U2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKHBhZ2UsIDEpOworICAgICAgICBXS0J1
bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHBhZ2UsIGtXS0RpZEZpcnN0TGF5b3V0
IHwga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHwga1dLRGlkSGl0UmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCk7CiAgICAgfQogICAgIAogfTsKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGcmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwCShyZXZpc2lv
biAxMjcxNjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsOCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZpcmVNb3JlVGhhbk9uY2U7Ci1zdGF0aWMgdW5z
aWduZWQgbmV3VmlzdWFsbHlOb25FbXB0eUxheW91dENvdW50ZXI7CitzdGF0aWMgYm9vbCBkaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkTW9yZVRoYW5PbmNlOworc3Rh
dGljIHVuc2lnbmVkIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRD
b3VudGVyOwogc3RhdGljIGJvb2wgdGVzdDFEb25lOwogc3RhdGljIGJvb2wgdGVzdDJEb25lOwog
ICAgIApAQCAtNDksMTEgKzQ5LDE0IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZShXS1BhZ2UKICAgICBXS1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwgMCwgZGlkRm9yY2VSZXBhaW50
KTsKIH0KIAotc3RhdGljIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdL
UGFnZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRMYXlvdXQo
V0tQYWdlUmVmLCBXS0xheW91dE1pbGVzdG9uZU9wdGlvbnMgdHlwZSwgV0tUeXBlUmVmLCBjb25z
dCB2b2lkICopCiB7Ci0gICAgKytuZXdWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q291bnRlcjsKLSAg
ICBpZiAobmV3VmlzdWFsbHlOb25FbXB0eUxheW91dENvdW50ZXIgPiAxKQotICAgICAgICBkaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGaXJlTW9yZVRoYW5PbmNlID0gdHJ1ZTsKKyAg
ICBpZiAodHlwZSAhPSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkKQorICAgICAgICByZXR1cm47CisKKyAgICArK2RpZEhpdFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0c0FyZWFUaHJlc2hvbGRDb3VudGVyOworICAgIGlmIChkaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlciA+IDEpCisgICAgICAgIGRpZEhpdFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2UgPSB0cnVlOwogfQogCiBz
dGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNjIsMTQg
KzY1LDE0IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmUKICAgICBt
ZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRl
ckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwogICAg
IGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9
IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBsb2FkZXJDbGllbnQuZGlk
TGF5b3V0ID0gZGlkTGF5b3V0OwogCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdl
LCAmbG9hZGVyQ2xpZW50KTsKIH0KIAogVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGcmFtZXMpCiB7Ci0gICAgbmV3VmlzdWFsbHlOb25FbXB0eUxheW91dENvdW50
ZXIgPSAwOworICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRD
b3VudGVyID0gMDsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRX
SywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVzdCIpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpAQCAtODIsNyArODUsNyBAQCBURVNUKFdlYktpdDIsIE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAvLyBCeSB0aGUgdGltZSB0aGUgZm9yY2Vk
IHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRlciB3b3VsZCBoYXZlIGJlZW4gaGl0IAog
ICAgIC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5IGZvciB0aGUgcGFnZS4KLSAgICBFWFBF
Q1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmlyZU1vcmVUaGFuT25j
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFU
aHJlc2hvbGRNb3JlVGhhbk9uY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZy
YW1lc19CdW5kbGUuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICB7Ci0gICAgICAgIC8vIFNldHRpbmcgdGhlIHBhaW50ZWQgb2JqZWN0cyBj
b3VudGVyIGlzIG5lY2Vzc2FyeSBhdCB0aGlzIHRpbWUgdG8gb3B0IGludG8KLSAgICAgICAgLy8g
dGhlIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBoZXVyaXN0aWMuCi0gICAgICAg
IFdLQnVuZGxlUGFnZVNldFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChwYWdlLCAxKTsK
KyAgICAgICAgV0tCdW5kbGVQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhwYWdlLCBrV0tE
aWRGaXJzdExheW91dCB8IGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB8IGtXS0Rp
ZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogICAgIH0KICAgICAK
IH07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF9CdW5k
bGUuY3BwCShyZXZpc2lvbiAxMjcxNjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDkgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB7
Ci0gICAgICAgIC8vIFNldHRpbmcgdGhlIHBhaW50ZWQgb2JqZWN0cyBjb3VudGVyIGlzIG5lY2Vz
c2FyeSBhdCB0aGlzIHRpbWUgdG8gb3B0IGludG8KLSAgICAgICAgLy8gdGhlIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCBoZXVyaXN0aWMuCi0gICAgICAgIFdLQnVuZGxlUGFnZVNl
dFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChwYWdlLCAxKTsKKyAgICAgICAgV0tCdW5k
bGVQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhwYWdlLCBrV0tEaWRGaXJzdExheW91dCB8
IGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB8IGtXS0RpZEhpdFJlbGV2YW50UmVw
YWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogICAgIH0KICAgICAKIH07CkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTI3MTY4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyMyw2ICs0MjMsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGlu
dCBhcmdjCiAgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lCiAgICAg
ICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWRMYXlvdXQKICAgICAgICAg
MCwgLy8gd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgICAgIDAsIC8vIGludGVyYWN0
aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUKICAgICAgICAgMCwgLy8gcGx1Z2lu
RGlkRmFpbApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI3MTY4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDcgQEAgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoVwogICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKICAgICAgICAgMCwgLy8g
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8g
ZGlkTGF5b3V0CiAgICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lLAogICAgICAgICAwLCAvLyBz
aG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbQogICAgICAgICAwLCAvLyBkaWRDcmVhdGVHbG9i
YWxPYmplY3RGb3JGcmFtZQo=
</data>
<flag name="commit-queue"
          id="173184"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162307</attachid>
            <date>2012-09-05 12:47:15 -0700</date>
            <delta_ts>2012-09-05 13:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>121758</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA5LTA1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtZXJnZXMgZGlkRmlyc3RMYXlvdXQsIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCwgCisgICAgICAgIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQuIFBhZ2Uga2VlcHMgdHJhY2sgb2Ygd2hpY2ggCisgICAgICAgIGxheW91dCBt
aWxlc3RvbmVzIHdlIGFyZSBpbnRlcmVzdGVkIGluIHdpdGggYSBiaXQgbWFzaywgc28gdGhhdCAK
KyAgICAgICAgZGlmZmVyZW50IHBvcnRzL2NsaWVudHMgY2FuIG9wdC1pbnRvIGRpZmZlcmVudCBt
aWxlc3RvbmVzLiBUaGlzIAorICAgICAgICB3aWxsIGFsbG93IHVzIHRvIHNhZmVseSBhZGQgbW9y
ZSBsYXlvdXQgbWlsZXN0b25lcyBpbiB0aGUgZnV0dXJlIAorICAgICAgICBpZiB0aGF0IHNlZW1z
IHdvcnRod2hpbGUuCisKKyAgICAgICAgSW5jbHVkZSBuZXcgZmlsZSBMYXlvdXRNaWxlc3RvbmVP
cHRpb25zLmgKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGV5IGFyZSBub3cgcmVwbGFjZWQgCisgICAgICAg
IGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkTGF5b3V0KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExh
eW91dCk6CisgICAgICAgICogcGFnZS9MYXlvdXRNaWxlc3RvbmVPcHRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgQ2hlY2sgd2l0aCBQYWdlIHRvIGZpbmQgb3V0
IHdoaWNoIGxheW91dCBtaWxlc3RvbmVzIHRoZSBjbGllbnQgaXMgCisgICAgICAgIGludGVyZXN0
ZWQgaW4sIGFuZCB0aGVuIGRpc3BhdGNoIHRoZSBub3RpZmljYXRpb25zIHdoZW4gCisgICAgICAg
IGFwcHJvcHJpYXRlLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CisKKyAgICAgICAgUmVt
b3ZlIHNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoKS4gSW5zdGVh
ZCBrZWVwIAorICAgICAgICB0cmFjayBvZiB0aGUgbGF5b3V0IG1pbGVzdG9uZXMgYml0IG1hc2su
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJl
cGFpbnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXlvdXRNaWxlc3RvbmVzKToKKwogMjAxMi0wOS0wNSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjc2MjkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTM5ODQsNiArMzk4NCw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Hcm91cFNldHRpbmdzLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIFwK
KyAgICBTb3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dE1pbGVzdG9uZXMuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTE5ODQsNiArMTk4NCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmgg
XAogICAgIHBhZ2UvSGlzdG9yeS5oIFwKKyAgICBwYWdlL0xheW91dE1pbGVzdG9uZXMuaCBcCiAg
ICAgcGFnZS9Mb2NhdGlvbi5oIFwKICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMuaCBcCiAgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC02NzAsNiArNjcwLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UxNnNldERl
ZmVyc0xvYWRpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKIF9f
Wk43V2ViQ29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JF
ZlJLTlNfOEludFBvaW50RQorX19aTjdXZWJDb3JlNFBhZ2UxOWFkZExheW91dE1pbGVzdG9uZXNF
agogX19aTjdXZWJDb3JlNFBhZ2UxOXZpc2l0ZWRTdGF0ZUNoYW5nZWRFUE5TXzlQYWdlR3JvdXBF
eQogX19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29y
ZTRQYWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC02ODUsNyArNjg2LDYgQEAgX19aTjdX
ZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50QwogX19aTjdXZWJDb3JlNFBhZ2UzNXJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzZz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2Uz
N3NldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGVFYgotX19aTjdXZWJDb3JlNFBh
Z2U0M3NldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGRFeQogX19aTjdX
ZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTRQYWdlOGdvVG9JdGVtRVBOU18xMUhp
c3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUKIF9fWk43V2ViQ29yZTRQYWdlOWdvRm9yd2Fy
ZEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxMjMsNiArMzEyMyw3IEBACiAg
ICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9I
aXN0b3J5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmgnLAorICAgICAgICAgICAg
J3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oJywKICAgICAgICAgICAgICdwYWdlL0xvY2F0aW9uLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9Mb2NhdGlvbi5oJywKICAgICAgICAgICAgICdwYWdlL01l
bW9yeUluZm8uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzIx
MCw2ICszMjEwLDcgQEAKIAkJOTMzMDlFQTIwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
MDlFOUYwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyTWFjLm1tICovOyB9OwogCQk5MzMw
OUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RUEwMDk5RUI3OEMwMDU2RTU4MSAvKiBT
aGFyZWRUaW1lci5oICovOyB9OwogCQk5MzMwOUVBNDA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlF
QTEwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLzsgfTsKKwkJOTMzMzY5Q0QxNUYxNzRG
NjAwRDg3NzY3IC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzM2OUNDMTVGMTc0RjYwMEQ4Nzc2NyAvKiBMYXlvdXRN
aWxlc3RvbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTMzNTRBM0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzNTRBM0Iw
QjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovOyB9OwogCQk5MzNB
MTQyRTBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0ExNDJCMEI3RDE4ODYwMEE1M0ZGRCAvKiBU
ZXh0RXZlbnQuY3BwICovOyB9OwogCQk5MzNBMTQzMDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNB
MTQyRDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmggKi87IH07CkBAIC0xMDM3NCw2ICsx
MDM3NSw3IEBACiAJCTkzMzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFRpbWVyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMwOUVBMDA5OUVCNzhDMDA1NkU1
ODEgLyogU2hhcmVkVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMDlFQTEwOTlFQjc4
QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMzY5Q0MxNUYx
NzRGNjAwRDg3NzY3IC8qIExheW91dE1pbGVzdG9uZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTGF5b3V0TWlsZXN0b25lcy5oOyBwYXRoID0gcGFnZS9MYXlvdXRNaWxlc3Rv
bmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJOTMzNTRBM0IwQjI0RjhDOTAw
M0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzM0ExNDJCMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzQTE0MkMwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRF
dmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dEV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Nzg3LDYgKzE1Nzg5LDcgQEAKIAkJCQlCQzk0RDE1MDBD
Mjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAw
NkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyog
SGlzdG9yeS5pZGwgKi8sCisJCQkJOTMzMzY5Q0MxNUYxNzRGNjAwRDg3NzY3IC8qIExheW91dE1p
bGVzdG9uZXMuaCAqLywKIAkJCQlCQ0UxQzQxQTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24u
Y3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLAog
CQkJCUJDRTFDNDIyMEQ5ODI5RjIwMDNCMDJGMiAvKiBMb2NhdGlvbi5pZGwgKi8sCkBAIC0yNTQ5
MCw2ICsyNTQ5Myw3IEBACiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2lj
U2hhcGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4QjcxMTAgLyog
QmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEMxNUVGMjYw
NDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzMzNjlDRDE1
RjE3NEY2MDBEODc3NjcgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSw5ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaERvY3VtZW50TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChM
YXlvdXRNaWxlc3RvbmVzKSB7IH0KIAogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4MSwyNSArMjI4MSwxNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXRPcmlnaW5hbFVSTEZvckRvd25sCiAgICAgfQogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpkaWRGaXJzdExheW91dCgpCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRMYXlvdXQoTGF5
b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewotICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkgJiYg
aXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQotICAgICAgICBoaXN0b3J5KCktPnJl
c3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOworICAgIGlmIChtaWxlc3RvbmVzICYg
RGlkRmlyc3RMYXlvdXQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiBpc0JhY2tG
b3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCisgICAgICAgICAgICBoaXN0b3J5KCktPnJlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwogCi0gICAgaWYgKG1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmICFtX3N0YXRlTWFjaGluZS5pc0Rp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmICFtX3N0YXRlTWFjaGluZS5maXJzdExh
eW91dERvbmUoKSkKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lOjpGaXJzdExheW91dERvbmUpOwotCi0gICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQoKTsKLX0KKyAgICAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLmNvbW1p
dHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmICFtX3N0YXRlTWFjaGluZS5pc0Rpc3BsYXlp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmICFtX3N0YXRlTWFjaGluZS5maXJzdExheW91dERv
bmUoKSkKKyAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0
YXRlTWFjaGluZTo6Rmlyc3RMYXlvdXREb25lKTsgICAgCisgICAgfQogCi12b2lkIEZyYW1lTG9h
ZGVyOjpkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQotewotICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZExheW91dChtaWxlc3RvbmVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSWNvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29u
VVJMLmgiCisjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIlBvbGljeUNo
ZWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZE5vdGlmaWVyLmgiCkBAIC0xNzUsMTIgKzE3Niw3IEBAIHB1YmxpYzoKIAogICAgIENhY2hl
UG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdDsKIAotICAgIHZvaWQgZGlkRmly
c3RMYXlvdXQoKTsKLQotICAgIC8vIEZJWE1FOiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgc2hvdWxkIGJlIG1l
cmdlZC4KLSAgICAvLyBUaGUgb25seSByZWFzb24gZm9yIGJvdGggdG8gZXhpc3QgaXMgdG8gZXhw
ZXJpbWVudCB3aXRoIGRpZmZlcmVudCBoZXVyaXN0aWNzIGZvciB0aGUgdGltZSBiZWluZy4KLSAg
ICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOwotICAgIHZvaWQgZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgdm9pZCBkaWRMYXlvdXQoTGF5b3V0
TWlsZXN0b25lcyk7CiAKICAgICB2b2lkIGxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENh
Y2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2FjaGVM
b2FkcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgorI2luY2x1ZGUgIkxheW91dE1p
bGVzdG9uZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTYyLDEwICsxNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpID0gMDsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKSB7
IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygp
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEyNzYxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQyMCwxMSArMjQyMCwxOCBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNr
cygpCiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7
CiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2UoKTsKIAorICAgIExh
eW91dE1pbGVzdG9uZXMgbWlsZXN0b25lc09mSW50ZXJlc3QgPSAwOworICAgIExheW91dE1pbGVz
dG9uZXMgbWlsZXN0b25lc0FjaGlldmVkID0gMDsKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmIChwYWdlKQorICAgICAgICBtaWxlc3RvbmVzT2ZJbnRlcmVzdCA9IHBh
Z2UtPmxheW91dE1pbGVzdG9uZXMoKTsKKwogICAgIGlmIChtX25lc3RlZExheW91dENvdW50IDw9
IDEpIHsKICAgICAgICAgaWYgKG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcpIHsKICAgICAg
ICAgICAgIG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdExheW91dCgpOwotICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChtaWxlc3RvbmVz
T2ZJbnRlcmVzdCAmIERpZEZpcnN0TGF5b3V0KQorICAgICAgICAgICAgICAgIG1pbGVzdG9uZXNB
Y2hpZXZlZCB8PSBEaWRGaXJzdExheW91dDsKKyAgICAgICAgICAgIGlmIChwYWdlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpID09IG1fZnJhbWUpCiAgICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPnN0YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsK
ICAgICAgICAgICAgIH0KQEAgLTI0MzcsMTAgKzI0NDQsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OnBl
cmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAvLyBJZiB0aGUgbGF5b3V0IHdhcyBkb25l
IHdpdGggcGVuZGluZyBzaGVldHMsIHdlIGFyZSBub3QgaW4gZmFjdCB2aXN1YWxseSBub24tZW1w
dHkgeWV0LgogICAgICAgICBpZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkgJiYgIW1fZnJhbWUtPmRv
Y3VtZW50KCktPmRpZExheW91dFdpdGhQZW5kaW5nU3R5bGVzaGVldHMoKSAmJiBtX2ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICAgICAgbV9maXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsK
KyAgICAgICAgICAgIGlmIChtaWxlc3RvbmVzT2ZJbnRlcmVzdCAmIERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCkKKyAgICAgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OwogICAgICAgICB9CiAgICAgfQogCisgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmRpZExheW91dChtaWxlc3RvbmVzQWNoaWV2ZWQpOworICAgIAorICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIERpZExheW91dCBhcyBhIExheW91
dE1pbGVzdG9uZS4gVGhhdCB3b3VsZCBsZXQgdXMgbWVyZ2UgdGhpcworICAgIC8vIHdpdGggZGlk
TGF5b3V0KExheW91dE1pbGVzdG9uZXMpLgogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hEaWRMYXlvdXQoKTsKIAogICAgIFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVu
ZGVyZXIodGhpcyk7CkBAIC0yNDUyLDcgKzI0NjQsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9y
bVBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgeworICAgIGlmIChwYWdlKSB7CiAgICAgICAg
IGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0xheW91dFVwZGF0ZWQodGhpcyk7CiAgICAgfQpAQCAtMjQ4MSw3ICsyNDkzLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFnZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnNwZWN0b3JDbGllbnQtPmRpZFJlc2l6ZU1haW5GcmFtZShtX2ZyYW1lLmdl
dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmVzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheW91dE1pbGVzdG9u
ZXNfaAorI2RlZmluZSBMYXlvdXRNaWxlc3RvbmVzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitlbnVtIExheW91dE1pbGVzdG9uZUZsYWcgeworICAgIERpZEZpcnN0TGF5b3V0ID0gMSA8PCAw
LAorICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKKyAgICBEaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyCit9OworCit0
eXBlZGVmIHVuc2lnbmVkIExheW91dE1pbGVzdG9uZXM7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIExheW91dE1pbGVzdG9uZXNfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFn
ZUNsaWVudHMpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSkKICNlbmRpZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyAgICAsIG1fbGF5b3V0TWlsZXN0
b25lcygwKQogICAgICwgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKGZhbHNl
KQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNQYWludGluZyhmYWxzZSkKQEAgLTEwNTQsMjUg
KzEwNTUsMTkgQEAgUGFnZVZpc2liaWxpdHlTdGF0ZSBQYWdlOjp2aXNpYmlsaXR5U3RhdAogfQog
I2VuZGlmCiAKLS8vIEZJWE1FOiBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgaXMgbm8g
bG9uZ2VyIHVzZWQgZm9yIGNhbGN1bGF0aW5nIHJlbGV2YW50IHJlcGFpbnRlZCBhcmVhcywKLS8v
IGFuZCBpdCBzaG91bGQgYmUgcmVtb3ZlZC4gRm9yIHRoZSB0aW1lIGJlaW5nLCBpdCBpcyB1c2Vm
dWwgYmVjYXVzZSBpdCBhbGxvd3MgdXMgdG8gYXZvaWQgZG9pbmcKLS8vIGFueSBvZiB0aGlzIHdv
cmsgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgbWFrZSBzdXJlIG9mIGRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dC4gV2Ugc2hvdWxkCi0vLyByZW1vdmUgdGhpcyB3aGVuIHdlIHJlc29sdmUg
PHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCAKLS8vIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQK
LXN0YXRpYyB1aW50NjRfdCBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPSAwOwordm9p
ZCBQYWdlOjphZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykK
K3sKKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgd2FudCBhIGZ1bmN0aW9uIHRoYXQgcmVw
bGFjZXMgbV9sYXlvdXRNaWxlc3RvbmVzIGluc3RlYWQgb2YganVzdCBhZGRpbmcgdG8gaXQuCisg
ICAgbV9sYXlvdXRNaWxlc3RvbmVzIHw9IG1pbGVzdG9uZXM7Cit9CiAKIC8vIFRoZXNlIGFyZSBt
YWdpY2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGlj
IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgZG91YmxlIGdN
YXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKIAotdm9pZCBQYWdlOjpzZXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKHVpbnQ2NF90IHRocmVzaG9sZCkKLXsK
LSAgICBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7Ci19Ci0KIGJv
b2wgUGFnZTo6aXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyAmJiBnUGFpbnRl
ZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPiAwOworICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHMgJiYgKG1fbGF5b3V0TWlsZXN0b25lcyAmIERpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogfQogCiB2b2lkIFBhZ2U6OnN0YXJ0
Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKQpAQCAtMTEyNiw3ICsxMTIxLDcgQEAg
dm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZQogICAgICAgICBtX2lzQ291
bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxl
dmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZExh
eW91dChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKTsKICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisjaW5j
bHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5j
bHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRpb24uaCIKQEAg
LTMxNSw4ICszMTYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKKyAg
ICAgICAgdm9pZCBhZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25l
cyk7CisgICAgICAgIExheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5b3V0TWlsZXN0b25lczsgfQorCiAgICAgICAgIGJvb2wgaXNDb3VudGluZ1Jl
bGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQodWludDY0X3QpOwogICAgICAgICB2b2lk
IHN0YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKICAgICAgICAgdm9pZCBy
ZXNldFJlbGV2YW50UGFpbnRlZE9iamVjdENvdW50ZXIoKTsKICAgICAgICAgdm9pZCBhZGRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0JiBvYmpl
Y3RQYWludFJlY3QpOwpAQCAtNDI5LDYgKzQzMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKIAorICAgICAgICBM
YXlvdXRNaWxlc3RvbmVzIG1fbGF5b3V0TWlsZXN0b25lczsKKwogICAgICAgICBIYXNoU2V0PFJl
bmRlck9iamVjdCo+IG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3RzOwogICAgICAgICBS
ZWdpb24gbV9yZWxldmFudFBhaW50ZWRSZWdpb247CiAgICAgICAgIFJlZ2lvbiBtX3JlbGV2YW50
VW5wYWludGVkUmVnaW9uOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjMyKQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisy
MDEyLTA5LTA1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0
byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5n
LQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBBUEkgaGFzIHR3byBwYXJ0cy4g
Rmlyc3QsIHRoZSBjbGllbnQgaGFzIHRvIG9wdCBpbnRvIHdoaWNoIAorICAgICAgICBsYXlvdXQg
bWlsZXN0b25lcyB0aGV5IGFyZSBpbnRlcmVzdGVkIGluIGhlYXJpbmcgYWJvdXQgdXNpbmcgCisg
ICAgICAgIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMgb3IgCisgICAgICAgIFdLQnVu
ZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoKS4gVGhlbiwgV2ViS2l0IHdpbGwgY2Fs
bCAKKyAgICAgICAgdGhlIGRpZExheW91dChXS0xheW91dE1pbGVzdG9uZXMpIGNhbGxiYWNrIG9u
IHRoZSBhcHByb3ByaWF0ZSAKKyAgICAgICAgY2xpZW50cyB3aGVuIHRoZSBzcGVjaWZpZWQgbGF5
b3V0IG1pbGVzdG9uZXMgaGF2ZSBmaXJlZC4gZGlkTGF5b3V0IAorICAgICAgICB0YWtlcyB0aGUg
V0tMYXlvdXRNaWxlc3RvbmVzIGJpdCBtYXNrLCB3aGljaCB3aWxsIGluZGljYXRlIHdoaWNoIAor
ICAgICAgICBtaWxlc3RvbmVzIGhhdmUgZmlyZWQgc2luY2UgaXQgaXMgcG9zc2libGUgZm9yIHR3
byB0byBmaXJlIGF0IHRoZSAKKyAgICAgICAgc2FtZSB0aW1lLgorCisgICAgICAgIERlZmluZSBX
S0xheW91dE1pbGVzdG9uZU9wdGlvbnMuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGFnZUxv
YWRUeXBlcy5oOgorCisgICAgICAgIERlZmluZSBjb252ZXJzaW9ucyBiZXR3ZWVuIFdLTGF5b3V0
TWlsZXN0b25lT3B0aW9ucyBhbmQgCisgICAgICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZU9w
dGlvbnMKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAg
IChXZWJLaXQ6OnRvV0tMYXlvdXRNaWxlc3RvbmVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OnRvTGF5b3V0TWlsZXN0b25lT3B0aW9ucyk6CisKKyAgICAgICAg
TmV3IEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAg
KFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRMYXlvdXQpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJMb2FkZXJDbGllbnQpOgorCisgICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUsIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lLCAKKyAgICAgICAgYW5kIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhcmUgbm93IGltcGxlbWVudGVkIHdpdGggCisg
ICAgICAgIGRpZExheW91dCB1bmRlciB0aGUgaG9vZC4gU28gaWYgdGhvc2Ugb2xkIGNhbGxiYWNr
cyBoYXZlIGJlZW4gCisgICAgICAgIGRlZmluZWQsIGJlIHN1cmUgdG8gYWRkIHRoZSBhcHByb3By
aWF0ZSBsYXlvdXQgbWlsZXN0b25lcyBoZXJlIGZvciAKKyAgICAgICAgYmFja3dhcmRzLWNvbXBh
dGliaWxpdHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUxvYWRlckNsaWVudCk6CisKKyAgICAg
ICAgTmV3IEFQSS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkTGF5b3V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgTmV3IEFQSS4gQW5kIHJlbW92ZSB0aGUgbm93LXVu
bmVjZXNzYXJ5IAorICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50ZXJU
aHJlc2hvbGQuIAorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1pbGVz
dG9uZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VQcml2YXRlLmg6CisKKyAgICAgICAgTmV3IEFQSS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkTGF5b3V0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KToKKworICAg
ICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGV5IGFyZSBub3cgcmVwbGFjZWQgCisgICAg
ICAgIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIGRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUsIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lLCAK
KyAgICAgICAgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhcmUgbm93IGlt
cGxlbWVudGVkIHdpdGggCisgICAgICAgIGRpZExheW91dCB1bmRlciB0aGUgaG9vZC4gU28gaWYg
dGhvc2Ugb2xkIGNhbGxiYWNrcyBoYXZlIGJlZW4gCisgICAgICAgIGRlZmluZWQsIGJlIHN1cmUg
dG8gYWRkIHRoZSBhcHByb3ByaWF0ZSBsYXlvdXQgbWlsZXN0b25lcyBoZXJlIGZvciAKKyAgICAg
ICAgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0KToKKworICAgICAgICBDYWxs
IGludG8gV2ViQ29yZSB0byBzZXQgdGhlIGxheW91dCBtaWxlc3RvbmVzLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWNjb3Vu
dCBmb3IgdGhlIG5ldyBtZW1iZXIgb2YgUGFnZUxvYWRDbGllbnQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRCdWls
dGluQnVuZGxlUGFnZTo6UXRCdWlsdGluQnVuZGxlUGFnZSk6CisKIDIwMTItMDktMDUgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSB2aXNp
dGVkIGxpbmsgdHJhY2tpbmcgd29yayBpbiBtdWx0aS1wcm9jZXNzIG1vZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHJldmlzaW9uIDEy
NzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50
MzJfdCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlOwogCitlbnVtIHsKKyAgICBrV0tEaWRG
aXJzdExheW91dCA9IDEgPDwgMCwKKyAgICBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgPSAxIDw8IDEsCisgICAga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZCA9IDEgPDwgMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tMYXlvdXRNaWxlc3RvbmVz
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMTI3NjE0KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNpbmNsdWRl
IDx3dGYvVHlwZVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0OCw2ICs3NDks
MzQgQEAgaW5saW5lIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdG9BUAogICAgIHJldHVy
biB3a1R5cGU7CiB9CiAKK2lubGluZSBXS0xheW91dE1pbGVzdG9uZXMgdG9XS0xheW91dE1pbGVz
dG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQoreworICAgIHVuc2ln
bmVkIHdrTWlsZXN0b25lcyA9IDA7CisKKyAgICBpZiAobWlsZXN0b25lcyAmIFdlYkNvcmU6OkRp
ZEZpcnN0TGF5b3V0KQorICAgICAgICB3a01pbGVzdG9uZXMgfD0ga1dLRGlkRmlyc3RMYXlvdXQ7
CisgICAgaWYgKG1pbGVzdG9uZXMgJiBXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQpCisgICAgICAgIHdrTWlsZXN0b25lcyB8PSBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQ7CisgICAgaWYgKG1pbGVzdG9uZXMgJiBXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKQorICAgICAgICB3a01pbGVzdG9uZXMgfD0ga1dL
RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDsKKyAgICAKKyAgICBy
ZXR1cm4gd2tNaWxlc3RvbmVzOworfQorCitpbmxpbmUgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
cyB0b0xheW91dE1pbGVzdG9uZXMoV0tMYXlvdXRNaWxlc3RvbmVzIHdrTWlsZXN0b25lcykKK3sK
KyAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMgPSAwOworCisgICAgaWYg
KHdrTWlsZXN0b25lcyAmIGtXS0RpZEZpcnN0TGF5b3V0KQorICAgICAgICBtaWxlc3RvbmVzIHw9
IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0OworICAgIGlmICh3a01pbGVzdG9uZXMgJiBrV0tEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCisgICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29y
ZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIGlmICh3a01pbGVzdG9uZXMg
JiBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKQorICAgICAg
ICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGQ7CisgICAgCisgICAgcmV0dXJuIG1pbGVzdG9uZXM7Cit9CisKIGlubGluZSBJ
bWFnZU9wdGlvbnMgdG9JbWFnZU9wdGlvbnMoV0tJbWFnZU9wdGlvbnMgd2tJbWFnZU9wdGlvbnMp
CiB7CiAgICAgdW5zaWduZWQgaW1hZ2VPcHRpb25zID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM2LDYgKzEzNiwxNCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTmV3Rmlyc3RW
aXN1YWxsCiAgICAgbV9jbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRv
QVBJKHBhZ2UpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2
b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkTGF5b3V0KFdlYlBhZ2VQcm94eSogcGFnZSwgTGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzLCBBUElPYmplY3QqIHVzZXJEYXRhKQoreworICAgIGlmICgh
bV9jbGllbnQuZGlkTGF5b3V0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRM
YXlvdXQodG9BUEkocGFnZSksIHRvV0tMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB2b2lkIFdlYkxvYWRlckNs
aWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2Ns
aWVudC5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTGF5b3V0TWlsZXN0b25lcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTgwLDkgKzgxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyosIEFQSU9iamVj
dCopOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUgYW5kIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQg
YmUgbWVyZ2VkLgotICAgIC8vIFRoZSBvbmx5IHJlYXNvbiBmb3IgYm90aCB0byBleGlzdCBpcyB0
byBleHBlcmltZW50IHdpdGggZGlmZmVyZW50IGhldXJpc3RpY3MgZm9yIHRoZSB0aW1lIGJlaW5n
LgorICAgIC8vIEZJWE1FOiBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxk
IGJlIHJlbW92ZWQuIFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgIC8vIGFzIHdlbGwuIFRoZXkgYXJlIGJvdGggYmVp
bmcgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0KFdlYlBhZ2VQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkTGF5
b3V0KFdlYlBhZ2VQcm94eSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMsIEFQSU9iamVjdCop
OwogICAgIAogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUlu
RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYlByb3RlY3Rpb25TcGFjZSop
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSop
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bml0aWFsaXplTG9hZGVyQ2xpZW4KICAgICBpZiAoIWxvYWRDbGllbnQpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5k
IHRyYW5zaXRpb24gYWxsIGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKKyAg
ICAvLyBkaWRGaXJzdExheW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEluRnJhbWUuIEluIHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZAorICAgIC8vIGZv
ciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVz
IG1pbGVzdG9uZXMgPSAwOworICAgIGlmIChsb2FkQ2xpZW50LT5kaWRGaXJzdExheW91dEZvckZy
YW1lKQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0OworICAg
IGlmIChsb2FkQ2xpZW50LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkK
KyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQ7CisgICAgaWYgKGxvYWRDbGllbnQtPmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCkKKyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOworCisgICAgaWYgKG1pbGVzdG9uZXMpCisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdlSUQpOworCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRXaWxsR29Ub0JhY2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxlZChs
b2FkQ2xpZW50LT52ZXJzaW9uID4gMCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTUwMiw2ICsxNTE2
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY28KICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwg
bV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyhXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCit7CisgICAgaWYgKCFp
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdl
SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6
UGFnaW5hdGlvbjo6TW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IG1fcGFnaW5hdGlvbk1v
ZGUpCkBAIC0yMTQyLDYgKzIxNjQsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5ld0ZpcnN0
VmlzdWFsbHlObwogICAgIG1fbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCh0aGlzLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRMYXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcywgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9w
cm9jZXNzLmdldCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVy
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXJDbGllbnQuZGlkTGF5b3V0KHRoaXMs
IHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCB1c2VyRGF0
YS5nZXQoKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVy
YXJjaHkodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVu
dHMpCiB7CiAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw2
ICs0ODMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml4
ZWRMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9maXhlZExheW91dFNpemU7IH07CiAKKyAg
ICB2b2lkIGxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
cyk7CisKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBt
X21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXI7IH0KICAgICBib29sIGhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJh
cjsgfQogCkBAIC03NTUsNiArNzU3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAg
ICB2b2lkIGRpZExheW91dCh1aW50MzJfdCBsYXlvdXRNaWxlc3RvbmVzLCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50
NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEp
CiAgICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkK
ICAgICBEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRMYXlvdXQodWludDMyX3Qg
dHlwZSwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkK
ICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyB1cmwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIgdXNlckRhdGEpCiAgICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyB1cmwsIFdURjo6U3RyaW5nIHVucmVhY2hhYmxlVVJM
LCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDEy
NzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDExIEBAIFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNp
emUoV0tQYWdlUmVmIHAKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5maXhlZExh
eW91dFNpemUoKSk7CiB9CiAKK3ZvaWQgV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCit7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5saXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHRvTGF5b3V0TWlsZXN0
b25lcyhtaWxlc3RvbmVzKSk7Cit9CisKIGJvb2wgV0tQYWdlSGFzSG9yaXpvbnRhbFNjcm9sbGJh
cihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5oYXNI
b3Jpem9udGFsU2Nyb2xsYmFyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgdHlwZWRlZiB2
b2lkICgqV0tQYWdlV2lsbEdvVG9CYWNrRm9yd2FyZAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUGx1
Z2luRGlkRmFpbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tFcnJvckNvZGUgZXJyb3JDb2Rl
LCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgV0tTdHJpbmdSZWYgcGx1Z2luSWRlbnRpZmllciwgV0tT
dHJpbmdSZWYgcGx1Z2luVmVyc2lvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnQsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1Bh
Z2VSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlSW5mbywgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLUGFnZURpZExheW91dENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tMYXlvdXRNaWxlc3Rv
bmVzIG1pbGVzdG9uZXMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiAKIC8vIERlcHJlY2F0ZWQKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZEZhaWxUb0luaXRp
YWxpemVQbHVnaW5DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtMTE1
LDcgKzExNiw4IEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZlcnNpb24g
MQogICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAKLSAgICAvLyBGSVhNRTog
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgYW5kIGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCBzaG91bGQgYmUgbWVyZ2VkLgorICAgIC8vIEZJWE1FOiBkaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIHJlbW92ZWQuIFdlIHNob3Vs
ZCBjb25zaWRlciByZW1vdmluZyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFt
ZQorICAgIC8vIGFzIHdlbGwuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgaXMgcmVwbGFjZWQgYnkgZGlk
TGF5b3V0LgogICAgIFdLUGFnZURpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
OwogCiAgICAgV0tQYWdlV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CkBAIC0xMjYs
NiArMTI4LDggQEAgc3RydWN0IFdLUGFnZUxvYWRlckNsaWVudCB7CiAgICAgLy8gVmVyc2lvbiAy
CiAgICAgV0tQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWU7CiAgICAgV0tQYWdlUmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZTsKKworICAgIFdLUGFnZURpZExheW91dENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTGF5
b3V0OwogfTsKIHR5cGVkZWYgc3RydWN0IFdLUGFnZUxvYWRlckNsaWVudCBXS1BhZ2VMb2FkZXJD
bGllbnQ7CiAKQEAgLTQxOSw2ICs0MjMsOCBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRGaXhl
ZExheW91dFNpemUoCiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VVc2VGaXhlZExheW91dChXS1BhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tTaXplIFdLUGFnZUZpeGVkTGF5b3V0U2l6ZShXS1BhZ2VS
ZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9u
ZXMoV0tQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKTsKKwogV0tf
RVhQT1JUIGJvb2wgV0tQYWdlSGFzSG9yaXpvbnRhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFnZSk7
CiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VIYXNWZXJ0aWNhbFNjcm9sbGJhcihXS1BhZ2VSZWYgcGFn
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU0LDcgKzI1NCwxNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKICAgICBtX2Ns
aWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQodG9BUEkocGFnZSksICZ1c2Vy
RGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJl
Zih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKLX0gICAgCit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRMYXlvdXQoV2ViUGFnZSogcGFnZSwgTGF5b3V0TWlsZXN0
b25lcyBtaWxlc3RvbmVzLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit7CisgICAgaWYg
KCFtX2NsaWVudC5kaWRMYXlvdXQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1
c2VyRGF0YVRvUGFzcyA9IDA7CisgICAgbV9jbGllbnQuZGlkTGF5b3V0KHRvQVBJKHBhZ2UpLCB0
b1dLTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRv
UGFzcykpOworfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWls
ZXN0b25lcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVj
dD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSopOwogICAgIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYlBh
Z2UqLCBXVEY6OlJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRMYXlv
dXQoV2ViUGFnZSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMsIFJlZlB0cjxBUElPYmplY3Q+
JiB1c2VyRGF0YSk7CiAKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2Vi
UGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgdm9pZCBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDExIEBAIGRvdWJsZSBXS0J1bmRsZVBh
Z2VHZXRCYWNraW5nU2NhbGVGYWN0b3IKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxl
c3RvbmVzKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25l
cyh0b0xheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcykpOworfQorCiB2b2lkIFdLQnVuZGxlUGFn
ZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQpAQCAtMzY3LDExICszNzIsNiBAQCBXS1JlbmRlckxheWVyUmVmIFdL
QnVuZGxlUGFnZUNvcHlSZW5kZXJMCiAgICAgcmV0dXJuIHRvQVBJKFdlYlJlbmRlckxheWVyOjpj
cmVhdGUodG9JbXBsKHBhZ2VSZWYpKS5sZWFrUmVmKCkpOwogfQogCi12b2lkIFdLQnVuZGxlUGFn
ZVNldFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
dWludDY0X3QgdGhyZXNob2xkKQotewotICAgIHRvSW1wbChwYWdlKS0+c2V0UGFpbnRlZE9iamVj
dHNDb3VudGVyVGhyZXNob2xkKHRocmVzaG9sZCk7Ci19Ci0KIHZvaWQgV0tCdW5kbGVQYWdlU2V0
VHJhY2tzUmVwYWludHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgdHJhY2tSZXBhaW50
cykKIHsKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFRyYWNrc1JlcGFpbnRzKHRyYWNrUmVwYWlu
dHMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiAxMjc2MTQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgdHlwZWRlZiB2b2lkICgq
V0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbAogdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hv
dWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkxDYWxsYmFjaykoV0tCdW5kbGVQYWdl
UmVmLCBXS1N0cmluZ1JlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUludGVudFJl
cXVlc3RSZWYgaW50ZW50UmVxdWVzdCwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZWdpc3RlckludGVudFNl
cnZpY2VGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSwgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlSW5mbywgV0tUeXBlUmVm
KiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1
bmRsZVBhZ2VEaWRMYXlvdXRDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTE1Myw2ICsxNTQsOCBAQCBzdHJ1Y3QgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDMKICAgICBXS0J1bmRsZVBhZ2VEaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRSZWNlaXZlSW50ZW50Rm9yRnJhbWU7CiAgICAgV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbnRl
bnRTZXJ2aWNlRm9yRnJhbWU7CisKKyAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMYXlvdXQ7CiB9Owog
dHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDsKIApAQCAtNDEwLDYgKzQxMyw4IEBAIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLQnVu
ZGxlUGFnZUNyZWF0ZVMKIAogV0tfRVhQT1JUIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5n
U2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcyk7CisKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnQpOwogCiAjaWYgZGVmaW5lZChF
TkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFCTEVfSU5TUEVDVE9SCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDkgKzU4LDYgQEAgV0tfRVhQT1JUIHVpbnQ2NF90IFdL
QnVuZGxlUGFnZUdldFJlbmRlcgogV0tfRVhQT1JUIFdLUmVuZGVyT2JqZWN0UmVmIFdLQnVuZGxl
UGFnZUNvcHlSZW5kZXJUcmVlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCBXS1Jl
bmRlckxheWVyUmVmIFdLQnVuZGxlUGFnZUNvcHlSZW5kZXJMYXllclRyZWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UpOwogCi0vLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIFVsdGltYXRlbHkgV2Vi
S2l0IHNob3VsZCBjaG9vc2UgdGhlIHRocmVzaG9sZCBpdHNlbGYuCi1XS19FWFBPUlQgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIHVpbnQ2NF90IHRocmVzaG9sZCk7Ci0KIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldFRyYWNrc1JlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBib29sIHRyYWNrUmVw
YWludHMpOwogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSXNUcmFja2luZ1JlcGFpbnRzKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVJlc2V0VHJh
Y2tlZFJlcGFpbnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmkKICAgICAgICAgbG9hZExpc3RlbmVyLT5kaWRGaW5pc2hMb2FkKG1fZnJhbWUp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0
KCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcykKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTU1Miw0OSArNTUyLDM4IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKIAogICAgIFJlZlB0cjxBUElPYmplY3Q+
IHVzZXJEYXRhOwogCi0gICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh3
ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7Ci0KLSAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vz
cy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKLQotICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUt
PnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgJiYgIXdlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdz
KCktPnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZygpKQotICAgICAgICB3ZWJQYWdlLT5k
cmF3aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKyAgICB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZExheW91dCh3ZWJQYWdlLCBtaWxl
c3RvbmVzLCB1c2VyRGF0YSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRMYXlvdXQobWlsZXN0b25lcywgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAKKyAgICBpZiAobWlsZXN0b25lcyAmIERpZEZpcnN0TGF5
b3V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhl
IG9sZCBkaWRGaXJzdExheW91dCBBUEkgc2luY2UgdGhpcyBpcyBkb2luZyBkb3VibGUgZHV0eSB3
aXRoIHRoZQorICAgICAgICAvLyBuZXcgZGlkTGF5b3V0IEFQSS4KKyAgICAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJzdExheW91dEZvckZyYW1lKHdlYlBh
Z2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKyAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRGaXJzdExheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisKKyAg
ICAgICAgaWYgKG1fZnJhbWUgPT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSkgewor
ICAgICAgICAgICAgaWYgKCF3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zdXBwcmVz
c2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSkKKyAgICAgICAgICAgICAgICB3ZWJQYWdlLT5kcmF3
aW5nQXJlYSgpLT5zZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNlKTsKKyAgICAgICAgfQor
ICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIC8vIE1ha2Ugc3VyZSB2aWV3
cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIGZyYW1lIGJ5IHRoZSB0
aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KLSAgICBBU1NFUlQoIXdlYlBhZ2UtPnVzZUZp
eGVkTGF5b3V0KCkgfHwgbV9mcmFtZSAhPSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJGcmFtZSgp
IHx8IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5kaWREaXNwYXRjaFZpZXdwb3J0
UHJvcGVydGllc0NoYW5nZWQoKSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBwcm9w
ZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRoZSBtYWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRoZSBm
aXJzdCBsYXlvdXQgaGFwcGVucy4KKyAgICAgICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhlZExh
eW91dCgpIHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSB8fCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3Bl
cnRpZXNDaGFuZ2VkKCkpOwogI2VuZGlmCi19Ci0KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7Ci0KLSAgICAvLyBOb3Rp
ZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBt
X2ZyYW1lLCB1c2VyRGF0YSk7Ci0KLSAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsK
LSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghd2ViUGFn
ZSkKLSAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJE
YXRhOworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIG9s
ZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBBUEkgc2luY2UgdGhpcyBp
cyBkb2luZworICAgICAgICAvLyBkb3VibGUgZHV0eSB3aXRoIHRoZSBuZXcgZGlkTGF5b3V0IEFQ
SS4KKyAgICAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0
YSk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB9CiAK
LSAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVMb2FkZXJDbGllbnQoKS5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQod2Vi
UGFnZSwgdXNlckRhdGEpOwotICAgIAotICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRP
YmplY3RzQXJlYVRocmVzaG9sZCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gZ28gYXdh
eSB3aGVuIHdlIHJlbW92ZSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuCisgICAg
ICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KHdlYlBhZ2UsIHVzZXJEYXRhKTsKKyAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7
CisgICAgfQogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91
dCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjc2MTQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDkgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRMYXlvdXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUq
IGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgT1ZF
UlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Nyw2ICszOTcsMjAgQEAgdm9p
ZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGbwogCiB2b2lkIFdlYlBhZ2U6Omlu
aXRpYWxpemVJbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQqIGNsaWVudCkKIHsKKyAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2YgdGhp
cyBjb2RlIGFuZCB0cmFuc2l0aW9uIGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBpbnN0
ZWFkIG9mCisgICAgLy8gZGlkRmlyc3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRJbkZyYW1lLiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWlyZWQK
KyAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgTGF5b3V0TWlsZXN0b25l
cyBtaWxlc3RvbmVzID0gMDsKKyAgICBpZiAoY2xpZW50LT5kaWRGaXJzdExheW91dEZvckZyYW1l
KQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0OworICAgIGlm
IChjbGllbnQtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKQorICAgICAg
ICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsK
KyAgICBpZiAoY2xpZW50LT5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCisgICAg
ICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZDsKKworICAgIGlmIChtaWxlc3RvbmVzKQorICAgICAgICBsaXN0ZW5Gb3JM
YXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpOworCiAgICAgbV9sb2FkZXJDbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOwogfQogCkBAIC01NjEsMTMgKzU3NSw2IEBAIHVpbnQ2NF90IFdlYlBhZ2U6
OnJlbmRlclRyZWVTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLT5yZW5kZXJUcmVlU2l6
ZSgpLnRyZWVTaXplOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldFBhaW50ZWRPYmplY3RzQ291bnRl
clRocmVzaG9sZCh1aW50NjRfdCB0aHJlc2hvbGQpCi17Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX3BhZ2UtPnNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50
ZXJUaHJlc2hvbGQodGhyZXNob2xkKTsKLX0KLQogdm9pZCBXZWJQYWdlOjpzZXRUcmFja3NSZXBh
aW50cyhib29sIHRyYWNrUmVwYWludHMpCiB7CiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1h
aW5GcmFtZVZpZXcoKSkKQEAgLTExMjQsNiArMTEzMSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnNldEZp
eGVkTGF5b3V0U2l6ZShjb25zdCBJCiAgICAgICAgIHZpZXctPmZvcmNlTGF5b3V0KCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh1aW50MzJfdCBtaWxlc3Rv
bmVzKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2Ut
PmFkZExheW91dE1pbGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obWlsZXN0
b25lcykpOworfQorCiB2b2lkIFdlYlBhZ2U6OnNldFBhZ2luYXRpb25Nb2RlKHVpbnQzMl90IG1v
ZGUpCiB7CiAgICAgUGFnaW5hdGlvbiBwYWdpbmF0aW9uID0gbV9wYWdlLT5wYWdpbmF0aW9uKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJl
dmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMsNiBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAgICB1aW50
NjRfdCByZW5kZXJUcmVlU2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UGFpbnRlZE9iamVjdHND
b3VudGVyVGhyZXNob2xkKHVpbnQ2NF90KTsKIAogICAgIHZvaWQgc2V0VHJhY2tzUmVwYWludHMo
Ym9vbCk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdDsKQEAgLTMwOSw2ICsz
MDgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlRml4ZWRMYXlvdXQ7IH0KICAgICB2b2lkIHNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CiAKKyAgICB2b2lkIGxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMo
dWludDMyX3QgLyogTGF5b3V0TWlsZXN0b25lcyAqLyk7CisKICAgICB2b2lkIHNldFBhZ2luYXRp
b25Nb2RlKHVpbnQzMl90IC8qIFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgKi8pOwogICAgIHZv
aWQgc2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sKTsKICAgICB2b2lkIHNldFBh
Z2VMZW5ndGgoZG91YmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAg
IFNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgU2V0Rml4ZWRMYXlvdXRTaXplKFdl
YkNvcmU6OkludFNpemUgc2l6ZSkKIAorICAgIExpc3RlbkZvckxheW91dE1pbGVzdG9uZXModWlu
dDMyX3QgbWlsZXN0b25lcykKKwogICAgIFNldFBhZ2luYXRpb25Nb2RlKHVpbnQzMl90IG1vZGUp
OwogICAgIFNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNv
bHVtbnMpOwogICAgIFNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2Uu
Y3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0
QnVpbHRpbkJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIFF0
QnVpbHRpbkJ1bmRsZVBhZ2U6OlF0QnVpbHRpbkJ1bmRsZVBhZ2UKICAgICAgICAgMCwgLy8gc2hv
dWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKICAgICAgICAgMCwgLy8gZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lCisgICAgICAgIDAsIC8vIGRpZExheW91dAogICAgIH07CiAgICAgV0tCdW5kbGVQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2UsICZsb2FkZXJDbGllbnQpOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc2MzMpCisrKyBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVk
IHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExh
eW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBh
bmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBU
aGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkgZGlzcGF0Y2hE
aWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZExheW91dCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAgIChG
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3Nh
cnkgdG8gb3B0IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVz
dG9uZSIgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjppbml0KToKKwogMjAxMi0wOS0w
NSAgTGVvIFlhbmcgIDxsZW95YW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFJv
dGF0aW9uIGFuZCB0aGVuIHJlbG9hZCBjYXVzZXMgbGVzcyBzaXplZCB3ZWJwYWdlIChQUiAxOTA0
NjkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0NSw2ICs1NDUsOCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpp
bml0KGNvbnN0IFdlYlN0cmluCiAgICAgbV93ZWJTZXR0aW5ncy0+c2V0VXNlckFnZW50U3RyaW5n
KGRlZmF1bHRVc2VyQWdlbnQoKSk7CiAgICAgbV9wYWdlLT5zZXREZXZpY2VTY2FsZUZhY3Rvciht
X3dlYlNldHRpbmdzLT5kZXZpY2VQaXhlbFJhdGlvKCkpOwogCisgICAgbV9wYWdlLT5hZGRMYXlv
dXRNaWxlc3RvbmVzKERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CisKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbV90YXBIaWdobGlnaHQgPSBEZWZhdWx0VGFw
SGlnaGxpZ2h0OjpjcmVhdGUodGhpcyk7CiAgICAgbV9zZWxlY3Rpb25PdmVybGF5ID0gU2VsZWN0
aW9uT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NDgsMzUgKzg0OCwzNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6cG9zdFByCiAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5v
dGlmeUxvYWRQcm9ncmVzcyhtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCktPmVzdGltYXRlZFBy
b2dyZXNzKCkgKiAxMDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWls
ZXN0b25lcykKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgImRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Iik7CisgICAg
aWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpIHsKKyAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLCAiZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQiKTsKIAotICAg
IHJlYWR5VG9SZW5kZXIodHJ1ZSk7CisgICAgICAgIHJlYWR5VG9SZW5kZXIodHJ1ZSk7CiAKLSAg
ICAvLyBGb3IgRnJhbWVMb2FkVHlwZVNhbWUgb3IgRnJhbWVMb2FkVHlwZVN0YW5kYXJkIGxvYWQs
IHRoZSBsYXlvdXQgdGltZXIgY2FuIGJlIGZpcmVkIHdoaWNoIGNhbiBjYWxsCi0gICAgLy8gZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSBhZnRlciB0aGUgbG9hZCBGaW5p
c2hlZCBzdGF0ZSwgaW4gd2hpY2ggY2FzZSB0aGUgd2ViIHBhZ2UKLSAgICAvLyB3aWxsIGhhdmUg
bm8gY2hhbmNlIHRvIHpvb20gdG8gaW5pdGlhbCBzY2FsZS4gU28gd2Ugc2hvdWxkIGdpdmUgaXQg
YSBjaGFuY2UsIG90aGVyd2lzZSB0aGUgc2NhbGUgb2YKLSAgICAvLyB0aGUgd2ViIHBhZ2UgY2Fu
IGJlIGluY29ycmVjdC4KLSAgICBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUgPSBtX2ZyYW1l
LT5sb2FkZXIoKS0+bG9hZFR5cGUoKTsKLSAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bG9hZFN0
YXRlKCkgPT0gV2ViUGFnZVByaXZhdGU6OkZpbmlzaGVkICYmIChmcmFtZUxvYWRUeXBlID09IEZy
YW1lTG9hZFR5cGVTYW1lIHx8IGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVN0YW5kYXJk
KSkKLSAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+c2V0U2hvdWxkWm9vbVRvSW5pdGlhbFNjYWxl
QWZ0ZXJMb2FkRmluaXNoZWQodHJ1ZSk7Ci0KLSAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+c2hv
dWxkWm9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkKCkpIHsKLSAgICAgICAgQmFja2luZ1N0b3JlUHJp
dmF0ZSogYmFja2luZ1N0b3JlUHJpdmF0ZSA9IG1fd2ViUGFnZVByaXZhdGUtPm1fYmFja2luZ1N0
b3JlLT5kOwotICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT56b29tVG9Jbml0aWFsU2NhbGVPbkxv
YWQoKTsgLy8gU2V0IHRoZSBwcm9wZXIgem9vbSBsZXZlbCBmaXJzdC4KLSAgICAgICAgYmFja2lu
Z1N0b3JlUHJpdmF0ZS0+Y2xlYXJWaXNpYmxlWm9vbSgpOyAvLyBDbGVhciB0aGUgdmlzaWJsZSB6
b29tIHNpbmNlIHdlJ3JlIGV4cGxpY2l0bHkgcmVuZGVyaW5nK2JsaXR0aW5nIGJlbG93LgotICAg
ICAgICBpZiAoYmFja2luZ1N0b3JlUHJpdmF0ZS0+cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCkpIHsK
LSAgICAgICAgICAgIGlmICghYmFja2luZ1N0b3JlUHJpdmF0ZS0+c2hvdWxkRGlyZWN0UmVuZGVy
aW5nVG9XaW5kb3coKSkKLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVQcml2YXRlLT5ibGl0
VmlzaWJsZUNvbnRlbnRzKCk7Ci0gICAgICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVu
dC0+bm90aWZ5Q29udGVudFJlbmRlcmVkKGJhY2tpbmdTdG9yZVByaXZhdGUtPnZpc2libGVDb250
ZW50c1JlY3QoKSk7CisgICAgICAgIC8vIEZvciBGcmFtZUxvYWRUeXBlU2FtZSBvciBGcmFtZUxv
YWRUeXBlU3RhbmRhcmQgbG9hZCwgdGhlIGxheW91dCB0aW1lciBjYW4gYmUgZmlyZWQgd2hpY2gg
Y2FuIGNhbGwKKyAgICAgICAgLy8gZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKSBhZnRlciB0aGUgbG9hZCBGaW5pc2hlZCBzdGF0ZSwgaW4gd2hpY2ggY2FzZSB0aGUgd2Vi
IHBhZ2UKKyAgICAgICAgLy8gd2lsbCBoYXZlIG5vIGNoYW5jZSB0byB6b29tIHRvIGluaXRpYWwg
c2NhbGUuIFNvIHdlIHNob3VsZCBnaXZlIGl0IGEgY2hhbmNlLCBvdGhlcndpc2UgdGhlIHNjYWxl
IG9mCisgICAgICAgIC8vIHRoZSB3ZWIgcGFnZSBjYW4gYmUgaW5jb3JyZWN0LgorICAgICAgICBG
cmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+bG9hZFR5cGUo
KTsKKyAgICAgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPmxvYWRTdGF0ZSgpID09IFdlYlBhZ2VQ
cml2YXRlOjpGaW5pc2hlZCAmJiAoZnJhbWVMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlU2FtZSB8
fCBmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCkpCisgICAgICAgICAgICBt
X3dlYlBhZ2VQcml2YXRlLT5zZXRTaG91bGRab29tVG9Jbml0aWFsU2NhbGVBZnRlckxvYWRGaW5p
c2hlZCh0cnVlKTsKKworICAgICAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+c2hvdWxkWm9vbVRv
SW5pdGlhbFNjYWxlT25Mb2FkKCkpIHsKKyAgICAgICAgICAgIEJhY2tpbmdTdG9yZVByaXZhdGUq
IGJhY2tpbmdTdG9yZVByaXZhdGUgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2JhY2tpbmdTdG9yZS0+
ZDsKKyAgICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPnpvb21Ub0luaXRpYWxTY2FsZU9uTG9h
ZCgpOyAvLyBTZXQgdGhlIHByb3BlciB6b29tIGxldmVsIGZpcnN0LgorICAgICAgICAgICAgYmFj
a2luZ1N0b3JlUHJpdmF0ZS0+Y2xlYXJWaXNpYmxlWm9vbSgpOyAvLyBDbGVhciB0aGUgdmlzaWJs
ZSB6b29tIHNpbmNlIHdlJ3JlIGV4cGxpY2l0bHkgcmVuZGVyaW5nK2JsaXR0aW5nIGJlbG93Lgor
ICAgICAgICAgICAgaWYgKGJhY2tpbmdTdG9yZVByaXZhdGUtPnJlbmRlclZpc2libGVDb250ZW50
cygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVQcml2YXRlLT5zaG91bGRE
aXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQorICAgICAgICAgICAgICAgICAgICBiYWNraW5nU3Rv
cmVQcml2YXRlLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CisgICAgICAgICAgICAgICAgbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5vdGlmeUNvbnRlbnRSZW5kZXJlZChiYWNraW5nU3RvcmVQ
cml2YXRlLT52aXNpYmxlQ29udGVudHNSZWN0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfQogCi0gICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5vdGlmeUZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCgpOworICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVu
dC0+bm90aWZ5Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgfQogfQogCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmlj
YXRpb24oKQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAko
cmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4
ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgeyBub3RJbXBsZW1l
bnRlZCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1p
bGVzdG9uZXMpOwogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gMTI3NjMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wOS0wNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Cisg
ICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkx
NjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCisgICAgICAgIGlzIG5v
dyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudElt
cGwpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBh
bnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBzcmMvV2ViSGVscGVyUGx1Z2luSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkhlbHBlclBsdWdpbkltcGw6OmluaXRQYWdlKToKKyAgICAgICAgKiBzcmMvV2ViUGFnZVBvcHVw
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQb3B1cEltcGw6OmluaXRQYWdlKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6V2ViVmlld0ltcGwpOgorCiAyMDEyLTA5LTA1ICBNYXJrIFBpbGdyaW0gIDxwaWxncmlt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBnZXRSZW5kZXJTdHls
ZUZvclN0cmlrZSBmcm9tIFBsYXRmb3JtU3VwcG9ydApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAx
Mjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjEsMTUgKzg2MSwxNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRGCiAgICAgLy8gcHJvdmlzaW9uYWwgbG9hZCBzdWNj
ZWVkcyBvciBmYWlscywgbm90IHRoZSAicmVhbCIgb25lLgogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQog
ewotICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJGcmFtZS0+Y2xp
ZW50KCktPmRpZEZpcnN0TGF5b3V0KG1fd2ViRnJhbWUpOwotfQorICAgIGlmICghbV93ZWJGcmFt
ZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBpZiAo
bV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdExheW91
dCkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZEZpcnN0TGF5b3V0KG1fd2ViRnJh
bWUpOworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KG1fd2ViRnJhbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gMTI3NjE0KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNyw4ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIZWxw
ZXJQbHVnaW5JbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJIZWxwZXJQbHVnaW5JbXBsLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSGVscGVyUGx1Z2luSW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4NCw2ICsxODQsOSBAQCBib29sIFdlYkhlbHBlclBsdWdpbkltcGw6OmluaXRQYWdlKFdl
YktpCiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwogICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CiAKKyAgICB1bnNp
Z25lZCBsYXlvdXRNaWxlc3RvbmVzID0gRGlkRmlyc3RMYXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQ7CisgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0YXRpY19j
YXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKKwogICAgIHdlYlZpZXct
PmNsaWVudCgpLT5pbml0aWFsaXplSGVscGVyUGx1Z2luV2ViRnJhbWUodGhpcyk7CiAKICAgICAv
LyBUaGUgcGFnZSdzIG1haW4gZnJhbWUgd2FzIHNldCBpbiBpbml0aWFsaXplRnJhbWUoKSBhcyBh
IHJlc3VsdCBvZiB0aGUgYWJvdmUgY2FsbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgyLDYgKzE4Miw5IEBAIGJvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQog
ICAgIG1fcGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IobV93ZWJWaWV3LT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldERldmljZVN1cHBvcnRzVG91Y2go
bV93ZWJWaWV3LT5wYWdlKCktPnNldHRpbmdzKCktPmRldmljZVN1cHBvcnRzVG91Y2goKSk7CiAK
KyAgICB1bnNpZ25lZCBsYXlvdXRNaWxlc3RvbmVzID0gRGlkRmlyc3RMYXlvdXQgfCBEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVz
KHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKKwogICAg
IHN0YXRpYyBDb250ZXh0RmVhdHVyZXNDbGllbnQqIHBhZ2VQb3B1cEZlYXR1cmVzQ2xpZW50ID0g
IG5ldyBQYWdlUG9wdXBGZWF0dXJlc0NsaWVudCgpOwogICAgIHByb3ZpZGVDb250ZXh0RmVhdHVy
ZXNUbyhtX3BhZ2UuZ2V0KCksIHBhZ2VQb3B1cEZlYXR1cmVzQ2xpZW50KTsKICAgICBzdGF0aWMg
RnJhbWVMb2FkZXJDbGllbnQqIGVtcHR5RnJhbWVMb2FkZXJDbGllbnQgPSAgbmV3IEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgwLDYgKzQ4MCw5IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiAKIAogICAgIG1fcGFnZS0+c2V0
R3JvdXBOYW1lKHBhZ2VHcm91cE5hbWUpOwogCisgICAgdW5zaWduZWQgbGF5b3V0TWlsZXN0b25l
cyA9IERpZEZpcnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAg
IG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVz
PihsYXlvdXRNaWxlc3RvbmVzKSk7CisKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIHNldFZpc2liaWxpdHlTdGF0ZShtX2NsaWVudC0+
dmlzaWJpbGl0eVN0YXRlKCksIHRydWUpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24g
MTI3NjMzKQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5
NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBh
bmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAt
YW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlz
cGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFj
ZWQgYnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChGcmFtZUxv
YWRlckNsaWVudEVmbCk6CisKKyAgICAgICAgSXQgaXMgbm93IG5lY2Vzc2FyeSB0byBvcHQgaW50
byBnZXR0aW5nIGFueSBvZiB0aGUgCisgICAgICAgICJsYXlvdXQgbWlsZXN0b25lIiBub3RpZmlj
YXRpb25zLgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOgorCiAyMDEyLTA5LTA1ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1vdmUgJys9JyB1c2FnZSBpbiBTdHJpbmcKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjc4LDE0ICs2NzgsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
aWRGaQogICAgIGV3a19mcmFtZV9sb2FkX2RvY3VtZW50X2ZpbmlzaGVkKG1fZnJhbWUpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9u
ZXMgbWlsZXN0b25lcykKIHsKLSAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hl
ZChtX2ZyYW1lKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQotewotICAgIGV3a19mcmFtZV9sb2FkX2ZpcnN0
bGF5b3V0X25vbmVtcHR5X2ZpbmlzaGVkKG1fZnJhbWUpOworICAgIGlmIChtaWxlc3RvbmVzICYg
RGlkRmlyc3RMYXlvdXQpCisgICAgICAgIGV3a19mcmFtZV9sb2FkX2ZpcnN0bGF5b3V0X2Zpbmlz
aGVkKG1fZnJhbWUpOworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KQorICAgICAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25lbXB0eV9m
aW5pc2hlZChtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hTaG93KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDggKzEwNiw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMpOwogCiAgICAgdmlydHVhbCBG
cmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Nyw2ICs3NzcsOSBAQCBzdGF0aWMg
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAKICAgICBwcml2LT5wYWdlU2V0dGlu
Z3MgPSBwcml2LT5wYWdlLT5zZXR0aW5ncygpOwogCisgICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lcyBsYXlvdXRNaWxlc3RvbmVzID0gV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXQgfCBXZWJDb3Jl
OjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgcHJpdi0+cGFnZS0+YWRkTGF5
b3V0TWlsZXN0b25lcyhsYXlvdXRNaWxlc3RvbmVzKTsKKwogICAgIHByaXYtPnZpZXdwb3J0QXJn
dW1lbnRzLndpZHRoID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKICAg
ICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwogICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLmluaXRpYWxTY2Fs
ZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjc2MzMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOS0wNSAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWRO
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCisgICAg
ICAgIGlzIG5vdyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVP
cHRpb25zKQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAg
ICAgICAoRnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3Nhcnkg
dG8gb3B0IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9u
ZSIgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisKIDIwMTItMDktMDUgIEthdXN0dWJoIEF0
cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW0RSVF0gTFRDOjog
TW92ZSBwcmludGluZyByZWxhdGVkIEFQSXMgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJ
bnRlcm5hbHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUxLDE3ICs4NTEsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGaW5pcwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAi
ZG9jdW1lbnQtbG9hZC1maW5pc2hlZCIsIG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91
dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9y
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90aWZ5U3RhdHVzKG1fZnJhbWUsIFdFQktJ
VF9MT0FEX0ZJUlNUX1ZJU1VBTExZX05PTl9FTVBUWV9MQVlPVVQpOworICAgIGlmIChtaWxlc3Rv
bmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQorICAgICAgICBub3RpZnlTdGF0
dXMobV9mcmFtZSwgV0VCS0lUX0xPQURfRklSU1RfVklTVUFMTFlfTk9OX0VNUFRZX0xBWU9VVCk7
CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKTsKIAogICAgICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbiYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAx
Mjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2MTQsNiArMzYxNCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19pbml0KFdlYktpdFcKIAogICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UocGFnZUNs
aWVudHMpOwogCisgICAgcHJpdi0+Y29yZVBhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KTsKKwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAg
ICBpZiAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVk
KCkpIHsKICAgICAgICAgcHJpdi0+Z2VvbG9jYXRpb25DbGllbnRNb2NrID0gYWRvcHRQdHIobmV3
IEdlb2xvY2F0aW9uQ2xpZW50TW9jayk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
Mjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1NSBAQAorMjAxMi0wOS0wNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3
CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFu
ZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1h
bmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgQVBJ
IGhhcyB0d28gcGFydHMuIEZpcnN0LCB0aGUgY2xpZW50IGhhcyB0byBvcHQgaW50byB3aGljaCAK
KyAgICAgICAgbGF5b3V0IG1pbGVzdG9uZXMgdGhleSBhcmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5n
IGFib3V0IHVzaW5nIAorICAgICAgICBbV2ViVmlldyBfbGF5b3V0TWlsZXN0b25lc10uIFRoZW4s
IFdlYktpdCB3aWxsIGNhbGwgCisgICAgICAgIHRoZSBXZWJGcmFtZUxvYWRlciBkZWxlZ2F0ZSdz
IGRpZExheW91dChXZWJMYXlvdXRNaWxlc3RvbmVzKSAKKyAgICAgICAgY2FsbGJhY2sgd2hlbiB0
aGUgc3BlY2lmaWVkIGxheW91dCBtaWxlc3RvbmVzIGhhdmUgZmlyZWQuIAorICAgICAgICBkaWRM
YXlvdXQgdGFrZXMgdGhlIFdlYkxheW91dE1pbGVzdG9uZXMgYml0IG1hc2ssIHdoaWNoIHdpbGwg
CisgICAgICAgIGluZGljYXRlIHdoaWNoIG1pbGVzdG9uZXMgaGF2ZSBmaXJlZCBzaW5jZSBpdCBp
cyBwb3NzaWJsZSBmb3IgdHdvIAorICAgICAgICB0byBmaXJlIGF0IHRoZSBzYW1lIHRpbWUuCisK
KyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRj
aERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhleSBhcmUgbm93IHJlcGxhY2VkIAor
ICAgICAgICBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKQorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlv
dXQpOgorCisgICAgICAgIEFkZCBuZXcgZnVuY3Rpb24gdG8gdGhlIGRlbGVnYXRlIGZvciBkaWRM
YXlvdXQuCisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
Zy5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKToK
KworICAgICAgICBXZSBuZWVkIGEgZGVsZWdhdGUgdGVtcGxhdGUgdGhhdCB0YWtlcyBhbiBOU1VJ
bnRlZ2VyLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hp
bmcubW06CisgICAgICAgIChDYWxsRGVsZWdhdGUpOgorICAgICAgICAoQ2FsbEZyYW1lTG9hZERl
bGVnYXRlKToKKworICAgICAgICBDb252ZXJ0IGJldHdlZW4gV2ViQ29yZSBhbmQgV2ViS2l0IHZl
cnNpb25zIG9mIHRoZSBiaXQgbWFzay4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgIChjb3JlTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChraXRMYXlvdXRNaWxlc3Rv
bmVzKToKKworICAgICAgICBBZGQgbmV3IGRlbGVnYXRlLCBhbmQgc2V0IHRoZSBhcHByb3ByaWF0
ZSBsYXlvdXQgbWlsZXN0b25lcyBpbiAKKyAgICAgICAgV2ViQ29yZSBiYXNlZCBvbiBvbGQgZGVs
ZWdhdGVzIGhhdmluZyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hl
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKworICAgICAgICBDYWxsIGludG8g
V2ViQ29yZS4KKyAgICAgICAgKC1bV2ViVmlldyBfbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lczpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfbGF5b3V0TWlsZXN0b25lc10pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oOgorCiAyMDEyLTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRlZCAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllci5oPi4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4
LDggKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFn
ZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJl
dmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsMjkgKzY2MiwzNiBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpCiAgICAgW21fd2ViRnJhbWUt
Pl9wcml2YXRlLT5pbnRlcm5hbExvYWREZWxlZ2F0ZSB3ZWJGcmFtZTptX3dlYkZyYW1lLmdldCgp
IGRpZEZpbmlzaExvYWRXaXRoRXJyb3I6bmlsXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2Vi
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBX
ZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7Ci0gICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYykKLSAgICAgICAg
Q2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZy
YW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1l
OiksIG1fd2ViRnJhbWUuZ2V0KCkpOwotICAgIAotICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4KLSAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgKnNjcm9sbFZpZXcgPSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Ny
b2xsVmlld107Ci0gICAgaWYgKFtnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpIGRyYXdzQmFj
a2dyb3VuZF0pCi0gICAgICAgIFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpZRVNdOwor
CisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkTGF5b3V0RnVuYykKKyAgICAgICAgQ2FsbEZy
YW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkTGF5b3V0RnVuYywgd2ViVmlldywg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkTGF5b3V0OiksIGtpdExheW91dE1pbGVzdG9uZXMobWlsZXN0
b25lcykpOworCisgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdExheW91dCkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZSBvbGQgZGlkRmlyc3RM
YXlvdXQgQVBJIHNpbmNlIHRoaXMgaXMgZG9pbmcgZG91YmxlIGR1dHkgd2l0aCB0aGUKKyAgICAg
ICAgLy8gbmV3IGRpZExheW91dCBBUEkuCisgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMpCisgICAgICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBA
c2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQo
KSk7CisKKyAgICAgICAgLy8gU2VlIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExv
YWRTdGFydGVkLgorICAgICAgICBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgKnNjcm9sbFZpZXcg
PSBbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBfc2Nyb2xsVmlld107CisgICAg
ICAgIGlmIChbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSBkcmF3c0JhY2tncm91bmRdKQor
ICAgICAgICAgICAgW3Njcm9sbFZpZXcgc2V0RHJhd3NCYWNrZ3JvdW5kOllFU107CiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgW3Njcm9sbFZpZXcgc2V0
VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpY107Ci0g
ICAgW3Njcm9sbFZpZXcgc2V0SG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFz
dGljaXR5QXV0b21hdGljXTsKKyAgICAgICAgW3Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxF
bGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1dG9tYXRpY107CisgICAgICAgIFtzY3JvbGxW
aWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1dG9t
YXRpY107CiAjZW5kaWYKLX0KKyAgICB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKLSAgICBXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRG
cmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKLSAgICBpZiAoaW1wbGVt
ZW50YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYykKLSAg
ICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQo
KSk7CisgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQp
IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyB0aGUgb2xk
IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIEFQSSBzaW5jZSB0aGlzIGlz
IGRvaW5nCisgICAgICAgIC8vIGRvdWJsZSBkdXR5IHdpdGggdGhlIG5ldyBkaWRMYXlvdXQgQVBJ
LgorICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRJbkZyYW1lRnVuYykKKyAgICAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBs
ZW1lbnRhdGlvbnMtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJ
bkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOworICAgIH0KIH0KIAogRnJhbWUqIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRp
b25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVGdW5jOwogICAg
IElNUCBkaWRGaXJzdExheW91dEluRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKKyAgICBJTVAgZGlkTGF5b3V0RnVuYzsKICAgICBJ
TVAgZGlkUmVjZWl2ZUljb25Gb3JGcmFtZUZ1bmM7CiAgICAgSU1QIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7
CkBAIC0xMjMsNiArMTI0LDcgQEAgQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4o
Qk9PTAogQk9PTCBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgV2ViVmlldyAq
LCBTRUwsIGlkLCBCT09MLCBpZCk7CiAKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAsIFdl
YlZpZXcgKiwgU0VMKTsKK2lkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwg
U0VMLCBOU1VJbnRlZ2VyKTsKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcg
KiwgU0VMLCBpZCk7CiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNF
TCwgaWQsIGlkKTsKIGlkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VM
LCBpZCwgaWQsIGlkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQkocmV2aXNpb24g
MTI3NjE0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVu
dGF0aW9uQ2FjaGluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDYgKzI0OCwxOCBAQCBzdGF0
aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1wbGVtCiAgICAgcmV0dXJuIG5pbDsKIH0K
IAorc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJW
aWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGludGVnZXIp
Cit7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBAdHJ5IHsK
KyAgICAgICAgcmV0dXJuIGltcGxlbWVudGF0aW9uKGRlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwg
aW50ZWdlcik7CisgICAgfSBAY2F0Y2goaWQgZXhjZXB0aW9uKSB7CisgICAgICAgIFJlcG9ydERp
c2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNlbGVjdG9yLCBleGNlcHRpb24pOworICAgIH0KKyAg
ICByZXR1cm4gbmlsOworfQorCiBzdGF0aWMgaW5saW5lIGlkIENhbGxEZWxlZ2F0ZShJTVAgaW1w
bGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdCkKIHsKICAgICBpZiAoIWRlbGVnYXRlKQpAQCAtNDUwLDYgKzQ2MiwxMSBAQCBpZCBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0CiAgICAgcmV0dXJuIENhbGxEZWxl
Z2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVn
YXRlLCBzZWxlY3Rvcik7CiB9CiAKK2lkIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVt
ZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBpbnRlZ2Vy
KQoreworICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYt
Pl9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZSwgc2VsZWN0b3IsIGludGVnZXIpOworfQorCiBp
ZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxm
LCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCkKIHsKICAgICByZXR1cm4gQ2FsbERlbGVnYXRlKGlt
cGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGUsIHNl
bGVjdG9yLCBvYmplY3QpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
cmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTIsNiArMzkyLDIwIEBAIEZpbmRPcHRpb25zIGNvcmVPcHRp
b25zKFdlYkZpbmRPcHRpb25zIG8KICAgICAgICAgfCAob3B0aW9ucyAmIFdlYkZpbmRPcHRpb25z
U3RhcnRJblNlbGVjdGlvbiA/IFN0YXJ0SW5TZWxlY3Rpb24gOiAwKTsKIH0KIAorTGF5b3V0TWls
ZXN0b25lcyBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9u
ZXMpCit7CisgICAgcmV0dXJuIChtaWxlc3RvbmVzICYgV2ViRGlkRmlyc3RMYXlvdXQgPyBEaWRG
aXJzdExheW91dCA6IDApCisgICAgICAgIHwgKG1pbGVzdG9uZXMgJiBXZWJEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQgPyBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgOiAwKQor
ICAgICAgICB8IChtaWxlc3RvbmVzICYgV2ViRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZCA/IERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQgOiAwKTsKK30KKworV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKExh
eW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3sKKyAgICByZXR1cm4gKG1pbGVzdG9uZXMgJiBE
aWRGaXJzdExheW91dCA/IFdlYkRpZEZpcnN0TGF5b3V0IDogMCkKKyAgICAgICAgfCAobWlsZXN0
b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA/IFdlYkRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCA6IDApCisgICAgICAgIHwgKG1pbGVzdG9uZXMgJiBEaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID8gV2ViRGlkSGl0UmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCA6IDApOworfQorCiBAaW50ZXJmYWNlIFdlYlZpZXcg
KFdlYkZpbGVJbnRlcm5hbCkKIC0gKGZsb2F0KV9kZXZpY2VTY2FsZUZhY3RvcjsKIC0gKEJPT0wp
X2lzTG9hZGluZzsKQEAgLTE2MTgsNiArMTYzMiw3IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnQKICAgICBjYWNoZS0+ZGlkRmluaXNoTG9hZEZvckZyYW1lRnVuYyA9
IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmluaXNoTG9hZEZvckZy
YW1lOikpOwogICAgIGNhY2hlLT5kaWRGaXJzdExheW91dEluRnJhbWVGdW5jID0gZ2V0TWV0aG9k
KGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6KSk7CiAg
ICAgY2FjaGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRJbkZyYW1lOikpOworICAgIGNhY2hlLT5kaWRMYXlvdXRGdW5jID0gZ2V0TWV0aG9k
KGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRMYXlvdXQ6KSk7CiAgICAgY2FjaGUtPmRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KSk7CiAgICAgY2Fj
aGUtPmRpZFJlY2VpdmVJY29uRm9yRnJhbWVGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZTopKTsKICAgICBjYWNoZS0+ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVGdW5jID0gZ2V0
TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTopKTsKQEAgLTE2MjksNiArMTY0NCwxOSBAQCAt
ICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50CiAgICAgY2FjaGUtPmRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Io
d2ViVmlld0RpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KSk7CiAgICAgY2FjaGUtPmRpZFJ1bklu
c2VjdXJlQ29udGVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3
OmRpZFJ1bkluc2VjdXJlQ29udGVudDopKTsKICAgICBjYWNoZS0+ZGlkRGV0ZWN0WFNTRnVuYyA9
IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOikpOwor
CisgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJh
bnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgorICAgIC8v
IGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCisgICAgLy8gZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOworICAg
IGlmIChwYWdlKSB7CisgICAgICAgIHVuc2lnbmVkIG1pbGVzdG9uZXMgPSAwOworICAgICAgICBp
ZiAoY2FjaGUtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMpCisgICAgICAgICAgICBtaWxlc3Rv
bmVzIHw9IERpZEZpcnN0TGF5b3V0OworICAgICAgICBpZiAoY2FjaGUtPmRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jKQorICAgICAgICAgICAgbWlsZXN0b25lcyB8PSBE
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgICAgIHBhZ2UtPmFkZExheW91dE1p
bGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obWlsZXN0b25lcykpOworICAg
IH0KIH0KIAogLSAodm9pZClfY2FjaGVTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25z
CkBAIC0yODU4LDYgKzI4ODYsMjQgQEAgLSAoV2ViUGFnaW5hdGlvbk1vZGUpX3BhZ2luYXRpb25N
b2RlCiAgICAgcmV0dXJuIFdlYlBhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7CiB9CiAKKy0gKHZv
aWQpX2xpc3RlbkZvckxheW91dE1pbGVzdG9uZXM6KFdlYkxheW91dE1pbGVzdG9uZXMpbGF5b3V0
TWlsZXN0b25lcworeworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhjb3Jl
TGF5b3V0TWlsZXN0b25lcyhsYXlvdXRNaWxlc3RvbmVzKSk7Cit9CisKKy0gKFdlYkxheW91dE1p
bGVzdG9uZXMpX2xheW91dE1pbGVzdG9uZXMKK3sKKyAgICBQYWdlKiBwYWdlID0gY29yZShzZWxm
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGtpdExh
eW91dE1pbGVzdG9uZXMocGFnZS0+bGF5b3V0TWlsZXN0b25lcygpKTsKK30KKwogLSAodm9pZClf
c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnMK
IHsKICAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVLZXlib2FyZFVJTW9kZS5oPgogCkBAIC02NSw2ICs2Niw5IEBAIHN0cnVjdCBEaWN0YXRpb25B
bHRlcm5hdGl2ZTsKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9w
dGlvbnMgb3B0aW9ucyk7CiAKK1dlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgY29yZUxheW91dE1p
bGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CitXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExh
eW91dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CisKICNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsMTMgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgICBXZWJQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wLAogfSBXZWJQYWdpbmF0aW9uTW9kZTsK
IAorZW51bSB7CisgICAgV2ViRGlkRmlyc3RMYXlvdXQgPSAxIDw8IDAsCisgICAgV2ViRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gMSA8PCAxLAorICAgIFdlYkRpZEhpdFJlbGV2YW50
UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQgPSAxIDw8IDIKK307Cit0eXBlZGVmIE5TVUlu
dGVnZXIgV2ViTGF5b3V0TWlsZXN0b25lczsKKwogLy8gVGhpcyBuZWVkcyB0byBiZSBpbiBzeW5j
IHdpdGggV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uCiB0eXBlZGVmIGVu
dW0gewogICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkLApAQCAtNTY2LDYgKzU3
Myw5IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClfc2V0UGFn
aW5hdGlvbk1vZGU6KFdlYlBhZ2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlOwogLSAoV2ViUGFn
aW5hdGlvbk1vZGUpX3BhZ2luYXRpb25Nb2RlOwogCistICh2b2lkKV9saXN0ZW5Gb3JMYXlvdXRN
aWxlc3RvbmVzOihXZWJMYXlvdXRNaWxlc3RvbmVzKWxheW91dE1pbGVzdG9uZXM7CistIChXZWJM
YXlvdXRNaWxlc3RvbmVzKV9sYXlvdXRNaWxlc3RvbmVzOworCiAvLyBXaGV0aGVyIHRoZSBjb2x1
bW4tYnJlYWste2JlZm9yZSxhZnRlcn0gcHJvcGVydGllcyBhcmUgcmVzcGVjdGVkIGluc3RlYWQg
b2YgdGhlCiAvLyBwYWdlLWJyZWFrLXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMuCiAtICh2b2lk
KV9zZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOihCT09MKWJlaGF2ZXNMaWtlQ29sdW1u
czsKQEAgLTc1OSw2ICs3NjksOCBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWaWV3RnJhbWVM
b2FkRGVsCiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogCistICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkTGF5b3V0OihXZWJMYXlvdXRNaWxlc3RvbmVzKW1p
bGVzdG9uZXM7CisKIC8vIEZvciBpbXBsZW1lbnRpbmcgdGhlIFdlYkluc3BlY3RvcidzIHRlc3Qg
aGFybmVzcwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGVhckluc3Bl
Y3RvcldpbmRvd09iamVjdDooV2ViU2NyaXB0T2JqZWN0ICopd2luZG93T2JqZWN0IGZvckZyYW1l
OihXZWJGcmFtZSAqKWZyYW1lOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjMz
KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAxMi0wOS0wNSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAg
ICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAg
ICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBkaXNwYXRjaERp
ZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCisgICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBk
aXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50
UXQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBh
bnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2Vi
UGFnZVByaXZhdGUpOgorCiAyMDEyLTA5LTA1ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1
YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtEUlRdIExUQzo6IE1vdmUgcHJpbnRpbmcgcmVs
YXRlZCBBUElzIGZyb20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gSW50ZXJuYWxzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsOCBA
QCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnCiAgICAgLy8gYXMgZXhw
ZWN0ZWQgb3V0IG9mIHRoZSBib3gsIHdlIHVzZSBhIGRlZmF1bHQgZ3JvdXAgc2ltaWxhciB0byB3
aGF0IG90aGVyIHBvcnRzIGFyZSBkb2luZy4KICAgICBwYWdlLT5zZXRHcm91cE5hbWUoIkRlZmF1
bHQgR3JvdXAiKTsKIAorICAgIHBhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KTsKKwogICAgIHNldHRpbmdzID0gbmV3IFFXZWJTZXR0aW5ncyhw
YWdlLT5zZXR0aW5ncygpKTsKIAogICAgIGhpc3RvcnkuZCA9IG5ldyBRV2ViSGlzdG9yeVByaXZh
dGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+KHBhZ2UtPmJhY2tG
b3J3YXJkTGlzdCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNywxNCArNTI3LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRGaW4KICAgICBlbWl0TG9hZEZpbmlzaGVkKHRydWUpOwogfQogCi0K
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMg
bWlsZXN0b25lcykKIHsKLX0KKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsK
IAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCgpCi17Ci0gICAgaWYgKG1fd2ViRnJhbWUpCisgICAgaWYgKG1pbGVzdG9uZXMg
JiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCiAgICAgICAgIGVtaXQgbV93ZWJGcmFt
ZS0+aW5pdGlhbExheW91dENvbXBsZXRlZCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNp
b24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw4ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjMzKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMDUgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3Bh
dGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5
IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWls
ZXN0b25lT3B0aW9ucykKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlv
dXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudCk6CisKKyAgICAgICAgSXQgaXMgbm93IG5lY2Vz
c2FyeSB0byBvcHQgaW50byBnZXR0aW5nIGFueSBvZiB0aGUgCisgICAgICAgICJsYXlvdXQgbWls
ZXN0b25lIiBub3RpZmljYXRpb25zLgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMTItMDktMDUgIEthdXN0dWJoIEF0cmF3YWxr
YXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW0RSVF0gTFRDOjogTW92ZSBw
cmludGluZyByZWxhdGVkIEFQSXMgZnJvbSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJbnRlcm5h
bHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4MCw2ICsyNjgwLDkg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0VwogICAgIG1fcGFnZSA9
IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBwcm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2Us
IG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCh0aGlzKSk7CiAKKyAgICB1bnNpZ25lZCBsYXlvdXRN
aWxlc3RvbmVzID0gRGlkRmlyc3RMYXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQ7CisgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91dE1p
bGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpKTsKKwogICAgIEJTVFIgbG9jYWxTdG9yYWdlUGF0
aDsKICAgICBpZiAoU1VDQ0VFREVEKG1fcHJlZmVyZW5jZXMtPmxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCgmbG9jYWxTdG9yYWdlUGF0aCkpKSB7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+
c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFN0cmluZyhsb2NhbFN0b3JhZ2VQYXRoLCBTeXNT
dHJpbmdMZW4obG9jYWxTdG9yYWdlUGF0aCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDIwICs0MTYsMjAgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogICAgICAgICBmcmFtZUxv
YWREZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkK
LXsKLSAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwotICAgIENP
TVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXY7
Ci0gICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZy
YW1lTG9hZERlbGVnYXRlUHJpdikpICYmIGZyYW1lTG9hZERlbGVnYXRlUHJpdikKLSAgICAgICAg
ZnJhbWVMb2FkRGVsZWdhdGVQcml2LT5kaWRGaXJzdExheW91dEluRnJhbWUod2ViVmlldywgbV93
ZWJGcmFtZSk7Ci19Ci0KLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIHsKICAgICBXZWJW
aWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGU7Ci0gICAgaWYg
KFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZSkpICYmIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKLSAgICAgICAgZnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZy
YW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworCisgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJz
dExheW91dCkgeworICAgICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPmZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgJiYgZnJhbWVMb2FkRGVsZWdhdGVQ
cml2KQorICAgICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2LT5kaWRGaXJzdExheW91dElu
RnJhbWUod2ViVmlldywgbV93ZWJGcmFtZSk7CisgICAgfQorCisgICAgaWYgKG1pbGVzdG9uZXMg
JiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpIHsKKyAgICAgICAgaWYgKFNVQ0NFRURF
RCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUoJmZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZSkpICYmIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKKyAgICAgICAgICAgIGZyYW1lTG9h
ZERlbGVnYXRlUHJpdmF0ZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZSh3
ZWJWaWV3LCBtX3dlYkZyYW1lKTsKKyAgICB9CiB9CiAKIEZyYW1lKiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4
ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkTGF5b3V0KFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOS0wNSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlz
cGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0
Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkg
CisgICAgICAgIGlzIG5vdyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxl
c3RvbmVzKQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERp
ZExheW91dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXaW5DRSk6CisKIDIwMTItMDgtMjggIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5j
cHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NiwxMiAr
Mzc2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZAogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0
Y2hEaWRGaXJzdExheW91dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkTGF5b3V0KExh
eW91dE1pbGVzdG9uZXMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpA
QCAtODMsOCArODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmVzKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3Jl
YXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYxNCkK
KysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAg
ICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAg
ICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJl
c3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRG
aXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkgZGlz
cGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcykKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRXeCk6CisKIDIw
MTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJ
KHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDEzICszNTQsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmluCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmlyc3RM
YXlvdXQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJD
bGllbnRXeDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQordm9pZCBG
cmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDEyNzYx
NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsxMTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpOwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMikKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTA1
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWNjb3VudCBmb3IgdGhlIG5ldyBtZW1iZXIgb2YgdGhlIFBh
Z2VMb2FkQ2xpZW50LgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21O
aWJdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0
ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorCisgICAg
ICAgIFRoZSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMgaGFzIGV4aXN0
ZWQgZm9yIGEgd2hpbGUsIAorICAgICAgICBidXQgaXQgZGlkIG5vdCBoYXZlIHRoZSByaWdodCB0
YXJnZXQgbWVtYmVyc2hpcC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBVc2UgbmV3IGRpZExheW91dCBB
UEkgaW5zdGVhZCBvZiBvbGQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCBBUEkuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZExheW91dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGYWlscy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZExheW91dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQ
YWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JJbWFnZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpkaWRMYXlvdXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFn
ZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0RnJhbWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTItMDktMDUg
IFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIHRlc3QgZml4LgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDEyNzYxNCkKKysrIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC02MzUsNiAr
NjM1LDcgQEAgLSAodm9pZClhd2FrZUZyb21OaWIKICAgICAgICAgMCwgLy8gcGx1Z2luRGlkRmFp
bAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUKICAgICAgICAgMCwgLy8g
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkTGF5b3V0CiAg
ICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KF93ZWJWaWV3LnBhZ2VSZWYsICZs
b2FkQ2xpZW50KTsKICAgICAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
Mjc2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAogCQk3NkUxODJE
RjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJERTE1NDc1
QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsgfTsKIAkJODFCNTAx
OTMxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8q
IFN0cmluZ0J1aWxkZXIuY3BwICovOyB9OwogCQk5MzBBRDQwMjE1MDY5OEQwMDA2Nzk3MEYgLyog
bG90cy1vZi10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMwQUQ0MDExNTA2OThCMzAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5o
dG1sICovOyB9OworCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNBMTUwNkYwMzUwMDdGRDU3RSAvKiBOZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwICovOyB9OwogCQk5MzYxMDAyOTE0REM5
NUE3MDA2MTM3OUQgLyogbG90cy1vZi1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlE
IC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sICovOyB9OwogCQk5MzlCQTkxNzE0MTAzNDEyMDAxQTAx
QkQgLyogRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzlCQTkxNjE0MTAzNDEyMDAxQTAxQkQgLyogRGV2aWNl
U2NhbGVGYWN0b3JPbkJhY2subW0gKi87IH07CiAJCTkzQUY0RUNFMTUwNkYwNjQwMDdGRDU3RSAv
KiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNEMTUwNkYw
NjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVu
ZGxlLmNwcCAqLzsgfTsKQEAgLTk4NSw2ICs5ODYsNyBAQAogCQkJCUJDOTA5OTVFMTI1NjdCQzEw
MDA4Mzc1NiAvKiBXS1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzkwOTk5NDEyNTZB
Q0YxMDAwODM3NTYgLyogV0tTdHJpbmdKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
NjVBRjU1MDE1RDFFNDhBMDBCMENCNEEgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5Q0NFMyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JJbWFnZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0LmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwyOSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1
Y2NlZWQ7CitzdGF0aWMgYm9vbCBkaWRGaXJzdExheW91dEFjaGlldmVkOworc3RhdGljIGJvb2wg
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQ7CitzdGF0aWMg
Ym9vbCBkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzOwogCi1zdGF0aWMgdm9pZCBkaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQgKikKK3N0YXRpYyB2b2lkIGRpZExheW91dChXS1BhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25l
cyB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICBkaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIGtXS0RpZEZpcnN0TGF5b3V0OgorICAgICAgICBkaWRGaXJzdExheW91dEFjaGlldmVk
ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQ6CisgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGll
dmVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRIaXRSZWxldmFudFJl
cGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOgorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGRpZEZp
cnN0TGF5b3V0QWNoaWV2ZWQgJiYgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2
ZWQgJiYgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVk
KQorICAgICAgICBkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzID0gdHJ1ZTsKIH0KIAogc3Rh
dGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTQyLDExICs2
MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgV0tQ
YWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwg
MCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dL
UGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQ7CisgICAgbG9hZGVyQ2xpZW50LmRpZExheW91dCA9IGRpZExheW91dDsKIAogICAgIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7CiB9CiAKKy8vIEZJ
WE1FOiBUaGlzIHRlc3QgaGFzIGJlZW4gYnJva2VuIHNpbmNlIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzExNTc1MiBJdCdzIGZhaWxpbmcgYmVjYXVzZQorLy8gdGhlIGZyYW1lIGxv
YWQgaXMgY29tcGxldGluZyBiZWZvcmUgZGlkTGF5b3V0KCkgbWFuYWdlcyB0byB1bmxvY2sgdGhl
CisvLyBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIGFjaGll
dmVtZW50LiBXZSBwcm9iYWJseSBuZWVkIHRvIGZpeCB0aGlzIGJ5IG1ha2luZworLy8gdGhpcyB0
ZXN0IGhhdmUgYSBsb25nLXJ1bm5pbmcgcmVzb3VyY2UuCiBURVNUKFdlYktpdDIsIERJU0FCTEVE
X05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKIHsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVk
QnVuZGxlVGVzdCgiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0VGVzdCIpKTsKQEAgLTU4
LDggKzgwLDggQEAgVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5TgogICAg
IC8vIG9iamVjdHMgdGFrZSB1cCBtb3JlIHRoYW4gMTAlIG9mIHRoZSB2aWV3LgogICAgIFdLUGFn
ZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3Vy
Y2UoImxvdHMtb2YtdGV4dCIsICJodG1sIikpLmdldCgpKTsKIAotICAgIFV0aWw6OnJ1bigmZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7Ci0gICAgRVhQRUNUX1RSVUUo
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7CisgICAgVXRpbDo6cnVu
KCZkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzKTsKKyAgICBFWFBFQ1RfVFJVRShkaWRVbmxv
Y2tBbGxMYXlvdXRNaWxlc3RvbmVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZhaWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3Bw
CShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGJv
b2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZDsKK3N0YXRpYyBib29s
IGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKIHN0
YXRpYyBib29sIHRlc3QxRG9uZTsKIHN0YXRpYyBib29sIHRlc3QyRG9uZTsKICAgICAKQEAgLTQ4
LDkgKzQ4LDEwIEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKICAg
ICBXS1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwgMCwgZGlkRm9yY2VSZXBhaW50KTsKIH0KIAotc3Rh
dGljIHZvaWQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdLUGFnZVJlZiwgV0tU
eXBlUmVmLCBjb25zdCB2b2lkICopCitzdGF0aWMgdm9pZCBkaWRMYXlvdXQoV0tQYWdlUmVmLCBX
S0xheW91dE1pbGVzdG9uZXMgdHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0gICAg
ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCA9IHRydWU7CisgICAgaWYg
KHR5cGUgPT0ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkK
KyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGll
dmVkID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VS
ZWYgcGFnZSkKQEAgLTU5LDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZQogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xp
ZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3Vy
cmVudFZlcnNpb247CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRp
ZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAg
IGxvYWRlckNsaWVudC5kaWRMYXlvdXQgPSBkaWRMYXlvdXQ7CiAKICAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOwogfQpAQCAtODAsNyArODEsNyBAQCBU
RVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxhCiAKICAgICAvLyBCeSB0aGUg
dGltZSB0aGUgZm9yY2VkIHJlcGFpbnQgaGFzIGZpbmlzaGVkLCB0aGUgY291bnRlciB3b3VsZCBo
YXZlIGJlZW4gaGl0IAogICAgIC8vIGlmIGl0IHdhcyBzaXplZCByZWFzb25hYmx5IGZvciB0aGUg
cGFnZS4KLSAgICBFWFBFQ1RfRkFMU0UoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
U3VjY2VlZCk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGYWlsc19CdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
YWlsc19CdW5kbGUuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHNfQnVuZGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKQogICAgIHsKLSAgICAgICAgLy8gU2V0dGluZyB0aGUgcGFpbnRlZCBvYmplY3RzIGNv
dW50ZXIgaXMgbmVjZXNzYXJ5IGF0IHRoaXMgdGltZSB0byBvcHQgaW50bwotICAgICAgICAvLyB0
aGUgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGhldXJpc3RpYy4KLSAgICAgICAg
V0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKHBhZ2UsIDEpOwor
ICAgICAgICBXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHBhZ2UsIGtXS0Rp
ZEZpcnN0TGF5b3V0IHwga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHwga1dLRGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCk7CiAgICAgfQogICAgIAog
fTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJ
bWFnZXMuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDI5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2Vl
ZDsKK3N0YXRpYyBib29sIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZDsKK3N0YXRpYyBib29s
IGRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXM7CiAKLXN0YXRpYyB2b2lkIGRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAq
KQorc3RhdGljIHZvaWQgZGlkTGF5b3V0KFdLUGFnZVJlZiwgV0tMYXlvdXRNaWxlc3RvbmVzIHR5
cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dFN1Y2NlZWQgPSB0cnVlOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2Uga1dLRGlkRmlyc3RMYXlvdXQ6CisgICAgICAgIGRpZEZpcnN0TGF5b3V0QWNoaWV2ZWQgPSB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dDoKKyAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQg
PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0RpZEhpdFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ6CisgICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVk
T2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoZGlkRmlyc3RM
YXlvdXRBY2hpZXZlZCAmJiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZlZCAm
JiBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQpCisg
ICAgICAgIGRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMgPSB0cnVlOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQpAQCAtNDIsMTIgKzYwLDE2
IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmUKICAgICBXS1BhZ2VM
b2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdl
TG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dDsKKyAgICBsb2FkZXJDbGllbnQuZGlkTGF5b3V0ID0gZGlkTGF5b3V0OwogCiAgICAgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAotVEVTVChXZWJL
aXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMpCisvLyBGSVhNRTog
VGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1c2UKKy8vIHRoZSBmcmFtZSBsb2FkIGlz
IGNvbXBsZXRpbmcgYmVmb3JlIGRpZExheW91dCgpIG1hbmFnZXMgdG8gdW5sb2NrIHRoZQorLy8g
a1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCBhY2hpZXZlbWVu
dC4gV2UgcHJvYmFibHkgbmVlZCB0byBmaXggdGhpcyBieSBtYWtpbmcKKy8vIHRoaXMgdGVzdCBo
YXZlIGEgbG9uZy1ydW5uaW5nIHJlc291cmNlLgorVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMpCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmpl
Y3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc1Rl
c3QiKSk7CiAKQEAgLTU4LDggKzgwLDggQEAgVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYQogICAgIC8vIG9iamVjdHMgdGFrZSB1cCBtb3JlIHRoYW4gMTAlIG9mIHRoZSB2
aWV3LgogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIGFkb3B0V0soVXRpbDo6Y3Jl
YXRlVVJMRm9yUmVzb3VyY2UoImxvdHMtb2YtaW1hZ2VzIiwgImh0bWwiKSkuZ2V0KCkpOwogCi0g
ICAgVXRpbDo6cnVuKCZkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVkKTsK
LSAgICBFWFBFQ1RfVFJVRShkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNjZWVk
KTsKKyAgICBVdGlsOjpydW4oJmRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMpOworICAgIEVY
UEVDVF9UUlVFKGRpZFVubG9ja0FsbExheW91dE1pbGVzdG9uZXMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwCShyZXZpc2lvbiAxMjc2MTQp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICB7Ci0gICAgICAgIC8vIFNl
dHRpbmcgdGhlIHBhaW50ZWQgb2JqZWN0cyBjb3VudGVyIGlzIG5lY2Vzc2FyeSBhdCB0aGlzIHRp
bWUgdG8gb3B0IGludG8KLSAgICAgICAgLy8gdGhlIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCBoZXVyaXN0aWMuCi0gICAgICAgIFdLQnVuZGxlUGFnZVNldFBhaW50ZWRPYmplY3Rz
Q291bnRlclRocmVzaG9sZChwYWdlLCAxKTsKKyAgICAgICAgV0tCdW5kbGVQYWdlTGlzdGVuRm9y
TGF5b3V0TWlsZXN0b25lcyhwYWdlLCBrV0tEaWRGaXJzdExheW91dCB8IGtXS0RpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCB8IGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGQpOwogICAgIH0KICAgICAKIH07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZyYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGaXJlTW9yZVRoYW5PbmNlOwotc3RhdGljIHVuc2lnbmVkIG5ld1Zpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRDb3VudGVyOworc3RhdGljIGJvb2wgZGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZTsKK3N0YXRpYyB1bnNpZ25lZCBkaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlcjsKIHN0YXRpYyBi
b29sIHRlc3QxRG9uZTsKIHN0YXRpYyBib29sIHRlc3QyRG9uZTsKICAgICAKQEAgLTQ5LDExICs0
OSwxNCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgV0tQ
YWdlRm9yY2VSZXBhaW50KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlwZVJl
ZiwgY29uc3Qgdm9pZCAqKQorc3RhdGljIHZvaWQgZGlkTGF5b3V0KFdLUGFnZVJlZiwgV0tMYXlv
dXRNaWxlc3RvbmVzIHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgICsrbmV3
VmlzdWFsbHlOb25FbXB0eUxheW91dENvdW50ZXI7Ci0gICAgaWYgKG5ld1Zpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRDb3VudGVyID4gMSkKLSAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0RmlyZU1vcmVUaGFuT25jZSA9IHRydWU7CisgICAgaWYgKHR5cGUgIT0ga1dLRGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgKytkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRl
cjsKKyAgICBpZiAoZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZENv
dW50ZXIgPiAxKQorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhy
ZXNob2xkTW9yZVRoYW5PbmNlID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRl
ckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTYyLDE0ICs2NSwxNCBAQCBzdGF0aWMgdm9pZCBz
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAs
IHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1Bh
Z2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNo
TG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwotICAgIGxvYWRlckNsaWVudC5k
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQ7CisgICAgbG9hZGVyQ2xpZW50LmRpZExheW91dCA9IGRpZExheW91dDsKIAog
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7CiB9CiAK
IFRFU1QoV2ViS2l0MiwgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzKQogewot
ICAgIG5ld1Zpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyID0gMDsKKyAgICBkaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlciA9IDA7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1l
c1Rlc3QiKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsK
QEAgLTgyLDcgKzg1LDcgQEAgVEVTVChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YQogCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIGZvcmNlZCByZXBhaW50IGhhcyBmaW5pc2hlZCwg
dGhlIGNvdW50ZXIgd291bGQgaGF2ZSBiZWVuIGhpdCAKICAgICAvLyBpZiBpdCB3YXMgc2l6ZWQg
cmVhc29uYWJseSBmb3IgdGhlIHBhZ2UuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZpcmVNb3JlVGhhbk9uY2UpOworICAgIEVYUEVDVF9GQUxTRShk
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkTW9yZVRoYW5PbmNlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19C
dW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcAkocmV2aXNp
b24gMTI3NjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAg
ICAvLyBTZXR0aW5nIHRoZSBwYWludGVkIG9iamVjdHMgY291bnRlciBpcyBuZWNlc3NhcnkgYXQg
dGhpcyB0aW1lIHRvIG9wdCBpbnRvCi0gICAgICAgIC8vIHRoZSBkaWROZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQgaGV1cmlzdGljLgotICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWludGVk
T2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQocGFnZSwgMSk7CisgICAgICAgIFdLQnVuZGxlUGFnZUxp
c3RlbkZvckxheW91dE1pbGVzdG9uZXMocGFnZSwga1dLRGlkRmlyc3RMYXlvdXQgfCBrV0tEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgfCBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNBcmVhVGhyZXNob2xkKTsKICAgICB9CiAgICAgCiB9OwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF9CdW5k
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9O
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfQnVuZGxlLmNwcAkocmV2aXNpb24gMTI3NjE0
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dF9CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAgICAvLyBTZXR0aW5nIHRo
ZSBwYWludGVkIG9iamVjdHMgY291bnRlciBpcyBuZWNlc3NhcnkgYXQgdGhpcyB0aW1lIHRvIG9w
dCBpbnRvCi0gICAgICAgIC8vIHRoZSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQg
aGV1cmlzdGljLgotICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0NvdW50ZXJU
aHJlc2hvbGQocGFnZSwgMSk7CisgICAgICAgIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMocGFnZSwga1dLRGlkRmlyc3RMYXlvdXQgfCBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQgfCBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNo
b2xkKTsKICAgICB9CiAgICAgCiB9OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNiArNDI5LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogICAgICAgICAwLCAvLyBw
bHVnaW5EaWRGYWlsCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQogICAg
ICAgICAwLCAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZQorICAgICAgICAwLCAvLyBk
aWRMYXlvdXQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9tYWluV2Vi
Vmlldy0+cGFnZSgpLCAmcGFnZUxvYWRlckNsaWVudCk7CiB9CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NCw3ICszMDQsOCBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXCiAg
ICAgICAgIGRpZEZpbmlzaFByb2dyZXNzLCAvLyBkaWRGaW5pc2hQcm9ncmVzcwogICAgICAgICAw
LCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAogICAgICAgICBkaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQotICAgICAg
ICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZQorICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSwgLy8gcmVnaXN0
ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkTGF5b3V0CiAgICAgfTsK
ICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fcGFnZSwgJmxvYWRlckNsaWVu
dCk7CiAK
</data>
<flag name="commit-queue"
          id="173392"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162319</attachid>
            <date>2012-09-05 13:34:15 -0700</date>
            <delta_ts>2012-09-24 21:07:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>121756</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA5LTA1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtZXJnZXMgZGlkRmlyc3RMYXlvdXQsIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCwgCisgICAgICAgIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQuIFBhZ2Uga2VlcHMgdHJhY2sgb2Ygd2hpY2ggCisgICAgICAgIGxheW91dCBt
aWxlc3RvbmVzIHdlIGFyZSBpbnRlcmVzdGVkIGluIHdpdGggYSBiaXQgbWFzaywgc28gdGhhdCAK
KyAgICAgICAgZGlmZmVyZW50IHBvcnRzL2NsaWVudHMgY2FuIG9wdC1pbnRvIGRpZmZlcmVudCBt
aWxlc3RvbmVzLiBUaGlzIAorICAgICAgICB3aWxsIGFsbG93IHVzIHRvIHNhZmVseSBhZGQgbW9y
ZSBsYXlvdXQgbWlsZXN0b25lcyBpbiB0aGUgZnV0dXJlIAorICAgICAgICBpZiB0aGF0IHNlZW1z
IHdvcnRod2hpbGUuCisKKyAgICAgICAgSW5jbHVkZSBuZXcgZmlsZSBMYXlvdXRNaWxlc3RvbmVP
cHRpb25zLmgKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGV5IGFyZSBub3cgcmVwbGFjZWQgCisgICAgICAg
IGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkTGF5b3V0KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExh
eW91dCk6CisgICAgICAgICogcGFnZS9MYXlvdXRNaWxlc3RvbmVPcHRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisKKyAgICAgICAgQ2hlY2sgd2l0aCBQYWdlIHRvIGZpbmQgb3V0
IHdoaWNoIGxheW91dCBtaWxlc3RvbmVzIHRoZSBjbGllbnQgaXMgCisgICAgICAgIGludGVyZXN0
ZWQgaW4sIGFuZCB0aGVuIGRpc3BhdGNoIHRoZSBub3RpZmljYXRpb25zIHdoZW4gCisgICAgICAg
IGFwcHJvcHJpYXRlLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CisKKyAgICAgICAgUmVt
b3ZlIHNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoKS4gSW5zdGVh
ZCBrZWVwIAorICAgICAgICB0cmFjayBvZiB0aGUgbGF5b3V0IG1pbGVzdG9uZXMgYml0IG1hc2su
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJl
cGFpbnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXlvdXRNaWxlc3RvbmVzKToKKwogMjAxMi0wOS0wNSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjc2MjkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTM5ODQsNiArMzk4NCw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Hcm91cFNldHRpbmdzLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIFwK
KyAgICBTb3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dE1pbGVzdG9uZXMuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTE5ODQsNiArMTk4NCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHBhZ2UvR2VzdHVyZVRhcEhpZ2hsaWdodGVyLmhcCiAgICAgcGFnZS9Hcm91cFNldHRpbmdzLmgg
XAogICAgIHBhZ2UvSGlzdG9yeS5oIFwKKyAgICBwYWdlL0xheW91dE1pbGVzdG9uZXMuaCBcCiAg
ICAgcGFnZS9Mb2NhdGlvbi5oIFwKICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMuaCBcCiAgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC02NzAsNiArNjcwLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UxNnNldERl
ZmVyc0xvYWRpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKIF9f
Wk43V2ViQ29yZTRQYWdlMThyZW1vdmVTY2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MTJTY2hlZHVsZVBhaXJFRUUKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JF
ZlJLTlNfOEludFBvaW50RQorX19aTjdXZWJDb3JlNFBhZ2UxOWFkZExheW91dE1pbGVzdG9uZXNF
agogX19aTjdXZWJDb3JlNFBhZ2UxOXZpc2l0ZWRTdGF0ZUNoYW5nZWRFUE5TXzlQYWdlR3JvdXBF
eQogX19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29y
ZTRQYWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC02ODUsNyArNjg2LDYgQEAgX19aTjdX
ZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50QwogX19aTjdXZWJDb3JlNFBhZ2UzNXJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMzZz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2Uz
N3NldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGVFYgotX19aTjdXZWJDb3JlNFBh
Z2U0M3NldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGRFeQogX19aTjdX
ZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTRQYWdlOGdvVG9JdGVtRVBOU18xMUhp
c3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUKIF9fWk43V2ViQ29yZTRQYWdlOWdvRm9yd2Fy
ZEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxMjMsNiArMzEyMyw3IEBACiAg
ICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9I
aXN0b3J5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmgnLAorICAgICAgICAgICAg
J3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oJywKICAgICAgICAgICAgICdwYWdlL0xvY2F0aW9uLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9Mb2NhdGlvbi5oJywKICAgICAgICAgICAgICdwYWdlL01l
bW9yeUluZm8uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzIx
MCw2ICszMjEwLDcgQEAKIAkJOTMzMDlFQTIwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
MDlFOUYwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyTWFjLm1tICovOyB9OwogCQk5MzMw
OUVBMzA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RUEwMDk5RUI3OEMwMDU2RTU4MSAvKiBT
aGFyZWRUaW1lci5oICovOyB9OwogCQk5MzMwOUVBNDA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlF
QTEwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLzsgfTsKKwkJOTMzMzY5Q0QxNUYxNzRG
NjAwRDg3NzY3IC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzM2OUNDMTVGMTc0RjYwMEQ4Nzc2NyAvKiBMYXlvdXRN
aWxlc3RvbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTMzNTRBM0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzNTRBM0Iw
QjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovOyB9OwogCQk5MzNB
MTQyRTBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0ExNDJCMEI3RDE4ODYwMEE1M0ZGRCAvKiBU
ZXh0RXZlbnQuY3BwICovOyB9OwogCQk5MzNBMTQzMDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNB
MTQyRDBCN0QxODg2MDBBNTNGRkQgLyogVGV4dEV2ZW50LmggKi87IH07CkBAIC0xMDM3NCw2ICsx
MDM3NSw3IEBACiAJCTkzMzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFRpbWVyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzMwOUVBMDA5OUVCNzhDMDA1NkU1
ODEgLyogU2hhcmVkVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMDlFQTEwOTlFQjc4
QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMzY5Q0MxNUYx
NzRGNjAwRDg3NzY3IC8qIExheW91dE1pbGVzdG9uZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTGF5b3V0TWlsZXN0b25lcy5oOyBwYXRoID0gcGFnZS9MYXlvdXRNaWxlc3Rv
bmVzLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJOTMzNTRBM0IwQjI0RjhDOTAw
M0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVUlFdmVudFdpdGhLZXlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzM0ExNDJCMEI3RDE4ODYwMEE1M0ZGRCAvKiBUZXh0RXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzQTE0MkMwQjdEMTg4NjAwQTUzRkZEIC8qIFRleHRF
dmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dEV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Nzg3LDYgKzE1Nzg5LDcgQEAKIAkJCQlCQzk0RDE1MDBD
Mjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAw
NkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyog
SGlzdG9yeS5pZGwgKi8sCisJCQkJOTMzMzY5Q0MxNUYxNzRGNjAwRDg3NzY3IC8qIExheW91dE1p
bGVzdG9uZXMuaCAqLywKIAkJCQlCQ0UxQzQxQTBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24u
Y3BwICovLAogCQkJCUJDRTFDNDE5MEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oICovLAog
CQkJCUJDRTFDNDIyMEQ5ODI5RjIwMDNCMDJGMiAvKiBMb2NhdGlvbi5pZGwgKi8sCkBAIC0yNTQ5
MCw2ICsyNTQ5Myw3IEBACiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2lj
U2hhcGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4QjcxMTAgLyog
QmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEMxNUVGMjYw
NDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzMzNjlDRDE1
RjE3NEY2MDBEODc3NjcgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSw5ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaERvY3VtZW50TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaExvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChM
YXlvdXRNaWxlc3RvbmVzKSB7IH0KIAogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4MSwyNSArMjI4MSwxNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzZXRPcmlnaW5hbFVSTEZvckRvd25sCiAgICAgfQogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpkaWRGaXJzdExheW91dCgpCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRMYXlvdXQoTGF5
b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewotICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkgJiYg
aXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQotICAgICAgICBoaXN0b3J5KCktPnJl
c3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOworICAgIGlmIChtaWxlc3RvbmVzICYg
RGlkRmlyc3RMYXlvdXQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiBpc0JhY2tG
b3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCisgICAgICAgICAgICBoaXN0b3J5KCktPnJlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwogCi0gICAgaWYgKG1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmICFtX3N0YXRlTWFjaGluZS5pc0Rp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmICFtX3N0YXRlTWFjaGluZS5maXJzdExh
eW91dERvbmUoKSkKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lOjpGaXJzdExheW91dERvbmUpOwotCi0gICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQoKTsKLX0KKyAgICAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLmNvbW1p
dHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmICFtX3N0YXRlTWFjaGluZS5pc0Rpc3BsYXlp
bmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmICFtX3N0YXRlTWFjaGluZS5maXJzdExheW91dERv
bmUoKSkKKyAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0
YXRlTWFjaGluZTo6Rmlyc3RMYXlvdXREb25lKTsgICAgCisgICAgfQogCi12b2lkIEZyYW1lTG9h
ZGVyOjpkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKQotewotICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZExheW91dChtaWxlc3RvbmVzKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSWNvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29u
VVJMLmgiCisjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIlBvbGljeUNo
ZWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZE5vdGlmaWVyLmgiCkBAIC0xNzUsMTIgKzE3Niw3IEBAIHB1YmxpYzoKIAogICAgIENhY2hl
UG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdDsKIAotICAgIHZvaWQgZGlkRmly
c3RMYXlvdXQoKTsKLQotICAgIC8vIEZJWE1FOiBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKSBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgc2hvdWxkIGJlIG1l
cmdlZC4KLSAgICAvLyBUaGUgb25seSByZWFzb24gZm9yIGJvdGggdG8gZXhpc3QgaXMgdG8gZXhw
ZXJpbWVudCB3aXRoIGRpZmZlcmVudCBoZXVyaXN0aWNzIGZvciB0aGUgdGltZSBiZWluZy4KLSAg
ICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOwotICAgIHZvaWQgZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgdm9pZCBkaWRMYXlvdXQoTGF5b3V0
TWlsZXN0b25lcyk7CiAKICAgICB2b2lkIGxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENh
Y2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB0ZWxsQ2xpZW50QWJvdXRQYXN0TWVtb3J5Q2FjaGVM
b2FkcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgorI2luY2x1ZGUgIkxheW91dE1p
bGVzdG9uZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMTYyLDEwICsxNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpID0gMDsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKSB7
IH0KIAogICAgICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygp
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEyNzYxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQyMCwxMSArMjQyMCwxOCBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNr
cygpCiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7
CiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnVwZGF0ZUFwcGVhcmFuY2UoKTsKIAorICAgIExh
eW91dE1pbGVzdG9uZXMgbWlsZXN0b25lc09mSW50ZXJlc3QgPSAwOworICAgIExheW91dE1pbGVz
dG9uZXMgbWlsZXN0b25lc0FjaGlldmVkID0gMDsKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmIChwYWdlKQorICAgICAgICBtaWxlc3RvbmVzT2ZJbnRlcmVzdCA9IHBh
Z2UtPmxheW91dE1pbGVzdG9uZXMoKTsKKwogICAgIGlmIChtX25lc3RlZExheW91dENvdW50IDw9
IDEpIHsKICAgICAgICAgaWYgKG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcpIHsKICAgICAg
ICAgICAgIG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAg
IG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdExheW91dCgpOwotICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChtaWxlc3RvbmVz
T2ZJbnRlcmVzdCAmIERpZEZpcnN0TGF5b3V0KQorICAgICAgICAgICAgICAgIG1pbGVzdG9uZXNB
Y2hpZXZlZCB8PSBEaWRGaXJzdExheW91dDsKKyAgICAgICAgICAgIGlmIChwYWdlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpID09IG1fZnJhbWUpCiAgICAgICAgICAg
ICAgICAgICAgIHBhZ2UtPnN0YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsK
ICAgICAgICAgICAgIH0KQEAgLTI0MzcsMTAgKzI0NDQsMTUgQEAgdm9pZCBGcmFtZVZpZXc6OnBl
cmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAvLyBJZiB0aGUgbGF5b3V0IHdhcyBkb25l
IHdpdGggcGVuZGluZyBzaGVldHMsIHdlIGFyZSBub3QgaW4gZmFjdCB2aXN1YWxseSBub24tZW1w
dHkgeWV0LgogICAgICAgICBpZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkgJiYgIW1fZnJhbWUtPmRv
Y3VtZW50KCktPmRpZExheW91dFdpdGhQZW5kaW5nU3R5bGVzaGVldHMoKSAmJiBtX2ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICAgICAgbV9maXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsK
KyAgICAgICAgICAgIGlmIChtaWxlc3RvbmVzT2ZJbnRlcmVzdCAmIERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCkKKyAgICAgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OwogICAgICAgICB9CiAgICAgfQogCisgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmRpZExheW91dChtaWxlc3RvbmVzQWNoaWV2ZWQpOworICAgIAorICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIERpZExheW91dCBhcyBhIExheW91
dE1pbGVzdG9uZS4gVGhhdCB3b3VsZCBsZXQgdXMgbWVyZ2UgdGhpcworICAgIC8vIHdpdGggZGlk
TGF5b3V0KExheW91dE1pbGVzdG9uZXMpLgogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hEaWRMYXlvdXQoKTsKIAogICAgIFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVu
ZGVyZXIodGhpcyk7CkBAIC0yNDUyLDcgKzI0NjQsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9y
bVBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgeworICAgIGlmIChwYWdlKSB7CiAgICAgICAg
IGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0xheW91dFVwZGF0ZWQodGhpcyk7CiAgICAgfQpAQCAtMjQ4MSw3ICsyNDkzLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFnZSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgPT0gbV9mcmFtZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5pbnNwZWN0b3JDbGllbnQoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnNwZWN0b3JDbGllbnQtPmRpZFJlc2l6ZU1haW5GcmFtZShtX2ZyYW1lLmdl
dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmVzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExheW91dE1pbGVzdG9u
ZXNfaAorI2RlZmluZSBMYXlvdXRNaWxlc3RvbmVzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitlbnVtIExheW91dE1pbGVzdG9uZUZsYWcgeworICAgIERpZEZpcnN0TGF5b3V0ID0gMSA8PCAw
LAorICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA9IDEgPDwgMSwKKyAgICBEaWRI
aXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyCit9OworCit0
eXBlZGVmIHVuc2lnbmVkIExheW91dE1pbGVzdG9uZXM7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIExheW91dE1pbGVzdG9uZXNfaApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFn
ZUNsaWVudHMpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSkKICNlbmRpZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyAgICAsIG1fbGF5b3V0TWlsZXN0
b25lcygwKQogICAgICwgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKGZhbHNl
KQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNQYWludGluZyhmYWxzZSkKQEAgLTEwNTQsMjUg
KzEwNTUsMTkgQEAgUGFnZVZpc2liaWxpdHlTdGF0ZSBQYWdlOjp2aXNpYmlsaXR5U3RhdAogfQog
I2VuZGlmCiAKLS8vIEZJWE1FOiBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgaXMgbm8g
bG9uZ2VyIHVzZWQgZm9yIGNhbGN1bGF0aW5nIHJlbGV2YW50IHJlcGFpbnRlZCBhcmVhcywKLS8v
IGFuZCBpdCBzaG91bGQgYmUgcmVtb3ZlZC4gRm9yIHRoZSB0aW1lIGJlaW5nLCBpdCBpcyB1c2Vm
dWwgYmVjYXVzZSBpdCBhbGxvd3MgdXMgdG8gYXZvaWQgZG9pbmcKLS8vIGFueSBvZiB0aGlzIHdv
cmsgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgbWFrZSBzdXJlIG9mIGRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dC4gV2Ugc2hvdWxkCi0vLyByZW1vdmUgdGhpcyB3aGVuIHdlIHJlc29sdmUg
PHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCAKLS8vIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQK
LXN0YXRpYyB1aW50NjRfdCBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPSAwOwordm9p
ZCBQYWdlOjphZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykK
K3sKKyAgICAvLyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgd2FudCBhIGZ1bmN0aW9uIHRoYXQgcmVw
bGFjZXMgbV9sYXlvdXRNaWxlc3RvbmVzIGluc3RlYWQgb2YganVzdCBhZGRpbmcgdG8gaXQuCisg
ICAgbV9sYXlvdXRNaWxlc3RvbmVzIHw9IG1pbGVzdG9uZXM7Cit9CiAKIC8vIFRoZXNlIGFyZSBt
YWdpY2FsIGNvbnN0YW50cyB0aGF0IG1pZ2h0IGJlIHR3ZWFrZWQgb3ZlciB0aW1lLgogc3RhdGlj
IGRvdWJsZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CiBzdGF0aWMgZG91YmxlIGdN
YXhpbXVtVW5wYWludGVkQXJlYVJhdGlvID0gMC4wNDsKIAotdm9pZCBQYWdlOjpzZXRSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKHVpbnQ2NF90IHRocmVzaG9sZCkKLXsK
LSAgICBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7Ci19Ci0KIGJv
b2wgUGFnZTo6aXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyAmJiBnUGFpbnRl
ZE9iamVjdENvdW50ZXJUaHJlc2hvbGQgPiAwOworICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHMgJiYgKG1fbGF5b3V0TWlsZXN0b25lcyAmIERpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogfQogCiB2b2lkIFBhZ2U6OnN0YXJ0
Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKQpAQCAtMTEyNiw3ICsxMTIxLDcgQEAg
dm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZQogICAgICAgICBtX2lzQ291
bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgcmVzZXRSZWxl
dmFudFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KCk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmRpZExh
eW91dChEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKTsKICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisjaW5j
bHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5j
bHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRpb24uaCIKQEAg
LTMxNSw4ICszMTYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKKyAg
ICAgICAgdm9pZCBhZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMpOworICAgICAg
ICBMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiBtX2xh
eW91dE1pbGVzdG9uZXM7IH0KKwogICAgICAgICBib29sIGlzQ291bnRpbmdSZWxldmFudFJlcGFp
bnRlZE9iamVjdHMoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNDb3VudGVyVGhyZXNob2xkKHVpbnQ2NF90KTsKICAgICAgICAgdm9pZCBzdGFydENvdW50
aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgcmVzZXRSZWxldmFu
dFBhaW50ZWRPYmplY3RDb3VudGVyKCk7CiAgICAgICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0
KTsKQEAgLTQyOSw2ICs0MzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAKKyAgICAgICAgTGF5b3V0TWlsZXN0
b25lcyBtX2xheW91dE1pbGVzdG9uZXM7CisKICAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3Qq
PiBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0czsKICAgICAgICAgUmVnaW9uIG1fcmVs
ZXZhbnRQYWludGVkUmVnaW9uOwogICAgICAgICBSZWdpb24gbV9yZWxldmFudFVucGFpbnRlZFJl
Z2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMikKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMiBAQAorMjAxMi0wOS0wNSAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgQVBJIGhhcyB0d28gcGFydHMuIEZpcnN0LCB0aGUg
Y2xpZW50IGhhcyB0byBvcHQgaW50byB3aGljaCAKKyAgICAgICAgbGF5b3V0IG1pbGVzdG9uZXMg
dGhleSBhcmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIGFib3V0IHVzaW5nIAorICAgICAgICBXS1Bh
Z2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzIG9yIAorICAgICAgICBXS0J1bmRsZVBhZ2VMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKCkuIFRoZW4sIFdlYktpdCB3aWxsIGNhbGwgCisgICAgICAg
IHRoZSBkaWRMYXlvdXQoV0tMYXlvdXRNaWxlc3RvbmVzKSBjYWxsYmFjayBvbiB0aGUgYXBwcm9w
cmlhdGUgCisgICAgICAgIGNsaWVudHMgd2hlbiB0aGUgc3BlY2lmaWVkIGxheW91dCBtaWxlc3Rv
bmVzIGhhdmUgZmlyZWQuIGRpZExheW91dCAKKyAgICAgICAgdGFrZXMgdGhlIFdLTGF5b3V0TWls
ZXN0b25lcyBiaXQgbWFzaywgd2hpY2ggd2lsbCBpbmRpY2F0ZSB3aGljaCAKKyAgICAgICAgbWls
ZXN0b25lcyBoYXZlIGZpcmVkIHNpbmNlIGl0IGlzIHBvc3NpYmxlIGZvciB0d28gdG8gZmlyZSBh
dCB0aGUgCisgICAgICAgIHNhbWUgdGltZS4KKworICAgICAgICBEZWZpbmUgV0tMYXlvdXRNaWxl
c3RvbmVPcHRpb25zLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BhZ2VMb2FkVHlwZXMuaDoK
KworICAgICAgICBEZWZpbmUgY29udmVyc2lvbnMgYmV0d2VlbiBXS0xheW91dE1pbGVzdG9uZU9w
dGlvbnMgYW5kIAorICAgICAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVPcHRpb25zCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0
b1dLTGF5b3V0TWlsZXN0b25lT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0Ojp0b0xheW91dE1pbGVzdG9uZU9wdGlvbnMpOgorCisgICAgICAgIE5ldyBBUEkuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViTG9hZGVy
Q2xpZW50KToKKworICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lLCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSwgCisgICAgICAgIGFuZCBkaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQgYXJlIG5vdyBpbXBsZW1lbnRlZCB3aXRoIAorICAgICAgICBkaWRM
YXlvdXQgdW5kZXIgdGhlIGhvb2QuIFNvIGlmIHRob3NlIG9sZCBjYWxsYmFja3MgaGF2ZSBiZWVu
IAorICAgICAgICBkZWZpbmVkLCBiZSBzdXJlIHRvIGFkZCB0aGUgYXBwcm9wcmlhdGUgbGF5b3V0
IG1pbGVzdG9uZXMgaGVyZSBmb3IgCisgICAgICAgIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5Lgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIE5ldyBBUEku
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25l
cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZExheW91dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgIE5ldyBBUEkuIEFuZCByZW1vdmUgdGhlIG5vdy11bm5lY2Vzc2FyeSAK
KyAgICAgICAgV0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkLiAK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJp
dmF0ZS5oOgorCisgICAgICAgIE5ldyBBUEkuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisKKyAgICAgICAgUmVtb3Zl
IGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dC4gVGhleSBhcmUgbm93IHJlcGxhY2VkIAorICAgICAgICBieSBkaXNw
YXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25zKQorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50KToKKworICAgICAgICBkaWRGaXJzdExheW91dEZvckZy
YW1lLCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSwgCisgICAgICAgIGFu
ZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYXJlIG5vdyBpbXBsZW1lbnRlZCB3
aXRoIAorICAgICAgICBkaWRMYXlvdXQgdW5kZXIgdGhlIGhvb2QuIFNvIGlmIHRob3NlIG9sZCBj
YWxsYmFja3MgaGF2ZSBiZWVuIAorICAgICAgICBkZWZpbmVkLCBiZSBzdXJlIHRvIGFkZCB0aGUg
YXBwcm9wcmlhdGUgbGF5b3V0IG1pbGVzdG9uZXMgaGVyZSBmb3IgCisgICAgICAgIGJhY2t3YXJk
cy1jb21wYXRpYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlTG9h
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdCk6CisKKyAgICAgICAgQ2FsbCBpbnRvIFdlYkNv
cmUgdG8gc2V0IHRoZSBsYXlvdXQgbWlsZXN0b25lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFjY291bnQgZm9yIHRoZSBu
ZXcgbWVtYmVyIG9mIFBhZ2VMb2FkQ2xpZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvUXRC
dWlsdGluQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBh
Z2U6OlF0QnVpbHRpbkJ1bmRsZVBhZ2UpOgorCiAyMDEyLTA5LTA1ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgdmlzaXRlZCBsaW5rIHRy
YWNraW5nIHdvcmsgaW4gbXVsdGktcHJvY2VzcyBtb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQYWdlTG9hZFR5cGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZTsKIAorZW51bSB7CisgICAga1dLRGlkRmlyc3RMYXlvdXQg
PSAxIDw8IDAsCisgICAga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gMSA8PCAx
LAorICAgIGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQgPSAx
IDw8IDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLTGF5b3V0TWlsZXN0b25lczsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVU
cmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NDgsNiArNzQ5LDM0IEBAIGlubGlu
ZSBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHRvQVAKICAgICByZXR1cm4gd2tUeXBlOwog
fQogCitpbmxpbmUgV0tMYXlvdXRNaWxlc3RvbmVzIHRvV0tMYXlvdXRNaWxlc3RvbmVzKFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3sKKyAgICB1bnNpZ25lZCB3a01pbGVz
dG9uZXMgPSAwOworCisgICAgaWYgKG1pbGVzdG9uZXMgJiBXZWJDb3JlOjpEaWRGaXJzdExheW91
dCkKKyAgICAgICAgd2tNaWxlc3RvbmVzIHw9IGtXS0RpZEZpcnN0TGF5b3V0OworICAgIGlmICht
aWxlc3RvbmVzICYgV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQorICAg
ICAgICB3a01pbGVzdG9uZXMgfD0ga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Owor
ICAgIGlmIChtaWxlc3RvbmVzICYgV2ViQ29yZTo6RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZCkKKyAgICAgICAgd2tNaWxlc3RvbmVzIHw9IGtXS0RpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQ7CisgICAgCisgICAgcmV0dXJuIHdrTWls
ZXN0b25lczsKK30KKworaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgdG9MYXlvdXRN
aWxlc3RvbmVzKFdLTGF5b3V0TWlsZXN0b25lcyB3a01pbGVzdG9uZXMpCit7CisgICAgV2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzID0gMDsKKworICAgIGlmICh3a01pbGVzdG9u
ZXMgJiBrV0tEaWRGaXJzdExheW91dCkKKyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpE
aWRGaXJzdExheW91dDsKKyAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KQorICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkKKyAgICAgICAgbWlsZXN0b25l
cyB8PSBXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xk
OworICAgIAorICAgIHJldHVybiBtaWxlc3RvbmVzOworfQorCiBpbmxpbmUgSW1hZ2VPcHRpb25z
IHRvSW1hZ2VPcHRpb25zKFdLSW1hZ2VPcHRpb25zIHdrSW1hZ2VPcHRpb25zKQogewogICAgIHVu
c2lnbmVkIGltYWdlT3B0aW9ucyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2
ICsxMzYsMTQgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZE5ld0ZpcnN0VmlzdWFsbAogICAg
IG1fY2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCh0b0FQSShwYWdlKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJMb2Fk
ZXJDbGllbnQ6OmRpZExheW91dChXZWJQYWdlUHJveHkqIHBhZ2UsIExheW91dE1pbGVzdG9uZXMg
bWlsZXN0b25lcywgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRp
ZExheW91dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQuZGlkTGF5b3V0KHRvQVBJ
KHBhZ2UpLCB0b1dLTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJl
bW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04MCw5ICs4MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50U2VydmljZUluZm8qLCBBUElPYmplY3QqKTsKICNlbmRp
ZgogCi0gICAgLy8gRklYTUU6IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1l
IGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4K
LSAgICAvLyBUaGUgb25seSByZWFzb24gZm9yIGJvdGggdG8gZXhpc3QgaXMgdG8gZXhwZXJpbWVu
dCB3aXRoIGRpZmZlcmVudCBoZXVyaXN0aWNzIGZvciB0aGUgdGltZSBiZWluZy4KKyAgICAvLyBG
SVhNRTogZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHNob3VsZCBiZSByZW1vdmVk
LiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUKKyAgICAvLyBhcyB3ZWxsLiBUaGV5IGFyZSBib3RoIGJlaW5nIHJlcGxhY2Vk
IGJ5IGRpZExheW91dC4KICAgICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dChXZWJQYWdlUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZExheW91dChXZWJQYWdl
UHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUElPYmplY3QqKTsKICAgICAKICAg
ICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJQcm90ZWN0aW9uU3BhY2UqKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMjc2MTQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgyLDYgKzI4MiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUxv
YWRlckNsaWVuCiAgICAgaWYgKCFsb2FkQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICAv
LyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2YgdGhpcyBjb2RlIGFuZCB0cmFuc2l0aW9u
IGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBpbnN0ZWFkIG9mCisgICAgLy8gZGlkRmly
c3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1l
LiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWlyZWQKKyAgICAvLyBmb3IgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkuCisgICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVz
ID0gMDsKKyAgICBpZiAobG9hZENsaWVudC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICAg
ICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dDsKKyAgICBpZiAobG9hZENs
aWVudC0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCisgICAgICAgIG1p
bGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAg
IGlmIChsb2FkQ2xpZW50LT5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCisgICAg
ICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
QXJlYVRocmVzaG9sZDsKKworICAgIGlmIChtaWxlc3RvbmVzKQorICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0
b25lcyksIG1fcGFnZUlEKTsKKwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0V2lsbEdvVG9CYWNrRm9yd2FyZEl0ZW1DYWxsYmFja0VuYWJsZWQobG9hZENsaWVudC0+
dmVyc2lvbiA+IDApLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTE1MDIsNiArMTUxNiwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIG1fcGFnZUlEKTsKK30KKwog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246
Ok1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBtX3BhZ2luYXRpb25Nb2RlKQpAQCAtMjE0
Miw2ICsyMTY0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROZXdGaXJzdFZpc3VhbGx5Tm8K
ICAgICBtX2xvYWRlckNsaWVudC5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQodGhp
cywgdXNlckRhdGEuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0KHVp
bnQzMl90IGxheW91dE1pbGVzdG9uZXMsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzKQoreworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRV
c2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQo
KSk7CisgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fbG9hZGVyQ2xpZW50LmRpZExheW91dCh0aGlzLCBzdGF0aWNfY2Fz
dDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgdXNlckRhdGEuZ2V0KCkpOwor
fQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHVpbnQ2
NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogewogICAg
IFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNiArNDgzLDggQEAg
cHVibGljOgogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZp
eGVkTGF5b3V0OyB9OwogICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpeGVkTGF5b3V0U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplOyB9OwogCisgICAgdm9pZCBsaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOworCiAgICAg
Ym9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyOyB9CiAgICAgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcigp
IGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXI7IH0KIApAQCAt
NzU1LDYgKzc1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQg
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWROZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdm9pZCBkaWRM
YXlvdXQodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcywgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Kik7CiAgICAgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKik7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTI3
NjE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogICAgIERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIgdXNlckRhdGEpCisgICAgRGlkTGF5b3V0KHVpbnQzMl90IHR5cGUsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgV1RGOjpTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyIHVzZXJEYXRhKQogICAgIERpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRf
dCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKQogICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV1RGOjpTdHJpbmcgdXJsLCBXVEY6OlN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMwLDYgKzMzMCwxMSBAQCBXS1NpemUgV0tQYWdlRml4ZWRMYXlvdXRTaXplKFdLUGFnZVJl
ZiBwCiAgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+Zml4ZWRMYXlvdXRTaXplKCkp
OwogfQogCit2b2lkIFdLUGFnZUxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQoreworICAgIHRvSW1wbChwYWdl
UmVmKS0+bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh0b0xheW91dE1pbGVzdG9uZXMobWlsZXN0
b25lcykpOworfQorCiBib29sIFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVm
IHBhZ2VSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aGFzSG9yaXpvbnRhbFNj
cm9sbGJhcigpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAko
cmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZVdpbGxHb1RvQmFja0ZvcndhcmQKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVBsdWdpbkRpZEZhaWxD
YWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRXJyb3JDb2RlIGVycm9yQ29kZSwgV0tTdHJpbmdS
ZWYgbWltZVR5cGUsIFdLU3RyaW5nUmVmIHBsdWdpbklkZW50aWZpZXIsIFdLU3RyaW5nUmVmIHBs
dWdpblZlcnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlUmVnaXN0ZXJJ
bnRlbnRTZXJ2aWNlRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRM
YXlvdXRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWxlc3Rv
bmVzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBE
ZXByZWNhdGVkCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTExNSw3ICsxMTYsOCBA
QCBzdHJ1Y3QgV0tQYWdlTG9hZGVyQ2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDEKICAgICBXS1Bh
Z2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lOwogCi0gICAgLy8gRklYTUU6IGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4KKyAgICAvLyBGSVhNRTogZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0IHNob3VsZCBiZSByZW1vdmVkLiBXZSBzaG91bGQgY29uc2lkZXIg
cmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAvLyBh
cyB3ZWxsLiBUaGVpciBmdW5jdGlvbmFsaXR5IGlzIHJlcGxhY2VkIGJ5IGRpZExheW91dC4KICAg
ICBXS1BhZ2VEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKIAogICAgIFdL
UGFnZVdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOwpAQCAtMTI2LDYgKzEyOCw4IEBA
IHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAgIC8vIFZlcnNpb24gMgogICAgIFdLUGFn
ZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lOwogICAgIFdLUGFnZVJlZ2lzdGVySW50ZW50
U2VydmljZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJ
bnRlbnRTZXJ2aWNlRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VEaWRMYXlvdXRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dDsKIH07CiB0
eXBlZGVmIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgV0tQYWdlTG9hZGVyQ2xpZW50OwogCkBA
IC00MTksNiArNDIzLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0Rml4ZWRMYXlvdXRTaXpl
KAogV0tfRVhQT1JUIGJvb2wgV0tQYWdlVXNlRml4ZWRMYXlvdXQoV0tQYWdlUmVmIHBhZ2UpOwog
V0tfRVhQT1JUIFdLU2l6ZSBXS1BhZ2VGaXhlZExheW91dFNpemUoV0tQYWdlUmVmIHBhZ2UpOwog
CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdLUGFnZVJl
ZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcyk7CisKIFdLX0VYUE9SVCBib29s
IFdLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JU
IGJvb2wgV0tQYWdlSGFzVmVydGljYWxTY3JvbGxiYXIoV0tQYWdlUmVmIHBhZ2UpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCShy
ZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1NCw3ICsyNTQsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CiAgICAgbV9jbGllbnQuZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHRvQVBJKHBhZ2UpLCAmdXNlckRhdGFUb1Bhc3Ms
IG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVz
ZXJEYXRhVG9QYXNzKSk7Ci19ICAgIAorfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkTGF5b3V0KFdlYlBhZ2UqIHBhZ2UsIExheW91dE1pbGVzdG9uZXMgbWlsZXN0
b25lcywgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQu
ZGlkTGF5b3V0KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bh
c3MgPSAwOworICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSShwYWdlKSwgdG9XS0xheW91dE1p
bGVzdG9uZXMobWlsZXN0b25lcyksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKK30K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29y
bGQqIHdvcmxkKQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Miw2
ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWRMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKICAg
ICB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXZWJQYWdlKiwgV1RGOjpS
ZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2Uq
LCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
OwogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSosIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE4LDYgKzMxOCwxMSBAQCBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2lu
Z1NjYWxlRmFjdG9yCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKTsKIH0KIAordm9pZCBXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3sK
KyAgICB0b0ltcGwocGFnZVJlZiktPmxpc3RlbkZvckxheW91dE1pbGVzdG9uZXModG9MYXlvdXRN
aWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50
ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKQEAgLTM2NywxMSArMzcyLDYgQEAgV0tSZW5kZXJMYXllclJlZiBXS0J1bmRsZVBhZ2VD
b3B5UmVuZGVyTAogICAgIHJldHVybiB0b0FQSShXZWJSZW5kZXJMYXllcjo6Y3JlYXRlKHRvSW1w
bChwYWdlUmVmKSkubGVha1JlZigpKTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWludGVk
T2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIHVpbnQ2NF90IHRo
cmVzaG9sZCkKLXsKLSAgICB0b0ltcGwocGFnZSktPnNldFBhaW50ZWRPYmplY3RzQ291bnRlclRo
cmVzaG9sZCh0aHJlc2hvbGQpOwotfQotCiB2b2lkIFdLQnVuZGxlUGFnZVNldFRyYWNrc1JlcGFp
bnRzKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBib29sIHRyYWNrUmVwYWludHMpCiB7CiAgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRUcmFja3NSZXBhaW50cyh0cmFja1JlcGFpbnRzKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZVdpbGxEZXN0cm95R2wKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5p
dmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJp
bmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIGlu
dGVudFJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJh
bWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiogdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlk
TGF5b3V0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZXMg
bWlsZXN0b25lcywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewogICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnNpb247CkBAIC0xNTMsNiArMTU0LDggQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNs
aWVudCB7CiAgICAgLy8gVmVyc2lvbiAzCiAgICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lOwogICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lOworCisgICAgV0tCdW5kbGVQYWdlRGlkTGF5b3V0Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTGF5b3V0OwogfTsKIHR5cGVkZWYgc3Ry
dWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ7CiAK
QEAgLTQxMCw2ICs0MTMsOCBAQCBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVh
dGVTCiAKIFdLX0VYUE9SVCBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9y
KFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlTGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tMYXlvdXRNaWxl
c3RvbmVzIG1pbGVzdG9uZXMpOworCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVy
SW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BF
Q1RPUikgJiYgRU5BQkxFX0lOU1BFQ1RPUgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw5ICs1OCw2IEBAIFdLX0VYUE9SVCB1aW50NjRfdCBXS0J1bmRsZVBhZ2VH
ZXRSZW5kZXIKIFdLX0VYUE9SVCBXS1JlbmRlck9iamVjdFJlZiBXS0J1bmRsZVBhZ2VDb3B5UmVu
ZGVyVHJlZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tSZW5kZXJMYXllclJl
ZiBXS0J1bmRsZVBhZ2VDb3B5UmVuZGVyTGF5ZXJUcmVlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsK
IAotLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LiBVbHRpbWF0ZWx5IFdlYktpdCBzaG91bGQg
Y2hvb3NlIHRoZSB0aHJlc2hvbGQgaXRzZWxmLgotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdl
U2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xkKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCB1
aW50NjRfdCB0aHJlc2hvbGQpOwotCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRUcmFj
a3NSZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgYm9vbCB0cmFja1JlcGFpbnRzKTsKIFdL
X0VYUE9SVCBib29sIFdLQnVuZGxlUGFnZUlzVHJhY2tpbmdSZXBhaW50cyhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VSZXNldFRyYWNrZWRSZXBhaW50
cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0NCw3ICs1NDQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZp
CiAgICAgICAgIGxvYWRMaXN0ZW5lci0+ZGlkRmluaXNoTG9hZChtX2ZyYW1lKTsKIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1p
bGVzdG9uZXMpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCkBAIC01NTIsNDkgKzU1MiwzOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZpCiAKICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
IAotICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUod2ViUGFnZSwgbV9m
cmFtZSwgdXNlckRhdGEpOwotCi0gICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaXJzdExheW91dEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNl
ckRhdGEuZ2V0KCkpKSk7Ci0KLSAgICBpZiAobV9mcmFtZSA9PSBtX2ZyYW1lLT5wYWdlKCktPm1h
aW5XZWJGcmFtZSgpICYmICF3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zdXBwcmVz
c2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoKSkKLSAgICAgICAgd2ViUGFnZS0+ZHJhd2luZ0FyZWEo
KS0+c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSk7CisgICAgd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRMYXlvdXQod2ViUGFnZSwgbWlsZXN0b25lcywgdXNl
ckRhdGEpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkTGF5
b3V0KG1pbGVzdG9uZXMsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOwogCisgICAgaWYgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdExheW91dCkgeworICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZSBvbGQgZGlkRmly
c3RMYXlvdXQgQVBJIHNpbmNlIHRoaXMgaXMgZG9pbmcgZG91YmxlIGR1dHkgd2l0aCB0aGUKKyAg
ICAgICAgLy8gbmV3IGRpZExheW91dCBBUEkuCisgICAgICAgIHdlYlBhZ2UtPmluamVjdGVkQnVu
ZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1l
LCB1c2VyRGF0YSk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmlyc3RMYXlvdXRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworCisgICAgICAgIGlmICht
X2ZyYW1lID09IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkpIHsKKyAgICAgICAgICAg
IGlmICghd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+c3VwcHJlc3Nlc0luY3JlbWVu
dGFsUmVuZGVyaW5nKCkpCisgICAgICAgICAgICAgICAgd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSk7CisgICAgICAgIH0KKyAgICAKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVy
dGllcyBhcmUgZGlzcGF0Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmly
c3QgbGF5b3V0IGhhcHBlbnMuCi0gICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhlZExheW91dCgp
IHx8IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSB8fCBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXND
aGFuZ2VkKCkpOworICAgICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGllcyBhcmUg
ZGlzcGF0Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3QgbGF5b3V0
IGhhcHBlbnMuCisgICAgICAgIEFTU0VSVCghd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSB8fCBt
X2ZyYW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmRvY3VtZW50KCktPmRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdl
ZCgpKTsKICNlbmRpZgotfQotCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwotCi0gICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNl
ckRhdGEpOwotCi0gICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyKHVzZXJEYXRhLmdldCgpKSkpOwotfQotCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCi17Ci0gICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICBp
ZiAobWlsZXN0b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIHRoZSBvbGQgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgQVBJIHNpbmNlIHRoaXMgaXMgZG9pbmcKKyAg
ICAgICAgLy8gZG91YmxlIGR1dHkgd2l0aCB0aGUgbmV3IGRpZExheW91dCBBUEkuCisgICAgICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOworICAgICAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVV
c2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgfQogCi0gICAgLy8gTm90
aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KHdlYlBhZ2UsIHVzZXJE
YXRhKTsKLSAgICAKLSAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dChJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
KyAgICBpZiAobWlsZXN0b25lcyAmIERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFU
aHJlc2hvbGQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGdvIGF3YXkgd2hlbiB3ZSBy
ZW1vdmUgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LgorICAgICAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCh3ZWJQYWdlLCB1c2VyRGF0YSk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0KIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQoKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw5ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5
b3V0KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNiArMzk3LDIwIEBAIHZvaWQgV2ViUGFnZTo6
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRm8KIAogdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5q
ZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KiBjbGllbnQp
CiB7CisgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQg
dHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgorICAg
IC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCisgICAgLy8gZm9y
IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25l
cyA9IDA7CisgICAgaWYgKGNsaWVudC0+ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAg
bWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dDsKKyAgICBpZiAoY2xpZW50LT5k
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAgbWlsZXN0b25l
cyB8PSBXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7CisgICAgaWYgKGNs
aWVudC0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQorICAgICAgICBtaWxlc3Rv
bmVzIHw9IFdlYkNvcmU6OkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQ7CisKKyAgICBpZiAobWlsZXN0b25lcykKKyAgICAgICAgbGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyhtaWxlc3RvbmVzKTsKKwogICAgIG1fbG9hZGVyQ2xpZW50LmluaXRpYWxpemUoY2xpZW50
KTsKIH0KIApAQCAtNTYxLDEzICs1NzUsNiBAQCB1aW50NjRfdCBXZWJQYWdlOjpyZW5kZXJUcmVl
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+cmVuZGVyVHJlZVNpemUoKS50cmVlU2l6
ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRQYWludGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQo
dWludDY0X3QgdGhyZXNob2xkKQotewotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm47
Ci0gICAgbV9wYWdlLT5zZXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNDb3VudGVyVGhyZXNob2xk
KHRocmVzaG9sZCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0
cmFja1JlcGFpbnRzKQogewogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3
KCkpCkBAIC0xMTI0LDYgKzExMzEsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZXRGaXhlZExheW91dFNp
emUoY29uc3QgSQogICAgICAgICB2aWV3LT5mb3JjZUxheW91dCgpOwogfQogCit2b2lkIFdlYlBh
Z2U6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXModWludDMyX3QgbWlsZXN0b25lcykKK3sKKyAg
ICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5hZGRMYXlvdXRN
aWxlc3RvbmVzKHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KG1pbGVzdG9uZXMpKTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpzZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKQogewogICAg
IFBhZ2luYXRpb24gcGFnaW5hdGlvbiA9IG1fcGFnZS0+cGFnaW5hdGlvbigpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxMjc2
MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAgICAgdWludDY0X3QgcmVuZGVy
VHJlZVNpemUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVz
aG9sZCh1aW50NjRfdCk7CiAKICAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJvb2wpOwogICAg
IGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CkBAIC0zMDksNiArMzA4LDggQEAgcHVi
bGljOgogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZUZpeGVk
TGF5b3V0OyB9CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwogCisgICAgdm9pZCBsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHVpbnQzMl90IC8q
IExheW91dE1pbGVzdG9uZXMgKi8pOworCiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uTW9kZSh1aW50
MzJfdCAvKiBXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlICovKTsKICAgICB2b2lkIHNldFBhZ2lu
YXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCk7CiAgICAgdm9pZCBzZXRQYWdlTGVuZ3RoKGRv
dWJsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTE0MCw2ICsxNDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRVc2VGaXhl
ZExheW91dChib29sIGZpeGVkKQogICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRT
aXplIHNpemUpCiAKKyAgICBMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHVpbnQzMl90IG1pbGVz
dG9uZXMpCisKICAgICBTZXRQYWdpbmF0aW9uTW9kZSh1aW50MzJfdCBtb2RlKTsKICAgICBTZXRQ
YWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKTsKICAg
ICBTZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAkocmV2aXNp
b24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5k
bGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBRdEJ1aWx0aW5CdW5k
bGVQYWdlOjpRdEJ1aWx0aW5CdW5kbGVQYWdlCiAgICAgICAgIDAsIC8vIHNob3VsZEZvcmNlVW5p
dmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZQogICAgICAgICAwLCAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZQorICAg
ICAgICAwLCAvLyBkaWRMYXlvdXQKICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2Fk
ZXJDbGllbnQobV9wYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjMzKQorKysgU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA1
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAg
ICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAg
ICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhlaXIgZnVuY3Rp
b25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExh
eW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oOgorICAgICAgICAoRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5KToKKworICAgICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBp
bnRvIGdldHRpbmcgYW55IG9mIHRoZSAKKyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlm
aWNhdGlvbnMuCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aW5pdCk6CisKIDIwMTItMDktMDUgIExlbyBZYW5n
ICA8bGVveWFuZ0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSb3RhdGlvbiBhbmQg
dGhlbiByZWxvYWQgY2F1c2VzIGxlc3Mgc2l6ZWQgd2VicGFnZSAoUFIgMTkwNDY5KQpJbmRleDog
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMjc2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NDUsNiArNTQ1LDggQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBX
ZWJTdHJpbgogICAgIG1fd2ViU2V0dGluZ3MtPnNldFVzZXJBZ2VudFN0cmluZyhkZWZhdWx0VXNl
ckFnZW50KCkpOwogICAgIG1fcGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IobV93ZWJTZXR0aW5n
cy0+ZGV2aWNlUGl4ZWxSYXRpbygpKTsKIAorICAgIG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25l
cyhEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIG1fdGFwSGlnaGxpZ2h0ID0gRGVmYXVsdFRhcEhpZ2hsaWdodDo6
Y3JlYXRlKHRoaXMpOwogICAgIG1fc2VsZWN0aW9uT3ZlcmxheSA9IFNlbGVjdGlvbk92ZXJsYXk6
OmNyZWF0ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODQ4LDM1ICs4NDgsMzcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OnBvc3RQcgogICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlMb2FkUHJv
Z3Jlc3MobV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLT5lc3RpbWF0ZWRQcm9ncmVzcygpICog
MTAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7
CiAgICAgaWYgKCFpc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJk
aXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCIpOworICAgIGlmIChtaWxlc3Rv
bmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSB7CisgICAgICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgImRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Iik7CiAKLSAgICByZWFkeVRvUmVu
ZGVyKHRydWUpOworICAgICAgICByZWFkeVRvUmVuZGVyKHRydWUpOwogCi0gICAgLy8gRm9yIEZy
YW1lTG9hZFR5cGVTYW1lIG9yIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCBsb2FkLCB0aGUgbGF5b3V0
IHRpbWVyIGNhbiBiZSBmaXJlZCB3aGljaCBjYW4gY2FsbAotICAgIC8vIGRpc3BhdGNoRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgYWZ0ZXIgdGhlIGxvYWQgRmluaXNoZWQgc3RhdGUs
IGluIHdoaWNoIGNhc2UgdGhlIHdlYiBwYWdlCi0gICAgLy8gd2lsbCBoYXZlIG5vIGNoYW5jZSB0
byB6b29tIHRvIGluaXRpYWwgc2NhbGUuIFNvIHdlIHNob3VsZCBnaXZlIGl0IGEgY2hhbmNlLCBv
dGhlcndpc2UgdGhlIHNjYWxlIG9mCi0gICAgLy8gdGhlIHdlYiBwYWdlIGNhbiBiZSBpbmNvcnJl
Y3QuCi0gICAgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlID0gbV9mcmFtZS0+bG9hZGVyKCkt
PmxvYWRUeXBlKCk7Ci0gICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPmxvYWRTdGF0ZSgpID09IFdl
YlBhZ2VQcml2YXRlOjpGaW5pc2hlZCAmJiAoZnJhbWVMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBl
U2FtZSB8fCBmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCkpCi0gICAgICAg
IG1fd2ViUGFnZVByaXZhdGUtPnNldFNob3VsZFpvb21Ub0luaXRpYWxTY2FsZUFmdGVyTG9hZEZp
bmlzaGVkKHRydWUpOwotCi0gICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPnNob3VsZFpvb21Ub0lu
aXRpYWxTY2FsZU9uTG9hZCgpKSB7Ci0gICAgICAgIEJhY2tpbmdTdG9yZVByaXZhdGUqIGJhY2tp
bmdTdG9yZVByaXZhdGUgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2JhY2tpbmdTdG9yZS0+ZDsKLSAg
ICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+em9vbVRvSW5pdGlhbFNjYWxlT25Mb2FkKCk7IC8vIFNl
dCB0aGUgcHJvcGVyIHpvb20gbGV2ZWwgZmlyc3QuCi0gICAgICAgIGJhY2tpbmdTdG9yZVByaXZh
dGUtPmNsZWFyVmlzaWJsZVpvb20oKTsgLy8gQ2xlYXIgdGhlIHZpc2libGUgem9vbSBzaW5jZSB3
ZSdyZSBleHBsaWNpdGx5IHJlbmRlcmluZytibGl0dGluZyBiZWxvdy4KLSAgICAgICAgaWYgKGJh
Y2tpbmdTdG9yZVByaXZhdGUtPnJlbmRlclZpc2libGVDb250ZW50cygpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWJhY2tpbmdTdG9yZVByaXZhdGUtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93
KCkpCi0gICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUHJpdmF0ZS0+YmxpdFZpc2libGVDb250
ZW50cygpOwotICAgICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5vdGlmeUNv
bnRlbnRSZW5kZXJlZChiYWNraW5nU3RvcmVQcml2YXRlLT52aXNpYmxlQ29udGVudHNSZWN0KCkp
OworICAgICAgICAvLyBGb3IgRnJhbWVMb2FkVHlwZVNhbWUgb3IgRnJhbWVMb2FkVHlwZVN0YW5k
YXJkIGxvYWQsIHRoZSBsYXlvdXQgdGltZXIgY2FuIGJlIGZpcmVkIHdoaWNoIGNhbiBjYWxsCisg
ICAgICAgIC8vIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkgYWZ0ZXIg
dGhlIGxvYWQgRmluaXNoZWQgc3RhdGUsIGluIHdoaWNoIGNhc2UgdGhlIHdlYiBwYWdlCisgICAg
ICAgIC8vIHdpbGwgaGF2ZSBubyBjaGFuY2UgdG8gem9vbSB0byBpbml0aWFsIHNjYWxlLiBTbyB3
ZSBzaG91bGQgZ2l2ZSBpdCBhIGNoYW5jZSwgb3RoZXJ3aXNlIHRoZSBzY2FsZSBvZgorICAgICAg
ICAvLyB0aGUgd2ViIHBhZ2UgY2FuIGJlIGluY29ycmVjdC4KKyAgICAgICAgRnJhbWVMb2FkVHlw
ZSBmcmFtZUxvYWRUeXBlID0gbV9mcmFtZS0+bG9hZGVyKCktPmxvYWRUeXBlKCk7CisgICAgICAg
IGlmIChtX3dlYlBhZ2VQcml2YXRlLT5sb2FkU3RhdGUoKSA9PSBXZWJQYWdlUHJpdmF0ZTo6Rmlu
aXNoZWQgJiYgKGZyYW1lTG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVNhbWUgfHwgZnJhbWVMb2Fk
VHlwZSA9PSBGcmFtZUxvYWRUeXBlU3RhbmRhcmQpKQorICAgICAgICAgICAgbV93ZWJQYWdlUHJp
dmF0ZS0+c2V0U2hvdWxkWm9vbVRvSW5pdGlhbFNjYWxlQWZ0ZXJMb2FkRmluaXNoZWQodHJ1ZSk7
CisKKyAgICAgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPnNob3VsZFpvb21Ub0luaXRpYWxTY2Fs
ZU9uTG9hZCgpKSB7CisgICAgICAgICAgICBCYWNraW5nU3RvcmVQcml2YXRlKiBiYWNraW5nU3Rv
cmVQcml2YXRlID0gbV93ZWJQYWdlUHJpdmF0ZS0+bV9iYWNraW5nU3RvcmUtPmQ7CisgICAgICAg
ICAgICBtX3dlYlBhZ2VQcml2YXRlLT56b29tVG9Jbml0aWFsU2NhbGVPbkxvYWQoKTsgLy8gU2V0
IHRoZSBwcm9wZXIgem9vbSBsZXZlbCBmaXJzdC4KKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZVBy
aXZhdGUtPmNsZWFyVmlzaWJsZVpvb20oKTsgLy8gQ2xlYXIgdGhlIHZpc2libGUgem9vbSBzaW5j
ZSB3ZSdyZSBleHBsaWNpdGx5IHJlbmRlcmluZytibGl0dGluZyBiZWxvdy4KKyAgICAgICAgICAg
IGlmIChiYWNraW5nU3RvcmVQcml2YXRlLT5yZW5kZXJWaXNpYmxlQ29udGVudHMoKSkgeworICAg
ICAgICAgICAgICAgIGlmICghYmFja2luZ1N0b3JlUHJpdmF0ZS0+c2hvdWxkRGlyZWN0UmVuZGVy
aW5nVG9XaW5kb3coKSkKKyAgICAgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlUHJpdmF0ZS0+
YmxpdFZpc2libGVDb250ZW50cygpOworICAgICAgICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUt
Pm1fY2xpZW50LT5ub3RpZnlDb250ZW50UmVuZGVyZWQoYmFja2luZ1N0b3JlUHJpdmF0ZS0+dmlz
aWJsZUNvbnRlbnRzUmVjdCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAot
ICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQoKTsKKyAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5vdGlmeUZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgJKHJldmlzaW9uIDEy
NzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKTsK
ICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5Nwor
ICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQg
CisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5k
IGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0
Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQg
YnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZExheW91dCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRJbXBsKToKKworICAg
ICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRpbmcgYW55IG9mIHRoZSAK
KyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMuCisgICAgICAgICogc3Jj
L1dlYkhlbHBlclBsdWdpbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIZWxwZXJQbHVn
aW5JbXBsOjppbml0UGFnZSk6CisgICAgICAgICogc3JjL1dlYlBhZ2VQb3B1cEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUG9wdXBJbXBsOjppbml0UGFnZSk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZp
ZXdJbXBsKToKKwogMjAxMi0wOS0wNSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2Ug
ZnJvbSBQbGF0Zm9ybVN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYxLDE1ICs4NjEsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkRgogICAgIC8vIHByb3Zpc2lvbmFsIGxvYWQgc3VjY2VlZHMgb3IgZmFp
bHMsIG5vdCB0aGUgInJlYWwiIG9uZS4KIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
c3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKIHsKLSAgICBpZiAo
bV93ZWJGcmFtZS0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRG
aXJzdExheW91dChtX3dlYkZyYW1lKTsKLX0KKyAgICBpZiAoIW1fd2ViRnJhbWUtPmNsaWVudCgp
KQorICAgICAgICByZXR1cm47CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRj
aERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCi17Ci0gICAgaWYgKG1fd2ViRnJhbWUt
PmNsaWVudCgpKQorICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlvdXQpCisgICAgICAg
IG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRGaXJzdExheW91dChtX3dlYkZyYW1lKTsKKyAgICBp
ZiAobWlsZXN0b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKICAgICAgICAg
bV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChtX3dl
YkZyYW1lKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsOCArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlv
dXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lcyk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVh
dGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hTaG93KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGVscGVyUGx1Z2luSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSGVscGVy
UGx1Z2luSW1wbC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkhlbHBlclBsdWdpbkltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiAr
MTg0LDkgQEAgYm9vbCBXZWJIZWxwZXJQbHVnaW5JbXBsOjppbml0UGFnZShXZWJLaQogICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCktPnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwogCisgICAgdW5zaWduZWQgbGF5b3V0
TWlsZXN0b25lcyA9IERpZEZpcnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0OworICAgIG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNfY2FzdDxMYXlvdXRN
aWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7CisKICAgICB3ZWJWaWV3LT5jbGllbnQoKS0+
aW5pdGlhbGl6ZUhlbHBlclBsdWdpbldlYkZyYW1lKHRoaXMpOwogCiAgICAgLy8gVGhlIHBhZ2Un
cyBtYWluIGZyYW1lIHdhcyBzZXQgaW4gaW5pdGlhbGl6ZUZyYW1lKCkgYXMgYSByZXN1bHQgb2Yg
dGhlIGFib3ZlIGNhbGwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
UG9wdXBJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQYWdlUG9wdXBJbXBsLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2
ICsxODIsOSBAQCBib29sIFdlYlBhZ2VQb3B1cEltcGw6OmluaXRQYWdlKCkKICAgICBtX3BhZ2Ut
PnNldERldmljZVNjYWxlRmFjdG9yKG1fd2ViVmlldy0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXREZXZpY2VTdXBwb3J0c1RvdWNoKG1fd2ViVmlldy0+
cGFnZSgpLT5zZXR0aW5ncygpLT5kZXZpY2VTdXBwb3J0c1RvdWNoKCkpOwogCisgICAgdW5zaWdu
ZWQgbGF5b3V0TWlsZXN0b25lcyA9IERpZEZpcnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0OworICAgIG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNfY2Fz
dDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSk7CisKICAgICBzdGF0aWMgQ29u
dGV4dEZlYXR1cmVzQ2xpZW50KiBwYWdlUG9wdXBGZWF0dXJlc0NsaWVudCA9ICBuZXcgUGFnZVBv
cHVwRmVhdHVyZXNDbGllbnQoKTsKICAgICBwcm92aWRlQ29udGV4dEZlYXR1cmVzVG8obV9wYWdl
LmdldCgpLCBwYWdlUG9wdXBGZWF0dXJlc0NsaWVudCk7CiAgICAgc3RhdGljIEZyYW1lTG9hZGVy
Q2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gIG5ldyBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw2ICs0ODAsOSBAQCBXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogCiAKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShw
YWdlR3JvdXBOYW1lKTsKIAorICAgIHVuc2lnbmVkIGxheW91dE1pbGVzdG9uZXMgPSBEaWRGaXJz
dExheW91dCB8IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBtX3BhZ2UtPmFk
ZExheW91dE1pbGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obGF5b3V0TWls
ZXN0b25lcykpOworCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBzZXRWaXNpYmlsaXR5U3RhdGUobV9jbGllbnQtPnZpc2liaWxpdHlT
dGF0ZSgpLCB0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMykKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3
IEBACisyMDEyLTA5LTA1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAg
TmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmly
c3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3Bh
dGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlvbnMpCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRF
ZmwpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0IGludG8gZ2V0dGluZyBh
bnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90aWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
KwogMjAxMi0wOS0wNSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gUmVtb3ZlICcrPScgdXNhZ2UgaW4gU3RyaW5nCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCwxNCAr
Njc4LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmkKICAgICBl
d2tfZnJhbWVfbG9hZF9kb2N1bWVudF9maW5pc2hlZChtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9u
ZXMpCiB7Ci0gICAgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfZmluaXNoZWQobV9mcmFtZSk7
Ci19Ci0KLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkKLXsKLSAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9ub25l
bXB0eV9maW5pc2hlZChtX2ZyYW1lKTsKKyAgICBpZiAobWlsZXN0b25lcyAmIERpZEZpcnN0TGF5
b3V0KQorICAgICAgICBld2tfZnJhbWVfbG9hZF9maXJzdGxheW91dF9maW5pc2hlZChtX2ZyYW1l
KTsKKyAgICBpZiAobWlsZXN0b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkK
KyAgICAgICAgZXdrX2ZyYW1lX2xvYWRfZmlyc3RsYXlvdXRfbm9uZW1wdHlfZmluaXNoZWQobV9m
cmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoU2hvdygpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNiw4ICsxMDYsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFt
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzKTsKIAogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3Bh
dGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzcsNiArNzc3LDkgQEAgc3RhdGljIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogX2V3a192aWV3XwogCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzID0gcHJpdi0+
cGFnZS0+c2V0dGluZ3MoKTsKIAorICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcyA9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0IHwgV2ViQ29yZTo6RGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIHByaXYtPnBhZ2UtPmFkZExheW91dE1pbGVzdG9u
ZXMobGF5b3V0TWlsZXN0b25lcyk7CisKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy53aWR0
aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAgcHJpdi0+dmll
d3BvcnRBcmd1bWVudHMuaGVpZ2h0ID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVl
QXV0bzsKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2
aXNpb24gMTI3NjMzKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBw
bGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTM5NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCBhbmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAg
ICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cg
cmVwbGFjZWQgYnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExheW91dCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKEZyYW1l
TG9hZGVyQ2xpZW50KToKKworICAgICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRv
IGdldHRpbmcgYW55IG9mIHRoZSAKKyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNh
dGlvbnMuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2luaXQpOgorCiAyMDEyLTA5LTA1ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8
a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtEUlRdIExUQzo6IE1vdmUgcHJpbnRp
bmcgcmVsYXRlZCBBUElzIGZyb20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gSW50ZXJuYWxzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1MSwxNyArODUxLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmluaXMKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViVmlldywgImRvY3VtZW50LWxv
YWQtZmluaXNoZWQiLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWls
ZXN0b25lcyBtaWxlc3RvbmVzKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG5vdGlmeVN0YXR1cyhtX2ZyYW1lLCBXRUJLSVRfTE9BRF9GSVJT
VF9WSVNVQUxMWV9OT05fRU1QVFlfTEFZT1VUKTsKKyAgICBpZiAobWlsZXN0b25lcyAmIERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKKyAgICAgICAgbm90aWZ5U3RhdHVzKG1fZnJhbWUs
IFdFQktJVF9MT0FEX0ZJUlNUX1ZJU1VBTExZX05PTl9FTVBUWV9MQVlPVVQpOwogfQogCiB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShy
ZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0
TGF5b3V0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQo
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpG
cmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24m
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysg
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjE0LDYgKzM2MTQsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChX
ZWJLaXRXCiAKICAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKIAor
ICAgIHByaXYtPmNvcmVQYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCk7CisKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgaWYgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpKSB7CiAgICAg
ICAgIHByaXYtPmdlb2xvY2F0aW9uQ2xpZW50TW9jayA9IGFkb3B0UHRyKG5ldyBHZW9sb2NhdGlv
bkNsaWVudE1vY2spOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3NjE0KQorKysg
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAgICBO
ZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAgICAg
IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJlc3Bv
bmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbmV3IEFQSSBoYXMgdHdvIHBh
cnRzLiBGaXJzdCwgdGhlIGNsaWVudCBoYXMgdG8gb3B0IGludG8gd2hpY2ggCisgICAgICAgIGxh
eW91dCBtaWxlc3RvbmVzIHRoZXkgYXJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBhYm91dCB1c2lu
ZyAKKyAgICAgICAgW1dlYlZpZXcgX2xheW91dE1pbGVzdG9uZXNdLiBUaGVuLCBXZWJLaXQgd2ls
bCBjYWxsIAorICAgICAgICB0aGUgV2ViRnJhbWVMb2FkZXIgZGVsZWdhdGUncyBkaWRMYXlvdXQo
V2ViTGF5b3V0TWlsZXN0b25lcykgCisgICAgICAgIGNhbGxiYWNrIHdoZW4gdGhlIHNwZWNpZmll
ZCBsYXlvdXQgbWlsZXN0b25lcyBoYXZlIGZpcmVkLiAKKyAgICAgICAgZGlkTGF5b3V0IHRha2Vz
IHRoZSBXZWJMYXlvdXRNaWxlc3RvbmVzIGJpdCBtYXNrLCB3aGljaCB3aWxsIAorICAgICAgICBp
bmRpY2F0ZSB3aGljaCBtaWxlc3RvbmVzIGhhdmUgZmlyZWQgc2luY2UgaXQgaXMgcG9zc2libGUg
Zm9yIHR3byAKKyAgICAgICAgdG8gZmlyZSBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIFJl
bW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hEaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZXkgYXJlIG5vdyByZXBsYWNlZCAKKyAgICAgICAgYnkg
ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcykKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKworICAg
ICAgICBBZGQgbmV3IGZ1bmN0aW9uIHRvIHRoZSBkZWxlZ2F0ZSBmb3IgZGlkTGF5b3V0LgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSk6CisKKyAgICAgICAg
V2UgbmVlZCBhIGRlbGVnYXRlIHRlbXBsYXRlIHRoYXQgdGFrZXMgYW4gTlNVSW50ZWdlci4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tOgorICAg
ICAgICAoQ2FsbERlbGVnYXRlKToKKyAgICAgICAgKENhbGxGcmFtZUxvYWREZWxlZ2F0ZSk6CisK
KyAgICAgICAgQ29udmVydCBiZXR3ZWVuIFdlYkNvcmUgYW5kIFdlYktpdCB2ZXJzaW9ucyBvZiB0
aGUgYml0IG1hc2suCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29y
ZUxheW91dE1pbGVzdG9uZXMpOgorICAgICAgICAoa2l0TGF5b3V0TWlsZXN0b25lcyk6CisKKyAg
ICAgICAgQWRkIG5ldyBkZWxlZ2F0ZSwgYW5kIHNldCB0aGUgYXBwcm9wcmlhdGUgbGF5b3V0IG1p
bGVzdG9uZXMgaW4gCisgICAgICAgIFdlYkNvcmUgYmFzZWQgb24gb2xkIGRlbGVnYXRlcyBoYXZp
bmcgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25zXSk6CisKKyAgICAgICAgQ2FsbCBpbnRvIFdlYkNvcmUuCisg
ICAgICAgICgtW1dlYlZpZXcgX2xpc3RlbkZvckxheW91dE1pbGVzdG9uZXM6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2xheW91dE1pbGVzdG9uZXNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAx
Mi0wOS0wMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQg
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXIuaD4uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4ICsxMDgsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcykgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFNob3coKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMjc2
MTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYyLDI5ICs2NjIsMzYgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogICAgIFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+
aW50ZXJuYWxMb2FkRGVsZWdhdGUgd2ViRnJhbWU6bV93ZWJGcmFtZS5nZXQoKSBkaWRGaW5pc2hM
b2FkV2l0aEVycm9yOm5pbF07CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYkZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwotICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMpCi0gICAgICAgIENhbGxGcmFtZUxv
YWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZEZpcnN0TGF5b3V0SW5GcmFtZUZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpcnN0TGF5b3V0SW5GcmFtZTopLCBtX3dlYkZy
YW1lLmdldCgpKTsKLSAgICAKLSAgICAvLyBTZWUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQuCi0gICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxW
aWV3ID0gW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZpZXddOwot
ICAgIGlmIChbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSBkcmF3c0JhY2tncm91bmRdKQot
ICAgICAgICBbc2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91bmQ6WUVTXTsKKworICAgIGlmIChp
bXBsZW1lbnRhdGlvbnMtPmRpZExheW91dEZ1bmMpCisgICAgICAgIENhbGxGcmFtZUxvYWREZWxl
Z2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZExheW91dEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OmRpZExheW91dDopLCBraXRMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKKwor
ICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlvdXQpIHsKKyAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBjb25zaWRlciByZW1vdmluZyB0aGUgb2xkIGRpZEZpcnN0TGF5b3V0IEFQSSBz
aW5jZSB0aGlzIGlzIGRvaW5nIGRvdWJsZSBkdXR5IHdpdGggdGhlCisgICAgICAgIC8vIG5ldyBk
aWRMYXlvdXQgQVBJLgorICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRGaXJzdExheW91
dEluRnJhbWVGdW5jKQorICAgICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVu
dGF0aW9ucy0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOworCisgICAg
ICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4K
KyAgICAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3ICpzY3JvbGxWaWV3ID0gW21fd2ViRnJh
bWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgX3Njcm9sbFZpZXddOworICAgICAgICBpZiAoW2dl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgZHJhd3NCYWNrZ3JvdW5kXSkKKyAgICAgICAgICAg
IFtzY3JvbGxWaWV3IHNldERyYXdzQmFja2dyb3VuZDpZRVNdOwogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgIFtzY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwotICAgIFtzY3JvbGxW
aWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUF1dG9t
YXRpY107CisgICAgICAgIFtzY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpO
U1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOworICAgICAgICBbc2Nyb2xsVmlldyBzZXRIb3Jp
em9udGFsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWNdOwogI2Vu
ZGlmCi19CisgICAgfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpCi17Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IGdl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7Ci0gICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7Ci0gICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZUZ1bmMpCi0gICAgICAgIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEluRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOworICAgIGlm
IChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIG9sZCBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSBBUEkgc2luY2UgdGhpcyBpcyBkb2luZworICAg
ICAgICAvLyBkb3VibGUgZHV0eSB3aXRoIHRoZSBuZXcgZGlkTGF5b3V0IEFQSS4KKyAgICAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFt
ZUZ1bmMpCisgICAgICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25z
LT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYywgd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZTopLCBt
X3dlYkZyYW1lLmdldCgpKTsKKyAgICB9CiB9CiAKIEZyYW1lKiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hpbmcuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Myw2ICs3Myw3IEBAIHN0cnVjdCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVu
dGF0aW8KICAgICBJTVAgZGlkRmluaXNoTG9hZEZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlkRmly
c3RMYXlvdXRJbkZyYW1lRnVuYzsKICAgICBJTVAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0SW5GcmFtZUZ1bmM7CisgICAgSU1QIGRpZExheW91dEZ1bmM7CiAgICAgSU1QIGRpZFJlY2Vp
dmVJY29uRm9yRnJhbWVGdW5jOwogICAgIElNUCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZUZ1bmM7CiAgICAgSU1QIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jOwpAQCAtMTIzLDYg
KzEyNCw3IEBAIEJPT0wgQ2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wKIEJPT0wg
Q2FsbFVJRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wsIFdlYlZpZXcgKiwgU0VMLCBpZCwg
Qk9PTCwgaWQpOwogCiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNF
TCk7CitpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgTlNVSW50
ZWdlcik7CiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQp
OwogaWQgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCk7
CiBpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkLCBp
ZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0JKHJldmlzaW9uIDEyNzYxNCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hp
bmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTggQEAgc3RhdGljIGlubGluZSBp
ZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbQogICAgIHJldHVybiBuaWw7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgaWQgQ2FsbERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwg
aWQgZGVsZWdhdGUsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBpbnRlZ2VyKQoreworICAgIGlm
ICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQHRyeSB7CisgICAgICAgIHJl
dHVybiBpbXBsZW1lbnRhdGlvbihkZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIGludGVnZXIpOwor
ICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgeworICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxl
Z2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIG5p
bDsKK30KKwogc3RhdGljIGlubGluZSBpZCBDYWxsRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9u
LCBXZWJWaWV3ICpzZWxmLCBpZCBkZWxlZ2F0ZSwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QpCiB7
CiAgICAgaWYgKCFkZWxlZ2F0ZSkKQEAgLTQ1MCw2ICs0NjIsMTEgQEAgaWQgQ2FsbEZyYW1lTG9h
ZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdAogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5mcmFtZUxvYWREZWxlZ2F0ZSwgc2VsZWN0
b3IpOwogfQogCitpZCBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVudGF0aW9uLCBX
ZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgaW50ZWdlcikKK3sKKyAgICBy
ZXR1cm4gQ2FsbERlbGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+
ZnJhbWVMb2FkRGVsZWdhdGUsIHNlbGVjdG9yLCBpbnRlZ2VyKTsKK30KKwogaWQgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVj
dG9yLCBpZCBvYmplY3QpCiB7CiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlv
biwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRlLCBzZWxlY3Rvciwgb2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEy
NzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzkyLDYgKzM5MiwyMCBAQCBGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5k
T3B0aW9ucyBvCiAgICAgICAgIHwgKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1N0YXJ0SW5TZWxl
Y3Rpb24gPyBTdGFydEluU2VsZWN0aW9uIDogMCk7CiB9CiAKK0xheW91dE1pbGVzdG9uZXMgY29y
ZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQoreworICAg
IHJldHVybiAobWlsZXN0b25lcyAmIFdlYkRpZEZpcnN0TGF5b3V0ID8gRGlkRmlyc3RMYXlvdXQg
OiAwKQorICAgICAgICB8IChtaWxlc3RvbmVzICYgV2ViRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0ID8gRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IDogMCkKKyAgICAgICAgfCAo
bWlsZXN0b25lcyAmIFdlYkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hv
bGQgPyBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIDogMCk7Cit9
CisKK1dlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3Rv
bmVzIG1pbGVzdG9uZXMpCit7CisgICAgcmV0dXJuIChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlv
dXQgPyBXZWJEaWRGaXJzdExheW91dCA6IDApCisgICAgICAgIHwgKG1pbGVzdG9uZXMgJiBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgPyBXZWJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgOiAwKQorICAgICAgICB8IChtaWxlc3RvbmVzICYgRGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZCA/IFdlYkRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0
c0FyZWFUaHJlc2hvbGQgOiAwKTsKK30KKwogQGludGVyZmFjZSBXZWJWaWV3IChXZWJGaWxlSW50
ZXJuYWwpCiAtIChmbG9hdClfZGV2aWNlU2NhbGVGYWN0b3I7CiAtIChCT09MKV9pc0xvYWRpbmc7
CkBAIC0xNjE4LDYgKzE2MzIsNyBAQCAtICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50CiAgICAgY2FjaGUtPmRpZEZpbmlzaExvYWRGb3JGcmFtZUZ1bmMgPSBnZXRNZXRob2Qo
ZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpbmlzaExvYWRGb3JGcmFtZTopKTsKICAg
ICBjYWNoZS0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RMYXlvdXRJbkZyYW1lOikpOwogICAgIGNhY2hlLT5k
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxl
Z2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5G
cmFtZTopKTsKKyAgICBjYWNoZS0+ZGlkTGF5b3V0RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwg
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkTGF5b3V0OikpOwogICAgIGNhY2hlLT5kaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOikpOwogICAgIGNhY2hlLT5kaWRSZWNl
aXZlSWNvbkZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lRnVuYyA9IGdldE1ldGhvZChkZWxl
Z2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU6KSk7CkBAIC0xNjI5LDYgKzE2NDQsMTkgQEAgLSAodm9pZClfY2Fj
aGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudAogICAgIGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50OikpOwogICAgIGNhY2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRl
bnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQ6KSk7CiAgICAgY2FjaGUtPmRpZERldGVjdFhTU0Z1bmMgPSBnZXRNZXRob2Qo
ZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZERldGVjdFhTUzopKTsKKworICAgIC8vIEl0
IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24gYWxs
IGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKKyAgICAvLyBkaWRGaXJzdExh
eW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUuIElu
IHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZAorICAgIC8vIGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eS4KKyAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKKyAgICBpZiAocGFnZSkg
eworICAgICAgICB1bnNpZ25lZCBtaWxlc3RvbmVzID0gMDsKKyAgICAgICAgaWYgKGNhY2hlLT5k
aWRGaXJzdExheW91dEluRnJhbWVGdW5jKQorICAgICAgICAgICAgbWlsZXN0b25lcyB8PSBEaWRG
aXJzdExheW91dDsKKyAgICAgICAgaWYgKGNhY2hlLT5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRJbkZyYW1lRnVuYykKKyAgICAgICAgICAgIG1pbGVzdG9uZXMgfD0gRGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0OworICAgICAgICBwYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHN0
YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KG1pbGVzdG9uZXMpKTsKKyAgICB9CiB9CiAKIC0g
KHZvaWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpAQCAtMjg1OCw2
ICsyODg2LDI0IEBAIC0gKFdlYlBhZ2luYXRpb25Nb2RlKV9wYWdpbmF0aW9uTW9kZQogICAgIHJl
dHVybiBXZWJQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOwogfQogCistICh2b2lkKV9saXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzOihXZWJMYXlvdXRNaWxlc3RvbmVzKWxheW91dE1pbGVzdG9uZXMK
K3sKKyAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHBhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoY29yZUxheW91dE1pbGVz
dG9uZXMobGF5b3V0TWlsZXN0b25lcykpOworfQorCistIChXZWJMYXlvdXRNaWxlc3RvbmVzKV9s
YXlvdXRNaWxlc3RvbmVzCit7CisgICAgUGFnZSogcGFnZSA9IGNvcmUoc2VsZik7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBraXRMYXlvdXRNaWxlc3Rv
bmVzKHBhZ2UtPmxheW91dE1pbGVzdG9uZXMoKSk7Cit9CisKIC0gKHZvaWQpX3NldFBhZ2luYXRp
b25CZWhhdmVzTGlrZUNvbHVtbnM6KEJPT0wpYmVoYXZlc0xpa2VDb2x1bW5zCiB7CiAgICAgUGFn
ZSogcGFnZSA9IGNvcmUoc2VsZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRV
SU1vZGUuaD4KIApAQCAtNjUsNiArNjYsOSBAQCBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7
CiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOwogCitXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdl
YkxheW91dE1pbGVzdG9uZXMpOworV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3Rv
bmVzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpOworCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCiBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTI3
NjE0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV2ViUGFn
aW5hdGlvbk1vZGVCb3R0b21Ub1RvcCwKIH0gV2ViUGFnaW5hdGlvbk1vZGU7CiAKK2VudW0gewor
ICAgIFdlYkRpZEZpcnN0TGF5b3V0ID0gMSA8PCAwLAorICAgIFdlYkRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCA9IDEgPDwgMSwKKyAgICBXZWJEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNBcmVhVGhyZXNob2xkID0gMSA8PCAyCit9OwordHlwZWRlZiBOU1VJbnRlZ2VyIFdlYkxh
eW91dE1pbGVzdG9uZXM7CisKIC8vIFRoaXMgbmVlZHMgdG8gYmUgaW4gc3luYyB3aXRoIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbgogdHlwZWRlZiBlbnVtIHsKICAgICBX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCwKQEAgLTU2Niw2ICs1NzMsOSBAQCBDb3Vs
ZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpX3NldFBhZ2luYXRpb25Nb2Rl
OihXZWJQYWdpbmF0aW9uTW9kZSlwYWdpbmF0aW9uTW9kZTsKIC0gKFdlYlBhZ2luYXRpb25Nb2Rl
KV9wYWdpbmF0aW9uTW9kZTsKIAorLSAodm9pZClfbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lczoo
V2ViTGF5b3V0TWlsZXN0b25lcylsYXlvdXRNaWxlc3RvbmVzOworLSAoV2ViTGF5b3V0TWlsZXN0
b25lcylfbGF5b3V0TWlsZXN0b25lczsKKwogLy8gV2hldGhlciB0aGUgY29sdW1uLWJyZWFrLXti
ZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIHRoZQogLy8g
cGFnZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzLgogLSAodm9pZClfc2V0UGFnaW5h
dGlvbkJlaGF2ZXNMaWtlQ29sdW1uczooQk9PTCliZWhhdmVzTGlrZUNvbHVtbnM7CkBAIC03NTks
NiArNzY5LDggQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0ZyYW1lTG9hZERlbAogCiAt
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0SW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIAorLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZExheW91dDooV2ViTGF5b3V0TWlsZXN0b25lcyltaWxlc3RvbmVzOwor
CiAvLyBGb3IgaW1wbGVtZW50aW5nIHRoZSBXZWJJbnNwZWN0b3IncyB0ZXN0IGhhcm5lc3MKIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xlYXJJbnNwZWN0b3JXaW5kb3dP
YmplY3Q6KFdlYlNjcmlwdE9iamVjdCAqKXdpbmRvd09iamVjdCBmb3JGcmFtZTooV2ViRnJhbWUg
KilmcmFtZTsKIApJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYzMykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTItMDktMDUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVkIHRv
IG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmct
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91
dCwgCisgICAgICAgIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQg
CisgICAgICAgIGRpc3BhdGNoRGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGVp
ciBmdW5jdGlvbmFsaXR5IAorICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkgZGlzcGF0Y2hEaWRM
YXlvdXQoTGF5b3V0TWlsZXN0b25lT3B0aW9ucykKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudFF0KToKKworICAg
ICAgICBJdCBpcyBub3cgbmVjZXNzYXJ5IHRvIG9wdCBpbnRvIGdldHRpbmcgYW55IG9mIHRoZSAK
KyAgICAgICAgImxheW91dCBtaWxlc3RvbmUiIG5vdGlmaWNhdGlvbnMuCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRl
KToKKwogMjAxMi0wOS0wNSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xh
LmNvbT4KIAogICAgICAgICBbRFJUXSBMVEM6OiBNb3ZlIHByaW50aW5nIHJlbGF0ZWQgQVBJcyBm
cm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDggQEAgUVdlYlBhZ2VQ
cml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZwogICAgIC8vIGFzIGV4cGVjdGVkIG91dCBv
ZiB0aGUgYm94LCB3ZSB1c2UgYSBkZWZhdWx0IGdyb3VwIHNpbWlsYXIgdG8gd2hhdCBvdGhlciBw
b3J0cyBhcmUgZG9pbmcuCiAgICAgcGFnZS0+c2V0R3JvdXBOYW1lKCJEZWZhdWx0IEdyb3VwIik7
CiAKKyAgICBwYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKERpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCk7CisKICAgICBzZXR0aW5ncyA9IG5ldyBRV2ViU2V0dGluZ3MocGFnZS0+c2V0dGlu
Z3MoKSk7CiAKICAgICBoaXN0b3J5LmQgPSBuZXcgUVdlYkhpc3RvcnlQcml2YXRlKHN0YXRpY19j
YXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihwYWdlLT5iYWNrRm9yd2FyZExpc3Qo
KSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjcsMTQgKzUyNywxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmluCiAgICAgZW1pdExvYWRGaW5pc2hlZCh0cnVlKTsKIH0KIAotCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQoKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMp
CiB7Ci19CisgICAgaWYgKCFtX3dlYkZyYW1lKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQo
KQotewotICAgIGlmIChtX3dlYkZyYW1lKQorICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0KQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPmluaXRpYWxM
YXlvdXRDb21wbGV0ZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDEyNzYxNCkK
KysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOCArMTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmlyc3RMYXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
YXlvdXQoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyNzYzMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA1ICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAgTmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQgYW5kIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTA3OTE2ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAg
aXMgbm93IHJlcGxhY2VkIGJ5IGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZU9wdGlv
bnMpCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8gb3B0
IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIgbm90
aWZpY2F0aW9ucy4KKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Omlu
aXRXaXRoRnJhbWUpOgorCiAyMDEyLTA5LTA1ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1
YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtEUlRdIExUQzo6IE1vdmUgcHJpbnRpbmcgcmVs
YXRlZCBBUElzIGZyb20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gSW50ZXJuYWxzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2ODAsNiArMjY4MCw5IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICAgICBtX3BhZ2UgPSBuZXcgUGFnZShw
YWdlQ2xpZW50cyk7CiAgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCBuZXcgV2ViR2Vv
bG9jYXRpb25DbGllbnQodGhpcykpOwogCisgICAgdW5zaWduZWQgbGF5b3V0TWlsZXN0b25lcyA9
IERpZEZpcnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgIG1f
cGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVzPihs
YXlvdXRNaWxlc3RvbmVzKSk7CisKICAgICBCU1RSIGxvY2FsU3RvcmFnZVBhdGg7CiAgICAgaWYg
KFNVQ0NFRURFRChtX3ByZWZlcmVuY2VzLT5sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoJmxvY2Fs
U3RvcmFnZVBhdGgpKSkgewogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldExvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aChTdHJpbmcobG9jYWxTdG9yYWdlUGF0aCwgU3lzU3RyaW5nTGVuKGxv
Y2FsU3RvcmFnZVBhdGgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxMjc2
MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiwyMCArNDE2LDIwIEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUt
PmRpZEZpbmlzaExvYWRGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpCi17Ci0gICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKLSAgICBDT01QdHI8SVdlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OwotICAgIGlmIChT
VUNDRUVERUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxl
Z2F0ZVByaXYpKSAmJiBmcmFtZUxvYWREZWxlZ2F0ZVByaXYpCi0gICAgICAgIGZyYW1lTG9hZERl
bGVnYXRlUHJpdi0+ZGlkRmlyc3RMYXlvdXRJbkZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwot
fQotCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExh
eW91dChMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCiB7CiAgICAgV2ViVmlldyogd2ViVmll
dyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlOwotICAgIGlmIChTVUNDRUVERUQo
d2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUpKSAmJiBmcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCi0gICAgICAgIGZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZS0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZSh3ZWJWaWV3
LCBtX3dlYkZyYW1lKTsKKworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlvdXQpIHsK
KyAgICAgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUo
JmZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkpICYmIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkK
KyAgICAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS0+ZGlkRmlyc3RMYXlvdXRJbkZy
YW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworICAgIH0KKworICAgIGlmIChtaWxlc3RvbmVzICYg
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KSB7CisgICAgICAgIGlmIChTVUNDRUVERUQo
d2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUpKSAmJiBmcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCisgICAgICAgICAgICBmcmFtZUxvYWRE
ZWxlZ2F0ZVByaXZhdGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUod2Vi
VmlldywgbV93ZWJGcmFtZSk7CisgICAgfQogfQogCiBGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKTsKIAogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0
aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpOwpJbmRleDogU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNzYxNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDktMDUgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRGaXJzdExheW91dCwgCisgICAgICAgIGRpc3Bh
dGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LCBhbmQgCisgICAgICAgIGRpc3BhdGNo
RGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBUaGVpciBmdW5jdGlvbmFsaXR5IAor
ICAgICAgICBpcyBub3cgcmVwbGFjZWQgYnkgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0
b25lcykKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRM
YXlvdXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0Uu
aDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V2luQ0UpOgorCiAyMDEyLTA4LTI4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3Bw
CShyZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsMTIgKzM3
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWQKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNo
RGlkRmlyc3RMYXlvdXQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZExheW91dChMYXlv
dXRNaWxlc3RvbmVzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V2luQ0UuaAkocmV2aXNpb24gMTI3NjE0KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDggKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RMYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lcyk7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0
ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFNob3coKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc2MTQpCisr
KyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEyLTA5LTA1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUzOTcKKyAgICAgICAg
TmVlZCB0byBtZXJnZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgYW5kIAorICAgICAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgLWFuZCBjb3JyZXNw
b25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGRpc3BhdGNoRGlkRmly
c3RMYXlvdXQsIAorICAgICAgICBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCwgYW5kIAorICAgICAgICBkaXNwYXRjaERpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dC4gVGhlaXIgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgaXMgbm93IHJlcGxhY2VkIGJ5IGRpc3Bh
dGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMpCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50V3gpOgorCiAyMDEy
LTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShy
ZXZpc2lvbiAxMjc2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCwxMyArMzU0LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbgogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLQotdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpcnN0TGF5
b3V0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V3g6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCShyZXZpc2lvbiAxMjc2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpcnN0TGF5b3V0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc2MzIpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wOS0wNSAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Mzk3CisgICAgICAgIE5lZWQgdG8gbWVyZ2UgZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGFuZCAKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFjY291bnQgZm9yIHRoZSBuZXcgbWVtYmVyIG9mIHRoZSBQYWdl
TG9hZENsaWVudC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubToKKyAgICAgICAgKC1bQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmli
XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVk
QnVuZGxlUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKworICAgICAg
ICBUaGUgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzIGhhcyBleGlzdGVk
IGZvciBhIHdoaWxlLCAKKyAgICAgICAgYnV0IGl0IGRpZCBub3QgaGF2ZSB0aGUgcmlnaHQgdGFy
Z2V0IG1lbWJlcnNoaXAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgVXNlIG5ldyBkaWRMYXlvdXQgQVBJ
IGluc3RlYWQgb2Ygb2xkIAorICAgICAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgQVBJLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRMYXlvdXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RmFpbHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpkaWRMYXlvdXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFn
ZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VM
b2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZyYW1lcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmRpZExheW91dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVy
Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEyLTA5LTA1ICBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCB0ZXN0IGZpeC4KSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29u
dHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2lu
ZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNjM1LDYgKzYz
NSw3IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAgICAgICAgIDAsIC8vIHBsdWdpbkRpZEZhaWwK
ICAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIHJl
Z2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZExheW91dAogICAg
IH07CiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChfd2ViVmlldy5wYWdlUmVmLCAmbG9h
ZENsaWVudCk7CiAgICAgCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI3
NjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIAkJNzZFMTgyREYx
NTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4
MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CiAJCTgxQjUwMTkz
MTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQjUwMTkyMTQwRjIzMjMwMEQ5RUI1OCAvKiBT
dHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxv
dHMtb2YtdGV4dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRt
bCAqLzsgfTsKKwkJOTMxODc3ODkxNUVFQzU3NzAwQTlDQ0UzIC8qIE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCAqLzsgfTsKIAkJOTM2MTAwMjkxNERDOTVB
NzAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjEwMDI4MTREQzk1N0IwMDYxMzc5RCAv
KiBsb3RzLW9mLWlmcmFtZXMuaHRtbCAqLzsgfTsKIAkJOTM5QkE5MTcxNDEwMzQxMjAwMUEwMUJE
IC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERldmljZVNj
YWxlRmFjdG9yT25CYWNrLm1tICovOyB9OwogCQk5M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyog
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDRDE1MDZGMDY0
MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRs
ZS5jcHAgKi87IH07CkBAIC05ODUsNiArOTg2LDcgQEAKIAkJCQlCQzkwOTk1RTEyNTY3QkMxMDAw
ODM3NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MDk5OTQxMjU2QUNG
MTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY1
QUY1NTAxNUQxRTQ4QTAwQjBDQjRBIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dC5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMjkgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCi1zdGF0aWMgYm9vbCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRTdWNj
ZWVkOworc3RhdGljIGJvb2wgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZDsKK3N0YXRpYyBib29sIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkOworc3RhdGljIGJvb2wgZGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkOworc3RhdGljIGJv
b2wgZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lczsKIAotc3RhdGljIHZvaWQgZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KFdLUGFnZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lk
ICopCitzdGF0aWMgdm9pZCBkaWRMYXlvdXQoV0tQYWdlUmVmLCBXS0xheW91dE1pbGVzdG9uZXMg
dHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkICopCiB7Ci0gICAgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0U3VjY2VlZCA9IHRydWU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBrV0tEaWRGaXJzdExheW91dDoKKyAgICAgICAgZGlkRmlyc3RMYXlvdXRBY2hpZXZlZCA9
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0OgorICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRBY2hpZXZl
ZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRGlkSGl0UmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZDoKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChkaWRGaXJz
dExheW91dEFjaGlldmVkICYmIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVk
ICYmIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZlZCkK
KyAgICAgICAgZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lcyA9IHRydWU7CiB9CiAKIHN0YXRp
YyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC00MiwxMSArNjAs
MTUgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIFdLUGFn
ZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAs
IHNpemVvZihsb2FkZXJDbGllbnQpKTsKICAgICBsb2FkZXJDbGllbnQudmVyc2lvbiA9IGtXS1Bh
Z2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICBsb2FkZXJDbGllbnQuZGlkTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRMYXlvdXQgPSBkaWRMYXlvdXQ7CiAKICAgICBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOwogfQogCisvLyBGSVhN
RTogVGhpcyB0ZXN0IGhhcyBiZWVuIGJyb2tlbiBzaW5jZSBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMTU3NTIgSXQncyBmYWlsaW5nIGJlY2F1c2UKKy8vIHRoZSBmcmFtZSBsb2Fk
IGlzIGNvbXBsZXRpbmcgYmVmb3JlIGRpZExheW91dCgpIG1hbmFnZXMgdG8gdW5sb2NrIHRoZQor
Ly8ga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCBhY2hpZXZl
bWVudC4gV2UgcHJvYmFibHkgbmVlZCB0byBmaXggdGhpcyBieSBtYWtpbmcKKy8vIHRoaXMgdGVz
dCBoYXZlIGEgbG9uZy1ydW5uaW5nIHJlc291cmNlLgogVEVTVChXZWJLaXQyLCBESVNBQkxFRF9O
ZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFRlc3QiKSk7CkBAIC01OCw4
ICs4MCw4IEBAIFRFU1QoV2ViS2l0MiwgRElTQUJMRURfTmV3Rmlyc3RWaXN1YWxseU4KICAgICAv
LyBvYmplY3RzIHRha2UgdXAgbW9yZSB0aGFuIDEwJSBvZiB0aGUgdmlldy4KICAgICBXS1BhZ2VM
b2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJsb3RzLW9mLXRleHQiLCAiaHRtbCIpKS5nZXQoKSk7CiAKLSAgICBVdGlsOjpydW4oJmRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOwotICAgIEVYUEVDVF9UUlVFKGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQpOworICAgIFV0aWw6OnJ1bigm
ZGlkVW5sb2NrQWxsTGF5b3V0TWlsZXN0b25lcyk7CisgICAgRVhQRUNUX1RSVUUoZGlkVW5sb2Nr
QWxsTGF5b3V0TWlsZXN0b25lcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNwcAko
cmV2aXNpb24gMTI3NjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBib29s
IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQ7CitzdGF0aWMgYm9vbCBk
aWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQ7CiBzdGF0
aWMgYm9vbCB0ZXN0MURvbmU7CiBzdGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCkBAIC00OCw5
ICs0OCwxMCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiAgICAg
V0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIDAsIGRpZEZvcmNlUmVwYWludCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dChXS1BhZ2VSZWYsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCAqKQorc3RhdGljIHZvaWQgZGlkTGF5b3V0KFdLUGFnZVJlZiwgV0tM
YXlvdXRNaWxlc3RvbmVzIHR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCAqKQogewotICAgIGRp
ZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQgPSB0cnVlOworICAgIGlmICh0
eXBlID09IGtXS0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpCisg
ICAgICAgIGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRBY2hpZXZl
ZCA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVm
IHBhZ2UpCkBAIC01OSw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmUKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVu
dCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZGVyQ2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCA9IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKKyAgICBs
b2FkZXJDbGllbnQuZGlkTGF5b3V0ID0gZGlkTGF5b3V0OwogCiAgICAgV0tQYWdlU2V0UGFnZUxv
YWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KQEAgLTgwLDcgKzgxLDcgQEAgVEVT
VChXZWJLaXQyLCBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYQogCiAgICAgLy8gQnkgdGhlIHRp
bWUgdGhlIGZvcmNlZCByZXBhaW50IGhhcyBmaW5pc2hlZCwgdGhlIGNvdW50ZXIgd291bGQgaGF2
ZSBiZWVuIGhpdCAKICAgICAvLyBpZiBpdCB3YXMgc2l6ZWQgcmVhc29uYWJseSBmb3IgdGhlIHBh
Z2UuCi0gICAgRVhQRUNUX0ZBTFNFKGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1
Y2NlZWQpOworICAgIEVYUEVDVF9GQUxTRShkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNB
cmVhVGhyZXNob2xkQWNoaWV2ZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RmFpbHNfQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFp
bHNfQnVuZGxlLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzX0J1bmRsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYg
cGFnZSkKICAgICB7Ci0gICAgICAgIC8vIFNldHRpbmcgdGhlIHBhaW50ZWQgb2JqZWN0cyBjb3Vu
dGVyIGlzIG5lY2Vzc2FyeSBhdCB0aGlzIHRpbWUgdG8gb3B0IGludG8KLSAgICAgICAgLy8gdGhl
IGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCBoZXVyaXN0aWMuCi0gICAgICAgIFdL
QnVuZGxlUGFnZVNldFBhaW50ZWRPYmplY3RzQ291bnRlclRocmVzaG9sZChwYWdlLCAxKTsKKyAg
ICAgICAgV0tCdW5kbGVQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhwYWdlLCBrV0tEaWRG
aXJzdExheW91dCB8IGtXS0RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB8IGtXS0RpZEhp
dFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogICAgIH0KICAgICAKIH07
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1h
Z2VzLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDExICszMCwyOSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKLXN0YXRpYyBib29sIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFN1Y2NlZWQ7
CitzdGF0aWMgYm9vbCBkaWRGaXJzdExheW91dEFjaGlldmVkOworc3RhdGljIGJvb2wgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBkaWRIaXRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQ7CitzdGF0aWMgYm9vbCBk
aWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzOwogCi1zdGF0aWMgdm9pZCBkaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikK
K3N0YXRpYyB2b2lkIGRpZExheW91dChXS1BhZ2VSZWYsIFdLTGF5b3V0TWlsZXN0b25lcyB0eXBl
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRTdWNjZWVkID0gdHJ1ZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IGtXS0RpZEZpcnN0TGF5b3V0OgorICAgICAgICBkaWRGaXJzdExheW91dEFjaGlldmVkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQ6CisgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEFjaGlldmVkID0g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkOgorICAgICAgICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9i
amVjdHNBcmVhVGhyZXNob2xkQWNoaWV2ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGRpZEZpcnN0TGF5
b3V0QWNoaWV2ZWQgJiYgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0QWNoaWV2ZWQgJiYg
ZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZEFjaGlldmVkKQorICAg
ICAgICBkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzID0gdHJ1ZTsKIH0KIAogc3RhdGljIHZv
aWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKQEAgLTQyLDEyICs2MCwxNiBA
QCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlCiAgICAgV0tQYWdlTG9h
ZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6
ZW9mKGxvYWRlckNsaWVudCkpOwogICAgIGxvYWRlckNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxv
YWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIGxvYWRlckNsaWVudC5kaWROZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQgPSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7
CisgICAgbG9hZGVyQ2xpZW50LmRpZExheW91dCA9IGRpZExheW91dDsKIAogICAgIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7CiB9CiAKLVRFU1QoV2ViS2l0
MiwgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzKQorLy8gRklYTUU6IFRo
aXMgdGVzdCBoYXMgYmVlbiBicm9rZW4gc2luY2UgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTE1NzUyIEl0J3MgZmFpbGluZyBiZWNhdXNlCisvLyB0aGUgZnJhbWUgbG9hZCBpcyBj
b21wbGV0aW5nIGJlZm9yZSBkaWRMYXlvdXQoKSBtYW5hZ2VzIHRvIHVubG9jayB0aGUKKy8vIGtX
S0RpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQgYWNoaWV2ZW1lbnQu
IFdlIHByb2JhYmx5IG5lZWQgdG8gZml4IHRoaXMgYnkgbWFraW5nCisvLyB0aGlzIHRlc3QgaGF2
ZSBhIGxvbmctcnVubmluZyByZXNvdXJjZS4KK1RFU1QoV2ViS2l0MiwgRElTQUJMRURfTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzKQogewogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0
ZWRCdW5kbGVUZXN0KCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNUZXN0
IikpOwogCkBAIC01OCw4ICs4MCw4IEBAIFRFU1QoV2ViS2l0MiwgTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGEKICAgICAvLyBvYmplY3RzIHRha2UgdXAgbW9yZSB0aGFuIDEwJSBvZiB0aGUgdmll
dy4KICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCBhZG9wdFdLKFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJsb3RzLW9mLWltYWdlcyIsICJodG1sIikpLmdldCgpKTsKIAotICAg
IFV0aWw6OnJ1bigmZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7Ci0g
ICAgRVhQRUNUX1RSVUUoZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0U3VjY2VlZCk7
CisgICAgVXRpbDo6cnVuKCZkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzKTsKKyAgICBFWFBF
Q1RfVFJVRShkaWRVbmxvY2tBbGxMYXlvdXRNaWxlc3RvbmVzKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcAkocmV2aXNpb24gMTI3NjE0KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAgICAvLyBTZXR0
aW5nIHRoZSBwYWludGVkIG9iamVjdHMgY291bnRlciBpcyBuZWNlc3NhcnkgYXQgdGhpcyB0aW1l
IHRvIG9wdCBpbnRvCi0gICAgICAgIC8vIHRoZSBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgaGV1cmlzdGljLgotICAgICAgICBXS0J1bmRsZVBhZ2VTZXRQYWludGVkT2JqZWN0c0Nv
dW50ZXJUaHJlc2hvbGQocGFnZSwgMSk7CisgICAgICAgIFdLQnVuZGxlUGFnZUxpc3RlbkZvckxh
eW91dE1pbGVzdG9uZXMocGFnZSwga1dLRGlkRmlyc3RMYXlvdXQgfCBrV0tEaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXQgfCBrV0tEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKTsKICAgICB9CiAgICAgCiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAJKHJldmlzaW9uIDEyNzYxNCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGcmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGJvb2wgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0RmlyZU1vcmVUaGFuT25jZTsKLXN0YXRpYyB1bnNpZ25lZCBuZXdWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Q291bnRlcjsKK3N0YXRpYyBib29sIGRpZEhpdFJlbGV2YW50UmVwYWludGVk
T2JqZWN0c0FyZWFUaHJlc2hvbGRNb3JlVGhhbk9uY2U7CitzdGF0aWMgdW5zaWduZWQgZGlkSGl0
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZENvdW50ZXI7CiBzdGF0aWMgYm9v
bCB0ZXN0MURvbmU7CiBzdGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCkBAIC00OSwxMSArNDks
MTQgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogICAgIFdLUGFn
ZUZvcmNlUmVwYWludChwYWdlLCAwLCBkaWRGb3JjZVJlcGFpbnQpOwogfQogCi1zdGF0aWMgdm9p
ZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoV0tQYWdlUmVmLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQgKikKK3N0YXRpYyB2b2lkIGRpZExheW91dChXS1BhZ2VSZWYsIFdLTGF5b3V0
TWlsZXN0b25lcyB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQgKikKIHsKLSAgICArK25ld1Zp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRDb3VudGVyOwotICAgIGlmIChuZXdWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Q291bnRlciA+IDEpCi0gICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZpcmVNb3JlVGhhbk9uY2UgPSB0cnVlOworICAgIGlmICh0eXBlICE9IGtXS0RpZEhpdFJl
bGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpCisgICAgICAgIHJldHVybjsKKwor
ICAgICsrZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZENvdW50ZXI7
CisgICAgaWYgKGRpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGRDb3Vu
dGVyID4gMSkKKyAgICAgICAgZGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVz
aG9sZE1vcmVUaGFuT25jZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJD
bGllbnQoV0tQYWdlUmVmIHBhZ2UpCkBAIC02MiwxNCArNjUsMTQgQEAgc3RhdGljIHZvaWQgc2V0
UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZQogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7CiAgICAgbG9hZGVyQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdl
TG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExv
YWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkZXJDbGllbnQuZGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0ID0gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0OworICAgIGxvYWRlckNsaWVudC5kaWRMYXlvdXQgPSBkaWRMYXlvdXQ7CiAKICAg
ICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGllbnQpOwogfQogCiBU
RVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcykKIHsKLSAg
ICBuZXdWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q291bnRlciA9IDA7CisgICAgZGlkSGl0UmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZENvdW50ZXIgPSAwOwogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNU
ZXN0IikpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CkBA
IC04Miw3ICs4NSw3IEBAIFRFU1QoV2ViS2l0MiwgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGEK
IAogICAgIC8vIEJ5IHRoZSB0aW1lIHRoZSBmb3JjZWQgcmVwYWludCBoYXMgZmluaXNoZWQsIHRo
ZSBjb3VudGVyIHdvdWxkIGhhdmUgYmVlbiBoaXQgCiAgICAgLy8gaWYgaXQgd2FzIHNpemVkIHJl
YXNvbmFibHkgZm9yIHRoZSBwYWdlLgotICAgIEVYUEVDVF9GQUxTRShkaWROZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGaXJlTW9yZVRoYW5PbmNlKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlk
SGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZE1vcmVUaGFuT25jZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAJKHJldmlzaW9u
IDEyNzYxNCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsOSArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShX
S0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIHsKLSAgICAgICAg
Ly8gU2V0dGluZyB0aGUgcGFpbnRlZCBvYmplY3RzIGNvdW50ZXIgaXMgbmVjZXNzYXJ5IGF0IHRo
aXMgdGltZSB0byBvcHQgaW50bwotICAgICAgICAvLyB0aGUgZGlkTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IGhldXJpc3RpYy4KLSAgICAgICAgV0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9i
amVjdHNDb3VudGVyVGhyZXNob2xkKHBhZ2UsIDEpOworICAgICAgICBXS0J1bmRsZVBhZ2VMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHBhZ2UsIGtXS0RpZEZpcnN0TGF5b3V0IHwga1dLRGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHwga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3RzQXJlYVRocmVzaG9sZCk7CiAgICAgfQogICAgIAogfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfQnVuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAJKHJldmlzaW9uIDEyNzYxNCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRfQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5k
bGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIHsKLSAgICAgICAgLy8gU2V0dGluZyB0aGUg
cGFpbnRlZCBvYmplY3RzIGNvdW50ZXIgaXMgbmVjZXNzYXJ5IGF0IHRoaXMgdGltZSB0byBvcHQg
aW50bwotICAgICAgICAvLyB0aGUgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IGhl
dXJpc3RpYy4KLSAgICAgICAgV0tCdW5kbGVQYWdlU2V0UGFpbnRlZE9iamVjdHNDb3VudGVyVGhy
ZXNob2xkKHBhZ2UsIDEpOworICAgICAgICBXS0J1bmRsZVBhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxl
c3RvbmVzKHBhZ2UsIGtXS0RpZEZpcnN0TGF5b3V0IHwga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHwga1dLRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9s
ZCk7CiAgICAgfQogICAgIAogfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMjc2MTQpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI5LDYgKzQyOSw3IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKICAgICAgICAgMCwgLy8gcGx1
Z2luRGlkRmFpbAogICAgICAgICAwLCAvLyBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUKICAgICAg
ICAgMCwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
TGF5b3V0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgJnBhZ2VMb2FkZXJDbGllbnQpOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAkocmV2aXNpb24gMTI3NjE0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQs
NyArMzA0LDggQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoVwogICAg
ICAgICBkaWRGaW5pc2hQcm9ncmVzcywgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKICAgICAgICAgMCwg
Ly8gc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKICAgICAgICAgZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lLCAvLyBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUKLSAgICAgICAg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWUKKyAgICAgICAgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUsIC8vIHJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZExheW91dAogICAgIH07CiAg
ICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2UsICZsb2FkZXJDbGllbnQp
OwogCg==
</data>
<flag name="review"
          id="173397"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>