<?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>166450</bug_id>
          
          <creation_ts>2016-12-22 17:14:05 -0800</creation_ts>
          <short_desc>NSSpellChecker&apos;s recordResponse isn&apos;t called for unseen automatic corrections</short_desc>
          <delta_ts>2017-01-04 06:01:12 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1262469</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-22 17:14:05 -0800</bug_when>
    <thetext>NSSpellChecker&apos;s recordResponse isn&apos;t called for unseen automatic corrections</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262470</commentid>
    <comment_count>1</comment_count>
      <attachid>297691</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-22 17:14:23 -0800</bug_when>
    <thetext>Created attachment 297691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262472</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-22 17:15:22 -0800</bug_when>
    <thetext>Still have to decide how to test this. And make sure that the new call site is actually right. It *works* (and we don&apos;t get double-corrections with seen corrections), but this code is fairly mysterious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262474</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-12-22 17:15:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/29447824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262476</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-22 17:17:55 -0800</bug_when>
    <thetext>Attachment 297691 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 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>1262479</commentid>
    <comment_count>5</comment_count>
      <attachid>297691</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-22 17:19:48 -0800</bug_when>
    <thetext>Comment on attachment 297691
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:2585
&gt; +                    m_alternativeTextController-&gt;markCorrection(replacementRange, replacedString);

Should be WTFMove(replacementRange) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263421</commentid>
    <comment_count>6</comment_count>
      <attachid>297928</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 02:11:12 -0800</bug_when>
    <thetext>Created attachment 297928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263462</commentid>
    <comment_count>7</comment_count>
      <attachid>297928</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-03 10:20:43 -0800</bug_when>
    <thetext>Comment on attachment 297928
Patch

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

r=me after you fix iOS and Windows builds

&gt; Source/WebCore/editing/AlternativeTextController.cpp:521
&gt;      if (AlternativeTextClient* client = alternativeTextClient())

Should use auto*.

&gt; Source/WebCore/editing/Editor.cpp:2581
&gt; +                    RefPtr&lt;Range&gt; replacementRange = paragraph.subrange(resultLocation, replacement.length());

How about auto here instead of writing out RefPtr?

&gt; Source/WebCore/page/AlternativeTextClient.h:57
&gt;  enum AutocorrectionResponseType {
&gt;      AutocorrectionEdited,
&gt; -    AutocorrectionReverted
&gt; +    AutocorrectionReverted,
&gt; +    AutocorrectionAccepted
&gt;  };

Seems like this should be an enum class some day.

&gt; Source/WebKit/mac/WebCoreSupport/WebAlternativeTextClient.mm:65
&gt; +static NSCorrectionResponse toCorrectionResponse(AutocorrectionResponseType responseType)

inline

Also seems unfortunate we have to repeat this twice. Is there some way to share this between WebKit 1 and 2? Maybe a handy place to put this in the platform directory?

&gt; Source/WebKit2/UIProcess/mac/PageClientImpl.mm:571
&gt; +static NSCorrectionResponse toCorrectionResponse(AutocorrectionResponseType responseType)

inline

&gt; Tools/DumpRenderTree/TestRunner.cpp:1785
&gt; +    if (argumentCount != 1)

I would say &lt; 1; not sure we should make a habit of silently doing nothing when we get an extra argument. Except this is test code so no big deal either way I guess.

&gt; Tools/DumpRenderTree/mac/DumpRenderTreeSpellChecker.mm:66
&gt; +    static BOOL hasSwizzled;

A little funny to use BOOL here.

&gt; LayoutTests/ChangeLog:14
&gt; +        * editing/mac/spelling/accept-unseen-candidate-records-acceptance-expected.txt: Added.

Seems like it would be better for this to be a reference test, or at least a &quot;dumpAsText&quot;; not great to land a render tree for this, I think.

&gt; LayoutTests/platform/mac-wk2/TestExpectations:176
&gt; +webkit.org/b/105616 editing/mac/spelling/accept-unseen-candidate-records-acceptance.html [ Failure ]

Still living in the past?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263515</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 13:43:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 297928 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297928&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebAlternativeTextClient.mm:65
&gt; &gt; +static NSCorrectionResponse toCorrectionResponse(AutocorrectionResponseType responseType)
&gt; 
&gt; inline
&gt; 
&gt; Also seems unfortunate we have to repeat this twice. Is there some way to
&gt; share this between WebKit 1 and 2? Maybe a handy place to put this in the
&gt; platform directory?

I&apos;m never quite sure where to put things like this. Without moving other things (the enum) to platform, it can&apos;t move there. But maybe that is the right thing to do.

&gt; &gt; Tools/DumpRenderTree/mac/DumpRenderTreeSpellChecker.mm:66
&gt; &gt; +    static BOOL hasSwizzled;
&gt; 
&gt; A little funny to use BOOL here.

Bad habit.

&gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; +        * editing/mac/spelling/accept-unseen-candidate-records-acceptance-expected.txt: Added.
&gt; 
&gt; Seems like it would be better for this to be a reference test, or at least a
&gt; &quot;dumpAsText&quot;; not great to land a render tree for this, I think.

Sure!

&gt; &gt; LayoutTests/platform/mac-wk2/TestExpectations:176
&gt; &gt; +webkit.org/b/105616 editing/mac/spelling/accept-unseen-candidate-records-acceptance.html [ Failure ]
&gt; 
&gt; Still living in the past?

Hmm? Because spelling tests don&apos;t work in WK2, or something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263540</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 14:15:50 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 297928 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297928&amp;action=review
&gt; 
&gt; r=me after you fix iOS and Windows builds
&gt; 
&gt; &gt; Source/WebCore/editing/AlternativeTextController.cpp:521
&gt; &gt;      if (AlternativeTextClient* client = alternativeTextClient())
&gt; 
&gt; Should use auto*.
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:2581
&gt; &gt; +                    RefPtr&lt;Range&gt; replacementRange = paragraph.subrange(resultLocation, replacement.length());
&gt; 
&gt; How about auto here instead of writing out RefPtr?

Here&apos;s why I don&apos;t love auto: this seems like a sensible suggestion, but performing it makes everything crash. Why? Because subrange returns a PassRefPtr, so it evaporates the first time it&apos;s passed into a RefPtr. Now, maybe it shouldn&apos;t use PassRefPtr (maybe I should even change that in this patch!), but  a) I don&apos;t know that PassRefPtr is the only instance of this class of problem and b) there&apos;s still a lot of PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263555</commentid>
    <comment_count>10</comment_count>
      <attachid>297954</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 14:37:41 -0800</bug_when>
    <thetext>Created attachment 297954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263638</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-03 18:06:36 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Here&apos;s why I don&apos;t love auto: this seems like a sensible suggestion, but
&gt; performing it makes everything crash. Why? Because subrange returns a
&gt; PassRefPtr, so it evaporates the first time it&apos;s passed into a RefPtr. Now,
&gt; maybe it shouldn&apos;t use PassRefPtr (maybe I should even change that in this
&gt; patch!), but  a) I don&apos;t know that PassRefPtr is the only instance of this
&gt; class of problem and b) there&apos;s still a lot of PassRefPtr.

Sorry!

I am working hard to get rid of PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263639</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 18:08:27 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; Here&apos;s why I don&apos;t love auto: this seems like a sensible suggestion, but
&gt; &gt; performing it makes everything crash. Why? Because subrange returns a
&gt; &gt; PassRefPtr, so it evaporates the first time it&apos;s passed into a RefPtr. Now,
&gt; &gt; maybe it shouldn&apos;t use PassRefPtr (maybe I should even change that in this
&gt; &gt; patch!), but  a) I don&apos;t know that PassRefPtr is the only instance of this
&gt; &gt; class of problem and b) there&apos;s still a lot of PassRefPtr.
&gt; 
&gt; Sorry!

:D

&gt; I am working hard to get rid of PassRefPtr.

Is it the only problem? If it&apos;s the only similar problem, I&apos;m much more OK with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263641</commentid>
    <comment_count>13</comment_count>
      <attachid>297979</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-01-03 18:12:59 -0800</bug_when>
    <thetext>Created attachment 297979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263655</commentid>
    <comment_count>14</comment_count>
      <attachid>297979</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-03 19:14:18 -0800</bug_when>
    <thetext>Comment on attachment 297979
Patch

Clearing flags on attachment: 297979

Committed r210266: &lt;http://trac.webkit.org/changeset/210266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263656</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-03 19:14:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263702</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-03 23:39:02 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; I am working hard to get rid of PassRefPtr.
&gt; 
&gt; Is it the only problem? If it&apos;s the only similar problem, I&apos;m much more OK
&gt; with this.

I’m not aware of another. The uses of rvalue references to achieve move semantics that are the modern approach that replace PassRefPtr don’t have this issue, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263748</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-01-04 06:01:12 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 297979 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 297979
&gt; 
&gt; Committed r210266: &lt;http://trac.webkit.org/changeset/210266&gt;

And the cmake buildfix landed in https://trac.webkit.org/changeset/210274</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297691</attachid>
            <date>2016-12-22 17:14:23 -0800</date>
            <delta_ts>2017-01-03 02:11:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166450-20161222171319.patch</filename>
            <type>text/plain</type>
            <size>22153</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUxMjNlZGFmMDhlMDAx
NWI2NTc4NGQ3ZGZjZThiOTMzNzQ4YTBiNS4uNmRkMDFjOTVkZGYzYTBiMWQwODM2YmM5OWMwYzUw
MDJkY2I1ZDcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTEyLTIyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE5TU3BlbGxDaGVj
a2VyJ3MgcmVjb3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNlZW4gYXV0b21hdGljIGNv
cnJlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VS
ZXZlcnNlZCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmg6CisgICAgICAgIEFkZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCB3aGlj
aCB0YWtlcyBhIEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBpbnN0ZWFkIG9mIGhhdmluZwor
ICAgICAgICBhIGZ1bmN0aW9uIHNwZWNpZmljYWxseSBmb3IgcmV2ZXJ0ZWQgYXV0b2NvcnJlY3Rp
b25zLiBBbHNvLCBnZXQgcmlkIG9mIHRoZSB1bm5lY2Vzc2FyeSBpbmRpcmVjdGlvbgorICAgICAg
ICBvZiB0aGUgcHJpdmF0ZSBvdmVybG9hZCBvZiByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJzZWQsIHNpbmNlIHRoZXJlJ3Mgb25seSBvbmUgY2FsbGVyLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFj
ZUZvcik6CisgICAgICAgIENhbGwgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSB3aXRoIEFj
Y2VwdGVkIHdoZW4gcGVyZm9ybWluZyBhbiBhdXRvLWF1dG9jb3JyZWN0aW9uLgorCisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAg
QWRvcHQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZS4KKworICAgICAgICAqIHBhZ2UvQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgIEFkZCBhbiAiQXV0b2NvcnJlY3Rpb25BY2Nl
cHRlZCIgcmVzcG9uc2UgdHlwZS4KKwogMjAxNi0xMi0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBNb2Rlcm5pemUgZmluZFBsYWluVGV4dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDEyNmU4MWE2ZTkxNWQ2MzNiN2FiZmNmZWU0ZmRjNjIwNjQ2OTljYmIuLmFjYjYw
YzI0MWFkNjlhYjkwNzk2ZGMxYTc5Nzk4NDQ1NTAxZmFlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJlY29yZFJlc3BvbnNlIGlzbid0
IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0
aW9uUGFuZWwuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06
CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Up
OgorICAgICAgICAoQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW06Cisg
ICAgICAgICh0b0NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICBGdW5uZWwg
YWxsIGNhbGxzIHRvIHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdl
OmluU3BlbGxEb2N1bWVudFdpdGhUYWc6CisgICAgICAgIHRocm91Z2ggcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZSwgZm9yIGRlYnVnZ2luZydzIHNha2UuCisgICAgICAgIERyb3AgdGhlIE5T
VmlldyBwYXJhbWV0ZXIgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIGl0LCBqdXN0IHRoZSB0YWcuCisg
ICAgICAgIENvbnZlcnQgdGhlIG5ldyBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB2YWx1ZSB0
byBpdHMgY29ycmVzcG9uZGluZworICAgICAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSB2YWx1ZS4K
KwogMjAxNi0xMi0yMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
SG9sZGluZyBkb3duIG9uIGNhbmRpZGF0ZXMgaW4gdGhlIFRvdWNoQmFyIHNob3VsZCBzaG93IHBh
bmVsIG9uIHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZkODhlOTkzZWE2ZGRlNWM3NGE2OWY4YTYzM2Yy
YmY2YTkyNjQ1NGMuLmQ5M2Y3NDA3NzU0ODI0ZmUxN2JjN2RiZmE4Y2FiYTIwMWU3MmZkZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJlY29yZFJl
c3BvbnNlIGlzbid0IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLm1tOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpDb3JyZWN0aW9uUGFuZWw6Omhh
bmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICBGdW5uZWwgYWxsIGNhbGxzIHRvIHJl
Y29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVu
dFdpdGhUYWc6CisgICAgICAgIHRocm91Z2ggcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSwg
Zm9yIGRlYnVnZ2luZydzIHNha2UuCisgICAgICAgIERyb3AgdGhlIE5TVmlldyBwYXJhbWV0ZXIg
YmVjYXVzZSB3ZSBkb24ndCBuZWVkIGl0LCBqdXN0IHRoZSB0YWcuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b0NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgQ29udmVydCB0aGUgbmV3IEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nCisgICAgICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHZhbHVlLgorCiAyMDE2LTEyLTIxICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdW1dLMl0gU3RvcCB1c2luZyBmaWxlKiBy
dWxlcyBpbiBXZWJQcm9jZXNzIHNhbmRib3ggcHJvZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGQ1Y2QxZWE2
N2RkOTBiODkzZjUzNDdhN2ExN2VlY2UwOTRhNGFhNmMuLmUxMDIxMjFlNGM4Y2NlNDQ5M2IzMDY2
ZjA3NjQxNjE2NmQ2ZDI3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtNTE2LDE1ICs1MTYsMTAgQEAgVGV4dENo
ZWNrZXJDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRleHRDaGVja2VyKCkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3ZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVj
dGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIFBhc3NSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UpCiB7CiAgICAgaWYgKEFsdGVy
bmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCi0gICAg
ICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
dmVydGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOwotfQotCi12b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VSZXZl
cnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVmUHRyPFJhbmdlPiByZXBs
YWNlbWVudFJhbmdlKQotewotICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnNl
ZChyZXBsYWNlZFN0cmluZywgcGxhaW5UZXh0KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCkpKTsKKyAg
ICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwg
cmVwbGFjZWRTdHJpbmcsIHBsYWluVGV4dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKSk7CiB9CiAK
IHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1JldmVyc2VkKFBhc3NSZWZQdHI8
UmFuZ2U+IGNoYW5nZWRSYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmgKaW5kZXggMWQyYjc4NDJjMTg1YjcxMjcxNTljNDYyZDZh
YzBlN2RkN2U0YTA1Ny4uZDJkNGI1MzIzODU2Y2JmMzBiNmQ5N2M1MjdhMjRjNmY2MWIzZjc1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSBVTkxFU1NfRU5BQkxFRCh7IHJldHVybiBmYWxzZTsg
fSkKICAgICBib29sIHNob3VsZFJlbW92ZU1hcmtlcnNVcG9uRWRpdGluZygpOwogCi0gICAgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkgVU5MRVNTX0VO
QUJMRUQoeyBVTlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOyBVTlVTRURfUEFSQU0ocmVwbGFj
ZW1lbnRSYW5nZSk7IH0pCisgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQ
YXNzUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNF
RF9QQVJBTShyZXBsYWNlZFN0cmluZyk7IFVOVVNFRF9QQVJBTShyZXBsYWNlbWVudFJhbmdlKTsg
fSkKICAgICB2b2lkIG1hcmtSZXZlcnNlZChQYXNzUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFuZ2Up
IFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKGNoYW5nZWRSYW5nZSk7IH0pCiAgICAgdm9p
ZCBtYXJrQ29ycmVjdGlvbihQYXNzUmVmUHRyPFJhbmdlPiByZXBsYWNlZFJhbmdlLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShyZXBs
YWNlZFJhbmdlKTsgVU5VU0VEX1BBUkFNKHJlcGxhY2VkU3RyaW5nKTsgfSkKIApAQCAtMTM4LDcg
KzEzOCw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpOwogICAgIHZvaWQgYXBwbHlBbHRlcm5hdGl2ZVRleHRUb1Jh
bmdlKGNvbnN0IFJhbmdlKiwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgQWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgY29uc3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYpOwogICAg
IHZvaWQgdGltZXJGaXJlZCgpOwotICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpOwogICAgIHZvaWQgcmVjb3JkU3BlbGxjaGVja2VyUmVzcG9uc2VGb3JN
b2RpZmllZENvcnJlY3Rpb24oUmFuZ2UqIHJhbmdlT2ZDb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcm
IGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKICAgICBTdHJpbmcgbWFya2Vy
RGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdGVybmF0aXZlVGV4dFR5cGUs
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGZjZmI1YWQzYWMwOGQ1NzdmYzU1ZWRjMGEzYjgxNThiODFjZWJkMDMuLjBkNTI5Yzc1
NGIyYTI4ZTY2ZTViZDg1OGUzY2U3YmZlY2ExNzBjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTI1NzcsOSArMjU3NywxMyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VG
b3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gcmVxdWVzdCwgY29uc3QgVmVjdAogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHRMb2NhdGlvbiA8IHNlbGVjdGlvbk9mZnNldCkKICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ICs9IHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0g
cmVzdWx0TGVuZ3RoOwogCi0gICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFya2VyIHNvIHRoYXQg
Y29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJlIHJlLWNvcnJlY3Rl
ZC4KLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29y
cmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LT5tYXJrQ29ycmVjdGlvbihwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxh
Y2VtZW50Lmxlbmd0aCgpKSwgcmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHRUeXBlID09IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5n
ZShyZXN1bHRMb2NhdGlvbiwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAg
ICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25BY2NlcHRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50
UmFuZ2UpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNv
cnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQu
CisgICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya0Nv
cnJlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZSwgcmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI2MTMsNyArMjYxNyw3
IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nKQogICAgIGlmICghc2hvdWxkSW5zZXJ0VGV4dChyZXBsYWNlZFN0cmlu
Zywgc2VsZWN0aW9uLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQocmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbik7Cisg
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24pOwog
ICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgoc2VsZWN0aW9uKTsKICAgICByZXBs
YWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSwgRWRpdEFj
dGlvbkluc2VydCk7CiAgICAgUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGgu
c3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcubGVuZ3Ro
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXgg
MmJkZmE0OWJmNDI0ODk3MDQyM2JjZDQ4ODNhNjU4MmI5MjNmMGY3Yy4uYzcxYjdhODYxODYyMzI5
ZjFiMWM1MTJmOGIyNjBmODU4NmQ3Y2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVy
bmF0aXZlVGV4dENsaWVudC5oCkBAIC01Miw3ICs1Miw4IEBAIGVudW0gQWx0ZXJuYXRpdmVUZXh0
VHlwZSB7CiAKIGVudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewogICAgIEF1dG9jb3Jy
ZWN0aW9uRWRpdGVkLAotICAgIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQKKyAgICBBdXRvY29ycmVj
dGlvblJldmVydGVkLAorICAgIEF1dG9jb3JyZWN0aW9uQWNjZXB0ZWQKIH07CiAKIGNsYXNzIEFs
dGVybmF0aXZlVGV4dENsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCmluZGV4IDg5M2U1NzcwMmRkNDc5MDM5M2Q5Yzk1ZTc0
MTZlM2FjMzkwM2QyNDUuLmRmOGI0MTM2ZDg4Y2VhMWRmNWFlNzJiN2M0YjdmMTU0ZTFiYjU1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB+Q29ycmVjdGlvblBhbmVsKCk7
CiAgICAgdm9pZCBzaG93KFdlYlZpZXcqLCBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsK
ICAgICBTdHJpbmcgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0KTsKLSAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdl
YlZpZXcqLCBOU0NvcnJlY3Rpb25SZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisgICAgc3RhdGljIHZvaWQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlz
U2hvd2luZygpIGNvbnN0IHsgcmV0dXJuIG1fdmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IGQ3M2QwZGY5MWY0
NGJmNGEzYjAwYjU1NTk1ZWI2MDBhN2FjOTVlNTkuLjg5NWM0YjJkNDlkYzFjOGZiMzA4YmIzODAw
YjBiOTE5NDY1NWJmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTk5LDkgKzk5LDkgQEAgU3RyaW5nIENvcnJlY3Rp
b25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQgcmVhc28KICAgICByZXR1cm4gbV9yZXN1bHRGb3JEaXNtaXNzYWwuZ2V0KCk7CiB9CiAKLXZv
aWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYlZpZXcq
IHZpZXcsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQordm9pZCBDb3JyZWN0
aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoTlNJbnRlZ2VyIHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsK
LSAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6
cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRT
dHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W3ZpZXcgc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWddXTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5n
IGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogfQogCiB2b2lkIENvcnJlY3Rpb25QYW5lbDo6
aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwg
TlNTdHJpbmcqIHJlcGxhY2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgIE5TQ29y
cmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUpCkBAIC0xMDksMjcg
KzEwOSwyNiBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVu
dChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgIGlmICghbV92aWV3KQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwogICAgIE5TSW50ZWdlciBkb2N1bWVu
dFRhZyA9IFttX3ZpZXcuZ2V0KCkgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogCiAgICAgc3dp
dGNoIChjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSkgewogICAgIGNhc2UgTlNDb3JyZWN0aW9uSW5k
aWNhdG9yVHlwZURlZmF1bHQ6CiAgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQotICAg
ICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25z
ZUFjY2VwdGVkIHRvQ29ycmVjdGlvbjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFj
ZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAg
ICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5
IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0Q2FuY2VsbGVkKQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVz
cG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRS
ZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRX
aXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKGRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkLCByZXBs
YWNlZCwgcHJvcG9zZWRSZXBsYWNlbWVudCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUln
bm9yZWQgdG9Db3JyZWN0aW9uOnByb3Bvc2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBs
YW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAg
ICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VJZ25vcmVkLCByZXBsYWNlZCwgcHJvcG9zZWRSZXBsYWNlbWVudCk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JU
eXBlUmV2ZXJzaW9uOgogICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKLSAgICAgICAg
ICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZl
cnRlZCB0b0NvcnJlY3Rpb246cmVwbGFjZWQgZm9yV29yZDphY2NlcHRlZFJlcGxhY2VtZW50IGxh
bmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAg
ICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlv
blJlc3BvbnNlUmV2ZXJ0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczoKICAg
ICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2Vy
IHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9u
OmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKGRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVk
LCByZXBsYWNlZCwgYWNjZXB0ZWRSZXBsYWNlbWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQppbmRleCA3MWJlMTFmODE3NmFhZmJmMzA5MDVi
OGIwYzQ4ODY1YTQwMzFkNDE3Li42NjcyMDU1MmQ0Mzc0NTg0NDg4YjdhMmEzNjAyZjcxM2VhMjg2
MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCkBAIC02MiwxMCArNjIsMjQgQEAgU3RyaW5n
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXIKICAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhy
ZWFzb24pOwogfQogCitzdGF0aWMgTlNDb3JyZWN0aW9uUmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKQoreworICAgIHN3
aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJl
dmVydGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDsKKyAg
ICBjYXNlIFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uRWRpdGVkOgorICAgICAgICByZXR1cm4gTlND
b3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlv
bkFjY2VwdGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDsK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0
aW9uUmVzcG9uc2VBY2NlcHRlZDsKK30KKwogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUg
cmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNl
ID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25S
ZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgQ29ycmVj
dGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9u
c2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgQ29ycmVjdGlvblBh
bmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFttX3dlYlZpZXcgc3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddLCB0b0NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZVR5cGUpLCByZXBsYWNl
ZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCmluZGV4IDY2NmVjZDNmNGIzYmQx
OGZhOTljNjNiMDcxZjFmMTQ3Njc3ZmM2ODEuLmY5NWY1YjM5YTRmMjU0YjMyMTdlOTMwMTg1NjYx
YmFkMTE3MjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29y
cmVjdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0
aW9uUGFuZWwuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkNvcnJlY3Rpb25QYW5l
bCgpOwogICAgIHZvaWQgc2hvdyhOU1ZpZXcgKiwgV2ViVmlld0ltcGwmLCBXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZS
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVw
bGFjZW1lbnRTdHJpbmdzKTsKICAgICBTdHJpbmcgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKLSAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKE5TVmlldyAqLCBOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZywg
TlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTaG93
aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IGIzODFhMjcwNzVkMDc5MGJjM2U4MjFm
YjQ4OTRlN2I1NTdmOWM4ZjcuLjk2NDRkOWZiYzkzN2NmYTNlM2I1YzA0NTZmNzMzOTI3MjRjZmMy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBh
bmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0lu
dGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc28KICAgICByZXR1
cm4gbV9yZXN1bHRGb3JEaXNtaXNzYWwuZ2V0KCk7CiB9CiAKLXZvaWQgQ29ycmVjdGlvblBhbmVs
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TVmlldyAqdmlldywgTlNJbnRlZ2VyIHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZykKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5T
SW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVz
cG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpCiB7CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBm
b3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFn
OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKIH0KQEAgLTExOSwyNiArMTE5LDI0IEBAIHZvaWQg
Q29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KFdlYlZpZXdJbXBsJiB3
ZWJWaWV3SW1wbCwgTlNTdHJpCiAgICAgaWYgKCFtX3ZpZXcpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXTsKLSAgICAKICAgICBzd2l0Y2ggKGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBl
KSB7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDoKICAgICAgICAg
aWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29y
ZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2Vw
dGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5
IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0Q2FuY2VsbGVkKQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVz
cG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRS
ZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRX
aXRoVGFnOm1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIHJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2VSZWplY3RlZCwgcmVwbGFjZWQsIHByb3Bvc2VkUmVwbGFjZW1lbnQpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVz
cG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJl
cGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6bV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgICAgICAgICAgICAgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnLCBOU0NvcnJl
Y3Rpb25SZXNwb25zZUlnbm9yZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxhY2VtZW50KTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlvbkluZGljYXRvclR5
cGVSZXZlcnNpb246CiAgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQotICAgICAgICAg
ICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVy
dGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVwbGFjZW1lbnQgbGFu
Z3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9zcGVsbENoZWNrZXJEb2N1bWVudFRh
Z107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQsIHJlcGxhY2VkLCBh
Y2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU0NvcnJlY3Rp
b25JbmRpY2F0b3JUeXBlR3Vlc3NlczoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQp
Ci0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJl
c3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpy
ZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzptX3NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
bV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwg
cmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4
IDQ0Y2JiMTgyNGIzYzU0MDlhNTZhYjhmMWZjYjQ3NjE3NTIzOGRmODMuLjcxNDAxYjcxOTJjNWU0
NDdlODE1NWNjMmE0MTFlYWQ1YzcwMDJkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNTY4LDEwICs1NjgsMjQgQEAgU3RyaW5nIFBh
Z2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWwKICNlbmRpZgogfQogCitzdGF0aWMgTlNDb3JyZWN0aW9uUmVzcG9uc2Ug
dG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlKQoreworICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpB
dXRvY29ycmVjdGlvblJldmVydGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9u
c2VSZXZlcnRlZDsKKyAgICBjYXNlIFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uRWRpdGVkOgorICAg
ICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgY2FzZSBXZWJDb3Jl
OjpBdXRvY29ycmVjdGlvbkFjY2VwdGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVz
cG9uc2VBY2NlcHRlZDsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDsKK30KKwogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVz
cG9uc2UgPSByZXNwb25zZVR5cGUgPT0gQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVj
dGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLSAgICBD
b3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV92aWV3LCBtX2lt
cGwtPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCksIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcpOworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShtX2ltcGwtPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCksIHRvQ29ycmVj
dGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSksIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0
cmluZyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5
bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297928</attachid>
            <date>2017-01-03 02:11:12 -0800</date>
            <delta_ts>2017-01-03 14:37:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166450-20170103020947.patch</filename>
            <type>text/plain</type>
            <size>42297</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjYjJiOGIyNzQxMGRh
ZmRjYjQwY2MzNWRlZTc0Y2VlODg4OWZmNC4uNDIzYjkzZWEyOWYzNTc2YWM1MzljNTUzYjUzN2Nk
ZWIxMjUwMDBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE5TU3BlbGxDaGVj
a2VyJ3MgcmVjb3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNlZW4gYXV0b21hdGljIGNv
cnJlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0NTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ3ODI0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvbWFjL3Nw
ZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sCisK
KyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQpOiBEZWxldGVkLgorICAgICAg
ICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oOgorICAgICAgICBBZGQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSwgd2hpY2ggdGFrZXMgYSBBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSwgaW5zdGVhZCBvZiBoYXZpbmcKKyAgICAgICAgYSBmdW5jdGlvbiBzcGVjaWZp
Y2FsbHkgZm9yIHJldmVydGVkIGF1dG9jb3JyZWN0aW9ucy4gQWxzbywgZ2V0IHJpZCBvZiB0aGUg
dW5uZWNlc3NhcnkgaW5kaXJlY3Rpb24KKyAgICAgICAgb2YgdGhlIHByaXZhdGUgb3ZlcmxvYWQg
b2YgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkLCBzaW5jZSB0aGVyZSdzIG9u
bHkgb25lIGNhbGxlci4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICBDYWxsIHJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Ugd2l0aCBBY2NlcHRlZCB3aGVuIHBlcmZvcm1pbmcgYW4g
YXV0by1hdXRvY29ycmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VC
YWNrVG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAgIEFkb3B0IHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UuCisKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAg
ICAgICBBZGQgYW4gIkF1dG9jb3JyZWN0aW9uQWNjZXB0ZWQiIHJlc3BvbnNlIHR5cGUuCisKIDIw
MTctMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgZm9sbG93LXVwIGZpeCBmb3IgcjIxMDIyNwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDhmMmVjNzMzNzAyMDNmYTM3ZmRjOGZiMTQ0ZWFhMGI2ODQ0ODlmZTkuLjNkZWU5MDA4NWZj
OWE0MmZlODc2MGRmNTNjMDc5MDdkOGRhZTBjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAxNy0wMS0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJlY29yZFJlc3BvbnNlIGlzbid0IGNhbGxl
ZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yOTQ0NzgyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6
OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKHRvQ29ycmVjdGlvblJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9uc2U6
dG9Db3JyZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoKKyAg
ICAgICAgdGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdnaW5n
J3Mgc2FrZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRv
bid0IG5lZWQgaXQsIGp1c3QgdGhlIHRhZy4KKyAgICAgICAgQ29udmVydCB0aGUgbmV3IEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nCisgICAgICAg
IE5TQ29ycmVjdGlvblJlc3BvbnNlIHZhbHVlLgorCiAyMDE3LTAxLTAxICBKZWZmIE1pbGxlciAg
PGplZmZtQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdo
dCBzdHJpbmdzIHRvIGluY2x1ZGUgMjAxNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI4OTVkYzI3OGEzYWUwMDM3
MTFlZTAzM2FiOTdhMmRjMjMwMTFiOGMuLjA3Y2JmZGE2MGIwMTBlNjg2OGFhZjY5ODc4MWU1NjQ4
MzJhZWU2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wMS0wMiAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tl
cidzIHJlY29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3Jy
ZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY2NDUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0NzgyND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06
CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0
ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9u
c2U6dG9Db3JyZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoK
KyAgICAgICAgdGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdn
aW5nJ3Mgc2FrZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdl
IGRvbid0IG5lZWQgaXQsIGp1c3QgdGhlIHRhZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OnRvQ29ycmVjdGlvblJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UpOgorICAgICAgICBDb252ZXJ0IHRoZSBuZXcgQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUgdmFsdWUgdG8gaXRzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgTlNDb3JyZWN0aW9uUmVz
cG9uc2UgdmFsdWUuCisKIDIwMTctMDEtMDEgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSB1c2VyLXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5j
bHVkZSAyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAppbmRleCA5NTU5N2RhYWZkYjE0ZWIyMmZjYzZkOWI3ODY2YzU3NjJl
NzAzYjlkLi5lYzAxMDBmZDNiOTM2YWNiMzYwYTlkZjBlZTRlOTJjNDc5ZmI4MmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTUxNiwxNSArNTE2LDEwIEBAIFRleHRDaGVja2VyQ2xpZW50KiBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjp0ZXh0Q2hlY2tlcigpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpCit2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVmUHRyPFJhbmdlPiByZXBs
YWNlbWVudFJhbmdlKQogewogICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9
IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQotICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHJl
cGxhY2VtZW50U3RyaW5nKTsKLX0KLQotdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkKLXsKLSAgICByZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQocmVwbGFjZWRTdHJpbmcsIHBsYWluVGV4
dChyZXBsYWNlbWVudFJhbmdlLmdldCgpKSk7CisgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCBwbGFpblRleHQo
cmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkpOwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6Om1hcmtSZXZlcnNlZChQYXNzUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFuZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCmlu
ZGV4IDU4M2RlMmY1ZmUwNDVjOWYwODBhM2YxZWYwNDdiOTFiNTA2MDk4ZmEuLmI0ODE1YmI3N2Zm
Y2UyY2MzZmUxODkwZGUzYTM4MGFiZjA0YmI2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkg
VU5MRVNTX0VOQUJMRUQoeyByZXR1cm4gZmFsc2U7IH0pCiAgICAgYm9vbCBzaG91bGRSZW1vdmVN
YXJrZXJzVXBvbkVkaXRpbmcoKTsKIAotICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIFBhc3NSZWZQdHI8UmFu
Z2U+IHJlcGxhY2VtZW50UmFuZ2UpIFVOTEVTU19FTkFCTEVEKHsgVU5VU0VEX1BBUkFNKHJlcGxh
Y2VkU3RyaW5nKTsgVU5VU0VEX1BBUkFNKHJlcGxhY2VtZW50UmFuZ2UpOyB9KQorICAgIHZvaWQg
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1l
bnRSYW5nZSkgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOyBV
TlVTRURfUEFSQU0ocmVwbGFjZW1lbnRSYW5nZSk7IH0pCiAgICAgdm9pZCBtYXJrUmV2ZXJzZWQo
UGFzc1JlZlB0cjxSYW5nZT4gY2hhbmdlZFJhbmdlKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9Q
QVJBTShjaGFuZ2VkUmFuZ2UpOyB9KQogICAgIHZvaWQgbWFya0NvcnJlY3Rpb24oUGFzc1JlZlB0
cjxSYW5nZT4gcmVwbGFjZWRSYW5nZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykgVU5M
RVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0ocmVwbGFjZWRSYW5nZSk7IFVOVVNFRF9QQVJBTShy
ZXBsYWNlZFN0cmluZyk7IH0pCiAKQEAgLTExOSw3ICsxMTksNiBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBkaXNtaXNzU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKICAg
ICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0VG9SYW5nZShjb25zdCBSYW5nZSosIGNvbnN0IFN0
cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFZlY3RvcjxEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mKTsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLSAgICB2
b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKICAgICB2b2lk
IHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlKiBy
YW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbik7CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVy
bmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRUeXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlNDg2NDY5NjI3MGJlZjg5ZGZk
NWVjMzUxNTYzNjUxMTVjOWMyMzE2Li5jNjMxMjgzYzYyYmJmYTI3YWI4ZTA4NjMyZmM5Y2ZhMDM4
MDBkMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNTc3LDkgKzI1NzcsMTMg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1Jl
cXVlc3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3QKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0TG9j
YXRpb24gPCBzZWxlY3Rpb25PZmZzZXQpCiAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9m
ZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgoKSAtIHJlc3VsdExlbmd0aDsKIAotICAgICAgICAg
ICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUg
dW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHJl
c3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24pCi0gICAgICAgICAgICAgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+bWFya0NvcnJlY3Rpb24ocGFyYWdyYXBo
LnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXBsYWNlbWVudC5sZW5ndGgoKSksIHJlcGxhY2Vk
U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxh
Y2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2Vt
ZW50Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uQWNjZXB0
ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFJhbmdlKTsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBBZGQgYSBtYXJrZXIgc28gdGhhdCBjb3JyZWN0aW9ucyBjYW4gZWFzaWx5IGJlIHVu
ZG9uZSBhbmQgd29uJ3QgYmUgcmUtY29ycmVjdGVkLgorICAgICAgICAgICAgICAgICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPm1hcmtDb3JyZWN0aW9uKFdURk1vdmUocmVwbGFjZW1l
bnRSYW5nZSksIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjEzLDcgKzI2MTcsNyBAQCB2b2lkIEVkaXRvcjo6
Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykK
ICAgICBpZiAoIXNob3VsZEluc2VydFRleHQocmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbi5nZXQo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpQYXN0ZWQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlUmV2ZXJzZWQocmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbik7CisgICAgbV9hbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24pOwogICAgIFRleHRDaGVja2lu
Z1BhcmFncmFwaCBwYXJhZ3JhcGgoc2VsZWN0aW9uKTsKICAgICByZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQocmVwbGFjZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSwgRWRpdEFjdGlvbkluc2VydCk7CiAg
ICAgUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdy
YXBoLmNoZWNraW5nU3RhcnQoKSwgcmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggMmJkZmE0OWJmNDI0ODk3
MDQyM2JjZDQ4ODNhNjU4MmI5MjNmMGY3Yy4uYzcxYjdhODYxODYyMzI5ZjFiMWM1MTJmOGIyNjBm
ODU4NmQ3Y2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC01Miw3ICs1Miw4IEBAIGVudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7CiAKIGVudW0g
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgewogICAgIEF1dG9jb3JyZWN0aW9uRWRpdGVkLAot
ICAgIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQKKyAgICBBdXRvY29ycmVjdGlvblJldmVydGVkLAor
ICAgIEF1dG9jb3JyZWN0aW9uQWNjZXB0ZWQKIH07CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENs
aWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3Jy
ZWN0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rp
b25QYW5lbC5oCmluZGV4IDg5M2U1NzcwMmRkNDc5MDM5M2Q5Yzk1ZTc0MTZlM2FjMzkwM2QyNDUu
LmRmOGI0MTM2ZDg4Y2VhMWRmNWFlNzJiN2M0YjdmMTU0ZTFiYjU1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICB+Q29ycmVjdGlvblBhbmVsKCk7CiAgICAgdm9pZCBzaG93
KFdlYlZpZXcqLCBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICBTdHJpbmcgZGlz
bWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKLSAgICBz
dGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYlZpZXcqLCBOU0NvcnJl
Y3Rpb25SZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZyk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlv
blJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzU2hvd2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IGQ3M2QwZGY5MWY0NGJmNGEzYjAwYjU1NTk1
ZWI2MDBhN2FjOTVlNTkuLjg5NWM0YjJkNDlkYzFjOGZiMzA4YmIzODAwYjBiOTE5NDY1NWJmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25Q
YW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9u
UGFuZWwubW0KQEAgLTk5LDkgKzk5LDkgQEAgU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlz
c0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc28KICAgICBy
ZXR1cm4gbV9yZXN1bHRGb3JEaXNtaXNzYWwuZ2V0KCk7CiB9CiAKLXZvaWQgQ29ycmVjdGlvblBh
bmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYlZpZXcqIHZpZXcsIE5TQ29ycmVj
dGlvblJlc3BvbnNlIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQordm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFn
LCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9uc2U6cmVzcG9uc2UgdG9Db3Jy
ZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFjZWRTdHJpbmcgbGFuZ3VhZ2U6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6W3ZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWdd
XTsKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVjb3JkUmVzcG9u
c2U6cmVzcG9uc2UgdG9Db3JyZWN0aW9uOnJlcGxhY2VtZW50U3RyaW5nIGZvcldvcmQ6cmVwbGFj
ZWRTdHJpbmcgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2Vy
RG9jdW1lbnRUYWddOwogfQogCiB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRS
ZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRSZXBsYWNlbWVudCwgTlNTdHJpbmcqIHJlcGxh
Y2VkLCBOU1N0cmluZyogcHJvcG9zZWRSZXBsYWNlbWVudCwgIE5TQ29ycmVjdGlvbkluZGljYXRv
clR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUpCkBAIC0xMDksMjcgKzEwOSwyNiBAQCB2b2lk
IENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNj
ZXB0ZWRSZXBsYWNlbWVudCwgTgogICAgIGlmICghbV92aWV3KQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgTlNTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciA9IFtOU1NwZWxsQ2hlY2tlciBz
aGFyZWRTcGVsbENoZWNrZXJdOwogICAgIE5TSW50ZWdlciBkb2N1bWVudFRhZyA9IFttX3ZpZXcu
Z2V0KCkgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogCiAgICAgc3dpdGNoIChjb3JyZWN0aW9u
SW5kaWNhdG9yVHlwZSkgewogICAgIGNhc2UgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZURlZmF1
bHQ6CiAgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQotICAgICAgICAgICAgW3NwZWxs
Q2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkIHRvQ29y
cmVjdGlvbjphY2NlcHRlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VB
Y2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9y
RGlzbWlzc2luZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2FuY2VsbGVk
KQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0
aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JX
b3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50
VGFnXTsKKyAgICAgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGRvY3Vt
ZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkLCByZXBsYWNlZCwgcHJvcG9zZWRS
ZXBsYWNlbWVudCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hl
Y2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQgdG9Db3JyZWN0
aW9uOnByb3Bvc2VkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICAgICAgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VJ
Z25vcmVkLCByZXBsYWNlZCwgcHJvcG9zZWRSZXBsYWNlbWVudCk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlUmV2ZXJzaW9uOgog
ICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKLSAgICAgICAgICAgIFtzcGVsbENoZWNr
ZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCB0b0NvcnJlY3Rp
b246cmVwbGFjZWQgZm9yV29yZDphY2NlcHRlZFJlcGxhY2VtZW50IGxhbmd1YWdlOm5pbCBpblNw
ZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0
ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczoKICAgICAgICAgaWYgKGFjY2Vw
dGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNl
Ok5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFj
ZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRh
Zzpkb2N1bWVudFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KGRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkLCByZXBsYWNlZCwgYWNj
ZXB0ZWRSZXBsYWNlbWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5tbQppbmRleCA3MWJlMTFmODE3NmFhZmJmMzA5MDViOGIwYzQ4ODY1YTQwMzFk
NDE3Li42NjcyMDU1MmQ0Mzc0NTg0NDg4YjdhMmEzNjAyZjcxM2VhMjg2MTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50Lm1tCkBAIC02MiwxMCArNjIsMjQgQEAgU3RyaW5nIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXIKICAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOwogfQogCitz
dGF0aWMgTlNDb3JyZWN0aW9uUmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKQoreworICAgIHN3aXRjaCAocmVzcG9uc2VU
eXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJldmVydGVkOgorICAgICAg
ICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDsKKyAgICBjYXNlIFdlYkNvcmU6
OkF1dG9jb3JyZWN0aW9uRWRpdGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9u
c2VFZGl0ZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvbkFjY2VwdGVkOgorICAg
ICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDsKKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2Nl
cHRlZDsKK30KKwogdm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKQogewotICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBl
ID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVk
IDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgQ29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2UsIHJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKFttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddLCB0
b0NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZVR5cGUpLCByZXBsYWNlZFN0cmluZywgcmVwbGFj
ZW1lbnRTdHJpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL0NvcnJlY3Rpb25QYW5lbC5oCmluZGV4IDY2NmVjZDNmNGIzYmQxOGZhOTljNjNiMDcxZjFm
MTQ3Njc3ZmM2ODEuLmY5NWY1YjM5YTRmMjU0YjMyMTdlOTMwMTg1NjYxYmFkMTE3MjhiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkNvcnJlY3Rpb25QYW5lbCgpOwogICAgIHZvaWQg
c2hvdyhOU1ZpZXcgKiwgV2ViVmlld0ltcGwmLCBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdz
KTsKICAgICBTdHJpbmcgZGlzbWlzcyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KTsKLSAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KE5TVmlldyAqLCBOU0ludGVnZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlv
blJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVz
cG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVj
dGlvblBhbmVsLm1tCmluZGV4IGIzODFhMjcwNzVkMDc5MGJjM2U4MjFmYjQ4OTRlN2I1NTdmOWM4
ZjcuLjk2NDRkOWZiYzkzN2NmYTNlM2I1YzA0NTZmNzMzOTI3MjRjZmMyM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgU3RyaW5nIENvcnJlY3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZv
ckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc28KICAgICByZXR1cm4gbV9yZXN1bHRGb3JE
aXNtaXNzYWwuZ2V0KCk7CiB9CiAKLXZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKE5TVmlldyAqdmlldywgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3ZvaWQgQ29ycmVj
dGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7
CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNl
OnJlc3BvbnNlIHRvQ29ycmVjdGlvbjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2Vk
U3RyaW5nIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnXTsKIH0KQEAgLTExOSwyNiArMTE5LDI0IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVs
OjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KFdlYlZpZXdJbXBsJiB3ZWJWaWV3SW1wbCwgTlNT
dHJpCiAgICAgaWYgKCFtX3ZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3BlbGxDaGVj
a2VyKiBzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsK
LSAgICAKICAgICBzd2l0Y2ggKGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKSB7CiAgICAgY2FzZSBO
U0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVw
bGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29y
cmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQg
Zm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzptX3Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VB
Y2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGlmICghbV93YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9y
RGlzbWlzc2luZyA9PSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2FuY2VsbGVk
KQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0
aW9uUmVzcG9uc2VSZWplY3RlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JX
b3JkOnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOm1fc3BlbGxD
aGVja2VyRG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VS
ZWplY3RlZCwgcmVwbGFjZWQsIHByb3Bvc2VkUmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIFtzcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0
aW9uUmVzcG9uc2VJZ25vcmVkIHRvQ29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldv
cmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9zcGVsbENo
ZWNrZXJEb2N1bWVudFRhZ107CisgICAgICAgICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShtX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUln
bm9yZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVSZXZlcnNpb246CiAg
ICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50KQotICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlv
bjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVwbGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6bV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgICAgICAg
ICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcs
IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2Vt
ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBl
R3Vlc3NlczoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBb
c3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQg
dG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFn
ZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsK
KyAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNrZXJE
b2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFjY2Vw
dGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDQ0Y2JiMTgyNGIzYzU0
MDlhNTZhYjhmMWZjYjQ3NjE3NTIzOGRmODMuLjcxNDAxYjcxOTJjNWU0NDdlODE1NWNjMmE0MTFl
YWQ1YzcwMDJkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQpAQCAtNTY4LDEwICs1NjgsMjQgQEAgU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpk
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWwK
ICNlbmRpZgogfQogCitzdGF0aWMgTlNDb3JyZWN0aW9uUmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKQoreworICAgIHN3
aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJl
dmVydGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDsKKyAg
ICBjYXNlIFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uRWRpdGVkOgorICAgICAgICByZXR1cm4gTlND
b3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlv
bkFjY2VwdGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZDsK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNDb3JyZWN0
aW9uUmVzcG9uc2VBY2NlcHRlZDsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5
cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpCiB7Ci0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25z
ZVR5cGUgPT0gQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2
ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLSAgICBDb3JyZWN0aW9uUGFuZWw6
OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV92aWV3LCBtX2ltcGwtPnNwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnKCksIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcpOworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSht
X2ltcGwtPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCksIHRvQ29ycmVjdGlvblJlc3BvbnNlKHJl
c3BvbnNlVHlwZSksIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Ny
b2xsYmFyU3R5bGUgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmM2YjIwZGViYjNjOTQwZjNjMGNjMGVkZDA3NTE5MWQ4MzU4ZDBh
YS4uYzZkMzA0OGM3ZWM2YzViNzhjMGQ3OTNmZDMzY2MzYzUyNDMzNjNmYyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDE3LTAxLTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAg
ICAgIE5TU3BlbGxDaGVja2VyJ3MgcmVjb3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNl
ZW4gYXV0b21hdGljIGNvcnJlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjY0NTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ3ODI0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKHNldFNwZWxs
Q2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW06CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hl
Y2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVTcGVsbENoZWNrZXIubW06IEFkZGVkLgorICAgICAgICAoc3RyaW5nRm9yQ29ycmVjdGlvblJl
c3BvbnNlKToKKyAgICAgICAgKGRydF9OU1NwZWxsQ2hlY2tlcl9yZWNvcmRSZXNwb25zZVRvQ29y
cmVjdGlvbik6CisgICAgICAgIChzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRob2RzSWZOZWVkZWQp
OgorICAgICAgICAoc2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQpOgorICAgICAgICBBZGQg
YSBuZXcgdGVzdFJ1bm5lciBtZXRob2QsIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkLCB3
aGljaCwgd2hlbgorICAgICAgICBzZXQgdG8gdHJ1ZSwgbG9ncyB0byBzdGRvdXQgKHdoaWNoIGVu
ZHMgdXAgaW4gdGhlIHRlc3QgcmVzdWx0KSB3aGVuZXZlcgorICAgICAgICBOU1NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTp0b0NvcnJlY3Rpb246Zm9yV29yZDpsYW5ndWFnZTppblNwZWxsRG9j
dW1lbnRXaXRoVGFnOgorICAgICAgICBpcyBjYWxsZWQsIGFuZCB0aGVuIGNhbGxzIHRoZSBvcmln
aW5hbCBtZXRob2QuIEl0IGlzIHJlc2V0IHRvIGZhbHNlIGJldHdlZW4gdGVzdHMuCisKIDIwMTct
MDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
TGV2ZXJhZ2UgU3Vic3RyaW5nIHRvIGNyZWF0ZSBuZXcgQXRvbWljU3RyaW5nSW1wbCBmb3IgU3Rh
dGljU3RyaW5nSW1wbCBhbmQgU3ltYm9sSW1wbApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOTc4MGJlY2EyZWYxODIxY2Q3YjgwMjFlMTgwZTI2MDg3NmE0ZDI0Yy4uZWMzN2Y0ZDUzYjg2
ODgyNTBmM2YwMjcwNTQwOTc5NDY1MTU3MWUwMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03OCw2ICs3OCw3IEBACiAJCTI5Q0ZCQTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5Q0ZCQTJEMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlck1hYy5tbSAqLzsgfTsKIAkJMkNFODhGQTIxNzEyNEQ4QzAwNzM0RkMwIC8qIEphdmFT
Y3JpcHRUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcu
Y3BwICovOyB9OwogCQkyRDQwM0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MDNF
QTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsgfTsKKwkJMkRBMkUz
QTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMkUzQTQxRTFCQTU0
MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovOyB9OwogCQkzMTEx
N0IzRDE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzExMTdCM0IxNUQ5
QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAqLzsgfTsKIAkJ
NDQwNTkwNzExMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MDU5MDcwMTI2
ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi87IH07CiAJCTQ0
Mzc3MzBFMTI1Q0JDMzYwMEFBRTAyQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBOTk3ODMwRkNERTg2
NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi87IH07CkBAIC0yOTEsNiAr
MjkyLDggQEAKIAkJMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDAzRUEyMTUwODcx
NDIwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgbmFtZSA9IExheW91dFRlc3RIZWxwZXIubTsgcGF0aCA9IG1hYy9MYXlvdXRUZXN0SGVs
cGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDAzRjE5MTUwODcxRjkwMDUz
NThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4
cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5J
bmRleCA9IDA7IHBhdGggPSBMYXlvdXRUZXN0SGVscGVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQkyREEyRTNBMzFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRy
ZWVTcGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIuaDsgcGF0aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hl
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREEyRTNBNDFFMUJBNTQxMDBB
M0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbTsgcGF0
aCA9IG1hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzExMTdCM0ExNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRp
b25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaDsgcGF0aCA9IG1hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzExMTdCM0IxNUQ5QTU2QTAwMTYz
QkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgcGF0
aCA9IG1hYy9Nb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1wUmVuZGVyVHJlZVBy
ZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wUmVuZGVyVHJlZVBy
ZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg2LDYgKzc4OSw4IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQlBOEI5MUFERjBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkLmggKi8sCiAJCQkJQThCOTFBRDcwQ0YzQjMyRjAwOEY5MUZGIC8qIER1
bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tICovLAorCQkJCTJEQTJFM0EzMUUxQkE1NDEwMEEzQkJE
MCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oICovLAorCQkJCTJEQTJFM0E0MUUxQkE1
NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSAqLywKIAkJCQlBOEI5
MUFERDBDRjNCMzcyMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cuaCAqLywKIAkJCQlB
OEI5MUFEOTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gKi8sCiAJ
CQkpOwpAQCAtMTA5Niw2ICsxMTAxLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCUExMzRFNTM2MTg5
MDVFRkYwMDkwMUQwNiAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNEMDhCM0EwRTEwNTdFRjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEQTJFM0E1MUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1w
UmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBNUExNUVGMTZF
MTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRDA4QjcxMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAv
KiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBlMzY5NTU2MzJkZGYxNmU4MTc1MDFmZjJj
ZWFiMDhlZmUwYWIzYTJhLi40MTlmYzM3NTJjM2I4YWEzMDE3Njc1YTAxYjdlNjQ3YTg1MzRjOTMz
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIAorI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0
LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlSXRlbS5oIgpA
QCAtMTc3OSw2ICsxNzgwLDE0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGltYWdlQ291bnRJbkdlbmVy
YWxQYXN0ZWJvYXJkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGNvbnRyb2xsZXItPmltYWdlQ291bnRJbkdlbmVy
YWxQYXN0ZWJvYXJkKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTcGVsbENoZWNrZXJM
b2dnaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisgICAgc2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIC8vIFN0YXRpYyBWYWx1ZXMKIAogc3RhdGljIEpT
VmFsdWVSZWYgZ2V0VGltZW91dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKQEAgLTIyMjUsNiArMjIzNCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5u
ZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImFjY3VtbXVsYXRlTG9nc0ZvckNoYW5u
ZWwiLCBhY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInJ1blVJ
U2NyaXB0IiwgcnVuVUlTY3JpcHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpbWFnZUNv
dW50SW5HZW5lcmFsUGFzdGVib2FyZCIsIGltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQi
LCBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IDUyZmM1ZmI5MDMyMTFjMDlmZjU2YTgzMGIzMDQzMjUyNDI0NmViZDYu
LjkyMGMxNWNjYzdkYmU4ODc3YTRjNTM3ZjkwNjdjMDc4ZTY4ZjMzODkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBv
cnQgIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVEcmFn
Z2luZ0luZm8uaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5oIgorI2ltcG9y
dCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
V2luZG93LmgiCiAjaW1wb3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIkV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuaCIKQEAgLTE4OTQsNiArMTg5NSw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9uCiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKKyAgICBzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZChmYWxzZSk7CisKICAgICByZXNldEFjY3VtdWxhdGVkTG9ncygp
OwogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nh
cnkoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZVNwZWxsQ2hlY2tlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUzZmQ3MWM0MjExYzBiMjdjNzVjOTFmMTY2
MWZiN2NjNjE0MTg0YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCit2b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjY2E2NmU4ZGFhMzA3ZmM1NmE5MjI2MDRmYzcwZGFlMTBhN2M3MjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVT
cGVsbENoZWNrZXIubW0KQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaCIKKworI2ltcG9y
dCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisKK3N0YXRpYyBib29sIHNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkOworc3RhdGljIElNUCBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUDsK
Kworc3RhdGljIGNvbnN0IGNoYXIgKnN0cmluZ0ZvckNvcnJlY3Rpb25SZXNwb25zZShOU0NvcnJl
Y3Rpb25SZXNwb25zZSBjb3JyZWN0aW9uUmVzcG9uc2UpCit7CisgICAgc3dpdGNoIChjb3JyZWN0
aW9uUmVzcG9uc2UpIHsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlTm9uZToKKyAgICAg
ICAgcmV0dXJuICJub25lIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQ6
CisgICAgICAgIHJldHVybiAiYWNjZXB0ZWQiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9u
c2VSZWplY3RlZDoKKyAgICAgICAgcmV0dXJuICJyZWplY3RlZCI7CisgICAgY2FzZSBOU0NvcnJl
Y3Rpb25SZXNwb25zZUlnbm9yZWQ6CisgICAgICAgIHJldHVybiAiaWdub3JlZCI7CisgICAgY2Fz
ZSBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDoKKyAgICAgICAgcmV0dXJuICJlZGl0ZWQiOwor
ICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDoKKyAgICAgICAgcmV0dXJuICJy
ZXZlcnRlZCI7CisgICAgfQorCisgICAgcmV0dXJuICJpbnZhbGlkIjsKK30KKworc3RhdGljIHZv
aWQgZHJ0X05TU3BlbGxDaGVja2VyX3JlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uKGlkIHNlbGYs
IFNFTCBfY21kLCBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgTlNTdHJpbmcgKmNvcnJl
Y3Rpb24sIE5TU3RyaW5nICp3b3JkLCBOU1N0cmluZyAqbGFuZ3VhZ2UsIE5TSW50ZWdlciBzcGVs
bERvY3VtZW50VGFnKQoreworICAgIGlmIChzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCkKKyAg
ICAgICAgcHJpbnRmKCJOU1NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbjog
JXMgLT4gJXMgKHJlc3BvbnNlOiAlcylcbiIsIFt3b3JkIFVURjhTdHJpbmddLCBbY29ycmVjdGlv
biBVVEY4U3RyaW5nXSwgc3RyaW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlKSk7CisK
KyAgICB3dGZDYWxsSU1QPHZvaWQsIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBOU1N0cmluZyAqLCBO
U1N0cmluZyAqLCBOU1N0cmluZyAqLCBOU0ludGVnZXI+KGFwcEtpdFJlY29yZFJlc3BvbnNlSU1Q
LCBzZWxmLCBfY21kLCByZXNwb25zZSwgY29ycmVjdGlvbiwgd29yZCwgbGFuZ3VhZ2UsIHNwZWxs
RG9jdW1lbnRUYWcpOworfQorCitzdGF0aWMgdm9pZCBzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRo
b2RzSWZOZWVkZWQoKQoreworICAgIHN0YXRpYyBCT09MIGhhc1N3aXp6bGVkOworICAgIGlmICho
YXNTd2l6emxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGhhc1N3aXp6bGVkID0gWUVTOworCisg
ICAgTWV0aG9kIHJlY29yZFJlc3BvbnNlTWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qo
b2JqY19nZXRDbGFzcygiTlNTcGVsbENoZWNrZXIiKSwgQHNlbGVjdG9yKHJlY29yZFJlc3BvbnNl
OnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1bWVudFdpdGhUYWc6KSk7
CisKKyAgICBhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCA9IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlv
bihyZWNvcmRSZXNwb25zZU1ldGhvZCwgKElNUClkcnRfTlNTcGVsbENoZWNrZXJfcmVjb3JkUmVz
cG9uc2VUb0NvcnJlY3Rpb24pOworfQorCit2b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBzd2l6emxlTlNTcGVsbENoZWNrZXJNZXRob2RzSWZO
ZWVkZWQoKTsKKworICAgIHNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkID0gZW5hYmxlZDsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMzU3YzlkYjIyNzA1MmU4MGYyZmE0MjAzNzdjMzM0OTQwMjRjNDEzLi5kMGVjN2I3
YmM1NTBhZjljY2E2YTFiN2I4OWFkZGRiY2UyMTY2MWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTctMDEtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTlNTcGVsbENoZWNrZXIncyByZWNvcmRSZXNwb25zZSBpc24ndCBjYWxsZWQgZm9yIHVu
c2VlbiBhdXRvbWF0aWMgY29ycmVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NjQ1MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NDc4
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2VkaXRpbmcuanM6CisgICAgICAgIChydW5FZGl0aW5nVGVzdCk6CisgICAgICAgIChy
dW5FZGl0aW5nVGVzdFdpdGhDYWxsYmFja0xvZ2dpbmcpOgorICAgICAgICBBZGQgYSB3YXkgdG8g
cnVuIGFuIGVkaXRpbmcgdGVzdCB3aXRob3V0IGVuYWJsaW5nIG5vaXN5IGVkaXRpbmcgY2FsbGJh
Y2sgbG9nZ2luZy4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNl
ZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29y
ZHMtYWNjZXB0YW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgdGVzdCB0aGF0IGVuc3Vy
ZXMgdGhhdCB3ZSBjb3JyZWN0bHkgaW5mb3JtIE5TU3BlbGxDaGVja2VyIG9mIGFuCisgICAgICAg
IGFjY2VwdGVkIHVuc2VlbiBjb3JyZWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBEaXNhYmxlIHRoZSB0ZXN0IGJlY2F1c2Ugc3Bl
bGxpbmcgdGVzdHMgZG9uJ3Qgd29yayBpbiBXZWJLaXQyIGF0IGFsbC4KKwogMjAxNy0wMS0wMiAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBFeHBv
c2UgYmxvY2sgcXVvdGUgbGV2ZWwgdG8gaU9TIEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9lZGl0aW5nLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzCmluZGV4
IDhmNGUzZDIyYjA3MDllZDcyMGEyYzJhNWM5M2FmMTY5MGEyNWI0MzkuLmVjMzIyMWQzZDc1ZmU4
MzczNjFjZDI1Nzk0N2E2OGQzM2I4YzI3ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvZWRpdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMKQEAgLTg5
NCw3ICs4OTQsMTEgQEAgZnVuY3Rpb24gZm9yd2FyZERlbGV0ZUNvbW1hbmQoKSB7CiB9KSgpOwog
CiBmdW5jdGlvbiBydW5FZGl0aW5nVGVzdCgpIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgcnVuRWRpdGluZ1Rlc3RXaXRoQ2FsbGJhY2tMb2dnaW5nKHRydWUpOworfQorCitmdW5j
dGlvbiBydW5FZGl0aW5nVGVzdFdpdGhDYWxsYmFja0xvZ2dpbmcoZW5hYmxlQ2FsbGJhY2tMb2dn
aW5nKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIGVuYWJsZUNhbGxiYWNrTG9nZ2lu
ZykKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwogCiAgICAgdmFy
IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVj
b3Jkcy1hY2NlcHRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL3Nw
ZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDcxNTFlYmMwZGIyNjA1MTNkMzJiMjNiNTgxOTI1NTNhOTU3YzZl
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL3NwZWxsaW5nL2Fj
Y2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNiBAQAorTlNTcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb246
IG5vdGF0aW9ubCAtPiBub3RhdGlvbmFsIChyZXNwb25zZTogYWNjZXB0ZWQpCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4NTQKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzQ1eDU0CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNjk3OiAiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWNjZXB0ZWQgY2Fu
ZGlkYXRlcyB0aGF0IHdlcmUgYWNjZXB0ZWQgaW1tZWRpYXRlbHkgYW5kIHVuc2VlbiBieSB0aGUg
dXNlciBzdGlsbCB0cmlnZ2VyIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA3
NDU6ICJOU1NwZWxsQ2hlY2tlciByZXBvcnRpbmcuIEEgc2luZ2xlIFwicmVjb3JkUmVzcG9uc2VU
b0NvcnJlY3Rpb25cIiBsb2dnaW5nIHNob3VsZCBiZSBvdXRwdXQgYnkgdGhpcyB0ZXN0LCBjb3Jy
ZWN0aW5nIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCAzMjk6ICJcIm5vdGF0
aW9ubFwiIHRvIFwibm90YXRpb25hbFwiLCBhbmQgc2hvdWxkIGJlIGFjY2VwdGVkLiIKKyAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDkyOiAidGhlIG5vdGF0aW9uYWwgIgorICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMXgxOAorY2FyZXQ6IHBvc2l0aW9uIDE1IG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0
YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vl
bi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2NlcHRhbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZlODMzNDVh
YWRkZGI5NjNmOWRkZGM0ZGUxZDk5MTE1MDE5Y2RjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29y
ZHMtYWNjZXB0YW5jZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPiAKKzxoZWFkPgorPHNj
cmlwdCBzcmM9Li4vLi4vZWRpdGluZy5qcyBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4
dC9KYXZhU2NyaXB0IiA+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gZWRpdGluZ1Rlc3Qo
KSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKHRydWUpOworCisgICAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoJ3QnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnaCcpOworICAgIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKyAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZCgnbicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdvJyk7Cisg
ICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3QnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgn
YScpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoJ2knKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnbycpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKCduJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2wnKTsKKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWNjZXB0ZWQgY2FuZGlkYXRlcyB0aGF0IHdl
cmUgYWNjZXB0ZWQgaW1tZWRpYXRlbHkgYW5kIHVuc2VlbiBieSB0aGUgdXNlciBzdGlsbCB0cmln
Z2VyIE5TU3BlbGxDaGVja2VyIHJlcG9ydGluZy4gQSBzaW5nbGUgInJlY29yZFJlc3BvbnNlVG9D
b3JyZWN0aW9uIiBsb2dnaW5nIHNob3VsZCBiZSBvdXRwdXQgYnkgdGhpcyB0ZXN0LCBjb3JyZWN0
aW5nICJub3RhdGlvbmwiIHRvICJub3RhdGlvbmFsIiwgYW5kIHNob3VsZCBiZSBhY2NlcHRlZC48
L3A+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPHNw
YW4gaWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3RX
aXRoQ2FsbGJhY2tMb2dnaW5nKGZhbHNlKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZWIxMDgxOTAyMjQyOWE5NDY1MTUyNzNkNWI4Mzg2M2M3OTcwOWQ5Mi4uZWQzYjM5MGZkYWNmYmI5
YzQ0YTllOGNkODI1MGQ3NjVjZTE5ZDlmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTczLDYgKzE3Myw3IEBAIHdlYmtpdC5vcmcvYi8x
MDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYXV0b2NvcnJlY3RlZC13
b3JkLmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1j
dXJzb3ItdG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVy
bGluZS1hZnRlci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRt
bCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9h
Y2NlcHQtY2FuZGlkYXRlLWFsbG93cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQt
dW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1cmUgXQogCiAj
IFtXSzJdIFtNYWNdIFN1cHBvcnQgZHJhZyBpbiBtb3VzZSBldmVudHMgZm9yIFdlYktpdDIgRXZl
bnRTZW5kZXIKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODU1
Mj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297954</attachid>
            <date>2017-01-03 14:37:41 -0800</date>
            <delta_ts>2017-01-03 18:12:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166450-20170103143619.patch</filename>
            <type>text/plain</type>
            <size>54881</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjYjJiOGIyNzQxMGRh
ZmRjYjQwY2MzNWRlZTc0Y2VlODg4OWZmNC4uMWE4MzQ0MWFmNDNhNDdhMjNhMGIzODI2OTUzZmZm
Yjc1YmIyMTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE5TU3BlbGxDaGVj
a2VyJ3MgcmVjb3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNlZW4gYXV0b21hdGljIGNv
cnJlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0NTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ3ODI0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvbWFjL3NwZWxs
aW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oOgorICAgICAgICBBZGQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSwgd2hpY2ggdGFrZXMgYSBBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSwgaW5zdGVhZCBvZiBoYXZpbmcKKyAgICAgICAgYSBmdW5jdGlvbiBzcGVjaWZpY2Fs
bHkgZm9yIHJldmVydGVkIGF1dG9jb3JyZWN0aW9ucy4gQWxzbywgZ2V0IHJpZCBvZiB0aGUgdW5u
ZWNlc3NhcnkgaW5kaXJlY3Rpb24KKyAgICAgICAgb2YgdGhlIHByaXZhdGUgb3ZlcmxvYWQgb2Yg
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkLCBzaW5jZSB0aGVyZSdzIG9ubHkg
b25lIGNhbGxlci4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICBDYWxsIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2Ugd2l0aCBBY2NlcHRlZCB3aGVuIHBlcmZvcm1pbmcgYW4gYXV0
by1hdXRvY29ycmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNr
VG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAgIEFkb3B0IHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UuCisKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAg
ICBBZGQgYW4gIkF1dG9jb3JyZWN0aW9uQWNjZXB0ZWQiIHJlc3BvbnNlIHR5cGUuCisKIDIwMTct
MDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgZm9sbG93LXVwIGZpeCBmb3IgcjIxMDIyNwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IDhmMmVjNzMzNzAyMDNmYTM3ZmRjOGZiMTQ0ZWFhMGI2ODQ0ODlmZTkuLjYzZjNkYzBkNzYxOWU2
NDMyY2RjMWQyM2MzYmViNjUxZTkxMTdlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxNy0wMS0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJlY29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBm
b3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTQ0NzgyND4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmhhbmRs
ZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKHRvQ29ycmVjdGlvblJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZSk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9uc2U6dG9Db3Jy
ZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoKKyAgICAgICAg
dGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdnaW5nJ3Mgc2Fr
ZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgaXQsIGp1c3QgdGhlIHRhZy4KKyAgICAgICAgQ29udmVydCB0aGUgbmV3IEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nCisgICAgICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHZhbHVlLgorCiAyMDE3LTAxLTAxICBKZWZmIE1pbGxlciAgPGplZmZt
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJp
bmdzIHRvIGluY2x1ZGUgMjAxNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI4OTVkYzI3OGEzYWUwMDM3MTFlZTAz
M2FiOTdhMmRjMjMwMTFiOGMuLmFhZGFiMWQxMmM3NDJmN2EyZTdjN2QxYjI3MjM5NGMzYjU5NWUw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wMS0wMiAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJl
Y29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0NzgyND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAg
IChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNl
bWVudCk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9uc2U6dG9Db3Jy
ZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoKKyAgICAgICAg
dGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdnaW5nJ3Mgc2Fr
ZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgaXQsIGp1c3QgdGhlIHRhZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OnRvQ29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Up
OgorICAgICAgICBDb252ZXJ0IHRoZSBuZXcgQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgdmFs
dWUgdG8gaXRzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgdmFs
dWUuCisKIDIwMTctMDEtMDEgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSB1c2VyLXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDE3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCA5NTU5N2RhYWZkYjE0ZWIyMmZjYzZkOWI3ODY2YzU3NjJlNzAzYjlkLi4x
NTMxMmE1NDEwMTFhNjMxODZjNzgyNmU2ODY3MTJhNDNiYjA2NzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMx
NCw3ICszMTQsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QXV0b2Nv
cnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKCkKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rl
ZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogewogICAgIGlmIChBbHRlcm5hdGl2ZVRleHRD
bGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQotICAgICAgICBjbGllbnQt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29y
cmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCBjb3JyZWN0ZWQsIGNv
cnJlY3Rpb24pOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CiAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKQEAgLTUxNiwxNSArNTE2LDEwIEBAIFRl
eHRDaGVja2VyQ2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0ZXh0Q2hlY2tlcigp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
UGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkKIHsKLSAgICBpZiAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKLSAgICAgICAg
Y2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0
ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Ci19Ci0KLXZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2Vk
KGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIFBhc3NSZWZQdHI8UmFuZ2U+IHJlcGxhY2Vt
ZW50UmFuZ2UpCi17Ci0gICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKHJl
cGxhY2VkU3RyaW5nLCBwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkpOworICAgIGlm
IChhdXRvIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCBw
bGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkpOwogfQogCiB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6Om1hcmtSZXZlcnNlZChQYXNzUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFu
Z2UpCkBAIC01NTcsOSArNTUyLDkgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbigKICAgICAgICAg
Ly8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRvIGRl
dGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQgb3IK
ICAgICAgICAgLy8gZWRpdGVkIGl0IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgbm90aWZ5IHNwZWxs
Y2hlY2tlciBhY2NvcmRpbmdseS4KICAgICAgICAgaWYgKG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVz
Y3JpcHRpb24oY29ycmVjdGVkT25jZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJzWzBd
LT5kZXNjcmlwdGlvbigpID09IGNvcnJlY3RlZCkKLSAgICAgICAgICAgIGNsaWVudC0+cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQs
IGNvcnJlY3Rpb24pOworICAgICAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJl
Y3Rpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25FZGl0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlv
bik7CisgICAgICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0
b2NvcnJlY3Rpb25SZXNwb25zZTo6RWRpdGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAg
IH0KIAogICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZU9mQ29ycmVjdGlvbiwgRG9jdW1l
bnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3Zl
UGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAppbmRleCA1ODNkZTJmNWZlMDQ1YzlmMDgw
YTNmMWVmMDQ3YjkxYjUwNjA5OGZhLi5jNTgzNTAzZWFhMjI2NjY3NTNiMjAyM2IzZTU2YmJkNTE2
MTQxYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIFVOTEVTU19FTkFCTEVEKHsgcmV0dXJu
IGZhbHNlOyB9KQogICAgIGJvb2wgc2hvdWxkUmVtb3ZlTWFya2Vyc1Vwb25FZGl0aW5nKCk7CiAK
LSAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKSBV
TkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7IFVOVVNFRF9QQVJB
TShyZXBsYWNlbWVudFJhbmdlKTsgfSkKKyAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkgVU5MRVNTX0VOQUJMRUQoeyBV
TlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOyBVTlVTRURfUEFSQU0ocmVwbGFjZW1lbnRSYW5n
ZSk7IH0pCiAgICAgdm9pZCBtYXJrUmV2ZXJzZWQoUGFzc1JlZlB0cjxSYW5nZT4gY2hhbmdlZFJh
bmdlKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShjaGFuZ2VkUmFuZ2UpOyB9KQogICAg
IHZvaWQgbWFya0NvcnJlY3Rpb24oUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZWRSYW5nZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0o
cmVwbGFjZWRSYW5nZSk7IFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7IH0pCiAKQEAgLTEx
OSw3ICsxMTksNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkaXNtaXNzU29vbihSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKICAgICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZShjb25zdCBSYW5nZSosIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0
aXZlVGV4dFR5cGUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mKTsK
ICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKTsKICAgICB2b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlKiByYW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAgICAgU3RyaW5nIG1h
cmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRU
eXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCBlNDg2NDY5NjI3MGJlZjg5ZGZkNWVjMzUxNTYzNjUxMTVjOWMyMzE2Li5iODMy
OTc1YzgxZjliMmU1ZmNhODgyM2MyNjJkMWUxODlmNDIzY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC0yNTc3LDkgKzI1NzcsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBs
YWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3QK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0TG9jYXRpb24gPCBzZWxlY3Rpb25PZmZzZXQpCiAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgo
KSAtIHJlc3VsdExlbmd0aDsKIAotICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0
aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3Jy
ZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUNvcnJlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci0+bWFya0NvcnJlY3Rpb24ocGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCBy
ZXBsYWNlbWVudC5sZW5ndGgoKSksIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmlu
ZywgcmVwbGFjZW1lbnRSYW5nZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFy
a2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJl
IHJlLWNvcnJlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLT5tYXJrQ29ycmVjdGlvbihXVEZNb3ZlKHJlcGxhY2VtZW50UmFuZ2UpLCByZXBsYWNl
ZFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpAQCAtMjYxMyw3ICsyNjE3LDcgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxh
Y2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAgICAgaWYgKCFzaG91bGRJ
bnNlcnRUZXh0KHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbjo6UGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKHJlcGxh
Y2VkU3RyaW5nLCBzZWxlY3Rpb24pOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpSZXZl
cnRlZCwgcmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbik7CiAgICAgVGV4dENoZWNraW5nUGFyYWdy
YXBoIHBhcmFncmFwaChzZWxlY3Rpb24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChy
ZXBsYWNlZFN0cmluZywgZmFsc2UsIGZhbHNlLCBFZGl0QWN0aW9uSW5zZXJ0KTsKICAgICBSZWZQ
dHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hl
Y2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCAyYmRmYTQ5YmY0MjQ4OTcwNDIzYmNk
NDg4M2E2NTgyYjkyM2YwZjdjLi4zNTFiZTc2ZDdiYmI2Mjk4MjEzZGI0ODhlNTZkZTE1NDRiMGU5
MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAg
LTUwLDkgKzUwLDEwIEBAIGVudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7CiAgICAgQWx0ZXJuYXRp
dmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcwogfTsKIAotZW51bSBBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSB7Ci0gICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgQXV0b2NvcnJl
Y3Rpb25SZXZlcnRlZAorZW51bSBjbGFzcyBBdXRvY29ycmVjdGlvblJlc3BvbnNlIHsKKyAgICBF
ZGl0ZWQsCisgICAgUmV2ZXJ0ZWQsCisgICAgQWNjZXB0ZWQKIH07CiAKIGNsYXNzIEFsdGVybmF0
aXZlVGV4dENsaWVudCB7CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICNlbmRpZgogI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQogICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgKaW5kZXggODkzZTU3NzAyZGQ0Nzkw
MzkzZDljOTVlNzQxNmUzYWMzOTAzZDI0NS4uZGY4YjQxMzZkODhjZWExZGY1YWU3MmI3YzRiN2Yx
NTRlMWJiNTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
Q29ycmVjdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
Q29ycmVjdGlvblBhbmVsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH5Db3JyZWN0
aW9uUGFuZWwoKTsKICAgICB2b2lkIHNob3coV2ViVmlldyosIFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MpOwogICAgIFN0cmluZyBkaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoV2ViVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICBzdGF0
aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXgg
ZDczZDBkZjkxZjQ0YmY0YTNiMDBiNTU1OTVlYjYwMGE3YWM5NWU1OS4uODk1YzRiMmQ0OWRjMWM4
ZmIzMDhiYjM4MDBiMGI5MTk0NjU1YmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtOTksOSArOTksOSBAQCBTdHJp
bmcgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCByZWFzbwogICAgIHJldHVybiBtX3Jlc3VsdEZvckRpc21pc3NhbC5nZXQo
KTsKIH0KIAotdm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2
b2lkIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShOU0ludGVn
ZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nKQogewotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZWNv
cmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmcgZm9yV29y
ZDpyZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbdmll
dyBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ11dOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFj
ZW1lbnRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZ107CiB9CiAKIHZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2Vt
ZW50LCAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSkK
QEAgLTEwOSwyNyArMTA5LDI2IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRl
ZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgaWYgKCFt
X3ZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxD
aGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07CiAgICAgTlNJbnRl
Z2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ107
CiAKICAgICBzd2l0Y2ggKGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKSB7CiAgICAgY2FzZSBOU0Nv
cnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFj
ZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9y
V29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVu
dFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGRvY3VtZW50
VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkLCByZXBsYWNlZCwgYWNjZXB0ZWRSZXBs
YWNlbWVudCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFtX3dhc0Rpc21pc3Nl
ZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRDYW5jZWxsZWQpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlv
bjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlUmVq
ZWN0ZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlv
blJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3Jk
OnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFn
XTsKKyAgICAgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGRvY3VtZW50
VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxh
Y2VtZW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlv
bkluZGljYXRvclR5cGVSZXZlcnNpb246CiAgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50
KQotICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25S
ZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVw
bGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWdd
OworICAgICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywg
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1l
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVH
dWVzc2VzOgogICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKLSAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0
b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3Bv
bnNlQWNjZXB0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA2MGJmMWQyNTBlNjY2
ZmEzYzE5ZmNmNGU5YjlmY2FlNjAzN2IyNzljLi5jOGQzM2ViMTg5YTZmMzFkNWNjYmRlMThlZDU3
YjZmZTU0Y2ZmN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgb3Zl
cnJpZGU7CisgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
SShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
CmluZGV4IDcxYmUxMWY4MTc2YWFmYmYzMDkwNWI4YjBjNDg4NjVhNDAzMWQ0MTcuLjBiYWQ1Mjdk
MmU0YzhkODZmZjczYWU3NzQ2YzhhNGYxMDE3MGJlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
bW0KQEAgLTYyLDEwICs2MiwyNCBAQCBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpk
aXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcgogICAgIHJldHVy
biBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbik7CiB9CiAKLXZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3N0YXRpYyBpbmxpbmUgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSByZXNwb25zZSkKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3Bv
bnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VS
ZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5l
bDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBs
YWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkOgorICAg
ICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDsKKyAgICBjYXNlIFdlYkNv
cmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkVkaXRlZDoKKyAgICAgICAgcmV0dXJuIE5TQ29y
cmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25S
ZXNwb25zZTo6QWNjZXB0ZWQ6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25SZXNwb25zZUFj
Y2VwdGVkOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBO
U0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3Bv
bnNlIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKQoreworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShbbV93ZWJWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSwgdG9D
b3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UpLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IDU3MDA0N2M0ZTJkNjhkODQ3NTcwYTA1NzYzNzEyZWM4ZDFiMmE5YjYuLjFjMjEwYjFkN2Rj
MmYzYjhjNjllZWRjODFiOTgyNzBhZWVmMDUxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBiMDQ0NzBjZmU2YjJhNzRjNDg3OTcxMzRlMjE3ZTA5MDliYTM5MWVhLi4xMGYzY2Y5YjBh
YTA0YWQyZDZkN2Q1N2RkYWQzZjQ2YzMyNWFmNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjEwNiw5ICs2MTA2LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJl
c3VsdCkKICAgICByZXN1bHQgPSBtX3BhZ2VDbGllbnQuZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24oKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpcmVhc29uKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNw
b25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShpbnQzMl90IHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC5yZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSlyZXNw
b25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgbV9wYWdl
Q2xpZW50LnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uoc3RhdGljX2Nhc3Q8QXV0b2NvcnJl
Y3Rpb25SZXNwb25zZT4ocmVzcG9uc2UpLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxOTM2ODJlOGJkNGFlOWE1NGU4OGQ4NGJj
Y2YyNjlkZjk5OGNhM2U4Li42MjEwMmExOWRkZGFiYjY3YWQ1NzhiNDk3N2FkZDljZTU5NzI3Mjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTM1OCw3ICszNTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIFdlYkNvcmU6OkZsb2F0UmVj
dCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlZFN0cmluZywgU3Ry
aW5nIHJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncykKICAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3QgcmVhc29uKQog
ICAgIERpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAtPiAoU3RyaW5n
IHJlc3VsdCkKLSAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9u
c2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlLCBTdHJp
bmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAKICAgICBTZXRF
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5o
CmluZGV4IDY2NmVjZDNmNGIzYmQxOGZhOTljNjNiMDcxZjFmMTQ3Njc3ZmM2ODEuLmY5NWY1YjM5
YTRmMjU0YjMyMTdlOTMwMTg1NjYxYmFkMTE3MjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgfkNvcnJlY3Rpb25QYW5lbCgpOwogICAgIHZvaWQgc2hvdyhOU1ZpZXcgKiwgV2ViVmll
d0ltcGwmLCBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICBTdHJpbmcgZGlzbWlz
cyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKLSAgICBzdGF0
aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TVmlldyAqLCBOU0ludGVnZXIg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IGIz
ODFhMjcwNzVkMDc5MGJjM2U4MjFmYjQ4OTRlN2I1NTdmOWM4ZjcuLjk2NDRkOWZiYzkzN2NmYTNl
M2I1YzA0NTZmNzMzOTI3MjRjZmMyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIENvcnJl
Y3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc28KICAgICByZXR1cm4gbV9yZXN1bHRGb3JEaXNtaXNzYWwuZ2V0KCk7CiB9CiAK
LXZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TVmll
dyAqdmlldywgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25S
ZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZykKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlND
b3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7CiAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlv
bjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKIH0KQEAgLTEx
OSwyNiArMTE5LDI0IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxh
Y2VtZW50KFdlYlZpZXdJbXBsJiB3ZWJWaWV3SW1wbCwgTlNTdHJpCiAgICAgaWYgKCFtX3ZpZXcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAgICAKICAgICBzd2l0Y2ggKGNv
cnJlY3Rpb25JbmRpY2F0b3JUeXBlKSB7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JU
eXBlRGVmYXVsdDoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAg
ICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0
ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
XTsKKyAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFj
Y2VwdGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghbV93
YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2FuY2VsbGVkKQotICAgICAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0
b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOm1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwor
ICAgICAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCwgcmVwbGFjZWQsIHBy
b3Bvc2VkUmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRv
Q29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZ107Cisg
ICAgICAgICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQsIHJlcGxhY2VkLCBwcm9w
b3NlZFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5T
Q29ycmVjdGlvbkluZGljYXRvclR5cGVSZXZlcnNpb246CiAgICAgICAgIGlmIChhY2NlcHRlZFJl
cGxhY2VtZW50KQotICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFj
Y2VwdGVkUmVwbGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9z
cGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKG1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJ0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczoKICAgICAgICAgaWYg
KGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJl
c3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVk
UmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0
aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAppbmRleCA0ZWEwYWFmZmIzNmM1YzNlZDI3ZmI3ZDExYjliZTNlODU4ZjFi
MjhjLi45ZDdjZTA0MzY4MmM3MmE4ZTk2MTc3NTNiODIwMTFiMTRiNzczZjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNjAsNyArMTYw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJT
dHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCmluZGV4IDQ0Y2JiMTgyNGIzYzU0MDlhNTZhYjhmMWZjYjQ3NjE3NTIzOGRm
ODMuLmZlZWEyNjNkM2Q3YTE3Mjc5NTdlZmE2MWM2ZWJhMjU3MjUwY2VlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNTY4LDEwICs1
NjgsMjQgQEAgU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWwKICNlbmRpZgogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9u
UmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZSByZXNw
b25zZSkKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlw
ZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRl
ZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5lbDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3ZpZXcsIG1faW1wbC0+c3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKSwgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rp
b25SZXNwb25zZTo6UmV2ZXJ0ZWQ6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25SZXNwb25z
ZVJldmVydGVkOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6RWRp
dGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgY2Fz
ZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpBY2NlcHRlZDoKKyAgICAgICAgcmV0
dXJuIE5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQ7CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQ7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0
b2NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBDb3JyZWN0aW9uUGFu
ZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9pbXBsLT5zcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpLCB0b0NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZSksIHJlcGxhY2VkU3RyaW5n
LCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA4NWQ5ZWU3ZmExYWZiMDIwYzMw
ZmU0YmMyZDcyNDhmYTVjMzM4NWNjLi40NTIwZTlkNjliYzgwMmY2ZWJkYTY1YjI5N2U4YThkNDU4
YzE5NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc21pc3NBbHRl
cm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKICNlbmRpZgog
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCmluZGV4IDhkODMyM2FjYWU1NzUy
Y2UyYmQ5NWRmZjJlMmNmYTc0ZGQxNTkzMjUuLjBjZmQ0OGI0YjM5NjAyYjY0ZDExYjA2OTM4NWFh
YjNkNmY4YTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcApAQCAtNjksOSArNjksOSBAQCBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShzdGF0aWNfY2FzdDxpbnQzMl90PihyZXNwb25zZSksIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYzZiMjBkZWJiM2M5
NDBmM2MwY2MwZWRkMDc1MTkxZDgzNThkMGFhLi5hN2EzYzRiMzAzNTA2ODFlOGViNDhlNzYzMDhi
NzA3YzM0NzQyYjRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMDEtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTlNTcGVsbENoZWNrZXIncyByZWNvcmRSZXNw
b25zZSBpc24ndCBjYWxsZWQgZm9yIHVuc2VlbiBhdXRvbWF0aWMgY29ycmVjdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ1MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjk0NDc4MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
Zyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVNwZWxsQ2hlY2tlci5tbTogQWRkZWQuCisgICAgICAgIChzdHJpbmdGb3JDb3JyZWN0aW9uUmVz
cG9uc2UpOgorICAgICAgICAoZHJ0X05TU3BlbGxDaGVja2VyX3JlY29yZFJlc3BvbnNlVG9Db3Jy
ZWN0aW9uKToKKyAgICAgICAgKHN3aXp6bGVOU1NwZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCk6
CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZCBh
IG5ldyB0ZXN0UnVubmVyIG1ldGhvZCwgc2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQsIHdo
aWNoLCB3aGVuCisgICAgICAgIHNldCB0byB0cnVlLCBsb2dzIHRvIHN0ZG91dCAod2hpY2ggZW5k
cyB1cCBpbiB0aGUgdGVzdCByZXN1bHQpIHdoZW5ldmVyCisgICAgICAgIE5TU3BlbGxDaGVja2Vy
IHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1
bWVudFdpdGhUYWc6CisgICAgICAgIGlzIGNhbGxlZCwgYW5kIHRoZW4gY2FsbHMgdGhlIG9yaWdp
bmFsIG1ldGhvZC4gSXQgaXMgcmVzZXQgdG8gZmFsc2UgYmV0d2VlbiB0ZXN0cy4KKwogMjAxNy0w
MS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBM
ZXZlcmFnZSBTdWJzdHJpbmcgdG8gY3JlYXRlIG5ldyBBdG9taWNTdHJpbmdJbXBsIGZvciBTdGF0
aWNTdHJpbmdJbXBsIGFuZCBTeW1ib2xJbXBsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5NzgwYmVjYTJlZjE4MjFjZDdiODAyMWUxODBlMjYwODc2YTRkMjRjLi5lYzM3ZjRkNTNiODY4
ODI1MGYzZjAyNzA1NDA5Nzk0NjUxNTcxZTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc4LDYgKzc4LDcgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OworCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwogCQk0
NDA1OTA3MTEyNjg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNTkwNzAxMjY4
NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSAqLzsgfTsKIAkJNDQz
NzczMEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MzBGQ0RFODY0
MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLzsgfTsKQEAgLTI5MSw2ICsy
OTIsOCBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhy
ZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0
MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxw
ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1
OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTJEQTJFM0EzMUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJl
ZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQTJFM0E0MUUxQkE1NDEwMEEz
QkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRo
ID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNC
QzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRo
ID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzJBNzBBQUIwMzcwNUUxRjAwQzkxNzgzIC8qIER1bXBSZW5kZXJUcmVlUHJl
Zml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlUHJl
Zml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODYsNiArNzg5LDggQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUE4QjkxQURGMENGM0IzNzIwMDhGOTFGRiAvKiBEdW1wUmVuZGVy
VHJlZVBhc3RlYm9hcmQuaCAqLywKIAkJCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi8sCisJCQkJMkRBMkUzQTMxRTFCQTU0MTAwQTNCQkQw
IC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmggKi8sCisJCQkJMkRBMkUzQTQxRTFCQTU0
MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovLAogCQkJCUE4Qjkx
QUREMENGM0IzNzIwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5oICovLAogCQkJCUE4
QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSAqLywKIAkJ
CSk7CkBAIC0xMDk2LDYgKzExMDEsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTEzNEU1MzYxODkw
NUVGRjAwOTAxRDA2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkRBMkUzQTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBS
ZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1QTE1RUYxNkUx
NUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEMDhCNzEwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGUzNjk1NTYzMmRkZjE2ZTgxNzUwMWZmMmNl
YWIwOGVmZTBhYjNhMmEuLjZjNDFkNDk3ZDlmMDczNWZjN2EyYTg0N2EyNGJkNDBjOTNmMjg0NjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNzc5LDYgKzE3NzksMTUgQEAg
c3RhdGljIEpTVmFsdWVSZWYgaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgY29udHJvbGxlci0+aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIFRl
c3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTcGVsbENoZWNrZXJM
b2dnaW5nRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogLy8gU3RhdGlj
IFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaW1lb3V0Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjIyNSw2ICsyMjM0LDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiYWNj
dW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCIsIGFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwsIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAicnVuVUlTY3JpcHQiLCBydW5VSVNjcmlwdENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkIiwgaW1hZ2VDb3VudElu
R2VuZXJhbFBhc3RlYm9hcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZCIsIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKaW5kZXggMWQzYTVjMjY0M2M3YTI1NmRhNWU2NTFlYWRkMmE0MjgyMWMzMmE1
Zi4uYTEwNTk0ZmY2YjIwNDg4MDE1Y2Q1Nzc4YTU0M2IzMmZjYzZkYWZmNiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaApAQCAtMzczLDYgKzM3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihib29sIGluU3RkRXJyKSB7IG1fZHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyID0gaW5TdGRFcnI7IH0KICAgICBib29sIGR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycigpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyOyB9CiAKKyAg
ICB2b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFRlc3RSdW5uZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RVUkwsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQppbmRleCA1MmZjNWZiOTAzMjExYzA5ZmY1NmE4MzBiMzA0MzI1MjQyNDZl
YmQ2Li45MjBjMTVjY2M3ZGJlODg3N2E0YzUzN2Y5MDY3YzA3OGU2OGYzMzg5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKKyNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmgiCkBAIC0xODk0LDYgKzE4OTUsOCBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbgogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCisgICAgc2V0U3Bl
bGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoZmFsc2UpOworCiAgICAgcmVzZXRBY2N1bXVsYXRlZExv
Z3MoKTsKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVj
ZXNzYXJ5KCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlM2ZkNzFjNDIxMWMwYjI3Yzc1Yzkx
ZjE2NjFmYjdjYzYxNDE4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDI2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKwordm9pZCBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NmJkNzhlYTJkZDExZWFiZTYwYWE4ODdkYWRlNjAwMTRkM2Q5NTdh
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLm1tCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCisKKyNp
bXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgorCitzdGF0aWMgYm9vbCBzcGVs
bENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKK3N0YXRpYyBJTVAgYXBwS2l0UmVjb3JkUmVzcG9uc2VJ
TVA7CisKK3N0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9uUmVzcG9uc2UoTlND
b3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQoreworICAgIHN3aXRjaCAoY29y
cmVjdGlvblJlc3BvbnNlKSB7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZU5vbmU6Cisg
ICAgICAgIHJldHVybiAibm9uZSI7CisgICAgY2FzZSBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2Vw
dGVkOgorICAgICAgICByZXR1cm4gImFjY2VwdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJl
c3BvbnNlUmVqZWN0ZWQ6CisgICAgICAgIHJldHVybiAicmVqZWN0ZWQiOworICAgIGNhc2UgTlND
b3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkOgorICAgICAgICByZXR1cm4gImlnbm9yZWQiOworICAg
IGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ6CisgICAgICAgIHJldHVybiAiZWRpdGVk
IjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQ6CisgICAgICAgIHJldHVy
biAicmV2ZXJ0ZWQiOworICAgIH0KKworICAgIHJldHVybiAiaW52YWxpZCI7Cit9CisKK3N0YXRp
YyB2b2lkIGRydF9OU1NwZWxsQ2hlY2tlcl9yZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbihpZCBz
ZWxmLCBTRUwgX2NtZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIE5TU3RyaW5nICpj
b3JyZWN0aW9uLCBOU1N0cmluZyAqd29yZCwgTlNTdHJpbmcgKmxhbmd1YWdlLCBOU0ludGVnZXIg
c3BlbGxEb2N1bWVudFRhZykKK3sKKyAgICBpZiAoc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQp
CisgICAgICAgIHByaW50ZigiTlNTcGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rp
b246ICVzIC0+ICVzIChyZXNwb25zZTogJXMpXG4iLCBbd29yZCBVVEY4U3RyaW5nXSwgW2NvcnJl
Y3Rpb24gVVRGOFN0cmluZ10sIHN0cmluZ0ZvckNvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZSkp
OworCisgICAgd3RmQ2FsbElNUDx2b2lkLCBOU0NvcnJlY3Rpb25SZXNwb25zZSwgTlNTdHJpbmcg
KiwgTlNTdHJpbmcgKiwgTlNTdHJpbmcgKiwgTlNJbnRlZ2VyPihhcHBLaXRSZWNvcmRSZXNwb25z
ZUlNUCwgc2VsZiwgX2NtZCwgcmVzcG9uc2UsIGNvcnJlY3Rpb24sIHdvcmQsIGxhbmd1YWdlLCBz
cGVsbERvY3VtZW50VGFnKTsKK30KKworc3RhdGljIHZvaWQgc3dpenpsZU5TU3BlbGxDaGVja2Vy
TWV0aG9kc0lmTmVlZGVkKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBoYXNTd2l6emxlZDsKKyAgICBp
ZiAoaGFzU3dpenpsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBoYXNTd2l6emxlZCA9IHRydWU7
CisKKyAgICBNZXRob2QgcmVjb3JkUmVzcG9uc2VNZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1l
dGhvZChvYmpjX2dldENsYXNzKCJOU1NwZWxsQ2hlY2tlciIpLCBAc2VsZWN0b3IocmVjb3JkUmVz
cG9uc2U6dG9Db3JyZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRh
ZzopKTsKKworICAgIGFwcEtpdFJlY29yZFJlc3BvbnNlSU1QID0gbWV0aG9kX3NldEltcGxlbWVu
dGF0aW9uKHJlY29yZFJlc3BvbnNlTWV0aG9kLCAoSU1QKWRydF9OU1NwZWxsQ2hlY2tlcl9yZWNv
cmRSZXNwb25zZVRvQ29ycmVjdGlvbik7Cit9CisKK3ZvaWQgc2V0U3BlbGxDaGVja2VyTG9nZ2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHN3aXp6bGVOU1NwZWxsQ2hlY2tlck1ldGhv
ZHNJZk5lZWRlZCgpOworCisgICAgc3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVk
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBjNTc1
ODJjMWMwZDUwMzA5Nzk4M2MzNGY4MTY2NGQzNGIxNDMxYmNlLi45NzIxZWRlYzI1YTgzMzZhMmVi
ZDhkZWUyNjk3OTZlMzZiYzVhMzU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiVGVzdFJ1bm5lci5oIgogCiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
U3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIk1v
Y2tHZW9sb2NhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJNb2NrV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaCIKQEAgLTIxMCw2ICsyMTEsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdl
RGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogICAgIFtXZWJTdG9yYWdlTWFu
YWdlciBzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWw6aW50ZXJ2YWxdOwogfQogCit2b2lk
IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkK
K3sKKyAgICA6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiB2
b2lkIFRlc3RSdW5uZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiB7CiAgICAg
W1dlYlN0b3JhZ2VNYW5hZ2VyIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlc107CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggYTVjM2FmYTFhNWRm
MTIyMTRmMzMzZGQ4ZTMzZGUzYjRlMzkwOThlZi4uNTRlOThmZmQwZWU0NGYyODBlN2Y5ZjRmYTU5
MjM1NDRmNTBlMWFjMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RS
dW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcApAQCAtMTM5MiwzICsxMzkyLDcgQEAgdW5zaWduZWQgVGVzdFJ1bm5lcjo6aW1hZ2VDb3Vu
dEluR2VuZXJhbFBhc3RlYm9hcmQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBwcmludGYoIkVSUk9SOiBUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5h
YmxlZCgpIG5vdCBpbXBsZW1lbnRlZFxuIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjM1N2M5ZGIyMjcwNTJlODBm
MmZhNDIwMzc3YzMzNDk0MDI0YzQxMy4uMjNhMzU1ZjQ2ZjdlMDgzM2E2MDcxY2UxYjhjYjMxODc3
ZjI4ZDFhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTAxLTAzICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE5TU3BlbGxDaGVja2VyJ3MgcmVj
b3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNlZW4gYXV0b21hdGljIGNvcnJlY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0NTAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ3ODI0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogZWRpdGluZy9lZGl0aW5nLmpzOgorICAgICAgICAo
cnVuRWRpdGluZ1Rlc3QpOgorICAgICAgICAocnVuRWRpdGluZ1Rlc3RXaXRoQ2FsbGJhY2tMb2dn
aW5nKToKKyAgICAgICAgQWRkIGEgd2F5IHRvIHJ1biBhbiBlZGl0aW5nIHRlc3Qgd2l0aG91dCBl
bmFibGluZyBub2lzeSBlZGl0aW5nIGNhbGxiYWNrIGxvZ2dpbmcuCisKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFu
Y2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9zcGVsbGluZy9h
Y2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbDogQWRkZWQuCisg
ICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1cmVzIHRoYXQgd2UgY29ycmVjdGx5IGluZm9ybSBO
U1NwZWxsQ2hlY2tlciBvZiBhbgorICAgICAgICBhY2NlcHRlZCB1bnNlZW4gY29ycmVjdGlvbi4K
KworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
RGlzYWJsZSB0aGUgdGVzdCBiZWNhdXNlIHNwZWxsaW5nIHRlc3RzIGRvbid0IHdvcmsgaW4gV2Vi
S2l0MiBhdCBhbGwuCisKIDIwMTctMDEtMDIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWDogRXhwb3NlIGJsb2NrIHF1b3RlIGxldmVsIHRvIGlPUyBB
UEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZWRpdGluZy5qcwppbmRleCA4ZjRlM2QyMmIwNzA5ZWQ3MjBhMmMyYTVjOTNh
ZjE2OTBhMjViNDM5Li5lYzMyMjFkM2Q3NWZlODM3MzYxY2QyNTc5NDdhNjhkMzNiOGMyNzg2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9lZGl0aW5nLmpzCkBAIC04OTQsNyArODk0LDExIEBAIGZ1bmN0aW9uIGZvcndh
cmREZWxldGVDb21tYW5kKCkgewogfSkoKTsKIAogZnVuY3Rpb24gcnVuRWRpdGluZ1Rlc3QoKSB7
Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHJ1bkVkaXRpbmdUZXN0V2l0aENhbGxi
YWNrTG9nZ2luZyh0cnVlKTsKK30KKworZnVuY3Rpb24gcnVuRWRpdGluZ1Rlc3RXaXRoQ2FsbGJh
Y2tMb2dnaW5nKGVuYWJsZUNhbGxiYWNrTG9nZ2luZykgeworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lciAmJiBlbmFibGVDYWxsYmFja0xvZ2dpbmcpCiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEVk
aXRpbmdDYWxsYmFja3MoKTsKIAogICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL3NwZWxsaW5n
L2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0
ZS1yZWNvcmRzLWFjY2VwdGFuY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhZDI3YTA1OTQ0
ZGM3NDM4ZjZkNzM2MmVhZjQxNjJkODQwOGVhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRz
LWFjY2VwdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorTlNTcGVsbENoZWNrZXIg
cmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb246IG5vdGF0aW9ubCAtPiBub3RhdGlvbmFsIChyZXNw
b25zZTogYWNjZXB0ZWQpCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhY2NlcHRlZCBjYW5kaWRh
dGVzIHRoYXQgd2VyZSBhY2NlcHRlZCBpbW1lZGlhdGVseSBhbmQgdW5zZWVuIGJ5IHRoZSB1c2Vy
IHN0aWxsIHRyaWdnZXIgTlNTcGVsbENoZWNrZXIgcmVwb3J0aW5nLiBBIHNpbmdsZSAicmVjb3Jk
UmVzcG9uc2VUb0NvcnJlY3Rpb24iIGxvZ2dpbmcgc2hvdWxkIGJlIG91dHB1dCBieSB0aGlzIHRl
c3QsIGNvcnJlY3RpbmcgIm5vdGF0aW9ubCIgdG8gIm5vdGF0aW9uYWwiLCBhbmQgc2hvdWxkIGJl
IGFjY2VwdGVkLgorCit0aGUgbm90YXRpb25hbMKgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2Vw
dGFuY2UuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNl
ZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4Njk1MmNl
M2RiOGEyMmM2MGI5ZTUxYTlmMjJiNjk3NWI2OGE3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNv
cmRzLWFjY2VwdGFuY2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8aHRtbD4gCis8aGVhZD4KKzxz
Y3JpcHQgc3JjPS4uLy4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRl
eHQvSmF2YVNjcmlwdCIgPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0
KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNl
dFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgndCcpOworICAg
IHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdoJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2Un
KTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCduJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ28nKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgndCcpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdhJyk7CisgICAgdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJ3QnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnaScpOwor
ICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdvJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQo
J24nKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnbCcpOworICAgIHR5cGVDaGFyYWN0ZXJD
b21tYW5kKCcgJyk7Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhY2NlcHRlZCBjYW5kaWRhdGVzIHRoYXQgd2VyZSBhY2NlcHRlZCBp
bW1lZGlhdGVseSBhbmQgdW5zZWVuIGJ5IHRoZSB1c2VyIHN0aWxsIHRyaWdnZXIgTlNTcGVsbENo
ZWNrZXIgcmVwb3J0aW5nLiBBIHNpbmdsZSAicmVjb3JkUmVzcG9uc2VUb0NvcnJlY3Rpb24iIGxv
Z2dpbmcgc2hvdWxkIGJlIG91dHB1dCBieSB0aGlzIHRlc3QsIGNvcnJlY3RpbmcgIm5vdGF0aW9u
bCIgdG8gIm5vdGF0aW9uYWwiLCBhbmQgc2hvdWxkIGJlIGFjY2VwdGVkLjwvcD4KKzxkaXYgY29u
dGVudGVkaXRhYmxlIGlkPSJyb290IiBjbGFzcz0iZWRpdGluZyI+Cis8c3BhbiBpZD0idGVzdCI+
PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQ+CitydW5FZGl0aW5nVGVzdFdpdGhDYWxsYmFja0xv
Z2dpbmcoZmFsc2UpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYjEwODE5MDIyNDI5
YTk0NjUxNTI3M2Q1YjgzODYzYzc5NzA5ZDkyLi5lZDNiMzkwZmRhY2ZiYjljNDRhOWU4Y2Q4MjUw
ZDc2NWNlMTlkOWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xNzMsNiArMTczLDcgQEAgd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5n
L21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1hdXRvY29ycmVjdGVkLXdvcmQuaHRtbAogd2Vi
a2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9tb3ZlLWN1cnNvci10by1iZWdp
bm5pbmctb2YtYXV0b2NvcnJlY3RlZC13b3JkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvcmVtb3ZpbmctdW5kZXJsaW5lLWFmdGVyLWFj
Y2VwdGluZy1hdXRvY29ycmVjdGlvbi11c2luZy1wdW5jdHVhdGlvbi5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC1jYW5kaWRh
dGUtYWxsb3dzLWF1dG9jb3JyZWN0LW9uLW5leHQtd29yZC5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL2FjY2VwdC11bnNlZW4tY2FuZGlk
YXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sIFsgRmFpbHVyZSBdCiAKICMgW1dLMl0gW01hY10g
U3VwcG9ydCBkcmFnIGluIG1vdXNlIGV2ZW50cyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgogIyA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTUyPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297979</attachid>
            <date>2017-01-03 18:12:59 -0800</date>
            <delta_ts>2017-01-03 19:14:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166450-20170103181133.patch</filename>
            <type>text/plain</type>
            <size>55005</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjYjJiOGIyNzQxMGRh
ZmRjYjQwY2MzNWRlZTc0Y2VlODg4OWZmNC4uMWE4MzQ0MWFmNDNhNDdhMjNhMGIzODI2OTUzZmZm
Yjc1YmIyMTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAxLTAyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE5TU3BlbGxDaGVj
a2VyJ3MgcmVjb3JkUmVzcG9uc2UgaXNuJ3QgY2FsbGVkIGZvciB1bnNlZW4gYXV0b21hdGljIGNv
cnJlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0NTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NDQ3ODI0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvbWFjL3NwZWxs
aW5nL2FjY2VwdC11bnNlZW4tY2FuZGlkYXRlLXJlY29yZHMtYWNjZXB0YW5jZS5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oOgorICAgICAgICBBZGQgcmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSwgd2hpY2ggdGFrZXMgYSBBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSwgaW5zdGVhZCBvZiBoYXZpbmcKKyAgICAgICAgYSBmdW5jdGlvbiBzcGVjaWZpY2Fs
bHkgZm9yIHJldmVydGVkIGF1dG9jb3JyZWN0aW9ucy4gQWxzbywgZ2V0IHJpZCBvZiB0aGUgdW5u
ZWNlc3NhcnkgaW5kaXJlY3Rpb24KKyAgICAgICAgb2YgdGhlIHByaXZhdGUgb3ZlcmxvYWQgb2Yg
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkLCBzaW5jZSB0aGVyZSdzIG9ubHkg
b25lIGNhbGxlci4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICBDYWxsIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2Ugd2l0aCBBY2NlcHRlZCB3aGVuIHBlcmZvcm1pbmcgYW4gYXV0
by1hdXRvY29ycmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNr
VG9SZXBsYWNlZFN0cmluZyk6CisgICAgICAgIEFkb3B0IHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UuCisKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAg
ICBBZGQgYW4gIkF1dG9jb3JyZWN0aW9uQWNjZXB0ZWQiIHJlc3BvbnNlIHR5cGUuCisKIDIwMTct
MDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgZm9sbG93LXVwIGZpeCBmb3IgcjIxMDIyNwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IDhmMmVjNzMzNzAyMDNmYTM3ZmRjOGZiMTQ0ZWFhMGI2ODQ0ODlmZTkuLjYzZjNkYzBkNzYxOWU2
NDMyY2RjMWQyM2MzYmViNjUxZTkxMTdlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxNy0wMS0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJlY29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBm
b3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
OTQ0NzgyND4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKENvcnJlY3Rpb25QYW5lbDo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgIChDb3JyZWN0aW9uUGFuZWw6OmhhbmRs
ZUFjY2VwdGVkUmVwbGFjZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5tbToKKyAgICAgICAgKHRvQ29ycmVjdGlvblJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZSk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9uc2U6dG9Db3Jy
ZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoKKyAgICAgICAg
dGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdnaW5nJ3Mgc2Fr
ZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgaXQsIGp1c3QgdGhlIHRhZy4KKyAgICAgICAgQ29udmVydCB0aGUgbmV3IEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHZhbHVlIHRvIGl0cyBjb3JyZXNwb25kaW5nCisgICAgICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHZhbHVlLgorCiAyMDE3LTAxLTAxICBKZWZmIE1pbGxlciAgPGplZmZt
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJp
bmdzIHRvIGluY2x1ZGUgMjAxNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI4OTVkYzI3OGEzYWUwMDM3MTFlZTAz
M2FiOTdhMmRjMjMwMTFiOGMuLmFhZGFiMWQxMmM3NDJmN2EyZTdjN2QxYjI3MjM5NGMzYjU5NWUw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wMS0wMiAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hlY2tlcidzIHJl
Y29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBjb3JyZWN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDUw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0NzgyND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAg
IChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OkNvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNl
bWVudCk6CisgICAgICAgIEZ1bm5lbCBhbGwgY2FsbHMgdG8gcmVjb3JkUmVzcG9uc2U6dG9Db3Jy
ZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6aW5TcGVsbERvY3VtZW50V2l0aFRhZzoKKyAgICAgICAg
dGhyb3VnaCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBmb3IgZGVidWdnaW5nJ3Mgc2Fr
ZS4KKyAgICAgICAgRHJvcCB0aGUgTlNWaWV3IHBhcmFtZXRlciBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgaXQsIGp1c3QgdGhlIHRhZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OnRvQ29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Up
OgorICAgICAgICBDb252ZXJ0IHRoZSBuZXcgQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgdmFs
dWUgdG8gaXRzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgdmFs
dWUuCisKIDIwMTctMDEtMDEgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSB1c2VyLXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDE3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmNwcAppbmRleCA5NTU5N2RhYWZkYjE0ZWIyMmZjYzZkOWI3ODY2YzU3NjJlNzAzYjlkLi4x
NTMxMmE1NDEwMTFhNjMxODZjNzgyNmU2ODY3MTJhNDNiYjA2NzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMx
NCw3ICszMTQsNyBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5QXV0b2Nv
cnJlY3Rpb25CZWZvcmVUeXBpbmdJZkFwcHJvcHJpYXRlKCkKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rl
ZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogewogICAgIGlmIChBbHRlcm5hdGl2ZVRleHRD
bGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQotICAgICAgICBjbGllbnQt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29y
cmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCBjb3JyZWN0ZWQsIGNv
cnJlY3Rpb24pOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7CiAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKQEAgLTUxNiwxNSArNTE2LDEwIEBAIFRl
eHRDaGVja2VyQ2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0ZXh0Q2hlY2tlcigp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
UGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkKIHsKLSAgICBpZiAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKLSAgICAgICAg
Y2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0
ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Ci19Ci0KLXZvaWQgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2Vk
KGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIFBhc3NSZWZQdHI8UmFuZ2U+IHJlcGxhY2Vt
ZW50UmFuZ2UpCi17Ci0gICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKHJl
cGxhY2VkU3RyaW5nLCBwbGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkpOworICAgIGlm
IChhdXRvIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCBw
bGFpblRleHQocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSkpOwogfQogCiB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6Om1hcmtSZXZlcnNlZChQYXNzUmVmUHRyPFJhbmdlPiBjaGFuZ2VkUmFu
Z2UpCkBAIC01NTcsOSArNTUyLDkgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZWNvcmRTcGVsbGNoZWNrZXJSZXNwb25zZUZvck1vZGlmaWVkQ29ycmVjdGlvbigKICAgICAgICAg
Ly8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRvIGRl
dGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQgb3IK
ICAgICAgICAgLy8gZWRpdGVkIGl0IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgbm90aWZ5IHNwZWxs
Y2hlY2tlciBhY2NvcmRpbmdseS4KICAgICAgICAgaWYgKG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVz
Y3JpcHRpb24oY29ycmVjdGVkT25jZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJzWzBd
LT5kZXNjcmlwdGlvbigpID09IGNvcnJlY3RlZCkKLSAgICAgICAgICAgIGNsaWVudC0+cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQs
IGNvcnJlY3Rpb24pOworICAgICAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJl
Y3Rpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25FZGl0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlv
bik7CisgICAgICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0
b2NvcnJlY3Rpb25SZXNwb25zZTo6RWRpdGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAg
IH0KIAogICAgIG1hcmtlcnMucmVtb3ZlTWFya2VycyhyYW5nZU9mQ29ycmVjdGlvbiwgRG9jdW1l
bnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3Zl
UGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAppbmRleCA1ODNkZTJmNWZlMDQ1YzlmMDgw
YTNmMWVmMDQ3YjkxYjUwNjA5OGZhLi5jNTgzNTAzZWFhMjI2NjY3NTNiMjAyM2IzZTU2YmJkNTE2
MTQxYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIFVOTEVTU19FTkFCTEVEKHsgcmV0dXJu
IGZhbHNlOyB9KQogICAgIGJvb2wgc2hvdWxkUmVtb3ZlTWFya2Vyc1Vwb25FZGl0aW5nKCk7CiAK
LSAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKSBV
TkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7IFVOVVNFRF9QQVJB
TShyZXBsYWNlbWVudFJhbmdlKTsgfSkKKyAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSkgVU5MRVNTX0VOQUJMRUQoeyBV
TlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOyBVTlVTRURfUEFSQU0ocmVwbGFjZW1lbnRSYW5n
ZSk7IH0pCiAgICAgdm9pZCBtYXJrUmV2ZXJzZWQoUGFzc1JlZlB0cjxSYW5nZT4gY2hhbmdlZFJh
bmdlKSBVTkxFU1NfRU5BQkxFRCh7IFVOVVNFRF9QQVJBTShjaGFuZ2VkUmFuZ2UpOyB9KQogICAg
IHZvaWQgbWFya0NvcnJlY3Rpb24oUGFzc1JlZlB0cjxSYW5nZT4gcmVwbGFjZWRSYW5nZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykgVU5MRVNTX0VOQUJMRUQoeyBVTlVTRURfUEFSQU0o
cmVwbGFjZWRSYW5nZSk7IFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmluZyk7IH0pCiAKQEAgLTEx
OSw3ICsxMTksNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBkaXNtaXNzU29vbihSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKICAgICB2b2lkIGFwcGx5QWx0ZXJuYXRpdmVUZXh0
VG9SYW5nZShjb25zdCBSYW5nZSosIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmUsIEFsdGVybmF0
aXZlVGV4dFR5cGUsIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4mKTsK
ICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKTsKICAgICB2b2lkIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKFJhbmdlKiByYW5nZU9mQ29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAgICAgU3RyaW5nIG1h
cmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChBbHRlcm5hdGl2ZVRleHRU
eXBlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCBlNDg2NDY5NjI3MGJlZjg5ZGZkNWVjMzUxNTYzNjUxMTVjOWMyMzE2Li5iODMy
OTc1YzgxZjliMmU1ZmNhODgyM2MyNjJkMWUxODlmNDIzY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC0yNTc3LDkgKzI1NzcsMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBs
YWNlRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QsIGNvbnN0IFZlY3QK
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0TG9jYXRpb24gPCBzZWxlY3Rpb25PZmZzZXQpCiAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9mZnNldCArPSByZXBsYWNlbWVudC5sZW5ndGgo
KSAtIHJlc3VsdExlbmd0aDsKIAotICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0
aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3Jy
ZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFR5cGUgPT0gVGV4dENoZWNraW5nVHlw
ZUNvcnJlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci0+bWFya0NvcnJlY3Rpb24ocGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCBy
ZXBsYWNlbWVudC5sZW5ndGgoKSksIHJlcGxhY2VkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0VHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBwYXJhZ3JhcGguc3Vi
cmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkFjY2VwdGVkLCByZXBsYWNlZFN0cmlu
ZywgcmVwbGFjZW1lbnRSYW5nZSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgbWFy
a2VyIHNvIHRoYXQgY29ycmVjdGlvbnMgY2FuIGVhc2lseSBiZSB1bmRvbmUgYW5kIHdvbid0IGJl
IHJlLWNvcnJlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLT5tYXJrQ29ycmVjdGlvbihXVEZNb3ZlKHJlcGxhY2VtZW50UmFuZ2UpLCByZXBsYWNl
ZFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpAQCAtMjYxMyw3ICsyNjE3LDcgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxh
Y2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAgICAgaWYgKCFzaG91bGRJ
bnNlcnRUZXh0KHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbjo6UGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKHJlcGxh
Y2VkU3RyaW5nLCBzZWxlY3Rpb24pOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpSZXZl
cnRlZCwgcmVwbGFjZWRTdHJpbmcsIHNlbGVjdGlvbik7CiAgICAgVGV4dENoZWNraW5nUGFyYWdy
YXBoIHBhcmFncmFwaChzZWxlY3Rpb24pOwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChy
ZXBsYWNlZFN0cmluZywgZmFsc2UsIGZhbHNlLCBFZGl0QWN0aW9uSW5zZXJ0KTsKICAgICBSZWZQ
dHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hl
Y2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCAyYmRmYTQ5YmY0MjQ4OTcwNDIzYmNk
NDg4M2E2NTgyYjkyM2YwZjdjLi4zNTFiZTc2ZDdiYmI2Mjk4MjEzZGI0ODhlNTZkZTE1NDRiMGU5
MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAg
LTUwLDkgKzUwLDEwIEBAIGVudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7CiAgICAgQWx0ZXJuYXRp
dmVUZXh0VHlwZURpY3RhdGlvbkFsdGVybmF0aXZlcwogfTsKIAotZW51bSBBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSB7Ci0gICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgQXV0b2NvcnJl
Y3Rpb25SZXZlcnRlZAorZW51bSBjbGFzcyBBdXRvY29ycmVjdGlvblJlc3BvbnNlIHsKKyAgICBF
ZGl0ZWQsCisgICAgUmV2ZXJ0ZWQsCisgICAgQWNjZXB0ZWQKIH07CiAKIGNsYXNzIEFsdGVybmF0
aXZlVGV4dENsaWVudCB7CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICNlbmRpZgogI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQogICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgKaW5kZXggODkzZTU3NzAyZGQ0Nzkw
MzkzZDljOTVlNzQxNmUzYWMzOTAzZDI0NS4uZGY4YjQxMzZkODhjZWExZGY1YWU3MmI3YzRiN2Yx
NTRlMWJiNTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
Q29ycmVjdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
Q29ycmVjdGlvblBhbmVsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH5Db3JyZWN0
aW9uUGFuZWwoKTsKICAgICB2b2lkIHNob3coV2ViVmlldyosIFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MpOwogICAgIFN0cmluZyBkaXNtaXNzKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoV2ViVmlldyosIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAgICBzdGF0
aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KaW5kZXgg
ZDczZDBkZjkxZjQ0YmY0YTNiMDBiNTU1OTVlYjYwMGE3YWM5NWU1OS4uODk1YzRiMmQ0OWRjMWM4
ZmIzMDhiYjM4MDBiMGI5MTk0NjU1YmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQpAQCAtOTksOSArOTksOSBAQCBTdHJp
bmcgQ29ycmVjdGlvblBhbmVsOjpkaXNtaXNzSW50ZXJuYWwoUmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCByZWFzbwogICAgIHJldHVybiBtX3Jlc3VsdEZvckRpc21pc3NhbC5nZXQo
KTsKIH0KIAotdm9pZCBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoV2ViVmlldyogdmlldywgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2
b2lkIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShOU0ludGVn
ZXIgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nKQogewotICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZWNv
cmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFjZW1lbnRTdHJpbmcgZm9yV29y
ZDpyZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpbdmll
dyBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ11dOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVk
U3BlbGxDaGVja2VyXSByZWNvcmRSZXNwb25zZTpyZXNwb25zZSB0b0NvcnJlY3Rpb246cmVwbGFj
ZW1lbnRTdHJpbmcgZm9yV29yZDpyZXBsYWNlZFN0cmluZyBsYW5ndWFnZTpuaWwgaW5TcGVsbERv
Y3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZ107CiB9CiAKIHZvaWQgQ29ycmVj
dGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJl
cGxhY2VtZW50LCBOU1N0cmluZyogcmVwbGFjZWQsIE5TU3RyaW5nKiBwcm9wb3NlZFJlcGxhY2Vt
ZW50LCAgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSkK
QEAgLTEwOSwyNyArMTA5LDI2IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRl
ZFJlcGxhY2VtZW50KE5TU3RyaW5nKiBhY2NlcHRlZFJlcGxhY2VtZW50LCBOCiAgICAgaWYgKCFt
X3ZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBOU1NwZWxsQ2hlY2tlciogc3BlbGxD
aGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07CiAgICAgTlNJbnRl
Z2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJEb2N1bWVudFRhZ107
CiAKICAgICBzd2l0Y2ggKGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKSB7CiAgICAgY2FzZSBOU0Nv
cnJlY3Rpb25JbmRpY2F0b3JUeXBlRGVmYXVsdDoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFj
ZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVj
dGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9y
V29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpkb2N1bWVu
dFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGRvY3VtZW50
VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkLCByZXBsYWNlZCwgYWNjZXB0ZWRSZXBs
YWNlbWVudCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFtX3dhc0Rpc21pc3Nl
ZEV4dGVybmFsbHkgfHwgbV9yZWFzb25Gb3JEaXNtaXNzaW5nID09IFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRDYW5jZWxsZWQpCi0gICAgICAgICAgICAgICAgW3NwZWxsQ2hlY2tl
ciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25SZXNwb25zZVJlamVjdGVkIHRvQ29ycmVjdGlv
bjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWddOworICAgICAgICAgICAgICAgIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlUmVq
ZWN0ZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxhY2VtZW50KTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlv
blJlc3BvbnNlSWdub3JlZCB0b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3Jk
OnJlcGxhY2VkIGxhbmd1YWdlOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFn
XTsKKyAgICAgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGRvY3VtZW50
VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQsIHJlcGxhY2VkLCBwcm9wb3NlZFJlcGxh
Y2VtZW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlv
bkluZGljYXRvclR5cGVSZXZlcnNpb246CiAgICAgICAgIGlmIChhY2NlcHRlZFJlcGxhY2VtZW50
KQotICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0NvcnJlY3Rpb25S
ZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFjY2VwdGVkUmVw
bGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6ZG9jdW1lbnRUYWdd
OworICAgICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShkb2N1bWVudFRhZywg
TlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1l
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGVH
dWVzc2VzOgogICAgICAgICBpZiAoYWNjZXB0ZWRSZXBsYWNlbWVudCkKLSAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCB0
b0NvcnJlY3Rpb246YWNjZXB0ZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOmRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoZG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3Bv
bnNlQWNjZXB0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA2MGJmMWQyNTBlNjY2
ZmEzYzE5ZmNmNGU5YjlmY2FlNjAzN2IyNzljLi5jOGQzM2ViMTg5YTZmMzFkNWNjYmRlMThlZDU3
YjZmZTU0Y2ZmN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgb3Zl
cnJpZGU7CisgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVV
SShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
CmluZGV4IDcxYmUxMWY4MTc2YWFmYmYzMDkwNWI4YjBjNDg4NjVhNDAzMWQ0MTcuLjBiYWQ1Mjdk
MmU0YzhkODZmZjczYWU3NzQ2YzhhNGYxMDE3MGJlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
bW0KQEAgLTYyLDEwICs2MiwyNCBAQCBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojpk
aXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcgogICAgIHJldHVy
biBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbik7CiB9CiAKLXZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3N0YXRpYyBpbmxpbmUgTlNDb3Jy
ZWN0aW9uUmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZSByZXNwb25zZSkKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3Bv
bnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VS
ZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5l
bDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBs
YWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIHN3aXRjaCAocmVzcG9uc2UpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OlJldmVydGVkOgorICAg
ICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZDsKKyAgICBjYXNlIFdlYkNv
cmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2U6OkVkaXRlZDoKKyAgICAgICAgcmV0dXJuIE5TQ29y
cmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25S
ZXNwb25zZTo6QWNjZXB0ZWQ6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25SZXNwb25zZUFj
Y2VwdGVkOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBO
U0NvcnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3Bv
bnNlIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nKQoreworICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZShbbV93ZWJWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXSwgdG9D
b3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2UpLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IDU3MDA0N2M0ZTJkNjhkODQ3NTcwYTA1NzYzNzEyZWM4ZDFiMmE5YjYuLjFjMjEwYjFkN2Rj
MmYzYjhjNjllZWRjODFiOTgyNzBhZWVmMDUxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21p
c3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBiMDQ0NzBjZmU2YjJhNzRjNDg3OTcxMzRlMjE3ZTA5MDliYTM5MWVhLi4xMGYzY2Y5YjBh
YTA0YWQyZDZkN2Q1N2RkYWQzZjQ2YzMyNWFmNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjEwNiw5ICs2MTA2LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJl
c3VsdCkKICAgICByZXN1bHQgPSBtX3BhZ2VDbGllbnQuZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24oKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpcmVhc29uKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNw
b25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShpbnQzMl90IHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC5yZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSlyZXNw
b25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgbV9wYWdl
Q2xpZW50LnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uoc3RhdGljX2Nhc3Q8QXV0b2NvcnJl
Y3Rpb25SZXNwb25zZT4ocmVzcG9uc2UpLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxOTM2ODJlOGJkNGFlOWE1NGU4OGQ4NGJj
Y2YyNjlkZjk5OGNhM2U4Li42MjEwMmExOWRkZGFiYjY3YWQ1NzhiNDk3N2FkZDljZTU5NzI3Mjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTM1OCw3ICszNTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFNob3dDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCBwYW5lbFR5cGUsIFdlYkNvcmU6OkZsb2F0UmVj
dCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlZFN0cmluZywgU3Ry
aW5nIHJlcGxhY2VtZW50U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncykKICAgICBEaXNtaXNzQ29ycmVjdGlvblBhbmVsKGludDMyX3QgcmVhc29uKQog
ICAgIERpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKGludDMyX3QgcmVhc29uKSAtPiAoU3RyaW5n
IHJlc3VsdCkKLSAgICBSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9u
c2VUeXBlLCBTdHJpbmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgUmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJlc3BvbnNlLCBTdHJp
bmcgcmVwbGFjZWRTdHJpbmcsIFN0cmluZyByZXBsYWNlbWVudFN0cmluZyk7CiAKICAgICBTZXRF
ZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5o
CmluZGV4IDY2NmVjZDNmNGIzYmQxOGZhOTljNjNiMDcxZjFmMTQ3Njc3ZmM2ODEuLmY5NWY1YjM5
YTRmMjU0YjMyMTdlOTMwMTg1NjYxYmFkMTE3MjhiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgfkNvcnJlY3Rpb25QYW5lbCgpOwogICAgIHZvaWQgc2hvdyhOU1ZpZXcgKiwgV2ViVmll
d0ltcGwmLCBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICBTdHJpbmcgZGlzbWlz
cyhXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKLSAgICBzdGF0
aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TVmlldyAqLCBOU0ludGVnZXIg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiBwcml2
YXRlOgogICAgIGJvb2wgaXNTaG93aW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCmluZGV4IGIz
ODFhMjcwNzVkMDc5MGJjM2U4MjFmYjQ4OTRlN2I1NTdmOWM4ZjcuLjk2NDRkOWZiYzkzN2NmYTNl
M2I1YzA0NTZmNzMzOTI3MjRjZmMyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIENvcnJl
Y3Rpb25QYW5lbDo6ZGlzbWlzc0ludGVybmFsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc28KICAgICByZXR1cm4gbV9yZXN1bHRGb3JEaXNtaXNzYWwuZ2V0KCk7CiB9CiAK
LXZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKE5TVmll
dyAqdmlldywgTlNJbnRlZ2VyIHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25S
ZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZykKK3ZvaWQgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKE5TSW50ZWdlciBzcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlND
b3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7CiAgICAgW1tOU1NwZWxsQ2hlY2tl
ciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlY29yZFJlc3BvbnNlOnJlc3BvbnNlIHRvQ29ycmVjdGlv
bjpyZXBsYWNlbWVudFN0cmluZyBmb3JXb3JkOnJlcGxhY2VkU3RyaW5nIGxhbmd1YWdlOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKIH0KQEAgLTEx
OSwyNiArMTE5LDI0IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGxh
Y2VtZW50KFdlYlZpZXdJbXBsJiB3ZWJWaWV3SW1wbCwgTlNTdHJpCiAgICAgaWYgKCFtX3ZpZXcp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAgICAKICAgICBzd2l0Y2ggKGNv
cnJlY3Rpb25JbmRpY2F0b3JUeXBlKSB7CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JU
eXBlRGVmYXVsdDoKICAgICAgICAgaWYgKGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAg
ICBbc3BlbGxDaGVja2VyIHJlY29yZFJlc3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0
ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVkUmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5n
dWFnZTpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFn
XTsKKyAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFj
Y2VwdGVkUmVwbGFjZW1lbnQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghbV93
YXNEaXNtaXNzZWRFeHRlcm5hbGx5IHx8IG1fcmVhc29uRm9yRGlzbWlzc2luZyA9PSBSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2FuY2VsbGVkKQotICAgICAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCB0
b0NvcnJlY3Rpb246cHJvcG9zZWRSZXBsYWNlbWVudCBmb3JXb3JkOnJlcGxhY2VkIGxhbmd1YWdl
Om5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOm1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwor
ICAgICAgICAgICAgICAgIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNr
ZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0aW9uUmVzcG9uc2VSZWplY3RlZCwgcmVwbGFjZWQsIHBy
b3Bvc2VkUmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFtz
cGVsbENoZWNrZXIgcmVjb3JkUmVzcG9uc2U6TlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkIHRv
Q29ycmVjdGlvbjpwcm9wb3NlZFJlcGxhY2VtZW50IGZvcldvcmQ6cmVwbGFjZWQgbGFuZ3VhZ2U6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZ107Cisg
ICAgICAgICAgICAgICAgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3NwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnLCBOU0NvcnJlY3Rpb25SZXNwb25zZUlnbm9yZWQsIHJlcGxhY2VkLCBwcm9w
b3NlZFJlcGxhY2VtZW50KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE5T
Q29ycmVjdGlvbkluZGljYXRvclR5cGVSZXZlcnNpb246CiAgICAgICAgIGlmIChhY2NlcHRlZFJl
cGxhY2VtZW50KQotICAgICAgICAgICAgW3NwZWxsQ2hlY2tlciByZWNvcmRSZXNwb25zZTpOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkIHRvQ29ycmVjdGlvbjpyZXBsYWNlZCBmb3JXb3JkOmFj
Y2VwdGVkUmVwbGFjZW1lbnQgbGFuZ3VhZ2U6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6bV9z
cGVsbENoZWNrZXJEb2N1bWVudFRhZ107CisgICAgICAgICAgICByZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKG1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcsIE5TQ29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJ0ZWQsIHJlcGxhY2VkLCBhY2NlcHRlZFJlcGxhY2VtZW50KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBlR3Vlc3NlczoKICAgICAgICAgaWYg
KGFjY2VwdGVkUmVwbGFjZW1lbnQpCi0gICAgICAgICAgICBbc3BlbGxDaGVja2VyIHJlY29yZFJl
c3BvbnNlOk5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQgdG9Db3JyZWN0aW9uOmFjY2VwdGVk
UmVwbGFjZW1lbnQgZm9yV29yZDpyZXBsYWNlZCBsYW5ndWFnZTpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzptX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKKyAgICAgICAgICAgIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9zcGVsbENoZWNrZXJEb2N1bWVudFRhZywgTlNDb3JyZWN0
aW9uUmVzcG9uc2VBY2NlcHRlZCwgcmVwbGFjZWQsIGFjY2VwdGVkUmVwbGFjZW1lbnQpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAppbmRleCA0ZWEwYWFmZmIzNmM1YzNlZDI3ZmI3ZDExYjliZTNlODU4ZjFi
MjhjLi45ZDdjZTA0MzY4MmM3MmE4ZTk2MTc3NTNiODIwMTFiMTRiNzczZjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xNjAsNyArMTYw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJT
dHlsZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCmluZGV4IDQ0Y2JiMTgyNGIzYzU0MDlhNTZhYjhmMWZjYjQ3NjE3NTIzOGRm
ODMuLmZlZWEyNjNkM2Q3YTE3Mjc5NTdlZmE2MWM2ZWJhMjU3MjUwY2VlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNTY4LDEwICs1
NjgsMjQgQEAgU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWwKICNlbmRpZgogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3N0YXRpYyBpbmxpbmUgTlNDb3JyZWN0aW9u
UmVzcG9uc2UgdG9Db3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZSByZXNw
b25zZSkKIHsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlw
ZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRl
ZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5lbDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3ZpZXcsIG1faW1wbC0+c3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKSwgcmVzcG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgc3dpdGNoIChyZXNwb25zZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rp
b25SZXNwb25zZTo6UmV2ZXJ0ZWQ6CisgICAgICAgIHJldHVybiBOU0NvcnJlY3Rpb25SZXNwb25z
ZVJldmVydGVkOworICAgIGNhc2UgV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6RWRp
dGVkOgorICAgICAgICByZXR1cm4gTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CisgICAgY2Fz
ZSBXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlOjpBY2NlcHRlZDoKKyAgICAgICAgcmV0
dXJuIE5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQ7CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TQ29ycmVjdGlvblJlc3BvbnNlQWNjZXB0ZWQ7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0
b2NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBDb3JyZWN0aW9uUGFu
ZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV9pbXBsLT5zcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpLCB0b0NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZSksIHJlcGxhY2VkU3RyaW5n
LCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA4NWQ5ZWU3ZmExYWZiMDIwYzMw
ZmU0YmMyZDcyNDhmYTVjMzM4NWNjLi40NTIwZTlkNjliYzgwMmY2ZWJkYTY1YjI5N2U4YThkNDU4
YzE5NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc21pc3NBbHRl
cm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKICNlbmRpZgog
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFs
dGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0
ZWRUZXh0LCB1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCmluZGV4IDhkODMyM2FjYWU1NzUy
Y2UyYmQ5NWRmZjJlMmNmYTc0ZGQxNTkzMjUuLjBjZmQ0OGI0YjM5NjAyYjY0ZDExYjA2OTM4NWFh
YjNkNmY4YTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmNwcApAQCAtNjksOSArNjksOSBAQCBTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZykKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShzdGF0aWNfY2FzdDxpbnQzMl90PihyZXNwb25zZSksIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYzZiMjBkZWJiM2M5
NDBmM2MwY2MwZWRkMDc1MTkxZDgzNThkMGFhLi5hN2EzYzRiMzAzNTA2ODFlOGViNDhlNzYzMDhi
NzA3YzM0NzQyYjRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMDEtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTlNTcGVsbENoZWNrZXIncyByZWNvcmRSZXNw
b25zZSBpc24ndCBjYWxsZWQgZm9yIHVuc2VlbiBhdXRvbWF0aWMgY29ycmVjdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ1MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjk0NDc4MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKHNldFNwZWxsQ2hl
Y2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFi
bGVkQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGlu
Zyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVNwZWxsQ2hlY2tlci5tbTogQWRkZWQuCisgICAgICAgIChzdHJpbmdGb3JDb3JyZWN0aW9uUmVz
cG9uc2UpOgorICAgICAgICAoZHJ0X05TU3BlbGxDaGVja2VyX3JlY29yZFJlc3BvbnNlVG9Db3Jy
ZWN0aW9uKToKKyAgICAgICAgKHN3aXp6bGVOU1NwZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCk6
CisgICAgICAgIChzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCk6CisgICAgICAgIEFkZCBh
IG5ldyB0ZXN0UnVubmVyIG1ldGhvZCwgc2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQsIHdo
aWNoLCB3aGVuCisgICAgICAgIHNldCB0byB0cnVlLCBsb2dzIHRvIHN0ZG91dCAod2hpY2ggZW5k
cyB1cCBpbiB0aGUgdGVzdCByZXN1bHQpIHdoZW5ldmVyCisgICAgICAgIE5TU3BlbGxDaGVja2Vy
IHJlY29yZFJlc3BvbnNlOnRvQ29ycmVjdGlvbjpmb3JXb3JkOmxhbmd1YWdlOmluU3BlbGxEb2N1
bWVudFdpdGhUYWc6CisgICAgICAgIGlzIGNhbGxlZCwgYW5kIHRoZW4gY2FsbHMgdGhlIG9yaWdp
bmFsIG1ldGhvZC4gSXQgaXMgcmVzZXQgdG8gZmFsc2UgYmV0d2VlbiB0ZXN0cy4KKwogMjAxNy0w
MS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBM
ZXZlcmFnZSBTdWJzdHJpbmcgdG8gY3JlYXRlIG5ldyBBdG9taWNTdHJpbmdJbXBsIGZvciBTdGF0
aWNTdHJpbmdJbXBsIGFuZCBTeW1ib2xJbXBsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA5NzgwYmVjYTJlZjE4MjFjZDdiODAyMWUxODBlMjYwODc2YTRkMjRjLi5lYzM3ZjRkNTNiODY4
ODI1MGYzZjAyNzA1NDA5Nzk0NjUxNTcxZTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTc4LDYgKzc4LDcgQEAKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyTWFjLm1tICovOyB9OwogCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAgKi87IH07CiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVy
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VB
MjE1MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OworCQkyREEyRTNB
NTFFMUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQx
MDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3
QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlB
NTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwogCQk0
NDA1OTA3MTEyNjg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNTkwNzAxMjY4
NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSAqLzsgfTsKIAkJNDQz
NzczMEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MzBGQ0RFODY0
MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLzsgfTsKQEAgLTI5MSw2ICsy
OTIsOCBAQAogCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhy
ZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0
MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxw
ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1
OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTJEQTJFM0EzMUUxQkE1NDEwMEEzQkJEMCAvKiBEdW1wUmVuZGVyVHJl
ZVNwZWxsQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5oOyBwYXRoID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQTJFM0E0MUUxQkE1NDEwMEEz
QkJEMCAvKiBEdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBwYXRo
ID0gbWFjL0R1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTExN0IzQjE1RDlBNTZBMDAxNjNC
QzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tOyBwYXRo
ID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzJBNzBBQUIwMzcwNUUxRjAwQzkxNzgzIC8qIER1bXBSZW5kZXJUcmVlUHJl
Zml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlUHJl
Zml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODYsNiArNzg5LDggQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUE4QjkxQURGMENGM0IzNzIwMDhGOTFGRiAvKiBEdW1wUmVuZGVy
VHJlZVBhc3RlYm9hcmQuaCAqLywKIAkJCQlBOEI5MUFENzBDRjNCMzJGMDA4RjkxRkYgLyogRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLm0gKi8sCisJCQkJMkRBMkUzQTMxRTFCQTU0MTAwQTNCQkQw
IC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmggKi8sCisJCQkJMkRBMkUzQTQxRTFCQTU0
MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovLAogCQkJCUE4Qjkx
QUREMENGM0IzNzIwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5oICovLAogCQkJCUE4
QjkxQUQ5MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSAqLywKIAkJ
CSk7CkBAIC0xMDk2LDYgKzExMDEsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTEzNEU1MzYxODkw
NUVGRjAwOTAxRDA2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkRBMkUzQTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBS
ZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1QTE1RUYxNkUx
NUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEMDhCNzEwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGUzNjk1NTYzMmRkZjE2ZTgxNzUwMWZmMmNl
YWIwOGVmZTBhYjNhMmEuLjZjNDFkNDk3ZDlmMDczNWZjN2EyYTg0N2EyNGJkNDBjOTNmMjg0NjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNzc5LDYgKzE3NzksMTUgQEAg
c3RhdGljIEpTVmFsdWVSZWYgaW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgY29udHJvbGxlci0+aW1hZ2VDb3VudEluR2VuZXJhbFBhc3RlYm9hcmQoKSk7CiB9CiAK
K3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIFRl
c3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTcGVsbENoZWNrZXJM
b2dnaW5nRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogLy8gU3RhdGlj
IFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRUaW1lb3V0Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjIyNSw2ICsyMjM0LDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiYWNj
dW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCIsIGFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwsIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAicnVuVUlTY3JpcHQiLCBydW5VSVNjcmlwdENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgImltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkIiwgaW1hZ2VDb3VudElu
R2VuZXJhbFBhc3RlYm9hcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTcGVsbENo
ZWNrZXJMb2dnaW5nRW5hYmxlZCIsIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKaW5kZXggMWQzYTVjMjY0M2M3YTI1NmRhNWU2NTFlYWRkMmE0MjgyMWMzMmE1
Zi4uYTEwNTk0ZmY2YjIwNDg4MDE1Y2Q1Nzc4YTU0M2IzMmZjYzZkYWZmNiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaApAQCAtMzczLDYgKzM3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihib29sIGluU3RkRXJyKSB7IG1fZHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyID0gaW5TdGRFcnI7IH0KICAgICBib29sIGR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycigpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyOyB9CiAKKyAg
ICB2b2lkIHNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFRlc3RSdW5uZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RVUkwsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQppbmRleCA1MmZjNWZiOTAzMjExYzA5ZmY1NmE4MzBiMzA0MzI1MjQyNDZl
YmQ2Li45MjBjMTVjY2M3ZGJlODg3N2E0YzUzN2Y5MDY3YzA3OGU2OGYzMzg5IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0zNCw2ICszNCw3IEBACiAj
aW1wb3J0ICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKKyNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZVdpbmRvdy5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJFdmVu
dFNlbmRpbmdDb250cm9sbGVyLmgiCkBAIC0xODk0LDYgKzE4OTUsOCBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbgogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCisgICAgc2V0U3Bl
bGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoZmFsc2UpOworCiAgICAgcmVzZXRBY2N1bXVsYXRlZExv
Z3MoKTsKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVj
ZXNzYXJ5KCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWVTcGVsbENoZWNrZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZVNwZWxsQ2hlY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlM2ZkNzFjNDIxMWMwYjI3Yzc1Yzkx
ZjE2NjFmYjdjYzYxNDE4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIuaApAQCAtMCwwICsxLDI2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKwordm9pZCBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVNwZWxsQ2hlY2tl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYmI0ZDk2ZGU5ZTJhMWEyZDc3Y2NiMzUyOGI3MzFkMWJkZjA5ZGY3
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlU3BlbGxDaGVja2VyLm1tCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLmgiCisKKyNp
ZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgorI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5o
PgorCitzdGF0aWMgYm9vbCBzcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZDsKK3N0YXRpYyBJTVAg
YXBwS2l0UmVjb3JkUmVzcG9uc2VJTVA7CisKK3N0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JD
b3JyZWN0aW9uUmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNl
KQoreworICAgIHN3aXRjaCAoY29ycmVjdGlvblJlc3BvbnNlKSB7CisgICAgY2FzZSBOU0NvcnJl
Y3Rpb25SZXNwb25zZU5vbmU6CisgICAgICAgIHJldHVybiAibm9uZSI7CisgICAgY2FzZSBOU0Nv
cnJlY3Rpb25SZXNwb25zZUFjY2VwdGVkOgorICAgICAgICByZXR1cm4gImFjY2VwdGVkIjsKKyAg
ICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmVqZWN0ZWQ6CisgICAgICAgIHJldHVybiAicmVq
ZWN0ZWQiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VJZ25vcmVkOgorICAgICAgICBy
ZXR1cm4gImlnbm9yZWQiOworICAgIGNhc2UgTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ6Cisg
ICAgICAgIHJldHVybiAiZWRpdGVkIjsKKyAgICBjYXNlIE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2
ZXJ0ZWQ6CisgICAgICAgIHJldHVybiAicmV2ZXJ0ZWQiOworICAgIH0KKworICAgIHJldHVybiAi
aW52YWxpZCI7Cit9CisKK3N0YXRpYyB2b2lkIGRydF9OU1NwZWxsQ2hlY2tlcl9yZWNvcmRSZXNw
b25zZVRvQ29ycmVjdGlvbihpZCBzZWxmLCBTRUwgX2NtZCwgTlNDb3JyZWN0aW9uUmVzcG9uc2Ug
cmVzcG9uc2UsIE5TU3RyaW5nICpjb3JyZWN0aW9uLCBOU1N0cmluZyAqd29yZCwgTlNTdHJpbmcg
Kmxhbmd1YWdlLCBOU0ludGVnZXIgc3BlbGxEb2N1bWVudFRhZykKK3sKKyAgICBpZiAoc3BlbGxD
aGVja2VyTG9nZ2luZ0VuYWJsZWQpCisgICAgICAgIHByaW50ZigiTlNTcGVsbENoZWNrZXIgcmVj
b3JkUmVzcG9uc2VUb0NvcnJlY3Rpb246ICVzIC0+ICVzIChyZXNwb25zZTogJXMpXG4iLCBbd29y
ZCBVVEY4U3RyaW5nXSwgW2NvcnJlY3Rpb24gVVRGOFN0cmluZ10sIHN0cmluZ0ZvckNvcnJlY3Rp
b25SZXNwb25zZShyZXNwb25zZSkpOworCisgICAgd3RmQ2FsbElNUDx2b2lkLCBOU0NvcnJlY3Rp
b25SZXNwb25zZSwgTlNTdHJpbmcgKiwgTlNTdHJpbmcgKiwgTlNTdHJpbmcgKiwgTlNJbnRlZ2Vy
PihhcHBLaXRSZWNvcmRSZXNwb25zZUlNUCwgc2VsZiwgX2NtZCwgcmVzcG9uc2UsIGNvcnJlY3Rp
b24sIHdvcmQsIGxhbmd1YWdlLCBzcGVsbERvY3VtZW50VGFnKTsKK30KKworc3RhdGljIHZvaWQg
c3dpenpsZU5TU3BlbGxDaGVja2VyTWV0aG9kc0lmTmVlZGVkKCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBoYXNTd2l6emxlZDsKKyAgICBpZiAoaGFzU3dpenpsZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICBoYXNTd2l6emxlZCA9IHRydWU7CisKKyAgICBNZXRob2QgcmVjb3JkUmVzcG9uc2VNZXRob2Qg
PSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJOU1NwZWxsQ2hlY2tlciIp
LCBAc2VsZWN0b3IocmVjb3JkUmVzcG9uc2U6dG9Db3JyZWN0aW9uOmZvcldvcmQ6bGFuZ3VhZ2U6
aW5TcGVsbERvY3VtZW50V2l0aFRhZzopKTsKKworICAgIGFwcEtpdFJlY29yZFJlc3BvbnNlSU1Q
ID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHJlY29yZFJlc3BvbnNlTWV0aG9kLCAoSU1QKWRy
dF9OU1NwZWxsQ2hlY2tlcl9yZWNvcmRSZXNwb25zZVRvQ29ycmVjdGlvbik7Cit9CisKK3ZvaWQg
c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHN3aXp6
bGVOU1NwZWxsQ2hlY2tlck1ldGhvZHNJZk5lZWRlZCgpOworCisgICAgc3BlbGxDaGVja2VyTG9n
Z2luZ0VuYWJsZWQgPSBlbmFibGVkOworfQorCisjZWxzZSAvLyBQTEFURk9STShNQUMpCisKK3Zv
aWQgc2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoYm9vbCkKK3sKK30KKworI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
aW5kZXggYzU3NTgyYzFjMGQ1MDMwOTc5ODNjMzRmODE2NjRkMzRiMTQzMWJjZS4uOTcyMWVkZWMy
NWE4MzM2YTJlYmQ4ZGVlMjY5Nzk2ZTM2YmM1YTM1NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIlRlc3RSdW5u
ZXIuaCIKIAogI2ltcG9ydCAiRGVmYXVsdFBvbGljeURlbGVnYXRlLmgiCisjaW1wb3J0ICJEdW1w
UmVuZGVyVHJlZVNwZWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiRWRpdGluZ0RlbGVnYXRlLmgiCiAj
aW1wb3J0ICJNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiTW9ja1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmgiCkBAIC0yMTAsNiArMjExLDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKICAgICBbV2Vi
U3RvcmFnZU1hbmFnZXIgc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsOmludGVydmFsXTsK
IH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChlbmFibGVk
KTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMo
KQogewogICAgIFtXZWJTdG9yYWdlTWFuYWdlciBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFz
ZXNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IGE1
YzNhZmExYTVkZjEyMjE0ZjMzM2RkOGUzM2RlM2I0ZTM5MDk4ZWYuLjU0ZTk4ZmZkMGVlNDRmMjgw
ZTdmOWY0ZmE1OTIzNTQ0ZjUwZTFhYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVz
dFJ1bm5lcldpbi5jcHAKQEAgLTEzOTIsMyArMTM5Miw3IEBAIHVuc2lnbmVkIFRlc3RSdW5uZXI6
OmltYWdlQ291bnRJbkdlbmVyYWxQYXN0ZWJvYXJkKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCit7CisgICAgcHJpbnRmKCJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2Vy
TG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzNTdjOWRi
MjI3MDUyZTgwZjJmYTQyMDM3N2MzMzQ5NDAyNGM0MTMuLjIzYTM1NWY0NmY3ZTA4MzNhNjA3MWNl
MWI4Y2IzMTg3N2YyOGQxYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wMS0wMyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBOU1NwZWxsQ2hl
Y2tlcidzIHJlY29yZFJlc3BvbnNlIGlzbid0IGNhbGxlZCBmb3IgdW5zZWVuIGF1dG9tYXRpYyBj
b3JyZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2NDUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ0NzgyND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGVkaXRpbmcvZWRpdGluZy5qczoK
KyAgICAgICAgKHJ1bkVkaXRpbmdUZXN0KToKKyAgICAgICAgKHJ1bkVkaXRpbmdUZXN0V2l0aENh
bGxiYWNrTG9nZ2luZyk6CisgICAgICAgIEFkZCBhIHdheSB0byBydW4gYW4gZWRpdGluZyB0ZXN0
IHdpdGhvdXQgZW5hYmxpbmcgbm9pc3kgZWRpdGluZyBjYWxsYmFjayBsb2dnaW5nLgorCisgICAg
ICAgICogZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVjb3Jk
cy1hY2NlcHRhbmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9tYWMv
c3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2NlcHRhbmNlLmh0bWw6
IEFkZGVkLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IHdlIGNvcnJlY3Rs
eSBpbmZvcm0gTlNTcGVsbENoZWNrZXIgb2YgYW4KKyAgICAgICAgYWNjZXB0ZWQgdW5zZWVuIGNv
cnJlY3Rpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgIERpc2FibGUgdGhlIHRlc3QgYmVjYXVzZSBzcGVsbGluZyB0ZXN0cyBkb24ndCB3
b3JrIGluIFdlYktpdDIgYXQgYWxsLgorCiAyMDE3LTAxLTAyICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEV4cG9zZSBibG9jayBxdW90ZSBsZXZl
bCB0byBpT1MgQVBJCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2VkaXRpbmcuanMKaW5kZXggOGY0ZTNkMjJiMDcwOWVkNzIw
YTJjMmE1YzkzYWYxNjkwYTI1YjQzOS4uZWMzMjIxZDNkNzVmZTgzNzM2MWNkMjU3OTQ3YTY4ZDMz
YjhjMjc4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9lZGl0aW5nLmpzCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZWRpdGluZy5qcwpAQCAtODk0LDcgKzg5NCwxMSBAQCBmdW5j
dGlvbiBmb3J3YXJkRGVsZXRlQ29tbWFuZCgpIHsKIH0pKCk7CiAKIGZ1bmN0aW9uIHJ1bkVkaXRp
bmdUZXN0KCkgewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICBydW5FZGl0aW5nVGVz
dFdpdGhDYWxsYmFja0xvZ2dpbmcodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHJ1bkVkaXRpbmdUZXN0
V2l0aENhbGxiYWNrTG9nZ2luZyhlbmFibGVDYWxsYmFja0xvZ2dpbmcpIHsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIgJiYgZW5hYmxlQ2FsbGJhY2tMb2dnaW5nKQogICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CiAKICAgICB2YXIgZWxlbSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL21h
Yy9zcGVsbGluZy9hY2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vl
bi1jYW5kaWRhdGUtcmVjb3Jkcy1hY2NlcHRhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YWQyN2EwNTk0NGRjNzQzOGY2ZDczNjJlYWY0MTYyZDg0MDhlYWZhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRh
dGUtcmVjb3Jkcy1hY2NlcHRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK05TU3Bl
bGxDaGVja2VyIHJlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uOiBub3RhdGlvbmwgLT4gbm90YXRp
b25hbCAocmVzcG9uc2U6IGFjY2VwdGVkKQorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWNjZXB0
ZWQgY2FuZGlkYXRlcyB0aGF0IHdlcmUgYWNjZXB0ZWQgaW1tZWRpYXRlbHkgYW5kIHVuc2VlbiBi
eSB0aGUgdXNlciBzdGlsbCB0cmlnZ2VyIE5TU3BlbGxDaGVja2VyIHJlcG9ydGluZy4gQSBzaW5n
bGUgInJlY29yZFJlc3BvbnNlVG9Db3JyZWN0aW9uIiBsb2dnaW5nIHNob3VsZCBiZSBvdXRwdXQg
YnkgdGhpcyB0ZXN0LCBjb3JyZWN0aW5nICJub3RhdGlvbmwiIHRvICJub3RhdGlvbmFsIiwgYW5k
IHNob3VsZCBiZSBhY2NlcHRlZC4KKwordGhlIG5vdGF0aW9uYWzCoApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5kaWRhdGUtcmVj
b3Jkcy1hY2NlcHRhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL21hYy9zcGVsbGluZy9h
Y2NlcHQtdW5zZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iODY5NTJjZTNkYjhhMjJjNjBiOWU1MWE5ZjIyYjY5NzViNjhhN2Q2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9tYWMvc3BlbGxpbmcvYWNjZXB0LXVuc2Vlbi1jYW5k
aWRhdGUtcmVjb3Jkcy1hY2NlcHRhbmNlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPGh0bWw+IAor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi8uLi9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0
IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBl
ZGl0aW5nVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQo
J3QnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnaCcpOworICAgIHR5cGVDaGFyYWN0ZXJD
b21tYW5kKCdlJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKyAgICB0eXBlQ2hh
cmFjdGVyQ29tbWFuZCgnbicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCdvJyk7CisgICAg
dHlwZUNoYXJhY3RlckNvbW1hbmQoJ3QnKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnYScp
OworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd0Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoJ2knKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnbycpOworICAgIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKCduJyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ2wnKTsKKyAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZCgnICcpOworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWNjZXB0ZWQgY2FuZGlkYXRlcyB0aGF0IHdlcmUg
YWNjZXB0ZWQgaW1tZWRpYXRlbHkgYW5kIHVuc2VlbiBieSB0aGUgdXNlciBzdGlsbCB0cmlnZ2Vy
IE5TU3BlbGxDaGVja2VyIHJlcG9ydGluZy4gQSBzaW5nbGUgInJlY29yZFJlc3BvbnNlVG9Db3Jy
ZWN0aW9uIiBsb2dnaW5nIHNob3VsZCBiZSBvdXRwdXQgYnkgdGhpcyB0ZXN0LCBjb3JyZWN0aW5n
ICJub3RhdGlvbmwiIHRvICJub3RhdGlvbmFsIiwgYW5kIHNob3VsZCBiZSBhY2NlcHRlZC48L3A+
Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0icm9vdCIgY2xhc3M9ImVkaXRpbmciPgorPHNwYW4g
aWQ9InRlc3QiPjwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0PgorcnVuRWRpdGluZ1Rlc3RXaXRo
Q2FsbGJhY2tMb2dnaW5nKGZhbHNlKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWIx
MDgxOTAyMjQyOWE5NDY1MTUyNzNkNWI4Mzg2M2M3OTcwOWQ5Mi4uZWQzYjM5MGZkYWNmYmI5YzQ0
YTllOGNkODI1MGQ3NjVjZTE5ZDlmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTczLDYgKzE3Myw3IEBAIHdlYmtpdC5vcmcvYi8xMDU2
MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1jdXJzb3ItdG8tYXV0b2NvcnJlY3RlZC13b3Jk
Lmh0bWwKIHdlYmtpdC5vcmcvYi8xMDU2MTYgZWRpdGluZy9tYWMvc3BlbGxpbmcvbW92ZS1jdXJz
b3ItdG8tYmVnaW5uaW5nLW9mLWF1dG9jb3JyZWN0ZWQtd29yZC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTA1NjE2IGVkaXRpbmcvbWFjL3NwZWxsaW5nL3JlbW92aW5nLXVuZGVybGlu
ZS1hZnRlci1hY2NlcHRpbmctYXV0b2NvcnJlY3Rpb24tdXNpbmctcHVuY3R1YXRpb24uaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2Nl
cHQtY2FuZGlkYXRlLWFsbG93cy1hdXRvY29ycmVjdC1vbi1uZXh0LXdvcmQuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEwNTYxNiBlZGl0aW5nL21hYy9zcGVsbGluZy9hY2NlcHQtdW5z
ZWVuLWNhbmRpZGF0ZS1yZWNvcmRzLWFjY2VwdGFuY2UuaHRtbCBbIEZhaWx1cmUgXQogCiAjIFtX
SzJdIFtNYWNdIFN1cHBvcnQgZHJhZyBpbiBtb3VzZSBldmVudHMgZm9yIFdlYktpdDIgRXZlbnRT
ZW5kZXIKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODU1Mj4K
</data>

          </attachment>
      

    </bug>

</bugzilla>