<?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>209754</bug_id>
          
          <creation_ts>2020-03-30 11:04:26 -0700</creation_ts>
          <short_desc>Overrides of ActiveDOMObject::hasPendingActivity() should not need to query the base class&apos;s hasPendingActivity()</short_desc>
          <delta_ts>2020-04-02 09:07:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=209886</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635597</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 11:04:26 -0700</bug_when>
    <thetext>hasPendingActivity() overrides should make sure to query ActiveDOMObject::hasPendingActivity(). It is important because code may be using makePendingActivity().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635600</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 11:07:25 -0700</bug_when>
    <thetext>Maybe we can add an assert? Convert all call sites to call something else and make sure ActiveDOMObject::hasPendingActivity() is called in that function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635601</commentid>
    <comment_count>2</comment_count>
      <attachid>394935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 11:07:30 -0700</bug_when>
    <thetext>Created attachment 394935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635683</commentid>
    <comment_count>3</comment_count>
      <attachid>394935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 13:30:33 -0700</bug_when>
    <thetext>Comment on attachment 394935
Patch

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

How did you decide when to use || and when to use a separate if instead? What about when to do base class first and when to do the subclass first?

Could also consider a different design where the code calling hasPendingActivity deals with the rules currently followed by ActiveDOMObject::hasPendingActivity instead of requiring calling through to the base class to make this mistake impossible.

&gt; Source/WebCore/dom/MessagePort.cpp:320
&gt; +    if (ActiveDOMObject::hasPendingActivity())
&gt; +        return true;

A little strange to do this after checking m_closed. Probably fine but I don’t really understand this fully.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5558
&gt;  bool WebGLRenderingContextBase::hasPendingActivity() const
&gt;  {
&gt; -    return false;
&gt; +    return ActiveDOMObject::hasPendingActivity();
&gt;  }

Why does this override exist at all? I think we should remove it instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635685</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 13:37:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 394935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394935&amp;action=review
&gt; 
&gt; How did you decide when to use || and when to use a separate if instead?

Sometimes the return statement already looked so complicated that I felt an early if check &amp; return looked clearer. This was just my own personal judgement.


&gt; What about when to do base class first and when to do the subclass first?

Thinking about this more, I think we should always return true if the base class method returns true. See explanation below.

&gt; 
&gt; Could also consider a different design where the code calling
&gt; hasPendingActivity deals with the rules currently followed by
&gt; ActiveDOMObject::hasPendingActivity instead of requiring calling through to
&gt; the base class to make this mistake impossible.

Hmm. This would indeed be a better design. I will give this a shot and if I come up with something good, will upload it for review instead of this.

&gt; 
&gt; &gt; Source/WebCore/dom/MessagePort.cpp:320
&gt; &gt; +    if (ActiveDOMObject::hasPendingActivity())
&gt; &gt; +        return true;
&gt; 
&gt; A little strange to do this after checking m_closed. Probably fine but I
&gt; don’t really understand this fully.

Hmm. I is probably safer to check this first. You could imagine closing a port, and the action of closing the port scheduling an event to be dispatched asynchronously (using makePendingActivity()).
If this happened, you&apos;d want the wrapper to stay alive long enough to dispatch the event. Will fix.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5558
&gt; &gt;  bool WebGLRenderingContextBase::hasPendingActivity() const
&gt; &gt;  {
&gt; &gt; -    return false;
&gt; &gt; +    return ActiveDOMObject::hasPendingActivity();
&gt; &gt;  }
&gt; 
&gt; Why does this override exist at all? I think we should remove it instead.

Fair point. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635757</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 14:52:12 -0700</bug_when>
    <thetext>Can we also add an assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635758</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 14:54:12 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #5)
&gt; Can we also add an assertion?

With Darin&apos;s proposal, I don&apos;t think there will be any need for an assertion. I am working on that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635766</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 15:05:41 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Ryosuke Niwa from comment #5)
&gt; &gt; Can we also add an assertion?
&gt; 
&gt; With Darin&apos;s proposal, I don&apos;t think there will be any need for an
&gt; assertion. I am working on that patch.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635773</commentid>
    <comment_count>8</comment_count>
      <attachid>394973</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 15:15:06 -0700</bug_when>
    <thetext>Created attachment 394973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635804</commentid>
    <comment_count>9</comment_count>
      <attachid>394973</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 16:08:05 -0700</bug_when>
    <thetext>Comment on attachment 394973
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        To address the issue, ActiveDOMObject::hasPendingActivity() is no longer virtual and
&gt; +        checks both m_pendingActivityCount and a virtual virtualHasPendingActivity() function.

It&apos;s confusing that m_pendingActivityCount can be 0 and ActiveDOMObject::hasPendingActivity() can still return true.
How about calling the former m_pendingActivity*Token*Count and this subclass-specific pending activity concept hasInternalPendingActivity.
Then we can rename ActiveDOMObject::makePendingActivity to ActiveDOMObject::makePendingActivityToken as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635805</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:11:36 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; Comment on attachment 394973 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394973&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        To address the issue, ActiveDOMObject::hasPendingActivity() is no longer virtual and
&gt; &gt; +        checks both m_pendingActivityCount and a virtual virtualHasPendingActivity() function.
&gt; 
&gt; It&apos;s confusing that m_pendingActivityCount can be 0 and
&gt; ActiveDOMObject::hasPendingActivity() can still return true.

I buy that but this has always been the case.

&gt; How about calling the former m_pendingActivity*Token*Count and this
&gt; subclass-specific pending activity concept hasInternalPendingActivity.
&gt; Then we can rename ActiveDOMObject::makePendingActivity to
&gt; ActiveDOMObject::makePendingActivityToken as well.

Not a big fan of the naming suggested but I agree we can likely make things a bit clearer through renaming. I need to give it more thought to see if I can come up with better naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635808</commentid>
    <comment_count>11</comment_count>
      <attachid>394980</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:14:01 -0700</bug_when>
    <thetext>Created attachment 394980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635809</commentid>
    <comment_count>12</comment_count>
      <attachid>394973</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 16:14:19 -0700</bug_when>
    <thetext>Comment on attachment 394973
Patch

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

A little clunky to have virtual in the name, but I like it!

&gt; Source/WebCore/dom/ActiveDOMObject.h:76
&gt; +    // FIXME: Drop this method.

Nitpick: &quot;function&quot; instead of &quot;method&quot;?

&gt; Source/WebCore/dom/ActiveDOMObject.h:85
&gt; +    // FIXME: Drop this method.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635811</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:16:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 394973 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394973&amp;action=review
&gt; 
&gt; A little clunky to have virtual in the name, but I like it!
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:76
&gt; &gt; +    // FIXME: Drop this method.
&gt; 
&gt; Nitpick: &quot;function&quot; instead of &quot;method&quot;?
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:85
&gt; &gt; +    // FIXME: Drop this method.
&gt; 
&gt; Ditto.

Why isn&apos;t is a method? It can operate on data members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635812</commentid>
    <comment_count>14</comment_count>
      <attachid>394980</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:16:54 -0700</bug_when>
    <thetext>Comment on attachment 394980
Patch

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

&gt; Source/WebCore/dom/ActiveDOMObject.h:153
&gt; +    unsigned m_pendingActivityInstancesCount { 0 };

I renamed this to address the confusion that Ryosuke was talking about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635817</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-03-30 16:30:18 -0700</bug_when>
    <thetext>I wonder if ActiveDOMObject::hasPendingActivity should be non-virtual, checking m_pendingActivityCount and then calling out to a virtual hasPendingActivityVirtual() or something like that. That would eliminate this class of bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635819</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-03-30 16:30:43 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #15)
&gt; I wonder if ActiveDOMObject::hasPendingActivity should be non-virtual,
&gt; checking m_pendingActivityCount and then calling out to a virtual
&gt; hasPendingActivityVirtual() or something like that. That would eliminate
&gt; this class of bugs.

Oh, LOL, that&apos;s what you did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635820</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 16:31:00 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Why isn&apos;t is a method? It can operate on data members.

C++ has member functions.

Objective-C has methods.

Obviously you can use other terminology besides what is used to document the language. If you want to use &quot;method&quot; as a term of art for non-const member functions in C++ that is OK, I guess.

But I personally like using the actual terms from the language&apos;s own specification to avoid ambiguity. I thought this was consensus but maybe not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635821</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:31:19 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #15)
&gt; I wonder if ActiveDOMObject::hasPendingActivity should be non-virtual,
&gt; checking m_pendingActivityCount and then calling out to a virtual
&gt; hasPendingActivityVirtual() or something like that. That would eliminate
&gt; this class of bugs.

Isn&apos;t that exactly what my patch does? :) except that I called the method virtualHasPendingActivity() and you called it hasPendingActivityVirtual().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635823</commentid>
    <comment_count>19</comment_count>
      <attachid>394980</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-03-30 16:32:54 -0700</bug_when>
    <thetext>Comment on attachment 394980
Patch

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

r=me

&gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:153
&gt;&gt; +    unsigned m_pendingActivityInstancesCount { 0 };
&gt; 
&gt; I renamed this to address the confusion that Ryosuke was talking about.

I think we usually say &quot;m_pendingActivityInstanceCount&quot;, without the plural.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635826</commentid>
    <comment_count>20</comment_count>
      <attachid>394984</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:37:16 -0700</bug_when>
    <thetext>Created attachment 394984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635827</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:38:06 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #19)
&gt; Comment on attachment 394980 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394980&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ActiveDOMObject.h:153
&gt; &gt;&gt; +    unsigned m_pendingActivityInstancesCount { 0 };
&gt; &gt; 
&gt; &gt; I renamed this to address the confusion that Ryosuke was talking about.
&gt; 
&gt; I think we usually say &quot;m_pendingActivityInstanceCount&quot;, without the plural.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635841</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-30 16:39:53 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #17)
&gt; (In reply to Chris Dumez from comment #13)
&gt; &gt; Why isn&apos;t is a method? It can operate on data members.
&gt; 
&gt; C++ has member functions.

Oh OK. I have have calling these methods all these years :) Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635859</commentid>
    <comment_count>23</comment_count>
      <attachid>394984</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 16:58:33 -0700</bug_when>
    <thetext>Comment on attachment 394984
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        checks both m_pendingActivityCount and a virtual virtualHasPendingActivity() function.

Can we call virtualHasPendingActivity hasPendingActivityInternal instead?
That&apos;s usually what we call these internal / override-only functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635870</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-30 17:25:31 -0700</bug_when>
    <thetext>Committed r259252: &lt;https://trac.webkit.org/changeset/259252&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394984.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635871</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 17:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61081753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635928</commentid>
    <comment_count>26</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-03-30 20:17:27 -0700</bug_when>
    <thetext>&gt; Can we call virtualHasPendingActivity hasPendingActivityInternal instead?
&gt; That&apos;s usually what we call these internal / override-only functions.

I&apos;m not familiar with the use of Internal in this way. Can you give an example?

I see &quot;...Impl&quot; used by RenderFlexibleBox&apos;s isFlexibleBoxImpl. 

I see &quot;virtual...&quot; used by InlineBox&apos;s logicalHeight.

&quot;Internal&quot; strikes me as surprising because usually &quot;internal&quot; usually means something that others can&apos;t poke at. But this function facilitates overrides by subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636710</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-01 15:58:30 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #26)
&gt; &gt; Can we call virtualHasPendingActivity hasPendingActivityInternal instead?
&gt; &gt; That&apos;s usually what we call these internal / override-only functions.
&gt; 
&gt; I&apos;m not familiar with the use of Internal in this way. Can you give an
&gt; example?
&gt; 
&gt; I see &quot;...Impl&quot; used by RenderFlexibleBox&apos;s isFlexibleBoxImpl. 
&gt; 
&gt; I see &quot;virtual...&quot; used by InlineBox&apos;s logicalHeight.
&gt; 
&gt; &quot;Internal&quot; strikes me as surprising because usually &quot;internal&quot; usually means
&gt; something that others can&apos;t poke at. But this function facilitates overrides
&gt; by subclasses.

I don&apos;t think it&apos;s strange. It communicates that it&apos;s not a function that can be called externally. It&apos;s internal to the class and its subclasses, not a part of a public API.

e.g.
Node
    virtual Ref&lt;Node&gt; cloneNodeInternal(Document&amp;, CloningOperation) = 0;

CSSStyleDeclaration
    virtual RefPtr&lt;CSSValue&gt; getPropertyCSSValueInternal(CSSPropertyID) = 0;
    virtual String getPropertyValueInternal(CSSPropertyID) = 0;
    virtual ExceptionOr&lt;bool&gt; setPropertyInternal(CSSPropertyID, const String&amp; value, bool important) = 0;

GraphicsLayer
    virtual void setOpacityInternal(float) { }</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394935</attachid>
            <date>2020-03-30 11:07:30 -0700</date>
            <delta_ts>2020-03-30 15:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209754-20200330110729.patch</filename>
            <type>text/plain</type>
            <size>9900</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3YWRjZTQwZDI3OTI3
Y2IwMmQzNDUzNmY1Mjg5NjUwOWZkNjIzMi4uZTVkNTBlYTU0MGQ4MTAwNmQ0OWExMjJlMTAyZjll
N2NlNmVkYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgb3ZlcnJpZGVzIHNob3VsZCBtYWtlIHN1cmUgdG8gcXVlcnkgQWN0aXZlRE9NT2JqZWN0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaGFzUGVuZGluZ0FjdGl2aXR5KCkgb3ZlcnJpZGVzIHNob3VsZCBtYWtlIHN1
cmUgdG8gcXVlcnkgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICAg
ICAgSXQgaXMgaW1wb3J0YW50IGJlY2F1c2UgY29kZSBtYXkgYmUgdXNpbmcgbWFrZVBlbmRpbmdB
Y3Rpdml0eSgpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmlj
ZXM6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6aGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNp
emVPYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1N1
c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lckJh
c2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisKIDIwMjAtMDMtMzAgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU2xlZXAgZGlzYWJs
aW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA3NGIwZjUwNmIzOTM3OWZj
ZGM5YmRjNTllYmJlM2VhOWY2NDBmNzAxLi5kMDYxOThjNDkwMWQ4MDFhNmMxNzIzNjFhOTM4YmFi
Y2E0NTRhM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNvbnN0IGNoYXIqIElEQkluZGV4OjphY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QKIAogYm9vbCBJREJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9vYmplY3RTdG9yZS5oYXNQZW5kaW5nQWN0aXZpdHkoKTsK
KyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBBY3RpdmVE
T01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBjb25zdCBTdHJpbmcmIElEQklu
ZGV4OjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCAzMDM3MWRjMWRjOWY2Mjk2NDIyMDkzMzc1MTkx
MTM0NWM2MGRjMzRlLi4zMzg5MzExYzhkNGE2Y2ZlMTdlMmRjNjZkMDE3YThkZDlmMTdkMjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IGNoYXIqIElEQk9iamVjdFN0b3JlOjphY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QKIAogYm9vbCBJREJPYmplY3RTdG9yZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5oYXNQZW5kaW5n
QWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5oYXNQZW5kaW5nQWN0aXZpdHko
KSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBjb25zdCBT
dHJpbmcmIElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggM2QwMjExOWM3YTUxZTFlMWZj
YTBlYTJlZDRjOWQyNWU4NzVlMDI0OS4uMWJjMDEwYjcwOWQ3NTk5Njg2Njg0ZGQ3MTcwNTFlNDIy
NGQzZGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKQEAgLTI2Miw2ICsyNjIsOCBAQCBjb25zdCBjaGFyKiBJREJSZXF1ZXN0OjphY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShvcmlnaW5UaHJlYWQoKSkgfHwgVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkpOworICAg
IGlmIChBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICByZXR1cm4gIW1fY29udGV4dFN0b3BwZWQgJiYgbV9oYXNQZW5kaW5nQWN0
aXZpdHk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBlNzIyMmEwNjk4YzUwMDkzYTM0OGJiN2I5NTAzMzA2MWJl
OTlkNDBjLi4zNTljOThlYmU3N2NiYmY3YzM4OTBhODIyOWJhMzdiMWJlMmM5ZmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC01MzcsNyArNTM3LDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVQKIAogYm9vbCBTb3Vy
Y2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc291
cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJu
IG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgQWN0
aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXI6OnN0b3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwCmluZGV4IDliMTgwM2QxMjRhMWUyYjY5ZjA0ODhkMWIyZmZjZWZhNmFh
OWYzYmEuLmIzOGQyNDU4YzJlYWQ0N2Q5NGEyMmRiNzhjZjUyZjhhNzY4OTk0OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAK
QEAgLTI1MCw2ICsyNTAsOCBAQCB2b2lkIE1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1l
ckZpcmVkKCkKIAogYm9vbCBNZWRpYURldmljZXM6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiB7CisgICAgaWYgKEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiAhaXNDb250ZXh0U3RvcHBlZCgpICYmIGhhc0V2
ZW50TGlzdGVuZXJzKG1fZXZlbnROYW1lcy5kZXZpY2VjaGFuZ2VFdmVudCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5k
ZXggY2M3MzQ2NGUwNTU5YmIxMDllZjViY2M1MWRlNjFmZTdhNzE5YWY2ZC4uN2E2NzEwMmNkMGEx
NDdlZjU2YWYyOTk5MTMyZjNhYzM2ZGJlMjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBj
b25zdCBjaGFyKiBNZWRpYVN0cmVhbTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAKIGJv
b2wgTWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1faXNBY3RpdmU7CisgICAgcmV0dXJuIG1faXNBY3RpdmUgfHwgQWN0aXZlRE9NT2JqZWN0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNjg5ZmY1MGIxZTdhYTlkY2U2ZmMxY2Q0NDdl
MzNiMmQ3MDMzZjRiYi4uMThmYTlkY2JhMjg1N2ZmMjM4OWNlZWRhOGVjOTI5NzYxNjA2Y2RiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0zMTYsNiArMzE2LDkgQEAgYm9vbCBN
ZXNzYWdlUG9ydDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCB8fCBtX2Nsb3NlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgaWYgKEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCiAgICAgLy8gSWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gaWRsZSBzaW5jZSB0
aGUgcmVtb3RlIHBvcnQgZGVjbGFyZWQgaXRzZWxmIGVsZ2liaWxlIGZvciBHQywgd2UgY2FuIEdD
LgogICAgIGlmICghbV9oYXNIYWRMb2NhbEFjdGl2aXR5U2luY2VMYXN0Q2hlY2sgJiYgbV9pc1Jl
bW90ZUVsaWdpYmxlRm9yR0MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ1ZTBjZmZmZDRjOGMzODkxY2ExNTY0ZTY1
ZWNhZDU0OGJlYzM4MTkuLmEzZjE5NGE0YWZlZTZkZTIzYjEwODY2MzdlMDgwYzBmMjJjZDQ3ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTc2NCw3ICs1
NzY0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChoYXNB
dWRpbygpICYmIGlzUGxheWluZygpKSB8fCBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2
ZW50cygpIHx8IG1fcGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzUXVldWUuaGFzUGVuZGluZ1Rhc2tz
KCkgfHwgbV9jcmVhdGluZ0NvbnRyb2xzOworICAgIHJldHVybiAoaGFzQXVkaW8oKSAmJiBpc1Bs
YXlpbmcoKSkgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKSB8fCBtX3Bs
YXliYWNrVGFyZ2V0SXNXaXJlbGVzc1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpIHx8IG1fY3JlYXRp
bmdDb250cm9scyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKaW5kZXggNTRhMzM4NDNkZTk0Njc1Zjg4MTM4NDIyYzdiZDA1YTI5OTIzYTZlYy4uMmZj
N2Y2MmZmMmUyMWRiZTUxOThiYTZjNWZhYWNiMjcyNGY4NWE4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
QEAgLTU1NTQsNyArNTU1NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0
YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDBhZTkxMGI0ZjllNjc0YWIxMDRmZDRkMzY3
MGE2Njg2N2Y4ZDYzNWUuLjlhMDVkZmYzZWM3ODIzNzE0YmQxMmQzNTU5YTY4MzhjYTcxOTVmYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm90aWZ5KCkKIAogYm9v
bCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gKGhhc09ic2VydmF0aW9uVGFyZ2V0cygpICYmIHRyYWNraW5nRG9jdW1lbnQoKSkg
fHwgIW1fcXVldWVkRW50cmllcy5pc0VtcHR5KCk7CisgICAgcmV0dXJuIChoYXNPYnNlcnZhdGlv
blRhcmdldHMoKSAmJiB0cmFja2luZ0RvY3VtZW50KCkpIHx8ICFtX3F1ZXVlZEVudHJpZXMuaXNF
bXB0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKIGNv
bnN0IGNoYXIqIEludGVyc2VjdGlvbk9ic2VydmVyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKaW5kZXggNjUwN2ZhZTIxZDM5
ZGI5ZDdjNmExMTFmMzAzMjEwNGM1NTMwYjViMC4uN2E3ODA5YjU3NjIyMWVjNWYwMTYzYTgzNzky
ODczZTUzYzJlYTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKQEAg
LTE3MSw3ICsxNzEsNyBAQCBib29sIFJlc2l6ZU9ic2VydmVyOjpyZW1vdmVPYnNlcnZhdGlvbihj
b25zdCBFbGVtZW50JiB0YXJnZXQpCiAKIGJvb2wgUmVzaXplT2JzZXJ2ZXI6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChoYXNPYnNlcnZhdGlvbnMoKSAmJiBtX2Rv
Y3VtZW50KSB8fCAhbV9hY3RpdmVPYnNlcnZhdGlvbnMuaXNFbXB0eSgpOworICAgIHJldHVybiAo
aGFzT2JzZXJ2YXRpb25zKCkgJiYgbV9kb2N1bWVudCkgfHwgIW1fYWN0aXZlT2JzZXJ2YXRpb25z
LmlzRW1wdHkoKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQog
CiBjb25zdCBjaGFyKiBSZXNpemVPYnNlcnZlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAppbmRleCA4NDRlMDAxYWNh
NmM0NmY3ZWY1YzRkNzM5ZjgwNTIwOWZiMDk3MTMyLi43YTk2YThhZWRkMGNmYTUxOTdkYzM1NjIz
NGQ5NDllNmJlOGUyOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgU3VzcGVuZGFibGVUaW1lckJhc2U6On5TdXNwZW5kYWJsZVRp
bWVyQmFzZSgpID0gZGVmYXVsdDsKIAogYm9vbCBTdXNwZW5kYWJsZVRpbWVyQmFzZTo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNBY3RpdmUoKTsKKyAgICByZXR1
cm4gaXNBY3RpdmUoKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwog
fQogCiB2b2lkIFN1c3BlbmRhYmxlVGltZXJCYXNlOjpzdG9wKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394973</attachid>
            <date>2020-03-30 15:15:06 -0700</date>
            <delta_ts>2020-03-30 16:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209754-20200330151505.patch</filename>
            <type>text/plain</type>
            <size>56959</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3YWRjZTQwZDI3OTI3
Y2IwMmQzNDUzNmY1Mjg5NjUwOWZkNjIzMi4uMTk5OGE1MzJjYTI0NGY3ZTA0MGIzYjcxZDViYWIw
NDFkYWUzNzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE92ZXJyaWRlcyBvZiBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0byBxdWVy
eSB0aGUgYmFzZSBjbGFzcydzIGhhc1BlbmRpbmdBY3Rpdml0eSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdmVycmlkZXMgb2YgQWN0aXZlRE9NT2Jq
ZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBzaG91bGQgbm90IG5lZWQgdG8gcXVlcnkgdGhlIGJh
c2UKKyAgICAgICAgY2xhc3MncyBoYXNQZW5kaW5nQWN0aXZpdHkoKS4gVGhpcyBpcyBlcnJvci1w
cm9uZSBhbmQgbGVhZHMgdG8gYmFkIGJ1Z3MuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgaXMgbm8gbG9uZ2VyIHZp
cnR1YWwgYW5kCisgICAgICAgIGNoZWNrcyBib3RoIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgYW5k
IGEgdmlydHVhbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgZnVuY3Rpb24uCisgICAgICAg
IFN1YmNsYXNzZXMgbm93IG92ZXJyaWRlIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBhbmQg
bm8gbG9uZ2VyIG5lZWQgdG8gcXVlcnkgdGhlCisgICAgICAgIGJhc2UgY2xhc3MncyB2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Np
b246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRGV2aWNlczo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpoYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIGFu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9u
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkFuaW1hdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGRvbS9B
Y3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9BY3RpdmVE
T01PYmplY3QuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6aGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVS
ZWFkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgorICAg
ICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5o
OgorICAgICAgICAqIHBhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzaXplT2JzZXJ2ZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzaXplT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2Uv
U3VzcGVuZGFibGVUaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRpbWVy
QmFzZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdXNwZW5kYWJsZVRpbWVyQmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDIwLTAzLTMwICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNsZWVwIGRpc2FibGluZyBzaG91
bGQgYmUgcGVyZm9ybWVkIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXgg
NWZmNDM2ZjFmNjU5ZDI2ZjU0NzhhNjFmMDYwNzJkNGY3MWRlYThlMy4uNTgyNjBjMjhlMWZjOGNm
MWQ1OTg3M2VmZmYyMTQzYzYyNWNlMjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNzcyLDEw
ICs3NzIsMTAgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCku
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCi1ib29sIE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgTWVkaWFLZXlTZXNzaW9uOjp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICAvLyBBIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qg
U0hBTEwgTk9UIGJlIGRlc3Ryb3llZCBhbmQgU0hBTEwgY29udGludWUgdG8gcmVjZWl2ZSBldmVu
dHMgaWYgaXQgaXMgbm90IGNsb3NlZCBhbmQgdGhlIE1lZGlhS2V5cyBvYmplY3QgdGhhdCBjcmVh
dGVkIGl0IHJlbWFpbnMgYWNjZXNzaWJsZS4KLSAgICByZXR1cm4gKCFtX2Nsb3NlZCAmJiBtX2tl
eXMpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJu
ICFtX2Nsb3NlZCAmJiBtX2tleXM7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlhS2V5U2Vzc2lvbjo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCBiNmFjZTM1ODll
YzhhZGNkOWE4NTA1MDhkMTFkZTM3ZTRlM2RiYmVlLi5iMmYzMWYzYjI1MGM5MmViYTgxYmJlNTdj
MzYxMGI0ODI2YTUzZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTg2LDkgKzg2LDYgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFL
ZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKLSAg
ICAvLyBBY3RpdmVET01PYmplY3QKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
IG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdl
YWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7CiAg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImKTsKQEAgLTEwOCw3ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
Ci0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIC8vIExvZ2dlckhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggM2I2Zjc0M2Y5N2U0YmI2NDMyZTRlY2ZkMTdk
NDVkYzM4M2NkYjNjZi4uZmJlYzIwOGZiOWFiNTM4OGNiOWVjOTdhMjMyNTY1ODQ3ODZhNzNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzQsOSAr
MjM0LDkgQEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCi1ib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9u
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fa2V5
cyAmJiBtX3Nlc3Npb24pIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgcmV0dXJuIG1fa2V5cyAmJiBtX3Nlc3Npb247CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgK
aW5kZXggYTEyZjQ5NzUwZjgwMzk0YzRkNGI2N2Q5ZDIyZTdiOWQxOTc4ODNiMi4uZmY2MTY5Y2Jl
YWM2MWZlZjc5MzczMTE2YWYyYmUxN2M1Y2ZmMDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmgKQEAgLTYyLDggKzYyLDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgV2ViS2l0
TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJLaXRNZWRpYUtleXMm
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJl
ZCgpOwpAQCAtNzYsOCArNzQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
ZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgpIGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggZWFmZmU4YjExZDM5MjJkZmE3YmZlODZhZjg0MWEwZTZlMWZhNmQyYS4uM2E3
YjIyOWJmN2NlNDQ0N2RkNzA3MmU5Zjc4ZWM0N2Y1NmUyZTIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNzUsNyArNzUsNyBA
QCBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+dW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKLWJvb2wgSURCRGF0YWJhc2U6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIElEQkRhdGFiYXNlOjp2aXJ0dWFsSGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkgfHwgVGhyZWFkOjptYXlCZUdDVGhy
ZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaAppbmRleCBlYzk3MjU3MTQ5YmIxYzRlNmJjYjNkMTMzOGI5NDUwODc0ZDE5Y2VlLi40NGM5
NzkxMDBjODlmOTA1YTVmMzA4YTFmZTVmNjAzYTQzNjZmODYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTgxLDkgKzgxLDYgQEAgcHVi
bGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6cmVmOwog
ICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKLSAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzdG9wKCkgZmluYWw7Ci0KICAgICBJREJEYXRhYmFzZUluZm8mIGluZm8oKSB7IHJldHVybiBt
X2luZm87IH0KICAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKQEAgLTEwOCw4
ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5h
bDsKIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAgICB2
b2lkIHNldElzQ29udGV4dFN1c3BlbmRlZChib29sIGlzQ29udGV4dFN1c3BlbmRlZCkgeyBtX2lz
Q29udGV4dFN1c3BlbmRlZCA9IGlzQ29udGV4dFN1c3BlbmRlZDsgfQogICAgIGJvb2wgaXNDb250
ZXh0U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRleHRTdXNwZW5kZWQ7IH0KIApA
QCAtMTE4LDYgKzExMywxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRDb21taXRPckFib3J0
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisKICAgICB2b2lkIG1heWJlQ2xvc2VJblNlcnZlcigpOwogCiAgICAgUmVm
PElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2Nvbm5lY3Rpb25Qcm94eTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA3NGIwZjUw
NmIzOTM3OWZjZGM5YmRjNTllYmJlM2VhOWY2NDBmNzAxLi4zMmJjN2E5ZTRkODU3MDFjMGY2NjY4
YWQ2Y2Y5N2VmN2Q4ZWMzMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNvbnN0IGNoYXIqIElEQkluZGV4Ojph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklEQkluZGV4IjsKIH0KIAot
Ym9vbCBJREJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgSURCSW5kZXg6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX29iamVj
dFN0b3JlLmhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggZmQzZWY2ZjY4NTZmMDY4YTdjNDFkYjVhNjk3ZTk4
OTBjZDdmNmJkZS4uZWU3YWFjNzE3ZDI3NGY1ZTgwZmM2YWY0NmQwNDVkMjI1ZmYzYWViNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC04Niw4ICs4
Niw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIG9iamVjdFN0b3JlQXNPcGFxdWVSb290KCkgeyBy
ZXR1cm4gJm1fb2JqZWN0U3RvcmU7IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKQEAgLTk3LDcgKzk1LDkgQEAgcHJp
dmF0ZToKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25h
bDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4gJiYpOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIElEQkluZGV4SW5mbyBtX2lu
Zm87CiAgICAgSURCSW5kZXhJbmZvIG1fb3JpZ2luYWxJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDMwMzcxZGMx
ZGM5ZjYyOTY0MjIwOTMzNzUxOTExMzQ1YzYwZGMzNGUuLjRkMTYxN2M3MDNlYmRhMTlkZjVhYzFm
MzEzNjBkYzQ2Yjk3YjkzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgY29uc3QgY2hhciog
SURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAi
SURCT2JqZWN0U3RvcmUiOwogfQogCi1ib29sIElEQk9iamVjdFN0b3JlOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAorYm9vbCBJREJPYmplY3RTdG9yZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24uaGFzUGVuZGluZ0FjdGl2
aXR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCA5ZWUxYjQ4N2U4MDQ1NDEwNmE0MTZiYWI2MjcxNGE4ZmNlZmU2YzZm
Li40YzE0OGJhYjA1YTJlNGUxNjRmMmE5YmFlMGQ3YjAzYjkzZjk0ZDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTExMiw4
ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdFJlZmVyZW5jZWRJbmRleGVzKEpTQzo6
U2xvdFZpc2l0b3ImKSBjb25zdDsKICAgICB2b2lkIHJlbmFtZVJlZmVyZW5jZWRJbmRleChJREJJ
bmRleCYsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgSW5saW5lS2V5
Q2hlY2sgeyBQZXJmb3JtLCBEb05vdFBlcmZvcm0gfTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IHB1dE9yQWRkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFJl
ZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgSW5saW5l
S2V5Q2hlY2spOwpAQCAtMTI0LDcgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgT3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+ICYmKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxs
S2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKIAorICAg
IC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QgZmluYWw7CiAKICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogICAgIElEQk9iamVj
dFN0b3JlSW5mbyBtX29yaWdpbmFsSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggM2QwMjExOWM3YTUxZTFlMWZjYTBlYTJlZDRj
OWQyNWU4NzVlMDI0OS4uNTA1MjQzM2U1NTkwYTI3N2Q1ZmZhYzhjMjIxNDBmODYwM2EwYWE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
QEAgLTI1OSw3ICsyNTksNyBAQCBjb25zdCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklEQlJlcXVlc3QiOwogfQogCi1ib29sIElEQlJl
cXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIElEQlJlcXVlc3Q6OnZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSB8fCBUaHJlYWQ6Om1heUJl
R0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYmIG1faGFzUGVuZGlu
Z0FjdGl2aXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCmluZGV4IDI4NjYxMzQ0YjBkZTIxNzZmNWJlYWMzNjEzMTU0MGYxMjU2ZmRkZTIuLjJjZWI1
ZDNkZGEyNzE4ZWM3ZWIyMmVlMzk5ZTYzODUxNDM0NmVlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTEyNSw4ICsxMjUsNiBAQCBwdWJs
aWM6CiAKICAgICBJbmRleGVkREI6OlJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0VHlwZTsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKLQogICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25PcGVyYXRpb25JRCh1aW50NjRf
dCB0cmFuc2FjdGlvbk9wZXJhdGlvbklEKSB7IG1fY3VycmVudFRyYW5zYWN0aW9uT3BlcmF0aW9u
SUQgPSB0cmFuc2FjdGlvbk9wZXJhdGlvbklEOyB9CiAKIHByb3RlY3RlZDoKQEAgLTE1OCw4ICsx
NTYsMTEgQEAgcHJpdmF0ZToKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisg
ICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOworCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZvclN0b3AoKTsKIAogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggM2Q5MGIxNWQw
ODIwNzYwNjhhZGE0ODgzMjUwMTgzOWEyZmE2MTNhYS4uMjBkNjhlMGUwNDY3MTk4YTdkMTk3NzA3
Y2IwODVmMzA2NjA1NzQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzE1LDEyICszMTUsOSBAQCBjb25zdCBjaGFy
KiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
ICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKLWJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0Citib29sIElEQlRyYW5zYWN0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVh
ZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkgfHwgVGhyZWFkOjptYXlCZUdD
VGhyZWFkKCkpOwotICAgIGlmIChBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHJldHVybiAhbV9jb250ZXh0U3RvcHBlZCAm
JiBtX3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CmluZGV4IGQ0MTc3M2NjYzVkNjVmODM0NTA4MWJjZDU3YThmOWRhZDZjMzQ5NzcuLjU1YjBkMTBk
Zjc1ZmEyMjBmOGIwNjQzYzFhNzZlOGU0M2E5NjYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtOTMsMTAgKzkzLDYgQEAg
cHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6
cmVmOwogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVy
ZWY7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKLQogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1faW5mbzsgfQogICAgIElEQkRhdGFiYXNlJiBkYXRhYmFzZSgpIHsgcmV0dXJu
IG1fZGF0YWJhc2UuZ2V0KCk7IH0KICAgICBjb25zdCBJREJEYXRhYmFzZSYgZGF0YWJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CkBAIC0xNTcsOSArMTUzLDE2IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4g
bnVtYmVyT2ZJREJUcmFuc2FjdGlvbnM7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAg
dm9pZCBzdG9wKCkgZmluYWw7CisKIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb24oSURCRGF0
YWJhc2UmLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mLCBJREJPcGVuREJSZXF1ZXN0Kik7CiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBjb21taXQoKTsKIAogICAgIHZvaWQgaW50ZXJuYWxB
Ym9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGM3NDMyYjg2NjM3NTU1ZWZjZDRmNjZlOTU1MmM3NWZk
N2UwNjIyZDUuLmI1ZGViOGIzNWM4YWIxZmViNzlhYmIzZmQwZTNlZTNiZjAyNTQ0Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci5jcHAKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIE1lZGlhUmVjb3JkZXI6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2ssIGNvbnN0CiAgICAg
bV9wcml2YXRlLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodHJhY2ssIG1lZGlhVGltZSwgYXVkaW9E
YXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXI6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIE1lZGlhUmVjb3JkZXI6OnZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fc3RhdGUgIT0gUmVjb3JkaW5nU3RhdGU6OkluYWN0
aXZlOworICAgIHJldHVybiBtX3N0YXRlICE9IFJlY29yZGluZ1N0YXRlOjpJbmFjdGl2ZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKaW5kZXggOWY4NTQ5MDU3MzdkNWY3M2Uz
MTcyMGJhODIyZGQ2YzIwNWJjNzk1Zi4uZThiYmI4NTFkZmM2MTdkZTZlMDg1NDliNzlmNmE0NDc2
NDc5N2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5oCkBAIC03NSw4ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIE1lZGlh
U3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbS5nZXQoKTsgfQogCi0gICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBNZWRpYVJl
Y29yZGVyKERvY3VtZW50JiwgUmVmPE1lZGlhU3RyZWFtPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFSZWNvcmRlclByaXZhdGU+JiYsIE9wdGlvbnMmJiA9IHsgfSk7CiAKQEAgLTk0LDYgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgc3RvcFJlY29yZGluZ0ludGVybmFsKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKaW5kZXggNGU0MTkzYmFiOTJjYjUyZmJiMDBjMGZhNmU4ZWMzMmQ0ODI1NDliZS4uNDAxYTM3
ZmVmOGIwYjU5YjM4NWYyZDVhMjRmZGJkZmExYjZhNTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTk3MSwxMCArOTcx
LDkgQEAgdm9pZCBNZWRpYVNvdXJjZTo6b3BlbklmSW5FbmRlZFN0YXRlKCkKICAgICBtX3ByaXZh
dGUtPnVubWFya0VuZE9mU3RyZWFtKCk7CiB9CiAKLWJvb2wgTWVkaWFTb3VyY2U6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Citib29sIE1lZGlhU291cmNlOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkKLSAgICAgICAgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmlu
ZGV4IDQyNWJmOTdlODM5ZDc1Njc0MTY2Njc0YWM3ZDAwZDUxMjA3MjYyZDQuLjgzZDFjNGZkNGVh
ZTIzOTlkNTFlYzU0MmZlYjM0ZTMzZTZjYzQ1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTExMSw4ICsxMTEsNiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRl
cmVmOwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogICAg
IHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IoKTsKICAgICBz
dGF0aWMgYm9vbCBjb250ZW50VHlwZVNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhjb25zdCBDb250
ZW50VHlwZSYpOwogCkBAIC0xMjcsOCArMTI1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9w
ZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJikgZmluYWw7CiAgICAgdm9pZCBzZWVrVG9UaW1l
KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGU3MjIyYTA2OThjNTAwOTNhMzQ4
YmI3Yjk1MDMzMDYxYmU5OWQ0MGMuLjg5NzQ0NjJjOGI4NWE2NjAzODM0MTYwOTMxZDJlY2NjNjY3
ZGQyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBNZWRpYVRpbWUgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlh
VAogICAgIHJldHVybiBzZWVrVGltZTsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFNvdXJjZUJ1ZmZlcjo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCAxMTlmZmM4YmMwMWVlMmU4MDQ3ZjZl
NTViNzJkZDc5MzY4NTI0MjcyLi5jMGRlNzc2YTMzMDc5MmZkNmE2NzRkZGEwMjM2OGNmMzA5ZmMz
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmgKQEAgLTEzMCw4ICsxMzAsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGhpZ2hl
c3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKSBjb25zdDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAg
ICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApAQCAtMTQ3LDggKzE0NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKICAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKaW5kZXggOWIxODAzZDEyNGExZTJiNjlmMDQ4OGQxYjJmZmNlZmE2YWE5ZjNiYS4uM2I2NGRl
YzU2ZjI0ODliMWI2MTU5YmRmNGE2NGI5YTU5ODU0NDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMjQ4LDcgKzI0
OCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKQogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQog
Ci1ib29sIE1lZGlhRGV2aWNlczo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgTWVk
aWFEZXZpY2VzOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gIWlzQ29udGV4dFN0b3BwZWQoKSAmJiBoYXNFdmVudExpc3RlbmVycyhtX2V2ZW50TmFtZXMu
ZGV2aWNlY2hhbmdlRXZlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggYWY0OTBlZGNjZTE4MDQ4ODgzOTNjZjcyNjEw
ODk4ZjgzMjhlMTc2NS4uODIwN2ZjOTllODdjZDA1Y2I0ZDA3Y2U4NDc5ZTdhM2M2ZDc2MTA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QK
ICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEuCiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYURl
dmljZXNFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggY2M3MzQ2NGUwNTU5YmIx
MDllZjViY2M1MWRlNjFmZTdhNzE5YWY2ZC4uNDkzYTQwMDA1OTExODE2MjQzZTBkODUzNTZmYzFh
YTc3MDg5MTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBjb25zdCBjaGFyKiBNZWRpYVN0
cmVhbTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJNZWRpYVN0cmVh
bSI7CiB9CiAKLWJvb2wgTWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIE1lZGlhU3RyZWFtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCAxOGU1NmU4YzRjY2U3OTExNmQ4MmY0NjI3YWE5
YmZjNWRjYjEyM2JmLi5jYjhmMTQ2MjMzOWExNWRiZGI2MmY2ZTU3ZjA2ZmFiY2M4ZWI2NTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
CkBAIC0xMDUsOSArMTA1LDYgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAgICBlbnVtIGNsYXNzIFN0cmVhbU1vZGlmaWVy
IHsgRG9tQVBJLCBQbGF0Zm9ybSB9OwogICAgIGJvb2wgaW50ZXJuYWxBZGRUcmFjayhSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiwgU3RyZWFtTW9kaWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaW50ZXJuYWxSZW1vdmVUcmFjayhjb25zdCBTdHJpbmcmLCBTdHJlYW1Nb2RpZmllcik7CkBA
IC0xNDYsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgog
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlU3RhdGUoKTsKICAgICB2b2lkIGFj
dGl2aXR5RXZlbnRUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA5ZmNiNDc1NDM2M2Q0
YTY0YTMwZGMzMDRmMTJlYjk2NjY3ZjEwYjY4Li5kMGIyY2I5ZmQwYWExYmQxZjI5YWNlZGM1YjYw
OTM5Nzc0YTExY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTU5Nyw5ICs1OTcsOSBAQCB2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAg
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotYm9vbCBNZWRpYVN0cmVhbVRyYWNr
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjp2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fZW5kZWQgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gIW1fZW5k
ZWQ7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhU3RyZWFtVHJhY2s6OmF1ZGlvU291
cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCA1MzkwN2FiMDk4NzhjMzhjZTQ2MGMwMTUxOTcy
YzAyYjFkMGExZDZlLi4wMmZkNDU0YjZhMWRhM2M1NGJkYTNiMjA0OWU4ZTAzZjdjYWNkYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaApAQCAtMTQ5LDkgKzE0OSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICAvLyBBY3RpdmVE
T01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
Ci0KICAgICB2b2lkIHNldElkRm9yVGVzdGluZyhTdHJpbmcmJiBpZCkgeyBtX3ByaXZhdGUtPnNl
dElkRm9yVGVzdGluZyhXVEZNb3ZlKGlkKSk7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0OwpAQCAtMTc3LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmlu
YWwgeyBzdG9wVHJhY2soKTsgfQogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7
IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGFhYWJjMDkyYzhkZGRlM2I0NTUyNDA3NmMz
YzE5MjFlZWVhMzJlODguLjBjMjczMGY1ZDA4OTAxNThjOWJkMGI5MjI3ZTUyMjNjYjk3YjQ2YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCkBAIC01MzAsMTUgKzUzMCwxMSBAQCB2b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpyZXN1bWUoKQogICAgIH0pOwogfQogCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBSVENQZWVyQ29ubmVjdGlvbjo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSBoYXZl
IHBlbmRpbmcgcHJvbWlzZXMgdG8gYmUgcmVzb2x2ZWQuCi0gICAgaWYgKEFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8g
QXMgbG9uZyBhcyB0aGUgY29ubmVjdGlvbiBpcyBub3Qgc3RvcHBlZCBhbmQgaXQgaGFzIGV2ZW50
IGxpc3RlbmVycywgaXQgbWF5IGRpc3BhdGNoIGV2ZW50cy4KICAgICByZXR1cm4gaGFzRXZlbnRM
aXN0ZW5lcnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCA5ZWU3ZGU2YjUyYjM3ODliMzIzNTljZWVm
YzZiYzEyZjE4ZmQ0NGI3Li5mZjBiNjg2MGU5MDcxMDc4MzM4ZTU4YzY0MGU5MTNhNzZiYWNhZGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCkBAIC0xNzIsOSArMTcyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJvbGxlciA9IG51bGxwdHI7IH0KIAotICAgIC8vIEFj
dGl2ZURPTU9iamVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwotICAgIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpOwogCiAgICAgdm9pZCBkb1Rhc2soRnVu
Y3Rpb248dm9pZCgpPiYmKTsKQEAgLTIxMiw2ICsyMDksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CiAgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsK
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAg
IHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IDY1MjE5YWM2YzhjOWM0
NzMzOTQ5Njk4M2FmMjRlYmEzM2U4NGYwMmEuLmEyODI2Yzc5YTU2OGI1N2JmOTliNGZmOGQ4YWZh
ZjI4OGM2ODg5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CkBAIC0xMjY5LDEwICsxMjY5LDEwIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzdG9wKCkKICAgICBy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogfQogCi1ib29sIFdlYkFuaW1hdGlvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgV2ViQW5pbWF0aW9uOjp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICAvLyBLZWVwIHRoZSBKUyB3cmFwcGVyIGFsaXZlIGlm
IHRoZSBhbmltYXRpb24gaXMgY29uc2lkZXJlZCByZWxldmFudCBvciBjb3VsZCBiZWNvbWUgcmVs
ZXZhbnQgYWdhaW4gYnkgdmlydHVlIG9mIGhhdmluZyBhIHRpbWVsaW5lLgotICAgIHJldHVybiBt
X3RpbWVsaW5lIHx8IG1faXNSZWxldmFudCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpOworICAgIHJldHVybiBtX3RpbWVsaW5lIHx8IG1faXNSZWxldmFudDsKIH0KIAog
dm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZVJlbGV2YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmgKaW5kZXggZDcwYzJmMjAwNDFjYTI3NWVhZjBmNDdjOTA3ZjQ2ZTU4
ZDc3NTI4Yy4uZDFiZDgxMDhiZmM3OGNlMzA5NzVkNGVhNmRkN2I3NTMzNGEzYWEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtMTM5LDggKzEzOSw2IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsUG9zaXRpb247IH0KICAgICB2b2lkIHNldEdsb2JhbFBvc2l0aW9uKHVpbnQ2NF90IGdsb2Jh
bFBvc2l0aW9uKSB7IG1fZ2xvYmFsUG9zaXRpb24gPSBnbG9iYWxQb3NpdGlvbjsgfQogCi0gICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlR2xvYmFsUG9zaXRpb24oKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci4KQEAgLTIxMiw2ICsyMTAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKICAgICB2b2lkIHJlc3Vt
ZSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFdlYkFuaW1hdGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggNjVkOWFjZGRiMGIyNjdmYWM1MWQ0NDU1MDliZTVlZGFiYWJlMGRm
Yy4uYTUyNTA2MTE2NGE0MDViMGFmZjVmZWVmYjM0ZjdiMDgyYTkxYjFjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC00ODYsMTAgKzQ4Niw4IEBAIGNvbnN0IGNoYXIqIEZvbnRGYWNlOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkZvbnRGYWNlIjsKIH0KIAot
Ym9vbCBGb250RmFjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgRm9udEZhY2U6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIGlmIChBY3RpdmVET01P
YmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBy
ZXR1cm4gIWlzQ29udGV4dFN0b3BwZWQoKSAmJiBtX21heUxvYWRlZFByb21pc2VCZVNjcmlwdE9i
c2VydmFibGUgJiYgIW1fbG9hZGVkUHJvbWlzZS0+aXNGdWxmaWxsZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaAppbmRleCBiNjVjMmQ1ZTc5ZTMwODg0YjczOTI2YTQ1YmE3MDk1NTFiNjZiOTBj
Li40NGNhNmQ1ODg1YzNjODE1OTFmNjM4ZWRjZDk3NjM5NjE2N2UxMDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaApAQCAtOTIsMTMgKzkyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGZpbmFs
IHsgUmVmQ291bnRlZDo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBSZWZDb3Vu
dGVkOjpkZXJlZigpOyB9CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYp
OwogICAgIGV4cGxpY2l0IEZvbnRGYWNlKENTU0ZvbnRGYWNlJik7CiAKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgLy8gQ2FsbGJhY2sgZm9yIExvYWRlZFByb21pc2UuCiAgICAgRm9udEZhY2UmIGxvYWRl
ZFByb21pc2VSZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGZkNDNmYTlhOWM3MzVlYzlkNzg0MTIyYTdlN2Y5ODY2MmJlNTE1ZTYuLmE0Y2Y1NzMyYWE1
Mzk3YzhlZjk4YWYzM2QyYTBjZWM2OTdhMTA2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCkBAIC0xMDYsMTEgKzEwNiw2IEBAIHZvaWQgQWN0aXZlRE9NT2JqZWN0Ojph
c3NlcnRTdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQoKSBjb25zdAogCiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAotYm9vbCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7Ci19Ci0KIHZvaWQgQWN0
aXZlRE9NT2JqZWN0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMGQwYmExNTg4NTEwNzk5MTA3ZjhiM2QxZWY4
MTg4OTU3NjVkYjk5NC4uMGFjYWE1NzFkMjAyMzg1ZTAwMDFjYjZhZmQ1MjUxOGI2Zjg1MzJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdXNwZW5kSWZOZWVkZWQoKTsKICAgICB2b2lkIGFzc2VydFN1c3BlbmRJ
Zk5lZWRlZFdhc0NhbGxlZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0OworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wZW5kaW5nQWN0aXZpdHlDb3VudCB8fCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
KCk7IH0KIAogICAgIC8vIEhvd2V2ZXIsIHRoZSBzdXNwZW5kIGZ1bmN0aW9uIHdpbGwgc29tZXRp
bWVzIGJlIGNhbGxlZCBldmVuIGlmIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBy
ZXR1cm5zIGZhbHNlLgogICAgIC8vIFRoYXQgaGFwcGVucyBpbiBzdGVwLWJ5LXN0ZXAgSlMgZGVi
dWdnaW5nIGZvciBleGFtcGxlIC0gaW4gdGhpcyBjYXNlIGl0IHdvdWxkIGJlIGluY29ycmVjdApA
QCAtNzMsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgLy8gSXQgY2FuLCBob3dldmVyLCBoYXZlIGEg
c2lkZSBlZmZlY3Qgb2YgZGVsZXRpbmcgYW4gQWN0aXZlRE9NT2JqZWN0LgogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CiAKKyAgICAvLyBGSVhNRTogRHJvcCB0aGlzIG1ldGhvZC4KKyAgICAvLyBD
YWxsIHNpdGVzIHNob3VsZCBiZSB1c2luZyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgb3Igb3ZlcnJp
ZGluZyB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVhZC4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB2b2lkIHNldFBlbmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCZ0aGlzT2JqZWN0ID09IHRoaXMpOwpAQCAtODAsNiArODIsOCBAQCBw
dWJsaWM6CiAgICAgICAgICsrbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsKICAgICB9CiAKKyAgICAv
LyBGSVhNRTogRHJvcCB0aGlzIG1ldGhvZC4KKyAgICAvLyBDYWxsIHNpdGVzIHNob3VsZCBiZSB1
c2luZyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgb3Igb3ZlcnJpZGluZyB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgaW5zdGVhZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHVuc2V0
UGVuZGluZ0FjdGl2aXR5KFQmIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICBBU1NFUlQobV9w
ZW5kaW5nQWN0aXZpdHlDb3VudCA+IDApOwpAQCAtMTM5LDYgKzE0MywxMCBAQCBwcml2YXRlOgog
ICAgIGVudW0gQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUeXBlIHsgQ2hlY2tlZFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgfTsKICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSk7CiAKKyAgICAvLyBU
aGlzIGlzIHVzZWQgYnkgc3ViY2xhc3NlcyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkgaGF2ZSBwZW5k
aW5nIGFjdGl2aXR5LCBtZWFuaW5nIHRoYXQgdGhleSB3b3VsZAorICAgIC8vIGxpa2UgdGhlIEpT
IHdyYXBwZXIgdG8gc3RheSBhbGl2ZSAoYmVjYXVzZSB0aGV5IG1heSBzdGlsbCBmaXJlIEpTIGV2
ZW50cykuCisgICAgdmlydHVhbCBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNr
U291cmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNjg5ZmY1MGIxZTdhYTlkY2U2ZmMx
Y2Q0NDdlMzNiMmQ3MDMzZjRiYi4uOGJkMzM5NGViZjMyOTJlOTZkZWU2MDQ4NjhiNWQ4NmM0Nzc5
NTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBNZXNzYWdlUG9ydDo6dXBkYXRlQWN0aXZpdHkoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGkKICAgICBtX2lzQXNraW5nUmVtb3RlQWJvdXRHQyA9IGZh
bHNlOwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAor
Ym9vbCBNZXNzYWdlUG9ydDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAg
ICAgbV9taWdodEJlRWxpZ2libGVGb3JHQyA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKaW5kZXggNjY4ZDViNDYxOGJlYTdkOTg5ZWI3NjA5NmRhNjBmZWQ2Mjk0ODExNi4uYWFjYTQ4
OTVkYTFiZjZiOGUyYjA3MGY0NTBlYjIwMjk2NzdkYTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmgKQEAgLTgyLDEyICs4Miw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKSBjb25zdDsKIAot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLSAg
ICB2b2lkIHN0b3AoKSBmaW5hbCB7IGNsb3NlKCk7IH0KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsbHlS
ZWFjaGFibGUoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEuCkBA
IC0xMDQsNiArOTgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRk
RXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlz
dGVuZXJPcHRpb25zJikgZmluYWw7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWwgeyBjbG9zZSgpOyB9
CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisKICAg
ICB2b2lkIGRpc2VudGFuZ2xlKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMDI5MjVjMzdlZTkzMjk4
ODBiYmZmMTE1MTQwYzJmYTlkYzllMjMwYS4uMzc0MTQyYWU2NzRjMjI2MTlmYWNhZTZiNzFmNWI2
NTQzNWQwZjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC04MSw5
ICs4MSw5IEBAIHZvaWQgRmlsZVJlYWRlcjo6c3RvcCgpCiAgICAgbV9zdGF0ZSA9IERPTkU7CiB9
CiAKLWJvb2wgRmlsZVJlYWRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgRmls
ZVJlYWRlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc3RhdGUgPT0gTE9BRElORyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpOworICAgIHJldHVybiBtX3N0YXRlID09IExPQURJTkc7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEZpbGVSZWFkZXI6OnJlYWRBc0FycmF5QnVmZmVyKEJsb2IqIGJsb2IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IGU3YzkyMjJjMjY4NGZlYWUxMTNhNWViMDE1MTUwMTdh
ZGUzODAwMWYuLjE5MGNjOThjNWM4NmVkNDc0MTljMmZhNDM1N2EwOTk2M2M5ODg3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC03NiwxNSArNzYsMTMgQEAgcHVibGljOgog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
IAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZpbGVSZWFkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gRmlsZVJlYWRlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDVlMGNm
ZmZkNGM4YzM4OTFjYTE1NjRlNjVlY2FkNTQ4YmVjMzgxOS4uNzQyMDUxMGRhZGRlYjQwNmFhZDhl
NzE0NWQxY2FjZGRhYjkyZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC01NzYyLDcgKzU3NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZSgpCiAgICAgdXBkYXRlUmVuZGVyZXIoKTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gKGhhc0F1ZGlvKCkgJiYg
aXNQbGF5aW5nKCkpIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkgfHwg
bV9wbGF5YmFja1RhcmdldElzV2lyZWxlc3NRdWV1ZS5oYXNQZW5kaW5nVGFza3MoKSB8fCBtX2Ny
ZWF0aW5nQ29udHJvbHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDgzNTM4MDc5YWMxYmNkODUwMTI3NGU2MDJhOWE4ODZmNmRjNWY4MDUuLmZjZDhlZGZhYmMy
ODU4NjI0MzkyMDIyNzkzODNhMDgzMmRkOGQyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC00NjIsOCArNDYyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Bs
YXlpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KIAotICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAg
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSogYXVkaW9Tb3VyY2VOb2RlKCkgeyByZXR1cm4g
bV9hdWRpb1NvdXJjZU5vZGU7IH0KICAgICB2b2lkIHNldEF1ZGlvU291cmNlTm9kZShNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUqKTsKQEAgLTY0NCw2ICs2NDIsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c3VtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGJvb2wgdmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBzdG9w
V2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpOwogICAgIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAKaW5kZXggNjdmNzY2ZWUwZWFhZTM5MGViZjJlYzc5NDY4MWQwODFjOTZhNTU3NC4uYWZhN2M2
NjNjZGVmYjhiOTQ2NjU1ZGViODMzYTg1YTQwNTU2MTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC0zNTEsMTEgKzM1MSw4IEBAIHZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6ZXZlbnRMaXN0ZW5lcnNEaWRDaGFuZ2UoKQogICAgICAgICB8fCBoYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KTsKIH0KIAotYm9vbCBIVE1MVHJhY2tFbGVt
ZW50OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBpZiAoQWN0aXZlRE9NT2Jq
ZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBy
ZXR1cm4gbV9oYXNSZWxldmFudExvYWRFdmVudHNMaXN0ZW5lciAmJiByZWFkeVN0YXRlKCkgPT0g
SFRNTFRyYWNrRWxlbWVudDo6TE9BRElORzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaAppbmRleCA3NTY5MDNmMDVhNzkzYjc1MDgzMjY1NDhlNjY2ODE3MWEzMGUzNWIz
Li40MzRmMjE0ZGFlOGU2ZDlhYWMyNTlhZWFhY2I0YTc5YjJlNmFiN2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaApAQCAtNjIsMTUgKzYyLDEzIEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkgY29uc3Q7CiAgICAgY29u
c3QgQXRvbVN0cmluZyYgbWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdDsK
IAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIEhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTFRyYWNrRWxlbWVudCgp
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRl
eCA1NGEzMzg0M2RlOTQ2NzVmODgxMzg0MjJjN2JkMDVhMjk5MjNhNmVjLi45NDI5MmUzN2M2YmM5
ODNlN2Q5NjQ3ZWQwODcxMzJhNmI1ZTg2OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTU1Miwx
MSArNTU1Miw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoQW5kUmVt
b3ZlQWxsT2JqZWN0cygpCiAgICAgfQogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnN0b3AoKQogewogICAgIGlmICghaXND
b250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAppbmRleCAyMGQ5NWY5NDkwMjFkMzBlMTY5MWVhNTkxYTE5ZDNjNTQyYWViZGY4Li5kNzBjYjI1
ODkxOGI5ZjFiMDZkNmQxMzY5OGVhM2I0ZTY2MWViNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zNzMs
OSArMzczLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBvdmVycmlkZTsK
IAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7Ci0KIHByb3RlY3RlZDoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KENhbnZhc0Jhc2UmLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tMaXN0QmFzZS5jcHAKaW5kZXggNTg1OGNmM2FmMGIyMTc4ZGVkMDhmMzIzYzRmMmYyNmE2YWI0
NTA2NC4uOThjMDU3ZWY2Y2FkOGJmNjA4NDJhYzI1MTRlYmNjMGViNjcyNjJhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCkBAIC0xNzcsOSArMTc3LDkg
QEAgYm9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFRyYWNrTGlzdEJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Citib29sIFRyYWNrTGlzdEJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAogewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIG1f
YXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXgg
YTVjODg3ODFkYzljNDI2NzcxNmVlZDYxNmQ5MWFhNmY5NDdhZDQxYi4uNGEzY2M5YWFlZDM1YTA5
ZjE0MzhiZTExNTI0OWVkYmIzNzkyMTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmgKQEAgLTY1LDggKzY1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Fu
eVRyYWNrRW5hYmxlZCgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBvdmVycmlkZTsKLQogcHJvdGVjdGVkOgogICAgIFRyYWNrTGlzdEJhc2UoV2Vha1B0cjxI
VE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCkBAIC03OCw2ICs3
Niw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsKIAorICAgIC8v
IEFjdGl2ZURPTU9iamVjdC4KKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBvdmVycmlkZTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5jcHAKaW5kZXggMGFlOTEwYjRmOWU2NzRhYjEwNGZkNGQzNjcwYTY2ODY3ZjhkNjM1ZS4uMGM5
NzU2NTI4NGU0ZjcyNWI2NTliODZhNGNjOGJhOTJhMDdmNzBlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lk
IEludGVyc2VjdGlvbk9ic2VydmVyOjpub3RpZnkoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKmNvbnRleHQpOwogfQogCi1ib29sIEludGVy
c2VjdGlvbk9ic2VydmVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBJbnRlcnNl
Y3Rpb25PYnNlcnZlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIChoYXNPYnNlcnZhdGlvblRhcmdldHMoKSAmJiB0cmFja2luZ0RvY3VtZW50KCkpIHx8
ICFtX3F1ZXVlZEVudHJpZXMuaXNFbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5oCmluZGV4IDE3YWMyZmVlMTg0NGIwNTVlNzYwMThiZTI2Zjk5Mjc1
NDdhN2U1MzkuLjFjMDhhNGVjZjM1MTZiYmFjNWU2NDVhMDU4YmZkNzNiZjgzYzBhM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKQEAgLTUyLDcgKzUyLDcg
QEAgc3RydWN0IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgLy8gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJzIGZvciB3aGlj
aCB0aGUgbm9kZSB0aGF0IG93bnMgdGhpcyBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgaXMgdGhl
IHJvb3QuCi0gICAgLy8gQW4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaXMgb25seSBvd25lZCBieSBh
IEphdmFTY3JpcHQgd3JhcHBlci4gQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkK
KyAgICAvLyBBbiBJbnRlcnNlY3Rpb25PYnNlcnZlciBpcyBvbmx5IG93bmVkIGJ5IGEgSmF2YVNj
cmlwdCB3cmFwcGVyLiBBY3RpdmVET01PYmplY3Q6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkK
ICAgICAvLyBpcyBvdmVycmlkZGVuIHRvIGtlZXAgdGhpcyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRo
ZSBvYnNlcnZlciBoYXMgb25nb2luZyBvYnNlcnZhdGlvbnMuCiAgICAgVmVjdG9yPFdlYWtQdHI8
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7CiAKQEAgLTk5LDE0ICs5OSwxNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRRdWV1ZWRFbnRyeShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbnRyeT4mJik7CiAgICAgdm9pZCBub3RpZnkoKTsKIAorcHJpdmF0ZToKKyAgICBJbnRlcnNl
Y3Rpb25PYnNlcnZlcihEb2N1bWVudCYsIFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNr
PiYmLCBDb250YWluZXJOb2RlKiByb290LCBMZW5ndGhCb3gmJiBwYXJzZWRSb290TWFyZ2luLCBW
ZWN0b3I8ZG91YmxlPiYmIHRocmVzaG9sZHMpOworCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Lgot
ICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgp
IG92ZXJyaWRlOwogCi1wcml2YXRlOgotICAgIEludGVyc2VjdGlvbk9ic2VydmVyKERvY3VtZW50
JiwgUmVmPEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s+JiYsIENvbnRhaW5lck5vZGUqIHJv
b3QsIExlbmd0aEJveCYmIHBhcnNlZFJvb3RNYXJnaW4sIFZlY3Rvcjxkb3VibGU+JiYgdGhyZXNo
b2xkcyk7Ci0KICAgICBib29sIHJlbW92ZVRhcmdldFJlZ2lzdHJhdGlvbihFbGVtZW50Jik7CiAg
ICAgdm9pZCByZW1vdmVBbGxUYXJnZXRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNl
cnZlci5jcHAKaW5kZXggNjUwN2ZhZTIxZDM5ZGI5ZDdjNmExMTFmMzAzMjEwNGM1NTMwYjViMC4u
MDE5MjBiMDJjZWI1Mjc1ZGExYTczOGFjM2QxMjRmNzkxYzNhNTdlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZXNpemVPYnNlcnZlci5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIFJlc2l6ZU9i
c2VydmVyOjpyZW1vdmVPYnNlcnZhdGlvbihjb25zdCBFbGVtZW50JiB0YXJnZXQpCiAgICAgfSk7
CiB9CiAKLWJvb2wgUmVzaXplT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIFJlc2l6ZU9ic2VydmVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gKGhhc09ic2VydmF0aW9ucygpICYmIG1fZG9jdW1lbnQpIHx8ICFtX2FjdGl2
ZU9ic2VydmF0aW9ucy5pc0VtcHR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVy
LmgKaW5kZXggNjljYWM4OGM4YzFhZWE0YWMxNDJhNGZlYmJmYTM5ZGQ2MWRjYzFjYi4uNjA5ZTcw
YzAxNDZjNTUwZGI1MWY4ZTNlYWJkN2U0YTc3NWVhNGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVz
aXplT2JzZXJ2ZXIuaApAQCAtNjQsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Nr
aXBwZWRPYnNlcnZhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2hhc1NraXBwZWRPYnNlcnZhdGlv
bnM7IH0KICAgICB2b2lkIHNldEhhc1NraXBwZWRPYnNlcnZhdGlvbnMoYm9vbCBza2lwcGVkKSB7
IG1faGFzU2tpcHBlZE9ic2VydmF0aW9ucyA9IHNraXBwZWQ7IH0KIAorcHJpdmF0ZToKKyAgICBS
ZXNpemVPYnNlcnZlcihEb2N1bWVudCYsIFJlZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsK
KwogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotcHJpdmF0ZToKLSAgICBS
ZXNpemVPYnNlcnZlcihEb2N1bWVudCYsIFJlZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsK
LQogICAgIGJvb2wgcmVtb3ZlVGFyZ2V0KEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFRh
cmdldHMoKTsKICAgICBib29sIHJlbW92ZU9ic2VydmF0aW9uKGNvbnN0IEVsZW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCmluZGV4IDg0NGUwMDFhY2E2YzQ2
ZjdlZjVjNGQ3MzlmODA1MjA5ZmIwOTcxMzIuLjU1N2Y3OWMxNjRkOTlmNzIxOGI5NTNjMTFhMDZm
NzljMDE3YTQ4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVU
aW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBTdXNwZW5kYWJsZVRpbWVyQmFzZTo6U3VzcGVuZGFibGVUaW1lckJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogU3VzcGVuZGFibGVUaW1lckJh
c2U6On5TdXNwZW5kYWJsZVRpbWVyQmFzZSgpID0gZGVmYXVsdDsKIAotYm9vbCBTdXNwZW5kYWJs
ZVRpbWVyQmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgU3VzcGVuZGFibGVU
aW1lckJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVy
biBpc0FjdGl2ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5k
YWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRl
eCAzYmU2MmU0ZjBhNWJlYzczZmYyNzU3ODQ5ZmUwNWVlMzY3YzExMWQ2Li5jNTliYjI1ZTI1ZDU5
YTM3Y2Q2NmNiNmI3NWM4N2VkZDNiMzM4ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZWQoKSBv
dmVycmlkZSA9IDA7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgdm9p
ZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggYzNjYmQ5MzQ2NjBlOGYzOWE2
MTFjZThiMzYyOGY0OWQ0NjY3ZjMxMC4uODA4MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMy
MzMwMGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtMTc1LDkgKzE3NSw5IEBA
IHZvaWQgV29ya2VyOjpyZXN1bWUoKQogICAgIH0KIH0KIAotYm9vbCBXb3JrZXI6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0
eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJu
IG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIFdvcmtlcjo6
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbkxpbmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuaAppbmRleCA2NmM2OGI1YmU3NTY0YTFhYzYyZmVkM2QwZGEzOWQ2ZDA4NmY2YTI3Li5mZmI2
OWM1YjY5N2M2NmY2Y2RhMTU5NGVjMTY0ODZiYjZlZmY3YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgKQEAgLTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAg
ICAgYm9vbCB3YXNUZXJtaW5hdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNUZXJtaW5hdGVkOyB9
CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAgU3Ry
aW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpA
QCAtODEsMTAgKzc5LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7
CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0LgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JT
dXNwZW5zaW9uKSBmaW5hbDsKICAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyB2b2lkIG5ldHdv
cmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApp
bmRleCA0NjZlOWZjMGY3NmY0YTlmMTQzZDA0MzI0OGIxM2RjZDQwNjhlN2MzLi5kNWZhMzI3NDRi
MGNhOGZmZjM4ZjhjMzA3YWVlZjQ3MWJiOWQ4Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3Bw
CkBAIC0yMTEsMTIgKzIxMSw5IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3Rv
cCgpCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsK
LSAgICBpZiAoIW1faXNTdG9wcGVkICYmIGdldE5ld2VzdFdvcmtlcigpICYmIGhhc0V2ZW50TGlz
dGVuZXJzKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuICFtX2lzU3RvcHBlZCAmJiBn
ZXROZXdlc3RXb3JrZXIoKSAmJiBoYXNFdmVudExpc3RlbmVycygpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCA1MTQ1NjNkY2MxZjQ5MzQ1ZWQw
MTQ4OWMyYTA5YTE2ZWYxMTJiZmRkLi5lMDBjYWU5NjYwZmEwZDM1YjRkODkxYzQwMzQyZThkM2E0
MWU5NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTc2LDkgKzc2LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25T
dGF0ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJl
VXBkYXRlRm91bmRFdmVudCgpOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFNlcnZpY2VX
b3JrZXJDb250YWluZXI+JiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogCkBA
IC05MCw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBm
aW5hbDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIG1fcmVnaXN0cmF0aW9u
RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtlckNvbnRhaW5lcj4gbV9jb250YWluZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAyYjJmN2Q5M2E3NzkxY2MyZTI4NjVl
ZTMzOGJlZTVjNTRlNmJjNzllLi4xNTI4MTU1ODI1Njk4MWE0ODM4Y2Q2MzczYjM2NzFhNWVkMDQw
YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExNzcsMTEgKzEx
NzcsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCiAK
IC8vIEFuIFhNTEh0dHBSZXF1ZXN0IG9iamVjdCBtdXN0IG5vdCBiZSBnYXJiYWdlIGNvbGxlY3Rl
ZCBpZiBpdHMgc3RhdGUgaXMgZWl0aGVyIG9wZW5lZCB3aXRoIHRoZSBzZW5kKCkgZmxhZyBzZXQs
IGhlYWRlcnMgcmVjZWl2ZWQsIG9yIGxvYWRpbmcsIGFuZAogLy8gaXQgaGFzIG9uZSBvciBtb3Jl
IGV2ZW50IGxpc3RlbmVycyByZWdpc3RlcmVkIHdob3NlIHR5cGUgaXMgb25lIG9mIHJlYWR5c3Rh
dGVjaGFuZ2UsIHByb2dyZXNzLCBhYm9ydCwgZXJyb3IsIGxvYWQsIHRpbWVvdXQsIGFuZCBsb2Fk
ZW5kLgotYm9vbCBYTUxIdHRwUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jv
b2wgWE1MSHR0cFJlcXVlc3Q6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewot
ICAgIGlmIChBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIgJiYgISht
X3VwbG9hZCAmJiBtX3VwbG9hZC0+aGFzUmVsZXZhbnRFdmVudExpc3RlbmVyKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNjQw
NWZjZGFhOGFiZDc4MDczNTMzMzIyMjVkOWE1OTI1MTRmNzUwNi4uZDU0N2M2OTZmMmQ3Y2Y3NjEz
ODQzM2EyNGIwYmFhNGQ3ZjlhOGE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTEzMCw4ICsxMzAsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhkb3VibGUpOwogCi0gICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogICAgIHVzaW5nIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92
ZXJyaWRlOwogCkBAIC0xNDksNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394980</attachid>
            <date>2020-03-30 16:14:01 -0700</date>
            <delta_ts>2020-03-30 16:37:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209754-20200330161400.patch</filename>
            <type>text/plain</type>
            <size>58528</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3YWRjZTQwZDI3OTI3
Y2IwMmQzNDUzNmY1Mjg5NjUwOWZkNjIzMi4uMTk5OGE1MzJjYTI0NGY3ZTA0MGIzYjcxZDViYWIw
NDFkYWUzNzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE92ZXJyaWRlcyBvZiBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0byBxdWVy
eSB0aGUgYmFzZSBjbGFzcydzIGhhc1BlbmRpbmdBY3Rpdml0eSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdmVycmlkZXMgb2YgQWN0aXZlRE9NT2Jq
ZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBzaG91bGQgbm90IG5lZWQgdG8gcXVlcnkgdGhlIGJh
c2UKKyAgICAgICAgY2xhc3MncyBoYXNQZW5kaW5nQWN0aXZpdHkoKS4gVGhpcyBpcyBlcnJvci1w
cm9uZSBhbmQgbGVhZHMgdG8gYmFkIGJ1Z3MuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgaXMgbm8gbG9uZ2VyIHZp
cnR1YWwgYW5kCisgICAgICAgIGNoZWNrcyBib3RoIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgYW5k
IGEgdmlydHVhbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgZnVuY3Rpb24uCisgICAgICAg
IFN1YmNsYXNzZXMgbm93IG92ZXJyaWRlIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBhbmQg
bm8gbG9uZ2VyIG5lZWQgdG8gcXVlcnkgdGhlCisgICAgICAgIGJhc2UgY2xhc3MncyB2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Np
b246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlY29yZGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNvdXJjZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRGV2aWNlczo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpoYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIGFu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9u
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkFuaW1hdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGRvbS9B
Y3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9BY3RpdmVE
T01PYmplY3QuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6aGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVS
ZWFkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgorICAg
ICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5o
OgorICAgICAgICAqIHBhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzaXplT2JzZXJ2ZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzaXplT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2Uv
U3VzcGVuZGFibGVUaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRpbWVy
QmFzZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdXNwZW5kYWJsZVRpbWVyQmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDIwLTAzLTMwICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNsZWVwIGRpc2FibGluZyBzaG91
bGQgYmUgcGVyZm9ybWVkIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXgg
NWZmNDM2ZjFmNjU5ZDI2ZjU0NzhhNjFmMDYwNzJkNGY3MWRlYThlMy4uNTgyNjBjMjhlMWZjOGNm
MWQ1OTg3M2VmZmYyMTQzYzYyNWNlMjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNzcyLDEw
ICs3NzIsMTAgQEAgU3RyaW5nIE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCku
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCi1ib29sIE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgTWVkaWFLZXlTZXNzaW9uOjp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICAvLyBBIE1lZGlhS2V5U2Vzc2lvbiBvYmplY3Qg
U0hBTEwgTk9UIGJlIGRlc3Ryb3llZCBhbmQgU0hBTEwgY29udGludWUgdG8gcmVjZWl2ZSBldmVu
dHMgaWYgaXQgaXMgbm90IGNsb3NlZCBhbmQgdGhlIE1lZGlhS2V5cyBvYmplY3QgdGhhdCBjcmVh
dGVkIGl0IHJlbWFpbnMgYWNjZXNzaWJsZS4KLSAgICByZXR1cm4gKCFtX2Nsb3NlZCAmJiBtX2tl
eXMpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJu
ICFtX2Nsb3NlZCAmJiBtX2tleXM7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlhS2V5U2Vzc2lvbjo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCBiNmFjZTM1ODll
YzhhZGNkOWE4NTA1MDhkMTFkZTM3ZTRlM2RiYmVlLi5iMmYzMWYzYjI1MGM5MmViYTgxYmJlNTdj
MzYxMGI0ODI2YTUzZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTg2LDkgKzg2LDYgQEAgcHVibGlj
OgogCiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFL
ZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKLSAg
ICAvLyBBY3RpdmVET01PYmplY3QKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
IG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdl
YWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7CiAg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImKTsKQEAgLTEwOCw3ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
Ci0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIC8vIExvZ2dlckhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggM2I2Zjc0M2Y5N2U0YmI2NDMyZTRlY2ZkMTdk
NDVkYzM4M2NkYjNjZi4uZmJlYzIwOGZiOWFiNTM4OGNiOWVjOTdhMjMyNTY1ODQ3ODZhNzNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzQsOSAr
MjM0LDkgQEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCi1ib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9u
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fa2V5
cyAmJiBtX3Nlc3Npb24pIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgcmV0dXJuIG1fa2V5cyAmJiBtX3Nlc3Npb247CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgK
aW5kZXggYTEyZjQ5NzUwZjgwMzk0YzRkNGI2N2Q5ZDIyZTdiOWQxOTc4ODNiMi4uZmY2MTY5Y2Jl
YWM2MWZlZjc5MzczMTE2YWYyYmUxN2M1Y2ZmMDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmgKQEAgLTYyLDggKzYyLDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgV2ViS2l0
TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJLaXRNZWRpYUtleXMm
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJl
ZCgpOwpAQCAtNzYsOCArNzQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
ZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgpIGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAg
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggZWFmZmU4YjExZDM5MjJkZmE3YmZlODZhZjg0MWEwZTZlMWZhNmQyYS4uM2E3
YjIyOWJmN2NlNDQ0N2RkNzA3MmU5Zjc4ZWM0N2Y1NmUyZTIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNzUsNyArNzUsNyBA
QCBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+dW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKLWJvb2wgSURCRGF0YWJhc2U6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIElEQkRhdGFiYXNlOjp2aXJ0dWFsSGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkgfHwgVGhyZWFkOjptYXlCZUdDVGhy
ZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaAppbmRleCBlYzk3MjU3MTQ5YmIxYzRlNmJjYjNkMTMzOGI5NDUwODc0ZDE5Y2VlLi40NGM5
NzkxMDBjODlmOTA1YTVmMzA4YTFmZTVmNjAzYTQzNjZmODYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTgxLDkgKzgxLDYgQEAgcHVi
bGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6cmVmOwog
ICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKLSAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzdG9wKCkgZmluYWw7Ci0KICAgICBJREJEYXRhYmFzZUluZm8mIGluZm8oKSB7IHJldHVybiBt
X2luZm87IH0KICAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKQEAgLTEwOCw4
ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5h
bDsKIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAgICB2
b2lkIHNldElzQ29udGV4dFN1c3BlbmRlZChib29sIGlzQ29udGV4dFN1c3BlbmRlZCkgeyBtX2lz
Q29udGV4dFN1c3BlbmRlZCA9IGlzQ29udGV4dFN1c3BlbmRlZDsgfQogICAgIGJvb2wgaXNDb250
ZXh0U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRleHRTdXNwZW5kZWQ7IH0KIApA
QCAtMTE4LDYgKzExMywxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRDb21taXRPckFib3J0
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisKICAgICB2b2lkIG1heWJlQ2xvc2VJblNlcnZlcigpOwogCiAgICAgUmVm
PElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5PiBtX2Nvbm5lY3Rpb25Qcm94eTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA3NGIwZjUw
NmIzOTM3OWZjZGM5YmRjNTllYmJlM2VhOWY2NDBmNzAxLi4zMmJjN2E5ZTRkODU3MDFjMGY2NjY4
YWQ2Y2Y5N2VmN2Q4ZWMzMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNvbnN0IGNoYXIqIElEQkluZGV4Ojph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklEQkluZGV4IjsKIH0KIAot
Ym9vbCBJREJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgSURCSW5kZXg6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX29iamVj
dFN0b3JlLmhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggZmQzZWY2ZjY4NTZmMDY4YTdjNDFkYjVhNjk3ZTk4
OTBjZDdmNmJkZS4uZWU3YWFjNzE3ZDI3NGY1ZTgwZmM2YWY0NmQwNDVkMjI1ZmYzYWViNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC04Niw4ICs4
Niw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqIG9iamVjdFN0b3JlQXNPcGFxdWVSb290KCkgeyBy
ZXR1cm4gJm1fb2JqZWN0U3RvcmU7IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBkb0NvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
ICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBFeGNlcHRpb25PcjxJREJLZXlSYW5nZURhdGE+KTsKQEAgLTk3LDcgKzk1LDkgQEAgcHJp
dmF0ZToKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhj
ZXB0aW9uT3I8UmVmUHRyPElEQktleVJhbmdlPj4oKT4gJiYpOwogICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGxLZXlzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBPcHRpb25h
bDx1aW50MzJfdD4gY291bnQsIFdURjo6RnVuY3Rpb248RXhjZXB0aW9uT3I8UmVmUHRyPElEQktl
eVJhbmdlPj4oKT4gJiYpOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIElEQkluZGV4SW5mbyBtX2lu
Zm87CiAgICAgSURCSW5kZXhJbmZvIG1fb3JpZ2luYWxJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDMwMzcxZGMx
ZGM5ZjYyOTY0MjIwOTMzNzUxOTExMzQ1YzYwZGMzNGUuLjRkMTYxN2M3MDNlYmRhMTlkZjVhYzFm
MzEzNjBkYzQ2Yjk3YjkzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgY29uc3QgY2hhciog
SURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAi
SURCT2JqZWN0U3RvcmUiOwogfQogCi1ib29sIElEQk9iamVjdFN0b3JlOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAorYm9vbCBJREJPYmplY3RTdG9yZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24uaGFzUGVuZGluZ0FjdGl2
aXR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaAppbmRleCA5ZWUxYjQ4N2U4MDQ1NDEwNmE0MTZiYWI2MjcxNGE4ZmNlZmU2YzZm
Li40YzE0OGJhYjA1YTJlNGUxNjRmMmE5YmFlMGQ3YjAzYjkzZjk0ZDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTExMiw4
ICsxMTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdFJlZmVyZW5jZWRJbmRleGVzKEpTQzo6
U2xvdFZpc2l0b3ImKSBjb25zdDsKICAgICB2b2lkIHJlbmFtZVJlZmVyZW5jZWRJbmRleChJREJJ
bmRleCYsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgSW5saW5lS2V5
Q2hlY2sgeyBQZXJmb3JtLCBEb05vdFBlcmZvcm0gfTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IHB1dE9yQWRkKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFJl
ZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgSW5saW5l
S2V5Q2hlY2spOwpAQCAtMTI0LDcgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBkb0dldEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgT3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlS
YW5nZT4+KCk+ICYmKTsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxs
S2V5cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKIAorICAg
IC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QgZmluYWw7CiAKICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogICAgIElEQk9iamVj
dFN0b3JlSW5mbyBtX29yaWdpbmFsSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggM2QwMjExOWM3YTUxZTFlMWZjYTBlYTJlZDRj
OWQyNWU4NzVlMDI0OS4uNTA1MjQzM2U1NTkwYTI3N2Q1ZmZhYzhjMjIxNDBmODYwM2EwYWE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
QEAgLTI1OSw3ICsyNTksNyBAQCBjb25zdCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklEQlJlcXVlc3QiOwogfQogCi1ib29sIElEQlJl
cXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIElEQlJlcXVlc3Q6OnZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG9yaWdpblRocmVhZCgpKSB8fCBUaHJlYWQ6Om1heUJl
R0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYmIG1faGFzUGVuZGlu
Z0FjdGl2aXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCmluZGV4IDI4NjYxMzQ0YjBkZTIxNzZmNWJlYWMzNjEzMTU0MGYxMjU2ZmRkZTIuLjJjZWI1
ZDNkZGEyNzE4ZWM3ZWIyMmVlMzk5ZTYzODUxNDM0NmVlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTEyNSw4ICsxMjUsNiBAQCBwdWJs
aWM6CiAKICAgICBJbmRleGVkREI6OlJlcXVlc3RUeXBlIHJlcXVlc3RUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0VHlwZTsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKLQogICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25PcGVyYXRpb25JRCh1aW50NjRf
dCB0cmFuc2FjdGlvbk9wZXJhdGlvbklEKSB7IG1fY3VycmVudFRyYW5zYWN0aW9uT3BlcmF0aW9u
SUQgPSB0cmFuc2FjdGlvbk9wZXJhdGlvbklEOyB9CiAKIHByb3RlY3RlZDoKQEAgLTE1OCw4ICsx
NTYsMTEgQEAgcHJpdmF0ZToKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisg
ICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOworCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEZvclN0b3AoKTsKIAogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggM2Q5MGIxNWQw
ODIwNzYwNjhhZGE0ODgzMjUwMTgzOWEyZmE2MTNhYS4uMjBkNjhlMGUwNDY3MTk4YTdkMTk3NzA3
Y2IwODVmMzA2NjA1NzQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzE1LDEyICszMTUsOSBAQCBjb25zdCBjaGFy
KiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
ICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKLWJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0Citib29sIElEQlRyYW5zYWN0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVh
ZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkgfHwgVGhyZWFkOjptYXlCZUdD
VGhyZWFkKCkpOwotICAgIGlmIChBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHJldHVybiAhbV9jb250ZXh0U3RvcHBlZCAm
JiBtX3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CmluZGV4IGQ0MTc3M2NjYzVkNjVmODM0NTA4MWJjZDU3YThmOWRhZDZjMzQ5NzcuLjU1YjBkMTBk
Zjc1ZmEyMjBmOGIwNjQzYzFhNzZlOGU0M2E5NjYyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtOTMsMTAgKzkzLDYgQEAg
cHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6
cmVmOwogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPjo6ZGVy
ZWY7CiAKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKLQogICAgIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0
IHsgcmV0dXJuIG1faW5mbzsgfQogICAgIElEQkRhdGFiYXNlJiBkYXRhYmFzZSgpIHsgcmV0dXJu
IG1fZGF0YWJhc2UuZ2V0KCk7IH0KICAgICBjb25zdCBJREJEYXRhYmFzZSYgZGF0YWJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CkBAIC0xNTcsOSArMTUzLDE2IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OmF0b21pYzx1bnNpZ25lZD4g
bnVtYmVyT2ZJREJUcmFuc2FjdGlvbnM7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAg
dm9pZCBzdG9wKCkgZmluYWw7CisKIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rpb24oSURCRGF0
YWJhc2UmLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mLCBJREJPcGVuREJSZXF1ZXN0Kik7CiAK
KyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBjb21taXQoKTsKIAogICAgIHZvaWQgaW50ZXJuYWxB
Ym9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGM3NDMyYjg2NjM3NTU1ZWZjZDRmNjZlOTU1MmM3NWZk
N2UwNjIyZDUuLmI1ZGViOGIzNWM4YWIxZmViNzlhYmIzZmQwZTNlZTNiZjAyNTQ0Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlci5jcHAKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIE1lZGlhUmVjb3JkZXI6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2ssIGNvbnN0CiAgICAg
bV9wcml2YXRlLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodHJhY2ssIG1lZGlhVGltZSwgYXVkaW9E
YXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXI6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIE1lZGlhUmVjb3JkZXI6OnZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fc3RhdGUgIT0gUmVjb3JkaW5nU3RhdGU6OkluYWN0
aXZlOworICAgIHJldHVybiBtX3N0YXRlICE9IFJlY29yZGluZ1N0YXRlOjpJbmFjdGl2ZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKaW5kZXggOWY4NTQ5MDU3MzdkNWY3M2Uz
MTcyMGJhODIyZGQ2YzIwNWJjNzk1Zi4uZThiYmI4NTFkZmM2MTdkZTZlMDg1NDliNzlmNmE0NDc2
NDc5N2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5oCkBAIC03NSw4ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIE1lZGlh
U3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbS5nZXQoKTsgfQogCi0gICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBNZWRpYVJl
Y29yZGVyKERvY3VtZW50JiwgUmVmPE1lZGlhU3RyZWFtPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFSZWNvcmRlclByaXZhdGU+JiYsIE9wdGlvbnMmJiA9IHsgfSk7CiAKQEAgLTk0LDYgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwogICAgIAogICAgIHZvaWQgc3RvcFJlY29yZGluZ0ludGVybmFsKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKaW5kZXggNGU0MTkzYmFiOTJjYjUyZmJiMDBjMGZhNmU4ZWMzMmQ0ODI1NDliZS4uNDAxYTM3
ZmVmOGIwYjU5YjM4NWYyZDVhMjRmZGJkZmExYjZhNTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTk3MSwxMCArOTcx
LDkgQEAgdm9pZCBNZWRpYVNvdXJjZTo6b3BlbklmSW5FbmRlZFN0YXRlKCkKICAgICBtX3ByaXZh
dGUtPnVubWFya0VuZE9mU3RyZWFtKCk7CiB9CiAKLWJvb2wgTWVkaWFTb3VyY2U6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Citib29sIE1lZGlhU291cmNlOjp2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkKLSAgICAgICAgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmlu
ZGV4IDQyNWJmOTdlODM5ZDc1Njc0MTY2Njc0YWM3ZDAwZDUxMjA3MjYyZDQuLjgzZDFjNGZkNGVh
ZTIzOTlkNTFlYzU0MmZlYjM0ZTMzZTZjYzQ1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTExMSw4ICsxMTEsNiBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRl
cmVmOwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogICAg
IHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IoKTsKICAgICBz
dGF0aWMgYm9vbCBjb250ZW50VHlwZVNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhjb25zdCBDb250
ZW50VHlwZSYpOwogCkBAIC0xMjcsOCArMTI1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9w
ZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJikgZmluYWw7CiAgICAgdm9pZCBzZWVrVG9UaW1l
KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGU3MjIyYTA2OThjNTAwOTNhMzQ4
YmI3Yjk1MDMzMDYxYmU5OWQ0MGMuLjg5NzQ0NjJjOGI4NWE2NjAzODM0MTYwOTMxZDJlY2NjNjY3
ZGQyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBNZWRpYVRpbWUgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlh
VAogICAgIHJldHVybiBzZWVrVGltZTsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFNvdXJjZUJ1ZmZlcjo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1
ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCAxMTlmZmM4YmMwMWVlMmU4MDQ3ZjZl
NTViNzJkZDc5MzY4NTI0MjcyLi5jMGRlNzc2YTMzMDc5MmZkNmE2NzRkZGEwMjM2OGNmMzA5ZmMz
ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmgKQEAgLTEzMCw4ICsxMzAsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIGhpZ2hl
c3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKSBjb25zdDsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAg
ICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApAQCAtMTQ3LDggKzE0NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKICAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5j
cHAKaW5kZXggOWIxODAzZDEyNGExZTJiNjlmMDQ4OGQxYjJmZmNlZmE2YWE5ZjNiYS4uM2I2NGRl
YzU2ZjI0ODliMWI2MTU5YmRmNGE2NGI5YTU5ODU0NDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMjQ4LDcgKzI0
OCw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKQogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQog
Ci1ib29sIE1lZGlhRGV2aWNlczo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgTWVk
aWFEZXZpY2VzOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gIWlzQ29udGV4dFN0b3BwZWQoKSAmJiBoYXNFdmVudExpc3RlbmVycyhtX2V2ZW50TmFtZXMu
ZGV2aWNlY2hhbmdlRXZlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKaW5kZXggYWY0OTBlZGNjZTE4MDQ4ODgzOTNjZjcyNjEw
ODk4ZjgzMjhlMTc2NS4uODIwN2ZjOTllODdjZDA1Y2I0ZDA3Y2U4NDc5ZTdhM2M2ZDc2MTA1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QK
ICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEuCiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYURl
dmljZXNFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggY2M3MzQ2NGUwNTU5YmIx
MDllZjViY2M1MWRlNjFmZTdhNzE5YWY2ZC4uNDkzYTQwMDA1OTExODE2MjQzZTBkODUzNTZmYzFh
YTc3MDg5MTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBjb25zdCBjaGFyKiBNZWRpYVN0
cmVhbTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJNZWRpYVN0cmVh
bSI7CiB9CiAKLWJvb2wgTWVkaWFTdHJlYW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIE1lZGlhU3RyZWFtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCAxOGU1NmU4YzRjY2U3OTExNmQ4MmY0NjI3YWE5
YmZjNWRjYjEyM2JmLi5jYjhmMTQ2MjMzOWExNWRiZGI2MmY2ZTU3ZjA2ZmFiY2M4ZWI2NTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
CkBAIC0xMDUsOSArMTA1LDYgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAgICBlbnVtIGNsYXNzIFN0cmVhbU1vZGlmaWVy
IHsgRG9tQVBJLCBQbGF0Zm9ybSB9OwogICAgIGJvb2wgaW50ZXJuYWxBZGRUcmFjayhSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiwgU3RyZWFtTW9kaWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaW50ZXJuYWxSZW1vdmVUcmFjayhjb25zdCBTdHJpbmcmLCBTdHJlYW1Nb2RpZmllcik7CkBA
IC0xNDYsNiArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgog
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlU3RhdGUoKTsKICAgICB2b2lkIGFj
dGl2aXR5RXZlbnRUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA5ZmNiNDc1NDM2M2Q0
YTY0YTMwZGMzMDRmMTJlYjk2NjY3ZjEwYjY4Li5kMGIyY2I5ZmQwYWExYmQxZjI5YWNlZGM1YjYw
OTM5Nzc0YTExY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTU5Nyw5ICs1OTcsOSBAQCB2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAg
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotYm9vbCBNZWRpYVN0cmVhbVRyYWNr
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjp2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fZW5kZWQgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gIW1fZW5k
ZWQ7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhU3RyZWFtVHJhY2s6OmF1ZGlvU291
cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCA1MzkwN2FiMDk4NzhjMzhjZTQ2MGMwMTUxOTcy
YzAyYjFkMGExZDZlLi4wMmZkNDU0YjZhMWRhM2M1NGJkYTNiMjA0OWU4ZTAzZjdjYWNkYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaApAQCAtMTQ5LDkgKzE0OSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICAvLyBBY3RpdmVE
T01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
Ci0KICAgICB2b2lkIHNldElkRm9yVGVzdGluZyhTdHJpbmcmJiBpZCkgeyBtX3ByaXZhdGUtPnNl
dElkRm9yVGVzdGluZyhXVEZNb3ZlKGlkKSk7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0OwpAQCAtMTc3LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmlu
YWwgeyBzdG9wVHJhY2soKTsgfQogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7
IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGFhYWJjMDkyYzhkZGRlM2I0NTUyNDA3NmMz
YzE5MjFlZWVhMzJlODguLjBjMjczMGY1ZDA4OTAxNThjOWJkMGI5MjI3ZTUyMjNjYjk3YjQ2YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCkBAIC01MzAsMTUgKzUzMCwxMSBAQCB2b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpyZXN1bWUoKQogICAgIH0pOwogfQogCi1ib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBSVENQZWVyQ29ubmVjdGlvbjo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB3ZSBoYXZl
IHBlbmRpbmcgcHJvbWlzZXMgdG8gYmUgcmVzb2x2ZWQuCi0gICAgaWYgKEFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgLy8g
QXMgbG9uZyBhcyB0aGUgY29ubmVjdGlvbiBpcyBub3Qgc3RvcHBlZCBhbmQgaXQgaGFzIGV2ZW50
IGxpc3RlbmVycywgaXQgbWF5IGRpc3BhdGNoIGV2ZW50cy4KICAgICByZXR1cm4gaGFzRXZlbnRM
aXN0ZW5lcnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCA5ZWU3ZGU2YjUyYjM3ODliMzIzNTljZWVm
YzZiYzEyZjE4ZmQ0NGI3Li5mZjBiNjg2MGU5MDcxMDc4MzM4ZTU4YzY0MGU5MTNhNzZiYWNhZGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCkBAIC0xNzIsOSArMTcyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhckNvbnRyb2xsZXIoKSB7IG1fY29udHJvbGxlciA9IG51bGxwdHI7IH0KIAotICAgIC8vIEFj
dGl2ZURPTU9iamVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwotICAgIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpOwogCiAgICAgdm9pZCBkb1Rhc2soRnVu
Y3Rpb248dm9pZCgpPiYmKTsKQEAgLTIxMiw2ICsyMDksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CiAgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsK
KyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAg
IHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IDY1MjE5YWM2YzhjOWM0
NzMzOTQ5Njk4M2FmMjRlYmEzM2U4NGYwMmEuLmEyODI2Yzc5YTU2OGI1N2JmOTliNGZmOGQ4YWZh
ZjI4OGM2ODg5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CkBAIC0xMjY5LDEwICsxMjY5LDEwIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzdG9wKCkKICAgICBy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogfQogCi1ib29sIFdlYkFuaW1hdGlvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgV2ViQW5pbWF0aW9uOjp2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICAvLyBLZWVwIHRoZSBKUyB3cmFwcGVyIGFsaXZlIGlm
IHRoZSBhbmltYXRpb24gaXMgY29uc2lkZXJlZCByZWxldmFudCBvciBjb3VsZCBiZWNvbWUgcmVs
ZXZhbnQgYWdhaW4gYnkgdmlydHVlIG9mIGhhdmluZyBhIHRpbWVsaW5lLgotICAgIHJldHVybiBt
X3RpbWVsaW5lIHx8IG1faXNSZWxldmFudCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpOworICAgIHJldHVybiBtX3RpbWVsaW5lIHx8IG1faXNSZWxldmFudDsKIH0KIAog
dm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZVJlbGV2YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmgKaW5kZXggZDcwYzJmMjAwNDFjYTI3NWVhZjBmNDdjOTA3ZjQ2ZTU4
ZDc3NTI4Yy4uZDFiZDgxMDhiZmM3OGNlMzA5NzVkNGVhNmRkN2I3NTMzNGEzYWEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtMTM5LDggKzEzOSw2IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsUG9zaXRpb247IH0KICAgICB2b2lkIHNldEdsb2JhbFBvc2l0aW9uKHVpbnQ2NF90IGdsb2Jh
bFBvc2l0aW9uKSB7IG1fZ2xvYmFsUG9zaXRpb24gPSBnbG9iYWxQb3NpdGlvbjsgfQogCi0gICAg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlR2xvYmFsUG9zaXRpb24oKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci4KQEAgLTIxMiw2ICsyMTAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKICAgICB2b2lkIHJlc3Vt
ZSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFdlYkFuaW1hdGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKaW5kZXggNjVkOWFjZGRiMGIyNjdmYWM1MWQ0NDU1MDliZTVlZGFiYWJlMGRm
Yy4uYTUyNTA2MTE2NGE0MDViMGFmZjVmZWVmYjM0ZjdiMDgyYTkxYjFjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCkBAIC00ODYsMTAgKzQ4Niw4IEBAIGNvbnN0IGNoYXIqIEZvbnRGYWNlOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkZvbnRGYWNlIjsKIH0KIAot
Ym9vbCBGb250RmFjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgRm9udEZhY2U6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIGlmIChBY3RpdmVET01P
YmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBy
ZXR1cm4gIWlzQ29udGV4dFN0b3BwZWQoKSAmJiBtX21heUxvYWRlZFByb21pc2VCZVNjcmlwdE9i
c2VydmFibGUgJiYgIW1fbG9hZGVkUHJvbWlzZS0+aXNGdWxmaWxsZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaAppbmRleCBiNjVjMmQ1ZTc5ZTMwODg0YjczOTI2YTQ1YmE3MDk1NTFiNjZiOTBj
Li40NGNhNmQ1ODg1YzNjODE1OTFmNjM4ZWRjZDk3NjM5NjE2N2UxMDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaApAQCAtOTIsMTMgKzkyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGZpbmFs
IHsgUmVmQ291bnRlZDo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBSZWZDb3Vu
dGVkOjpkZXJlZigpOyB9CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYp
OwogICAgIGV4cGxpY2l0IEZvbnRGYWNlKENTU0ZvbnRGYWNlJik7CiAKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgLy8gQ2FsbGJhY2sgZm9yIExvYWRlZFByb21pc2UuCiAgICAgRm9udEZhY2UmIGxvYWRl
ZFByb21pc2VSZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGZkNDNmYTlhOWM3MzVlYzlkNzg0MTIyYTdlN2Y5ODY2MmJlNTE1ZTYuLjViNzliZjkyMGI3
N2FkMGNkZTg0ZjBiMjllNTc5OTdlZDg4YTFiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCkBAIC0xMDYsMTEgKzEwNiw2IEBAIHZvaWQgQWN0aXZlRE9NT2JqZWN0Ojph
c3NlcnRTdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQoKSBjb25zdAogCiAjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAotYm9vbCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7Ci19Ci0KIHZvaWQgQWN0
aXZlRE9NT2JqZWN0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCiB7CiB9CkBAIC0xNDks
MTMgKzE0NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV90YXJnZXQodGFyZ2V0KQogICAgICAg
ICAsIG1fZXZlbnQoV1RGTW92ZShldmVudCkpCiAgICAgewotICAgICAgICArK21fb2JqZWN0Lm1f
cGVuZGluZ0FjdGl2aXR5Q291bnQ7CisgICAgICAgICsrbV9vYmplY3QubV9wZW5kaW5nQWN0aXZp
dHlJbnN0YW5jZXNDb3VudDsKICAgICB9CiAKICAgICB+QWN0aXZlRE9NT2JqZWN0RXZlbnREaXNw
YXRjaFRhc2soKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2JqZWN0Lm1fcGVuZGluZ0FjdGl2
aXR5Q291bnQpOwotICAgICAgICAtLW1fb2JqZWN0Lm1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7Cisg
ICAgICAgIEFTU0VSVChtX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlc0NvdW50KTsK
KyAgICAgICAgLS1tX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlc0NvdW50OwogICAg
IH0KIAogICAgIHZvaWQgZXhlY3V0ZSgpIGZpbmFsIHsgbV90YXJnZXQtPmRpc3BhdGNoRXZlbnQo
bV9ldmVudC5nZXQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCAw
ZDBiYTE1ODg1MTA3OTkxMDdmOGIzZDFlZjgxODg5NTc2NWRiOTk0Li5lMzJjMDg0OTY1ZjY0NjA3
NGNmM2Q1MzAxOWU3Njk5NTM1NTkwODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVj
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRJZk5lZWRlZCgp
OwogICAgIHZvaWQgYXNzZXJ0U3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNl
c0NvdW50IHx8IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKTsgfQogCiAgICAgLy8gSG93ZXZl
ciwgdGhlIHN1c3BlbmQgZnVuY3Rpb24gd2lsbCBzb21ldGltZXMgYmUgY2FsbGVkIGV2ZW4gaWYg
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIHJldHVybnMgZmFsc2UuCiAgICAgLy8g
VGhhdCBoYXBwZW5zIGluIHN0ZXAtYnktc3RlcCBKUyBkZWJ1Z2dpbmcgZm9yIGV4YW1wbGUgLSBp
biB0aGlzIGNhc2UgaXQgd291bGQgYmUgaW5jb3JyZWN0CkBAIC03MywxNyArNzMsMjEgQEAgcHVi
bGljOgogICAgIC8vIEl0IGNhbiwgaG93ZXZlciwgaGF2ZSBhIHNpZGUgZWZmZWN0IG9mIGRlbGV0
aW5nIGFuIEFjdGl2ZURPTU9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCisgICAg
Ly8gRklYTUU6IERyb3AgdGhpcyBtZXRob2QuCisgICAgLy8gQ2FsbCBzaXRlcyBzaG91bGQgYmUg
dXNpbmcgbWFrZVBlbmRpbmdBY3Rpdml0eSgpIG9yIG92ZXJyaWRpbmcgdmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSgpIGluc3RlYWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZXRQ
ZW5kaW5nQWN0aXZpdHkoVCYgdGhpc09iamVjdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgmdGhp
c09iamVjdCA9PSB0aGlzKTsKICAgICAgICAgdGhpc09iamVjdC5yZWYoKTsKLSAgICAgICAgKytt
X3BlbmRpbmdBY3Rpdml0eUNvdW50OworICAgICAgICArK21fcGVuZGluZ0FjdGl2aXR5SW5zdGFu
Y2VzQ291bnQ7CiAgICAgfQogCisgICAgLy8gRklYTUU6IERyb3AgdGhpcyBtZXRob2QuCisgICAg
Ly8gQ2FsbCBzaXRlcyBzaG91bGQgYmUgdXNpbmcgbWFrZVBlbmRpbmdBY3Rpdml0eSgpIG9yIG92
ZXJyaWRpbmcgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGluc3RlYWQuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCB1bnNldFBlbmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX3BlbmRpbmdBY3Rpdml0eUNvdW50OworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQWN0
aXZpdHlJbnN0YW5jZXNDb3VudCA+IDApOworICAgICAgICAtLW1fcGVuZGluZ0FjdGl2aXR5SW5z
dGFuY2VzQ291bnQ7CiAgICAgICAgIHRoaXNPYmplY3QuZGVyZWYoKTsKICAgICB9CiAKQEAgLTkz
LDEzICs5NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBlbmRpbmdBY3Rpdml0eShU
JiB0aGlzT2JqZWN0KQogICAgICAgICAgICAgOiBtX3RoaXNPYmplY3QodGhpc09iamVjdCkKICAg
ICAgICAgewotICAgICAgICAgICAgKysobV90aGlzT2JqZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUNv
dW50KTsKKyAgICAgICAgICAgICsrKG1fdGhpc09iamVjdC0+bV9wZW5kaW5nQWN0aXZpdHlJbnN0
YW5jZXNDb3VudCk7CiAgICAgICAgIH0KIAogICAgICAgICB+UGVuZGluZ0FjdGl2aXR5KCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fdGhpc09iamVjdC0+bV9wZW5kaW5nQWN0aXZp
dHlDb3VudCA+IDApOwotICAgICAgICAgICAgLS0obV90aGlzT2JqZWN0LT5tX3BlbmRpbmdBY3Rp
dml0eUNvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3RoaXNPYmplY3QtPm1fcGVuZGluZ0Fj
dGl2aXR5SW5zdGFuY2VzQ291bnQgPiAwKTsKKyAgICAgICAgICAgIC0tKG1fdGhpc09iamVjdC0+
bV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZXNDb3VudCk7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6CkBAIC0xMzksMTAgKzE0MywxNCBAQCBwcml2YXRlOgogICAgIGVudW0gQ2hlY2tlZFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRUeXBlIHsgQ2hlY2tlZFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfTsK
ICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIENoZWNrZWRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VHlwZSk7CiAKKyAgICAvLyBUaGlzIGlzIHVzZWQgYnkgc3ViY2xh
c3NlcyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkgaGF2ZSBwZW5kaW5nIGFjdGl2aXR5LCBtZWFuaW5n
IHRoYXQgdGhleSB3b3VsZAorICAgIC8vIGxpa2UgdGhlIEpTIHdyYXBwZXIgdG8gc3RheSBhbGl2
ZSAoYmVjYXVzZSB0aGV5IG1heSBzdGlsbCBmaXJlIEpTIGV2ZW50cykuCisgICAgdmlydHVhbCBi
b29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
CiAgICAgdm9pZCBxdWV1ZVRhc2tJbkV2ZW50TG9vcChUYXNrU291cmNlLCBGdW5jdGlvbjx2b2lk
ICgpPiYmKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50
VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsKIAotICAgIHVuc2lnbmVkIG1fcGVu
ZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9wZW5kaW5nQWN0aXZpdHlJ
bnN0YW5jZXNDb3VudCB7IDAgfTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9zdXNw
ZW5kSWZOZWVkZWRXYXNDYWxsZWQgeyBmYWxzZSB9OwogICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRp
b25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKaW5kZXggNjg5ZmY1MGIxZTdhYTlkY2U2ZmMxY2Q0NDdlMzNiMmQ3MDMzZjRiYi4uOGJkMzM5
NGViZjMyOTJlOTZkZWU2MDQ4NjhiNWQ4NmM0Nzc5NTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6dXBkYXRlQWN0
aXZpdHkoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGkKICAg
ICBtX2lzQXNraW5nUmVtb3RlQWJvdXRHQyA9IGZhbHNlOwogfQogCi1ib29sIE1lc3NhZ2VQb3J0
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZXNzYWdlUG9ydDo6dmlydHVhbEhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgbV9taWdodEJlRWxpZ2libGVGb3JHQyA9
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggNjY4ZDViNDYxOGJlYTdkOTg5
ZWI3NjA5NmRhNjBmZWQ2Mjk0ODExNi4uYWFjYTQ4OTVkYTFiZjZiOGUyYjA3MGY0NTBlYjIwMjk2
NzdkYTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTgyLDEyICs4Miw2IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZigpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGVyZWYoKSBjb25zdDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IGNsb3Nl
KCk7IH0KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUoKSBjb25zdDsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEuCkBAIC0xMDQsNiArOTgsMTIgQEAgcHJpdmF0ZToK
ICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5h
bDsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgZmluYWw7CiAKKyAg
ICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7CisgICAg
dm9pZCBzdG9wKCkgZmluYWwgeyBjbG9zZSgpOyB9CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIGRpc2VudGFuZ2xlKCk7CiAKICAg
ICB2b2lkIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlci5jcHAKaW5kZXggMDI5MjVjMzdlZTkzMjk4ODBiYmZmMTE1MTQwYzJmYTlkYzllMjMwYS4u
Mzc0MTQyYWU2NzRjMjI2MTlmYWNhZTZiNzFmNWI2NTQzNWQwZjUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC04MSw5ICs4MSw5IEBAIHZvaWQgRmlsZVJlYWRlcjo6
c3RvcCgpCiAgICAgbV9zdGF0ZSA9IERPTkU7CiB9CiAKLWJvb2wgRmlsZVJlYWRlcjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgRmlsZVJlYWRlcjo6dmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTE9BRElORyB8fCBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX3N0YXRlID09
IExPQURJTkc7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEZpbGVSZWFkZXI6OnJlYWRBc0FycmF5
QnVmZmVyKEJsb2IqIGJsb2IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IGU3
YzkyMjJjMjY4NGZlYWUxMTNhNWViMDE1MTUwMTdhZGUzODAwMWYuLjE5MGNjOThjNWM4NmVkNDc0
MTljMmZhNDM1N2EwOTk2M2M5ODg3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5o
CkBAIC03NiwxNSArNzYsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsK
ICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
LSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRmlsZVJlYWRl
ckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDVlMGNmZmZkNGM4YzM4OTFjYTE1NjRlNjVlY2FkNTQ4
YmVjMzgxOS4uNzQyMDUxMGRhZGRlYjQwNmFhZDhlNzE0NWQxY2FjZGRhYjkyZThmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NzYyLDcgKzU3NjIsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAgICAgdXBkYXRlUmVuZGVyZXIoKTsK
IH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpIHx8IG1fYXN5bmNFdmVu
dFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgbV9wbGF5YmFja1RhcmdldElzV2lyZWxlc3NR
dWV1ZS5oYXNQZW5kaW5nVGFza3MoKSB8fCBtX2NyZWF0aW5nQ29udHJvbHM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgzNTM4MDc5YWMxYmNkODUwMTI3NGU2
MDJhOWE4ODZmNmRjNWY4MDUuLmZjZDhlZGZhYmMyODU4NjI0MzkyMDIyNzkzODNhMDgzMmRkOGQy
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NjIsOCArNDYy
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXlpbmc7IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZSogYXVkaW9Tb3VyY2VOb2RlKCkgeyByZXR1cm4gbV9hdWRpb1NvdXJjZU5vZGU7IH0KICAgICB2
b2lkIHNldEF1ZGlvU291cmNlTm9kZShNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUqKTsKQEAg
LTY0NCw2ICs2NDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RvcCgpIG92ZXJyaWRlOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXll
cigpOwogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggNjdmNzY2ZWUwZWFhZTM5MGVi
ZjJlYzc5NDY4MWQwODFjOTZhNTU3NC4uYWZhN2M2NjNjZGVmYjhiOTQ2NjU1ZGViODMzYTg1YTQw
NTU2MTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC0z
NTEsMTEgKzM1MSw4IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZXZlbnRMaXN0ZW5lcnNEaWRD
aGFuZ2UoKQogICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubG9hZEV2
ZW50KTsKIH0KIAotYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAorYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICBpZiAoQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gbV9oYXNSZWxldmFudExvYWRFdmVu
dHNMaXN0ZW5lciAmJiByZWFkeVN0YXRlKCkgPT0gSFRNTFRyYWNrRWxlbWVudDo6TE9BRElORzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAppbmRleCA3NTY5MDNmMDVh
NzkzYjc1MDgzMjY1NDhlNjY2ODE3MWEzMGUzNWIzLi40MzRmMjE0ZGFlOGU2ZDlhYWMyNTlhZWFh
Y2I0YTc5YjJlNmFiN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaApA
QCAtNjIsMTUgKzYyLDEzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4g
bWVkaWFFbGVtZW50KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbWVkaWFFbGVtZW50
Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
LSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgog
ICAgIEhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAg
ICAgdmlydHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NGEzMzg0M2RlOTQ2NzVmODgxMzg0MjJj
N2JkMDVhMjk5MjNhNmVjLi45NDI5MmUzN2M2YmM5ODNlN2Q5NjQ3ZWQwODcxMzJhNmI1ZTg2OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTU1MiwxMSArNTU1Miw2IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAgICAgfQogfQog
Ci1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnN0b3AoKQogewogICAgIGlmICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGlu
Z1BvbGljeVJlc29sdXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAyMGQ5NWY5NDkwMjFkMzBlMTY5
MWVhNTkxYTE5ZDNjNTQyYWViZGY4Li5kNzBjYjI1ODkxOGI5ZjFiMDZkNmQxMzY5OGVhM2I0ZTY2
MWViNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zNzMsOSArMzczLDYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVjeWNsZUNvbnRleHQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENo
YW5nZWROb3RpZmljYXRpb24oKSBvdmVycmlkZTsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAot
ICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByb3RlY3RlZDoK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBS
ZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKaW5kZXggNTg1OGNm
M2FmMGIyMTc4ZGVkMDhmMzIzYzRmMmYyNmE2YWI0NTA2NC4uOThjMDU3ZWY2Y2FkOGJmNjA4NDJh
YzI1MTRlYmNjMGViNjcyNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
TGlzdEJhc2UuY3BwCkBAIC0xNzcsOSArMTc3LDkgQEAgYm9vbCBUcmFja0xpc3RCYXNlOjppc0Fu
eVRyYWNrRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRyYWNr
TGlzdEJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFRyYWNrTGlzdEJhc2U6
OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBBY3RpdmVE
T01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQ
ZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5n
RXZlbnRzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggYTVjODg3ODFkYzljNDI2NzcxNmVlZDYxNmQ5
MWFhNmY5NDdhZDQxYi4uNGEzY2M5YWFlZDM1YTA5ZjE0MzhiZTExNTI0OWVkYmIzNzkyMTU1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTY1LDggKzY1
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0OwogCi0g
ICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLQogcHJvdGVjdGVk
OgogICAgIFRyYWNrTGlzdEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCkBAIC03OCw2ICs3Niw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1l
LCBSZWY8VHJhY2tCYXNlPiYmKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAgICBib29s
IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggMGFlOTEwYjRmOWU2NzRh
YjEwNGZkNGQzNjcwYTY2ODY3ZjhkNjM1ZS4uMGM5NzU2NTI4NGU0ZjcyNWI2NTliODZhNGNjOGJh
OTJhMDdmNzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjpub3Rp
ZnkoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJh
Y2soKmNvbnRleHQpOwogfQogCi1ib29sIEludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAorYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChoYXNPYnNlcnZhdGlvblRhcmdl
dHMoKSAmJiB0cmFja2luZ0RvY3VtZW50KCkpIHx8ICFtX3F1ZXVlZEVudHJpZXMuaXNFbXB0eSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCmluZGV4IDE3
YWMyZmVlMTg0NGIwNTVlNzYwMThiZTI2Zjk5Mjc1NDdhN2U1MzkuLjFjMDhhNGVjZjM1MTZiYmFj
NWU2NDVhMDU4YmZkNzNiZjgzYzBhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgc3RydWN0IEludGVyc2VjdGlvbk9ic2Vy
dmVyRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgLy8g
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJzIGZvciB3aGljaCB0aGUgbm9kZSB0aGF0IG93bnMgdGhpcyBJ
bnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgaXMgdGhlIHJvb3QuCi0gICAgLy8gQW4gSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIgaXMgb25seSBvd25lZCBieSBhIEphdmFTY3JpcHQgd3JhcHBlci4gQWN0aXZl
RE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkKKyAgICAvLyBBbiBJbnRlcnNlY3Rpb25PYnNl
cnZlciBpcyBvbmx5IG93bmVkIGJ5IGEgSmF2YVNjcmlwdCB3cmFwcGVyLiBBY3RpdmVET01PYmpl
Y3Q6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkKICAgICAvLyBpcyBvdmVycmlkZGVuIHRvIGtl
ZXAgdGhpcyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZSBvYnNlcnZlciBoYXMgb25nb2luZyBvYnNl
cnZhdGlvbnMuCiAgICAgVmVjdG9yPFdlYWtQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBvYnNl
cnZlcnM7CiAKQEAgLTk5LDE0ICs5OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRRdWV1
ZWRFbnRyeShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4mJik7CiAgICAgdm9pZCBub3Rp
ZnkoKTsKIAorcHJpdmF0ZToKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYsIFJl
ZjxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrPiYmLCBDb250YWluZXJOb2RlKiByb290LCBM
ZW5ndGhCb3gmJiBwYXJzZWRSb290TWFyZ2luLCBWZWN0b3I8ZG91YmxlPiYmIHRocmVzaG9sZHMp
OworCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCi1wcml2YXRlOgotICAg
IEludGVyc2VjdGlvbk9ic2VydmVyKERvY3VtZW50JiwgUmVmPEludGVyc2VjdGlvbk9ic2VydmVy
Q2FsbGJhY2s+JiYsIENvbnRhaW5lck5vZGUqIHJvb3QsIExlbmd0aEJveCYmIHBhcnNlZFJvb3RN
YXJnaW4sIFZlY3Rvcjxkb3VibGU+JiYgdGhyZXNob2xkcyk7Ci0KICAgICBib29sIHJlbW92ZVRh
cmdldFJlZ2lzdHJhdGlvbihFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVBbGxUYXJnZXRzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKaW5kZXggNjUwN2ZhZTIxZDM5
ZGI5ZDdjNmExMTFmMzAzMjEwNGM1NTMwYjViMC4uMDE5MjBiMDJjZWI1Mjc1ZGExYTczOGFjM2Qx
MjRmNzkxYzNhNTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCBib29sIFJlc2l6ZU9ic2VydmVyOjpyZW1vdmVPYnNlcnZhdGlvbihj
b25zdCBFbGVtZW50JiB0YXJnZXQpCiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzaXplT2JzZXJ2ZXI6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFJlc2l6ZU9ic2VydmVyOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gKGhhc09ic2VydmF0aW9u
cygpICYmIG1fZG9jdW1lbnQpIHx8ICFtX2FjdGl2ZU9ic2VydmF0aW9ucy5pc0VtcHR5KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXggNjljYWM4OGM4YzFhZWE0YWMx
NDJhNGZlYmJmYTM5ZGQ2MWRjYzFjYi4uNjA5ZTcwYzAxNDZjNTUwZGI1MWY4ZTNlYWJkN2U0YTc3
NWVhNGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNjQsMTQgKzY0
LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NraXBwZWRPYnNlcnZhdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2hhc1NraXBwZWRPYnNlcnZhdGlvbnM7IH0KICAgICB2b2lkIHNldEhhc1NraXBw
ZWRPYnNlcnZhdGlvbnMoYm9vbCBza2lwcGVkKSB7IG1faGFzU2tpcHBlZE9ic2VydmF0aW9ucyA9
IHNraXBwZWQ7IH0KIAorcHJpdmF0ZToKKyAgICBSZXNpemVPYnNlcnZlcihEb2N1bWVudCYsIFJl
ZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsKKwogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
LSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKIAotcHJpdmF0ZToKLSAgICBSZXNpemVPYnNlcnZlcihEb2N1bWVudCYsIFJl
ZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsKLQogICAgIGJvb2wgcmVtb3ZlVGFyZ2V0KEVs
ZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFRhcmdldHMoKTsKICAgICBib29sIHJlbW92ZU9i
c2VydmF0aW9uKGNvbnN0IEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxl
VGltZXIuY3BwCmluZGV4IDg0NGUwMDFhY2E2YzQ2ZjdlZjVjNGQ3MzlmODA1MjA5ZmIwOTcxMzIu
LjU1N2Y3OWMxNjRkOTlmNzIxOGI5NTNjMTFhMDZmNzljMDE3YTQ4YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBTdXNwZW5kYWJs
ZVRpbWVyQmFzZTo6U3VzcGVuZGFibGVUaW1lckJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKIAogU3VzcGVuZGFibGVUaW1lckJhc2U6On5TdXNwZW5kYWJsZVRpbWVyQmFzZSgp
ID0gZGVmYXVsdDsKIAotYm9vbCBTdXNwZW5kYWJsZVRpbWVyQmFzZTo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKK2Jvb2wgU3VzcGVuZGFibGVUaW1lckJhc2U6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBpc0FjdGl2ZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCAzYmU2MmU0ZjBhNWJlYzczZmYyNzU3ODQ5
ZmUwNWVlMzY3YzExMWQ2Li5jNTliYjI1ZTI1ZDU5YTM3Y2Q2NmNiNmI3NWM4N2VkZDNiMzM4ZGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmlu
YWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNp
b24pIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAKaW5kZXggYzNjYmQ5MzQ2NjBlOGYzOWE2MTFjZThiMzYyOGY0OWQ0NjY3ZjMxMC4uODA4
MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMyMzMwMGUxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcApAQCAtMTc1LDkgKzE3NSw5IEBAIHZvaWQgV29ya2VyOjpyZXN1bWUoKQogICAg
IH0KIH0KIAotYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFdv
cmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Y29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdB
Y3Rpdml0eSgpOwogfQogCiB2b2lkIFdvcmtlcjo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbkxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA2NmM2OGI1YmU3NTY0YTFh
YzYyZmVkM2QwZGEzOWQ2ZDA4NmY2YTI3Li5mZmI2OWM1YjY5N2M2NmY2Y2RhMTU5NGVjMTY0ODZi
YjZlZmY3YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTYzLDggKzYzLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgYm9vbCB3YXNUZXJtaW5hdGVkKCkgY29u
c3QgeyByZXR1cm4gbV93YXNUZXJtaW5hdGVkOyB9CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtODEsMTAgKzc5LDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgp
IGZpbmFsOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgpIGZpbmFs
OwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKICAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBm
aW5hbDsKIAogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGlu
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA0NjZlOWZjMGY3NmY0YTlmMTQzZDA0
MzI0OGIxM2RjZDQwNjhlN2MzLi5kNWZhMzI3NDRiMGNhOGZmZjM4ZjhjMzA3YWVlZjQ3MWJiOWQ4
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yMTEsMTIgKzIxMSw5IEBAIHZvaWQg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3RvcCgpCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp2aXJ0dWFs
SGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1faXNTdG9wcGVkICYmIGdl
dE5ld2VzdFdvcmtlcigpICYmIGhhc0V2ZW50TGlzdGVuZXJzKCkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgcmV0dXJuICFtX2lzU3RvcHBlZCAmJiBnZXROZXdlc3RXb3JrZXIoKSAmJiBoYXNFdmVu
dExpc3RlbmVycygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaAppbmRleCA1MTQ1NjNkY2MxZjQ5MzQ1ZWQwMTQ4OWMyYTA5YTE2ZWYxMTJiZmRkLi5lMDBj
YWU5NjYwZmEwZDM1YjRkODkxYzQwMzQyZThkM2E0MWU5NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LmgKQEAgLTc2LDkgKzc2LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3RhdGVGcm9tU2Vy
dmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+
JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudCgpOwogCi0gICAg
Ly8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUmVmPFNlcnZpY2VXb3JrZXJDb250YWluZXI+JiYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogCkBAIC05MCw2ICs4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIHZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhIG1fcmVnaXN0cmF0aW9uRGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtl
ckNvbnRhaW5lcj4gbV9jb250YWluZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCAyYjJmN2Q5M2E3NzkxY2MyZTI4NjVlZTMzOGJlZTVjNTRlNmJjNzllLi4xNTI4MTU1
ODI1Njk4MWE0ODM4Y2Q2MzczYjM2NzFhNWVkMDQwYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKQEAgLTExNzcsMTEgKzExNzcsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCiAKIC8vIEFuIFhNTEh0dHBSZXF1ZXN0IG9iamVj
dCBtdXN0IG5vdCBiZSBnYXJiYWdlIGNvbGxlY3RlZCBpZiBpdHMgc3RhdGUgaXMgZWl0aGVyIG9w
ZW5lZCB3aXRoIHRoZSBzZW5kKCkgZmxhZyBzZXQsIGhlYWRlcnMgcmVjZWl2ZWQsIG9yIGxvYWRp
bmcsIGFuZAogLy8gaXQgaGFzIG9uZSBvciBtb3JlIGV2ZW50IGxpc3RlbmVycyByZWdpc3RlcmVk
IHdob3NlIHR5cGUgaXMgb25lIG9mIHJlYWR5c3RhdGVjaGFuZ2UsIHByb2dyZXNzLCBhYm9ydCwg
ZXJyb3IsIGxvYWQsIHRpbWVvdXQsIGFuZCBsb2FkZW5kLgotYm9vbCBYTUxIdHRwUmVxdWVzdDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgWE1MSHR0cFJlcXVlc3Q6OnZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIGlmIChBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghbV9o
YXNSZWxldmFudEV2ZW50TGlzdGVuZXIgJiYgIShtX3VwbG9hZCAmJiBtX3VwbG9hZC0+aGFzUmVs
ZXZhbnRFdmVudExpc3RlbmVyKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNjQwNWZjZGFhOGFiZDc4MDczNTMzMzIyMjVkOWE1
OTI1MTRmNzUwNi4uZDU0N2M2OTZmMmQ3Y2Y3NjEzODQzM2EyNGIwYmFhNGQ3ZjlhOGE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEzMCw4ICsxMzAsNiBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyhkb3VibGUpOwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKLQogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAg
IHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCkBAIC0xNDksNiArMTQ3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgp
IG92ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394984</attachid>
            <date>2020-03-30 16:37:16 -0700</date>
            <delta_ts>2020-03-30 17:25:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209754-20200330163716.patch</filename>
            <type>text/plain</type>
            <size>58534</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3YWRjZTQwZDI3OTI3
Y2IwMmQzNDUzNmY1Mjg5NjUwOWZkNjIzMi4uNDM1MjlmNDhjMDNhZWY5ZjU2YmIwNGIxNzI4ZDNl
N2RhNWI5OWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0wMy0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE92ZXJyaWRlcyBvZiBBY3Rp
dmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHNob3VsZCBub3QgbmVlZCB0byBxdWVy
eSB0aGUgYmFzZSBjbGFzcydzIGhhc1BlbmRpbmdBY3Rpdml0eSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZiBHYXJlbiBhbmQgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgT3ZlcnJpZGVzIG9m
IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgc2hvdWxkIG5vdCBuZWVkIHRv
IHF1ZXJ5IHRoZSBiYXNlCisgICAgICAgIGNsYXNzJ3MgaGFzUGVuZGluZ0FjdGl2aXR5KCkuIFRo
aXMgaXMgZXJyb3ItcHJvbmUgYW5kIGxlYWRzIHRvIGJhZCBidWdzLgorCisgICAgICAgIFRvIGFk
ZHJlc3MgdGhlIGlzc3VlLCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGlz
IG5vIGxvbmdlciB2aXJ0dWFsIGFuZAorICAgICAgICBjaGVja3MgYm90aCBtX3BlbmRpbmdBY3Rp
dml0eUNvdW50IGFuZCBhIHZpcnR1YWwgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGZ1bmN0
aW9uLgorICAgICAgICBTdWJjbGFzc2VzIG5vdyBvdmVycmlkZSB2aXJ0dWFsSGFzUGVuZGluZ0Fj
dGl2aXR5KCkgYW5kIG5vIGxvbmdlciBuZWVkIHRvIHF1ZXJ5IHRoZQorICAgICAgICBiYXNlIGNs
YXNzJ3MgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpLgorCisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXI6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rp
dml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6aGFzUGVuZGluZ0Fj
dGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFj
azo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkFuaW1hdGlvbjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGNzcy9G
b250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaDoKKyAg
ICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2
ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVy
Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVSZWFkZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpcnR1YWxIYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aGFz
UGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aGFzUGVuZGluZ0Fj
dGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlz
dEJhc2UuaDoKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc2l6ZU9ic2VydmVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc2l6ZU9ic2VydmVyOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUmVzaXplT2JzZXJ2ZXIuaDoKKyAg
ICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vz
cGVuZGFibGVUaW1lckJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lckJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjp2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6
aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAyMC0wMy0zMCAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBTbGVlcCBk
aXNhYmxpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCmluZGV4IDVmZjQzNmYxZjY1OWQyNmY1NDc4YTYxZjA2MDcyZDRmNzFkZWE4ZTMuLjU4
MjYwYzI4ZTFmYzhjZjFkNTk4NzNlZmZmMjE0M2M2MjVjZTIwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKQEAgLTc3MiwxMCArNzcyLDEwIEBAIFN0cmluZyBNZWRpYUtleVNlc3Npb246Om1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAotYm9vbCBNZWRpYUtleVNl
c3Npb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIE1lZGlhS2V5U2Vzc2lvbjo6
dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgLy8gQSBNZWRpYUtleVNl
c3Npb24gb2JqZWN0IFNIQUxMIE5PVCBiZSBkZXN0cm95ZWQgYW5kIFNIQUxMIGNvbnRpbnVlIHRv
IHJlY2VpdmUgZXZlbnRzIGlmIGl0IGlzIG5vdCBjbG9zZWQgYW5kIHRoZSBNZWRpYUtleXMgb2Jq
ZWN0IHRoYXQgY3JlYXRlZCBpdCByZW1haW5zIGFjY2Vzc2libGUuCi0gICAgcmV0dXJuICghbV9j
bG9zZWQgJiYgbV9rZXlzKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
OworICAgIHJldHVybiAhbV9jbG9zZWQgJiYgbV9rZXlzOwogfQogCiBjb25zdCBjaGFyKiBNZWRp
YUtleVNlc3Npb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5k
ZXggYjZhY2UzNTg5ZWM4YWRjZDlhODUwNTA4ZDExZGUzN2U0ZTNkYmJlZS4uYjJmMzFmM2IyNTBj
OTJlYmE4MWJiZTU3YzM2MTBiNDgyNmE1M2ZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC04Niw5ICs4
Niw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXNlczsgfQogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLQogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24o
RG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9v
bCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNl
c3Npb24+JiYpOwogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7CkBAIC0xMDgsNyArMTA1LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAogICAgIC8vIEFj
dGl2ZURPTU9iamVjdAotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAvLyBMb2dnZXJIZWxwZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDNiNmY3NDNmOTdlNGJi
NjQzMmU0ZWNmZDE3ZDQ1ZGMzODNjZGIzY2YuLmZiZWMyMDhmYjlhYjUzODhjYjllYzk3YTIzMjU2
NTg0Nzg2YTczYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cApAQCAtMjM0LDkgKzIzNCw5IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtleVNlc3Npb246Om1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAotYm9vbCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX2tleXMgJiYgbV9zZXNzaW9uOwogfQogCiB2b2lk
IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IGExMmY0OTc1MGY4MDM5NGM0ZDRiNjdkOWQyMmU3YjlkMTk3ODgz
YjIuLmZmNjE2OWNiZWFjNjFmZWY3OTM3MzExNmFmMmJlMTdjNWNmZjA2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlh
S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCkBAIC02Miw4ICs2Miw2IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7
CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRl
OgogICAgIFdlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vi
S2l0TWVkaWFLZXlzJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogICAgIHZvaWQga2V5UmVx
dWVzdFRpbWVyRmlyZWQoKTsKQEAgLTc2LDggKzc0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYktpdE1lZGlhS2V5U2Vzc2lvbkV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGVhZmZlOGIxMWQzOTIyZGZhN2JmZTg2YWY4NDFhMGU2
ZTFmYTZkMmEuLjNhN2IyMjliZjdjZTQ0NDdkZDcwNzJlOWY3OGVjNDdmNTZlMmUyMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCiAgICAgbV9jb25uZWN0
aW9uUHJveHktPnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOwogfQogCi1ib29s
IElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBJREJEYXRhYmFz
ZTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEob3JpZ2luVGhyZWFkKCkpIHx8IFRocmVh
ZDo6bWF5QmVHQ1RocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZWM5NzI1NzE0OWJiMWM0ZTZiY2IzZDEzMzhiOTQ1MDg3
NGQxOWNlZS4uNDRjOTc5MTAwYzg5ZjkwNWE1ZjMwOGExZmU1ZjYwM2E0MzY2Zjg2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC04MSw5
ICs4MSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRh
YmFzZT46OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZT46
OmRlcmVmOwogCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotCiAgICAgSURCRGF0YWJhc2VJbmZvJiBpbmZv
KCkgeyByZXR1cm4gbV9pbmZvOyB9CiAgICAgdWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcjsg
fQogCkBAIC0xMDgsOCArMTA1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50
KEV2ZW50JikgZmluYWw7CiAKLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwotCiAgICAgdm9pZCBzZXRJc0NvbnRleHRTdXNwZW5kZWQoYm9vbCBpc0NvbnRleHRTdXNw
ZW5kZWQpIHsgbV9pc0NvbnRleHRTdXNwZW5kZWQgPSBpc0NvbnRleHRTdXNwZW5kZWQ7IH0KICAg
ICBib29sIGlzQ29udGV4dFN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZXh0U3Vz
cGVuZGVkOyB9CiAKQEAgLTExOCw2ICsxMTMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
Q29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJik7CiAKKyAgICAvLyBBY3Rp
dmVET01PYmplY3QuCisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCiAgICAgdm9pZCBtYXliZUNsb3NlSW5TZXJ2ZXIo
KTsKIAogICAgIFJlZjxJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eT4gbV9jb25uZWN0aW9u
UHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAK
aW5kZXggNzRiMGY1MDZiMzkzNzlmY2RjOWJkYzU5ZWJiZTNlYTlmNjQwZjcwMS4uMzJiYzdhOWU0
ZDg1NzAxYzBmNjY2OGFkNmNmOTdlZjdkOGVjMzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNjIsNyArNjIsNyBAQCBjb25zdCBjaGFy
KiBJREJJbmRleDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJJREJJ
bmRleCI7CiB9CiAKLWJvb2wgSURCSW5kZXg6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIElEQkluZGV4Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9vYmplY3RTdG9yZS5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGZkM2VmNmY2ODU2ZjA2OGE3
YzQxZGI1YTY5N2U5ODkwY2Q3ZjZiZGUuLmVlN2FhYzcxN2QyNzRmNWU4MGZjNmFmNDZkMDQ1ZDIy
NWZmM2FlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
aApAQCAtODYsOCArODYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiBvYmplY3RTdG9yZUFzT3Bh
cXVlUm9vdCgpIHsgcmV0dXJuICZtX29iamVjdFN0b3JlOyB9CiAKLSAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2YXRlOgogICAgIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gZG9Db3VudChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dldChKU0M6
OkpTR2xvYmFsT2JqZWN0JiwgRXhjZXB0aW9uT3I8SURCS2V5UmFuZ2VEYXRhPik7CkBAIC05Nyw3
ICs5NSw5IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBkb0dl
dEFsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6
OkZ1bmN0aW9uPEV4Y2VwdGlvbk9yPFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGRvR2V0QWxsS2V5cyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBXVEY6OkZ1bmN0aW9uPEV4Y2VwdGlvbk9y
PFJlZlB0cjxJREJLZXlSYW5nZT4+KCk+ICYmKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
ICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICBJREJJ
bmRleEluZm8gbV9pbmZvOwogICAgIElEQkluZGV4SW5mbyBtX29yaWdpbmFsSW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApp
bmRleCAzMDM3MWRjMWRjOWY2Mjk2NDIyMDkzMzc1MTkxMTM0NWM2MGRjMzRlLi40ZDE2MTdjNzAz
ZWJkYTE5ZGY1YWMxZjMxMzYwZGM0NmI5N2I5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IGNvbnN0IGNoYXIqIElEQk9iamVjdFN0b3JlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gIklEQk9iamVjdFN0b3JlIjsKIH0KIAotYm9vbCBJREJPYmplY3RTdG9yZTo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgSURCT2JqZWN0U3RvcmU6OnZpcnR1YWxI
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLmhh
c1BlbmRpbmdBY3Rpdml0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggOWVlMWI0ODdlODA0NTQxMDZhNDE2YmFiNjI3
MTRhOGZjZWZlNmM2Zi4uNGMxNDhiYWIwNWEyZTRlMTY0ZjJhOWJhZTBkN2IwM2I5M2Y5NGQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oCkBAIC0xMTIsOCArMTEyLDYgQEAgcHVibGljOgogICAgIHZvaWQgdmlzaXRSZWZlcmVuY2Vk
SW5kZXhlcyhKU0M6OlNsb3RWaXNpdG9yJikgY29uc3Q7CiAgICAgdm9pZCByZW5hbWVSZWZlcmVu
Y2VkSW5kZXgoSURCSW5kZXgmLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpOwogCi0gICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBlbnVtIGNs
YXNzIElubGluZUtleUNoZWNrIHsgUGVyZm9ybSwgRG9Ob3RQZXJmb3JtIH07CiAgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBwdXRPckFkZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1ZhbHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUsIElubGluZUtleUNoZWNrKTsKQEAgLTEyNCw3ICsxMjIsOSBAQCBwcml2YXRlOgogICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZG9HZXRBbGwoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxS
ZWZQdHI8SURCS2V5UmFuZ2U+PigpPiAmJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBkb0dldEFsbEtleXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCwgV1RGOjpGdW5jdGlvbjxFeGNlcHRpb25PcjxSZWZQdHI8SURCS2V5UmFuZ2U+Pigp
PiAmJik7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIG1faW5mbzsK
ICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9vcmlnaW5hbEluZm87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDNkMDIxMTljN2E1MWUx
ZTFmY2EwZWEyZWQ0YzlkMjVlODc1ZTAyNDkuLjUwNTI0MzNlNTU5MGEyNzdkNWZmYWM4YzIyMTQw
Zjg2MDNhMGFhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgY29uc3QgY2hhciogSURCUmVxdWVzdDo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJJREJSZXF1ZXN0IjsKIH0K
IAotYm9vbCBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBJREJS
ZXF1ZXN0Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShvcmlnaW5UaHJlYWQoKSkgfHwg
VGhyZWFkOjptYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiAhbV9jb250ZXh0U3RvcHBlZCAm
JiBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAppbmRleCAyODY2MTM0NGIwZGUyMTc2ZjViZWFjMzYxMzE1NDBmMTI1
NmZkZGUyLi4yY2ViNWQzZGRhMjcxOGVjN2ViMjJlZTM5OWU2Mzg1MTQzNDZlZThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC0xMjUsOCAr
MTI1LDYgQEAgcHVibGljOgogCiAgICAgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZSByZXF1ZXN0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGU7IH0KIAotICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uT3BlcmF0
aW9uSUQodWludDY0X3QgdHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgeyBtX2N1cnJlbnRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEID0gdHJhbnNhY3Rpb25PcGVyYXRpb25JRDsgfQogCiBwcm90ZWN0ZWQ6
CkBAIC0xNTgsOCArMTU2LDExIEBAIHByaXZhdGU6CiAKICAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0LgorICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZp
bmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxGb3JTdG9w
KCk7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDNkOTBiMTVkMDgyMDc2MDY4YWRhNDg4MzI1MDE4MzlhMmZhNjEzYWEuLjIwZDY4ZTBlMDQ2
NzE5OGE3ZDE5NzcwN2NiMDg1ZjMwNjYwNTc0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTMxNSwxMiArMzE1LDkg
QEAgY29uc3QgY2hhciogSURCVHJhbnNhY3Rpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAogICAgIHJldHVybiAiSURCVHJhbnNhY3Rpb24iOwogfQogCi1ib29sIElEQlRyYW5zYWN0aW9u
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBJREJUcmFuc2FjdGlvbjo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpIHx8IFRo
cmVhZDo6bWF5QmVHQ1RocmVhZCgpKTsKLSAgICBpZiAoQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gIW1fY29u
dGV4dFN0b3BwZWQgJiYgbV9zdGF0ZSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZp
bmlzaGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAppbmRleCBkNDE3NzNjY2M1ZDY1ZjgzNDUwODFiY2Q1N2E4ZjlkYWQ2YzM0
OTc3Li41NWIwZDEwZGY3NWZhMjIwZjhiMDY0M2MxYTc2ZThlNDNhOTY2MmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTkz
LDEwICs5Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJU
cmFuc2FjdGlvbj46OnJlZjsKICAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFu
c2FjdGlvbj46OmRlcmVmOwogCi0gICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0KICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
IGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KICAgICBJREJEYXRhYmFzZSYgZGF0YWJh
c2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAgICAgY29uc3QgSURCRGF0YWJhc2Um
IGRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQpAQCAtMTU3LDkg
KzE1MywxNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjphdG9t
aWM8dW5zaWduZWQ+IG51bWJlck9mSURCVHJhbnNhY3Rpb25zOwogCisgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgorICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIElEQlRyYW5z
YWN0aW9uKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiwgSURCT3BlbkRC
UmVxdWVzdCopOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgorICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKwogICAgIHZvaWQgY29tbWl0KCk7CiAKICAgICB2
b2lkIGludGVybmFsQWJvcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCBjNzQzMmI4NjYzNzU1NWVmY2Q0
ZjY2ZTk1NTJjNzVmZDdlMDYyMmQ1Li5iNWRlYjhiMzVjOGFiMWZlYjc5YWJiM2ZkMGUzZWUzYmYw
MjU0NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0yMzIsOSArMjMyLDkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNr
LCBjb25zdAogICAgIG1fcHJpdmF0ZS0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRyYWNrLCBtZWRp
YVRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKIH0KIAotYm9vbCBN
ZWRpYVJlY29yZGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZWRpYVJlY29y
ZGVyOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX3N0YXRlICE9IFJlY29yZGlu
Z1N0YXRlOjpJbmFjdGl2ZTsKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBSZWNvcmRpbmdTdGF0ZTo6
SW5hY3RpdmU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDlmODU0
OTA1NzM3ZDVmNzNlMzE3MjBiYTgyMmRkNmMyMDViYzc5NWYuLmU4YmJiODUxZGZjNjE3ZGU2ZTA4
NTQ5Yjc5ZjZhNDQ3NjQ3OTdiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtNzUsOCArNzUsNiBAQCBwdWJsaWM6
CiAKICAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0K
IAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByaXZhdGU6
CiAgICAgTWVkaWFSZWNvcmRlcihEb2N1bWVudCYsIFJlZjxNZWRpYVN0cmVhbT4mJiwgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlPiYmLCBPcHRpb25zJiYgPSB7IH0pOwogCkBA
IC05NCw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2b2lkIHN0b3BSZWNvcmRpbmdJ
bnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlNDE5M2JhYjkyY2I1MmZiYjAwYzBmYTZlOGVjMzJkNDgy
NTQ5YmUuLjQwMWEzN2ZlZjhiMGI1OWIzODVmMmQ1YTI0ZmRiZGZhMWI2YTUwNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBA
IC05NzEsMTAgKzk3MSw5IEBAIHZvaWQgTWVkaWFTb3VyY2U6Om9wZW5JZkluRW5kZWRTdGF0ZSgp
CiAgICAgbV9wcml2YXRlLT51bm1hcmtFbmRPZlN0cmVhbSgpOwogfQogCi1ib29sIE1lZGlhU291
cmNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZWRpYVNvdXJjZTo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBt
X2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCi0gICAgICAgIHx8IEFjdGl2ZURP
TU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBt
X2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpOwogfQogCiB2b2lkIE1lZGlhU291
cmNlOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2UuaAppbmRleCA0MjViZjk3ZTgzOWQ3NTY3NDE2NjY3NGFjN2QwMGQ1MTIwNzI2MmQ0
Li44M2QxYzRmZDRlYWUyMzk5ZDUxZWM1NDJmZWIzNGUzM2U2Y2M0NTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0xMTEsOCAr
MTExLDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBS
ZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7Ci0KICAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZUZ1ZGdlRmFj
dG9yKCk7CiAgICAgc3RhdGljIGJvb2wgY29udGVudFR5cGVTaG91bGRHZW5lcmF0ZVRpbWVzdGFt
cHMoY29uc3QgQ29udGVudFR5cGUmKTsKIApAQCAtMTI3LDggKzEyNSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNl
dFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYpIGZpbmFsOwogICAgIHZv
aWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBlNzIyMmEw
Njk4YzUwMDkzYTM0OGJiN2I5NTAzMzA2MWJlOTlkNDBjLi44OTc0NDYyYzhiODVhNjYwMzgzNDE2
MDkzMWQyZWNjYzY2N2RkMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgTWVkaWFUaW1l
IFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGlt
ZShjb25zdCBNZWRpYVQKICAgICByZXR1cm4gc2Vla1RpbWU7CiB9CiAKLWJvb2wgU291cmNlQnVm
ZmVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBTb3VyY2VCdWZmZXI6OnZpcnR1
YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3NvdXJjZSB8fCBt
X2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMTE5ZmZjOGJj
MDFlZTJlODA0N2Y2ZTU1YjcyZGQ3OTM2ODUyNDI3Mi4uYzBkZTc3NmEzMzA3OTJmZDZhNjc0ZGRh
MDIzNjhjZjMwOWZjM2ViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xMzAsOCArMTMwLDYgQEAgcHVibGljOgogICAgIE1l
ZGlhVGltZSBoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCkgY29uc3Q7CiAgICAgdm9pZCBy
ZWFkeVN0YXRlQ2hhbmdlZCgpOwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKLQogICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0VucXVldWVkKCk7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE0Nyw4ICsxNDUsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
LgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7
CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShNZWRpYVNhbXBs
ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMuY3BwCmluZGV4IDliMTgwM2QxMjRhMWUyYjY5ZjA0ODhkMWIyZmZjZWZhNmFh
OWYzYmEuLjNiNjRkZWM1NmYyNDg5YjFiNjE1OWJkZjRhNjRiOWE1OTg1NDQzMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAK
QEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIE1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRUaW1l
ckZpcmVkKCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRl
dmljZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKIH0KIAotYm9vbCBNZWRpYURldmljZXM6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0Citib29sIE1lZGlhRGV2aWNlczo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICFpc0NvbnRleHRTdG9wcGVkKCkgJiYgaGFzRXZlbnRMaXN0ZW5lcnMo
bV9ldmVudE5hbWVzLmRldmljZWNoYW5nZUV2ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IGFmNDkwZWRjY2UxODA0
ODg4MzkzY2Y3MjYxMDg5OGY4MzI4ZTE3NjUuLjgyMDdmYzk5ZTg3Y2QwNWNiNGQwN2NlODQ3OWU3
YTNjNmQ3NjEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLgogICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFEZXZpY2VzRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IGNj
NzM0NjRlMDU1OWJiMTA5ZWY1YmNjNTFkZTYxZmU3YTcxOWFmNmQuLjQ5M2E0MDAwNTkxMTgxNjI0
M2UwZDg1MzU2ZmMxYWE3NzA4OTEzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgY29uc3Qg
Y2hhciogTWVkaWFTdHJlYW06OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVy
biAiTWVkaWFTdHJlYW0iOwogfQogCi1ib29sIE1lZGlhU3RyZWFtOjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdAorYm9vbCBNZWRpYVN0cmVhbTo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNBY3RpdmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggMThlNTZlOGM0Y2NlNzkx
MTZkODJmNDYyN2FhOWJmYzVkY2IxMjNiZi4uY2I4ZjE0NjIzMzlhMTVkYmRiNjJmNmU1N2YwNmZh
YmNjOGViNjUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaApAQCAtMTA1LDkgKzEwNSw2IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAgZW51bSBjbGFzcyBT
dHJlYW1Nb2RpZmllciB7IERvbUFQSSwgUGxhdGZvcm0gfTsKICAgICBib29sIGludGVybmFsQWRk
VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFN0cmVhbU1vZGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGludGVybmFsUmVtb3ZlVHJhY2soY29uc3QgU3RyaW5nJiwgU3RyZWFt
TW9kaWZpZXIpOwpAQCAtMTQ2LDYgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0IEFQSS4KICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVN0YXRlKCk7
CiAgICAgdm9pZCBhY3Rpdml0eUV2ZW50VGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXgg
OWZjYjQ3NTQzNjNkNGE2NGEzMGRjMzA0ZjEyZWI5NjY2N2YxMGI2OC4uZDBiMmNiOWZkMGFhMWJk
MWYyOWFjZWRjNWI2MDkzOTc3NGExMWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC01OTcsOSArNTk3
LDkgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24g
cmVhc29uKQogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6
TmV0d29ya2luZywgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLWJvb2wgTWVk
aWFTdHJlYW1UcmFjazo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgTWVkaWFTdHJl
YW1UcmFjazo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFtX2VuZGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAg
cmV0dXJuICFtX2VuZGVkOwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbVRy
YWNrOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggNTM5MDdhYjA5ODc4YzM4
Y2U0NjBjMDE1MTk3MmMwMmIxZDBhMWQ2ZS4uMDJmZDQ1NGI2YTFkYTNjNTRiZGEzYjIwNDllOGUw
M2Y3Y2FjZGIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTE0OSw5ICsxNDksNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCi0g
ICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBzZXRJZEZvclRlc3RpbmcoU3RyaW5nJiYgaWQpIHsg
bV9wcml2YXRlLT5zZXRJZEZvclRlc3RpbmcoV1RGTW92ZShpZCkpOyB9CiAKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKQEAgLTE3Nyw2ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3RvcCgpIGZpbmFsIHsgc3RvcFRyYWNrKCk7IH0KICAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0IGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyByZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBhYWFiYzA5MmM4ZGRk
ZTNiNDU1MjQwNzZjM2MxOTIxZWVlYTMyZTg4Li4wYzI3MzBmNWQwODkwMTU4YzliZDBiOTIyN2U1
MjIzY2I5N2I0NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNTMwLDE1ICs1MzAsMTEgQEAgdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVzdW1lKCkKICAgICB9KTsKIH0KIAotYm9vbCBSVENQZWVy
Q29ubmVjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgUlRDUGVlckNvbm5l
Y3Rpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIGlmIChtX2lz
U3RvcHBlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gVGhpcyByZXR1cm5zIHRy
dWUgaWYgd2UgaGF2ZSBwZW5kaW5nIHByb21pc2VzIHRvIGJlIHJlc29sdmVkLgotICAgIGlmIChB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQogICAgIC8vIEFzIGxvbmcgYXMgdGhlIGNvbm5lY3Rpb24gaXMgbm90IHN0b3BwZWQgYW5k
IGl0IGhhcyBldmVudCBsaXN0ZW5lcnMsIGl0IG1heSBkaXNwYXRjaCBldmVudHMuCiAgICAgcmV0
dXJuIGhhc0V2ZW50TGlzdGVuZXJzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggOWVlN2RlNmI1MmIz
Nzg5YjMyMzU5Y2VlZmM2YmMxMmYxOGZkNDRiNy4uZmYwYjY4NjBlOTA3MTA3ODMzOGU1OGM2NDBl
OTEzYTc2YmFjYWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtMTcyLDkgKzE3Miw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xlYXJDb250cm9sbGVyKCkgeyBtX2NvbnRyb2xsZXIgPSBudWxscHRyOyB9
CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QuCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBmaW5hbDsKLSAgICAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKIAogICAgIHZv
aWQgZG9UYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CkBAIC0yMTIsNiArMjA5LDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgcmVz
dW1lKCkgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb25TdGF0ZSgpOwogICAgIGJvb2wgZG9D
bG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA2
NTIxOWFjNmM4YzljNDczMzk0OTY5ODNhZjI0ZWJhMzNlODRmMDJhLi5hMjgyNmM3OWE1NjhiNTdi
Zjk5YjRmZjhkOGFmYWYyODhjNjg4OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcApAQCAtMTI2OSwxMCArMTI2OSwxMCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6
c3RvcCgpCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJBbmlt
YXRpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFdlYkFuaW1hdGlvbjo6dmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgLy8gS2VlcCB0aGUgSlMgd3Jh
cHBlciBhbGl2ZSBpZiB0aGUgYW5pbWF0aW9uIGlzIGNvbnNpZGVyZWQgcmVsZXZhbnQgb3IgY291
bGQgYmVjb21lIHJlbGV2YW50IGFnYWluIGJ5IHZpcnR1ZSBvZiBoYXZpbmcgYSB0aW1lbGluZS4K
LSAgICByZXR1cm4gbV90aW1lbGluZSB8fCBtX2lzUmVsZXZhbnQgfHwgQWN0aXZlRE9NT2JqZWN0
OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICByZXR1cm4gbV90aW1lbGluZSB8fCBtX2lzUmVs
ZXZhbnQ7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVSZWxldmFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IGQ3MGMyZjIwMDQxY2EyNzVlYWYw
ZjQ3YzkwN2Y0NmU1OGQ3NzUyOGMuLmQxYmQ4MTA4YmZjNzhjZTMwOTc1ZDRlYTZkZDdiNzUzMzRh
M2FhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTEzOSw4
ICsxMzksNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxQb3NpdGlvbih1
aW50NjRfdCBnbG9iYWxQb3NpdGlvbikgeyBtX2dsb2JhbFBvc2l0aW9uID0gZ2xvYmFsUG9zaXRp
b247IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KICAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdsb2JhbFBvc2l0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuCkBAIC0yMTIsNiArMjEwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CiAg
ICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29s
IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBXZWJBbmltYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDY1ZDlhY2RkYjBiMjY3ZmFjNTFkNDQ1NTA5
YmU1ZWRhYmFiZTBkZmMuLmE1MjUwNjExNjRhNDA1YjBhZmY1ZmVlZmIzNGY3YjA4MmE5MWIxYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDg2LDEwICs0ODYsOCBAQCBjb25zdCBjaGFy
KiBGb250RmFjZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJGb250
RmFjZSI7CiB9CiAKLWJvb2wgRm9udEZhY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIEZvbnRGYWNlOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBp
ZiAoQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgcmV0dXJuICFpc0NvbnRleHRTdG9wcGVkKCkgJiYgbV9tYXlMb2FkZWRQcm9t
aXNlQmVTY3JpcHRPYnNlcnZhYmxlICYmICFtX2xvYWRlZFByb21pc2UtPmlzRnVsZmlsbGVkKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggYjY1YzJkNWU3OWUzMDg4NGI3MzkyNmE0NWJh
NzA5NTUxYjY2YjkwYy4uNDRjYTZkNTg4NWMzYzgxNTkxZjYzOGVkY2Q5NzYzOTYxNjdlMTA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTkyLDEzICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZp
bmFsIHsgUmVmQ291bnRlZDo6ZGVyZWYoKTsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGb250RmFjZShDU1NG
b250U2VsZWN0b3ImKTsKICAgICBleHBsaWNpdCBGb250RmFjZShDU1NGb250RmFjZSYpOwogCisg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKIAogICAgIC8vIENhbGxiYWNrIGZvciBMb2FkZWRQcm9taXNlLgogICAgIEZv
bnRGYWNlJiBsb2FkZWRQcm9taXNlUmVzb2x2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCBmZDQzZmE5YTljNzM1ZWM5ZDc4NDEyMmE3ZTdmOTg2NjJiZTUxNWU2
Li40YWFlN2U0ZWQ3MTM0MzYzMDg5OThkYjUyNGU3NTM3ZjdkZjBkZGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTA2LDExICsxMDYsNiBAQCB2b2lkIEFjdGl2
ZURPTU9iamVjdDo6YXNzZXJ0U3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkKCkgY29uc3QKIAogI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWJvb2wgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3BlbmRpbmdBY3Rpdml0eUNvdW50Owot
fQotCiB2b2lkIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQog
ewogfQpAQCAtMTQ5LDEzICsxNDQsMTMgQEAgcHVibGljOgogICAgICAgICAsIG1fdGFyZ2V0KHRh
cmdldCkKICAgICAgICAgLCBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQogICAgIHsKLSAgICAgICAg
KyttX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUNvdW50OworICAgICAgICArK21fb2JqZWN0Lm1f
cGVuZGluZ0FjdGl2aXR5SW5zdGFuY2VDb3VudDsKICAgICB9CiAKICAgICB+QWN0aXZlRE9NT2Jq
ZWN0RXZlbnREaXNwYXRjaFRhc2soKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb2JqZWN0Lm1f
cGVuZGluZ0FjdGl2aXR5Q291bnQpOwotICAgICAgICAtLW1fb2JqZWN0Lm1fcGVuZGluZ0FjdGl2
aXR5Q291bnQ7CisgICAgICAgIEFTU0VSVChtX29iamVjdC5tX3BlbmRpbmdBY3Rpdml0eUluc3Rh
bmNlQ291bnQpOworICAgICAgICAtLW1fb2JqZWN0Lm1fcGVuZGluZ0FjdGl2aXR5SW5zdGFuY2VD
b3VudDsKICAgICB9CiAKICAgICB2b2lkIGV4ZWN1dGUoKSBmaW5hbCB7IG1fdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KG1fZXZlbnQuZ2V0KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmgKaW5kZXggMGQwYmExNTg4NTEwNzk5MTA3ZjhiM2QxZWY4MTg4OTU3NjVkYjk5NC4uN2FkNGRh
NjhkMjM2OTY4MWEzZGU4ZGFjNWIyMDIyY2NmNTE4M2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5k
SWZOZWVkZWQoKTsKICAgICB2b2lkIGFzc2VydFN1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OworICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQWN0aXZp
dHlJbnN0YW5jZUNvdW50IHx8IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKTsgfQogCiAgICAg
Ly8gSG93ZXZlciwgdGhlIHN1c3BlbmQgZnVuY3Rpb24gd2lsbCBzb21ldGltZXMgYmUgY2FsbGVk
IGV2ZW4gaWYgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIHJldHVybnMgZmFsc2Uu
CiAgICAgLy8gVGhhdCBoYXBwZW5zIGluIHN0ZXAtYnktc3RlcCBKUyBkZWJ1Z2dpbmcgZm9yIGV4
YW1wbGUgLSBpbiB0aGlzIGNhc2UgaXQgd291bGQgYmUgaW5jb3JyZWN0CkBAIC03MywxNyArNzMs
MjEgQEAgcHVibGljOgogICAgIC8vIEl0IGNhbiwgaG93ZXZlciwgaGF2ZSBhIHNpZGUgZWZmZWN0
IG9mIGRlbGV0aW5nIGFuIEFjdGl2ZURPTU9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
OwogCisgICAgLy8gRklYTUU6IERyb3AgdGhpcyBmdW5jdGlvbi4KKyAgICAvLyBDYWxsIHNpdGVz
IHNob3VsZCBiZSB1c2luZyBtYWtlUGVuZGluZ0FjdGl2aXR5KCkgb3Igb3ZlcnJpZGluZyB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgaW5zdGVhZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIHNldFBlbmRpbmdBY3Rpdml0eShUJiB0aGlzT2JqZWN0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKCZ0aGlzT2JqZWN0ID09IHRoaXMpOwogICAgICAgICB0aGlzT2JqZWN0LnJlZigpOwot
ICAgICAgICArK21fcGVuZGluZ0FjdGl2aXR5Q291bnQ7CisgICAgICAgICsrbV9wZW5kaW5nQWN0
aXZpdHlJbnN0YW5jZUNvdW50OwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBEcm9wIHRoaXMgZnVu
Y3Rpb24uCisgICAgLy8gQ2FsbCBzaXRlcyBzaG91bGQgYmUgdXNpbmcgbWFrZVBlbmRpbmdBY3Rp
dml0eSgpIG9yIG92ZXJyaWRpbmcgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGluc3RlYWQu
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCB1bnNldFBlbmRpbmdBY3Rpdml0eShUJiB0
aGlzT2JqZWN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0FjdGl2aXR5Q291bnQg
PiAwKTsKLSAgICAgICAgLS1tX3BlbmRpbmdBY3Rpdml0eUNvdW50OworICAgICAgICBBU1NFUlQo
bV9wZW5kaW5nQWN0aXZpdHlJbnN0YW5jZUNvdW50ID4gMCk7CisgICAgICAgIC0tbV9wZW5kaW5n
QWN0aXZpdHlJbnN0YW5jZUNvdW50OwogICAgICAgICB0aGlzT2JqZWN0LmRlcmVmKCk7CiAgICAg
fQogCkBAIC05MywxMyArOTcsMTMgQEAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQZW5kaW5n
QWN0aXZpdHkoVCYgdGhpc09iamVjdCkKICAgICAgICAgICAgIDogbV90aGlzT2JqZWN0KHRoaXNP
YmplY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgICsrKG1fdGhpc09iamVjdC0+bV9wZW5kaW5n
QWN0aXZpdHlDb3VudCk7CisgICAgICAgICAgICArKyhtX3RoaXNPYmplY3QtPm1fcGVuZGluZ0Fj
dGl2aXR5SW5zdGFuY2VDb3VudCk7CiAgICAgICAgIH0KIAogICAgICAgICB+UGVuZGluZ0FjdGl2
aXR5KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fdGhpc09iamVjdC0+bV9wZW5k
aW5nQWN0aXZpdHlDb3VudCA+IDApOwotICAgICAgICAgICAgLS0obV90aGlzT2JqZWN0LT5tX3Bl
bmRpbmdBY3Rpdml0eUNvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3RoaXNPYmplY3QtPm1f
cGVuZGluZ0FjdGl2aXR5SW5zdGFuY2VDb3VudCA+IDApOworICAgICAgICAgICAgLS0obV90aGlz
T2JqZWN0LT5tX3BlbmRpbmdBY3Rpdml0eUluc3RhbmNlQ291bnQpOwogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgpAQCAtMTM5LDEwICsxNDMsMTQgQEAgcHJpdmF0ZToKICAgICBlbnVtIENoZWNr
ZWRTY3JpcHRFeGVjdXRpb25Db250ZXh0VHlwZSB7IENoZWNrZWRTY3JpcHRFeGVjdXRpb25Db250
ZXh0IH07CiAgICAgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBDaGVj
a2VkU2NyaXB0RXhlY3V0aW9uQ29udGV4dFR5cGUpOwogCisgICAgLy8gVGhpcyBpcyB1c2VkIGJ5
IHN1YmNsYXNzZXMgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGhhdmUgcGVuZGluZyBhY3Rpdml0eSwg
bWVhbmluZyB0aGF0IHRoZXkgd291bGQKKyAgICAvLyBsaWtlIHRoZSBKUyB3cmFwcGVyIHRvIHN0
YXkgYWxpdmUgKGJlY2F1c2UgdGhleSBtYXkgc3RpbGwgZmlyZSBKUyBldmVudHMpLgorICAgIHZp
cnR1YWwgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKwogICAgIHZvaWQgcXVldWVUYXNrSW5FdmVudExvb3AoVGFza1NvdXJjZSwgRnVuY3Rp
b248dm9pZCAoKT4mJik7CiAgICAgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnRJbnRlcm5h
bChFdmVudFRhcmdldCYsIFRhc2tTb3VyY2UsIFJlZjxFdmVudD4mJik7CiAKLSAgICB1bnNpZ25l
ZCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fcGVuZGluZ0Fj
dGl2aXR5SW5zdGFuY2VDb3VudCB7IDAgfTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wg
bV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQgeyBmYWxzZSB9OwogICAgIFJlZjxUaHJlYWQ+IG1f
Y3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAKaW5kZXggNjg5ZmY1MGIxZTdhYTlkY2U2ZmMxY2Q0NDdlMzNiMmQ3MDMzZjRiYi4u
OGJkMzM5NGViZjMyOTJlOTZkZWU2MDQ4NjhiNWQ4NmM0Nzc5NTlkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6dXBk
YXRlQWN0aXZpdHkoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0Fj
dGkKICAgICBtX2lzQXNraW5nUmVtb3RlQWJvdXRHQyA9IGZhbHNlOwogfQogCi1ib29sIE1lc3Nh
Z2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBNZXNzYWdlUG9ydDo6dmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgbV9taWdodEJlRWxpZ2libGVG
b3JHQyA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggNjY4ZDViNDYxOGJl
YTdkOTg5ZWI3NjA5NmRhNjBmZWQ2Mjk0ODExNi4uYWFjYTQ4OTVkYTFiZjZiOGUyYjA3MGY0NTBl
YjIwMjk2NzdkYTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTgyLDEyICs4Miw2
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZigpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKSBjb25zdDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVj
dAotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbCB7
IGNsb3NlKCk7IH0KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwot
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsbHlSZWFjaGFibGUoKSBjb25zdDsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEuCkBAIC0xMDQsNiArOTgsMTIgQEAgcHJp
dmF0ZToKICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMm
KSBmaW5hbDsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgY29uc3QgTGlzdGVuZXJPcHRpb25zJikgZmluYWw7
CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wKCkgZmluYWwgeyBjbG9zZSgpOyB9CisgICAgYm9vbCB2aXJ0dWFsSGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIGRpc2VudGFuZ2xlKCk7
CiAKICAgICB2b2lkIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlci5jcHAKaW5kZXggMDI5MjVjMzdlZTkzMjk4ODBiYmZmMTE1MTQwYzJmYTlkYzll
MjMwYS4uMzc0MTQyYWU2NzRjMjI2MTlmYWNhZTZiNzFmNWI2NTQzNWQwZjUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC04MSw5ICs4MSw5IEBAIHZvaWQgRmlsZVJl
YWRlcjo6c3RvcCgpCiAgICAgbV9zdGF0ZSA9IERPTkU7CiB9CiAKLWJvb2wgRmlsZVJlYWRlcjo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgRmlsZVJlYWRlcjo6dmlydHVhbEhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RhdGUgPT0gTE9BRElORyB8
fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiBtX3N0
YXRlID09IExPQURJTkc7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEZpbGVSZWFkZXI6OnJlYWRB
c0FycmF5QnVmZmVyKEJsb2IqIGJsb2IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmlu
ZGV4IGU3YzkyMjJjMjY4NGZlYWUxMTNhNWViMDE1MTUwMTdhZGUzODAwMWYuLjE5MGNjOThjNWM4
NmVkNDc0MTljMmZhNDM1N2EwOTk2M2M5ODg3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlci5oCkBAIC03NiwxNSArNzYsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAotICAgIC8vIEFjdGl2ZURPTU9i
amVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIHZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRmls
ZVJlYWRlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDVlMGNmZmZkNGM4YzM4OTFjYTE1NjRlNjVl
Y2FkNTQ4YmVjMzgxOS4uNzQyMDUxMGRhZGRlYjQwNmFhZDhlNzE0NWQxY2FjZGRhYjkyZThmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NzYyLDcgKzU3
NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAgICAgdXBkYXRlUmVuZGVy
ZXIoKTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpIHx8IG1fYXN5
bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgbV9wbGF5YmFja1RhcmdldElzV2ly
ZWxlc3NRdWV1ZS5oYXNQZW5kaW5nVGFza3MoKSB8fCBtX2NyZWF0aW5nQ29udHJvbHM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDgzNTM4MDc5YWMxYmNkODUw
MTI3NGU2MDJhOWE4ODZmNmRjNWY4MDUuLmZjZDhlZGZhYmMyODU4NjI0MzkyMDIyNzkzODNhMDgz
MmRkOGQyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NjIs
OCArNDYyLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVy
biBtX3BsYXlpbmc7IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0KICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZSogYXVkaW9Tb3VyY2VOb2RlKCkgeyByZXR1cm4gbV9hdWRpb1NvdXJjZU5vZGU7IH0K
ICAgICB2b2lkIHNldEF1ZGlvU291cmNlTm9kZShNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUq
KTsKQEAgLTY0NCw2ICs2NDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgdm9pZCBzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRp
YVBsYXllcigpOwogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggNjdmNzY2ZWUwZWFh
ZTM5MGViZjJlYzc5NDY4MWQwODFjOTZhNTU3NC4uYWZhN2M2NjNjZGVmYjhiOTQ2NjU1ZGViODMz
YTg1YTQwNTU2MTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
CkBAIC0zNTEsMTEgKzM1MSw4IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6ZXZlbnRMaXN0ZW5l
cnNEaWRDaGFuZ2UoKQogICAgICAgICB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
bG9hZEV2ZW50KTsKIH0KIAotYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdAorYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIHsKLSAgICBpZiAoQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gbV9oYXNSZWxldmFudExv
YWRFdmVudHNMaXN0ZW5lciAmJiByZWFkeVN0YXRlKCkgPT0gSFRNTFRyYWNrRWxlbWVudDo6TE9B
RElORzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAppbmRleCA3NTY5
MDNmMDVhNzkzYjc1MDgzMjY1NDhlNjY2ODE3MWEzMGUzNWIzLi40MzRmMjE0ZGFlOGU2ZDlhYWMy
NTlhZWFhY2I0YTc5YjJlNmFiN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuaApAQCAtNjIsMTUgKzYyLDEzIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxl
bWVudD4gbWVkaWFFbGVtZW50KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbWVkaWFF
bGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdDsKIAotICAgIC8vIEFjdGl2ZURPTU9i
amVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiBwcml2
YXRlOgogICAgIEhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21T
dHJpbmcmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1NGEzMzg0M2RlOTQ2NzVmODgx
Mzg0MjJjN2JkMDVhMjk5MjNhNmVjLi45NDI5MmUzN2M2YmM5ODNlN2Q5NjQ3ZWQwODcxMzJhNmI1
ZTg2OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTU1MiwxMSArNTU1Miw2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAgICAg
fQogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnN0b3AoKQogewogICAgIGlmICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lz
UGVuZGluZ1BvbGljeVJlc29sdXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAyMGQ5NWY5NDkwMjFk
MzBlMTY5MWVhNTkxYTE5ZDNjNTQyYWViZGY4Li5kNzBjYjI1ODkxOGI5ZjFiMDZkNmQxMzY5OGVh
M2I0ZTY2MWViNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zNzMsOSArMzczLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVjeWNsZUNvbnRleHQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoQ29u
dGV4dENoYW5nZWROb3RpZmljYXRpb24oKSBvdmVycmlkZTsKIAotICAgIC8vIEFjdGl2ZURPTU9i
amVjdAotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7Ci0KIHByb3Rl
Y3RlZDoKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jhc2UmLCBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKENhbnZhc0Jh
c2UmLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+JiYsIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKaW5kZXgg
NTg1OGNmM2FmMGIyMTc4ZGVkMDhmMzIzYzRmMmYyNmE2YWI0NTA2NC4uOThjMDU3ZWY2Y2FkOGJm
NjA4NDJhYzI1MTRlYmNjMGViNjcyNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwCkBAIC0xNzcsOSArMTc3LDkgQEAgYm9vbCBUcmFja0xpc3RCYXNl
Ojppc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFRyYWNrTGlzdEJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFRyYWNrTGlz
dEJhc2U6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fYXN5bmNFdmVudFF1ZXVl
LT5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQ
ZW5kaW5nRXZlbnRzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggYTVjODg3ODFkYzljNDI2NzcxNmVl
ZDYxNmQ5MWFhNmY5NDdhZDQxYi4uNGEzY2M5YWFlZDM1YTA5ZjE0MzhiZTExNTI0OWVkYmIzNzky
MTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTY1
LDggKzY1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0
OwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLQogcHJv
dGVjdGVkOgogICAgIFRyYWNrTGlzdEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCkBAIC03OCw2ICs3Niw5IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KKyAg
ICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKKwogICAg
IC8vIEV2ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggMGFlOTEwYjRm
OWU2NzRhYjEwNGZkNGQzNjcwYTY2ODY3ZjhkNjM1ZS4uMGM5NzU2NTI4NGU0ZjcyNWI2NTliODZh
NGNjOGJhOTJhMDdmNzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVy
Ojpub3RpZnkoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVy
Q2FsbGJhY2soKmNvbnRleHQpOwogfQogCi1ib29sIEludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dmlydHVh
bEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChoYXNPYnNlcnZhdGlv
blRhcmdldHMoKSAmJiB0cmFja2luZ0RvY3VtZW50KCkpIHx8ICFtX3F1ZXVlZEVudHJpZXMuaXNF
bXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCmlu
ZGV4IDE3YWMyZmVlMTg0NGIwNTVlNzYwMThiZTI2Zjk5Mjc1NDdhN2U1MzkuLjFjMDhhNGVjZjM1
MTZiYmFjNWU2NDVhMDU4YmZkNzNiZjgzYzBhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lu
dGVyc2VjdGlvbk9ic2VydmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgc3RydWN0IEludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCiAg
ICAgLy8gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJzIGZvciB3aGljaCB0aGUgbm9kZSB0aGF0IG93bnMg
dGhpcyBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEgaXMgdGhlIHJvb3QuCi0gICAgLy8gQW4gSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIgaXMgb25seSBvd25lZCBieSBhIEphdmFTY3JpcHQgd3JhcHBlci4g
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkKKyAgICAvLyBBbiBJbnRlcnNlY3Rp
b25PYnNlcnZlciBpcyBvbmx5IG93bmVkIGJ5IGEgSmF2YVNjcmlwdCB3cmFwcGVyLiBBY3RpdmVE
T01PYmplY3Q6OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkKICAgICAvLyBpcyBvdmVycmlkZGVu
IHRvIGtlZXAgdGhpcyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZSBvYnNlcnZlciBoYXMgb25nb2lu
ZyBvYnNlcnZhdGlvbnMuCiAgICAgVmVjdG9yPFdlYWtQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+
PiBvYnNlcnZlcnM7CiAKQEAgLTk5LDE0ICs5OSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmRRdWV1ZWRFbnRyeShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4mJik7CiAgICAgdm9p
ZCBub3RpZnkoKTsKIAorcHJpdmF0ZToKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVu
dCYsIFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrPiYmLCBDb250YWluZXJOb2RlKiBy
b290LCBMZW5ndGhCb3gmJiBwYXJzZWRSb290TWFyZ2luLCBWZWN0b3I8ZG91YmxlPiYmIHRocmVz
aG9sZHMpOworCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCi1wcml2YXRl
OgotICAgIEludGVyc2VjdGlvbk9ic2VydmVyKERvY3VtZW50JiwgUmVmPEludGVyc2VjdGlvbk9i
c2VydmVyQ2FsbGJhY2s+JiYsIENvbnRhaW5lck5vZGUqIHJvb3QsIExlbmd0aEJveCYmIHBhcnNl
ZFJvb3RNYXJnaW4sIFZlY3Rvcjxkb3VibGU+JiYgdGhyZXNob2xkcyk7Ci0KICAgICBib29sIHJl
bW92ZVRhcmdldFJlZ2lzdHJhdGlvbihFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVBbGxUYXJn
ZXRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKaW5kZXggNjUwN2Zh
ZTIxZDM5ZGI5ZDdjNmExMTFmMzAzMjEwNGM1NTMwYjViMC4uMDE5MjBiMDJjZWI1Mjc1ZGExYTcz
OGFjM2QxMjRmNzkxYzNhNTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNp
emVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5j
cHAKQEAgLTE2OSw3ICsxNjksNyBAQCBib29sIFJlc2l6ZU9ic2VydmVyOjpyZW1vdmVPYnNlcnZh
dGlvbihjb25zdCBFbGVtZW50JiB0YXJnZXQpCiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzaXplT2Jz
ZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citib29sIFJlc2l6ZU9ic2VydmVyOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gKGhhc09ic2Vy
dmF0aW9ucygpICYmIG1fZG9jdW1lbnQpIHx8ICFtX2FjdGl2ZU9ic2VydmF0aW9ucy5pc0VtcHR5
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXggNjljYWM4OGM4YzFh
ZWE0YWMxNDJhNGZlYmJmYTM5ZGQ2MWRjYzFjYi4uNjA5ZTcwYzAxNDZjNTUwZGI1MWY4ZTNlYWJk
N2U0YTc3NWVhNGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNjQs
MTQgKzY0LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NraXBwZWRPYnNlcnZhdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX2hhc1NraXBwZWRPYnNlcnZhdGlvbnM7IH0KICAgICB2b2lkIHNldEhh
c1NraXBwZWRPYnNlcnZhdGlvbnMoYm9vbCBza2lwcGVkKSB7IG1faGFzU2tpcHBlZE9ic2VydmF0
aW9ucyA9IHNraXBwZWQ7IH0KIAorcHJpdmF0ZToKKyAgICBSZXNpemVPYnNlcnZlcihEb2N1bWVu
dCYsIFJlZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsKKwogICAgIC8vIEFjdGl2ZURPTU9i
amVjdC4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgdmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZTsKIAotcHJpdmF0ZToKLSAgICBSZXNpemVPYnNlcnZlcihEb2N1bWVu
dCYsIFJlZjxSZXNpemVPYnNlcnZlckNhbGxiYWNrPiYmKTsKLQogICAgIGJvb2wgcmVtb3ZlVGFy
Z2V0KEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFRhcmdldHMoKTsKICAgICBib29sIHJl
bW92ZU9ic2VydmF0aW9uKGNvbnN0IEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuY3BwCmluZGV4IDg0NGUwMDFhY2E2YzQ2ZjdlZjVjNGQ3MzlmODA1MjA5ZmIw
OTcxMzIuLjU1N2Y3OWMxNjRkOTlmNzIxOGI5NTNjMTFhMDZmNzljMDE3YTQ4YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBTdXNw
ZW5kYWJsZVRpbWVyQmFzZTo6U3VzcGVuZGFibGVUaW1lckJhc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKIAogU3VzcGVuZGFibGVUaW1lckJhc2U6On5TdXNwZW5kYWJsZVRpbWVy
QmFzZSgpID0gZGVmYXVsdDsKIAotYm9vbCBTdXNwZW5kYWJsZVRpbWVyQmFzZTo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgU3VzcGVuZGFibGVUaW1lckJhc2U6OnZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBpc0FjdGl2ZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCAzYmU2MmU0ZjBhNWJlYzczZmYy
NzU3ODQ5ZmUwNWVlMzY3YzExMWQ2Li5jNTliYjI1ZTI1ZDU5YTM3Y2Q2NmNiNmI3NWM4N2VkZDNi
MzM4ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtNjUsNyAr
NjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZSA9IDA7CiAKICAgICAv
LyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QgZmluYWw7CisgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKaW5kZXggYzNjYmQ5MzQ2NjBlOGYzOWE2MTFjZThiMzYyOGY0OWQ0NjY3ZjMx
MC4uODA4MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMyMzMwMGUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcApAQCAtMTc1LDkgKzE3NSw5IEBAIHZvaWQgV29ya2VyOjpyZXN1bWUo
KQogICAgIH0KIH0KIAotYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Citi
b29sIFdvcmtlcjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1Bl
bmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIFdvcmtlcjo6bm90aWZ5TmV0d29ya1N0YXRlQ2hh
bmdlKGJvb2wgaXNPbkxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA2NmM2OGI1YmU3
NTY0YTFhYzYyZmVkM2QwZGEzOWQ2ZDA4NmY2YTI3Li5mZmI2OWM1YjY5N2M2NmY2Y2RhMTU5NGVj
MTY0ODZiYjZlZmY3YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTYzLDggKzYzLDYg
QEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgYm9vbCB3YXNUZXJtaW5hdGVk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNUZXJtaW5hdGVkOyB9CiAKLSAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwotCiAgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtODEsMTAgKzc5LDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZCgpIGZpbmFsOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgc3RvcCgp
IGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKICAg
ICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBp
c09uTGluZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA0NjZlOWZjMGY3NmY0YTlm
MTQzZDA0MzI0OGIxM2RjZDQwNjhlN2MzLi5kNWZhMzI3NDRiMGNhOGZmZjM4ZjhjMzA3YWVlZjQ3
MWJiOWQ4Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yMTEsMTIgKzIxMSw5IEBA
IHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3RvcCgpCiAgICAgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBpZiAoIW1faXNTdG9wcGVk
ICYmIGdldE5ld2VzdFdvcmtlcigpICYmIGhhc0V2ZW50TGlzdGVuZXJzKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCk7CisgICAgcmV0dXJuICFtX2lzU3RvcHBlZCAmJiBnZXROZXdlc3RXb3JrZXIoKSAmJiBo
YXNFdmVudExpc3RlbmVycygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uaAppbmRleCA1MTQ1NjNkY2MxZjQ5MzQ1ZWQwMTQ4OWMyYTA5YTE2ZWYxMTJiZmRk
Li5lMDBjYWU5NjYwZmEwZDM1YjRkODkxYzQwMzQyZThkM2E0MWU5NWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmgKQEAgLTc2LDkgKzc2LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3RhdGVG
cm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgUmVmUHRyPFNlcnZpY2VX
b3JrZXI+JiYpOwogICAgIHZvaWQgcXVldWVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudCgpOwog
Ci0gICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QgZmluYWw7Ci0KIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFNlcnZpY2VXb3JrZXJDb250YWluZXI+JiYsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogCkBAIC05MCw2ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29s
IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhIG1fcmVnaXN0cmF0aW9uRGF0YTsKICAgICBSZWY8U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcj4gbV9jb250YWluZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCAyYjJmN2Q5M2E3NzkxY2MyZTI4NjVlZTMzOGJlZTVjNTRlNmJjNzllLi4x
NTI4MTU1ODI1Njk4MWE0ODM4Y2Q2MzczYjM2NzFhNWVkMDQwYWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExNzcsMTEgKzExNzcsOCBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCiAKIC8vIEFuIFhNTEh0dHBSZXF1ZXN0
IG9iamVjdCBtdXN0IG5vdCBiZSBnYXJiYWdlIGNvbGxlY3RlZCBpZiBpdHMgc3RhdGUgaXMgZWl0
aGVyIG9wZW5lZCB3aXRoIHRoZSBzZW5kKCkgZmxhZyBzZXQsIGhlYWRlcnMgcmVjZWl2ZWQsIG9y
IGxvYWRpbmcsIGFuZAogLy8gaXQgaGFzIG9uZSBvciBtb3JlIGV2ZW50IGxpc3RlbmVycyByZWdp
c3RlcmVkIHdob3NlIHR5cGUgaXMgb25lIG9mIHJlYWR5c3RhdGVjaGFuZ2UsIHByb2dyZXNzLCBh
Ym9ydCwgZXJyb3IsIGxvYWQsIHRpbWVvdXQsIGFuZCBsb2FkZW5kLgotYm9vbCBYTUxIdHRwUmVx
dWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK2Jvb2wgWE1MSHR0cFJlcXVlc3Q6OnZp
cnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIGlmIChBY3RpdmVET01PYmpl
Y3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGlm
ICghbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIgJiYgIShtX3VwbG9hZCAmJiBtX3VwbG9hZC0+
aGFzUmVsZXZhbnRFdmVudExpc3RlbmVyKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNjQwNWZjZGFhOGFiZDc4MDczNTMzMzIy
MjVkOWE1OTI1MTRmNzUwNi4uZDU0N2M2OTZmMmQ3Y2Y3NjEzODQzM2EyNGIwYmFhNGQ3ZjlhOGE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEzMCw4ICsxMzAsNiBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZyhkb3VibGUpOwogCi0gICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKLQogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50
OwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCkBAIC0xNDksNiAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RvcCgpIG92ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9
CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>